@cssints/apg-specs 0.0.0-stage → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +65 -2
- package/dist/apg/accordion.bridge.d.mts +35 -0
- package/dist/apg/accordion.bridge.mjs +326 -0
- package/dist/apg/accordion.model.json +8397 -0
- package/dist/apg/alert.bridge.d.mts +22 -0
- package/dist/apg/alert.bridge.mjs +86 -0
- package/dist/apg/alert.model.json +871 -0
- package/dist/apg/alertdialog.bridge.d.mts +21 -0
- package/dist/apg/alertdialog.bridge.mjs +221 -0
- package/dist/apg/alertdialog.model.json +5232 -0
- package/dist/apg/breadcrumb.bridge.d.mts +26 -0
- package/dist/apg/breadcrumb.bridge.mjs +120 -0
- package/dist/apg/breadcrumb.model.json +574 -0
- package/dist/apg/button.bridge.d.mts +35 -0
- package/dist/apg/button.bridge.mjs +208 -0
- package/dist/apg/button.model.json +5814 -0
- package/dist/apg/carousel.bridge.d.mts +44 -0
- package/dist/apg/carousel.bridge.mjs +262 -0
- package/dist/apg/carousel.model.json +8963 -0
- package/dist/apg/checkbox-group.bridge.d.mts +25 -0
- package/dist/apg/checkbox-group.bridge.mjs +276 -0
- package/dist/apg/checkbox-group.model.json +3863 -0
- package/dist/apg/checkbox.bridge.d.mts +34 -0
- package/dist/apg/checkbox.bridge.mjs +253 -0
- package/dist/apg/checkbox.model.json +3158 -0
- package/dist/apg/combobox-autocomplete.bridge.d.mts +14 -0
- package/dist/apg/combobox-autocomplete.bridge.mjs +326 -0
- package/dist/apg/combobox-autocomplete.model.json +11586 -0
- package/dist/apg/combobox-dialog.bridge.d.mts +17 -0
- package/dist/apg/combobox-dialog.bridge.mjs +250 -0
- package/dist/apg/combobox-dialog.model.json +8981 -0
- package/dist/apg/combobox-grid.bridge.d.mts +17 -0
- package/dist/apg/combobox-grid.bridge.mjs +227 -0
- package/dist/apg/combobox-grid.model.json +8554 -0
- package/dist/apg/combobox-select-only.bridge.d.mts +24 -0
- package/dist/apg/combobox-select-only.bridge.mjs +304 -0
- package/dist/apg/combobox-select-only.model.json +7846 -0
- package/dist/apg/combobox-tree.bridge.d.mts +17 -0
- package/dist/apg/combobox-tree.bridge.mjs +211 -0
- package/dist/apg/combobox-tree.model.json +9345 -0
- package/dist/apg/dialog-modal.bridge.d.mts +35 -0
- package/dist/apg/dialog-modal.bridge.mjs +186 -0
- package/dist/apg/dialog-modal.model.json +7580 -0
- package/dist/apg/disclosure.bridge.d.mts +25 -0
- package/dist/apg/disclosure.bridge.mjs +202 -0
- package/dist/apg/disclosure.model.json +4703 -0
- package/dist/apg/feed.bridge.d.mts +31 -0
- package/dist/apg/feed.bridge.mjs +246 -0
- package/dist/apg/feed.model.json +4523 -0
- package/dist/apg/grid-selection.bridge.d.mts +13 -0
- package/dist/apg/grid-selection.bridge.mjs +160 -0
- package/dist/apg/grid-selection.model.json +6974 -0
- package/dist/apg/grid-sort.bridge.d.mts +12 -0
- package/dist/apg/grid-sort.bridge.mjs +138 -0
- package/dist/apg/grid-sort.model.json +3799 -0
- package/dist/apg/grid.bridge.d.mts +54 -0
- package/dist/apg/grid.bridge.mjs +441 -0
- package/dist/apg/grid.model.json +3802 -0
- package/dist/apg/link.bridge.d.mts +24 -0
- package/dist/apg/link.bridge.mjs +126 -0
- package/dist/apg/link.model.json +694 -0
- package/dist/apg/listbox-multi.bridge.d.mts +10 -0
- package/dist/apg/listbox-multi.bridge.mjs +261 -0
- package/dist/apg/listbox-multi.model.json +10893 -0
- package/dist/apg/listbox-rearrangeable.bridge.d.mts +20 -0
- package/dist/apg/listbox-rearrangeable.bridge.mjs +237 -0
- package/dist/apg/listbox-rearrangeable.model.json +17592 -0
- package/dist/apg/listbox-shared.d.mts +58 -0
- package/dist/apg/listbox-shared.mjs +171 -0
- package/dist/apg/listbox-single.bridge.d.mts +10 -0
- package/dist/apg/listbox-single.bridge.mjs +196 -0
- package/dist/apg/listbox-single.model.json +8024 -0
- package/dist/apg/listbox-typeahead.bridge.d.mts +10 -0
- package/dist/apg/listbox-typeahead.bridge.mjs +153 -0
- package/dist/apg/listbox-typeahead.model.json +5615 -0
- package/dist/apg/menu-button.bridge.d.mts +29 -0
- package/dist/apg/menu-button.bridge.mjs +259 -0
- package/dist/apg/menu-button.model.json +5706 -0
- package/dist/apg/menu-checkable.bridge.d.mts +25 -0
- package/dist/apg/menu-checkable.bridge.mjs +226 -0
- package/dist/apg/menu-checkable.model.json +4277 -0
- package/dist/apg/menu-menubar.bridge.d.mts +27 -0
- package/dist/apg/menu-menubar.bridge.mjs +273 -0
- package/dist/apg/menu-menubar.model.json +9540 -0
- package/dist/apg/meter.bridge.d.mts +28 -0
- package/dist/apg/meter.bridge.mjs +159 -0
- package/dist/apg/meter.model.json +1185 -0
- package/dist/apg/player.bridge.d.mts +24 -0
- package/dist/apg/player.bridge.mjs +342 -0
- package/dist/apg/player.model.json +11013 -0
- package/dist/apg/radio.bridge.d.mts +35 -0
- package/dist/apg/radio.bridge.mjs +371 -0
- package/dist/apg/radio.model.json +5011 -0
- package/dist/apg/slider-multithumb.bridge.d.mts +34 -0
- package/dist/apg/slider-multithumb.bridge.mjs +365 -0
- package/dist/apg/slider-multithumb.model.json +5774 -0
- package/dist/apg/slider.bridge.d.mts +54 -0
- package/dist/apg/slider.bridge.mjs +359 -0
- package/dist/apg/slider.model.json +4881 -0
- package/dist/apg/spinbutton.bridge.d.mts +41 -0
- package/dist/apg/spinbutton.bridge.mjs +327 -0
- package/dist/apg/spinbutton.model.json +7571 -0
- package/dist/apg/switch.bridge.d.mts +30 -0
- package/dist/apg/switch.bridge.mjs +243 -0
- package/dist/apg/switch.model.json +3159 -0
- package/dist/apg/tabs.bridge.d.mts +41 -0
- package/dist/apg/tabs.bridge.mjs +294 -0
- package/dist/apg/tabs.model.json +7659 -0
- package/dist/apg/timeline.bridge.d.mts +36 -0
- package/dist/apg/timeline.bridge.mjs +265 -0
- package/dist/apg/timeline.model.json +6189 -0
- package/dist/apg/toolbar.bridge.d.mts +25 -0
- package/dist/apg/toolbar.bridge.mjs +307 -0
- package/dist/apg/toolbar.model.json +6616 -0
- package/dist/apg/tooltip.bridge.d.mts +36 -0
- package/dist/apg/tooltip.bridge.mjs +208 -0
- package/dist/apg/tooltip.model.json +8295 -0
- package/dist/apg/treegrid.bridge.d.mts +28 -0
- package/dist/apg/treegrid.bridge.mjs +311 -0
- package/dist/apg/treegrid.model.json +17358 -0
- package/dist/apg/treeview.bridge.d.mts +26 -0
- package/dist/apg/treeview.bridge.mjs +396 -0
- package/dist/apg/treeview.model.json +13745 -0
- package/dist/apg/windowsplitter.bridge.d.mts +36 -0
- package/dist/apg/windowsplitter.bridge.mjs +242 -0
- package/dist/apg/windowsplitter.model.json +6253 -0
- package/dist/canvas/camera.model.json +6568 -0
- package/dist/canvas/canvas.bridge.d.mts +190 -0
- package/dist/canvas/canvas.bridge.mjs +729 -0
- package/dist/canvas/pointer.model.json +17095 -0
- package/dist/scenario.d.mts +233 -0
- package/dist/scenario.mjs +313 -0
- package/package.json +57 -4
- package/scenarios/apg/README.md +221 -0
- package/scenarios/apg/accordion.base-ui.json +1005 -0
- package/scenarios/apg/accordion.react-aria.json +929 -0
- package/scenarios/apg/alert.base-ui.json +81 -0
- package/scenarios/apg/alert.react-aria.json +98 -0
- package/scenarios/apg/alertdialog.base-ui.json +331 -0
- package/scenarios/apg/alertdialog.react-aria.json +225 -0
- package/scenarios/apg/breadcrumb.react-aria.json +312 -0
- package/scenarios/apg/button.ariakit.json +136 -0
- package/scenarios/apg/button.base-ui.json +747 -0
- package/scenarios/apg/button.react-aria.json +443 -0
- package/scenarios/apg/carousel.apg.json +909 -0
- package/scenarios/apg/checkbox.ariakit.json +299 -0
- package/scenarios/apg/checkbox.base-ui.json +1126 -0
- package/scenarios/apg/checkbox.react-aria.json +518 -0
- package/scenarios/apg/combobox.ariakit.json +945 -0
- package/scenarios/apg/combobox.base-ui.json +2444 -0
- package/scenarios/apg/combobox.react-aria.json +845 -0
- package/scenarios/apg/dialog-modal.ariakit.json +1102 -0
- package/scenarios/apg/dialog-modal.base-ui.json +775 -0
- package/scenarios/apg/dialog-modal.react-aria.json +638 -0
- package/scenarios/apg/disclosure.apg.json +349 -0
- package/scenarios/apg/disclosure.ariakit.json +163 -0
- package/scenarios/apg/disclosure.base-ui.json +451 -0
- package/scenarios/apg/disclosure.react-aria.json +643 -0
- package/scenarios/apg/feed.apg.json +442 -0
- package/scenarios/apg/grid.ariakit.json +197 -0
- package/scenarios/apg/grid.base-ui.json +720 -0
- package/scenarios/apg/grid.react-aria.json +969 -0
- package/scenarios/apg/landmarks.ariakit.json +93 -0
- package/scenarios/apg/landmarks.react-aria.json +330 -0
- package/scenarios/apg/link.ariakit.json +83 -0
- package/scenarios/apg/link.base-ui.json +88 -0
- package/scenarios/apg/link.react-aria.json +186 -0
- package/scenarios/apg/listbox.ariakit.json +78 -0
- package/scenarios/apg/listbox.base-ui.json +163 -0
- package/scenarios/apg/listbox.react-aria.json +1118 -0
- package/scenarios/apg/menu-button.ariakit.json +924 -0
- package/scenarios/apg/menu-button.base-ui.json +1155 -0
- package/scenarios/apg/menu-button.react-aria.json +1080 -0
- package/scenarios/apg/menubar.ariakit.json +758 -0
- package/scenarios/apg/menubar.base-ui.json +673 -0
- package/scenarios/apg/meter.base-ui.json +243 -0
- package/scenarios/apg/meter.react-aria.json +201 -0
- package/scenarios/apg/radio.ariakit.json +459 -0
- package/scenarios/apg/radio.base-ui.json +581 -0
- package/scenarios/apg/radio.react-aria.json +576 -0
- package/scenarios/apg/slider-multithumb.base-ui.json +316 -0
- package/scenarios/apg/slider-multithumb.react-aria.json +363 -0
- package/scenarios/apg/slider.base-ui.json +544 -0
- package/scenarios/apg/slider.react-aria.json +456 -0
- package/scenarios/apg/spinbutton.base-ui.json +1688 -0
- package/scenarios/apg/spinbutton.react-aria.json +426 -0
- package/scenarios/apg/switch.base-ui.json +456 -0
- package/scenarios/apg/switch.react-aria.json +303 -0
- package/scenarios/apg/table.ariakit.json +65 -0
- package/scenarios/apg/table.react-aria.json +221 -0
- package/scenarios/apg/tabs.ariakit.json +329 -0
- package/scenarios/apg/tabs.base-ui.json +875 -0
- package/scenarios/apg/tabs.react-aria.json +644 -0
- package/scenarios/apg/toolbar.ariakit.json +595 -0
- package/scenarios/apg/toolbar.base-ui.json +1189 -0
- package/scenarios/apg/toolbar.react-aria.json +383 -0
- package/scenarios/apg/tooltip.ariakit.json +441 -0
- package/scenarios/apg/tooltip.base-ui.json +411 -0
- package/scenarios/apg/tooltip.react-aria.json +454 -0
- package/scenarios/apg/treegrid.apg.json +2558 -0
- package/scenarios/apg/treegrid.react-aria.json +5094 -0
- package/scenarios/apg/treeview.apg.json +928 -0
- package/scenarios/apg/windowsplitter.apg.json +557 -0
- package/scenarios/canvas/README.md +69 -0
- package/scenarios/canvas/camera.contract.json +237 -0
- package/scenarios/canvas/camera.excalidraw.json +57 -0
- package/scenarios/canvas/marquee.excalidraw.json +122 -0
- package/scenarios/canvas/pan.excalidraw.json +46 -0
- package/scenarios/canvas/pointer.contract.json +528 -0
- package/scenarios/parts.json +291 -0
- package/shared/aria.qnt +186 -0
- package/shared/details-group.qnt +50 -0
- package/shared/focusgroup.qnt +152 -0
- package/shared/invokers.qnt +81 -0
- package/shared/popover.qnt +71 -0
- package/specs/apg/STATIC.md +103 -0
- package/specs/apg/accordion.qnt +578 -0
- package/specs/apg/alert.qnt +131 -0
- package/specs/apg/alertdialog.qnt +455 -0
- package/specs/apg/breadcrumb.qnt +88 -0
- package/specs/apg/button.qnt +445 -0
- package/specs/apg/carousel.qnt +732 -0
- package/specs/apg/checkbox-group.qnt +388 -0
- package/specs/apg/checkbox.qnt +394 -0
- package/specs/apg/combobox-autocomplete.qnt +764 -0
- package/specs/apg/combobox-dialog.qnt +627 -0
- package/specs/apg/combobox-grid.qnt +632 -0
- package/specs/apg/combobox-select-only.qnt +626 -0
- package/specs/apg/combobox-tree.qnt +633 -0
- package/specs/apg/dialog-modal.qnt +499 -0
- package/specs/apg/disclosure.qnt +309 -0
- package/specs/apg/feed.qnt +485 -0
- package/specs/apg/grid-selection.qnt +512 -0
- package/specs/apg/grid-sort.qnt +330 -0
- package/specs/apg/grid.qnt +360 -0
- package/specs/apg/link.qnt +119 -0
- package/specs/apg/listbox-multi.qnt +799 -0
- package/specs/apg/listbox-rearrangeable.qnt +801 -0
- package/specs/apg/listbox-single.qnt +511 -0
- package/specs/apg/listbox-typeahead.qnt +396 -0
- package/specs/apg/menu-button.qnt +363 -0
- package/specs/apg/menu-checkable.qnt +304 -0
- package/specs/apg/menu-menubar.qnt +531 -0
- package/specs/apg/meter.qnt +129 -0
- package/specs/apg/player.qnt +1081 -0
- package/specs/apg/radio.qnt +394 -0
- package/specs/apg/slider-multithumb.qnt +441 -0
- package/specs/apg/slider.qnt +396 -0
- package/specs/apg/spinbutton.qnt +494 -0
- package/specs/apg/switch.qnt +389 -0
- package/specs/apg/tabs.qnt +412 -0
- package/specs/apg/timeline.qnt +612 -0
- package/specs/apg/toolbar.qnt +364 -0
- package/specs/apg/tooltip.qnt +553 -0
- package/specs/apg/treegrid.qnt +983 -0
- package/specs/apg/treeview.qnt +1004 -0
- package/specs/apg/windowsplitter.qnt +487 -0
- package/specs/canvas/camera.qnt +407 -0
- package/specs/canvas/pointer.qnt +841 -0
|
@@ -0,0 +1,2558 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pattern": "treegrid",
|
|
3
|
+
"source": "apg",
|
|
4
|
+
"commit": "",
|
|
5
|
+
"license": "W3C Software and Document License",
|
|
6
|
+
"scenarios": [
|
|
7
|
+
{
|
|
8
|
+
"id": "treegrid.apg.container-has-treegrid-role-and-label",
|
|
9
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
10
|
+
"upstreamTest": "Email Inbox treegrid example > Role, Property, State, and Tabindex Attributes > treegrid / aria-label",
|
|
11
|
+
"apg": "roles",
|
|
12
|
+
"config": {
|
|
13
|
+
"columns": 3,
|
|
14
|
+
"tree": [
|
|
15
|
+
{
|
|
16
|
+
"id": "m1",
|
|
17
|
+
"label": "Treegrids are awesome",
|
|
18
|
+
"children": [
|
|
19
|
+
{
|
|
20
|
+
"id": "m2",
|
|
21
|
+
"label": "re: Treegrids are awesome"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "m3",
|
|
25
|
+
"label": "re: Treegrids are awesome"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "m4",
|
|
29
|
+
"label": "re: Treegrids are awesome"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "m5",
|
|
33
|
+
"label": "re: Treegrids are awesome"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "m6",
|
|
37
|
+
"label": "re: Treegrids are awesome"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "m7",
|
|
41
|
+
"label": "re: Treegrids are awesome"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "m8",
|
|
45
|
+
"label": "re: Treegrids are awesome"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"expanded": ["m1"]
|
|
51
|
+
},
|
|
52
|
+
"steps": [
|
|
53
|
+
{
|
|
54
|
+
"expect": {
|
|
55
|
+
"attrs": {
|
|
56
|
+
"treegrid": {
|
|
57
|
+
"role": "treegrid",
|
|
58
|
+
"aria-label": "Inbox"
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"notes": "The container has role treegrid and an accessible name."
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "treegrid.apg.rows-have-row-role",
|
|
68
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
69
|
+
"upstreamTest": "Email Inbox treegrid example > Role, Property, State, and Tabindex Attributes > row",
|
|
70
|
+
"apg": "roles",
|
|
71
|
+
"config": {
|
|
72
|
+
"columns": 3,
|
|
73
|
+
"tree": [
|
|
74
|
+
{
|
|
75
|
+
"id": "m1",
|
|
76
|
+
"label": "Treegrids are awesome",
|
|
77
|
+
"children": [
|
|
78
|
+
{
|
|
79
|
+
"id": "m2",
|
|
80
|
+
"label": "re: Treegrids are awesome"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "m3",
|
|
84
|
+
"label": "re: Treegrids are awesome"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "m4",
|
|
88
|
+
"label": "re: Treegrids are awesome"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "m5",
|
|
92
|
+
"label": "re: Treegrids are awesome"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"id": "m6",
|
|
96
|
+
"label": "re: Treegrids are awesome"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "m7",
|
|
100
|
+
"label": "re: Treegrids are awesome"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"id": "m8",
|
|
104
|
+
"label": "re: Treegrids are awesome"
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"expanded": ["m1"]
|
|
110
|
+
},
|
|
111
|
+
"steps": [
|
|
112
|
+
{
|
|
113
|
+
"expect": {
|
|
114
|
+
"attrs": {
|
|
115
|
+
"row:0": {
|
|
116
|
+
"role": "row"
|
|
117
|
+
},
|
|
118
|
+
"row:0/0": {
|
|
119
|
+
"role": "row"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
],
|
|
125
|
+
"notes": "Every row container has role row, including child rows."
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"id": "treegrid.apg.cells-have-gridcell-role",
|
|
129
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
130
|
+
"upstreamTest": "Email Inbox treegrid example > Role, Property, State, and Tabindex Attributes > gridcell",
|
|
131
|
+
"apg": "roles",
|
|
132
|
+
"config": {
|
|
133
|
+
"columns": 3,
|
|
134
|
+
"tree": [
|
|
135
|
+
{
|
|
136
|
+
"id": "m1",
|
|
137
|
+
"label": "Treegrids are awesome",
|
|
138
|
+
"children": [
|
|
139
|
+
{
|
|
140
|
+
"id": "m2",
|
|
141
|
+
"label": "re: Treegrids are awesome"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"id": "m3",
|
|
145
|
+
"label": "re: Treegrids are awesome"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "m4",
|
|
149
|
+
"label": "re: Treegrids are awesome"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "m5",
|
|
153
|
+
"label": "re: Treegrids are awesome"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"id": "m6",
|
|
157
|
+
"label": "re: Treegrids are awesome"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"id": "m7",
|
|
161
|
+
"label": "re: Treegrids are awesome"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"id": "m8",
|
|
165
|
+
"label": "re: Treegrids are awesome"
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
}
|
|
169
|
+
],
|
|
170
|
+
"expanded": ["m1"]
|
|
171
|
+
},
|
|
172
|
+
"steps": [
|
|
173
|
+
{
|
|
174
|
+
"expect": {
|
|
175
|
+
"attrs": {
|
|
176
|
+
"cell:0,0": {
|
|
177
|
+
"role": "gridcell"
|
|
178
|
+
},
|
|
179
|
+
"cell:0,1": {
|
|
180
|
+
"role": "gridcell"
|
|
181
|
+
},
|
|
182
|
+
"cell:0,2": {
|
|
183
|
+
"role": "gridcell"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
],
|
|
189
|
+
"notes": "Cells that are not column or row headers have role gridcell."
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"id": "treegrid.apg.parent-row-exposes-aria-expanded",
|
|
193
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
194
|
+
"upstreamTest": "Treegrid Pattern > WAI-ARIA Roles, States, and Properties > aria-expanded",
|
|
195
|
+
"apg": "aria",
|
|
196
|
+
"config": {
|
|
197
|
+
"columns": 3,
|
|
198
|
+
"tree": [
|
|
199
|
+
{
|
|
200
|
+
"id": "m1",
|
|
201
|
+
"label": "Treegrids are awesome",
|
|
202
|
+
"children": [
|
|
203
|
+
{
|
|
204
|
+
"id": "m2",
|
|
205
|
+
"label": "re: Treegrids are awesome"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"id": "m3",
|
|
209
|
+
"label": "re: Treegrids are awesome"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"id": "m4",
|
|
213
|
+
"label": "re: Treegrids are awesome"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"id": "m5",
|
|
217
|
+
"label": "re: Treegrids are awesome"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"id": "m6",
|
|
221
|
+
"label": "re: Treegrids are awesome"
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"id": "m7",
|
|
225
|
+
"label": "re: Treegrids are awesome"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"id": "m8",
|
|
229
|
+
"label": "re: Treegrids are awesome"
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
],
|
|
234
|
+
"expanded": ["m1"]
|
|
235
|
+
},
|
|
236
|
+
"steps": [
|
|
237
|
+
{
|
|
238
|
+
"expect": {
|
|
239
|
+
"attrs": {
|
|
240
|
+
"row:0": {
|
|
241
|
+
"aria-expanded": "true"
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
],
|
|
247
|
+
"notes": "A parent row reports aria-expanded=true when its child rows are displayed."
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"id": "treegrid.apg.leaf-rows-omit-aria-expanded",
|
|
251
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
252
|
+
"upstreamTest": "Treegrid Pattern > WAI-ARIA Roles, States, and Properties > aria-expanded",
|
|
253
|
+
"apg": "aria",
|
|
254
|
+
"config": {
|
|
255
|
+
"columns": 3,
|
|
256
|
+
"tree": [
|
|
257
|
+
{
|
|
258
|
+
"id": "m1",
|
|
259
|
+
"label": "Treegrids are awesome",
|
|
260
|
+
"children": [
|
|
261
|
+
{
|
|
262
|
+
"id": "m2",
|
|
263
|
+
"label": "re: Treegrids are awesome"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"id": "m3",
|
|
267
|
+
"label": "re: Treegrids are awesome"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"id": "m4",
|
|
271
|
+
"label": "re: Treegrids are awesome"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"id": "m5",
|
|
275
|
+
"label": "re: Treegrids are awesome"
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"id": "m6",
|
|
279
|
+
"label": "re: Treegrids are awesome"
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
"id": "m7",
|
|
283
|
+
"label": "re: Treegrids are awesome"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"id": "m8",
|
|
287
|
+
"label": "re: Treegrids are awesome"
|
|
288
|
+
}
|
|
289
|
+
]
|
|
290
|
+
}
|
|
291
|
+
],
|
|
292
|
+
"expanded": ["m1"]
|
|
293
|
+
},
|
|
294
|
+
"steps": [
|
|
295
|
+
{
|
|
296
|
+
"expect": {
|
|
297
|
+
"attrs": {
|
|
298
|
+
"row:0/0": {
|
|
299
|
+
"aria-expanded": null
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
],
|
|
305
|
+
"notes": "Rows that do not control child rows must not have aria-expanded."
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
"id": "treegrid.apg.rows-expose-level-setsize-posinset",
|
|
309
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
310
|
+
"upstreamTest": "Treegrid Pattern > WAI-ARIA Roles, States, and Properties > aria-level / aria-setsize / aria-posinset",
|
|
311
|
+
"apg": "aria",
|
|
312
|
+
"config": {
|
|
313
|
+
"columns": 3,
|
|
314
|
+
"tree": [
|
|
315
|
+
{
|
|
316
|
+
"id": "m1",
|
|
317
|
+
"label": "Treegrids are awesome",
|
|
318
|
+
"children": [
|
|
319
|
+
{
|
|
320
|
+
"id": "m2",
|
|
321
|
+
"label": "re: Treegrids are awesome"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"id": "m3",
|
|
325
|
+
"label": "re: Treegrids are awesome"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"id": "m4",
|
|
329
|
+
"label": "re: Treegrids are awesome"
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"id": "m5",
|
|
333
|
+
"label": "re: Treegrids are awesome"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"id": "m6",
|
|
337
|
+
"label": "re: Treegrids are awesome"
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"id": "m7",
|
|
341
|
+
"label": "re: Treegrids are awesome"
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"id": "m8",
|
|
345
|
+
"label": "re: Treegrids are awesome"
|
|
346
|
+
}
|
|
347
|
+
]
|
|
348
|
+
}
|
|
349
|
+
],
|
|
350
|
+
"expanded": ["m1"]
|
|
351
|
+
},
|
|
352
|
+
"steps": [
|
|
353
|
+
{
|
|
354
|
+
"expect": {
|
|
355
|
+
"attrs": {
|
|
356
|
+
"row:0": {
|
|
357
|
+
"aria-level": "1",
|
|
358
|
+
"aria-setsize": "1",
|
|
359
|
+
"aria-posinset": "1"
|
|
360
|
+
},
|
|
361
|
+
"row:0/0": {
|
|
362
|
+
"aria-level": "2",
|
|
363
|
+
"aria-setsize": "7",
|
|
364
|
+
"aria-posinset": "1"
|
|
365
|
+
},
|
|
366
|
+
"row:0/6": {
|
|
367
|
+
"aria-level": "2",
|
|
368
|
+
"aria-setsize": "7",
|
|
369
|
+
"aria-posinset": "7"
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
],
|
|
375
|
+
"notes": "Setsize/posinset count siblings within the same branch and level, one-based."
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"id": "treegrid.apg.first-row-js-in-tab-sequence",
|
|
379
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
380
|
+
"upstreamTest": "Email Inbox treegrid example > roving tabindex",
|
|
381
|
+
"apg": "keyboard",
|
|
382
|
+
"config": {
|
|
383
|
+
"columns": 3,
|
|
384
|
+
"tree": [
|
|
385
|
+
{
|
|
386
|
+
"id": "m1",
|
|
387
|
+
"label": "Treegrids are awesome",
|
|
388
|
+
"children": [
|
|
389
|
+
{
|
|
390
|
+
"id": "m2",
|
|
391
|
+
"label": "re: Treegrids are awesome"
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"id": "m3",
|
|
395
|
+
"label": "re: Treegrids are awesome"
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"id": "m4",
|
|
399
|
+
"label": "re: Treegrids are awesome"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"id": "m5",
|
|
403
|
+
"label": "re: Treegrids are awesome"
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"id": "m6",
|
|
407
|
+
"label": "re: Treegrids are awesome"
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"id": "m7",
|
|
411
|
+
"label": "re: Treegrids are awesome"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"id": "m8",
|
|
415
|
+
"label": "re: Treegrids are awesome"
|
|
416
|
+
}
|
|
417
|
+
]
|
|
418
|
+
}
|
|
419
|
+
],
|
|
420
|
+
"expanded": ["m1"]
|
|
421
|
+
},
|
|
422
|
+
"steps": [
|
|
423
|
+
{
|
|
424
|
+
"expect": {
|
|
425
|
+
"attrs": {
|
|
426
|
+
"row:0": {
|
|
427
|
+
"tabindex": "0"
|
|
428
|
+
},
|
|
429
|
+
"row:0/0": {
|
|
430
|
+
"tabindex": "-1"
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
],
|
|
436
|
+
"notes": "One row or cell carries tabindex=0; all others are -1 (roving tabindex)."
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
"id": "treegrid.apg.arrow-right-on-collapsed-row-expands",
|
|
440
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
441
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Right Arrow",
|
|
442
|
+
"apg": "keyboard",
|
|
443
|
+
"config": {
|
|
444
|
+
"columns": 3,
|
|
445
|
+
"tree": [
|
|
446
|
+
{
|
|
447
|
+
"id": "m1",
|
|
448
|
+
"label": "Treegrids are awesome",
|
|
449
|
+
"children": [
|
|
450
|
+
{
|
|
451
|
+
"id": "m2",
|
|
452
|
+
"label": "re: Treegrids are awesome"
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"id": "m3",
|
|
456
|
+
"label": "re: Treegrids are awesome"
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"id": "m4",
|
|
460
|
+
"label": "re: Treegrids are awesome"
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
"id": "m5",
|
|
464
|
+
"label": "re: Treegrids are awesome"
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"id": "m6",
|
|
468
|
+
"label": "re: Treegrids are awesome"
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"id": "m7",
|
|
472
|
+
"label": "re: Treegrids are awesome"
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"id": "m8",
|
|
476
|
+
"label": "re: Treegrids are awesome"
|
|
477
|
+
}
|
|
478
|
+
]
|
|
479
|
+
}
|
|
480
|
+
],
|
|
481
|
+
"expanded": ["m1"]
|
|
482
|
+
},
|
|
483
|
+
"steps": [
|
|
484
|
+
{
|
|
485
|
+
"event": "focus",
|
|
486
|
+
"target": "row:0"
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"event": "key",
|
|
490
|
+
"key": "ArrowLeft",
|
|
491
|
+
"target": "row:0"
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"expect": {
|
|
495
|
+
"focus": "row:0",
|
|
496
|
+
"attrs": {
|
|
497
|
+
"row:0": {
|
|
498
|
+
"aria-expanded": "false"
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
"event": "key",
|
|
505
|
+
"key": "ArrowRight",
|
|
506
|
+
"target": "row:0"
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"expect": {
|
|
510
|
+
"focus": "row:0",
|
|
511
|
+
"attrs": {
|
|
512
|
+
"row:0": {
|
|
513
|
+
"aria-expanded": "true"
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
],
|
|
519
|
+
"notes": "Right Arrow on a focused collapsed row expands it and does not move focus."
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"id": "treegrid.apg.arrow-right-on-expanded-row-focuses-first-cell",
|
|
523
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
524
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Right Arrow",
|
|
525
|
+
"apg": "keyboard",
|
|
526
|
+
"config": {
|
|
527
|
+
"columns": 3,
|
|
528
|
+
"tree": [
|
|
529
|
+
{
|
|
530
|
+
"id": "m1",
|
|
531
|
+
"label": "Treegrids are awesome",
|
|
532
|
+
"children": [
|
|
533
|
+
{
|
|
534
|
+
"id": "m2",
|
|
535
|
+
"label": "re: Treegrids are awesome"
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"id": "m3",
|
|
539
|
+
"label": "re: Treegrids are awesome"
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"id": "m4",
|
|
543
|
+
"label": "re: Treegrids are awesome"
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"id": "m5",
|
|
547
|
+
"label": "re: Treegrids are awesome"
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"id": "m6",
|
|
551
|
+
"label": "re: Treegrids are awesome"
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"id": "m7",
|
|
555
|
+
"label": "re: Treegrids are awesome"
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
"id": "m8",
|
|
559
|
+
"label": "re: Treegrids are awesome"
|
|
560
|
+
}
|
|
561
|
+
]
|
|
562
|
+
}
|
|
563
|
+
],
|
|
564
|
+
"expanded": ["m1"]
|
|
565
|
+
},
|
|
566
|
+
"steps": [
|
|
567
|
+
{
|
|
568
|
+
"event": "focus",
|
|
569
|
+
"target": "row:0"
|
|
570
|
+
},
|
|
571
|
+
{
|
|
572
|
+
"event": "key",
|
|
573
|
+
"key": "ArrowRight",
|
|
574
|
+
"target": "row:0"
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
"expect": {
|
|
578
|
+
"focus": "cell:0,0"
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
],
|
|
582
|
+
"notes": "Right Arrow on a focused expanded row moves focus to the first cell."
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
"id": "treegrid.apg.arrow-right-moves-cell-right",
|
|
586
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
587
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Right Arrow",
|
|
588
|
+
"apg": "keyboard",
|
|
589
|
+
"config": {
|
|
590
|
+
"columns": 3,
|
|
591
|
+
"tree": [
|
|
592
|
+
{
|
|
593
|
+
"id": "m1",
|
|
594
|
+
"label": "Treegrids are awesome",
|
|
595
|
+
"children": [
|
|
596
|
+
{
|
|
597
|
+
"id": "m2",
|
|
598
|
+
"label": "re: Treegrids are awesome"
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
"id": "m3",
|
|
602
|
+
"label": "re: Treegrids are awesome"
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
"id": "m4",
|
|
606
|
+
"label": "re: Treegrids are awesome"
|
|
607
|
+
},
|
|
608
|
+
{
|
|
609
|
+
"id": "m5",
|
|
610
|
+
"label": "re: Treegrids are awesome"
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
"id": "m6",
|
|
614
|
+
"label": "re: Treegrids are awesome"
|
|
615
|
+
},
|
|
616
|
+
{
|
|
617
|
+
"id": "m7",
|
|
618
|
+
"label": "re: Treegrids are awesome"
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
"id": "m8",
|
|
622
|
+
"label": "re: Treegrids are awesome"
|
|
623
|
+
}
|
|
624
|
+
]
|
|
625
|
+
}
|
|
626
|
+
],
|
|
627
|
+
"expanded": ["m1"]
|
|
628
|
+
},
|
|
629
|
+
"steps": [
|
|
630
|
+
{
|
|
631
|
+
"event": "focus",
|
|
632
|
+
"target": "cell:0,0"
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
"event": "key",
|
|
636
|
+
"key": "ArrowRight",
|
|
637
|
+
"target": "cell:0,0"
|
|
638
|
+
},
|
|
639
|
+
{
|
|
640
|
+
"expect": {
|
|
641
|
+
"focus": "cell:0,1"
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
],
|
|
645
|
+
"notes": "On a cell that is not right-most, Right Arrow moves one cell right."
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
"id": "treegrid.apg.arrow-right-on-rightmost-cell-does-not-move",
|
|
649
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
650
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Right Arrow",
|
|
651
|
+
"apg": "keyboard",
|
|
652
|
+
"config": {
|
|
653
|
+
"columns": 3,
|
|
654
|
+
"tree": [
|
|
655
|
+
{
|
|
656
|
+
"id": "m1",
|
|
657
|
+
"label": "Treegrids are awesome",
|
|
658
|
+
"children": [
|
|
659
|
+
{
|
|
660
|
+
"id": "m2",
|
|
661
|
+
"label": "re: Treegrids are awesome"
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
"id": "m3",
|
|
665
|
+
"label": "re: Treegrids are awesome"
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"id": "m4",
|
|
669
|
+
"label": "re: Treegrids are awesome"
|
|
670
|
+
},
|
|
671
|
+
{
|
|
672
|
+
"id": "m5",
|
|
673
|
+
"label": "re: Treegrids are awesome"
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
"id": "m6",
|
|
677
|
+
"label": "re: Treegrids are awesome"
|
|
678
|
+
},
|
|
679
|
+
{
|
|
680
|
+
"id": "m7",
|
|
681
|
+
"label": "re: Treegrids are awesome"
|
|
682
|
+
},
|
|
683
|
+
{
|
|
684
|
+
"id": "m8",
|
|
685
|
+
"label": "re: Treegrids are awesome"
|
|
686
|
+
}
|
|
687
|
+
]
|
|
688
|
+
}
|
|
689
|
+
],
|
|
690
|
+
"expanded": ["m1"]
|
|
691
|
+
},
|
|
692
|
+
"steps": [
|
|
693
|
+
{
|
|
694
|
+
"event": "focus",
|
|
695
|
+
"target": "cell:0,2"
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
"event": "key",
|
|
699
|
+
"key": "ArrowRight",
|
|
700
|
+
"target": "cell:0,2"
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
"expect": {
|
|
704
|
+
"focus": "cell:0,2"
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
],
|
|
708
|
+
"notes": "Focus does not move from the right-most cell."
|
|
709
|
+
},
|
|
710
|
+
{
|
|
711
|
+
"id": "treegrid.apg.arrow-left-on-expanded-row-collapses",
|
|
712
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
713
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Left Arrow",
|
|
714
|
+
"apg": "keyboard",
|
|
715
|
+
"config": {
|
|
716
|
+
"columns": 3,
|
|
717
|
+
"tree": [
|
|
718
|
+
{
|
|
719
|
+
"id": "m1",
|
|
720
|
+
"label": "Treegrids are awesome",
|
|
721
|
+
"children": [
|
|
722
|
+
{
|
|
723
|
+
"id": "m2",
|
|
724
|
+
"label": "re: Treegrids are awesome"
|
|
725
|
+
},
|
|
726
|
+
{
|
|
727
|
+
"id": "m3",
|
|
728
|
+
"label": "re: Treegrids are awesome"
|
|
729
|
+
},
|
|
730
|
+
{
|
|
731
|
+
"id": "m4",
|
|
732
|
+
"label": "re: Treegrids are awesome"
|
|
733
|
+
},
|
|
734
|
+
{
|
|
735
|
+
"id": "m5",
|
|
736
|
+
"label": "re: Treegrids are awesome"
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
"id": "m6",
|
|
740
|
+
"label": "re: Treegrids are awesome"
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
"id": "m7",
|
|
744
|
+
"label": "re: Treegrids are awesome"
|
|
745
|
+
},
|
|
746
|
+
{
|
|
747
|
+
"id": "m8",
|
|
748
|
+
"label": "re: Treegrids are awesome"
|
|
749
|
+
}
|
|
750
|
+
]
|
|
751
|
+
}
|
|
752
|
+
],
|
|
753
|
+
"expanded": ["m1"]
|
|
754
|
+
},
|
|
755
|
+
"steps": [
|
|
756
|
+
{
|
|
757
|
+
"event": "focus",
|
|
758
|
+
"target": "row:0"
|
|
759
|
+
},
|
|
760
|
+
{
|
|
761
|
+
"event": "key",
|
|
762
|
+
"key": "ArrowLeft",
|
|
763
|
+
"target": "row:0"
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
"expect": {
|
|
767
|
+
"focus": "row:0",
|
|
768
|
+
"attrs": { "row:0": { "aria-expanded": "false" } },
|
|
769
|
+
"visible": ["row:0"]
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
],
|
|
773
|
+
"notes": "Left Arrow on a focused expanded row collapses it, hiding child rows."
|
|
774
|
+
},
|
|
775
|
+
{
|
|
776
|
+
"id": "treegrid.apg.arrow-left-on-collapsed-row-moves-to-parent",
|
|
777
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
778
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Left Arrow",
|
|
779
|
+
"apg": "keyboard",
|
|
780
|
+
"config": {
|
|
781
|
+
"columns": 3,
|
|
782
|
+
"tree": [
|
|
783
|
+
{
|
|
784
|
+
"id": "m1",
|
|
785
|
+
"label": "Treegrids are awesome",
|
|
786
|
+
"children": [
|
|
787
|
+
{
|
|
788
|
+
"id": "m2",
|
|
789
|
+
"label": "re: Treegrids are awesome"
|
|
790
|
+
},
|
|
791
|
+
{
|
|
792
|
+
"id": "m3",
|
|
793
|
+
"label": "re: Treegrids are awesome"
|
|
794
|
+
},
|
|
795
|
+
{
|
|
796
|
+
"id": "m4",
|
|
797
|
+
"label": "re: Treegrids are awesome"
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
"id": "m5",
|
|
801
|
+
"label": "re: Treegrids are awesome"
|
|
802
|
+
},
|
|
803
|
+
{
|
|
804
|
+
"id": "m6",
|
|
805
|
+
"label": "re: Treegrids are awesome"
|
|
806
|
+
},
|
|
807
|
+
{
|
|
808
|
+
"id": "m7",
|
|
809
|
+
"label": "re: Treegrids are awesome"
|
|
810
|
+
},
|
|
811
|
+
{
|
|
812
|
+
"id": "m8",
|
|
813
|
+
"label": "re: Treegrids are awesome"
|
|
814
|
+
}
|
|
815
|
+
]
|
|
816
|
+
}
|
|
817
|
+
],
|
|
818
|
+
"expanded": ["m1"]
|
|
819
|
+
},
|
|
820
|
+
"steps": [
|
|
821
|
+
{
|
|
822
|
+
"event": "focus",
|
|
823
|
+
"target": "row:0/0"
|
|
824
|
+
},
|
|
825
|
+
{
|
|
826
|
+
"event": "key",
|
|
827
|
+
"key": "ArrowLeft",
|
|
828
|
+
"target": "row:0/0"
|
|
829
|
+
},
|
|
830
|
+
{
|
|
831
|
+
"expect": {
|
|
832
|
+
"focus": "row:0"
|
|
833
|
+
}
|
|
834
|
+
}
|
|
835
|
+
],
|
|
836
|
+
"notes": "Left Arrow on a collapsed (leaf) row moves focus to its parent row."
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
"id": "treegrid.apg.arrow-left-on-first-cell-focuses-row",
|
|
840
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
841
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Left Arrow",
|
|
842
|
+
"apg": "keyboard",
|
|
843
|
+
"config": {
|
|
844
|
+
"columns": 3,
|
|
845
|
+
"tree": [
|
|
846
|
+
{
|
|
847
|
+
"id": "m1",
|
|
848
|
+
"label": "Treegrids are awesome",
|
|
849
|
+
"children": [
|
|
850
|
+
{
|
|
851
|
+
"id": "m2",
|
|
852
|
+
"label": "re: Treegrids are awesome"
|
|
853
|
+
},
|
|
854
|
+
{
|
|
855
|
+
"id": "m3",
|
|
856
|
+
"label": "re: Treegrids are awesome"
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
"id": "m4",
|
|
860
|
+
"label": "re: Treegrids are awesome"
|
|
861
|
+
},
|
|
862
|
+
{
|
|
863
|
+
"id": "m5",
|
|
864
|
+
"label": "re: Treegrids are awesome"
|
|
865
|
+
},
|
|
866
|
+
{
|
|
867
|
+
"id": "m6",
|
|
868
|
+
"label": "re: Treegrids are awesome"
|
|
869
|
+
},
|
|
870
|
+
{
|
|
871
|
+
"id": "m7",
|
|
872
|
+
"label": "re: Treegrids are awesome"
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
"id": "m8",
|
|
876
|
+
"label": "re: Treegrids are awesome"
|
|
877
|
+
}
|
|
878
|
+
]
|
|
879
|
+
}
|
|
880
|
+
],
|
|
881
|
+
"expanded": ["m1"]
|
|
882
|
+
},
|
|
883
|
+
"steps": [
|
|
884
|
+
{
|
|
885
|
+
"event": "focus",
|
|
886
|
+
"target": "cell:0,0"
|
|
887
|
+
},
|
|
888
|
+
{
|
|
889
|
+
"event": "key",
|
|
890
|
+
"key": "ArrowLeft",
|
|
891
|
+
"target": "cell:0,0"
|
|
892
|
+
},
|
|
893
|
+
{
|
|
894
|
+
"expect": {
|
|
895
|
+
"focus": "row:0"
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
],
|
|
899
|
+
"notes": "When row focus is supported, Left Arrow on the first cell focuses the row."
|
|
900
|
+
},
|
|
901
|
+
{
|
|
902
|
+
"id": "treegrid.apg.arrow-left-moves-cell-left",
|
|
903
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
904
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Left Arrow",
|
|
905
|
+
"apg": "keyboard",
|
|
906
|
+
"config": {
|
|
907
|
+
"columns": 3,
|
|
908
|
+
"tree": [
|
|
909
|
+
{
|
|
910
|
+
"id": "m1",
|
|
911
|
+
"label": "Treegrids are awesome",
|
|
912
|
+
"children": [
|
|
913
|
+
{
|
|
914
|
+
"id": "m2",
|
|
915
|
+
"label": "re: Treegrids are awesome"
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
"id": "m3",
|
|
919
|
+
"label": "re: Treegrids are awesome"
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
"id": "m4",
|
|
923
|
+
"label": "re: Treegrids are awesome"
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
"id": "m5",
|
|
927
|
+
"label": "re: Treegrids are awesome"
|
|
928
|
+
},
|
|
929
|
+
{
|
|
930
|
+
"id": "m6",
|
|
931
|
+
"label": "re: Treegrids are awesome"
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
"id": "m7",
|
|
935
|
+
"label": "re: Treegrids are awesome"
|
|
936
|
+
},
|
|
937
|
+
{
|
|
938
|
+
"id": "m8",
|
|
939
|
+
"label": "re: Treegrids are awesome"
|
|
940
|
+
}
|
|
941
|
+
]
|
|
942
|
+
}
|
|
943
|
+
],
|
|
944
|
+
"expanded": ["m1"]
|
|
945
|
+
},
|
|
946
|
+
"steps": [
|
|
947
|
+
{
|
|
948
|
+
"event": "focus",
|
|
949
|
+
"target": "cell:0,2"
|
|
950
|
+
},
|
|
951
|
+
{
|
|
952
|
+
"event": "key",
|
|
953
|
+
"key": "ArrowLeft",
|
|
954
|
+
"target": "cell:0,2"
|
|
955
|
+
},
|
|
956
|
+
{
|
|
957
|
+
"expect": {
|
|
958
|
+
"focus": "cell:0,1"
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
],
|
|
962
|
+
"notes": "On a non-first cell, Left Arrow moves one cell left."
|
|
963
|
+
},
|
|
964
|
+
{
|
|
965
|
+
"id": "treegrid.apg.arrow-down-on-row-moves-row-down",
|
|
966
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
967
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Down Arrow",
|
|
968
|
+
"apg": "keyboard",
|
|
969
|
+
"config": {
|
|
970
|
+
"columns": 3,
|
|
971
|
+
"tree": [
|
|
972
|
+
{
|
|
973
|
+
"id": "m1",
|
|
974
|
+
"label": "Treegrids are awesome",
|
|
975
|
+
"children": [
|
|
976
|
+
{
|
|
977
|
+
"id": "m2",
|
|
978
|
+
"label": "re: Treegrids are awesome"
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
"id": "m3",
|
|
982
|
+
"label": "re: Treegrids are awesome"
|
|
983
|
+
},
|
|
984
|
+
{
|
|
985
|
+
"id": "m4",
|
|
986
|
+
"label": "re: Treegrids are awesome"
|
|
987
|
+
},
|
|
988
|
+
{
|
|
989
|
+
"id": "m5",
|
|
990
|
+
"label": "re: Treegrids are awesome"
|
|
991
|
+
},
|
|
992
|
+
{
|
|
993
|
+
"id": "m6",
|
|
994
|
+
"label": "re: Treegrids are awesome"
|
|
995
|
+
},
|
|
996
|
+
{
|
|
997
|
+
"id": "m7",
|
|
998
|
+
"label": "re: Treegrids are awesome"
|
|
999
|
+
},
|
|
1000
|
+
{
|
|
1001
|
+
"id": "m8",
|
|
1002
|
+
"label": "re: Treegrids are awesome"
|
|
1003
|
+
}
|
|
1004
|
+
]
|
|
1005
|
+
}
|
|
1006
|
+
],
|
|
1007
|
+
"expanded": ["m1"]
|
|
1008
|
+
},
|
|
1009
|
+
"steps": [
|
|
1010
|
+
{
|
|
1011
|
+
"event": "focus",
|
|
1012
|
+
"target": "row:0"
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
"event": "key",
|
|
1016
|
+
"key": "ArrowDown",
|
|
1017
|
+
"target": "row:0"
|
|
1018
|
+
},
|
|
1019
|
+
{
|
|
1020
|
+
"expect": {
|
|
1021
|
+
"focus": "row:0/0"
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
],
|
|
1025
|
+
"notes": "With a row focused, Down Arrow moves one visible row down."
|
|
1026
|
+
},
|
|
1027
|
+
{
|
|
1028
|
+
"id": "treegrid.apg.arrow-up-on-row-moves-row-up",
|
|
1029
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1030
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Up Arrow",
|
|
1031
|
+
"apg": "keyboard",
|
|
1032
|
+
"config": {
|
|
1033
|
+
"columns": 3,
|
|
1034
|
+
"tree": [
|
|
1035
|
+
{
|
|
1036
|
+
"id": "m1",
|
|
1037
|
+
"label": "Treegrids are awesome",
|
|
1038
|
+
"children": [
|
|
1039
|
+
{
|
|
1040
|
+
"id": "m2",
|
|
1041
|
+
"label": "re: Treegrids are awesome"
|
|
1042
|
+
},
|
|
1043
|
+
{
|
|
1044
|
+
"id": "m3",
|
|
1045
|
+
"label": "re: Treegrids are awesome"
|
|
1046
|
+
},
|
|
1047
|
+
{
|
|
1048
|
+
"id": "m4",
|
|
1049
|
+
"label": "re: Treegrids are awesome"
|
|
1050
|
+
},
|
|
1051
|
+
{
|
|
1052
|
+
"id": "m5",
|
|
1053
|
+
"label": "re: Treegrids are awesome"
|
|
1054
|
+
},
|
|
1055
|
+
{
|
|
1056
|
+
"id": "m6",
|
|
1057
|
+
"label": "re: Treegrids are awesome"
|
|
1058
|
+
},
|
|
1059
|
+
{
|
|
1060
|
+
"id": "m7",
|
|
1061
|
+
"label": "re: Treegrids are awesome"
|
|
1062
|
+
},
|
|
1063
|
+
{
|
|
1064
|
+
"id": "m8",
|
|
1065
|
+
"label": "re: Treegrids are awesome"
|
|
1066
|
+
}
|
|
1067
|
+
]
|
|
1068
|
+
}
|
|
1069
|
+
],
|
|
1070
|
+
"expanded": ["m1"]
|
|
1071
|
+
},
|
|
1072
|
+
"steps": [
|
|
1073
|
+
{
|
|
1074
|
+
"event": "focus",
|
|
1075
|
+
"target": "row:0/0"
|
|
1076
|
+
},
|
|
1077
|
+
{
|
|
1078
|
+
"event": "key",
|
|
1079
|
+
"key": "ArrowUp",
|
|
1080
|
+
"target": "row:0/0"
|
|
1081
|
+
},
|
|
1082
|
+
{
|
|
1083
|
+
"expect": {
|
|
1084
|
+
"focus": "row:0"
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
],
|
|
1088
|
+
"notes": "With a row focused, Up Arrow moves one visible row up."
|
|
1089
|
+
},
|
|
1090
|
+
{
|
|
1091
|
+
"id": "treegrid.apg.arrow-down-on-cell-moves-cell-down",
|
|
1092
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1093
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Down Arrow",
|
|
1094
|
+
"apg": "keyboard",
|
|
1095
|
+
"config": {
|
|
1096
|
+
"columns": 3,
|
|
1097
|
+
"tree": [
|
|
1098
|
+
{
|
|
1099
|
+
"id": "m1",
|
|
1100
|
+
"label": "Treegrids are awesome",
|
|
1101
|
+
"children": [
|
|
1102
|
+
{
|
|
1103
|
+
"id": "m2",
|
|
1104
|
+
"label": "re: Treegrids are awesome"
|
|
1105
|
+
},
|
|
1106
|
+
{
|
|
1107
|
+
"id": "m3",
|
|
1108
|
+
"label": "re: Treegrids are awesome"
|
|
1109
|
+
},
|
|
1110
|
+
{
|
|
1111
|
+
"id": "m4",
|
|
1112
|
+
"label": "re: Treegrids are awesome"
|
|
1113
|
+
},
|
|
1114
|
+
{
|
|
1115
|
+
"id": "m5",
|
|
1116
|
+
"label": "re: Treegrids are awesome"
|
|
1117
|
+
},
|
|
1118
|
+
{
|
|
1119
|
+
"id": "m6",
|
|
1120
|
+
"label": "re: Treegrids are awesome"
|
|
1121
|
+
},
|
|
1122
|
+
{
|
|
1123
|
+
"id": "m7",
|
|
1124
|
+
"label": "re: Treegrids are awesome"
|
|
1125
|
+
},
|
|
1126
|
+
{
|
|
1127
|
+
"id": "m8",
|
|
1128
|
+
"label": "re: Treegrids are awesome"
|
|
1129
|
+
}
|
|
1130
|
+
]
|
|
1131
|
+
}
|
|
1132
|
+
],
|
|
1133
|
+
"expanded": ["m1"]
|
|
1134
|
+
},
|
|
1135
|
+
"steps": [
|
|
1136
|
+
{
|
|
1137
|
+
"event": "focus",
|
|
1138
|
+
"target": "cell:0,0"
|
|
1139
|
+
},
|
|
1140
|
+
{
|
|
1141
|
+
"event": "key",
|
|
1142
|
+
"key": "ArrowDown",
|
|
1143
|
+
"target": "cell:0,0"
|
|
1144
|
+
},
|
|
1145
|
+
{
|
|
1146
|
+
"expect": {
|
|
1147
|
+
"focus": "cell:0/0,0"
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
],
|
|
1151
|
+
"notes": "With a cell focused, Down Arrow moves one cell down in the same column."
|
|
1152
|
+
},
|
|
1153
|
+
{
|
|
1154
|
+
"id": "treegrid.apg.arrow-up-on-cell-moves-cell-up",
|
|
1155
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1156
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Up Arrow",
|
|
1157
|
+
"apg": "keyboard",
|
|
1158
|
+
"config": {
|
|
1159
|
+
"columns": 3,
|
|
1160
|
+
"tree": [
|
|
1161
|
+
{
|
|
1162
|
+
"id": "m1",
|
|
1163
|
+
"label": "Treegrids are awesome",
|
|
1164
|
+
"children": [
|
|
1165
|
+
{
|
|
1166
|
+
"id": "m2",
|
|
1167
|
+
"label": "re: Treegrids are awesome"
|
|
1168
|
+
},
|
|
1169
|
+
{
|
|
1170
|
+
"id": "m3",
|
|
1171
|
+
"label": "re: Treegrids are awesome"
|
|
1172
|
+
},
|
|
1173
|
+
{
|
|
1174
|
+
"id": "m4",
|
|
1175
|
+
"label": "re: Treegrids are awesome"
|
|
1176
|
+
},
|
|
1177
|
+
{
|
|
1178
|
+
"id": "m5",
|
|
1179
|
+
"label": "re: Treegrids are awesome"
|
|
1180
|
+
},
|
|
1181
|
+
{
|
|
1182
|
+
"id": "m6",
|
|
1183
|
+
"label": "re: Treegrids are awesome"
|
|
1184
|
+
},
|
|
1185
|
+
{
|
|
1186
|
+
"id": "m7",
|
|
1187
|
+
"label": "re: Treegrids are awesome"
|
|
1188
|
+
},
|
|
1189
|
+
{
|
|
1190
|
+
"id": "m8",
|
|
1191
|
+
"label": "re: Treegrids are awesome"
|
|
1192
|
+
}
|
|
1193
|
+
]
|
|
1194
|
+
}
|
|
1195
|
+
],
|
|
1196
|
+
"expanded": ["m1"]
|
|
1197
|
+
},
|
|
1198
|
+
"steps": [
|
|
1199
|
+
{
|
|
1200
|
+
"event": "focus",
|
|
1201
|
+
"target": "cell:0/0,0"
|
|
1202
|
+
},
|
|
1203
|
+
{
|
|
1204
|
+
"event": "key",
|
|
1205
|
+
"key": "ArrowUp",
|
|
1206
|
+
"target": "cell:0/0,0"
|
|
1207
|
+
},
|
|
1208
|
+
{
|
|
1209
|
+
"expect": {
|
|
1210
|
+
"focus": "cell:0,0"
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
],
|
|
1214
|
+
"notes": "With a cell focused, Up Arrow moves one cell up in the same column."
|
|
1215
|
+
},
|
|
1216
|
+
{
|
|
1217
|
+
"id": "treegrid.apg.tab-moves-to-next-interactive-widget-in-row",
|
|
1218
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1219
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Tab",
|
|
1220
|
+
"apg": "keyboard",
|
|
1221
|
+
"config": {
|
|
1222
|
+
"columns": 3,
|
|
1223
|
+
"tree": [
|
|
1224
|
+
{
|
|
1225
|
+
"id": "m1",
|
|
1226
|
+
"label": "Treegrids are awesome",
|
|
1227
|
+
"children": [
|
|
1228
|
+
{
|
|
1229
|
+
"id": "m2",
|
|
1230
|
+
"label": "re: Treegrids are awesome"
|
|
1231
|
+
},
|
|
1232
|
+
{
|
|
1233
|
+
"id": "m3",
|
|
1234
|
+
"label": "re: Treegrids are awesome"
|
|
1235
|
+
},
|
|
1236
|
+
{
|
|
1237
|
+
"id": "m4",
|
|
1238
|
+
"label": "re: Treegrids are awesome"
|
|
1239
|
+
},
|
|
1240
|
+
{
|
|
1241
|
+
"id": "m5",
|
|
1242
|
+
"label": "re: Treegrids are awesome"
|
|
1243
|
+
},
|
|
1244
|
+
{
|
|
1245
|
+
"id": "m6",
|
|
1246
|
+
"label": "re: Treegrids are awesome"
|
|
1247
|
+
},
|
|
1248
|
+
{
|
|
1249
|
+
"id": "m7",
|
|
1250
|
+
"label": "re: Treegrids are awesome"
|
|
1251
|
+
},
|
|
1252
|
+
{
|
|
1253
|
+
"id": "m8",
|
|
1254
|
+
"label": "re: Treegrids are awesome"
|
|
1255
|
+
}
|
|
1256
|
+
]
|
|
1257
|
+
}
|
|
1258
|
+
],
|
|
1259
|
+
"expanded": ["m1"]
|
|
1260
|
+
},
|
|
1261
|
+
"steps": [
|
|
1262
|
+
{
|
|
1263
|
+
"event": "focus",
|
|
1264
|
+
"target": "row:0"
|
|
1265
|
+
},
|
|
1266
|
+
{
|
|
1267
|
+
"event": "key",
|
|
1268
|
+
"key": "Tab",
|
|
1269
|
+
"target": "row:0"
|
|
1270
|
+
},
|
|
1271
|
+
{
|
|
1272
|
+
"expect": {
|
|
1273
|
+
"focus": "cell:0,0/link"
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
],
|
|
1277
|
+
"notes": "Tab moves to the first interactive widget in the current row; widget targets use <cell>/<widget>."
|
|
1278
|
+
},
|
|
1279
|
+
{
|
|
1280
|
+
"id": "treegrid.apg.shift-tab-on-row-moves-out-of-grid",
|
|
1281
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1282
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Shift + Tab",
|
|
1283
|
+
"apg": "keyboard",
|
|
1284
|
+
"config": {
|
|
1285
|
+
"columns": 3,
|
|
1286
|
+
"tree": [
|
|
1287
|
+
{
|
|
1288
|
+
"id": "m1",
|
|
1289
|
+
"label": "Treegrids are awesome",
|
|
1290
|
+
"children": [
|
|
1291
|
+
{
|
|
1292
|
+
"id": "m2",
|
|
1293
|
+
"label": "re: Treegrids are awesome"
|
|
1294
|
+
},
|
|
1295
|
+
{
|
|
1296
|
+
"id": "m3",
|
|
1297
|
+
"label": "re: Treegrids are awesome"
|
|
1298
|
+
},
|
|
1299
|
+
{
|
|
1300
|
+
"id": "m4",
|
|
1301
|
+
"label": "re: Treegrids are awesome"
|
|
1302
|
+
},
|
|
1303
|
+
{
|
|
1304
|
+
"id": "m5",
|
|
1305
|
+
"label": "re: Treegrids are awesome"
|
|
1306
|
+
},
|
|
1307
|
+
{
|
|
1308
|
+
"id": "m6",
|
|
1309
|
+
"label": "re: Treegrids are awesome"
|
|
1310
|
+
},
|
|
1311
|
+
{
|
|
1312
|
+
"id": "m7",
|
|
1313
|
+
"label": "re: Treegrids are awesome"
|
|
1314
|
+
},
|
|
1315
|
+
{
|
|
1316
|
+
"id": "m8",
|
|
1317
|
+
"label": "re: Treegrids are awesome"
|
|
1318
|
+
}
|
|
1319
|
+
]
|
|
1320
|
+
}
|
|
1321
|
+
],
|
|
1322
|
+
"expanded": ["m1"]
|
|
1323
|
+
},
|
|
1324
|
+
"steps": [
|
|
1325
|
+
{
|
|
1326
|
+
"event": "focus",
|
|
1327
|
+
"target": "row:0"
|
|
1328
|
+
},
|
|
1329
|
+
{
|
|
1330
|
+
"event": "key",
|
|
1331
|
+
"key": "Shift+Tab",
|
|
1332
|
+
"target": "row:0"
|
|
1333
|
+
},
|
|
1334
|
+
{
|
|
1335
|
+
"expect": {
|
|
1336
|
+
"focus": null
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1339
|
+
],
|
|
1340
|
+
"notes": "Shift+Tab with a row focused moves focus out of the treegrid."
|
|
1341
|
+
},
|
|
1342
|
+
{
|
|
1343
|
+
"id": "treegrid.apg.shift-tab-on-cell-moves-to-previous-widget",
|
|
1344
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1345
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Shift + Tab",
|
|
1346
|
+
"apg": "keyboard",
|
|
1347
|
+
"config": {
|
|
1348
|
+
"columns": 3,
|
|
1349
|
+
"tree": [
|
|
1350
|
+
{
|
|
1351
|
+
"id": "m1",
|
|
1352
|
+
"label": "Treegrids are awesome",
|
|
1353
|
+
"children": [
|
|
1354
|
+
{
|
|
1355
|
+
"id": "m2",
|
|
1356
|
+
"label": "re: Treegrids are awesome"
|
|
1357
|
+
},
|
|
1358
|
+
{
|
|
1359
|
+
"id": "m3",
|
|
1360
|
+
"label": "re: Treegrids are awesome"
|
|
1361
|
+
},
|
|
1362
|
+
{
|
|
1363
|
+
"id": "m4",
|
|
1364
|
+
"label": "re: Treegrids are awesome"
|
|
1365
|
+
},
|
|
1366
|
+
{
|
|
1367
|
+
"id": "m5",
|
|
1368
|
+
"label": "re: Treegrids are awesome"
|
|
1369
|
+
},
|
|
1370
|
+
{
|
|
1371
|
+
"id": "m6",
|
|
1372
|
+
"label": "re: Treegrids are awesome"
|
|
1373
|
+
},
|
|
1374
|
+
{
|
|
1375
|
+
"id": "m7",
|
|
1376
|
+
"label": "re: Treegrids are awesome"
|
|
1377
|
+
},
|
|
1378
|
+
{
|
|
1379
|
+
"id": "m8",
|
|
1380
|
+
"label": "re: Treegrids are awesome"
|
|
1381
|
+
}
|
|
1382
|
+
]
|
|
1383
|
+
}
|
|
1384
|
+
],
|
|
1385
|
+
"expanded": ["m1"]
|
|
1386
|
+
},
|
|
1387
|
+
"steps": [
|
|
1388
|
+
{
|
|
1389
|
+
"event": "focus",
|
|
1390
|
+
"target": "cell:0,1/link"
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
"event": "key",
|
|
1394
|
+
"key": "Shift+Tab",
|
|
1395
|
+
"target": "cell:0,1/link"
|
|
1396
|
+
},
|
|
1397
|
+
{
|
|
1398
|
+
"expect": {
|
|
1399
|
+
"focus": "cell:0,0/link"
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
],
|
|
1403
|
+
"notes": "With a cell widget focused, Shift+Tab moves to the previous interactive widget in the row."
|
|
1404
|
+
},
|
|
1405
|
+
{
|
|
1406
|
+
"id": "treegrid.apg.home-on-row-moves-to-first-row",
|
|
1407
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1408
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Home",
|
|
1409
|
+
"apg": "keyboard",
|
|
1410
|
+
"config": {
|
|
1411
|
+
"columns": 3,
|
|
1412
|
+
"tree": [
|
|
1413
|
+
{
|
|
1414
|
+
"id": "m1",
|
|
1415
|
+
"label": "Treegrids are awesome",
|
|
1416
|
+
"children": [
|
|
1417
|
+
{
|
|
1418
|
+
"id": "m2",
|
|
1419
|
+
"label": "re: Treegrids are awesome"
|
|
1420
|
+
},
|
|
1421
|
+
{
|
|
1422
|
+
"id": "m3",
|
|
1423
|
+
"label": "re: Treegrids are awesome"
|
|
1424
|
+
},
|
|
1425
|
+
{
|
|
1426
|
+
"id": "m4",
|
|
1427
|
+
"label": "re: Treegrids are awesome"
|
|
1428
|
+
},
|
|
1429
|
+
{
|
|
1430
|
+
"id": "m5",
|
|
1431
|
+
"label": "re: Treegrids are awesome"
|
|
1432
|
+
},
|
|
1433
|
+
{
|
|
1434
|
+
"id": "m6",
|
|
1435
|
+
"label": "re: Treegrids are awesome"
|
|
1436
|
+
},
|
|
1437
|
+
{
|
|
1438
|
+
"id": "m7",
|
|
1439
|
+
"label": "re: Treegrids are awesome"
|
|
1440
|
+
},
|
|
1441
|
+
{
|
|
1442
|
+
"id": "m8",
|
|
1443
|
+
"label": "re: Treegrids are awesome"
|
|
1444
|
+
}
|
|
1445
|
+
]
|
|
1446
|
+
}
|
|
1447
|
+
],
|
|
1448
|
+
"expanded": ["m1"]
|
|
1449
|
+
},
|
|
1450
|
+
"steps": [
|
|
1451
|
+
{
|
|
1452
|
+
"event": "focus",
|
|
1453
|
+
"target": "row:0/3"
|
|
1454
|
+
},
|
|
1455
|
+
{
|
|
1456
|
+
"event": "key",
|
|
1457
|
+
"key": "Home",
|
|
1458
|
+
"target": "row:0/3"
|
|
1459
|
+
},
|
|
1460
|
+
{
|
|
1461
|
+
"expect": {
|
|
1462
|
+
"focus": "row:0"
|
|
1463
|
+
}
|
|
1464
|
+
}
|
|
1465
|
+
],
|
|
1466
|
+
"notes": "With a row focused, Home moves to the first row."
|
|
1467
|
+
},
|
|
1468
|
+
{
|
|
1469
|
+
"id": "treegrid.apg.home-on-cell-moves-to-first-cell",
|
|
1470
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1471
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Home",
|
|
1472
|
+
"apg": "keyboard",
|
|
1473
|
+
"config": {
|
|
1474
|
+
"columns": 3,
|
|
1475
|
+
"tree": [
|
|
1476
|
+
{
|
|
1477
|
+
"id": "m1",
|
|
1478
|
+
"label": "Treegrids are awesome",
|
|
1479
|
+
"children": [
|
|
1480
|
+
{
|
|
1481
|
+
"id": "m2",
|
|
1482
|
+
"label": "re: Treegrids are awesome"
|
|
1483
|
+
},
|
|
1484
|
+
{
|
|
1485
|
+
"id": "m3",
|
|
1486
|
+
"label": "re: Treegrids are awesome"
|
|
1487
|
+
},
|
|
1488
|
+
{
|
|
1489
|
+
"id": "m4",
|
|
1490
|
+
"label": "re: Treegrids are awesome"
|
|
1491
|
+
},
|
|
1492
|
+
{
|
|
1493
|
+
"id": "m5",
|
|
1494
|
+
"label": "re: Treegrids are awesome"
|
|
1495
|
+
},
|
|
1496
|
+
{
|
|
1497
|
+
"id": "m6",
|
|
1498
|
+
"label": "re: Treegrids are awesome"
|
|
1499
|
+
},
|
|
1500
|
+
{
|
|
1501
|
+
"id": "m7",
|
|
1502
|
+
"label": "re: Treegrids are awesome"
|
|
1503
|
+
},
|
|
1504
|
+
{
|
|
1505
|
+
"id": "m8",
|
|
1506
|
+
"label": "re: Treegrids are awesome"
|
|
1507
|
+
}
|
|
1508
|
+
]
|
|
1509
|
+
}
|
|
1510
|
+
],
|
|
1511
|
+
"expanded": ["m1"]
|
|
1512
|
+
},
|
|
1513
|
+
"steps": [
|
|
1514
|
+
{
|
|
1515
|
+
"event": "focus",
|
|
1516
|
+
"target": "cell:0,2"
|
|
1517
|
+
},
|
|
1518
|
+
{
|
|
1519
|
+
"event": "key",
|
|
1520
|
+
"key": "Home",
|
|
1521
|
+
"target": "cell:0,2"
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
"expect": {
|
|
1525
|
+
"focus": "cell:0,0"
|
|
1526
|
+
}
|
|
1527
|
+
}
|
|
1528
|
+
],
|
|
1529
|
+
"notes": "With a cell focused, Home moves to the first cell in that row."
|
|
1530
|
+
},
|
|
1531
|
+
{
|
|
1532
|
+
"id": "treegrid.apg.end-on-row-moves-to-last-visible-row",
|
|
1533
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1534
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > End",
|
|
1535
|
+
"apg": "keyboard",
|
|
1536
|
+
"config": {
|
|
1537
|
+
"columns": 3,
|
|
1538
|
+
"tree": [
|
|
1539
|
+
{
|
|
1540
|
+
"id": "m1",
|
|
1541
|
+
"label": "Treegrids are awesome",
|
|
1542
|
+
"children": [
|
|
1543
|
+
{
|
|
1544
|
+
"id": "m2",
|
|
1545
|
+
"label": "re: Treegrids are awesome"
|
|
1546
|
+
},
|
|
1547
|
+
{
|
|
1548
|
+
"id": "m3",
|
|
1549
|
+
"label": "re: Treegrids are awesome"
|
|
1550
|
+
},
|
|
1551
|
+
{
|
|
1552
|
+
"id": "m4",
|
|
1553
|
+
"label": "re: Treegrids are awesome"
|
|
1554
|
+
},
|
|
1555
|
+
{
|
|
1556
|
+
"id": "m5",
|
|
1557
|
+
"label": "re: Treegrids are awesome"
|
|
1558
|
+
},
|
|
1559
|
+
{
|
|
1560
|
+
"id": "m6",
|
|
1561
|
+
"label": "re: Treegrids are awesome"
|
|
1562
|
+
},
|
|
1563
|
+
{
|
|
1564
|
+
"id": "m7",
|
|
1565
|
+
"label": "re: Treegrids are awesome"
|
|
1566
|
+
},
|
|
1567
|
+
{
|
|
1568
|
+
"id": "m8",
|
|
1569
|
+
"label": "re: Treegrids are awesome"
|
|
1570
|
+
}
|
|
1571
|
+
]
|
|
1572
|
+
}
|
|
1573
|
+
],
|
|
1574
|
+
"expanded": ["m1"]
|
|
1575
|
+
},
|
|
1576
|
+
"steps": [
|
|
1577
|
+
{
|
|
1578
|
+
"event": "focus",
|
|
1579
|
+
"target": "row:0"
|
|
1580
|
+
},
|
|
1581
|
+
{
|
|
1582
|
+
"event": "key",
|
|
1583
|
+
"key": "End",
|
|
1584
|
+
"target": "row:0"
|
|
1585
|
+
},
|
|
1586
|
+
{
|
|
1587
|
+
"expect": {
|
|
1588
|
+
"focus": "row:0/6"
|
|
1589
|
+
}
|
|
1590
|
+
}
|
|
1591
|
+
],
|
|
1592
|
+
"notes": "With a row focused, End moves to the last visible row."
|
|
1593
|
+
},
|
|
1594
|
+
{
|
|
1595
|
+
"id": "treegrid.apg.end-on-cell-moves-to-last-cell",
|
|
1596
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1597
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > End",
|
|
1598
|
+
"apg": "keyboard",
|
|
1599
|
+
"config": {
|
|
1600
|
+
"columns": 3,
|
|
1601
|
+
"tree": [
|
|
1602
|
+
{
|
|
1603
|
+
"id": "m1",
|
|
1604
|
+
"label": "Treegrids are awesome",
|
|
1605
|
+
"children": [
|
|
1606
|
+
{
|
|
1607
|
+
"id": "m2",
|
|
1608
|
+
"label": "re: Treegrids are awesome"
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
"id": "m3",
|
|
1612
|
+
"label": "re: Treegrids are awesome"
|
|
1613
|
+
},
|
|
1614
|
+
{
|
|
1615
|
+
"id": "m4",
|
|
1616
|
+
"label": "re: Treegrids are awesome"
|
|
1617
|
+
},
|
|
1618
|
+
{
|
|
1619
|
+
"id": "m5",
|
|
1620
|
+
"label": "re: Treegrids are awesome"
|
|
1621
|
+
},
|
|
1622
|
+
{
|
|
1623
|
+
"id": "m6",
|
|
1624
|
+
"label": "re: Treegrids are awesome"
|
|
1625
|
+
},
|
|
1626
|
+
{
|
|
1627
|
+
"id": "m7",
|
|
1628
|
+
"label": "re: Treegrids are awesome"
|
|
1629
|
+
},
|
|
1630
|
+
{
|
|
1631
|
+
"id": "m8",
|
|
1632
|
+
"label": "re: Treegrids are awesome"
|
|
1633
|
+
}
|
|
1634
|
+
]
|
|
1635
|
+
}
|
|
1636
|
+
],
|
|
1637
|
+
"expanded": ["m1"]
|
|
1638
|
+
},
|
|
1639
|
+
"steps": [
|
|
1640
|
+
{
|
|
1641
|
+
"event": "focus",
|
|
1642
|
+
"target": "cell:0,0"
|
|
1643
|
+
},
|
|
1644
|
+
{
|
|
1645
|
+
"event": "key",
|
|
1646
|
+
"key": "End",
|
|
1647
|
+
"target": "cell:0,0"
|
|
1648
|
+
},
|
|
1649
|
+
{
|
|
1650
|
+
"expect": {
|
|
1651
|
+
"focus": "cell:0,2"
|
|
1652
|
+
}
|
|
1653
|
+
}
|
|
1654
|
+
],
|
|
1655
|
+
"notes": "With a cell focused, End moves to the last cell in that row."
|
|
1656
|
+
},
|
|
1657
|
+
{
|
|
1658
|
+
"id": "treegrid.apg.control-home-on-cell-moves-to-first-row-same-column",
|
|
1659
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1660
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Control + Home",
|
|
1661
|
+
"apg": "keyboard",
|
|
1662
|
+
"config": {
|
|
1663
|
+
"columns": 3,
|
|
1664
|
+
"tree": [
|
|
1665
|
+
{
|
|
1666
|
+
"id": "m1",
|
|
1667
|
+
"label": "Treegrids are awesome",
|
|
1668
|
+
"children": [
|
|
1669
|
+
{
|
|
1670
|
+
"id": "m2",
|
|
1671
|
+
"label": "re: Treegrids are awesome"
|
|
1672
|
+
},
|
|
1673
|
+
{
|
|
1674
|
+
"id": "m3",
|
|
1675
|
+
"label": "re: Treegrids are awesome"
|
|
1676
|
+
},
|
|
1677
|
+
{
|
|
1678
|
+
"id": "m4",
|
|
1679
|
+
"label": "re: Treegrids are awesome"
|
|
1680
|
+
},
|
|
1681
|
+
{
|
|
1682
|
+
"id": "m5",
|
|
1683
|
+
"label": "re: Treegrids are awesome"
|
|
1684
|
+
},
|
|
1685
|
+
{
|
|
1686
|
+
"id": "m6",
|
|
1687
|
+
"label": "re: Treegrids are awesome"
|
|
1688
|
+
},
|
|
1689
|
+
{
|
|
1690
|
+
"id": "m7",
|
|
1691
|
+
"label": "re: Treegrids are awesome"
|
|
1692
|
+
},
|
|
1693
|
+
{
|
|
1694
|
+
"id": "m8",
|
|
1695
|
+
"label": "re: Treegrids are awesome"
|
|
1696
|
+
}
|
|
1697
|
+
]
|
|
1698
|
+
}
|
|
1699
|
+
],
|
|
1700
|
+
"expanded": ["m1"]
|
|
1701
|
+
},
|
|
1702
|
+
"steps": [
|
|
1703
|
+
{
|
|
1704
|
+
"event": "focus",
|
|
1705
|
+
"target": "cell:0/3,2"
|
|
1706
|
+
},
|
|
1707
|
+
{
|
|
1708
|
+
"event": "key",
|
|
1709
|
+
"key": "Control+Home",
|
|
1710
|
+
"target": "cell:0/3,2"
|
|
1711
|
+
},
|
|
1712
|
+
{
|
|
1713
|
+
"expect": {
|
|
1714
|
+
"focus": "cell:0,2"
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
],
|
|
1718
|
+
"notes": "With a cell focused, Control+Home moves to the first row in the same column."
|
|
1719
|
+
},
|
|
1720
|
+
{
|
|
1721
|
+
"id": "treegrid.apg.control-end-on-cell-moves-to-last-row-same-column",
|
|
1722
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1723
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Control + End",
|
|
1724
|
+
"apg": "keyboard",
|
|
1725
|
+
"config": {
|
|
1726
|
+
"columns": 3,
|
|
1727
|
+
"tree": [
|
|
1728
|
+
{
|
|
1729
|
+
"id": "m1",
|
|
1730
|
+
"label": "Treegrids are awesome",
|
|
1731
|
+
"children": [
|
|
1732
|
+
{
|
|
1733
|
+
"id": "m2",
|
|
1734
|
+
"label": "re: Treegrids are awesome"
|
|
1735
|
+
},
|
|
1736
|
+
{
|
|
1737
|
+
"id": "m3",
|
|
1738
|
+
"label": "re: Treegrids are awesome"
|
|
1739
|
+
},
|
|
1740
|
+
{
|
|
1741
|
+
"id": "m4",
|
|
1742
|
+
"label": "re: Treegrids are awesome"
|
|
1743
|
+
},
|
|
1744
|
+
{
|
|
1745
|
+
"id": "m5",
|
|
1746
|
+
"label": "re: Treegrids are awesome"
|
|
1747
|
+
},
|
|
1748
|
+
{
|
|
1749
|
+
"id": "m6",
|
|
1750
|
+
"label": "re: Treegrids are awesome"
|
|
1751
|
+
},
|
|
1752
|
+
{
|
|
1753
|
+
"id": "m7",
|
|
1754
|
+
"label": "re: Treegrids are awesome"
|
|
1755
|
+
},
|
|
1756
|
+
{
|
|
1757
|
+
"id": "m8",
|
|
1758
|
+
"label": "re: Treegrids are awesome"
|
|
1759
|
+
}
|
|
1760
|
+
]
|
|
1761
|
+
}
|
|
1762
|
+
],
|
|
1763
|
+
"expanded": ["m1"]
|
|
1764
|
+
},
|
|
1765
|
+
"steps": [
|
|
1766
|
+
{
|
|
1767
|
+
"event": "focus",
|
|
1768
|
+
"target": "cell:0,0"
|
|
1769
|
+
},
|
|
1770
|
+
{
|
|
1771
|
+
"event": "key",
|
|
1772
|
+
"key": "Control+End",
|
|
1773
|
+
"target": "cell:0,0"
|
|
1774
|
+
},
|
|
1775
|
+
{
|
|
1776
|
+
"expect": {
|
|
1777
|
+
"focus": "cell:0/6,0"
|
|
1778
|
+
}
|
|
1779
|
+
}
|
|
1780
|
+
],
|
|
1781
|
+
"notes": "With a cell focused, Control+End moves to the last row in the same column."
|
|
1782
|
+
},
|
|
1783
|
+
{
|
|
1784
|
+
"id": "treegrid.apg.enter-toggles-expansion-in-cells-only-mode",
|
|
1785
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1786
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Enter",
|
|
1787
|
+
"apg": "keyboard",
|
|
1788
|
+
"config": {
|
|
1789
|
+
"columns": 3,
|
|
1790
|
+
"rowFocus": "cells-only",
|
|
1791
|
+
"tree": [
|
|
1792
|
+
{
|
|
1793
|
+
"id": "m1",
|
|
1794
|
+
"label": "Treegrids are awesome",
|
|
1795
|
+
"children": [
|
|
1796
|
+
{
|
|
1797
|
+
"id": "m2",
|
|
1798
|
+
"label": "re: Treegrids are awesome"
|
|
1799
|
+
},
|
|
1800
|
+
{
|
|
1801
|
+
"id": "m3",
|
|
1802
|
+
"label": "re: Treegrids are awesome"
|
|
1803
|
+
},
|
|
1804
|
+
{
|
|
1805
|
+
"id": "m4",
|
|
1806
|
+
"label": "re: Treegrids are awesome"
|
|
1807
|
+
},
|
|
1808
|
+
{
|
|
1809
|
+
"id": "m5",
|
|
1810
|
+
"label": "re: Treegrids are awesome"
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
"id": "m6",
|
|
1814
|
+
"label": "re: Treegrids are awesome"
|
|
1815
|
+
},
|
|
1816
|
+
{
|
|
1817
|
+
"id": "m7",
|
|
1818
|
+
"label": "re: Treegrids are awesome"
|
|
1819
|
+
},
|
|
1820
|
+
{
|
|
1821
|
+
"id": "m8",
|
|
1822
|
+
"label": "re: Treegrids are awesome"
|
|
1823
|
+
}
|
|
1824
|
+
]
|
|
1825
|
+
}
|
|
1826
|
+
],
|
|
1827
|
+
"expanded": ["m1"]
|
|
1828
|
+
},
|
|
1829
|
+
"steps": [
|
|
1830
|
+
{
|
|
1831
|
+
"event": "focus",
|
|
1832
|
+
"target": "cell:0,0"
|
|
1833
|
+
},
|
|
1834
|
+
{
|
|
1835
|
+
"event": "key",
|
|
1836
|
+
"key": "Enter",
|
|
1837
|
+
"target": "cell:0,0"
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
"expect": {
|
|
1841
|
+
"attrs": {
|
|
1842
|
+
"cell:0,0": {
|
|
1843
|
+
"aria-expanded": "false"
|
|
1844
|
+
}
|
|
1845
|
+
}
|
|
1846
|
+
}
|
|
1847
|
+
}
|
|
1848
|
+
],
|
|
1849
|
+
"notes": "In cells-only focus, Enter on the first cell with aria-expanded toggles child rows."
|
|
1850
|
+
},
|
|
1851
|
+
{
|
|
1852
|
+
"id": "treegrid.apg.enter-performs-row-default-action",
|
|
1853
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
1854
|
+
"upstreamTest": "Email Inbox treegrid example > Keyboard Support > Enter",
|
|
1855
|
+
"apg": "keyboard",
|
|
1856
|
+
"config": {
|
|
1857
|
+
"columns": 3,
|
|
1858
|
+
"onAction": true,
|
|
1859
|
+
"tree": [
|
|
1860
|
+
{
|
|
1861
|
+
"id": "m1",
|
|
1862
|
+
"label": "Treegrids are awesome",
|
|
1863
|
+
"children": [
|
|
1864
|
+
{
|
|
1865
|
+
"id": "m2",
|
|
1866
|
+
"label": "re: Treegrids are awesome"
|
|
1867
|
+
},
|
|
1868
|
+
{
|
|
1869
|
+
"id": "m3",
|
|
1870
|
+
"label": "re: Treegrids are awesome"
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
"id": "m4",
|
|
1874
|
+
"label": "re: Treegrids are awesome"
|
|
1875
|
+
},
|
|
1876
|
+
{
|
|
1877
|
+
"id": "m5",
|
|
1878
|
+
"label": "re: Treegrids are awesome"
|
|
1879
|
+
},
|
|
1880
|
+
{
|
|
1881
|
+
"id": "m6",
|
|
1882
|
+
"label": "re: Treegrids are awesome"
|
|
1883
|
+
},
|
|
1884
|
+
{
|
|
1885
|
+
"id": "m7",
|
|
1886
|
+
"label": "re: Treegrids are awesome"
|
|
1887
|
+
},
|
|
1888
|
+
{
|
|
1889
|
+
"id": "m8",
|
|
1890
|
+
"label": "re: Treegrids are awesome"
|
|
1891
|
+
}
|
|
1892
|
+
]
|
|
1893
|
+
}
|
|
1894
|
+
],
|
|
1895
|
+
"expanded": ["m1"]
|
|
1896
|
+
},
|
|
1897
|
+
"steps": [
|
|
1898
|
+
{
|
|
1899
|
+
"event": "focus",
|
|
1900
|
+
"target": "row:0/0"
|
|
1901
|
+
},
|
|
1902
|
+
{
|
|
1903
|
+
"event": "key",
|
|
1904
|
+
"key": "Enter",
|
|
1905
|
+
"target": "row:0/0"
|
|
1906
|
+
},
|
|
1907
|
+
{
|
|
1908
|
+
"expect": {
|
|
1909
|
+
"events": {
|
|
1910
|
+
"onAction": ["m2"]
|
|
1911
|
+
}
|
|
1912
|
+
}
|
|
1913
|
+
}
|
|
1914
|
+
],
|
|
1915
|
+
"notes": "Enter on a row performs its default action."
|
|
1916
|
+
},
|
|
1917
|
+
{
|
|
1918
|
+
"id": "treegrid.apg.multi-select-rows-report-aria-selected",
|
|
1919
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
1920
|
+
"upstreamTest": "Treegrid Pattern > WAI-ARIA Roles, States, and Properties > multi-select aria-selected",
|
|
1921
|
+
"apg": "selection",
|
|
1922
|
+
"config": {
|
|
1923
|
+
"columns": 3,
|
|
1924
|
+
"selectionMode": "multiple",
|
|
1925
|
+
"tree": [
|
|
1926
|
+
{
|
|
1927
|
+
"id": "m1",
|
|
1928
|
+
"label": "Treegrids are awesome",
|
|
1929
|
+
"children": [
|
|
1930
|
+
{
|
|
1931
|
+
"id": "m2",
|
|
1932
|
+
"label": "re: Treegrids are awesome"
|
|
1933
|
+
},
|
|
1934
|
+
{
|
|
1935
|
+
"id": "m3",
|
|
1936
|
+
"label": "re: Treegrids are awesome"
|
|
1937
|
+
},
|
|
1938
|
+
{
|
|
1939
|
+
"id": "m4",
|
|
1940
|
+
"label": "re: Treegrids are awesome"
|
|
1941
|
+
},
|
|
1942
|
+
{
|
|
1943
|
+
"id": "m5",
|
|
1944
|
+
"label": "re: Treegrids are awesome"
|
|
1945
|
+
},
|
|
1946
|
+
{
|
|
1947
|
+
"id": "m6",
|
|
1948
|
+
"label": "re: Treegrids are awesome"
|
|
1949
|
+
},
|
|
1950
|
+
{
|
|
1951
|
+
"id": "m7",
|
|
1952
|
+
"label": "re: Treegrids are awesome"
|
|
1953
|
+
},
|
|
1954
|
+
{
|
|
1955
|
+
"id": "m8",
|
|
1956
|
+
"label": "re: Treegrids are awesome"
|
|
1957
|
+
}
|
|
1958
|
+
]
|
|
1959
|
+
}
|
|
1960
|
+
],
|
|
1961
|
+
"expanded": ["m1"]
|
|
1962
|
+
},
|
|
1963
|
+
"steps": [
|
|
1964
|
+
{
|
|
1965
|
+
"expect": {
|
|
1966
|
+
"attrs": {
|
|
1967
|
+
"treegrid": {
|
|
1968
|
+
"aria-multiselectable": "true"
|
|
1969
|
+
},
|
|
1970
|
+
"row:0": {
|
|
1971
|
+
"aria-selected": "false"
|
|
1972
|
+
},
|
|
1973
|
+
"row:0/0": {
|
|
1974
|
+
"aria-selected": "false"
|
|
1975
|
+
}
|
|
1976
|
+
}
|
|
1977
|
+
}
|
|
1978
|
+
},
|
|
1979
|
+
{
|
|
1980
|
+
"event": "click",
|
|
1981
|
+
"target": "row:0/0"
|
|
1982
|
+
},
|
|
1983
|
+
{
|
|
1984
|
+
"expect": {
|
|
1985
|
+
"attrs": {
|
|
1986
|
+
"row:0/0": {
|
|
1987
|
+
"aria-selected": "true"
|
|
1988
|
+
}
|
|
1989
|
+
},
|
|
1990
|
+
"events": {
|
|
1991
|
+
"onSelectionChange": ["m2"]
|
|
1992
|
+
}
|
|
1993
|
+
}
|
|
1994
|
+
}
|
|
1995
|
+
],
|
|
1996
|
+
"notes": "Multi-select treegrid marks all rows aria-selected; selected rows true."
|
|
1997
|
+
},
|
|
1998
|
+
{
|
|
1999
|
+
"id": "treegrid.apg.single-select-only-selected-row-has-aria-selected",
|
|
2000
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
2001
|
+
"upstreamTest": "Treegrid Pattern > WAI-ARIA Roles, States, and Properties > single-select aria-selected",
|
|
2002
|
+
"apg": "selection",
|
|
2003
|
+
"config": {
|
|
2004
|
+
"columns": 3,
|
|
2005
|
+
"selectionMode": "single",
|
|
2006
|
+
"tree": [
|
|
2007
|
+
{
|
|
2008
|
+
"id": "m1",
|
|
2009
|
+
"label": "Treegrids are awesome",
|
|
2010
|
+
"children": [
|
|
2011
|
+
{
|
|
2012
|
+
"id": "m2",
|
|
2013
|
+
"label": "re: Treegrids are awesome"
|
|
2014
|
+
},
|
|
2015
|
+
{
|
|
2016
|
+
"id": "m3",
|
|
2017
|
+
"label": "re: Treegrids are awesome"
|
|
2018
|
+
},
|
|
2019
|
+
{
|
|
2020
|
+
"id": "m4",
|
|
2021
|
+
"label": "re: Treegrids are awesome"
|
|
2022
|
+
},
|
|
2023
|
+
{
|
|
2024
|
+
"id": "m5",
|
|
2025
|
+
"label": "re: Treegrids are awesome"
|
|
2026
|
+
},
|
|
2027
|
+
{
|
|
2028
|
+
"id": "m6",
|
|
2029
|
+
"label": "re: Treegrids are awesome"
|
|
2030
|
+
},
|
|
2031
|
+
{
|
|
2032
|
+
"id": "m7",
|
|
2033
|
+
"label": "re: Treegrids are awesome"
|
|
2034
|
+
},
|
|
2035
|
+
{
|
|
2036
|
+
"id": "m8",
|
|
2037
|
+
"label": "re: Treegrids are awesome"
|
|
2038
|
+
}
|
|
2039
|
+
]
|
|
2040
|
+
}
|
|
2041
|
+
],
|
|
2042
|
+
"expanded": ["m1"]
|
|
2043
|
+
},
|
|
2044
|
+
"steps": [
|
|
2045
|
+
{
|
|
2046
|
+
"event": "click",
|
|
2047
|
+
"target": "row:0/0"
|
|
2048
|
+
},
|
|
2049
|
+
{
|
|
2050
|
+
"expect": {
|
|
2051
|
+
"attrs": {
|
|
2052
|
+
"row:0/0": {
|
|
2053
|
+
"aria-selected": "true"
|
|
2054
|
+
},
|
|
2055
|
+
"row:0/1": {
|
|
2056
|
+
"aria-selected": null
|
|
2057
|
+
}
|
|
2058
|
+
}
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
],
|
|
2062
|
+
"notes": "In single-select, aria-selected is present only on the selected row."
|
|
2063
|
+
},
|
|
2064
|
+
{
|
|
2065
|
+
"id": "treegrid.apg.focus-and-selection-are-independent",
|
|
2066
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
2067
|
+
"upstreamTest": "Treegrid Pattern > About This Pattern > focus vs selection",
|
|
2068
|
+
"apg": "selection",
|
|
2069
|
+
"config": {
|
|
2070
|
+
"columns": 3,
|
|
2071
|
+
"selectionMode": "multiple",
|
|
2072
|
+
"tree": [
|
|
2073
|
+
{
|
|
2074
|
+
"id": "m1",
|
|
2075
|
+
"label": "Treegrids are awesome",
|
|
2076
|
+
"children": [
|
|
2077
|
+
{
|
|
2078
|
+
"id": "m2",
|
|
2079
|
+
"label": "re: Treegrids are awesome"
|
|
2080
|
+
},
|
|
2081
|
+
{
|
|
2082
|
+
"id": "m3",
|
|
2083
|
+
"label": "re: Treegrids are awesome"
|
|
2084
|
+
},
|
|
2085
|
+
{
|
|
2086
|
+
"id": "m4",
|
|
2087
|
+
"label": "re: Treegrids are awesome"
|
|
2088
|
+
},
|
|
2089
|
+
{
|
|
2090
|
+
"id": "m5",
|
|
2091
|
+
"label": "re: Treegrids are awesome"
|
|
2092
|
+
},
|
|
2093
|
+
{
|
|
2094
|
+
"id": "m6",
|
|
2095
|
+
"label": "re: Treegrids are awesome"
|
|
2096
|
+
},
|
|
2097
|
+
{
|
|
2098
|
+
"id": "m7",
|
|
2099
|
+
"label": "re: Treegrids are awesome"
|
|
2100
|
+
},
|
|
2101
|
+
{
|
|
2102
|
+
"id": "m8",
|
|
2103
|
+
"label": "re: Treegrids are awesome"
|
|
2104
|
+
}
|
|
2105
|
+
]
|
|
2106
|
+
}
|
|
2107
|
+
],
|
|
2108
|
+
"expanded": ["m1"]
|
|
2109
|
+
},
|
|
2110
|
+
"steps": [
|
|
2111
|
+
{
|
|
2112
|
+
"event": "click",
|
|
2113
|
+
"target": "row:0"
|
|
2114
|
+
},
|
|
2115
|
+
{
|
|
2116
|
+
"event": "focus",
|
|
2117
|
+
"target": "row:0/2"
|
|
2118
|
+
},
|
|
2119
|
+
{
|
|
2120
|
+
"event": "key",
|
|
2121
|
+
"key": "ArrowDown",
|
|
2122
|
+
"target": "row:0/2"
|
|
2123
|
+
},
|
|
2124
|
+
{
|
|
2125
|
+
"expect": {
|
|
2126
|
+
"focus": "row:0/3",
|
|
2127
|
+
"attrs": {
|
|
2128
|
+
"row:0": {
|
|
2129
|
+
"aria-selected": "true"
|
|
2130
|
+
}
|
|
2131
|
+
}
|
|
2132
|
+
}
|
|
2133
|
+
}
|
|
2134
|
+
],
|
|
2135
|
+
"notes": "Moving focus does not change the selected row in a multi-select treegrid."
|
|
2136
|
+
},
|
|
2137
|
+
{
|
|
2138
|
+
"id": "treegrid.apg.shift-space-selects-focused-row",
|
|
2139
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
2140
|
+
"upstreamTest": "Treegrid Pattern > Keyboard Interaction > Shift + Space",
|
|
2141
|
+
"apg": "selection",
|
|
2142
|
+
"config": {
|
|
2143
|
+
"columns": 3,
|
|
2144
|
+
"selectionMode": "multiple",
|
|
2145
|
+
"tree": [
|
|
2146
|
+
{
|
|
2147
|
+
"id": "m1",
|
|
2148
|
+
"label": "Treegrids are awesome",
|
|
2149
|
+
"children": [
|
|
2150
|
+
{
|
|
2151
|
+
"id": "m2",
|
|
2152
|
+
"label": "re: Treegrids are awesome"
|
|
2153
|
+
},
|
|
2154
|
+
{
|
|
2155
|
+
"id": "m3",
|
|
2156
|
+
"label": "re: Treegrids are awesome"
|
|
2157
|
+
},
|
|
2158
|
+
{
|
|
2159
|
+
"id": "m4",
|
|
2160
|
+
"label": "re: Treegrids are awesome"
|
|
2161
|
+
},
|
|
2162
|
+
{
|
|
2163
|
+
"id": "m5",
|
|
2164
|
+
"label": "re: Treegrids are awesome"
|
|
2165
|
+
},
|
|
2166
|
+
{
|
|
2167
|
+
"id": "m6",
|
|
2168
|
+
"label": "re: Treegrids are awesome"
|
|
2169
|
+
},
|
|
2170
|
+
{
|
|
2171
|
+
"id": "m7",
|
|
2172
|
+
"label": "re: Treegrids are awesome"
|
|
2173
|
+
},
|
|
2174
|
+
{
|
|
2175
|
+
"id": "m8",
|
|
2176
|
+
"label": "re: Treegrids are awesome"
|
|
2177
|
+
}
|
|
2178
|
+
]
|
|
2179
|
+
}
|
|
2180
|
+
],
|
|
2181
|
+
"expanded": ["m1"]
|
|
2182
|
+
},
|
|
2183
|
+
"steps": [
|
|
2184
|
+
{
|
|
2185
|
+
"event": "focus",
|
|
2186
|
+
"target": "row:0/1"
|
|
2187
|
+
},
|
|
2188
|
+
{
|
|
2189
|
+
"event": "key",
|
|
2190
|
+
"key": "Shift+Space",
|
|
2191
|
+
"target": "row:0/1"
|
|
2192
|
+
},
|
|
2193
|
+
{
|
|
2194
|
+
"expect": {
|
|
2195
|
+
"attrs": {
|
|
2196
|
+
"row:0/1": {
|
|
2197
|
+
"aria-selected": "true"
|
|
2198
|
+
}
|
|
2199
|
+
},
|
|
2200
|
+
"events": {
|
|
2201
|
+
"onSelectionChange": ["m3"]
|
|
2202
|
+
}
|
|
2203
|
+
}
|
|
2204
|
+
}
|
|
2205
|
+
],
|
|
2206
|
+
"notes": "Shift+Space selects the row that contains focus."
|
|
2207
|
+
},
|
|
2208
|
+
{
|
|
2209
|
+
"id": "treegrid.apg.rows-first-mode-focuses-first-row",
|
|
2210
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
2211
|
+
"upstreamTest": "Email Inbox treegrid example > Example Usage Options > Rows are focused first",
|
|
2212
|
+
"apg": "keyboard",
|
|
2213
|
+
"config": {
|
|
2214
|
+
"columns": 3,
|
|
2215
|
+
"rowFocus": "rows-first",
|
|
2216
|
+
"tree": [
|
|
2217
|
+
{
|
|
2218
|
+
"id": "m1",
|
|
2219
|
+
"label": "Treegrids are awesome",
|
|
2220
|
+
"children": [
|
|
2221
|
+
{
|
|
2222
|
+
"id": "m2",
|
|
2223
|
+
"label": "re: Treegrids are awesome"
|
|
2224
|
+
},
|
|
2225
|
+
{
|
|
2226
|
+
"id": "m3",
|
|
2227
|
+
"label": "re: Treegrids are awesome"
|
|
2228
|
+
},
|
|
2229
|
+
{
|
|
2230
|
+
"id": "m4",
|
|
2231
|
+
"label": "re: Treegrids are awesome"
|
|
2232
|
+
},
|
|
2233
|
+
{
|
|
2234
|
+
"id": "m5",
|
|
2235
|
+
"label": "re: Treegrids are awesome"
|
|
2236
|
+
},
|
|
2237
|
+
{
|
|
2238
|
+
"id": "m6",
|
|
2239
|
+
"label": "re: Treegrids are awesome"
|
|
2240
|
+
},
|
|
2241
|
+
{
|
|
2242
|
+
"id": "m7",
|
|
2243
|
+
"label": "re: Treegrids are awesome"
|
|
2244
|
+
},
|
|
2245
|
+
{
|
|
2246
|
+
"id": "m8",
|
|
2247
|
+
"label": "re: Treegrids are awesome"
|
|
2248
|
+
}
|
|
2249
|
+
]
|
|
2250
|
+
}
|
|
2251
|
+
],
|
|
2252
|
+
"expanded": ["m1"]
|
|
2253
|
+
},
|
|
2254
|
+
"steps": [
|
|
2255
|
+
{
|
|
2256
|
+
"event": "key",
|
|
2257
|
+
"key": "Tab",
|
|
2258
|
+
"target": "document"
|
|
2259
|
+
},
|
|
2260
|
+
{
|
|
2261
|
+
"expect": {
|
|
2262
|
+
"focus": "row:0"
|
|
2263
|
+
}
|
|
2264
|
+
}
|
|
2265
|
+
],
|
|
2266
|
+
"notes": "Rows-first navigation puts initial focus on the first row."
|
|
2267
|
+
},
|
|
2268
|
+
{
|
|
2269
|
+
"id": "treegrid.apg.cells-first-mode-focuses-first-cell",
|
|
2270
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
2271
|
+
"upstreamTest": "Email Inbox treegrid example > Example Usage Options > Cells are focused first",
|
|
2272
|
+
"apg": "keyboard",
|
|
2273
|
+
"config": {
|
|
2274
|
+
"columns": 3,
|
|
2275
|
+
"rowFocus": "cells-first",
|
|
2276
|
+
"tree": [
|
|
2277
|
+
{
|
|
2278
|
+
"id": "m1",
|
|
2279
|
+
"label": "Treegrids are awesome",
|
|
2280
|
+
"children": [
|
|
2281
|
+
{
|
|
2282
|
+
"id": "m2",
|
|
2283
|
+
"label": "re: Treegrids are awesome"
|
|
2284
|
+
},
|
|
2285
|
+
{
|
|
2286
|
+
"id": "m3",
|
|
2287
|
+
"label": "re: Treegrids are awesome"
|
|
2288
|
+
},
|
|
2289
|
+
{
|
|
2290
|
+
"id": "m4",
|
|
2291
|
+
"label": "re: Treegrids are awesome"
|
|
2292
|
+
},
|
|
2293
|
+
{
|
|
2294
|
+
"id": "m5",
|
|
2295
|
+
"label": "re: Treegrids are awesome"
|
|
2296
|
+
},
|
|
2297
|
+
{
|
|
2298
|
+
"id": "m6",
|
|
2299
|
+
"label": "re: Treegrids are awesome"
|
|
2300
|
+
},
|
|
2301
|
+
{
|
|
2302
|
+
"id": "m7",
|
|
2303
|
+
"label": "re: Treegrids are awesome"
|
|
2304
|
+
},
|
|
2305
|
+
{
|
|
2306
|
+
"id": "m8",
|
|
2307
|
+
"label": "re: Treegrids are awesome"
|
|
2308
|
+
}
|
|
2309
|
+
]
|
|
2310
|
+
}
|
|
2311
|
+
],
|
|
2312
|
+
"expanded": ["m1"]
|
|
2313
|
+
},
|
|
2314
|
+
"steps": [
|
|
2315
|
+
{
|
|
2316
|
+
"event": "key",
|
|
2317
|
+
"key": "Tab",
|
|
2318
|
+
"target": "document"
|
|
2319
|
+
},
|
|
2320
|
+
{
|
|
2321
|
+
"expect": {
|
|
2322
|
+
"focus": "cell:0,0"
|
|
2323
|
+
}
|
|
2324
|
+
}
|
|
2325
|
+
],
|
|
2326
|
+
"notes": "Cells-first navigation puts initial focus on the first cell but rows remain focusable."
|
|
2327
|
+
},
|
|
2328
|
+
{
|
|
2329
|
+
"id": "treegrid.apg.cells-only-mode-does-not-focus-rows",
|
|
2330
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
2331
|
+
"upstreamTest": "Email Inbox treegrid example > Example Usage Options > Only cells can be focused",
|
|
2332
|
+
"apg": "keyboard",
|
|
2333
|
+
"config": {
|
|
2334
|
+
"columns": 3,
|
|
2335
|
+
"rowFocus": "cells-only",
|
|
2336
|
+
"tree": [
|
|
2337
|
+
{
|
|
2338
|
+
"id": "m1",
|
|
2339
|
+
"label": "Treegrids are awesome",
|
|
2340
|
+
"children": [
|
|
2341
|
+
{
|
|
2342
|
+
"id": "m2",
|
|
2343
|
+
"label": "re: Treegrids are awesome"
|
|
2344
|
+
},
|
|
2345
|
+
{
|
|
2346
|
+
"id": "m3",
|
|
2347
|
+
"label": "re: Treegrids are awesome"
|
|
2348
|
+
},
|
|
2349
|
+
{
|
|
2350
|
+
"id": "m4",
|
|
2351
|
+
"label": "re: Treegrids are awesome"
|
|
2352
|
+
},
|
|
2353
|
+
{
|
|
2354
|
+
"id": "m5",
|
|
2355
|
+
"label": "re: Treegrids are awesome"
|
|
2356
|
+
},
|
|
2357
|
+
{
|
|
2358
|
+
"id": "m6",
|
|
2359
|
+
"label": "re: Treegrids are awesome"
|
|
2360
|
+
},
|
|
2361
|
+
{
|
|
2362
|
+
"id": "m7",
|
|
2363
|
+
"label": "re: Treegrids are awesome"
|
|
2364
|
+
},
|
|
2365
|
+
{
|
|
2366
|
+
"id": "m8",
|
|
2367
|
+
"label": "re: Treegrids are awesome"
|
|
2368
|
+
}
|
|
2369
|
+
]
|
|
2370
|
+
}
|
|
2371
|
+
],
|
|
2372
|
+
"expanded": ["m1"]
|
|
2373
|
+
},
|
|
2374
|
+
"steps": [
|
|
2375
|
+
{
|
|
2376
|
+
"event": "key",
|
|
2377
|
+
"key": "Tab",
|
|
2378
|
+
"target": "document"
|
|
2379
|
+
},
|
|
2380
|
+
{
|
|
2381
|
+
"expect": {
|
|
2382
|
+
"focus": "cell:0,0"
|
|
2383
|
+
}
|
|
2384
|
+
},
|
|
2385
|
+
{
|
|
2386
|
+
"event": "key",
|
|
2387
|
+
"key": "ArrowLeft",
|
|
2388
|
+
"target": "cell:0,0"
|
|
2389
|
+
},
|
|
2390
|
+
{
|
|
2391
|
+
"expect": {
|
|
2392
|
+
"focus": "cell:0,0"
|
|
2393
|
+
}
|
|
2394
|
+
}
|
|
2395
|
+
],
|
|
2396
|
+
"notes": "In cells-only mode, Left Arrow on the first cell does not move focus to the row."
|
|
2397
|
+
},
|
|
2398
|
+
{
|
|
2399
|
+
"id": "treegrid.apg.cells-only-mode-expanded-state-on-first-cell",
|
|
2400
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
2401
|
+
"upstreamTest": "Email Inbox treegrid example > Role, Property, State, and Tabindex Attributes > aria-expanded",
|
|
2402
|
+
"apg": "aria",
|
|
2403
|
+
"config": {
|
|
2404
|
+
"columns": 3,
|
|
2405
|
+
"rowFocus": "cells-only",
|
|
2406
|
+
"tree": [
|
|
2407
|
+
{
|
|
2408
|
+
"id": "m1",
|
|
2409
|
+
"label": "Treegrids are awesome",
|
|
2410
|
+
"children": [
|
|
2411
|
+
{
|
|
2412
|
+
"id": "m2",
|
|
2413
|
+
"label": "re: Treegrids are awesome"
|
|
2414
|
+
},
|
|
2415
|
+
{
|
|
2416
|
+
"id": "m3",
|
|
2417
|
+
"label": "re: Treegrids are awesome"
|
|
2418
|
+
},
|
|
2419
|
+
{
|
|
2420
|
+
"id": "m4",
|
|
2421
|
+
"label": "re: Treegrids are awesome"
|
|
2422
|
+
},
|
|
2423
|
+
{
|
|
2424
|
+
"id": "m5",
|
|
2425
|
+
"label": "re: Treegrids are awesome"
|
|
2426
|
+
},
|
|
2427
|
+
{
|
|
2428
|
+
"id": "m6",
|
|
2429
|
+
"label": "re: Treegrids are awesome"
|
|
2430
|
+
},
|
|
2431
|
+
{
|
|
2432
|
+
"id": "m7",
|
|
2433
|
+
"label": "re: Treegrids are awesome"
|
|
2434
|
+
},
|
|
2435
|
+
{
|
|
2436
|
+
"id": "m8",
|
|
2437
|
+
"label": "re: Treegrids are awesome"
|
|
2438
|
+
}
|
|
2439
|
+
]
|
|
2440
|
+
}
|
|
2441
|
+
],
|
|
2442
|
+
"expanded": ["m1"]
|
|
2443
|
+
},
|
|
2444
|
+
"steps": [
|
|
2445
|
+
{
|
|
2446
|
+
"expect": {
|
|
2447
|
+
"attrs": {
|
|
2448
|
+
"cell:0,0": {
|
|
2449
|
+
"aria-expanded": "true"
|
|
2450
|
+
},
|
|
2451
|
+
"row:0": {
|
|
2452
|
+
"aria-expanded": null
|
|
2453
|
+
}
|
|
2454
|
+
}
|
|
2455
|
+
}
|
|
2456
|
+
}
|
|
2457
|
+
],
|
|
2458
|
+
"notes": "In cells-only mode aria-expanded lives on the first cell, not the row."
|
|
2459
|
+
},
|
|
2460
|
+
{
|
|
2461
|
+
"id": "treegrid.apg.version-tag-grants-tabindex-only-one-element",
|
|
2462
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
2463
|
+
"upstreamTest": "Email Inbox treegrid example > roving tabindex > single tabindex=0",
|
|
2464
|
+
"apg": "keyboard",
|
|
2465
|
+
"config": {
|
|
2466
|
+
"columns": 3,
|
|
2467
|
+
"tree": [
|
|
2468
|
+
{
|
|
2469
|
+
"id": "m1",
|
|
2470
|
+
"label": "Treegrids are awesome",
|
|
2471
|
+
"children": [
|
|
2472
|
+
{
|
|
2473
|
+
"id": "m2",
|
|
2474
|
+
"label": "re: Treegrids are awesome"
|
|
2475
|
+
},
|
|
2476
|
+
{
|
|
2477
|
+
"id": "m3",
|
|
2478
|
+
"label": "re: Treegrids are awesome"
|
|
2479
|
+
},
|
|
2480
|
+
{
|
|
2481
|
+
"id": "m4",
|
|
2482
|
+
"label": "re: Treegrids are awesome"
|
|
2483
|
+
},
|
|
2484
|
+
{
|
|
2485
|
+
"id": "m5",
|
|
2486
|
+
"label": "re: Treegrids are awesome"
|
|
2487
|
+
},
|
|
2488
|
+
{
|
|
2489
|
+
"id": "m6",
|
|
2490
|
+
"label": "re: Treegrids are awesome"
|
|
2491
|
+
},
|
|
2492
|
+
{
|
|
2493
|
+
"id": "m7",
|
|
2494
|
+
"label": "re: Treegrids are awesome"
|
|
2495
|
+
},
|
|
2496
|
+
{
|
|
2497
|
+
"id": "m8",
|
|
2498
|
+
"label": "re: Treegrids are awesome"
|
|
2499
|
+
}
|
|
2500
|
+
]
|
|
2501
|
+
}
|
|
2502
|
+
],
|
|
2503
|
+
"expanded": ["m1"]
|
|
2504
|
+
},
|
|
2505
|
+
"steps": [
|
|
2506
|
+
{
|
|
2507
|
+
"event": "focus",
|
|
2508
|
+
"target": "row:0/2"
|
|
2509
|
+
},
|
|
2510
|
+
{
|
|
2511
|
+
"expect": {
|
|
2512
|
+
"attrs": {
|
|
2513
|
+
"row:0/2": {
|
|
2514
|
+
"tabindex": "0"
|
|
2515
|
+
},
|
|
2516
|
+
"row:0": {
|
|
2517
|
+
"tabindex": "-1"
|
|
2518
|
+
}
|
|
2519
|
+
}
|
|
2520
|
+
}
|
|
2521
|
+
}
|
|
2522
|
+
],
|
|
2523
|
+
"notes": "Roving tabindex moves the single tabindex=0 to the focused row."
|
|
2524
|
+
}
|
|
2525
|
+
],
|
|
2526
|
+
"skipped": [
|
|
2527
|
+
{
|
|
2528
|
+
"id": "treegrid.apg.styling-of-expanded-state",
|
|
2529
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/",
|
|
2530
|
+
"upstreamTest": "Email Inbox treegrid example > cursor/background styling",
|
|
2531
|
+
"reason": "Visual styling (CSS attribute selectors) is out of scope."
|
|
2532
|
+
},
|
|
2533
|
+
{
|
|
2534
|
+
"id": "treegrid.apg.control-space-and-control-a-selection",
|
|
2535
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
2536
|
+
"upstreamTest": "Treegrid Pattern > Control + Space / Control + A",
|
|
2537
|
+
"reason": "Cell/column selection model not implemented by the ported sources; deferred."
|
|
2538
|
+
},
|
|
2539
|
+
{
|
|
2540
|
+
"id": "treegrid.apg.shift-arrow-extends-selection",
|
|
2541
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
2542
|
+
"upstreamTest": "Treegrid Pattern > Shift + Arrow selection",
|
|
2543
|
+
"reason": "Range selection across cells/rows; not implemented by the ported sources."
|
|
2544
|
+
},
|
|
2545
|
+
{
|
|
2546
|
+
"id": "treegrid.apg.page-down-page-up",
|
|
2547
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
2548
|
+
"upstreamTest": "Treegrid Pattern > Page Down / Page Up",
|
|
2549
|
+
"reason": "Author-determined scroll distance; not covered by the email-inbox example."
|
|
2550
|
+
},
|
|
2551
|
+
{
|
|
2552
|
+
"id": "treegrid.apg.sorting-and-editing-attributes",
|
|
2553
|
+
"upstream": "https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/",
|
|
2554
|
+
"upstreamTest": "Treegrid Pattern > aria-sort / aria-readonly / aria-colcount",
|
|
2555
|
+
"reason": "Sorting and content editing are optional treegrid features; not exercised here."
|
|
2556
|
+
}
|
|
2557
|
+
]
|
|
2558
|
+
}
|