@@ -900,3 +900,151 @@ test('last select item can be accessed via scrolling when select placed at cente
900900 } ) ;
901901 await expect ( lastItem ) . toBeVisible ( ) ;
902902} ) ;
903+
904+ test ( 'should display "All" chip when all items are selected in multiple mode' , async ( {
905+ mount,
906+ page,
907+ } ) => {
908+ await mount ( `
909+ <ix-select mode="multiple" collapse-multiple-selection>
910+ <ix-select-item value="1" label="Item 1">Test</ix-select-item>
911+ <ix-select-item value="2" label="Item 2">Test</ix-select-item>
912+ <ix-select-item value="3" label="Item 3">Test</ix-select-item>
913+ </ix-select>
914+ ` ) ;
915+
916+ const selectElement = page . locator ( 'ix-select' ) ;
917+ const chipsContainer = selectElement . locator ( '.chips' ) ;
918+
919+ await page . locator ( '[data-select-dropdown]' ) . click ( ) ;
920+
921+ const item1 = selectElement . locator ( 'ix-select-item' ) . nth ( 0 ) ;
922+ const item2 = selectElement . locator ( 'ix-select-item' ) . nth ( 1 ) ;
923+ const item3 = selectElement . locator ( 'ix-select-item' ) . nth ( 2 ) ;
924+ await item1 . click ( ) ;
925+ await item2 . click ( ) ;
926+ await item3 . click ( ) ;
927+
928+ const allChip = chipsContainer
929+ . locator ( 'ix-filter-chip' )
930+ . filter ( { hasText : 'All (3)' } ) ;
931+
932+ await expect ( allChip ) . toBeVisible ( ) ;
933+
934+ const chip1 = chipsContainer
935+ . locator ( 'ix-filter-chip' )
936+ . filter ( { hasText : 'Item 1' } ) ;
937+
938+ const chip2 = chipsContainer
939+ . locator ( 'ix-filter-chip' )
940+ . filter ( { hasText : 'Item 2' } ) ;
941+
942+ const chip3 = chipsContainer
943+ . locator ( 'ix-filter-chip' )
944+ . filter ( { hasText : 'Item 3' } ) ;
945+
946+ await expect ( chip1 ) . not . toBeVisible ( ) ;
947+ await expect ( chip2 ) . not . toBeVisible ( ) ;
948+ await expect ( chip3 ) . not . toBeVisible ( ) ;
949+ } ) ;
950+
951+ test ( 'should clear items if "All" chip is clicked' , async ( { mount, page } ) => {
952+ await mount ( `
953+ <ix-select mode="multiple" collapse-multiple-selection>
954+ <ix-select-item value="1" label="Item 1">Test</ix-select-item>
955+ <ix-select-item value="2" label="Item 2">Test</ix-select-item>
956+ <ix-select-item value="3" label="Item 3">Test</ix-select-item>
957+ </ix-select>
958+ ` ) ;
959+
960+ const selectElement = page . locator ( 'ix-select' ) ;
961+ const chipsContainer = selectElement . locator ( '.chips' ) ;
962+
963+ await page . locator ( '[data-select-dropdown]' ) . click ( ) ;
964+
965+ const item1 = selectElement . locator ( 'ix-select-item' ) . nth ( 0 ) ;
966+ const item2 = selectElement . locator ( 'ix-select-item' ) . nth ( 1 ) ;
967+ const item3 = selectElement . locator ( 'ix-select-item' ) . nth ( 2 ) ;
968+ await item1 . click ( ) ;
969+ await item2 . click ( ) ;
970+ await item3 . click ( ) ;
971+
972+ const allChip = chipsContainer
973+ . locator ( 'ix-filter-chip' )
974+ . filter ( { hasText : 'All (3)' } ) ;
975+
976+ await expect ( allChip ) . toBeVisible ( ) ;
977+
978+ const chip1 = chipsContainer
979+ . locator ( 'ix-filter-chip' )
980+ . filter ( { hasText : 'Item 1' } ) ;
981+
982+ const chip2 = chipsContainer
983+ . locator ( 'ix-filter-chip' )
984+ . filter ( { hasText : 'Item 2' } ) ;
985+
986+ const chip3 = chipsContainer
987+ . locator ( 'ix-filter-chip' )
988+ . filter ( { hasText : 'Item 3' } ) ;
989+
990+ await expect ( chip1 ) . not . toBeVisible ( ) ;
991+ await expect ( chip2 ) . not . toBeVisible ( ) ;
992+ await expect ( chip3 ) . not . toBeVisible ( ) ;
993+
994+ await allChip . getByRole ( 'button' , { name : 'All' } ) . click ( ) ;
995+ await expect ( allChip ) . not . toBeVisible ( ) ;
996+ } ) ;
997+
998+ test ( 'should not show "All" chip of de-selected a item' , async ( {
999+ mount,
1000+ page,
1001+ } ) => {
1002+ await mount ( `
1003+ <ix-select mode="multiple" collapse-multiple-selection>
1004+ <ix-select-item value="1" label="Item 1">Test</ix-select-item>
1005+ <ix-select-item value="2" label="Item 2">Test</ix-select-item>
1006+ <ix-select-item value="3" label="Item 3">Test</ix-select-item>
1007+ </ix-select>
1008+ ` ) ;
1009+
1010+ const selectElement = page . locator ( 'ix-select' ) ;
1011+ const chipsContainer = selectElement . locator ( '.chips' ) ;
1012+
1013+ await page . locator ( '[data-select-dropdown]' ) . click ( ) ;
1014+
1015+ const item1 = selectElement . locator ( 'ix-select-item' ) . nth ( 0 ) ;
1016+ const item2 = selectElement . locator ( 'ix-select-item' ) . nth ( 1 ) ;
1017+ const item3 = selectElement . locator ( 'ix-select-item' ) . nth ( 2 ) ;
1018+ await item1 . click ( ) ;
1019+ await item2 . click ( ) ;
1020+ await item3 . click ( ) ;
1021+
1022+ const allChip = chipsContainer
1023+ . locator ( 'ix-filter-chip' )
1024+ . filter ( { hasText : 'All (3)' } ) ;
1025+
1026+ await expect ( allChip ) . toBeVisible ( ) ;
1027+
1028+ const chip1 = chipsContainer
1029+ . locator ( 'ix-filter-chip' )
1030+ . filter ( { hasText : 'Item 1' } ) ;
1031+
1032+ const chip2 = chipsContainer
1033+ . locator ( 'ix-filter-chip' )
1034+ . filter ( { hasText : 'Item 2' } ) ;
1035+
1036+ const chip3 = chipsContainer
1037+ . locator ( 'ix-filter-chip' )
1038+ . filter ( { hasText : 'Item 3' } ) ;
1039+
1040+ await expect ( chip1 ) . not . toBeVisible ( ) ;
1041+ await expect ( chip2 ) . not . toBeVisible ( ) ;
1042+ await expect ( chip3 ) . not . toBeVisible ( ) ;
1043+
1044+ await item3 . click ( ) ;
1045+ await expect ( chip1 ) . toBeVisible ( ) ;
1046+ await expect ( chip2 ) . toBeVisible ( ) ;
1047+ await expect ( chip3 ) . not . toBeVisible ( ) ;
1048+
1049+ await expect ( allChip ) . not . toBeVisible ( ) ;
1050+ } ) ;
0 commit comments