@@ -171,43 +171,6 @@ describe('Combobox', () => {
171
171
} ) ;
172
172
} ) ;
173
173
174
- describe ( 'Expansion' , ( ) => {
175
- beforeEach ( ( ) => setupCombobox ( ) ) ;
176
-
177
- it ( 'should open on click' , ( ) => {
178
- click ( inputElement ) ;
179
- expect ( comboboxInstance . pattern . expanded ( ) ) . toBe ( true ) ;
180
- } ) ;
181
-
182
- it ( 'should open on ArrowDown' , ( ) => {
183
- keydown ( 'ArrowDown' ) ;
184
- expect ( comboboxInstance . pattern . expanded ( ) ) . toBe ( true ) ;
185
- } ) ;
186
-
187
- it ( 'should open on ArrowUp' , ( ) => {
188
- keydown ( 'ArrowUp' ) ;
189
- expect ( comboboxInstance . pattern . expanded ( ) ) . toBe ( true ) ;
190
- } ) ;
191
-
192
- it ( 'should close on Escape' , ( ) => {
193
- down ( ) ;
194
- escape ( ) ;
195
- expect ( comboboxInstance . pattern . expanded ( ) ) . toBe ( false ) ;
196
- } ) ;
197
-
198
- it ( 'should close on focusout' , ( ) => {
199
- focus ( ) ;
200
- blur ( ) ;
201
- expect ( comboboxInstance . pattern . expanded ( ) ) . toBe ( false ) ;
202
- } ) ;
203
-
204
- it ( 'should not close on focusout if focus moves to an element inside the container' , ( ) => {
205
- down ( ) ;
206
- blur ( getOptions ( ) [ 0 ] ! ) ;
207
- expect ( comboboxInstance . pattern . expanded ( ) ) . toBe ( true ) ;
208
- } ) ;
209
- } ) ;
210
-
211
174
describe ( 'Navigation' , ( ) => {
212
175
beforeEach ( ( ) => setupCombobox ( ) ) ;
213
176
@@ -258,6 +221,73 @@ describe('Combobox', () => {
258
221
} ) ;
259
222
} ) ;
260
223
224
+ describe ( 'Expansion' , ( ) => {
225
+ beforeEach ( ( ) => setupCombobox ( ) ) ;
226
+
227
+ it ( 'should open on click' , ( ) => {
228
+ focus ( ) ;
229
+ click ( inputElement ) ;
230
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
231
+ } ) ;
232
+
233
+ it ( 'should open on ArrowDown' , ( ) => {
234
+ focus ( ) ;
235
+ keydown ( 'ArrowDown' ) ;
236
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
237
+ } ) ;
238
+
239
+ it ( 'should open on ArrowUp' , ( ) => {
240
+ focus ( ) ;
241
+ keydown ( 'ArrowUp' ) ;
242
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
243
+ } ) ;
244
+
245
+ it ( 'should close on Escape' , ( ) => {
246
+ down ( ) ;
247
+ escape ( ) ;
248
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'false' ) ;
249
+ } ) ;
250
+
251
+ it ( 'should close on focusout' , ( ) => {
252
+ focus ( ) ;
253
+ blur ( ) ;
254
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'false' ) ;
255
+ } ) ;
256
+
257
+ it ( 'should not close on focusout if focus moves to an element inside the container' , ( ) => {
258
+ down ( ) ;
259
+ blur ( getOption ( 'Apple' ) ! ) ;
260
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
261
+ } ) ;
262
+
263
+ it ( 'should clear the completion string and not close on escape when a completion is present' , ( ) => {
264
+ fixture . componentInstance . filterMode . set ( 'highlight' ) ;
265
+ focus ( ) ;
266
+ input ( 'A' ) ;
267
+ expect ( inputElement . value ) . toBe ( 'Apple' ) ;
268
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
269
+ escape ( ) ;
270
+ expect ( inputElement . value ) . toBe ( 'A' ) ;
271
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
272
+ escape ( ) ;
273
+ expect ( inputElement . value ) . toBe ( 'A' ) ;
274
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'false' ) ;
275
+ } ) ;
276
+
277
+ it ( 'should close on enter' , ( ) => {
278
+ down ( ) ;
279
+ enter ( ) ;
280
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'false' ) ;
281
+ } ) ;
282
+
283
+ it ( 'should close on click to select an item' , ( ) => {
284
+ down ( ) ;
285
+ const fruitItem = getOption ( 'Apple' ) ! ;
286
+ click ( fruitItem ) ;
287
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'false' ) ;
288
+ } ) ;
289
+ } ) ;
290
+
261
291
describe ( 'Selection' , ( ) => {
262
292
describe ( 'when filterMode is "manual"' , ( ) => {
263
293
beforeEach ( ( ) => setupCombobox ( { filterMode : 'manual' } ) ) ;
@@ -955,6 +985,73 @@ describe('Combobox', () => {
955
985
} ) ;
956
986
} ) ;
957
987
988
+ describe ( 'Expansion' , ( ) => {
989
+ beforeEach ( ( ) => setupCombobox ( ) ) ;
990
+
991
+ it ( 'should open on click' , ( ) => {
992
+ focus ( ) ;
993
+ click ( inputElement ) ;
994
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
995
+ } ) ;
996
+
997
+ it ( 'should open on ArrowDown' , ( ) => {
998
+ focus ( ) ;
999
+ keydown ( 'ArrowDown' ) ;
1000
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
1001
+ } ) ;
1002
+
1003
+ it ( 'should open on ArrowUp' , ( ) => {
1004
+ focus ( ) ;
1005
+ keydown ( 'ArrowUp' ) ;
1006
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
1007
+ } ) ;
1008
+
1009
+ it ( 'should close on Escape' , ( ) => {
1010
+ down ( ) ;
1011
+ escape ( ) ;
1012
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'false' ) ;
1013
+ } ) ;
1014
+
1015
+ it ( 'should close on focusout' , ( ) => {
1016
+ focus ( ) ;
1017
+ blur ( ) ;
1018
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'false' ) ;
1019
+ } ) ;
1020
+
1021
+ it ( 'should not close on focusout if focus moves to an element inside the container' , ( ) => {
1022
+ down ( ) ;
1023
+ blur ( getTreeItem ( 'Fruit' ) ! ) ;
1024
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
1025
+ } ) ;
1026
+
1027
+ it ( 'should clear the completion string and not close on escape when a completion is present' , ( ) => {
1028
+ fixture . componentInstance . filterMode . set ( 'highlight' ) ;
1029
+ focus ( ) ;
1030
+ input ( 'A' ) ;
1031
+ expect ( inputElement . value ) . toBe ( 'Apple' ) ;
1032
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
1033
+ escape ( ) ;
1034
+ expect ( inputElement . value ) . toBe ( 'A' ) ;
1035
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'true' ) ;
1036
+ escape ( ) ;
1037
+ expect ( inputElement . value ) . toBe ( 'A' ) ;
1038
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'false' ) ;
1039
+ } ) ;
1040
+
1041
+ it ( 'should close on enter' , ( ) => {
1042
+ down ( ) ;
1043
+ enter ( ) ;
1044
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'false' ) ;
1045
+ } ) ;
1046
+
1047
+ it ( 'should close on click to select an item' , ( ) => {
1048
+ down ( ) ;
1049
+ const fruitItem = getTreeItem ( 'Fruit' ) ! ;
1050
+ click ( fruitItem ) ;
1051
+ expect ( inputElement . getAttribute ( 'aria-expanded' ) ) . toBe ( 'false' ) ;
1052
+ } ) ;
1053
+ } ) ;
1054
+
958
1055
describe ( 'with disabled items' , ( ) => {
959
1056
beforeEach ( ( ) => {
960
1057
setupCombobox ( ) ;
@@ -1260,7 +1357,6 @@ class ComboboxListboxExample {
1260
1357
</ng-template>
1261
1358
</div>
1262
1359
` ,
1263
- standalone : true ,
1264
1360
imports : [
1265
1361
CdkCombobox ,
1266
1362
CdkComboboxInput ,
0 commit comments