@@ -45,6 +45,18 @@ describe("calcite-list-item", () => {
45
45
propertyName : "open" ,
46
46
defaultValue : false ,
47
47
} ,
48
+ {
49
+ propertyName : "expanded" ,
50
+ defaultValue : false ,
51
+ } ,
52
+ {
53
+ propertyName : "closed" ,
54
+ defaultValue : false ,
55
+ } ,
56
+ {
57
+ propertyName : "closable" ,
58
+ defaultValue : false ,
59
+ } ,
48
60
{
49
61
propertyName : "dragHandle" ,
50
62
defaultValue : false ,
@@ -90,6 +102,22 @@ describe("calcite-list-item", () => {
90
102
propertyName : "sortHandleOpen" ,
91
103
value : true ,
92
104
} ,
105
+ {
106
+ propertyName : "open" ,
107
+ value : true ,
108
+ } ,
109
+ {
110
+ propertyName : "expanded" ,
111
+ value : true ,
112
+ } ,
113
+ {
114
+ propertyName : "closed" ,
115
+ value : true ,
116
+ } ,
117
+ {
118
+ propertyName : "closable" ,
119
+ value : true ,
120
+ } ,
93
121
] ) ;
94
122
} ) ;
95
123
@@ -370,50 +398,69 @@ describe("calcite-list-item", () => {
370
398
expect ( calciteListItemClose ) . toHaveReceivedEventTimes ( 1 ) ;
371
399
} ) ;
372
400
373
- it ( "should fire calciteListItemToggle event when opened and closed" , async ( ) => {
374
- const page = await newE2EPage ( {
375
- html : html `< calcite-list-item id ="test " display-mode ="nested "
376
- > < calcite-list display-mode ="nested "> < calcite-list-item > </ calcite-list-item > </ calcite-list
377
- > </ calcite-list-item > ` ,
401
+ describe ( "calciteListItemToggle event" , ( ) => {
402
+ it ( "should fire calciteListItemToggle event when expanded and collapsed" , async ( ) => {
403
+ const page = await newE2EPage ( {
404
+ html : html `< calcite-list-item id ="test " display-mode ="nested "
405
+ > < calcite-list display-mode ="nested "> < calcite-list-item > </ calcite-list-item > </ calcite-list
406
+ > </ calcite-list-item > ` ,
407
+ } ) ;
408
+
409
+ const listItem = await page . find ( "#test" ) ;
410
+ const calciteListItemToggle = await page . spyOnEvent ( "calciteListItemToggle" , "window" ) ;
411
+
412
+ expect ( await listItem . getProperty ( "expanded" ) ) . toBe ( false ) ;
413
+
414
+ const expandedButton = await page . find ( `#test >>> .${ CSS . expandedContainer } ` ) ;
415
+
416
+ await expandedButton . click ( ) ;
417
+ expect ( await listItem . getProperty ( "expanded" ) ) . toBe ( true ) ;
418
+ expect ( calciteListItemToggle ) . toHaveReceivedEventTimes ( 1 ) ;
419
+
420
+ await expandedButton . click ( ) ;
421
+ expect ( await listItem . getProperty ( "expanded" ) ) . toBe ( false ) ;
422
+ expect ( calciteListItemToggle ) . toHaveReceivedEventTimes ( 2 ) ;
378
423
} ) ;
379
424
380
- const listItem = await page . find ( "#test" ) ;
381
- const calciteListItemToggle = await page . spyOnEvent ( "calciteListItemToggle" , "window" ) ;
425
+ it ( "should not fire calciteListItemToggle event without nested items" , async ( ) => {
426
+ const page = await newE2EPage ( {
427
+ html : html `< calcite-list-item display-mode ="nested "> </ calcite-list-item > ` ,
428
+ } ) ;
382
429
383
- expect ( await listItem . getProperty ( "open" ) ) . toBe ( false ) ;
430
+ const listItem = await page . find ( "calcite-list-item" ) ;
431
+ const calciteListItemToggle = await page . spyOnEvent ( "calciteListItemToggle" , "window" ) ;
384
432
385
- const openButton = await page . find ( `#test >>> . ${ CSS . openContainer } ` ) ;
433
+ expect ( await listItem . getProperty ( "expanded" ) ) . toBe ( false ) ;
386
434
387
- await openButton . click ( ) ;
388
- expect ( await listItem . getProperty ( "open" ) ) . toBe ( true ) ;
389
- expect ( calciteListItemToggle ) . toHaveReceivedEventTimes ( 1 ) ;
435
+ const expandedButton = await page . find ( `calcite-list-item >>> .${ CSS . expandedContainer } ` ) ;
390
436
391
- await openButton . click ( ) ;
392
- expect ( await listItem . getProperty ( "open" ) ) . toBe ( false ) ;
393
- expect ( calciteListItemToggle ) . toHaveReceivedEventTimes ( 2 ) ;
437
+ expect ( expandedButton . getAttribute ( "title" ) ) . toBe ( null ) ;
438
+
439
+ await expandedButton . click ( ) ;
440
+ expect ( await listItem . getProperty ( "expanded" ) ) . toBe ( false ) ;
441
+ expect ( calciteListItemToggle ) . toHaveReceivedEventTimes ( 0 ) ;
442
+
443
+ await expandedButton . click ( ) ;
444
+ expect ( await listItem . getProperty ( "expanded" ) ) . toBe ( false ) ;
445
+ expect ( calciteListItemToggle ) . toHaveReceivedEventTimes ( 0 ) ;
446
+ } ) ;
394
447
} ) ;
395
448
396
- it ( "should not fire calciteListItemToggle event without nested items" , async ( ) => {
449
+ // Broader functionality related to the 'expanded' prop is covered in the `expanded` tests.
450
+ it ( "should map deprecated 'open' prop to 'expanded' prop" , async ( ) => {
397
451
const page = await newE2EPage ( {
398
- html : html `< calcite-list-item display-mode =" nested " > </ calcite-list-item > ` ,
452
+ html : html `< calcite-list-item > </ calcite-list-item > ` ,
399
453
} ) ;
400
-
401
454
const listItem = await page . find ( "calcite-list-item" ) ;
402
- const calciteListItemToggle = await page . spyOnEvent ( "calciteListItemToggle" , "window" ) ;
403
-
404
- expect ( await listItem . getProperty ( "open" ) ) . toBe ( false ) ;
455
+ expect ( await listItem . getProperty ( "expanded" ) ) . toBe ( false ) ;
405
456
406
- const openButton = await page . find ( `calcite-list-item >>> .${ CSS . openContainer } ` ) ;
407
-
408
- expect ( openButton . getAttribute ( "title" ) ) . toBe ( null ) ;
409
-
410
- await openButton . click ( ) ;
411
- expect ( await listItem . getProperty ( "open" ) ) . toBe ( false ) ;
412
- expect ( calciteListItemToggle ) . toHaveReceivedEventTimes ( 0 ) ;
457
+ listItem . setProperty ( "open" , true ) ;
458
+ await page . waitForChanges ( ) ;
459
+ expect ( await listItem . getProperty ( "expanded" ) ) . toBe ( true ) ;
413
460
414
- await openButton . click ( ) ;
415
- expect ( await listItem . getProperty ( "open" ) ) . toBe ( false ) ;
416
- expect ( calciteListItemToggle ) . toHaveReceivedEventTimes ( 0 ) ;
461
+ listItem . setProperty ( "open" , false ) ;
462
+ await page . waitForChanges ( ) ;
463
+ expect ( await listItem . getProperty ( "expanded" ) ) . toBe ( false ) ;
417
464
} ) ;
418
465
419
466
it ( "should set displayMode on slotted list" , async ( ) => {
@@ -438,16 +485,16 @@ describe("calcite-list-item", () => {
438
485
expect ( await list . getProperty ( "displayMode" ) ) . toBe ( "flat" ) ;
439
486
} ) ;
440
487
441
- it ( "flat list should not render open container" , async ( ) => {
488
+ it ( "flat list should not render expanded container" , async ( ) => {
442
489
const page = await newE2EPage ( {
443
490
html : html `< calcite-list-item display-mode ="flat "
444
491
> < calcite-list > < calcite-list-item > </ calcite-list-item > </ calcite-list
445
492
> </ calcite-list-item > ` ,
446
493
} ) ;
447
494
448
- const openButton = await page . find ( `calcite-list-item >>> .${ CSS . openContainer } ` ) ;
495
+ const expandedButton = await page . find ( `calcite-list-item >>> .${ CSS . expandedContainer } ` ) ;
449
496
450
- expect ( openButton ) . toBe ( null ) ;
497
+ expect ( expandedButton ) . toBe ( null ) ;
451
498
} ) ;
452
499
453
500
it ( "renders with iconStart" , async ( ) => {
@@ -526,6 +573,7 @@ describe("calcite-list-item", () => {
526
573
} ,
527
574
) ;
528
575
} ) ;
576
+
529
577
describe ( `selection-appearance="border"` , ( ) => {
530
578
themed (
531
579
html `< calcite-list-item
0 commit comments