@cssints/apg-specs 0.0.0-stage → 0.5.2
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,845 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pattern": "combobox",
|
|
3
|
+
"source": "react-aria",
|
|
4
|
+
"commit": "99e610236887da619ad9d54a1cd87983166c043d",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"scenarios": [
|
|
7
|
+
{
|
|
8
|
+
"id": "combobox.react-aria.input-role-and-autocomplete",
|
|
9
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria/test/combobox/useComboBox.test.js#L81",
|
|
10
|
+
"upstreamTest": "useComboBox > should return default props for all the button group elements",
|
|
11
|
+
"apg": "aria",
|
|
12
|
+
"config": { "items": ["Cat", "Dog", "Kangaroo"] },
|
|
13
|
+
"steps": [
|
|
14
|
+
{
|
|
15
|
+
"expect": {
|
|
16
|
+
"attrs": {
|
|
17
|
+
"input": {
|
|
18
|
+
"role": "combobox",
|
|
19
|
+
"aria-autocomplete": "list",
|
|
20
|
+
"aria-controls": null,
|
|
21
|
+
"aria-activedescendant": null
|
|
22
|
+
},
|
|
23
|
+
"trigger": { "aria-haspopup": "true", "aria-expanded": null }
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"notes": "The input is the combobox; aria-controls and aria-activedescendant appear only while open. The trigger is a button excluded from the tab order with aria-haspopup."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "combobox.react-aria.open-and-select-option-by-pointer",
|
|
32
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L69",
|
|
33
|
+
"upstreamTest": "ComboBox > provides slots",
|
|
34
|
+
"apg": "aria",
|
|
35
|
+
"config": {
|
|
36
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
37
|
+
"defaultInputValue": "C"
|
|
38
|
+
},
|
|
39
|
+
"steps": [
|
|
40
|
+
{ "expect": { "value": "C" } },
|
|
41
|
+
{ "event": "click", "target": "trigger" },
|
|
42
|
+
{
|
|
43
|
+
"expect": {
|
|
44
|
+
"visible": ["popup", "option:0", "option:1", "option:2"],
|
|
45
|
+
"attrs": { "popup": { "role": "listbox" } }
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{ "event": "click", "target": "option:1" },
|
|
49
|
+
{ "expect": { "value": "Dog", "visible": [] } }
|
|
50
|
+
],
|
|
51
|
+
"notes": "aria-labelledby/aria-describedby wiring is asserted upstream but depends on generated ids; only the labelled listbox and option selection are restated."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "combobox.react-aria.filtering-sections",
|
|
55
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L136",
|
|
56
|
+
"upstreamTest": "ComboBox > should support filtering sections",
|
|
57
|
+
"apg": "aria",
|
|
58
|
+
"config": {
|
|
59
|
+
"items": ["Apple", "Banana", "Cabbage", "Broccoli"],
|
|
60
|
+
"sections": {
|
|
61
|
+
"Fruit": ["Apple", "Banana"],
|
|
62
|
+
"Vegetable": ["Cabbage", "Broccoli"]
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"steps": [
|
|
66
|
+
{ "event": "focus", "target": "input" },
|
|
67
|
+
{ "event": "type", "text": "p", "target": "input" },
|
|
68
|
+
{
|
|
69
|
+
"expect": {
|
|
70
|
+
"visible": ["popup", "option:0"],
|
|
71
|
+
"attrs": { "option:0": { "aria-selected": "false" } }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"notes": "Only the section holding a match is rendered; the surviving option is Apple."
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "combobox.react-aria.dynamic-collection-filter",
|
|
79
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L216",
|
|
80
|
+
"upstreamTest": "ComboBox > should support dynamic collections",
|
|
81
|
+
"apg": "aria",
|
|
82
|
+
"config": { "items": ["Cat", "Dog", "Kangaroo"], "dynamicItems": true },
|
|
83
|
+
"steps": [
|
|
84
|
+
{ "event": "focus", "target": "input" },
|
|
85
|
+
{ "event": "type", "text": "c", "target": "input" },
|
|
86
|
+
{ "expect": { "visible": ["popup", "option:0"] } }
|
|
87
|
+
],
|
|
88
|
+
"notes": "Typing filters the dynamic collection down to the single match (Cat)."
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"id": "combobox.react-aria.keyboard-select-option",
|
|
92
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L285",
|
|
93
|
+
"upstreamTest": "ComboBox > should support selecting an option via keyboard",
|
|
94
|
+
"apg": "keyboard",
|
|
95
|
+
"config": {
|
|
96
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
97
|
+
"interactionType": "keyboard"
|
|
98
|
+
},
|
|
99
|
+
"steps": [
|
|
100
|
+
{ "event": "focus", "target": "input" },
|
|
101
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
102
|
+
{
|
|
103
|
+
"expect": {
|
|
104
|
+
"visible": ["popup", "option:0", "option:1", "option:2"],
|
|
105
|
+
"attrs": { "input": { "aria-activedescendant": "option:0" } }
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
109
|
+
{
|
|
110
|
+
"expect": {
|
|
111
|
+
"attrs": { "input": { "aria-activedescendant": "option:1" } }
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
{ "event": "key", "key": "Enter", "target": "input" },
|
|
115
|
+
{
|
|
116
|
+
"expect": {
|
|
117
|
+
"value": "Dog",
|
|
118
|
+
"visible": [],
|
|
119
|
+
"events": { "onSelectionChange": ["2"] }
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"notes": "Options are tracked with aria-activedescendant, not DOM focus; the option id is the library-neutral option index ('2' is the Dog key)."
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"id": "combobox.react-aria.tab-commits-without-extra-change",
|
|
127
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L312",
|
|
128
|
+
"upstreamTest": "ComboBox > should not fire extra onSelectionChange calls after focus moves away in fully controlled mode via tab",
|
|
129
|
+
"apg": "keyboard",
|
|
130
|
+
"config": { "items": ["Cat", "Dog", "Kangaroo"], "controlled": true },
|
|
131
|
+
"steps": [
|
|
132
|
+
{ "event": "focus", "target": "input" },
|
|
133
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
134
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
135
|
+
{ "event": "key", "key": "Enter", "target": "input" },
|
|
136
|
+
{
|
|
137
|
+
"expect": { "value": "Dog", "events": { "onSelectionChange": ["2"] } }
|
|
138
|
+
},
|
|
139
|
+
{ "event": "key", "key": "Tab", "target": "input" },
|
|
140
|
+
{
|
|
141
|
+
"expect": { "value": "Dog", "events": { "onSelectionChange": ["2"] } }
|
|
142
|
+
}
|
|
143
|
+
],
|
|
144
|
+
"notes": "Moving focus away must not re-fire the selection callback."
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "combobox.react-aria.readonly-does-not-open-on-focus-trigger",
|
|
148
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L494",
|
|
149
|
+
"upstreamTest": "ComboBox > should not open the menu when isReadOnly",
|
|
150
|
+
"apg": "extension",
|
|
151
|
+
"config": {
|
|
152
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
153
|
+
"isReadOnly": true,
|
|
154
|
+
"menuTrigger": "focus"
|
|
155
|
+
},
|
|
156
|
+
"steps": [
|
|
157
|
+
{ "event": "click", "target": "input" },
|
|
158
|
+
{ "expect": { "visible": [] } }
|
|
159
|
+
],
|
|
160
|
+
"notes": "A read-only combobox still allows browsing but must not open when the menu trigger is focus."
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"id": "combobox.react-aria.empty-state-with-loader",
|
|
164
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L584",
|
|
165
|
+
"upstreamTest": "ComboBox > should render empty state even when there is a loader provided and allowsEmptyCollection is true",
|
|
166
|
+
"apg": "extension",
|
|
167
|
+
"config": {
|
|
168
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
169
|
+
"allowsEmptyCollection": true,
|
|
170
|
+
"hasLoader": true
|
|
171
|
+
},
|
|
172
|
+
"steps": [
|
|
173
|
+
{ "event": "focus", "target": "input" },
|
|
174
|
+
{ "event": "type", "text": "p", "target": "input" },
|
|
175
|
+
{
|
|
176
|
+
"expect": {
|
|
177
|
+
"visible": ["popup", "option:0"],
|
|
178
|
+
"attrs": { "option:0": { "aria-selected": "false" } }
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
],
|
|
182
|
+
"notes": "The empty state replaces the loader; option:0 is the 'No results' row."
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"id": "combobox.react-aria.create-option-onaction-keyboard",
|
|
186
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L599",
|
|
187
|
+
"upstreamTest": "ComboBox > should support onAction with keyboard",
|
|
188
|
+
"apg": "extension",
|
|
189
|
+
"config": { "allowsEmptyCollection": true, "controlledInput": true },
|
|
190
|
+
"steps": [
|
|
191
|
+
{ "event": "focus", "target": "input" },
|
|
192
|
+
{ "event": "type", "text": "L", "target": "input" },
|
|
193
|
+
{ "expect": { "visible": ["popup", "option:0"] } },
|
|
194
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
195
|
+
{ "event": "key", "key": "Enter", "target": "input" },
|
|
196
|
+
{
|
|
197
|
+
"expect": {
|
|
198
|
+
"value": "",
|
|
199
|
+
"events": { "onAction": ["Create \"L\""] }
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
],
|
|
203
|
+
"notes": "The single filtered option is the dynamically created 'Create \"L\"' item; activating it fires onAction and clears the input."
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "combobox.react-aria.section-header-click-keeps-open",
|
|
207
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L670",
|
|
208
|
+
"upstreamTest": "ComboBox > should not close the combobox when clicking on a section header",
|
|
209
|
+
"apg": "pointer",
|
|
210
|
+
"config": {
|
|
211
|
+
"items": ["Apple", "Banana", "Cabbage", "Broccoli"],
|
|
212
|
+
"sections": {
|
|
213
|
+
"Fruit": ["Apple", "Banana"],
|
|
214
|
+
"Vegetable": ["Cabbage", "Broccoli"]
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"steps": [
|
|
218
|
+
{ "event": "click", "target": "trigger" },
|
|
219
|
+
{ "expect": { "visible": ["popup", "option:0"] } },
|
|
220
|
+
{ "event": "click", "target": "popup" },
|
|
221
|
+
{ "expect": { "visible": ["popup", "option:0"] } },
|
|
222
|
+
{ "event": "click", "target": "option:0" },
|
|
223
|
+
{ "expect": { "value": "Apple", "visible": [] } }
|
|
224
|
+
],
|
|
225
|
+
"notes": "Pressing the section header region is not an outside press; the listbox stays open and an option can still be committed."
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"id": "combobox.react-aria.multiple-selection-aria-and-events",
|
|
229
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L736",
|
|
230
|
+
"upstreamTest": "ComboBox > should support multiple selection",
|
|
231
|
+
"apg": "aria",
|
|
232
|
+
"config": {
|
|
233
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
234
|
+
"selectionMode": "multiple"
|
|
235
|
+
},
|
|
236
|
+
"steps": [
|
|
237
|
+
{ "event": "click", "target": "trigger" },
|
|
238
|
+
{
|
|
239
|
+
"expect": {
|
|
240
|
+
"visible": ["popup", "option:0", "option:1", "option:2"],
|
|
241
|
+
"attrs": {
|
|
242
|
+
"popup": { "role": "listbox", "aria-multiselectable": "true" }
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
{ "event": "click", "target": "option:0" },
|
|
247
|
+
{
|
|
248
|
+
"expect": {
|
|
249
|
+
"visible": ["popup"],
|
|
250
|
+
"attrs": { "option:0": { "aria-selected": "true" } },
|
|
251
|
+
"events": { "onChange": [["1"]] }
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
{ "event": "click", "target": "option:1" },
|
|
255
|
+
{
|
|
256
|
+
"expect": {
|
|
257
|
+
"visible": ["popup"],
|
|
258
|
+
"attrs": {
|
|
259
|
+
"option:0": { "aria-selected": "true" },
|
|
260
|
+
"option:1": { "aria-selected": "true" }
|
|
261
|
+
},
|
|
262
|
+
"value": "Cat and Dog",
|
|
263
|
+
"events": { "onChange": [["1"], ["1", "2"]] }
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
],
|
|
267
|
+
"notes": "Multi-select keeps the popup open, toggles aria-selected, and reflects the combined value text."
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"id": "combobox.react-aria.multiple-deselect",
|
|
271
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L788",
|
|
272
|
+
"upstreamTest": "ComboBox > should support deselection if multiple selection is enabled",
|
|
273
|
+
"apg": "pointer",
|
|
274
|
+
"config": {
|
|
275
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
276
|
+
"selectionMode": "multiple"
|
|
277
|
+
},
|
|
278
|
+
"steps": [
|
|
279
|
+
{ "event": "click", "target": "option:0" },
|
|
280
|
+
{ "event": "click", "target": "option:1" },
|
|
281
|
+
{
|
|
282
|
+
"expect": {
|
|
283
|
+
"attrs": {
|
|
284
|
+
"option:0": { "aria-selected": "true" },
|
|
285
|
+
"option:1": { "aria-selected": "true" }
|
|
286
|
+
},
|
|
287
|
+
"events": { "onChange": [["1"], ["1", "2"]] }
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
{ "event": "click", "target": "option:0" },
|
|
291
|
+
{
|
|
292
|
+
"expect": {
|
|
293
|
+
"attrs": {
|
|
294
|
+
"option:0": { "aria-selected": "false" },
|
|
295
|
+
"option:1": { "aria-selected": "true" }
|
|
296
|
+
},
|
|
297
|
+
"events": { "onChange": [["1"], ["1", "2"], ["2"]] }
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
{ "event": "click", "target": "option:1" },
|
|
301
|
+
{
|
|
302
|
+
"expect": {
|
|
303
|
+
"attrs": {
|
|
304
|
+
"option:0": { "aria-selected": "false" },
|
|
305
|
+
"option:1": { "aria-selected": "false" }
|
|
306
|
+
},
|
|
307
|
+
"events": { "onChange": [["1"], ["1", "2"], ["2"], []] }
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
],
|
|
311
|
+
"notes": "Clicking a selected option removes it from the value."
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"id": "combobox.react-aria.controlled-multiple-selected-options",
|
|
315
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L819",
|
|
316
|
+
"upstreamTest": "ComboBox > should support controlled multi-selection",
|
|
317
|
+
"apg": "aria",
|
|
318
|
+
"config": {
|
|
319
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
320
|
+
"selectionMode": "multiple",
|
|
321
|
+
"value": ["2", "3"]
|
|
322
|
+
},
|
|
323
|
+
"steps": [
|
|
324
|
+
{ "event": "click", "target": "trigger" },
|
|
325
|
+
{
|
|
326
|
+
"expect": {
|
|
327
|
+
"value": "",
|
|
328
|
+
"attrs": {
|
|
329
|
+
"option:0": { "aria-selected": "false" },
|
|
330
|
+
"option:1": { "aria-selected": "true" },
|
|
331
|
+
"option:2": { "aria-selected": "true" }
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
],
|
|
336
|
+
"notes": "The controlled value marks the matching options selected; the input stays empty."
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"id": "combobox.react-aria.controlled-input-and-value",
|
|
340
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L834",
|
|
341
|
+
"upstreamTest": "ComboBox > should support controlled multi-selection with both inputValue and value controlled",
|
|
342
|
+
"apg": "keyboard",
|
|
343
|
+
"config": {
|
|
344
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
345
|
+
"selectionMode": "multiple",
|
|
346
|
+
"inputValue": "C",
|
|
347
|
+
"value": ["2", "3"]
|
|
348
|
+
},
|
|
349
|
+
"steps": [
|
|
350
|
+
{ "event": "click", "target": "trigger" },
|
|
351
|
+
{ "expect": { "value": "C" } },
|
|
352
|
+
{ "event": "key", "key": "a", "target": "input" },
|
|
353
|
+
{
|
|
354
|
+
"expect": {
|
|
355
|
+
"value": "C",
|
|
356
|
+
"events": { "onInputChange": ["Ca"], "onChange": [] }
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
{ "event": "key", "key": "Enter", "target": "input" },
|
|
360
|
+
{ "expect": { "value": "C", "events": { "onChange": [["3"]] } } }
|
|
361
|
+
],
|
|
362
|
+
"notes": "A fully controlled input never moves; typing reports the proposed text and Enter toggles the highlighted option."
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"id": "combobox.react-aria.multiselect-custom-value-survives-tab",
|
|
366
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L871",
|
|
367
|
+
"upstreamTest": "ComboBox > should support multi-select with custom value",
|
|
368
|
+
"apg": "extension",
|
|
369
|
+
"config": {
|
|
370
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
371
|
+
"selectionMode": "multiple",
|
|
372
|
+
"allowsCustomValue": true
|
|
373
|
+
},
|
|
374
|
+
"steps": [
|
|
375
|
+
{ "event": "key", "key": "Tab" },
|
|
376
|
+
{ "event": "type", "text": "Test", "target": "input" },
|
|
377
|
+
{ "expect": { "value": "Test" } },
|
|
378
|
+
{ "event": "key", "key": "Tab", "target": "input" },
|
|
379
|
+
{ "expect": { "value": "Test" } }
|
|
380
|
+
],
|
|
381
|
+
"notes": "With allowsCustomValue the typed text is preserved across blur."
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
"id": "combobox.react-aria.custom-input-preserved-on-escape",
|
|
385
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L884",
|
|
386
|
+
"upstreamTest": "ComboBox > should preserve multi-select value with custom input on Escape",
|
|
387
|
+
"apg": "keyboard",
|
|
388
|
+
"config": {
|
|
389
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
390
|
+
"selectionMode": "multiple",
|
|
391
|
+
"allowsCustomValue": true,
|
|
392
|
+
"defaultValue": ["1", "2"],
|
|
393
|
+
"defaultInputValue": ""
|
|
394
|
+
},
|
|
395
|
+
"steps": [
|
|
396
|
+
{ "event": "key", "key": "Tab" },
|
|
397
|
+
{ "event": "type", "text": "Den", "target": "input" },
|
|
398
|
+
{ "expect": { "value": "Den" } },
|
|
399
|
+
{ "event": "key", "key": "Escape", "target": "input" },
|
|
400
|
+
{ "expect": { "value": "Den", "visible": [] } }
|
|
401
|
+
],
|
|
402
|
+
"notes": "Escape closes without committing; the custom text and the 'Cat and Dog' value remain."
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"id": "combobox.react-aria.multiple-keyboard-deselect-uncontrolled",
|
|
406
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L912",
|
|
407
|
+
"upstreamTest": "ComboBox > should allow the user to deselect items with keyboard when multiselect (uncontrolled)",
|
|
408
|
+
"apg": "keyboard",
|
|
409
|
+
"config": {
|
|
410
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
411
|
+
"selectionMode": "multiple",
|
|
412
|
+
"defaultValue": ["1", "2"]
|
|
413
|
+
},
|
|
414
|
+
"steps": [
|
|
415
|
+
{ "event": "click", "target": "trigger" },
|
|
416
|
+
{
|
|
417
|
+
"expect": {
|
|
418
|
+
"attrs": {
|
|
419
|
+
"option:0": { "aria-selected": "true" },
|
|
420
|
+
"option:1": { "aria-selected": "true" }
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
},
|
|
424
|
+
{ "event": "key", "key": "Enter", "target": "input" },
|
|
425
|
+
{ "expect": { "events": { "onChange": [["2"]] } } },
|
|
426
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
427
|
+
{ "event": "key", "key": "Enter", "target": "input" },
|
|
428
|
+
{ "expect": { "events": { "onChange": [["2"], []] } } }
|
|
429
|
+
],
|
|
430
|
+
"notes": "Enter toggles the initially highlighted option; ArrowDown moves to the second and Enter removes it."
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"id": "combobox.react-aria.multiple-keyboard-deselect-controlled",
|
|
434
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L930",
|
|
435
|
+
"upstreamTest": "ComboBox > should allow the user to deselect items with keyboard when multiselect (controlled)",
|
|
436
|
+
"apg": "keyboard",
|
|
437
|
+
"config": {
|
|
438
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
439
|
+
"selectionMode": "multiple",
|
|
440
|
+
"value": ["1", "2"]
|
|
441
|
+
},
|
|
442
|
+
"steps": [
|
|
443
|
+
{ "event": "click", "target": "trigger" },
|
|
444
|
+
{ "event": "key", "key": "Enter", "target": "input" },
|
|
445
|
+
{ "expect": { "events": { "onChange": [["2"]] } } },
|
|
446
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
447
|
+
{ "event": "key", "key": "Enter", "target": "input" },
|
|
448
|
+
{ "expect": { "events": { "onChange": [["2"], ["1"]] } } }
|
|
449
|
+
],
|
|
450
|
+
"notes": "Controlled variant: the parent owns the value, the callback reports the next candidate."
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
"id": "combobox.react-aria.click-input-keeps-popup-open",
|
|
454
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L1006",
|
|
455
|
+
"upstreamTest": "ComboBox > should not close the combobox when clicking on the input",
|
|
456
|
+
"apg": "pointer",
|
|
457
|
+
"config": { "items": ["Cat", "Dog", "Kangaroo"] },
|
|
458
|
+
"steps": [
|
|
459
|
+
{ "event": "click", "target": "trigger" },
|
|
460
|
+
{ "expect": { "visible": ["popup"], "focus": "input" } },
|
|
461
|
+
{ "event": "click", "target": "input" },
|
|
462
|
+
{
|
|
463
|
+
"expect": {
|
|
464
|
+
"visible": ["popup"],
|
|
465
|
+
"focus": "input",
|
|
466
|
+
"events": { "onOpenChange": [true] }
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
],
|
|
470
|
+
"notes": "Focus is never stolen from the input, and re-pressing it does not toggle the popup."
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
"id": "combobox.react-aria.click-trigger-toggles-popup",
|
|
474
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L1028",
|
|
475
|
+
"upstreamTest": "ComboBox > should close the combobox when clicking on the button, and it should reopen if clicked again",
|
|
476
|
+
"apg": "pointer",
|
|
477
|
+
"config": { "items": ["Cat", "Dog", "Kangaroo"] },
|
|
478
|
+
"steps": [
|
|
479
|
+
{ "event": "click", "target": "trigger" },
|
|
480
|
+
{
|
|
481
|
+
"expect": {
|
|
482
|
+
"visible": ["popup"],
|
|
483
|
+
"events": { "onOpenChange": [true] }
|
|
484
|
+
}
|
|
485
|
+
},
|
|
486
|
+
{ "event": "click", "target": "trigger" },
|
|
487
|
+
{
|
|
488
|
+
"expect": {
|
|
489
|
+
"visible": [],
|
|
490
|
+
"focus": "input",
|
|
491
|
+
"events": { "onOpenChange": [true, false] }
|
|
492
|
+
}
|
|
493
|
+
},
|
|
494
|
+
{ "event": "click", "target": "trigger" },
|
|
495
|
+
{
|
|
496
|
+
"expect": {
|
|
497
|
+
"visible": ["popup"],
|
|
498
|
+
"focus": "input",
|
|
499
|
+
"events": { "onOpenChange": [true, false, true] }
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
],
|
|
503
|
+
"notes": "The trigger closes and reopens the popup without moving focus off the input."
|
|
504
|
+
},
|
|
505
|
+
{
|
|
506
|
+
"id": "combobox.react-aria.controlled-items-reopen-on-backspace",
|
|
507
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L1068",
|
|
508
|
+
"upstreamTest": "ComboBox > should re-open the menu when controlled items go from empty to non-empty controlled items",
|
|
509
|
+
"apg": "extension",
|
|
510
|
+
"config": {
|
|
511
|
+
"controlled": true,
|
|
512
|
+
"items": ["Luke Skywalker"],
|
|
513
|
+
"filteredItemsToggle": true
|
|
514
|
+
},
|
|
515
|
+
"steps": [
|
|
516
|
+
{ "event": "key", "key": "Tab" },
|
|
517
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
518
|
+
{ "expect": { "visible": ["popup", "option:0"] } },
|
|
519
|
+
{ "event": "key", "key": "L", "target": "input" },
|
|
520
|
+
{ "expect": { "visible": [] } },
|
|
521
|
+
{ "event": "key", "key": "Backspace", "target": "input" },
|
|
522
|
+
{ "expect": { "visible": ["popup", "option:0"] } }
|
|
523
|
+
],
|
|
524
|
+
"notes": "An emptied filtered result closes the popup; deleting the query reopens it."
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
"id": "combobox.react-aria.uncontrolled-empty-items-close",
|
|
528
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L1251",
|
|
529
|
+
"upstreamTest": "ComboBox > should still close the menu when uncontrolled items are empty",
|
|
530
|
+
"apg": "extension",
|
|
531
|
+
"config": { "defaultItems": ["Luke Skywalker"] },
|
|
532
|
+
"steps": [
|
|
533
|
+
{ "event": "key", "key": "Tab" },
|
|
534
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
535
|
+
{ "expect": { "visible": ["popup", "option:0"] } },
|
|
536
|
+
{ "event": "key", "key": "Z", "target": "input" },
|
|
537
|
+
{ "expect": { "visible": [] } }
|
|
538
|
+
]
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
"id": "combobox.react-aria.escape-does-not-reopen-controlled-items",
|
|
542
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L1284",
|
|
543
|
+
"upstreamTest": "ComboBox > should not re-open after user dismisses with Escape (revert) controlled items",
|
|
544
|
+
"apg": "keyboard",
|
|
545
|
+
"config": {
|
|
546
|
+
"controlled": true,
|
|
547
|
+
"items": ["Luke Skywalker"],
|
|
548
|
+
"filteredItemsToggle": true
|
|
549
|
+
},
|
|
550
|
+
"steps": [
|
|
551
|
+
{ "event": "key", "key": "Tab" },
|
|
552
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
553
|
+
{ "expect": { "visible": ["popup"] } },
|
|
554
|
+
{ "event": "key", "key": "L", "target": "input" },
|
|
555
|
+
{ "expect": { "visible": [] } },
|
|
556
|
+
{ "event": "key", "key": "Escape", "target": "input" },
|
|
557
|
+
{ "expect": { "visible": [] } }
|
|
558
|
+
],
|
|
559
|
+
"notes": "Escape must not resurrect a popup that closed because the controlled list emptied."
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"id": "combobox.react-aria.select-only.keyboard-select",
|
|
563
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L523",
|
|
564
|
+
"upstreamTest": "Select > select can select an option via keyboard",
|
|
565
|
+
"apg": "keyboard",
|
|
566
|
+
"config": {
|
|
567
|
+
"variant": "select-only",
|
|
568
|
+
"items": ["Cat", "Dog", "Kangaroo"]
|
|
569
|
+
},
|
|
570
|
+
"steps": [
|
|
571
|
+
{
|
|
572
|
+
"expect": {
|
|
573
|
+
"value": "Select an item",
|
|
574
|
+
"attrs": {
|
|
575
|
+
"trigger": {
|
|
576
|
+
"aria-haspopup": "listbox",
|
|
577
|
+
"aria-expanded": "false"
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
},
|
|
582
|
+
{ "event": "key", "key": "Enter", "target": "trigger" },
|
|
583
|
+
{
|
|
584
|
+
"expect": { "visible": ["popup", "option:0", "option:1", "option:2"] }
|
|
585
|
+
},
|
|
586
|
+
{ "event": "key", "key": "ArrowDown", "target": "input" },
|
|
587
|
+
{ "event": "key", "key": "Enter", "target": "input" },
|
|
588
|
+
{ "expect": { "value": "Kangaroo", "visible": [] } }
|
|
589
|
+
],
|
|
590
|
+
"notes": "Select-only combobox: the trigger is the combobox and the popup hosts a focusable list; the value shows in the trigger."
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
"id": "combobox.react-aria.select-only.typeahead",
|
|
594
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L548",
|
|
595
|
+
"upstreamTest": "Select > typeahead > can select an option via typeahead",
|
|
596
|
+
"apg": "keyboard",
|
|
597
|
+
"config": {
|
|
598
|
+
"variant": "select-only",
|
|
599
|
+
"items": [
|
|
600
|
+
"Australian Capital Territory",
|
|
601
|
+
"New South Wales",
|
|
602
|
+
"Northern Territory",
|
|
603
|
+
"Queensland",
|
|
604
|
+
"South Australia",
|
|
605
|
+
"Tasmania",
|
|
606
|
+
"Victoria",
|
|
607
|
+
"Western Australia"
|
|
608
|
+
]
|
|
609
|
+
},
|
|
610
|
+
"steps": [
|
|
611
|
+
{ "event": "key", "key": "Tab" },
|
|
612
|
+
{ "event": "type", "text": "Northern Terr", "target": "trigger" },
|
|
613
|
+
{
|
|
614
|
+
"expect": {
|
|
615
|
+
"value": "Northern Territory",
|
|
616
|
+
"attrs": { "trigger": { "aria-expanded": "false" } }
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
],
|
|
620
|
+
"notes": "Typing on the select-only trigger performs typeahead and selects the match without opening the popup."
|
|
621
|
+
},
|
|
622
|
+
{
|
|
623
|
+
"id": "combobox.react-aria.select-only.autofocus",
|
|
624
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L585",
|
|
625
|
+
"upstreamTest": "Select > should support autoFocus",
|
|
626
|
+
"apg": "extension",
|
|
627
|
+
"config": {
|
|
628
|
+
"variant": "select-only",
|
|
629
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
630
|
+
"autoFocus": true
|
|
631
|
+
},
|
|
632
|
+
"steps": [{ "expect": { "focus": "trigger" } }]
|
|
633
|
+
},
|
|
634
|
+
{
|
|
635
|
+
"id": "combobox.react-aria.select-only.arrow-selects-falsy-value",
|
|
636
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L357",
|
|
637
|
+
"upstreamTest": "Select > should support arrow key navigation to a falsy key",
|
|
638
|
+
"apg": "keyboard",
|
|
639
|
+
"config": { "variant": "select-only", "items": ["0", "1", "2"] },
|
|
640
|
+
"steps": [
|
|
641
|
+
{ "event": "focus", "target": "trigger" },
|
|
642
|
+
{ "event": "key", "key": "ArrowRight", "target": "trigger" },
|
|
643
|
+
{ "expect": { "value": "0", "events": { "onSelectionChange": [0] } } }
|
|
644
|
+
],
|
|
645
|
+
"notes": "A key of 0 is a valid selection and must not be treated as empty."
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
"id": "combobox.react-aria.select-only.wont-open-when-empty",
|
|
649
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L630",
|
|
650
|
+
"upstreamTest": "Select > shouldn't allow the user to open the select if there are no items",
|
|
651
|
+
"apg": "extension",
|
|
652
|
+
"config": {
|
|
653
|
+
"variant": "select-only",
|
|
654
|
+
"items": [],
|
|
655
|
+
"defaultSelectedKey": "cat",
|
|
656
|
+
"hasLoader": true
|
|
657
|
+
},
|
|
658
|
+
"steps": [
|
|
659
|
+
{ "event": "click", "target": "trigger" },
|
|
660
|
+
{ "expect": { "visible": [] } }
|
|
661
|
+
],
|
|
662
|
+
"notes": "A select whose collection is empty (or holds only a loader) does not open."
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
"id": "combobox.react-aria.select-only.stays-open-when-close-disabled",
|
|
666
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L241",
|
|
667
|
+
"upstreamTest": "Select > should stay open on selecting an option if shouldCloseOnSelect is false and single selection mode",
|
|
668
|
+
"apg": "extension",
|
|
669
|
+
"config": {
|
|
670
|
+
"variant": "select-only",
|
|
671
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
672
|
+
"shouldCloseOnSelect": false
|
|
673
|
+
},
|
|
674
|
+
"steps": [
|
|
675
|
+
{ "event": "click", "target": "trigger" },
|
|
676
|
+
{
|
|
677
|
+
"expect": {
|
|
678
|
+
"visible": ["popup"],
|
|
679
|
+
"attrs": { "trigger": { "aria-expanded": "true" } }
|
|
680
|
+
}
|
|
681
|
+
},
|
|
682
|
+
{ "event": "click", "target": "option:1" },
|
|
683
|
+
{
|
|
684
|
+
"expect": {
|
|
685
|
+
"value": "Dog",
|
|
686
|
+
"visible": ["popup"],
|
|
687
|
+
"attrs": { "trigger": { "aria-expanded": "true" } }
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
],
|
|
691
|
+
"notes": "shouldCloseOnSelect=false keeps the popup open after a single selection."
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
"id": "combobox.react-aria.select-only.closes-on-select-in-multiple",
|
|
695
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L269",
|
|
696
|
+
"upstreamTest": "Select > should close on selecting an option if shouldCloseOnSelect is true and multiple selection mode",
|
|
697
|
+
"apg": "extension",
|
|
698
|
+
"config": {
|
|
699
|
+
"variant": "select-only",
|
|
700
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
701
|
+
"selectionMode": "multiple",
|
|
702
|
+
"shouldCloseOnSelect": true
|
|
703
|
+
},
|
|
704
|
+
"steps": [
|
|
705
|
+
{ "event": "click", "target": "trigger" },
|
|
706
|
+
{
|
|
707
|
+
"expect": {
|
|
708
|
+
"visible": ["popup"],
|
|
709
|
+
"attrs": { "trigger": { "aria-expanded": "true" } }
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
{ "event": "click", "target": "option:1" },
|
|
713
|
+
{
|
|
714
|
+
"expect": {
|
|
715
|
+
"value": "Dog",
|
|
716
|
+
"visible": [],
|
|
717
|
+
"attrs": { "trigger": { "aria-expanded": "false" } }
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
]
|
|
721
|
+
},
|
|
722
|
+
{
|
|
723
|
+
"id": "combobox.react-aria.select-only.multiple-selection",
|
|
724
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L723",
|
|
725
|
+
"upstreamTest": "Select > should support multiple selection",
|
|
726
|
+
"apg": "aria",
|
|
727
|
+
"config": {
|
|
728
|
+
"variant": "select-only",
|
|
729
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
730
|
+
"selectionMode": "multiple"
|
|
731
|
+
},
|
|
732
|
+
"steps": [
|
|
733
|
+
{ "event": "click", "target": "trigger" },
|
|
734
|
+
{
|
|
735
|
+
"expect": {
|
|
736
|
+
"visible": ["popup", "option:0", "option:1", "option:2"],
|
|
737
|
+
"attrs": {
|
|
738
|
+
"popup": { "role": "listbox", "aria-multiselectable": "true" }
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
},
|
|
742
|
+
{ "event": "click", "target": "option:0" },
|
|
743
|
+
{ "event": "click", "target": "option:1" },
|
|
744
|
+
{
|
|
745
|
+
"expect": {
|
|
746
|
+
"value": "Cat and Dog",
|
|
747
|
+
"attrs": {
|
|
748
|
+
"option:0": { "aria-selected": "true" },
|
|
749
|
+
"option:1": { "aria-selected": "true" }
|
|
750
|
+
},
|
|
751
|
+
"events": { "onChange": [["cat"], ["cat", "dog"]] }
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
],
|
|
755
|
+
"notes": "The select-only list is exposed with aria-multiselectable and keeps the trigger text as the combined labels."
|
|
756
|
+
},
|
|
757
|
+
{
|
|
758
|
+
"id": "combobox.react-aria.select-only.multiple-deselect",
|
|
759
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L756",
|
|
760
|
+
"upstreamTest": "Select > should support deselection if multiple selection is enabled",
|
|
761
|
+
"apg": "pointer",
|
|
762
|
+
"config": {
|
|
763
|
+
"variant": "select-only",
|
|
764
|
+
"items": ["Cat", "Dog", "Kangaroo"],
|
|
765
|
+
"selectionMode": "multiple"
|
|
766
|
+
},
|
|
767
|
+
"steps": [
|
|
768
|
+
{ "event": "click", "target": "option:0" },
|
|
769
|
+
{ "event": "click", "target": "option:1" },
|
|
770
|
+
{ "event": "click", "target": "option:0" },
|
|
771
|
+
{
|
|
772
|
+
"expect": {
|
|
773
|
+
"attrs": {
|
|
774
|
+
"option:0": { "aria-selected": "false" },
|
|
775
|
+
"option:1": { "aria-selected": "true" }
|
|
776
|
+
},
|
|
777
|
+
"events": { "onChange": [["cat"], ["cat", "dog"], ["dog"]] }
|
|
778
|
+
}
|
|
779
|
+
},
|
|
780
|
+
{ "event": "click", "target": "option:1" },
|
|
781
|
+
{
|
|
782
|
+
"expect": {
|
|
783
|
+
"attrs": {
|
|
784
|
+
"option:0": { "aria-selected": "false" },
|
|
785
|
+
"option:1": { "aria-selected": "false" }
|
|
786
|
+
},
|
|
787
|
+
"events": { "onChange": [["cat"], ["cat", "dog"], ["dog"], []] }
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
]
|
|
791
|
+
}
|
|
792
|
+
],
|
|
793
|
+
"skipped": [
|
|
794
|
+
{
|
|
795
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L107",
|
|
796
|
+
"upstreamTest": "ComboBox > should support slot / should support custom render function / should support render props / should clear contexts inside popover",
|
|
797
|
+
"reason": "React-only composition APIs (slots, render props, contexts) with no library-neutral behaviour."
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L271",
|
|
801
|
+
"upstreamTest": "ComboBox > should support formValue / form reset / form prop / validation errors / isRequired with multiple selection",
|
|
802
|
+
"reason": "Form submission, validation and hidden-field internals."
|
|
803
|
+
},
|
|
804
|
+
{
|
|
805
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L407",
|
|
806
|
+
"upstreamTest": "ComboBox > should render data- attributes on outer element / should apply isPressed state to button when expanded / should support read-only state",
|
|
807
|
+
"reason": "React data-attribute and styling hooks."
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L470",
|
|
811
|
+
"upstreamTest": "ComboBox > should close on scroll / should not close on input scrolling for cursor placement",
|
|
812
|
+
"reason": "Scroll-event wiring and cursor-placement internals; no APG combobox behaviour."
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L503",
|
|
816
|
+
"upstreamTest": "ComboBox > should support virtualizer",
|
|
817
|
+
"reason": "Virtualization internals."
|
|
818
|
+
},
|
|
819
|
+
{
|
|
820
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L1114",
|
|
821
|
+
"upstreamTest": "ComboBox > should re-open the menu with useAsyncList after an empty async result then backspace / should re-open the menu when using Collection pattern",
|
|
822
|
+
"reason": "Async-loading internals (useAsyncList timers)."
|
|
823
|
+
},
|
|
824
|
+
{
|
|
825
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/ComboBox.test.js#L1330",
|
|
826
|
+
"upstreamTest": "ComboBox > should not throw when rendered inside a Dialog / alertdialog with a Text errorMessage slot",
|
|
827
|
+
"reason": "Regression guard for a React context crash, not a combobox behaviour."
|
|
828
|
+
},
|
|
829
|
+
{
|
|
830
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria/test/combobox/useComboBox.test.js#L105",
|
|
831
|
+
"upstreamTest": "useComboBox > should prevent default on Enter if isOpen / should only call commit on Tab when the menu is open / should call onBlur when no button provided",
|
|
832
|
+
"reason": "React-hook unit tests over synthetic events with no observable DOM state."
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L297",
|
|
836
|
+
"upstreamTest": "Select > should send disabled prop to the hidden field / form prop / should not submit if required and selectedKey is null / validation errors",
|
|
837
|
+
"reason": "Form and hidden-field internals."
|
|
838
|
+
},
|
|
839
|
+
{
|
|
840
|
+
"upstream": "https://github.com/adobe/react-spectrum/blob/99e610236887da619ad9d54a1cd87983166c043d/packages/react-aria-components/test/Select.test.js#L304",
|
|
841
|
+
"upstreamTest": "Select > should render data- attributes only on the outer element / should support autoFocus / has a value immediately after rendering",
|
|
842
|
+
"reason": "Styling hooks and effect-timing assertions with no keyboard/ARIA behaviour."
|
|
843
|
+
}
|
|
844
|
+
]
|
|
845
|
+
}
|