Skip to content

Update the bundled Observable Plot and Inputs libraries #14934

Description

@cwickham

Quarto bundles Observable Plot 0.6.11 and Observable Inputs 0.10.6. These versions have not changed since November 2023.

const inputs = dependency("@observablehq/inputs", "0.10.6", "dist/inputs.min.js");
const plot = dependency("@observablehq/plot", "0.6.11", "dist/plot.umd.min.js");

Before that, the bundled Plot moved about every six months: 0.6.0 (November 2022), 0.6.5 (April 2023), and 0.6.11 (November 2023, f04ca43).

The current Plot release is 0.6.17. The upstream observablehq/stdlib pins Plot 0.6.16 and Inputs 0.11.0 (stdlib v5.8.8).

Accessibility

An update also removes some accessibility errors on quarto.org.

In Plot 0.6.11, each axis tick is in the accessibility tree. VoiceOver announces each tick as "image", which adds noise between the tick values (observablehq/plot#2019). Plot 0.6.14 hides the ticks from assistive technology (observablehq/plot#2018).

The tick groups also have an aria-label with no role. axe reports this as aria-prohibited-attr, a failure of WCAG 2.2 SC 4.1.2 Name, Role, Value.

I scanned the 10 OJS pages on quarto.org with quarto call axe, before and after the documented import of the latest Plot (0.6.17):

Plot findings instances
Plot 0.6.11 (bundled) 20 54
Plot 0.6.17 (import) 10 24

The update removed all findings on axis-tick and grid groups. It added no new findings. I did not test Inputs 0.11.0.

If your own scan found these errors

Charts from Plot 0.6.11 give aria-prohibited-attr errors on <g> elements such as g[aria-label="y-axis tick"]. These errors come from Plot, not from your content.

To use a newer Plot on a page, add this cell (Libraries):

Plot = import("https://cdn.jsdelivr.net/npm/@observablehq/plot/+esm")

The newer Plot still puts an aria-label on data marks (rect, frame, line, rule, tick). axe reports these marks with the same error. A Quarto update does not change this.

This is a design decision in Plot. Plot gives every mark an automatic label, such as "dot", and adds no role (observablehq/plot#710). One Plot maintainer's view is that SVG-AAM already includes a <g> with a non-empty aria-label in the accessibility tree. The maintainer was not sure that role="graphics-object" would help users (observablehq/plot#944). The open request for a role is observablehq/plot#1760.

Plot's ariaHidden mark option removes a decorative mark from the accessibility tree (Plot accessibility docs).

AI tools helped with this investigation. The investigation used local clones of quarto-cli and quarto-web.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions