Skip to content
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
aea52b9
Add aria-actions interactive demo
janewman Jun 10, 2026
9b189a2
[aria-actions] Remove window.alert, reframe spec prose
janewman Jun 17, 2026
3f233f4
[aria-actions] Fix WCAG AA contrast + repeat live-region announce
janewman Jun 18, 2026
c85bdae
[aria-actions] Replace toast with real per-item state changes
janewman Jun 18, 2026
4a40d96
[aria-actions] Co-locate tab actions inside .tab-group; rename Close↔…
janewman Jun 19, 2026
90a5116
[aria-actions] Use inline SVG icons for the tab Close/Pin buttons
janewman Jun 19, 2026
a95f933
[aria-actions] Add explicit width/height attrs to icon SVGs
janewman Jun 19, 2026
a56eafa
[aria-actions] Use focusgroup for tablist+listbox; JS fallback otherwise
janewman Jun 19, 2026
33534ef
Revert "[aria-actions] Use focusgroup for tablist+listbox; JS fallbac…
janewman Jun 19, 2026
194adbe
Reapply "[aria-actions] Use focusgroup for tablist+listbox; JS fallba…
janewman Jun 19, 2026
36b29b2
[aria-actions] Lazy-load focusgroup polyfill; show runtime status pill
janewman Jun 19, 2026
ab1206d
[aria-actions] Delegate focusgroup detection to polyfill's supportsFo…
janewman Jun 19, 2026
f5736b5
[aria-actions] Re-sync focusgroupstart after polyfill loads; fix stal…
janewman Jun 19, 2026
1b2a70d
[aria-actions] Adopt focusgroup for the grid's row-arrow navigation
janewman Jun 19, 2026
5b51297
[aria-actions] Remove the listbox-with-actions section
janewman Jun 19, 2026
2583d04
[aria-actions] Add native popover for grid View action
janewman Jun 22, 2026
03bd8af
[aria-actions] Center X icon in popover close button; autofocus on open
janewman Jun 22, 2026
7a288c7
[aria-actions] Rename Archive button to Unarchive when row is archived
janewman Jun 22, 2026
ea682cf
[aria-actions] Drop redundant ARIA roles on grid rows/cells
janewman Jun 24, 2026
3533b5f
[aria-actions] Drop title attrs that duplicated aria-label
janewman Jun 24, 2026
aee4f60
[aria-actions] Make Pin a true toggle with aria-pressed
janewman Jun 24, 2026
7125e86
[aria-actions] Convert row-details popovers to native <dialog>
janewman Jun 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ See:

| Demo name | Description and docs | Source code & Readme | Live demo page |
|---|---|---|---|
| ARIA Actions demo | Interactive demo for the `aria-actions` ARIA attribute, which exposes a list of secondary actions on composite-widget items (tabs, options, rows) to assistive technology. | [/aria-actions/](https://github.com/MicrosoftEdge/Demos/tree/main/aria-actions) | [ARIA Actions demo](https://microsoftedge.github.io/Demos/aria-actions/) |
| Built-in AI playgrounds | Demo pages showing how to use the built-in Prompt and Writing Assistance AI APIs in Microsoft Edge. | [/built-in-ai/](https://github.com/MicrosoftEdge/Demos/tree/main/built-in-ai) | [Built-in AI playgrounds](https://microsoftedge.github.io/Demos/built-in-ai/) demo |
| CSS Gap Decorations demos | Draws line decorations within gaps in CSS Grid, Flexbox, and Multi-column layouts. | [/css-gap-decorations/](https://github.com/MicrosoftEdge/Demos/tree/main/css-gap-decorations) | [CSS Gap Decorations demos](https://microsoftedge.github.io/Demos/css-gap-decorations/) (Readme) |
| CSS Masonry demos | Showcase the implementation of CSS Masonry layout. | [/css-masonry/](https://github.com/MicrosoftEdge/Demos/tree/main/css-masonry) | [CSS Masonry demos](https://microsoftedge.github.io/Demos/css-masonry/) (Readme) |
Expand Down
1 change: 1 addition & 0 deletions aria-actions/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.screenshots/
33 changes: 33 additions & 0 deletions aria-actions/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# ARIA actions demo

➡️ **[Open the demo](https://microsoftedge.github.io/Demos/aria-actions/)** ⬅️

Interactive demo of [`aria-actions`](https://pr-preview.s3.amazonaws.com/w3c/aria/pull/1805.html), a new ARIA attribute that exposes secondary actions on an element to assistive technology. The value is an IDREFS list; each referenced element becomes an action that screen-reader users can invoke directly from the focused item.

The demo covers two composite-widget patterns: tabs and a data grid. Naming and structure follow [ARIA PR 1805](https://github.com/w3c/aria/pull/1805) and the [APG Tabs with Action Buttons example](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/examples/tabs-actions/).

## What the action buttons do

Clicking (or AT-invoking) an action toggles a visible state on its target item — Close strikes through the tab, Pin adds a 📌 prefix, View highlights the row, Archive dims the row and rewrites its Status cell. Clicking the same action again reverses the state. Each section has a polite live-region "Last action:" status row that announces what changed, and a **Reset section** button that restores the starting state so the demo is replayable.

## Keyboard navigation

The tablist and grid both use the experimental [`focusgroup`](https://open-ui.org/components/scoped-focusgroup.explainer/) attribute for declarative arrow-key navigation: `focusgroup="tablist nomemory"` on the tablist and `focusgroup="toolbar block nomemory nowrap"` on the grid's `<tbody>`. In-line action buttons (the tab Close/Pin and the in-row View/Archive) are scoped out of arrow nav with `focusgroup="none"` on their wrapper so they stay reachable by <kbd>Tab</kbd>. When the browser supports `focusgroup` natively, it handles arrow keys directly; otherwise the demo lazy-loads the [Microsoft focusgroup polyfill](https://github.com/microsoft/polyfills/tree/main/packages/focusgroup) from jsDelivr and lets the polyfill provide the same behaviour. If neither is available (offline, CDN blocked), the script keeps a roving-tabindex + arrow-key handler as a final fallback. A small status pill in the header reports which path is currently in use.

## Learn more

- [ARIA spec PR 1805 — rendered preview](https://pr-preview.s3.amazonaws.com/w3c/aria/pull/1805.html) (current normative text)
- [Umbrella discussion: "Secondary actions on items in composite widget roles"](https://github.com/w3c/aria/issues/1440)
- [APG: Tabs with Action Buttons example](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/examples/tabs-actions/)
- [Proposal explainer (Sarah Higley)](https://gist.github.com/smhigley/8dbe67f834cc472e3a14bf6b289e6f0c)

## Requirements

The demo exercises Blink's **AriaActions** runtime feature, which is experimental and off by default in every channel. To turn it on:

| Method | Instructions |
|--------|--------------|
| `chrome://flags` | Open `chrome://flags/#enable-experimental-web-platform-features`, set it to **Enabled**, then relaunch. |
| Command line | Launch with `--enable-blink-features=AriaActions`. |

Microsoft Edge or any Chromium-based browser will work. Firefox and Safari have not shipped support.
Loading