@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,2444 @@
|
|
|
1
|
+
{
|
|
2
|
+
"pattern": "combobox",
|
|
3
|
+
"source": "base-ui",
|
|
4
|
+
"commit": "19511bb171f3b360b006c94cf6d07e53cb446505",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"scenarios": [
|
|
7
|
+
{
|
|
8
|
+
"id": "combobox.base-ui.keyboard-arrow-down-first-up-last",
|
|
9
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L3742",
|
|
10
|
+
"upstreamTest": "keyboard interaction > focuses first item on ArrowDown and last item on ArrowUp",
|
|
11
|
+
"apg": "keyboard",
|
|
12
|
+
"config": {
|
|
13
|
+
"items": ["apple", "banana", "cherry"]
|
|
14
|
+
},
|
|
15
|
+
"steps": [
|
|
16
|
+
{
|
|
17
|
+
"event": "focus",
|
|
18
|
+
"target": "input"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"event": "key",
|
|
22
|
+
"target": "input",
|
|
23
|
+
"key": "ArrowDown"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"expect": {
|
|
27
|
+
"visible": ["popup", "option:0", "option:1", "option:2"],
|
|
28
|
+
"attrs": {
|
|
29
|
+
"input": {
|
|
30
|
+
"aria-activedescendant": "option:0",
|
|
31
|
+
"aria-expanded": "true"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"event": "key",
|
|
38
|
+
"target": "input",
|
|
39
|
+
"key": "Escape"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"expect": {
|
|
43
|
+
"visible": []
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"event": "key",
|
|
48
|
+
"target": "input",
|
|
49
|
+
"key": "ArrowUp"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"expect": {
|
|
53
|
+
"visible": ["popup", "option:0", "option:1", "option:2"],
|
|
54
|
+
"attrs": {
|
|
55
|
+
"input": {
|
|
56
|
+
"aria-activedescendant": "option:2"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"notes": "ArrowDown highlights the first option, ArrowUp the last; the input keeps DOM focus and uses aria-activedescendant."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "combobox.base-ui.keyboard-open-navigate-enter",
|
|
66
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L3784",
|
|
67
|
+
"upstreamTest": "keyboard interaction > opens, navigates with ArrowDown, and Enter selects",
|
|
68
|
+
"apg": "keyboard",
|
|
69
|
+
"config": {
|
|
70
|
+
"items": ["apple", "banana", "cherry"]
|
|
71
|
+
},
|
|
72
|
+
"steps": [
|
|
73
|
+
{
|
|
74
|
+
"event": "click",
|
|
75
|
+
"target": "input"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"expect": {
|
|
79
|
+
"visible": ["popup", "option:0", "option:1", "option:2"]
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"event": "key",
|
|
84
|
+
"target": "input",
|
|
85
|
+
"key": "ArrowDown"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"expect": {
|
|
89
|
+
"attrs": {
|
|
90
|
+
"input": {
|
|
91
|
+
"aria-activedescendant": "option:0"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"event": "key",
|
|
98
|
+
"target": "input",
|
|
99
|
+
"key": "Enter"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"expect": {
|
|
103
|
+
"visible": [],
|
|
104
|
+
"value": "apple"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"notes": "Keyboard selection writes the option label into the input and closes the popup."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "combobox.base-ui.keyboard-enter-manual-indices-filter",
|
|
112
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L3819",
|
|
113
|
+
"upstreamTest": "keyboard interaction > Enter selects with manual indices provided to items",
|
|
114
|
+
"apg": "keyboard",
|
|
115
|
+
"config": {
|
|
116
|
+
"items": ["apple", "banana", "cherry"]
|
|
117
|
+
},
|
|
118
|
+
"steps": [
|
|
119
|
+
{
|
|
120
|
+
"event": "click",
|
|
121
|
+
"target": "input"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"event": "type",
|
|
125
|
+
"target": "input",
|
|
126
|
+
"text": "c"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"expect": {
|
|
130
|
+
"visible": ["popup", "option:0"]
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"event": "key",
|
|
135
|
+
"target": "input",
|
|
136
|
+
"key": "ArrowDown"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"event": "key",
|
|
140
|
+
"target": "input",
|
|
141
|
+
"key": "Enter"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"expect": {
|
|
145
|
+
"value": "cherry",
|
|
146
|
+
"visible": []
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "combobox.base-ui.keyboard-list-click-keeps-input-focus",
|
|
153
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L3857",
|
|
154
|
+
"upstreamTest": "keyboard interaction > clicking on \"listbox\" keeps the focus on the input",
|
|
155
|
+
"apg": "keyboard",
|
|
156
|
+
"config": {
|
|
157
|
+
"items": ["apple", "banana", "cherry"]
|
|
158
|
+
},
|
|
159
|
+
"steps": [
|
|
160
|
+
{
|
|
161
|
+
"event": "click",
|
|
162
|
+
"target": "input"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"expect": {
|
|
166
|
+
"visible": ["popup"]
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"event": "click",
|
|
171
|
+
"target": "popup"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"expect": {
|
|
175
|
+
"focus": "input",
|
|
176
|
+
"visible": ["popup"]
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"event": "key",
|
|
181
|
+
"target": "input",
|
|
182
|
+
"key": "ArrowDown"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"event": "key",
|
|
186
|
+
"target": "input",
|
|
187
|
+
"key": "Enter"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"expect": {
|
|
191
|
+
"value": "apple"
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"id": "combobox.base-ui.keyboard-escape-closes-no-commit",
|
|
198
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L3898",
|
|
199
|
+
"upstreamTest": "keyboard interaction > Escape closes the popup without committing when nothing highlighted",
|
|
200
|
+
"apg": "keyboard",
|
|
201
|
+
"config": {
|
|
202
|
+
"items": ["a", "b"],
|
|
203
|
+
"defaultOpen": true
|
|
204
|
+
},
|
|
205
|
+
"steps": [
|
|
206
|
+
{
|
|
207
|
+
"event": "key",
|
|
208
|
+
"target": "input",
|
|
209
|
+
"key": "Escape"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"expect": {
|
|
213
|
+
"visible": [],
|
|
214
|
+
"value": ""
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
],
|
|
218
|
+
"notes": "The popup starts open (defaultOpen); Escape leaves the input untouched."
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"id": "combobox.base-ui.keyboard-escape-bubbles-inline",
|
|
222
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L3923",
|
|
223
|
+
"upstreamTest": "keyboard interaction > bubbles Escape key when rendered inline without Positioner/Popup",
|
|
224
|
+
"apg": "extension",
|
|
225
|
+
"config": {
|
|
226
|
+
"inline": true,
|
|
227
|
+
"defaultOpen": true,
|
|
228
|
+
"items": ["a", "b"]
|
|
229
|
+
},
|
|
230
|
+
"steps": [
|
|
231
|
+
{
|
|
232
|
+
"event": "click",
|
|
233
|
+
"target": "input"
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
"expect": {
|
|
237
|
+
"visible": ["popup"]
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"event": "key",
|
|
242
|
+
"target": "input",
|
|
243
|
+
"key": "Escape"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"expect": {
|
|
247
|
+
"events": {
|
|
248
|
+
"onOuterKeyDown": ["Escape"]
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
],
|
|
253
|
+
"notes": "An inline list has no popup to close, so Escape must reach ancestor keydown handlers."
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"id": "combobox.base-ui.keyboard-enter-inline-keeps-value",
|
|
257
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L3957",
|
|
258
|
+
"upstreamTest": "keyboard interaction > keeps input value on Enter when inline and no item is highlighted",
|
|
259
|
+
"apg": "extension",
|
|
260
|
+
"config": {
|
|
261
|
+
"inline": true,
|
|
262
|
+
"items": ["Apple", "Banana"]
|
|
263
|
+
},
|
|
264
|
+
"steps": [
|
|
265
|
+
{
|
|
266
|
+
"event": "click",
|
|
267
|
+
"target": "input"
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"event": "type",
|
|
271
|
+
"target": "input",
|
|
272
|
+
"text": "Ba"
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
"expect": {
|
|
276
|
+
"attrs": {
|
|
277
|
+
"input": {
|
|
278
|
+
"aria-activedescendant": null
|
|
279
|
+
}
|
|
280
|
+
},
|
|
281
|
+
"value": "Ba"
|
|
282
|
+
}
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"event": "key",
|
|
286
|
+
"target": "input",
|
|
287
|
+
"key": "Enter"
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
"expect": {
|
|
291
|
+
"value": "Ba"
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
],
|
|
295
|
+
"notes": "With no highlighted item Enter must not clear or commit the typed text."
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"id": "combobox.base-ui.keyboard-escape-bubbles-empty-css-hidden",
|
|
299
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L3984",
|
|
300
|
+
"upstreamTest": "keyboard interaction > bubbles Escape key when list is empty and popup hidden with CSS",
|
|
301
|
+
"apg": "extension",
|
|
302
|
+
"config": {
|
|
303
|
+
"items": [],
|
|
304
|
+
"popupHiddenByCss": true,
|
|
305
|
+
"defaultOpen": true
|
|
306
|
+
},
|
|
307
|
+
"steps": [
|
|
308
|
+
{
|
|
309
|
+
"event": "click",
|
|
310
|
+
"target": "input"
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"event": "key",
|
|
314
|
+
"target": "input",
|
|
315
|
+
"key": "Escape"
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"expect": {
|
|
319
|
+
"events": {
|
|
320
|
+
"onOuterKeyDown": ["Escape"]
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
],
|
|
325
|
+
"notes": "A list that is empty and CSS-hidden is treated as closed; Escape propagates."
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"id": "combobox.base-ui.keyboard-escape-not-bubbled-with-empty-part",
|
|
329
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4024",
|
|
330
|
+
"upstreamTest": "keyboard interaction > does not bubble Escape key when Empty component is present",
|
|
331
|
+
"apg": "extension",
|
|
332
|
+
"config": {
|
|
333
|
+
"items": [],
|
|
334
|
+
"hasEmptyPart": true,
|
|
335
|
+
"defaultOpen": true
|
|
336
|
+
},
|
|
337
|
+
"steps": [
|
|
338
|
+
{
|
|
339
|
+
"event": "click",
|
|
340
|
+
"target": "input"
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"event": "key",
|
|
344
|
+
"target": "input",
|
|
345
|
+
"key": "Escape"
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"expect": {
|
|
349
|
+
"events": {
|
|
350
|
+
"onOuterKeyDown": []
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
],
|
|
355
|
+
"notes": "A rendered empty state keeps the popup logically open, so Escape is consumed."
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"id": "combobox.base-ui.keyboard-tab-closes-popup",
|
|
359
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/input/ComboboxInput.test.tsx#L964",
|
|
360
|
+
"upstreamTest": "interaction behavior > closes the popup when tabbing out",
|
|
361
|
+
"apg": "keyboard",
|
|
362
|
+
"config": {
|
|
363
|
+
"items": ["apple", "banana"]
|
|
364
|
+
},
|
|
365
|
+
"steps": [
|
|
366
|
+
{
|
|
367
|
+
"event": "click",
|
|
368
|
+
"target": "input"
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"expect": {
|
|
372
|
+
"visible": ["popup"]
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"event": "key",
|
|
377
|
+
"target": "input",
|
|
378
|
+
"key": "Tab"
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"expect": {
|
|
382
|
+
"visible": [],
|
|
383
|
+
"focus": "next-button"
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
],
|
|
387
|
+
"notes": "Tabbing away closes the popup and moves focus to the next focusable element."
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"id": "combobox.base-ui.aria-input-closed",
|
|
391
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4067",
|
|
392
|
+
"upstreamTest": "aria attributes > sets all aria attributes on the input when closed",
|
|
393
|
+
"apg": "aria",
|
|
394
|
+
"config": {
|
|
395
|
+
"items": []
|
|
396
|
+
},
|
|
397
|
+
"steps": [
|
|
398
|
+
{
|
|
399
|
+
"expect": {
|
|
400
|
+
"attrs": {
|
|
401
|
+
"input": {
|
|
402
|
+
"role": "combobox",
|
|
403
|
+
"aria-expanded": "false",
|
|
404
|
+
"aria-autocomplete": "list",
|
|
405
|
+
"aria-haspopup": "listbox",
|
|
406
|
+
"aria-controls": null,
|
|
407
|
+
"aria-activedescendant": null
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
],
|
|
413
|
+
"notes": "The editable input is the combobox; controls/activedescendant appear only while open."
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"id": "combobox.base-ui.aria-input-open",
|
|
417
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4087",
|
|
418
|
+
"upstreamTest": "aria attributes > sets all aria attributes on the input when open",
|
|
419
|
+
"apg": "aria",
|
|
420
|
+
"config": {
|
|
421
|
+
"defaultOpen": true,
|
|
422
|
+
"items": []
|
|
423
|
+
},
|
|
424
|
+
"steps": [
|
|
425
|
+
{
|
|
426
|
+
"expect": {
|
|
427
|
+
"visible": ["popup"],
|
|
428
|
+
"attrs": {
|
|
429
|
+
"input": {
|
|
430
|
+
"role": "combobox",
|
|
431
|
+
"aria-expanded": "true",
|
|
432
|
+
"aria-autocomplete": "list",
|
|
433
|
+
"aria-haspopup": "listbox",
|
|
434
|
+
"aria-controls": "popup",
|
|
435
|
+
"aria-activedescendant": null
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
],
|
|
441
|
+
"notes": "aria-controls points at the listbox popup; the highlight is still absent before navigation."
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
"id": "combobox.base-ui.aria-inline-open-expanded",
|
|
445
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4112",
|
|
446
|
+
"upstreamTest": "aria attributes > sets aria-expanded on the input when rendered inline and open",
|
|
447
|
+
"apg": "aria",
|
|
448
|
+
"config": {
|
|
449
|
+
"inline": true,
|
|
450
|
+
"open": true
|
|
451
|
+
},
|
|
452
|
+
"steps": [
|
|
453
|
+
{
|
|
454
|
+
"expect": {
|
|
455
|
+
"attrs": {
|
|
456
|
+
"input": {
|
|
457
|
+
"role": "combobox",
|
|
458
|
+
"aria-expanded": "true",
|
|
459
|
+
"aria-controls": "popup"
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
]
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"id": "combobox.base-ui.aria-inline-grid-popup-type",
|
|
468
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4128",
|
|
469
|
+
"upstreamTest": "aria attributes > sets the popup type on the input when rendered inline as a grid",
|
|
470
|
+
"apg": "aria",
|
|
471
|
+
"config": {
|
|
472
|
+
"inline": true,
|
|
473
|
+
"open": true,
|
|
474
|
+
"grid": true
|
|
475
|
+
},
|
|
476
|
+
"steps": [
|
|
477
|
+
{
|
|
478
|
+
"expect": {
|
|
479
|
+
"attrs": {
|
|
480
|
+
"input": {
|
|
481
|
+
"aria-expanded": "true",
|
|
482
|
+
"aria-haspopup": "grid",
|
|
483
|
+
"aria-controls": "popup"
|
|
484
|
+
},
|
|
485
|
+
"popup": {
|
|
486
|
+
"role": "grid"
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
]
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"id": "combobox.base-ui.aria-inline-without-open-expanded",
|
|
495
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4144",
|
|
496
|
+
"upstreamTest": "aria attributes > keeps the input expanded when rendered inline without the open prop",
|
|
497
|
+
"apg": "aria",
|
|
498
|
+
"config": {
|
|
499
|
+
"inline": true,
|
|
500
|
+
"items": ["apple", "banana"]
|
|
501
|
+
},
|
|
502
|
+
"steps": [
|
|
503
|
+
{
|
|
504
|
+
"expect": {
|
|
505
|
+
"attrs": {
|
|
506
|
+
"input": {
|
|
507
|
+
"aria-expanded": "true",
|
|
508
|
+
"aria-controls": "popup"
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"event": "click",
|
|
515
|
+
"target": "input"
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
"expect": {
|
|
519
|
+
"attrs": {
|
|
520
|
+
"input": {
|
|
521
|
+
"aria-expanded": "true",
|
|
522
|
+
"aria-controls": "popup"
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
],
|
|
528
|
+
"notes": "An inline list renders regardless of internal open state, so the input must not claim to be collapsed."
|
|
529
|
+
},
|
|
530
|
+
{
|
|
531
|
+
"id": "combobox.base-ui.aria-item-highlighted-attributes",
|
|
532
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4172",
|
|
533
|
+
"upstreamTest": "aria attributes > sets correct attributes on the item when highlighted",
|
|
534
|
+
"apg": "aria",
|
|
535
|
+
"config": {
|
|
536
|
+
"defaultOpen": true,
|
|
537
|
+
"items": ["a", "b"]
|
|
538
|
+
},
|
|
539
|
+
"steps": [
|
|
540
|
+
{
|
|
541
|
+
"event": "click",
|
|
542
|
+
"target": "input"
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"expect": {
|
|
546
|
+
"attrs": {
|
|
547
|
+
"input": {
|
|
548
|
+
"aria-activedescendant": null
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"event": "key",
|
|
555
|
+
"target": "input",
|
|
556
|
+
"key": "ArrowDown"
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"expect": {
|
|
560
|
+
"attrs": {
|
|
561
|
+
"option:0": {
|
|
562
|
+
"aria-selected": "false"
|
|
563
|
+
},
|
|
564
|
+
"option:1": {
|
|
565
|
+
"aria-selected": "false"
|
|
566
|
+
},
|
|
567
|
+
"input": {
|
|
568
|
+
"aria-activedescendant": "option:0"
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"event": "key",
|
|
575
|
+
"target": "input",
|
|
576
|
+
"key": "Enter"
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
"event": "click",
|
|
580
|
+
"target": "input"
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
"expect": {
|
|
584
|
+
"attrs": {
|
|
585
|
+
"option:0": {
|
|
586
|
+
"aria-selected": "true"
|
|
587
|
+
},
|
|
588
|
+
"option:1": {
|
|
589
|
+
"aria-selected": "false"
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
],
|
|
595
|
+
"notes": "aria-selected tracks the committed value; aria-activedescendant tracks the highlight."
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
"id": "combobox.base-ui.select-only.trigger-controls-dialog",
|
|
599
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4215",
|
|
600
|
+
"upstreamTest": "aria attributes > sets aria-controls to the dialog popup on trigger",
|
|
601
|
+
"apg": "aria",
|
|
602
|
+
"config": {
|
|
603
|
+
"variant": "select-only",
|
|
604
|
+
"inputInPopup": true,
|
|
605
|
+
"defaultOpen": true
|
|
606
|
+
},
|
|
607
|
+
"steps": [
|
|
608
|
+
{
|
|
609
|
+
"expect": {
|
|
610
|
+
"visible": ["popup"],
|
|
611
|
+
"attrs": {
|
|
612
|
+
"trigger": {
|
|
613
|
+
"role": "combobox",
|
|
614
|
+
"aria-expanded": "true",
|
|
615
|
+
"aria-controls": "popup"
|
|
616
|
+
},
|
|
617
|
+
"popup": {
|
|
618
|
+
"role": "dialog"
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
{
|
|
624
|
+
"event": "click",
|
|
625
|
+
"target": "trigger"
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"expect": {
|
|
629
|
+
"attrs": {
|
|
630
|
+
"trigger": {
|
|
631
|
+
"aria-expanded": "false",
|
|
632
|
+
"aria-controls": null
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
],
|
|
638
|
+
"notes": "When the input lives inside the popup, the trigger is the combobox and controls the dialog."
|
|
639
|
+
},
|
|
640
|
+
{
|
|
641
|
+
"id": "combobox.base-ui.select-only.trigger-custom-popup-id",
|
|
642
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4247",
|
|
643
|
+
"upstreamTest": "aria attributes > points aria-controls at a custom popup id on the trigger",
|
|
644
|
+
"apg": "aria",
|
|
645
|
+
"config": {
|
|
646
|
+
"variant": "select-only",
|
|
647
|
+
"inputInPopup": true,
|
|
648
|
+
"defaultOpen": true,
|
|
649
|
+
"popupId": "custom-popup-id"
|
|
650
|
+
},
|
|
651
|
+
"steps": [
|
|
652
|
+
{
|
|
653
|
+
"expect": {
|
|
654
|
+
"attrs": {
|
|
655
|
+
"trigger": {
|
|
656
|
+
"aria-controls": "custom-popup-id"
|
|
657
|
+
},
|
|
658
|
+
"popup": {
|
|
659
|
+
"id": "custom-popup-id"
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
],
|
|
665
|
+
"notes": "A caller-supplied popup id flows through to aria-controls."
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
"id": "combobox.base-ui.aria-popup-role-presentation",
|
|
669
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/popup/ComboboxPopup.test.tsx#L39",
|
|
670
|
+
"upstreamTest": "sets role to presentation when input renders outside the popup",
|
|
671
|
+
"apg": "aria",
|
|
672
|
+
"config": {
|
|
673
|
+
"defaultOpen": true,
|
|
674
|
+
"items": ["Apple"]
|
|
675
|
+
},
|
|
676
|
+
"steps": [
|
|
677
|
+
{
|
|
678
|
+
"expect": {
|
|
679
|
+
"visible": ["popup"],
|
|
680
|
+
"attrs": {
|
|
681
|
+
"popup": {
|
|
682
|
+
"role": "presentation"
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
],
|
|
688
|
+
"notes": "The plain popup wrapper is presentational; the listbox carries the semantics."
|
|
689
|
+
},
|
|
690
|
+
{
|
|
691
|
+
"id": "combobox.base-ui.select-only.popup-role-dialog",
|
|
692
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/popup/ComboboxPopup.test.tsx#L57",
|
|
693
|
+
"upstreamTest": "sets role to dialog when input renders inside the popup",
|
|
694
|
+
"apg": "aria",
|
|
695
|
+
"config": {
|
|
696
|
+
"variant": "select-only",
|
|
697
|
+
"inputInPopup": true,
|
|
698
|
+
"defaultOpen": true,
|
|
699
|
+
"items": ["Apple"]
|
|
700
|
+
},
|
|
701
|
+
"steps": [
|
|
702
|
+
{
|
|
703
|
+
"expect": {
|
|
704
|
+
"visible": ["popup"],
|
|
705
|
+
"attrs": {
|
|
706
|
+
"popup": {
|
|
707
|
+
"role": "dialog"
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
]
|
|
713
|
+
},
|
|
714
|
+
{
|
|
715
|
+
"id": "combobox.base-ui.aria-listbox-multiselectable",
|
|
716
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/list/ComboboxList.test.tsx#L17",
|
|
717
|
+
"upstreamTest": "sets role=listbox and aria-multiselectable in multiple mode",
|
|
718
|
+
"apg": "aria",
|
|
719
|
+
"config": {
|
|
720
|
+
"multiple": true,
|
|
721
|
+
"defaultOpen": true,
|
|
722
|
+
"items": ["a"]
|
|
723
|
+
},
|
|
724
|
+
"steps": [
|
|
725
|
+
{
|
|
726
|
+
"expect": {
|
|
727
|
+
"visible": ["popup"],
|
|
728
|
+
"attrs": {
|
|
729
|
+
"popup": {
|
|
730
|
+
"role": "listbox",
|
|
731
|
+
"aria-multiselectable": "true"
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
]
|
|
737
|
+
},
|
|
738
|
+
{
|
|
739
|
+
"id": "combobox.base-ui.aria-listbox-readonly",
|
|
740
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/list/ComboboxList.test.tsx#L36",
|
|
741
|
+
"upstreamTest": "sets aria-readonly on the listbox when the root is readOnly",
|
|
742
|
+
"apg": "aria",
|
|
743
|
+
"config": {
|
|
744
|
+
"readOnly": true,
|
|
745
|
+
"defaultOpen": true,
|
|
746
|
+
"items": ["a"]
|
|
747
|
+
},
|
|
748
|
+
"steps": [
|
|
749
|
+
{
|
|
750
|
+
"expect": {
|
|
751
|
+
"visible": ["popup"],
|
|
752
|
+
"attrs": {
|
|
753
|
+
"popup": {
|
|
754
|
+
"role": "listbox",
|
|
755
|
+
"aria-readonly": "true"
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
]
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
"id": "combobox.base-ui.aria-listbox-no-readonly-default",
|
|
764
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/list/ComboboxList.test.tsx#L77",
|
|
765
|
+
"upstreamTest": "does not set aria-readonly on the listbox by default",
|
|
766
|
+
"apg": "aria",
|
|
767
|
+
"config": {
|
|
768
|
+
"defaultOpen": true,
|
|
769
|
+
"items": ["a"]
|
|
770
|
+
},
|
|
771
|
+
"steps": [
|
|
772
|
+
{
|
|
773
|
+
"expect": {
|
|
774
|
+
"visible": ["popup"],
|
|
775
|
+
"attrs": {
|
|
776
|
+
"popup": {
|
|
777
|
+
"aria-readonly": null
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
]
|
|
783
|
+
},
|
|
784
|
+
{
|
|
785
|
+
"id": "combobox.base-ui.keyboard-list-enter-selects-highlighted",
|
|
786
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/list/ComboboxList.test.tsx#L135",
|
|
787
|
+
"upstreamTest": "selects the highlighted item with Enter",
|
|
788
|
+
"apg": "keyboard",
|
|
789
|
+
"config": {
|
|
790
|
+
"defaultOpen": true,
|
|
791
|
+
"items": ["a"]
|
|
792
|
+
},
|
|
793
|
+
"steps": [
|
|
794
|
+
{
|
|
795
|
+
"event": "click",
|
|
796
|
+
"target": "input"
|
|
797
|
+
},
|
|
798
|
+
{
|
|
799
|
+
"event": "key",
|
|
800
|
+
"target": "input",
|
|
801
|
+
"key": "ArrowDown"
|
|
802
|
+
},
|
|
803
|
+
{
|
|
804
|
+
"expect": {
|
|
805
|
+
"attrs": {
|
|
806
|
+
"input": {
|
|
807
|
+
"aria-activedescendant": "option:0"
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
},
|
|
812
|
+
{
|
|
813
|
+
"event": "key",
|
|
814
|
+
"target": "input",
|
|
815
|
+
"key": "Enter"
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
"expect": {
|
|
819
|
+
"events": {
|
|
820
|
+
"onValueChange": ["a"]
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
],
|
|
825
|
+
"notes": "The list handles Enter once an item is highlighted."
|
|
826
|
+
},
|
|
827
|
+
{
|
|
828
|
+
"id": "combobox.base-ui.keyboard-list-enter-ignored-when-readonly",
|
|
829
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/list/ComboboxList.test.tsx#L162",
|
|
830
|
+
"upstreamTest": "ignores Enter when interaction is disabled: readOnly",
|
|
831
|
+
"apg": "keyboard",
|
|
832
|
+
"config": {
|
|
833
|
+
"readOnly": true,
|
|
834
|
+
"defaultOpen": true,
|
|
835
|
+
"items": ["a"]
|
|
836
|
+
},
|
|
837
|
+
"steps": [
|
|
838
|
+
{
|
|
839
|
+
"event": "key",
|
|
840
|
+
"target": "input",
|
|
841
|
+
"key": "Enter"
|
|
842
|
+
},
|
|
843
|
+
{
|
|
844
|
+
"expect": {
|
|
845
|
+
"events": {
|
|
846
|
+
"onValueChange": []
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
}
|
|
850
|
+
],
|
|
851
|
+
"notes": "readOnly and disabled both suppress the list's Enter handling."
|
|
852
|
+
},
|
|
853
|
+
{
|
|
854
|
+
"id": "combobox.base-ui.pointer-open-change-reason-item-press",
|
|
855
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L1228",
|
|
856
|
+
"upstreamTest": "selection behavior > single > fires onOpenChange once with reason item-press on mouse click",
|
|
857
|
+
"apg": "pointer",
|
|
858
|
+
"config": {
|
|
859
|
+
"items": ["apple", "banana"]
|
|
860
|
+
},
|
|
861
|
+
"steps": [
|
|
862
|
+
{
|
|
863
|
+
"event": "click",
|
|
864
|
+
"target": "input"
|
|
865
|
+
},
|
|
866
|
+
{
|
|
867
|
+
"expect": {
|
|
868
|
+
"visible": ["popup"]
|
|
869
|
+
}
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
"event": "click",
|
|
873
|
+
"target": "option:0"
|
|
874
|
+
},
|
|
875
|
+
{
|
|
876
|
+
"expect": {
|
|
877
|
+
"visible": [],
|
|
878
|
+
"events": {
|
|
879
|
+
"onOpenChange": [false]
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
],
|
|
884
|
+
"notes": "The change reason is item-press with the originating MouseEvent."
|
|
885
|
+
},
|
|
886
|
+
{
|
|
887
|
+
"id": "combobox.base-ui.keyboard-enter-open-change-reason",
|
|
888
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L1268",
|
|
889
|
+
"upstreamTest": "selection behavior > single > fires onOpenChange once with reason item-press on Enter selection",
|
|
890
|
+
"apg": "keyboard",
|
|
891
|
+
"config": {
|
|
892
|
+
"items": ["apple", "banana"]
|
|
893
|
+
},
|
|
894
|
+
"steps": [
|
|
895
|
+
{
|
|
896
|
+
"event": "click",
|
|
897
|
+
"target": "input"
|
|
898
|
+
},
|
|
899
|
+
{
|
|
900
|
+
"expect": {
|
|
901
|
+
"visible": ["popup"]
|
|
902
|
+
}
|
|
903
|
+
},
|
|
904
|
+
{
|
|
905
|
+
"event": "key",
|
|
906
|
+
"target": "input",
|
|
907
|
+
"key": "ArrowDown"
|
|
908
|
+
},
|
|
909
|
+
{
|
|
910
|
+
"event": "key",
|
|
911
|
+
"target": "input",
|
|
912
|
+
"key": "Enter"
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
"expect": {
|
|
916
|
+
"visible": [],
|
|
917
|
+
"events": {
|
|
918
|
+
"onOpenChange": [false]
|
|
919
|
+
}
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
],
|
|
923
|
+
"notes": "The same item-press reason is reported for keyboard selection."
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
"id": "combobox.base-ui.pointer-auto-close-uncontrolled",
|
|
927
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L1309",
|
|
928
|
+
"upstreamTest": "selection behavior > single > should auto-close popup after selection when open state is uncontrolled",
|
|
929
|
+
"apg": "pointer",
|
|
930
|
+
"config": {
|
|
931
|
+
"items": ["apple", "banana", "cherry"]
|
|
932
|
+
},
|
|
933
|
+
"steps": [
|
|
934
|
+
{
|
|
935
|
+
"event": "click",
|
|
936
|
+
"target": "trigger"
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
"expect": {
|
|
940
|
+
"visible": ["popup"],
|
|
941
|
+
"attrs": {
|
|
942
|
+
"input": {
|
|
943
|
+
"aria-expanded": "true"
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
"event": "click",
|
|
950
|
+
"target": "option:0"
|
|
951
|
+
},
|
|
952
|
+
{
|
|
953
|
+
"expect": {
|
|
954
|
+
"visible": [],
|
|
955
|
+
"attrs": {
|
|
956
|
+
"input": {
|
|
957
|
+
"aria-expanded": "false"
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
],
|
|
963
|
+
"notes": "An uncontrolled open state closes on selection."
|
|
964
|
+
},
|
|
965
|
+
{
|
|
966
|
+
"id": "combobox.base-ui.extension-no-auto-close-controlled",
|
|
967
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L1365",
|
|
968
|
+
"upstreamTest": "selection behavior > single > should not auto-close popup when open state is controlled",
|
|
969
|
+
"apg": "extension",
|
|
970
|
+
"config": {
|
|
971
|
+
"items": ["apple", "banana", "cherry"],
|
|
972
|
+
"open": true
|
|
973
|
+
},
|
|
974
|
+
"steps": [
|
|
975
|
+
{
|
|
976
|
+
"event": "click",
|
|
977
|
+
"target": "option:0"
|
|
978
|
+
},
|
|
979
|
+
{
|
|
980
|
+
"expect": {
|
|
981
|
+
"visible": ["popup"]
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
],
|
|
985
|
+
"notes": "A controlled open prop keeps the popup open after selection."
|
|
986
|
+
},
|
|
987
|
+
{
|
|
988
|
+
"id": "combobox.base-ui.aria-show-all-items-empty-query",
|
|
989
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L1392",
|
|
990
|
+
"upstreamTest": "selection behavior > single > should show all items when query is empty with enhanced filter",
|
|
991
|
+
"apg": "aria",
|
|
992
|
+
"config": {
|
|
993
|
+
"items": ["apple", "banana", "cherry"],
|
|
994
|
+
"defaultOpen": true
|
|
995
|
+
},
|
|
996
|
+
"steps": [
|
|
997
|
+
{
|
|
998
|
+
"expect": {
|
|
999
|
+
"visible": ["popup", "option:0", "option:1", "option:2"]
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
1002
|
+
],
|
|
1003
|
+
"notes": "The default enhanced filter shows every item for an empty query."
|
|
1004
|
+
},
|
|
1005
|
+
{
|
|
1006
|
+
"id": "combobox.base-ui.aria-query-matches-selection-shows-all",
|
|
1007
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L1419",
|
|
1008
|
+
"upstreamTest": "selection behavior > single > should show all items when query matches current selection",
|
|
1009
|
+
"apg": "aria",
|
|
1010
|
+
"config": {
|
|
1011
|
+
"items": ["apple", "banana", "cherry"],
|
|
1012
|
+
"defaultValue": "apple"
|
|
1013
|
+
},
|
|
1014
|
+
"steps": [
|
|
1015
|
+
{
|
|
1016
|
+
"event": "click",
|
|
1017
|
+
"target": "trigger"
|
|
1018
|
+
},
|
|
1019
|
+
{
|
|
1020
|
+
"expect": {
|
|
1021
|
+
"visible": ["popup", "option:0", "option:1", "option:2"]
|
|
1022
|
+
}
|
|
1023
|
+
},
|
|
1024
|
+
{
|
|
1025
|
+
"event": "click",
|
|
1026
|
+
"target": "option:0"
|
|
1027
|
+
},
|
|
1028
|
+
{
|
|
1029
|
+
"expect": {
|
|
1030
|
+
"value": "apple",
|
|
1031
|
+
"visible": []
|
|
1032
|
+
}
|
|
1033
|
+
},
|
|
1034
|
+
{
|
|
1035
|
+
"event": "click",
|
|
1036
|
+
"target": "trigger"
|
|
1037
|
+
},
|
|
1038
|
+
{
|
|
1039
|
+
"expect": {
|
|
1040
|
+
"visible": ["popup", "option:0", "option:1", "option:2"]
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
1043
|
+
],
|
|
1044
|
+
"notes": "Reopening with the selection as the query must not filter the list down to the selection only."
|
|
1045
|
+
},
|
|
1046
|
+
{
|
|
1047
|
+
"id": "combobox.base-ui.extension-reset-input-on-close-without-selection",
|
|
1048
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L1459",
|
|
1049
|
+
"upstreamTest": "selection behavior > single > should reset input value to selected value when popup closes without selection",
|
|
1050
|
+
"apg": "extension",
|
|
1051
|
+
"config": {
|
|
1052
|
+
"items": ["apple", "banana", "cherry"],
|
|
1053
|
+
"defaultValue": "apple"
|
|
1054
|
+
},
|
|
1055
|
+
"steps": [
|
|
1056
|
+
{
|
|
1057
|
+
"event": "click",
|
|
1058
|
+
"target": "trigger"
|
|
1059
|
+
},
|
|
1060
|
+
{
|
|
1061
|
+
"event": "click",
|
|
1062
|
+
"target": "option:0"
|
|
1063
|
+
},
|
|
1064
|
+
{
|
|
1065
|
+
"expect": {
|
|
1066
|
+
"value": "apple",
|
|
1067
|
+
"visible": []
|
|
1068
|
+
}
|
|
1069
|
+
},
|
|
1070
|
+
{
|
|
1071
|
+
"event": "click",
|
|
1072
|
+
"target": "trigger"
|
|
1073
|
+
},
|
|
1074
|
+
{
|
|
1075
|
+
"event": "type",
|
|
1076
|
+
"target": "input",
|
|
1077
|
+
"text": "xyz"
|
|
1078
|
+
},
|
|
1079
|
+
{
|
|
1080
|
+
"expect": {
|
|
1081
|
+
"value": "applexyz"
|
|
1082
|
+
}
|
|
1083
|
+
},
|
|
1084
|
+
{
|
|
1085
|
+
"event": "click",
|
|
1086
|
+
"target": "body"
|
|
1087
|
+
},
|
|
1088
|
+
{
|
|
1089
|
+
"expect": {
|
|
1090
|
+
"value": "apple",
|
|
1091
|
+
"events": {
|
|
1092
|
+
"onInputValueChange": ["apple"]
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
],
|
|
1097
|
+
"notes": "Closing without committing reverts the input to the selected label; the reset reports reason 'none'."
|
|
1098
|
+
},
|
|
1099
|
+
{
|
|
1100
|
+
"id": "combobox.base-ui.multiple-selection-value-change",
|
|
1101
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L2830",
|
|
1102
|
+
"upstreamTest": "selection behavior > multiple > should handle multiple selection",
|
|
1103
|
+
"apg": "pointer",
|
|
1104
|
+
"config": {
|
|
1105
|
+
"multiple": true,
|
|
1106
|
+
"items": ["a", "b", "c"]
|
|
1107
|
+
},
|
|
1108
|
+
"steps": [
|
|
1109
|
+
{
|
|
1110
|
+
"event": "click",
|
|
1111
|
+
"target": "option:0"
|
|
1112
|
+
},
|
|
1113
|
+
{
|
|
1114
|
+
"expect": {
|
|
1115
|
+
"events": {
|
|
1116
|
+
"onValueChange": [["a"]]
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
1121
|
+
"event": "click",
|
|
1122
|
+
"target": "option:1"
|
|
1123
|
+
},
|
|
1124
|
+
{
|
|
1125
|
+
"expect": {
|
|
1126
|
+
"events": {
|
|
1127
|
+
"onValueChange": [["a"], ["a", "b"]]
|
|
1128
|
+
}
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
],
|
|
1132
|
+
"notes": "Each click toggles membership and reports the accumulated value array."
|
|
1133
|
+
},
|
|
1134
|
+
{
|
|
1135
|
+
"id": "combobox.base-ui.multiple-single-select-close-reopen-focused",
|
|
1136
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L7118",
|
|
1137
|
+
"upstreamTest": "prop multiple > \"single\" selects and closes, then reopens with selection focused",
|
|
1138
|
+
"apg": "pointer",
|
|
1139
|
+
"config": {
|
|
1140
|
+
"defaultOpen": true,
|
|
1141
|
+
"items": ["a", "b", "c"]
|
|
1142
|
+
},
|
|
1143
|
+
"steps": [
|
|
1144
|
+
{
|
|
1145
|
+
"event": "click",
|
|
1146
|
+
"target": "option:1"
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
"expect": {
|
|
1150
|
+
"visible": [],
|
|
1151
|
+
"value": "b"
|
|
1152
|
+
}
|
|
1153
|
+
},
|
|
1154
|
+
{
|
|
1155
|
+
"event": "click",
|
|
1156
|
+
"target": "input"
|
|
1157
|
+
},
|
|
1158
|
+
{
|
|
1159
|
+
"expect": {
|
|
1160
|
+
"visible": ["popup"],
|
|
1161
|
+
"attrs": {
|
|
1162
|
+
"option:1": {
|
|
1163
|
+
"aria-selected": "true"
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
],
|
|
1169
|
+
"notes": "Reopening restores aria-selected on the committed option."
|
|
1170
|
+
},
|
|
1171
|
+
{
|
|
1172
|
+
"id": "combobox.base-ui.extension-single-canceled-keeps-open",
|
|
1173
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L7146",
|
|
1174
|
+
"upstreamTest": "prop multiple > \"single\" keeps the popup open when selection is canceled",
|
|
1175
|
+
"apg": "extension",
|
|
1176
|
+
"config": {
|
|
1177
|
+
"defaultOpen": true,
|
|
1178
|
+
"items": ["a", "b"],
|
|
1179
|
+
"cancelValueChange": true
|
|
1180
|
+
},
|
|
1181
|
+
"steps": [
|
|
1182
|
+
{
|
|
1183
|
+
"event": "click",
|
|
1184
|
+
"target": "option:1"
|
|
1185
|
+
},
|
|
1186
|
+
{
|
|
1187
|
+
"expect": {
|
|
1188
|
+
"visible": ["popup"],
|
|
1189
|
+
"events": {
|
|
1190
|
+
"onValueChange": ["b"]
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
],
|
|
1195
|
+
"notes": "A canceled onValueChange leaves the value uncommitted and the popup open."
|
|
1196
|
+
},
|
|
1197
|
+
{
|
|
1198
|
+
"id": "combobox.base-ui.multiple-clears-input-after-select",
|
|
1199
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L7175",
|
|
1200
|
+
"upstreamTest": "prop multiple > \"multiple\" clears uncontrolled input after select when filtering",
|
|
1201
|
+
"apg": "keyboard",
|
|
1202
|
+
"config": {
|
|
1203
|
+
"multiple": true,
|
|
1204
|
+
"items": ["apple", "banana"]
|
|
1205
|
+
},
|
|
1206
|
+
"steps": [
|
|
1207
|
+
{
|
|
1208
|
+
"event": "type",
|
|
1209
|
+
"target": "input",
|
|
1210
|
+
"text": "app"
|
|
1211
|
+
},
|
|
1212
|
+
{
|
|
1213
|
+
"expect": {
|
|
1214
|
+
"visible": ["popup", "option:0"]
|
|
1215
|
+
}
|
|
1216
|
+
},
|
|
1217
|
+
{
|
|
1218
|
+
"event": "click",
|
|
1219
|
+
"target": "option:0"
|
|
1220
|
+
},
|
|
1221
|
+
{
|
|
1222
|
+
"expect": {
|
|
1223
|
+
"value": ""
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
],
|
|
1227
|
+
"notes": "In multiple mode the filter query is cleared after committing."
|
|
1228
|
+
},
|
|
1229
|
+
{
|
|
1230
|
+
"id": "combobox.base-ui.pointer-item-selects-and-closes",
|
|
1231
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/item/ComboboxItem.test.tsx#L18",
|
|
1232
|
+
"upstreamTest": "selects item and closes in single mode",
|
|
1233
|
+
"apg": "pointer",
|
|
1234
|
+
"config": {
|
|
1235
|
+
"defaultOpen": true,
|
|
1236
|
+
"items": ["one", "two"]
|
|
1237
|
+
},
|
|
1238
|
+
"steps": [
|
|
1239
|
+
{
|
|
1240
|
+
"event": "click",
|
|
1241
|
+
"target": "option:1"
|
|
1242
|
+
},
|
|
1243
|
+
{
|
|
1244
|
+
"expect": {
|
|
1245
|
+
"value": "two",
|
|
1246
|
+
"visible": []
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
]
|
|
1250
|
+
},
|
|
1251
|
+
{
|
|
1252
|
+
"id": "combobox.base-ui.pointer-disabled-item-not-selected",
|
|
1253
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/item/ComboboxItem.test.tsx#L136",
|
|
1254
|
+
"upstreamTest": "does not select disabled item",
|
|
1255
|
+
"apg": "pointer",
|
|
1256
|
+
"config": {
|
|
1257
|
+
"defaultOpen": true,
|
|
1258
|
+
"items": ["one", "two"],
|
|
1259
|
+
"disabledItems": [1]
|
|
1260
|
+
},
|
|
1261
|
+
"steps": [
|
|
1262
|
+
{
|
|
1263
|
+
"event": "click",
|
|
1264
|
+
"target": "option:1"
|
|
1265
|
+
},
|
|
1266
|
+
{
|
|
1267
|
+
"expect": {
|
|
1268
|
+
"value": "",
|
|
1269
|
+
"visible": ["popup"]
|
|
1270
|
+
}
|
|
1271
|
+
}
|
|
1272
|
+
],
|
|
1273
|
+
"notes": "A disabled option is ignored by pointer selection."
|
|
1274
|
+
},
|
|
1275
|
+
{
|
|
1276
|
+
"id": "combobox.base-ui.keyboard-item-enter-selects-highlighted",
|
|
1277
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/item/ComboboxItem.test.tsx#L192",
|
|
1278
|
+
"upstreamTest": "Enter selects highlighted item",
|
|
1279
|
+
"apg": "keyboard",
|
|
1280
|
+
"config": {
|
|
1281
|
+
"items": ["one", "two"]
|
|
1282
|
+
},
|
|
1283
|
+
"steps": [
|
|
1284
|
+
{
|
|
1285
|
+
"event": "click",
|
|
1286
|
+
"target": "input"
|
|
1287
|
+
},
|
|
1288
|
+
{
|
|
1289
|
+
"expect": {
|
|
1290
|
+
"visible": ["popup"]
|
|
1291
|
+
}
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
"event": "key",
|
|
1295
|
+
"target": "input",
|
|
1296
|
+
"key": "ArrowDown"
|
|
1297
|
+
},
|
|
1298
|
+
{
|
|
1299
|
+
"event": "key",
|
|
1300
|
+
"target": "input",
|
|
1301
|
+
"key": "Enter"
|
|
1302
|
+
},
|
|
1303
|
+
{
|
|
1304
|
+
"expect": {
|
|
1305
|
+
"value": "one",
|
|
1306
|
+
"visible": []
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
]
|
|
1310
|
+
},
|
|
1311
|
+
{
|
|
1312
|
+
"id": "combobox.base-ui.pointer-item-multiple-toggles-stays-open",
|
|
1313
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/item/ComboboxItem.test.tsx#L280",
|
|
1314
|
+
"upstreamTest": "multiple mode toggles selection and stays open",
|
|
1315
|
+
"apg": "pointer",
|
|
1316
|
+
"config": {
|
|
1317
|
+
"multiple": true,
|
|
1318
|
+
"items": ["a", "b"]
|
|
1319
|
+
},
|
|
1320
|
+
"steps": [
|
|
1321
|
+
{
|
|
1322
|
+
"event": "click",
|
|
1323
|
+
"target": "input"
|
|
1324
|
+
},
|
|
1325
|
+
{
|
|
1326
|
+
"expect": {
|
|
1327
|
+
"visible": ["popup"]
|
|
1328
|
+
}
|
|
1329
|
+
},
|
|
1330
|
+
{
|
|
1331
|
+
"event": "click",
|
|
1332
|
+
"target": "option:0"
|
|
1333
|
+
},
|
|
1334
|
+
{
|
|
1335
|
+
"expect": {
|
|
1336
|
+
"visible": ["popup"],
|
|
1337
|
+
"attrs": {
|
|
1338
|
+
"option:0": {
|
|
1339
|
+
"aria-selected": "true"
|
|
1340
|
+
}
|
|
1341
|
+
}
|
|
1342
|
+
}
|
|
1343
|
+
},
|
|
1344
|
+
{
|
|
1345
|
+
"event": "click",
|
|
1346
|
+
"target": "option:0"
|
|
1347
|
+
},
|
|
1348
|
+
{
|
|
1349
|
+
"expect": {
|
|
1350
|
+
"visible": ["popup"],
|
|
1351
|
+
"attrs": {
|
|
1352
|
+
"option:0": {
|
|
1353
|
+
"aria-selected": null
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
]
|
|
1359
|
+
},
|
|
1360
|
+
{
|
|
1361
|
+
"id": "combobox.base-ui.aria-item-selected-on-reopen",
|
|
1362
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/item/ComboboxItem.test.tsx#L312",
|
|
1363
|
+
"upstreamTest": "reflects selected value with aria-selected when reopening",
|
|
1364
|
+
"apg": "aria",
|
|
1365
|
+
"config": {
|
|
1366
|
+
"defaultValue": "two",
|
|
1367
|
+
"items": ["one", "two"]
|
|
1368
|
+
},
|
|
1369
|
+
"steps": [
|
|
1370
|
+
{
|
|
1371
|
+
"event": "click",
|
|
1372
|
+
"target": "input"
|
|
1373
|
+
},
|
|
1374
|
+
{
|
|
1375
|
+
"expect": {
|
|
1376
|
+
"visible": ["popup"],
|
|
1377
|
+
"attrs": {
|
|
1378
|
+
"option:1": {
|
|
1379
|
+
"aria-selected": "true"
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
]
|
|
1385
|
+
},
|
|
1386
|
+
{
|
|
1387
|
+
"id": "combobox.base-ui.pointer-item-mousedown-prevented",
|
|
1388
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/item/ComboboxItem.test.tsx#L251",
|
|
1389
|
+
"upstreamTest": "prevents default on mousedown so pointer selection does not steal input focus",
|
|
1390
|
+
"apg": "pointer",
|
|
1391
|
+
"config": {
|
|
1392
|
+
"defaultOpen": true,
|
|
1393
|
+
"items": ["one", "two"]
|
|
1394
|
+
},
|
|
1395
|
+
"steps": [
|
|
1396
|
+
{
|
|
1397
|
+
"event": "pointerdown",
|
|
1398
|
+
"target": "option:1"
|
|
1399
|
+
},
|
|
1400
|
+
{
|
|
1401
|
+
"expect": {
|
|
1402
|
+
"events": {
|
|
1403
|
+
"onMousedownDefaultPrevented": [true]
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1406
|
+
}
|
|
1407
|
+
],
|
|
1408
|
+
"notes": "Item mousedown is canceled so the input keeps focus during pointer selection."
|
|
1409
|
+
},
|
|
1410
|
+
{
|
|
1411
|
+
"id": "combobox.base-ui.aria-readonly-input",
|
|
1412
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5237",
|
|
1413
|
+
"upstreamTest": "prop readOnly > should render readOnly state on the input",
|
|
1414
|
+
"apg": "aria",
|
|
1415
|
+
"config": {
|
|
1416
|
+
"readOnly": true
|
|
1417
|
+
},
|
|
1418
|
+
"steps": [
|
|
1419
|
+
{
|
|
1420
|
+
"expect": {
|
|
1421
|
+
"attrs": {
|
|
1422
|
+
"input": {
|
|
1423
|
+
"aria-readonly": "true",
|
|
1424
|
+
"readonly": "true"
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
]
|
|
1430
|
+
},
|
|
1431
|
+
{
|
|
1432
|
+
"id": "combobox.base-ui.aria-readonly-autocomplete-none",
|
|
1433
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5250",
|
|
1434
|
+
"upstreamTest": "prop readOnly > should expose aria-autocomplete=\"none\" when readOnly",
|
|
1435
|
+
"apg": "aria",
|
|
1436
|
+
"config": {
|
|
1437
|
+
"readOnly": true
|
|
1438
|
+
},
|
|
1439
|
+
"steps": [
|
|
1440
|
+
{
|
|
1441
|
+
"expect": {
|
|
1442
|
+
"attrs": {
|
|
1443
|
+
"input": {
|
|
1444
|
+
"aria-autocomplete": "none"
|
|
1445
|
+
}
|
|
1446
|
+
}
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
]
|
|
1450
|
+
},
|
|
1451
|
+
{
|
|
1452
|
+
"id": "combobox.base-ui.select-only.readonly-opens-from-input-and-trigger",
|
|
1453
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5260",
|
|
1454
|
+
"upstreamTest": "prop readOnly > should open the popup from the input and the trigger when readOnly",
|
|
1455
|
+
"apg": "keyboard",
|
|
1456
|
+
"config": {
|
|
1457
|
+
"variant": "select-only",
|
|
1458
|
+
"inputInPopup": true,
|
|
1459
|
+
"readOnly": true,
|
|
1460
|
+
"items": ["a", "b"]
|
|
1461
|
+
},
|
|
1462
|
+
"steps": [
|
|
1463
|
+
{
|
|
1464
|
+
"event": "click",
|
|
1465
|
+
"target": "input"
|
|
1466
|
+
},
|
|
1467
|
+
{
|
|
1468
|
+
"expect": {
|
|
1469
|
+
"visible": ["popup"],
|
|
1470
|
+
"attrs": {
|
|
1471
|
+
"popup": {
|
|
1472
|
+
"aria-readonly": "true"
|
|
1473
|
+
}
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
},
|
|
1477
|
+
{
|
|
1478
|
+
"event": "key",
|
|
1479
|
+
"target": "input",
|
|
1480
|
+
"key": "Escape"
|
|
1481
|
+
},
|
|
1482
|
+
{
|
|
1483
|
+
"expect": {
|
|
1484
|
+
"visible": []
|
|
1485
|
+
}
|
|
1486
|
+
},
|
|
1487
|
+
{
|
|
1488
|
+
"event": "click",
|
|
1489
|
+
"target": "trigger"
|
|
1490
|
+
},
|
|
1491
|
+
{
|
|
1492
|
+
"expect": {
|
|
1493
|
+
"visible": ["popup"]
|
|
1494
|
+
}
|
|
1495
|
+
}
|
|
1496
|
+
],
|
|
1497
|
+
"notes": "readOnly still allows browsing the list."
|
|
1498
|
+
},
|
|
1499
|
+
{
|
|
1500
|
+
"id": "combobox.base-ui.keyboard-readonly-arrow-browses",
|
|
1501
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5290",
|
|
1502
|
+
"upstreamTest": "prop readOnly > should browse the items with the arrow keys when readOnly",
|
|
1503
|
+
"apg": "keyboard",
|
|
1504
|
+
"config": {
|
|
1505
|
+
"readOnly": true,
|
|
1506
|
+
"items": ["a", "b"]
|
|
1507
|
+
},
|
|
1508
|
+
"steps": [
|
|
1509
|
+
{
|
|
1510
|
+
"event": "click",
|
|
1511
|
+
"target": "input"
|
|
1512
|
+
},
|
|
1513
|
+
{
|
|
1514
|
+
"expect": {
|
|
1515
|
+
"visible": ["popup"]
|
|
1516
|
+
}
|
|
1517
|
+
},
|
|
1518
|
+
{
|
|
1519
|
+
"event": "key",
|
|
1520
|
+
"target": "input",
|
|
1521
|
+
"key": "ArrowDown"
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
"expect": {
|
|
1525
|
+
"attrs": {
|
|
1526
|
+
"input": {
|
|
1527
|
+
"aria-activedescendant": "option:0"
|
|
1528
|
+
}
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
},
|
|
1532
|
+
{
|
|
1533
|
+
"event": "key",
|
|
1534
|
+
"target": "input",
|
|
1535
|
+
"key": "ArrowDown"
|
|
1536
|
+
},
|
|
1537
|
+
{
|
|
1538
|
+
"expect": {
|
|
1539
|
+
"attrs": {
|
|
1540
|
+
"input": {
|
|
1541
|
+
"aria-activedescendant": "option:1"
|
|
1542
|
+
}
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
}
|
|
1546
|
+
]
|
|
1547
|
+
},
|
|
1548
|
+
{
|
|
1549
|
+
"id": "combobox.base-ui.extension-readonly-typing-no-change",
|
|
1550
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5322",
|
|
1551
|
+
"upstreamTest": "prop readOnly > should not change the input value when typing while readOnly",
|
|
1552
|
+
"apg": "extension",
|
|
1553
|
+
"config": {
|
|
1554
|
+
"readOnly": true,
|
|
1555
|
+
"items": ["a", "b"]
|
|
1556
|
+
},
|
|
1557
|
+
"steps": [
|
|
1558
|
+
{
|
|
1559
|
+
"event": "type",
|
|
1560
|
+
"target": "input",
|
|
1561
|
+
"text": "a"
|
|
1562
|
+
},
|
|
1563
|
+
{
|
|
1564
|
+
"expect": {
|
|
1565
|
+
"value": "",
|
|
1566
|
+
"events": {
|
|
1567
|
+
"onInputValueChange": []
|
|
1568
|
+
}
|
|
1569
|
+
}
|
|
1570
|
+
}
|
|
1571
|
+
]
|
|
1572
|
+
},
|
|
1573
|
+
{
|
|
1574
|
+
"id": "combobox.base-ui.extension-readonly-no-value-change",
|
|
1575
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5368",
|
|
1576
|
+
"upstreamTest": "prop readOnly > should prevent value changes when readOnly with items",
|
|
1577
|
+
"apg": "extension",
|
|
1578
|
+
"config": {
|
|
1579
|
+
"readOnly": true,
|
|
1580
|
+
"defaultOpen": true,
|
|
1581
|
+
"items": ["a", "b"]
|
|
1582
|
+
},
|
|
1583
|
+
"steps": [
|
|
1584
|
+
{
|
|
1585
|
+
"event": "click",
|
|
1586
|
+
"target": "option:0"
|
|
1587
|
+
},
|
|
1588
|
+
{
|
|
1589
|
+
"expect": {
|
|
1590
|
+
"value": "",
|
|
1591
|
+
"events": {
|
|
1592
|
+
"onValueChange": []
|
|
1593
|
+
}
|
|
1594
|
+
}
|
|
1595
|
+
}
|
|
1596
|
+
]
|
|
1597
|
+
},
|
|
1598
|
+
{
|
|
1599
|
+
"id": "combobox.base-ui.keyboard-readonly-enter-no-commit",
|
|
1600
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5468",
|
|
1601
|
+
"upstreamTest": "prop readOnly > should not commit a value with Enter on a highlighted item when readOnly",
|
|
1602
|
+
"apg": "keyboard",
|
|
1603
|
+
"config": {
|
|
1604
|
+
"readOnly": true,
|
|
1605
|
+
"items": ["a", "b"]
|
|
1606
|
+
},
|
|
1607
|
+
"steps": [
|
|
1608
|
+
{
|
|
1609
|
+
"event": "click",
|
|
1610
|
+
"target": "input"
|
|
1611
|
+
},
|
|
1612
|
+
{
|
|
1613
|
+
"expect": {
|
|
1614
|
+
"visible": ["popup"]
|
|
1615
|
+
}
|
|
1616
|
+
},
|
|
1617
|
+
{
|
|
1618
|
+
"event": "key",
|
|
1619
|
+
"target": "input",
|
|
1620
|
+
"key": "ArrowDown"
|
|
1621
|
+
},
|
|
1622
|
+
{
|
|
1623
|
+
"expect": {
|
|
1624
|
+
"attrs": {
|
|
1625
|
+
"input": {
|
|
1626
|
+
"aria-activedescendant": "option:0"
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
},
|
|
1631
|
+
{
|
|
1632
|
+
"event": "key",
|
|
1633
|
+
"target": "input",
|
|
1634
|
+
"key": "Enter"
|
|
1635
|
+
},
|
|
1636
|
+
{
|
|
1637
|
+
"expect": {
|
|
1638
|
+
"value": "",
|
|
1639
|
+
"events": {
|
|
1640
|
+
"onValueChange": []
|
|
1641
|
+
}
|
|
1642
|
+
}
|
|
1643
|
+
}
|
|
1644
|
+
]
|
|
1645
|
+
},
|
|
1646
|
+
{
|
|
1647
|
+
"id": "combobox.base-ui.extension-disabled-render-and-no-open",
|
|
1648
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5105",
|
|
1649
|
+
"upstreamTest": "prop disabled > should render disabled state on all interactive components",
|
|
1650
|
+
"apg": "extension",
|
|
1651
|
+
"config": {
|
|
1652
|
+
"disabled": true,
|
|
1653
|
+
"items": ["a", "b"]
|
|
1654
|
+
},
|
|
1655
|
+
"steps": [
|
|
1656
|
+
{
|
|
1657
|
+
"expect": {
|
|
1658
|
+
"attrs": {
|
|
1659
|
+
"input": {
|
|
1660
|
+
"disabled": "true"
|
|
1661
|
+
},
|
|
1662
|
+
"trigger": {
|
|
1663
|
+
"disabled": "true"
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
}
|
|
1667
|
+
},
|
|
1668
|
+
{
|
|
1669
|
+
"event": "click",
|
|
1670
|
+
"target": "trigger"
|
|
1671
|
+
},
|
|
1672
|
+
{
|
|
1673
|
+
"expect": {
|
|
1674
|
+
"visible": []
|
|
1675
|
+
}
|
|
1676
|
+
}
|
|
1677
|
+
]
|
|
1678
|
+
},
|
|
1679
|
+
{
|
|
1680
|
+
"id": "combobox.base-ui.extension-disabled-no-keyboard",
|
|
1681
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5166",
|
|
1682
|
+
"upstreamTest": "prop disabled > should prevent keyboard interactions when disabled",
|
|
1683
|
+
"apg": "extension",
|
|
1684
|
+
"config": {
|
|
1685
|
+
"disabled": true,
|
|
1686
|
+
"items": ["a", "b"]
|
|
1687
|
+
},
|
|
1688
|
+
"steps": [
|
|
1689
|
+
{
|
|
1690
|
+
"event": "type",
|
|
1691
|
+
"target": "input",
|
|
1692
|
+
"text": "a"
|
|
1693
|
+
},
|
|
1694
|
+
{
|
|
1695
|
+
"expect": {
|
|
1696
|
+
"visible": []
|
|
1697
|
+
}
|
|
1698
|
+
}
|
|
1699
|
+
]
|
|
1700
|
+
},
|
|
1701
|
+
{
|
|
1702
|
+
"id": "combobox.base-ui.select-only.aria-required-on-trigger",
|
|
1703
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/trigger/ComboboxTrigger.test.tsx#L812",
|
|
1704
|
+
"upstreamTest": "aria attributes > sets aria-required attribute when required (input inside popup)",
|
|
1705
|
+
"apg": "aria",
|
|
1706
|
+
"config": {
|
|
1707
|
+
"variant": "select-only",
|
|
1708
|
+
"inputInPopup": true,
|
|
1709
|
+
"required": true
|
|
1710
|
+
},
|
|
1711
|
+
"steps": [
|
|
1712
|
+
{
|
|
1713
|
+
"expect": {
|
|
1714
|
+
"attrs": {
|
|
1715
|
+
"trigger": {
|
|
1716
|
+
"aria-required": "true"
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
]
|
|
1722
|
+
},
|
|
1723
|
+
{
|
|
1724
|
+
"id": "combobox.base-ui.aria-required-not-on-trigger-input-outside",
|
|
1725
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/trigger/ComboboxTrigger.test.tsx#L823",
|
|
1726
|
+
"upstreamTest": "aria attributes > does not set aria-required attribute when the input is outside the popup",
|
|
1727
|
+
"apg": "aria",
|
|
1728
|
+
"config": {
|
|
1729
|
+
"required": true
|
|
1730
|
+
},
|
|
1731
|
+
"steps": [
|
|
1732
|
+
{
|
|
1733
|
+
"expect": {
|
|
1734
|
+
"attrs": {
|
|
1735
|
+
"trigger": {
|
|
1736
|
+
"aria-required": null
|
|
1737
|
+
}
|
|
1738
|
+
}
|
|
1739
|
+
}
|
|
1740
|
+
}
|
|
1741
|
+
],
|
|
1742
|
+
"notes": "When the input is outside the popup the trigger is a plain button; the required state lives on the input."
|
|
1743
|
+
},
|
|
1744
|
+
{
|
|
1745
|
+
"id": "combobox.base-ui.extension-custom-filter-narrows",
|
|
1746
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L8232",
|
|
1747
|
+
"upstreamTest": "prop filter > uses custom filter to narrow results",
|
|
1748
|
+
"apg": "extension",
|
|
1749
|
+
"config": {
|
|
1750
|
+
"items": ["alpha", "beta", "alphabet", "alpine"],
|
|
1751
|
+
"filter": "startsWith"
|
|
1752
|
+
},
|
|
1753
|
+
"steps": [
|
|
1754
|
+
{
|
|
1755
|
+
"event": "type",
|
|
1756
|
+
"target": "input",
|
|
1757
|
+
"text": "alp"
|
|
1758
|
+
},
|
|
1759
|
+
{
|
|
1760
|
+
"expect": {
|
|
1761
|
+
"visible": ["popup", "option:0", "option:1", "option:2"],
|
|
1762
|
+
"value": "alp"
|
|
1763
|
+
}
|
|
1764
|
+
}
|
|
1765
|
+
],
|
|
1766
|
+
"notes": "A startsWith filter keeps alpha, alphabet and alpine but drops beta."
|
|
1767
|
+
},
|
|
1768
|
+
{
|
|
1769
|
+
"id": "combobox.base-ui.pointer-open-on-input-click-default",
|
|
1770
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L8634",
|
|
1771
|
+
"upstreamTest": "prop openOnInputClick > opens on input click by default",
|
|
1772
|
+
"apg": "pointer",
|
|
1773
|
+
"config": {
|
|
1774
|
+
"items": ["a"]
|
|
1775
|
+
},
|
|
1776
|
+
"steps": [
|
|
1777
|
+
{
|
|
1778
|
+
"event": "click",
|
|
1779
|
+
"target": "input"
|
|
1780
|
+
},
|
|
1781
|
+
{
|
|
1782
|
+
"expect": {
|
|
1783
|
+
"visible": ["popup"]
|
|
1784
|
+
}
|
|
1785
|
+
},
|
|
1786
|
+
{
|
|
1787
|
+
"event": "click",
|
|
1788
|
+
"target": "input"
|
|
1789
|
+
},
|
|
1790
|
+
{
|
|
1791
|
+
"expect": {
|
|
1792
|
+
"visible": ["popup"]
|
|
1793
|
+
}
|
|
1794
|
+
}
|
|
1795
|
+
],
|
|
1796
|
+
"notes": "Clicking the input again does not toggle the popup closed."
|
|
1797
|
+
},
|
|
1798
|
+
{
|
|
1799
|
+
"id": "combobox.base-ui.keyboard-open-on-typing-when-click-disabled",
|
|
1800
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L8659",
|
|
1801
|
+
"upstreamTest": "prop openOnInputClick > does not open on input click when false, but opens on typing",
|
|
1802
|
+
"apg": "keyboard",
|
|
1803
|
+
"config": {
|
|
1804
|
+
"openOnInputClick": false,
|
|
1805
|
+
"items": ["a"]
|
|
1806
|
+
},
|
|
1807
|
+
"steps": [
|
|
1808
|
+
{
|
|
1809
|
+
"event": "click",
|
|
1810
|
+
"target": "input"
|
|
1811
|
+
},
|
|
1812
|
+
{
|
|
1813
|
+
"expect": {
|
|
1814
|
+
"visible": []
|
|
1815
|
+
}
|
|
1816
|
+
},
|
|
1817
|
+
{
|
|
1818
|
+
"event": "type",
|
|
1819
|
+
"target": "input",
|
|
1820
|
+
"text": "a"
|
|
1821
|
+
},
|
|
1822
|
+
{
|
|
1823
|
+
"expect": {
|
|
1824
|
+
"visible": ["popup", "option:0"]
|
|
1825
|
+
}
|
|
1826
|
+
}
|
|
1827
|
+
]
|
|
1828
|
+
},
|
|
1829
|
+
{
|
|
1830
|
+
"id": "combobox.base-ui.keyboard-autohighlight-first-match",
|
|
1831
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L9379",
|
|
1832
|
+
"upstreamTest": "prop autoHighlight > highlights the first matching item after typing (single mode)",
|
|
1833
|
+
"apg": "keyboard",
|
|
1834
|
+
"config": {
|
|
1835
|
+
"autoHighlight": true,
|
|
1836
|
+
"items": ["apple", "banana", "cherry"]
|
|
1837
|
+
},
|
|
1838
|
+
"steps": [
|
|
1839
|
+
{
|
|
1840
|
+
"event": "type",
|
|
1841
|
+
"target": "input",
|
|
1842
|
+
"text": "ch"
|
|
1843
|
+
},
|
|
1844
|
+
{
|
|
1845
|
+
"expect": {
|
|
1846
|
+
"visible": ["popup", "option:0"],
|
|
1847
|
+
"attrs": {
|
|
1848
|
+
"input": {
|
|
1849
|
+
"aria-activedescendant": "option:0"
|
|
1850
|
+
}
|
|
1851
|
+
}
|
|
1852
|
+
}
|
|
1853
|
+
}
|
|
1854
|
+
],
|
|
1855
|
+
"notes": "Opening this scenario the query 'ch' filters to cherry, the first match."
|
|
1856
|
+
},
|
|
1857
|
+
{
|
|
1858
|
+
"id": "combobox.base-ui.keyboard-autohighlight-static-list-space",
|
|
1859
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L9436",
|
|
1860
|
+
"upstreamTest": "prop autoHighlight > highlights the first matching item for a static list without the items prop",
|
|
1861
|
+
"apg": "keyboard",
|
|
1862
|
+
"config": {
|
|
1863
|
+
"autoHighlight": true,
|
|
1864
|
+
"items": ["alpha", "alphabet", "beta"]
|
|
1865
|
+
},
|
|
1866
|
+
"steps": [
|
|
1867
|
+
{
|
|
1868
|
+
"event": "type",
|
|
1869
|
+
"target": "input",
|
|
1870
|
+
"text": "al"
|
|
1871
|
+
},
|
|
1872
|
+
{
|
|
1873
|
+
"expect": {
|
|
1874
|
+
"visible": ["popup", "option:0"],
|
|
1875
|
+
"attrs": {
|
|
1876
|
+
"input": {
|
|
1877
|
+
"aria-activedescendant": "option:0"
|
|
1878
|
+
}
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
},
|
|
1882
|
+
{
|
|
1883
|
+
"event": "type",
|
|
1884
|
+
"target": "input",
|
|
1885
|
+
"text": " "
|
|
1886
|
+
},
|
|
1887
|
+
{
|
|
1888
|
+
"expect": {
|
|
1889
|
+
"attrs": {
|
|
1890
|
+
"input": {
|
|
1891
|
+
"aria-activedescendant": "option:0"
|
|
1892
|
+
}
|
|
1893
|
+
}
|
|
1894
|
+
}
|
|
1895
|
+
}
|
|
1896
|
+
],
|
|
1897
|
+
"notes": "Typing a space keeps the first match highlighted instead of selecting it."
|
|
1898
|
+
},
|
|
1899
|
+
{
|
|
1900
|
+
"id": "combobox.base-ui.aria-initial-input-from-default-value",
|
|
1901
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5633",
|
|
1902
|
+
"upstreamTest": "initial input value derivation > derives input from defaultValue on first mount when unspecified",
|
|
1903
|
+
"apg": "aria",
|
|
1904
|
+
"config": {
|
|
1905
|
+
"items": ["apple", "banana", "cherry"],
|
|
1906
|
+
"defaultValue": "banana"
|
|
1907
|
+
},
|
|
1908
|
+
"steps": [
|
|
1909
|
+
{
|
|
1910
|
+
"expect": {
|
|
1911
|
+
"value": "banana"
|
|
1912
|
+
}
|
|
1913
|
+
}
|
|
1914
|
+
]
|
|
1915
|
+
},
|
|
1916
|
+
{
|
|
1917
|
+
"id": "combobox.base-ui.extension-multiple-initial-input-empty",
|
|
1918
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5684",
|
|
1919
|
+
"upstreamTest": "initial input value derivation > multiple mode initial input remains empty",
|
|
1920
|
+
"apg": "extension",
|
|
1921
|
+
"config": {
|
|
1922
|
+
"multiple": true,
|
|
1923
|
+
"items": ["apple", "banana", "cherry"],
|
|
1924
|
+
"defaultValue": ["banana"]
|
|
1925
|
+
},
|
|
1926
|
+
"steps": [
|
|
1927
|
+
{
|
|
1928
|
+
"expect": {
|
|
1929
|
+
"value": ""
|
|
1930
|
+
}
|
|
1931
|
+
}
|
|
1932
|
+
]
|
|
1933
|
+
},
|
|
1934
|
+
{
|
|
1935
|
+
"id": "combobox.base-ui.select-only.keyboard-composition-select-and-restore",
|
|
1936
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L595",
|
|
1937
|
+
"upstreamTest": "input inside popup composition > selects with the keyboard, restores focus, and resets the query on reopen",
|
|
1938
|
+
"apg": "keyboard",
|
|
1939
|
+
"config": {
|
|
1940
|
+
"variant": "select-only",
|
|
1941
|
+
"inputInPopup": true,
|
|
1942
|
+
"items": ["Apple", "Banana", "Cherry"]
|
|
1943
|
+
},
|
|
1944
|
+
"steps": [
|
|
1945
|
+
{
|
|
1946
|
+
"event": "click",
|
|
1947
|
+
"target": "trigger"
|
|
1948
|
+
},
|
|
1949
|
+
{
|
|
1950
|
+
"expect": {
|
|
1951
|
+
"visible": ["popup"],
|
|
1952
|
+
"focus": "input"
|
|
1953
|
+
}
|
|
1954
|
+
},
|
|
1955
|
+
{
|
|
1956
|
+
"event": "type",
|
|
1957
|
+
"target": "input",
|
|
1958
|
+
"text": "ban"
|
|
1959
|
+
},
|
|
1960
|
+
{
|
|
1961
|
+
"event": "key",
|
|
1962
|
+
"target": "input",
|
|
1963
|
+
"key": "ArrowDown"
|
|
1964
|
+
},
|
|
1965
|
+
{
|
|
1966
|
+
"event": "key",
|
|
1967
|
+
"target": "input",
|
|
1968
|
+
"key": "Enter"
|
|
1969
|
+
},
|
|
1970
|
+
{
|
|
1971
|
+
"expect": {
|
|
1972
|
+
"visible": [],
|
|
1973
|
+
"focus": "trigger",
|
|
1974
|
+
"value": "Banana"
|
|
1975
|
+
}
|
|
1976
|
+
},
|
|
1977
|
+
{
|
|
1978
|
+
"event": "click",
|
|
1979
|
+
"target": "trigger"
|
|
1980
|
+
},
|
|
1981
|
+
{
|
|
1982
|
+
"expect": {
|
|
1983
|
+
"value": "",
|
|
1984
|
+
"attrs": {
|
|
1985
|
+
"option:1": {
|
|
1986
|
+
"aria-selected": "true"
|
|
1987
|
+
},
|
|
1988
|
+
"input": {
|
|
1989
|
+
"aria-activedescendant": "option:1"
|
|
1990
|
+
}
|
|
1991
|
+
}
|
|
1992
|
+
}
|
|
1993
|
+
}
|
|
1994
|
+
],
|
|
1995
|
+
"notes": "Select-only composition: the trigger shows the value, the popup input is cleared and the selection is restored and highlighted on reopen."
|
|
1996
|
+
},
|
|
1997
|
+
{
|
|
1998
|
+
"id": "combobox.base-ui.select-only.keyboard-escape-discards-query",
|
|
1999
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L642",
|
|
2000
|
+
"upstreamTest": "input inside popup composition > discards an uncommitted query on Escape and preserves the selection",
|
|
2001
|
+
"apg": "keyboard",
|
|
2002
|
+
"config": {
|
|
2003
|
+
"variant": "select-only",
|
|
2004
|
+
"inputInPopup": true,
|
|
2005
|
+
"items": ["Apple", "Banana", "Cherry"],
|
|
2006
|
+
"defaultValue": "Apple"
|
|
2007
|
+
},
|
|
2008
|
+
"steps": [
|
|
2009
|
+
{
|
|
2010
|
+
"event": "click",
|
|
2011
|
+
"target": "trigger"
|
|
2012
|
+
},
|
|
2013
|
+
{
|
|
2014
|
+
"event": "type",
|
|
2015
|
+
"target": "input",
|
|
2016
|
+
"text": "ban"
|
|
2017
|
+
},
|
|
2018
|
+
{
|
|
2019
|
+
"event": "key",
|
|
2020
|
+
"target": "input",
|
|
2021
|
+
"key": "Escape"
|
|
2022
|
+
},
|
|
2023
|
+
{
|
|
2024
|
+
"expect": {
|
|
2025
|
+
"visible": [],
|
|
2026
|
+
"focus": "trigger",
|
|
2027
|
+
"value": "Apple",
|
|
2028
|
+
"events": {
|
|
2029
|
+
"onValueChange": []
|
|
2030
|
+
}
|
|
2031
|
+
}
|
|
2032
|
+
}
|
|
2033
|
+
],
|
|
2034
|
+
"notes": "Escape abandons the query and keeps the previously selected Apple."
|
|
2035
|
+
},
|
|
2036
|
+
{
|
|
2037
|
+
"id": "combobox.base-ui.select-only.pointer-trigger-close-returns-focus",
|
|
2038
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L557",
|
|
2039
|
+
"upstreamTest": "does not focus input when closing via trigger click (input inside popup)",
|
|
2040
|
+
"apg": "pointer",
|
|
2041
|
+
"config": {
|
|
2042
|
+
"variant": "select-only",
|
|
2043
|
+
"inputInPopup": true,
|
|
2044
|
+
"items": ["One", "Two", "Three"]
|
|
2045
|
+
},
|
|
2046
|
+
"steps": [
|
|
2047
|
+
{
|
|
2048
|
+
"event": "click",
|
|
2049
|
+
"target": "trigger"
|
|
2050
|
+
},
|
|
2051
|
+
{
|
|
2052
|
+
"expect": {
|
|
2053
|
+
"visible": ["popup"],
|
|
2054
|
+
"focus": "input"
|
|
2055
|
+
}
|
|
2056
|
+
},
|
|
2057
|
+
{
|
|
2058
|
+
"event": "click",
|
|
2059
|
+
"target": "trigger"
|
|
2060
|
+
},
|
|
2061
|
+
{
|
|
2062
|
+
"expect": {
|
|
2063
|
+
"focus": "trigger"
|
|
2064
|
+
}
|
|
2065
|
+
}
|
|
2066
|
+
]
|
|
2067
|
+
},
|
|
2068
|
+
{
|
|
2069
|
+
"id": "combobox.base-ui.select-only.keyboard-trigger-typeahead",
|
|
2070
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/trigger/ComboboxTrigger.test.tsx#L914",
|
|
2071
|
+
"upstreamTest": "typeahead > selects item when typing on focused trigger (input inside popup)",
|
|
2072
|
+
"apg": "keyboard",
|
|
2073
|
+
"config": {
|
|
2074
|
+
"variant": "select-only",
|
|
2075
|
+
"inputInPopup": true,
|
|
2076
|
+
"items": ["apple", "banana", "cherry"]
|
|
2077
|
+
},
|
|
2078
|
+
"steps": [
|
|
2079
|
+
{
|
|
2080
|
+
"event": "focus",
|
|
2081
|
+
"target": "trigger"
|
|
2082
|
+
},
|
|
2083
|
+
{
|
|
2084
|
+
"event": "key",
|
|
2085
|
+
"target": "trigger",
|
|
2086
|
+
"key": "a"
|
|
2087
|
+
},
|
|
2088
|
+
{
|
|
2089
|
+
"expect": {
|
|
2090
|
+
"value": "apple",
|
|
2091
|
+
"visible": []
|
|
2092
|
+
}
|
|
2093
|
+
}
|
|
2094
|
+
],
|
|
2095
|
+
"notes": "Typeahead on a closed select-only trigger selects without opening the popup."
|
|
2096
|
+
},
|
|
2097
|
+
{
|
|
2098
|
+
"id": "combobox.base-ui.keyboard-escape-moves-focus-to-clear",
|
|
2099
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/input/ComboboxInput.test.tsx#L450",
|
|
2100
|
+
"upstreamTest": "interaction behavior > should move focus to clear button when pressing Escape and popup is closed",
|
|
2101
|
+
"apg": "keyboard",
|
|
2102
|
+
"config": {
|
|
2103
|
+
"items": ["apple", "banana"],
|
|
2104
|
+
"defaultValue": "apple",
|
|
2105
|
+
"hasClear": true
|
|
2106
|
+
},
|
|
2107
|
+
"steps": [
|
|
2108
|
+
{
|
|
2109
|
+
"event": "focus",
|
|
2110
|
+
"target": "input"
|
|
2111
|
+
},
|
|
2112
|
+
{
|
|
2113
|
+
"event": "key",
|
|
2114
|
+
"target": "input",
|
|
2115
|
+
"key": "Escape"
|
|
2116
|
+
},
|
|
2117
|
+
{
|
|
2118
|
+
"expect": {
|
|
2119
|
+
"value": ""
|
|
2120
|
+
}
|
|
2121
|
+
}
|
|
2122
|
+
],
|
|
2123
|
+
"notes": "On a closed combobox with a clear button, Escape clears the value instead of bubbling."
|
|
2124
|
+
},
|
|
2125
|
+
{
|
|
2126
|
+
"id": "combobox.base-ui.keyboard-backspace-removes-last-chip",
|
|
2127
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/input/ComboboxInput.test.tsx#L902",
|
|
2128
|
+
"upstreamTest": "interaction behavior > removes the last rendered chip when pressing Backspace in an empty input",
|
|
2129
|
+
"apg": "keyboard",
|
|
2130
|
+
"config": {
|
|
2131
|
+
"multiple": true,
|
|
2132
|
+
"defaultValue": ["apple", "banana", "cherry"],
|
|
2133
|
+
"renderedChips": 2
|
|
2134
|
+
},
|
|
2135
|
+
"steps": [
|
|
2136
|
+
{
|
|
2137
|
+
"event": "click",
|
|
2138
|
+
"target": "input"
|
|
2139
|
+
},
|
|
2140
|
+
{
|
|
2141
|
+
"event": "key",
|
|
2142
|
+
"target": "input",
|
|
2143
|
+
"key": "Backspace"
|
|
2144
|
+
},
|
|
2145
|
+
{
|
|
2146
|
+
"expect": {
|
|
2147
|
+
"events": {
|
|
2148
|
+
"onValueChange": [["apple", "cherry"]]
|
|
2149
|
+
}
|
|
2150
|
+
}
|
|
2151
|
+
}
|
|
2152
|
+
],
|
|
2153
|
+
"notes": "With only two chips rendered, the last selected value is removed."
|
|
2154
|
+
},
|
|
2155
|
+
{
|
|
2156
|
+
"id": "combobox.base-ui.extension-paste-opens-popup",
|
|
2157
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5026",
|
|
2158
|
+
"upstreamTest": "opens on paste input events",
|
|
2159
|
+
"apg": "extension",
|
|
2160
|
+
"config": {
|
|
2161
|
+
"items": ["apple", "banana"]
|
|
2162
|
+
},
|
|
2163
|
+
"steps": [
|
|
2164
|
+
{
|
|
2165
|
+
"event": "type",
|
|
2166
|
+
"target": "input",
|
|
2167
|
+
"text": "app",
|
|
2168
|
+
"inputEvent": "paste"
|
|
2169
|
+
},
|
|
2170
|
+
{
|
|
2171
|
+
"expect": {
|
|
2172
|
+
"visible": ["popup", "option:0"]
|
|
2173
|
+
}
|
|
2174
|
+
}
|
|
2175
|
+
],
|
|
2176
|
+
"notes": "A paste input event is treated as typing and opens the popup."
|
|
2177
|
+
},
|
|
2178
|
+
{
|
|
2179
|
+
"id": "combobox.base-ui.extension-programmatic-input-does-not-open",
|
|
2180
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5002",
|
|
2181
|
+
"upstreamTest": "does not open on programmatic input events",
|
|
2182
|
+
"apg": "extension",
|
|
2183
|
+
"config": {
|
|
2184
|
+
"items": ["apple", "banana"]
|
|
2185
|
+
},
|
|
2186
|
+
"steps": [
|
|
2187
|
+
{
|
|
2188
|
+
"event": "type",
|
|
2189
|
+
"target": "input",
|
|
2190
|
+
"text": "app",
|
|
2191
|
+
"inputEvent": "programmatic"
|
|
2192
|
+
},
|
|
2193
|
+
{
|
|
2194
|
+
"expect": {
|
|
2195
|
+
"visible": []
|
|
2196
|
+
}
|
|
2197
|
+
}
|
|
2198
|
+
]
|
|
2199
|
+
},
|
|
2200
|
+
{
|
|
2201
|
+
"id": "combobox.base-ui.extension-popup-initial-focus-false",
|
|
2202
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/popup/ComboboxPopup.test.tsx#L100",
|
|
2203
|
+
"upstreamTest": "honors initialFocus={false}",
|
|
2204
|
+
"apg": "extension",
|
|
2205
|
+
"config": {
|
|
2206
|
+
"variant": "select-only",
|
|
2207
|
+
"inputInPopup": true,
|
|
2208
|
+
"initialFocus": false
|
|
2209
|
+
},
|
|
2210
|
+
"steps": [
|
|
2211
|
+
{
|
|
2212
|
+
"event": "focus",
|
|
2213
|
+
"target": "trigger"
|
|
2214
|
+
},
|
|
2215
|
+
{
|
|
2216
|
+
"event": "click",
|
|
2217
|
+
"target": "trigger"
|
|
2218
|
+
},
|
|
2219
|
+
{
|
|
2220
|
+
"expect": {
|
|
2221
|
+
"visible": ["popup"],
|
|
2222
|
+
"focus": "trigger"
|
|
2223
|
+
}
|
|
2224
|
+
}
|
|
2225
|
+
],
|
|
2226
|
+
"notes": "initialFocus=false keeps focus on the trigger when the popup opens."
|
|
2227
|
+
},
|
|
2228
|
+
{
|
|
2229
|
+
"id": "combobox.base-ui.extension-popup-returns-final-focus",
|
|
2230
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/popup/ComboboxPopup.test.tsx#L122",
|
|
2231
|
+
"upstreamTest": "returns focus to an explicitly provided element when the popup closes",
|
|
2232
|
+
"apg": "extension",
|
|
2233
|
+
"config": {
|
|
2234
|
+
"defaultOpen": true,
|
|
2235
|
+
"finalFocus": "final-focus-button",
|
|
2236
|
+
"items": ["a"]
|
|
2237
|
+
},
|
|
2238
|
+
"steps": [
|
|
2239
|
+
{
|
|
2240
|
+
"event": "key",
|
|
2241
|
+
"target": "input",
|
|
2242
|
+
"key": "Escape"
|
|
2243
|
+
},
|
|
2244
|
+
{
|
|
2245
|
+
"expect": {
|
|
2246
|
+
"focus": "final-focus-button"
|
|
2247
|
+
}
|
|
2248
|
+
}
|
|
2249
|
+
],
|
|
2250
|
+
"notes": "Closing the popup restores focus to the element named by finalFocus."
|
|
2251
|
+
},
|
|
2252
|
+
{
|
|
2253
|
+
"id": "combobox.base-ui.select-only.popup-focus-on-touch",
|
|
2254
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/popup/ComboboxPopup.test.tsx#L76",
|
|
2255
|
+
"upstreamTest": "focuses the popup instead of its input when opened by touch",
|
|
2256
|
+
"apg": "pointer",
|
|
2257
|
+
"config": {
|
|
2258
|
+
"variant": "select-only",
|
|
2259
|
+
"inputInPopup": true
|
|
2260
|
+
},
|
|
2261
|
+
"steps": [
|
|
2262
|
+
{
|
|
2263
|
+
"event": "pointerdown",
|
|
2264
|
+
"target": "trigger",
|
|
2265
|
+
"pointerType": "touch"
|
|
2266
|
+
},
|
|
2267
|
+
{
|
|
2268
|
+
"expect": {
|
|
2269
|
+
"visible": ["popup"],
|
|
2270
|
+
"focus": "popup"
|
|
2271
|
+
}
|
|
2272
|
+
}
|
|
2273
|
+
],
|
|
2274
|
+
"notes": "Touch opening focuses the dialog so the on-screen keyboard does not appear immediately."
|
|
2275
|
+
},
|
|
2276
|
+
{
|
|
2277
|
+
"id": "combobox.base-ui.aria-trigger-tabindex-minus-one",
|
|
2278
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/trigger/ComboboxTrigger.test.tsx#L23",
|
|
2279
|
+
"upstreamTest": "sets tabIndex to -1 when not used as the main anchor",
|
|
2280
|
+
"apg": "aria",
|
|
2281
|
+
"config": {
|
|
2282
|
+
"variant": "select-only",
|
|
2283
|
+
"inputInPopup": false,
|
|
2284
|
+
"items": ["a"]
|
|
2285
|
+
},
|
|
2286
|
+
"steps": [
|
|
2287
|
+
{
|
|
2288
|
+
"expect": {
|
|
2289
|
+
"attrs": {
|
|
2290
|
+
"trigger": {
|
|
2291
|
+
"tabindex": "-1"
|
|
2292
|
+
}
|
|
2293
|
+
}
|
|
2294
|
+
}
|
|
2295
|
+
}
|
|
2296
|
+
],
|
|
2297
|
+
"notes": "With an input outside the popup the trigger is not a separate tab stop."
|
|
2298
|
+
},
|
|
2299
|
+
{
|
|
2300
|
+
"id": "combobox.base-ui.extension-trigger-disabled-aria",
|
|
2301
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/trigger/ComboboxTrigger.test.tsx#L44",
|
|
2302
|
+
"upstreamTest": "prop disabled > should render aria-disabled attribute when disabled",
|
|
2303
|
+
"apg": "extension",
|
|
2304
|
+
"config": {
|
|
2305
|
+
"disabled": true,
|
|
2306
|
+
"inputInPopup": true
|
|
2307
|
+
},
|
|
2308
|
+
"steps": [
|
|
2309
|
+
{
|
|
2310
|
+
"expect": {
|
|
2311
|
+
"attrs": {
|
|
2312
|
+
"trigger": {
|
|
2313
|
+
"aria-disabled": "true"
|
|
2314
|
+
}
|
|
2315
|
+
}
|
|
2316
|
+
}
|
|
2317
|
+
}
|
|
2318
|
+
]
|
|
2319
|
+
},
|
|
2320
|
+
{
|
|
2321
|
+
"id": "combobox.base-ui.extension-trigger-readonly",
|
|
2322
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/trigger/ComboboxTrigger.test.tsx#L228",
|
|
2323
|
+
"upstreamTest": "prop readOnly > applies the data-readonly style hook only when readOnly",
|
|
2324
|
+
"apg": "extension",
|
|
2325
|
+
"config": {
|
|
2326
|
+
"readOnly": true,
|
|
2327
|
+
"inputInPopup": true
|
|
2328
|
+
},
|
|
2329
|
+
"steps": [
|
|
2330
|
+
{
|
|
2331
|
+
"expect": {
|
|
2332
|
+
"attrs": {
|
|
2333
|
+
"trigger": {
|
|
2334
|
+
"aria-readonly": "true"
|
|
2335
|
+
}
|
|
2336
|
+
}
|
|
2337
|
+
}
|
|
2338
|
+
}
|
|
2339
|
+
]
|
|
2340
|
+
}
|
|
2341
|
+
],
|
|
2342
|
+
"skipped": [
|
|
2343
|
+
{
|
|
2344
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4296",
|
|
2345
|
+
"upstreamTest": "should handle browser autofill / shows all items after autofill / autofill matches",
|
|
2346
|
+
"reason": "Browser autofill platform behaviour."
|
|
2347
|
+
},
|
|
2348
|
+
{
|
|
2349
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L4927",
|
|
2350
|
+
"upstreamTest": "touch scroll lock",
|
|
2351
|
+
"reason": "Touch scroll-lock platform behaviour."
|
|
2352
|
+
},
|
|
2353
|
+
{
|
|
2354
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L6657",
|
|
2355
|
+
"upstreamTest": "prop grid > arrow keys navigate across rows and columns / uneven rows / RTL grid navigation",
|
|
2356
|
+
"reason": "Grid layout geometry beyond the combobox pattern's listbox variant (the single grid role/aria test is ported)."
|
|
2357
|
+
},
|
|
2358
|
+
{
|
|
2359
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5502",
|
|
2360
|
+
"upstreamTest": "prop itemToStringLabel / itemToStringValue",
|
|
2361
|
+
"reason": "Value-to-label stringification internals."
|
|
2362
|
+
},
|
|
2363
|
+
{
|
|
2364
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5720",
|
|
2365
|
+
"upstreamTest": "input value synchronization edge cases (async items, frozen query, mirrored selection)",
|
|
2366
|
+
"reason": "Async item loading and controlled-sync internals; the observable derivations are ported elsewhere."
|
|
2367
|
+
},
|
|
2368
|
+
{
|
|
2369
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L182",
|
|
2370
|
+
"upstreamTest": "manual unmount lifecycle / server-side rendering",
|
|
2371
|
+
"reason": "Mount lifecycle and SSR internals."
|
|
2372
|
+
},
|
|
2373
|
+
{
|
|
2374
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L3629",
|
|
2375
|
+
"upstreamTest": "should create multiple hidden inputs for form submission / disabled / readOnly hidden inputs",
|
|
2376
|
+
"reason": "Form hidden-input internals."
|
|
2377
|
+
},
|
|
2378
|
+
{
|
|
2379
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5054",
|
|
2380
|
+
"upstreamTest": "prop id",
|
|
2381
|
+
"reason": "id propagation internals (the aria-controls target is ported)."
|
|
2382
|
+
},
|
|
2383
|
+
{
|
|
2384
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L8684",
|
|
2385
|
+
"upstreamTest": "scroll reset on input value change",
|
|
2386
|
+
"reason": "Scroll position internals."
|
|
2387
|
+
},
|
|
2388
|
+
{
|
|
2389
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L9036",
|
|
2390
|
+
"upstreamTest": "asynchronous autoHighlight candidates / controlled popup waits",
|
|
2391
|
+
"reason": "Async item-loading internals."
|
|
2392
|
+
},
|
|
2393
|
+
{
|
|
2394
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L465",
|
|
2395
|
+
"upstreamTest": "item link handling (anchor href / hash)",
|
|
2396
|
+
"reason": "DOM link navigation internals."
|
|
2397
|
+
},
|
|
2398
|
+
{
|
|
2399
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/input/ComboboxInput.test.tsx#L90",
|
|
2400
|
+
"upstreamTest": "rendering as a different element (textarea)",
|
|
2401
|
+
"reason": "React polymorphic rendering of a textarea; not APG combobox behaviour."
|
|
2402
|
+
},
|
|
2403
|
+
{
|
|
2404
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/input/ComboboxInput.test.tsx#L576",
|
|
2405
|
+
"upstreamTest": "preserves caret position when controlled and inserting in the middle / Home and End scroll",
|
|
2406
|
+
"reason": "Caret and scroll internals."
|
|
2407
|
+
},
|
|
2408
|
+
{
|
|
2409
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/input/ComboboxInput.test.tsx#L609",
|
|
2410
|
+
"upstreamTest": "navigates an existing chip highlight when focus returns to the input",
|
|
2411
|
+
"reason": "Chip highlight internals for a multiple-selection extension."
|
|
2412
|
+
},
|
|
2413
|
+
{
|
|
2414
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/item/ComboboxItem.test.tsx#L429",
|
|
2415
|
+
"upstreamTest": "virtualized without explicit index / virtualized with explicit index",
|
|
2416
|
+
"reason": "Virtualization internals."
|
|
2417
|
+
},
|
|
2418
|
+
{
|
|
2419
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/trigger/ComboboxTrigger.test.tsx#L485",
|
|
2420
|
+
"upstreamTest": "drag selection / cancel-open",
|
|
2421
|
+
"reason": "Pointer-drag gesture internals."
|
|
2422
|
+
},
|
|
2423
|
+
{
|
|
2424
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/popup/ComboboxPopup.test.tsx#L143",
|
|
2425
|
+
"upstreamTest": "popup data attributes mapping",
|
|
2426
|
+
"reason": "Styling data attributes."
|
|
2427
|
+
},
|
|
2428
|
+
{
|
|
2429
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5211",
|
|
2430
|
+
"upstreamTest": "prop required > hidden input required state in multiple mode",
|
|
2431
|
+
"reason": "Form hidden-input internals; the APG-relevant aria-required on the select-only trigger is ported."
|
|
2432
|
+
},
|
|
2433
|
+
{
|
|
2434
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/input/ComboboxInput.test.tsx#L417",
|
|
2435
|
+
"upstreamTest": "interaction behavior > multiple selection with chips when readOnly / disabled",
|
|
2436
|
+
"reason": "Chips are a multiple-selection extension outside the four combobox parts."
|
|
2437
|
+
},
|
|
2438
|
+
{
|
|
2439
|
+
"upstream": "https://github.com/mui/base-ui/blob/19511bb171f3b360b006c94cf6d07e53cb446505/packages/react/src/combobox/root/ComboboxRoot.test.tsx#L5104",
|
|
2440
|
+
"upstreamTest": "prop disabled > should set disabled attribute on hidden input",
|
|
2441
|
+
"reason": "Form hidden-input internals."
|
|
2442
|
+
}
|
|
2443
|
+
]
|
|
2444
|
+
}
|