@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,186 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pattern": "link",
|
|
3
|
+
"source": "react-aria",
|
|
4
|
+
"commit": "99e610236887da619ad9d54a1cd87983166c043d",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"skipped": [
|
|
7
|
+
{ "reason": "Link > should render a link with default class" },
|
|
8
|
+
{ "reason": "Link > should render a link with custom class" },
|
|
9
|
+
{ "reason": "Link > should support DOM props" },
|
|
10
|
+
{ "reason": "Link > should support id prop" },
|
|
11
|
+
{ "reason": "Link > should support render props" },
|
|
12
|
+
{ "reason": "Link > should support custom render function" },
|
|
13
|
+
{ "reason": "Link > should support hover" },
|
|
14
|
+
{ "reason": "Link > should support focus ring" },
|
|
15
|
+
{ "reason": "Link > should support press state" },
|
|
16
|
+
{ "reason": "Link > should support slot" },
|
|
17
|
+
{ "reason": "Link > should work with RouterProvider" },
|
|
18
|
+
{ "reason": "@adobe Link > supports UNSAFE_className" },
|
|
19
|
+
{ "reason": "@adobe Link > supports autofocus" },
|
|
20
|
+
{ "reason": "@adobe Link > supports a wrapping tooltip trigger" }
|
|
21
|
+
],
|
|
22
|
+
"scenarios": [
|
|
23
|
+
{
|
|
24
|
+
"id": "link.react-aria.native-anchor-needs-no-role",
|
|
25
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria/test/link/useLink.test.js#L23",
|
|
26
|
+
"upstreamTest": "useLink > handles defaults",
|
|
27
|
+
"apg": "aria",
|
|
28
|
+
"config": { "native": true },
|
|
29
|
+
"steps": [
|
|
30
|
+
{
|
|
31
|
+
"expect": {
|
|
32
|
+
"attrs": { "link": { "role": null } },
|
|
33
|
+
"focus": null
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"notes": "A native <a href> is focusable and activatable on its own; onKeyDown is still attached for react-aria press handling."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "link.react-aria.custom-element-gets-role-link",
|
|
41
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria/test/link/useLink.test.js#L30",
|
|
42
|
+
"upstreamTest": "useLink > handles custom element type",
|
|
43
|
+
"apg": "aria",
|
|
44
|
+
"config": { "elementType": "div" },
|
|
45
|
+
"steps": [
|
|
46
|
+
{
|
|
47
|
+
"expect": {
|
|
48
|
+
"attrs": { "link": { "role": "link" } }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "link.react-aria.custom-element-is-tabbable",
|
|
55
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria/test/link/useLink.test.js#L30",
|
|
56
|
+
"upstreamTest": "useLink > handles custom element type",
|
|
57
|
+
"apg": "aria",
|
|
58
|
+
"config": { "elementType": "div" },
|
|
59
|
+
"steps": [
|
|
60
|
+
{ "event": "focus", "target": "link" },
|
|
61
|
+
{ "expect": { "focus": "link" } }
|
|
62
|
+
],
|
|
63
|
+
"notes": "The custom element must supply focusability itself (tabindex=0); the hook only adds role and the Enter handler."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "link.react-aria.disabled-custom-link",
|
|
67
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria/test/link/useLink.test.js#L36",
|
|
68
|
+
"upstreamTest": "useLink > handles isDisabled",
|
|
69
|
+
"apg": "aria",
|
|
70
|
+
"config": { "elementType": "span", "isDisabled": true },
|
|
71
|
+
"steps": [
|
|
72
|
+
{
|
|
73
|
+
"expect": {
|
|
74
|
+
"attrs": { "link": { "role": "link", "aria-disabled": "true" } },
|
|
75
|
+
"focus": null
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"notes": "A disabled link role is removed from the tab order and marked aria-disabled."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "link.react-aria.accessible-props-passed-through",
|
|
83
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Link.test.js#L51",
|
|
84
|
+
"upstreamTest": "Link > should support accessibility props",
|
|
85
|
+
"apg": "aria",
|
|
86
|
+
"config": {},
|
|
87
|
+
"steps": [
|
|
88
|
+
{
|
|
89
|
+
"expect": {
|
|
90
|
+
"attrs": { "link": { "aria-current": "page" } }
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "link.react-aria.href-renders-anchor",
|
|
97
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Link.test.js#L92",
|
|
98
|
+
"upstreamTest": "Link > should render a link with <a> element",
|
|
99
|
+
"apg": "aria",
|
|
100
|
+
"config": { "href": "test" },
|
|
101
|
+
"steps": [
|
|
102
|
+
{
|
|
103
|
+
"expect": {
|
|
104
|
+
"attrs": { "link": { "role": null } }
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"notes": "With href the component renders a native anchor; the role query still resolves to a link."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "link.react-aria.disabled-link-aria-disabled",
|
|
112
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Link.test.js#L189",
|
|
113
|
+
"upstreamTest": "Link > should support disabled state",
|
|
114
|
+
"apg": "aria",
|
|
115
|
+
"config": { "isDisabled": true },
|
|
116
|
+
"steps": [
|
|
117
|
+
{
|
|
118
|
+
"expect": {
|
|
119
|
+
"attrs": { "link": { "aria-disabled": "true" } }
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"id": "link.react-aria.enabled-link-navigates-on-click",
|
|
126
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Link.test.js#L201",
|
|
127
|
+
"upstreamTest": "Link > should work with RouterProvider",
|
|
128
|
+
"apg": "extension",
|
|
129
|
+
"config": { "href": "/foo" },
|
|
130
|
+
"steps": [
|
|
131
|
+
{ "event": "key", "key": "Enter", "target": "link" },
|
|
132
|
+
{ "expect": { "events": { "onNavigate": ["/foo"] } } }
|
|
133
|
+
],
|
|
134
|
+
"notes": "Router integration: activation runs the supplied navigate callback with the href."
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "link.react-aria.disabled-link-does-not-navigate",
|
|
138
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Link.test.js#L217",
|
|
139
|
+
"upstreamTest": "Link > should not navigate if disabled",
|
|
140
|
+
"apg": "aria",
|
|
141
|
+
"config": { "href": "/foo", "isDisabled": true },
|
|
142
|
+
"steps": [
|
|
143
|
+
{ "event": "key", "key": "Enter", "target": "link" },
|
|
144
|
+
{ "expect": { "events": { "onNavigate": [] } } }
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"id": "link.react-aria.adobe-string-wraps-in-tabbable-span",
|
|
149
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/@adobe/react-spectrum/test/link/Link.test.js#L60",
|
|
150
|
+
"upstreamTest": "Link > Wraps string to span",
|
|
151
|
+
"apg": "aria",
|
|
152
|
+
"config": {},
|
|
153
|
+
"steps": [
|
|
154
|
+
{ "event": "focus", "target": "link" },
|
|
155
|
+
{ "expect": { "focus": "link" } }
|
|
156
|
+
],
|
|
157
|
+
"notes": "Without href the link is rendered as a span with tabindex=0."
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"id": "link.react-aria.adobe-href-renders-anchor",
|
|
161
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/@adobe/react-spectrum/test/link/Link.test.js#L68",
|
|
162
|
+
"upstreamTest": "Link > supports href",
|
|
163
|
+
"apg": "aria",
|
|
164
|
+
"config": { "href": "https://adobe.com" },
|
|
165
|
+
"steps": [
|
|
166
|
+
{
|
|
167
|
+
"expect": {
|
|
168
|
+
"attrs": { "link": { "role": null } }
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"id": "link.react-aria.adobe-press-fires-on-activation",
|
|
175
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/@adobe/react-spectrum/test/link/Link.test.js#L40",
|
|
176
|
+
"upstreamTest": "Link > Link handles defaults",
|
|
177
|
+
"apg": "keyboard",
|
|
178
|
+
"config": {},
|
|
179
|
+
"steps": [
|
|
180
|
+
{ "event": "click", "target": "link" },
|
|
181
|
+
{ "expect": { "events": { "onPress": ["link"] } } }
|
|
182
|
+
],
|
|
183
|
+
"notes": "Pointer activation fires onPress once."
|
|
184
|
+
}
|
|
185
|
+
]
|
|
186
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pattern": "listbox",
|
|
3
|
+
"source": "ariakit",
|
|
4
|
+
"commit": "404c72257b879569feb08465da4ff9915fd873da",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"skipped": [
|
|
7
|
+
{
|
|
8
|
+
"reason": "no standalone Listbox implementation exists in this checkout: ariakit exposes option/listbox semantics only through Select (and Combobox, which reuses the select popover). The scenarios below port the typeahead behaviour of that popup list."
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"reason": "typeahead updates the value for late unmounted items and for late renderer items (combobox-select-typeahead): these exercise React store item (re)registration after async load, not a listbox interaction primitive; the listbox-visible part is already covered by the open/closed typeahead scenarios."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"reason": "composite typeahead buffer scoping across two Composite instances (composite-typeahead-buffer): upstream renders two independent Composite button groups and addresses options within the second instance; the scenario target syntax has no way to address options inside a second listbox, so the isolation property is not restated here."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"reason": "typeahead matching against arbitrary custom React content while closed (the fixture renders flags inside each option) and the Combobox half of the shared fixture (this file is scoped to the Select popup list)."
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"scenarios": [
|
|
21
|
+
{
|
|
22
|
+
"id": "listbox.ariakit.typeahead-matches-content-skips-empty",
|
|
23
|
+
"upstream": "https://github.com/ariakit/ariakit/blob/404c72257b879569feb08465da4ff9915fd873da/app/src/sandbox/combobox-select-typeahead/test.ts#L32",
|
|
24
|
+
"upstreamTest": "matches custom item content and skips empty text while open",
|
|
25
|
+
"apg": "extension",
|
|
26
|
+
"config": {
|
|
27
|
+
"items": ["Brazil", "Citrus", "Canada", "Japan", "Mexico"],
|
|
28
|
+
"selectionMode": "single",
|
|
29
|
+
"defaultValue": "Brazil",
|
|
30
|
+
"typeaheadText": { "Citrus": "" }
|
|
31
|
+
},
|
|
32
|
+
"steps": [
|
|
33
|
+
{ "event": "click", "target": "trigger:0" },
|
|
34
|
+
{ "expect": { "focus": "option:0" } },
|
|
35
|
+
{ "event": "type", "text": "c", "target": "listbox" },
|
|
36
|
+
{ "expect": { "focus": "option:2" } }
|
|
37
|
+
],
|
|
38
|
+
"notes": "Matches against each option's typeahead text, not its visible text: Citrus has an empty typeahead text so 'c' lands on Canada (index 2) instead of the first c-option. ariakit tracks a data-active-item; mapped here to the active/focused option."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "listbox.ariakit.typeahead-uses-alias-text",
|
|
42
|
+
"upstream": "https://github.com/ariakit/ariakit/blob/404c72257b879569feb08465da4ff9915fd873da/app/src/sandbox/combobox-select-typeahead/test.ts#L53",
|
|
43
|
+
"upstreamTest": "updates custom item text",
|
|
44
|
+
"apg": "extension",
|
|
45
|
+
"config": {
|
|
46
|
+
"items": ["Brazil", "Citrus", "Canada", "Japan", "Mexico"],
|
|
47
|
+
"selectionMode": "single",
|
|
48
|
+
"defaultValue": "Brazil",
|
|
49
|
+
"typeaheadText": { "Citrus": "", "Canada": "Dominion" }
|
|
50
|
+
},
|
|
51
|
+
"steps": [
|
|
52
|
+
{ "event": "click", "target": "trigger:0" },
|
|
53
|
+
{ "event": "type", "text": "d", "target": "listbox" },
|
|
54
|
+
{ "expect": { "focus": "option:2" } }
|
|
55
|
+
],
|
|
56
|
+
"notes": "Typeahead text can differ from the rendered label (Canada matches the alias 'Dominion')."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "listbox.ariakit.typeahead-matches-while-closed",
|
|
60
|
+
"upstream": "https://github.com/ariakit/ariakit/blob/404c72257b879569feb08465da4ff9915fd873da/app/src/sandbox/combobox-select-typeahead/test.ts#L43",
|
|
61
|
+
"upstreamTest": "matches custom item content while closed",
|
|
62
|
+
"apg": "extension",
|
|
63
|
+
"config": {
|
|
64
|
+
"items": ["Brazil", "Citrus", "Canada", "Japan", "Mexico"],
|
|
65
|
+
"selectionMode": "single",
|
|
66
|
+
"defaultValue": "Brazil",
|
|
67
|
+
"open": false,
|
|
68
|
+
"typeaheadText": { "Citrus": "" }
|
|
69
|
+
},
|
|
70
|
+
"steps": [
|
|
71
|
+
{ "event": "focus", "target": "trigger:0" },
|
|
72
|
+
{ "event": "type", "text": "c", "target": "trigger:0" },
|
|
73
|
+
{ "expect": { "visible": [], "value": { "trigger:0": "Canada" } } }
|
|
74
|
+
],
|
|
75
|
+
"notes": "Typeahead on the closed trigger immediately updates the displayed value to the match and does not open the listbox."
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pattern": "listbox",
|
|
3
|
+
"source": "base-ui",
|
|
4
|
+
"commit": "19511bb171f3b360b006c94cf6d07e53cb446505",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"skipped": [
|
|
7
|
+
{
|
|
8
|
+
"reason": "no standalone Listbox component exists in this checkout: Base UI renders role=listbox/option inside Select (and reuses it for Combobox and Autocomplete), so the scenarios below port only the list/option-level behaviour that is independent of the trigger."
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"reason": "trigger/popup lifecycle and positioning: defaultOpen, open/close transitions, modal, finalFocus, scroll arrows, positioner sizing, RTL alignment (SelectRoot/SelectPopup tests)"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"reason": "value/form plumbing: defaultValue, controlled value, itemToStringValue/Label, hidden inputs, validation, dirty/touched/filled field state, browser autofill"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"reason": "Base UI style hooks: data-highlighted / data-selected / data-disabled attribute assertions as styling contracts (conformance suites) and generic data attribute forwarding"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"reason": "grouping and reordering of items, grouped selection bookkeeping, and the index-guessing regression (SelectItem tests)"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"reason": "drag-to-select and opening-delay pointer timing matrices (SelectItem tests)"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"reason": "Select.List conformance and Separator orientation (SelectList/ListboxSeparator tests): the list container conforms to a div ref and the separator only asserts role=presentation, neither is an option/listbox interaction"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"scenarios": [
|
|
30
|
+
{
|
|
31
|
+
"id": "listbox.base-ui.arrow-keys-focus-options",
|
|
32
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/select/item/SelectItem.test.tsx#L152",
|
|
33
|
+
"upstreamTest": "navigating with keyboard should focus item",
|
|
34
|
+
"apg": "keyboard",
|
|
35
|
+
"config": {
|
|
36
|
+
"items": ["one", "two", "three"],
|
|
37
|
+
"open": true,
|
|
38
|
+
"selectionMode": "single"
|
|
39
|
+
},
|
|
40
|
+
"steps": [
|
|
41
|
+
{ "expect": { "focus": "option:0" } },
|
|
42
|
+
{ "event": "key", "key": "ArrowDown", "target": "option:0" },
|
|
43
|
+
{ "expect": { "focus": "option:1" } },
|
|
44
|
+
{ "event": "key", "key": "ArrowDown", "target": "option:1" },
|
|
45
|
+
{ "expect": { "focus": "option:2" } }
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "listbox.base-ui.enter-selects-highlighted-option",
|
|
50
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/select/item/SelectItem.test.tsx#L191",
|
|
51
|
+
"upstreamTest": "should select item when Enter key is pressed",
|
|
52
|
+
"apg": "selection",
|
|
53
|
+
"config": {
|
|
54
|
+
"items": ["one", "two"],
|
|
55
|
+
"open": true,
|
|
56
|
+
"selectionMode": "single"
|
|
57
|
+
},
|
|
58
|
+
"steps": [
|
|
59
|
+
{ "event": "key", "key": "ArrowDown", "target": "option:0" },
|
|
60
|
+
{ "expect": { "focus": "option:1" } },
|
|
61
|
+
{ "event": "key", "key": "Enter", "target": "option:1" },
|
|
62
|
+
{
|
|
63
|
+
"expect": {
|
|
64
|
+
"value": { "trigger:0": "two" },
|
|
65
|
+
"visible": [],
|
|
66
|
+
"events": { "onValueChange": ["two"] }
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "listbox.base-ui.click-selects-and-closes",
|
|
73
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/select/item/SelectItem.test.tsx#L120",
|
|
74
|
+
"upstreamTest": "should select the item and close popup when clicked",
|
|
75
|
+
"apg": "selection",
|
|
76
|
+
"config": { "items": ["one"], "open": true, "selectionMode": "single" },
|
|
77
|
+
"steps": [
|
|
78
|
+
{ "event": "click", "target": "option:0" },
|
|
79
|
+
{
|
|
80
|
+
"expect": {
|
|
81
|
+
"value": { "trigger:0": "one" },
|
|
82
|
+
"visible": [],
|
|
83
|
+
"events": { "onValueChange": ["one"] }
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "listbox.base-ui.disabled-option-focusable",
|
|
90
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/select/item/SelectItem.test.tsx#L220",
|
|
91
|
+
"upstreamTest": "should focus disabled items",
|
|
92
|
+
"apg": "aria",
|
|
93
|
+
"config": { "items": ["two"], "open": true, "disabledKeys": ["two"] },
|
|
94
|
+
"steps": [
|
|
95
|
+
{ "event": "focus", "target": "option:0" },
|
|
96
|
+
{
|
|
97
|
+
"expect": {
|
|
98
|
+
"focus": "option:0",
|
|
99
|
+
"attrs": { "option:0": { "aria-disabled": "true" } }
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"notes": "Base UI keeps disabled options focusable (aria-disabled, not disabled); they just cannot be selected."
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": "listbox.base-ui.disabled-option-not-selectable",
|
|
107
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/select/item/SelectItem.test.tsx#L245",
|
|
108
|
+
"upstreamTest": "should not select disabled item",
|
|
109
|
+
"apg": "selection",
|
|
110
|
+
"config": {
|
|
111
|
+
"items": ["one", "two"],
|
|
112
|
+
"open": true,
|
|
113
|
+
"selectionMode": "single",
|
|
114
|
+
"disabledKeys": ["two"]
|
|
115
|
+
},
|
|
116
|
+
"steps": [
|
|
117
|
+
{ "event": "click", "target": "option:1" },
|
|
118
|
+
{ "expect": { "value": { "trigger:0": "" }, "events": {} } }
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "listbox.base-ui.focus-selected-option-on-open",
|
|
123
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/select/item/SelectItem.test.tsx#L444",
|
|
124
|
+
"upstreamTest": "should focus the selected item upon opening the popup",
|
|
125
|
+
"apg": "focus",
|
|
126
|
+
"config": {
|
|
127
|
+
"items": ["one", "two", "three"],
|
|
128
|
+
"selectionMode": "single",
|
|
129
|
+
"defaultValue": "three"
|
|
130
|
+
},
|
|
131
|
+
"steps": [
|
|
132
|
+
{ "event": "click", "target": "trigger:0" },
|
|
133
|
+
{ "event": "click", "target": "option:2" },
|
|
134
|
+
{ "expect": { "value": { "trigger:0": "three" } } },
|
|
135
|
+
{ "event": "click", "target": "trigger:0" },
|
|
136
|
+
{ "expect": { "focus": "option:2" } }
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"id": "listbox.base-ui.hover-highlights-option",
|
|
141
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/select/item/SelectItem.test.tsx#L362",
|
|
142
|
+
"upstreamTest": "should highlight a hovered item and commit it with a mouse click",
|
|
143
|
+
"apg": "pointer",
|
|
144
|
+
"config": {
|
|
145
|
+
"items": ["one", "two", "three"],
|
|
146
|
+
"open": true,
|
|
147
|
+
"selectionMode": "single"
|
|
148
|
+
},
|
|
149
|
+
"steps": [
|
|
150
|
+
{ "event": "hover", "target": "option:1" },
|
|
151
|
+
{ "expect": { "focus": "option:1" } },
|
|
152
|
+
{ "event": "click", "target": "option:1" },
|
|
153
|
+
{
|
|
154
|
+
"expect": {
|
|
155
|
+
"value": { "trigger:0": "two" },
|
|
156
|
+
"events": { "onValueChange": ["two"] }
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
"notes": "Base UI moves the active option with pointer hover (aria-activedescendant / data-highlighted); mapped here to the active/focused option."
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|