@furystack/shades-common-components 12.4.0 → 12.5.0
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/CHANGELOG.md +56 -0
- package/esm/components/app-bar-link.spec.js +16 -19
- package/esm/components/app-bar-link.spec.js.map +1 -1
- package/esm/components/app-bar.spec.js +6 -4
- package/esm/components/app-bar.spec.js.map +1 -1
- package/esm/components/avatar.spec.js +9 -9
- package/esm/components/avatar.spec.js.map +1 -1
- package/esm/components/breadcrumb.spec.js +2 -2
- package/esm/components/breadcrumb.spec.js.map +1 -1
- package/esm/components/button-group.d.ts +32 -0
- package/esm/components/button-group.d.ts.map +1 -1
- package/esm/components/button-group.js +26 -2
- package/esm/components/button-group.js.map +1 -1
- package/esm/components/button-group.spec.js +127 -11
- package/esm/components/button-group.spec.js.map +1 -1
- package/esm/components/button.spec.js +4 -4
- package/esm/components/button.spec.js.map +1 -1
- package/esm/components/cache-view.spec.js +2 -3
- package/esm/components/cache-view.spec.js.map +1 -1
- package/esm/components/carousel.spec.js +47 -47
- package/esm/components/carousel.spec.js.map +1 -1
- package/esm/components/circular-progress.spec.js +2 -2
- package/esm/components/command-palette/command-palette-input.spec.js +23 -19
- package/esm/components/command-palette/command-palette-input.spec.js.map +1 -1
- package/esm/components/command-palette/command-palette-suggestion-list.spec.js +27 -27
- package/esm/components/command-palette/command-palette-suggestion-list.spec.js.map +1 -1
- package/esm/components/command-palette/index.spec.js +64 -51
- package/esm/components/command-palette/index.spec.js.map +1 -1
- package/esm/components/context-menu/context-menu.spec.js +33 -33
- package/esm/components/context-menu/context-menu.spec.js.map +1 -1
- package/esm/components/data-grid/body.spec.js +13 -13
- package/esm/components/data-grid/body.spec.js.map +1 -1
- package/esm/components/data-grid/data-grid-row.spec.js +8 -8
- package/esm/components/data-grid/data-grid-row.spec.js.map +1 -1
- package/esm/components/data-grid/data-grid.d.ts +40 -2
- package/esm/components/data-grid/data-grid.d.ts.map +1 -1
- package/esm/components/data-grid/data-grid.js +7 -10
- package/esm/components/data-grid/data-grid.js.map +1 -1
- package/esm/components/data-grid/data-grid.spec.js +71 -28
- package/esm/components/data-grid/data-grid.spec.js.map +1 -1
- package/esm/components/data-grid/filters/boolean-filter.d.ts +12 -0
- package/esm/components/data-grid/filters/boolean-filter.d.ts.map +1 -0
- package/esm/components/data-grid/filters/boolean-filter.js +27 -0
- package/esm/components/data-grid/filters/boolean-filter.js.map +1 -0
- package/esm/components/data-grid/filters/boolean-filter.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/boolean-filter.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/boolean-filter.spec.js +114 -0
- package/esm/components/data-grid/filters/boolean-filter.spec.js.map +1 -0
- package/esm/components/data-grid/filters/date-filter.d.ts +12 -0
- package/esm/components/data-grid/filters/date-filter.d.ts.map +1 -0
- package/esm/components/data-grid/filters/date-filter.js +109 -0
- package/esm/components/data-grid/filters/date-filter.js.map +1 -0
- package/esm/components/data-grid/filters/date-filter.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/date-filter.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/date-filter.spec.js +145 -0
- package/esm/components/data-grid/filters/date-filter.spec.js.map +1 -0
- package/esm/components/data-grid/filters/enum-filter.d.ts +16 -0
- package/esm/components/data-grid/filters/enum-filter.d.ts.map +1 -0
- package/esm/components/data-grid/filters/enum-filter.js +72 -0
- package/esm/components/data-grid/filters/enum-filter.js.map +1 -0
- package/esm/components/data-grid/filters/enum-filter.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/enum-filter.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/enum-filter.spec.js +136 -0
- package/esm/components/data-grid/filters/enum-filter.spec.js.map +1 -0
- package/esm/components/data-grid/filters/filter-dropdown.d.ts +6 -0
- package/esm/components/data-grid/filters/filter-dropdown.d.ts.map +1 -0
- package/esm/components/data-grid/filters/filter-dropdown.js +41 -0
- package/esm/components/data-grid/filters/filter-dropdown.js.map +1 -0
- package/esm/components/data-grid/filters/filter-dropdown.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/filter-dropdown.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/filter-dropdown.spec.js +69 -0
- package/esm/components/data-grid/filters/filter-dropdown.spec.js.map +1 -0
- package/esm/components/data-grid/filters/filter-styles.d.ts +24 -0
- package/esm/components/data-grid/filters/filter-styles.d.ts.map +1 -0
- package/esm/components/data-grid/filters/filter-styles.js +25 -0
- package/esm/components/data-grid/filters/filter-styles.js.map +1 -0
- package/esm/components/data-grid/filters/index.d.ts +7 -0
- package/esm/components/data-grid/filters/index.d.ts.map +1 -0
- package/esm/components/data-grid/filters/index.js +7 -0
- package/esm/components/data-grid/filters/index.js.map +1 -0
- package/esm/components/data-grid/filters/number-filter.d.ts +12 -0
- package/esm/components/data-grid/filters/number-filter.d.ts.map +1 -0
- package/esm/components/data-grid/filters/number-filter.js +65 -0
- package/esm/components/data-grid/filters/number-filter.js.map +1 -0
- package/esm/components/data-grid/filters/number-filter.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/number-filter.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/number-filter.spec.js +142 -0
- package/esm/components/data-grid/filters/number-filter.spec.js.map +1 -0
- package/esm/components/data-grid/filters/string-filter.d.ts +12 -0
- package/esm/components/data-grid/filters/string-filter.d.ts.map +1 -0
- package/esm/components/data-grid/filters/string-filter.js +63 -0
- package/esm/components/data-grid/filters/string-filter.js.map +1 -0
- package/esm/components/data-grid/filters/string-filter.spec.d.ts +2 -0
- package/esm/components/data-grid/filters/string-filter.spec.d.ts.map +1 -0
- package/esm/components/data-grid/filters/string-filter.spec.js +128 -0
- package/esm/components/data-grid/filters/string-filter.spec.js.map +1 -0
- package/esm/components/data-grid/footer.d.ts.map +1 -1
- package/esm/components/data-grid/footer.js +24 -9
- package/esm/components/data-grid/footer.js.map +1 -1
- package/esm/components/data-grid/footer.spec.js +38 -36
- package/esm/components/data-grid/footer.spec.js.map +1 -1
- package/esm/components/data-grid/header.d.ts +6 -9
- package/esm/components/data-grid/header.d.ts.map +1 -1
- package/esm/components/data-grid/header.js +51 -117
- package/esm/components/data-grid/header.js.map +1 -1
- package/esm/components/data-grid/header.spec.js +116 -187
- package/esm/components/data-grid/header.spec.js.map +1 -1
- package/esm/components/data-grid/index.d.ts +1 -0
- package/esm/components/data-grid/index.d.ts.map +1 -1
- package/esm/components/data-grid/index.js +1 -0
- package/esm/components/data-grid/index.js.map +1 -1
- package/esm/components/data-grid/selection-cell.spec.js +8 -8
- package/esm/components/data-grid/selection-cell.spec.js.map +1 -1
- package/esm/components/drawer/drawer-toggle-button.spec.js +22 -22
- package/esm/components/drawer/drawer-toggle-button.spec.js.map +1 -1
- package/esm/components/drawer/index.spec.js +36 -36
- package/esm/components/drawer/index.spec.js.map +1 -1
- package/esm/components/dropdown.spec.js +38 -30
- package/esm/components/dropdown.spec.js.map +1 -1
- package/esm/components/fab.spec.js +4 -4
- package/esm/components/fab.spec.js.map +1 -1
- package/esm/components/form.spec.js +37 -37
- package/esm/components/form.spec.js.map +1 -1
- package/esm/components/grid.spec.js +3 -3
- package/esm/components/grid.spec.js.map +1 -1
- package/esm/components/image.spec.js +55 -52
- package/esm/components/image.spec.js.map +1 -1
- package/esm/components/inputs/autocomplete.spec.js +7 -14
- package/esm/components/inputs/autocomplete.spec.js.map +1 -1
- package/esm/components/inputs/checkbox.spec.js +22 -22
- package/esm/components/inputs/checkbox.spec.js.map +1 -1
- package/esm/components/inputs/input-number.spec.js +47 -47
- package/esm/components/inputs/input-number.spec.js.map +1 -1
- package/esm/components/inputs/input.spec.js +53 -53
- package/esm/components/inputs/input.spec.js.map +1 -1
- package/esm/components/inputs/radio-group.spec.js +14 -14
- package/esm/components/inputs/radio-group.spec.js.map +1 -1
- package/esm/components/inputs/radio.spec.js +16 -16
- package/esm/components/inputs/radio.spec.js.map +1 -1
- package/esm/components/inputs/select.spec.js +74 -74
- package/esm/components/inputs/select.spec.js.map +1 -1
- package/esm/components/inputs/slider.spec.js +16 -16
- package/esm/components/inputs/slider.spec.js.map +1 -1
- package/esm/components/inputs/switch.spec.js +24 -24
- package/esm/components/inputs/switch.spec.js.map +1 -1
- package/esm/components/inputs/text-area.spec.js +17 -17
- package/esm/components/inputs/text-area.spec.js.map +1 -1
- package/esm/components/linear-progress.spec.js +2 -2
- package/esm/components/list/list.spec.js +36 -36
- package/esm/components/list/list.spec.js.map +1 -1
- package/esm/components/markdown/markdown-display.spec.js +15 -15
- package/esm/components/markdown/markdown-display.spec.js.map +1 -1
- package/esm/components/markdown/markdown-editor.spec.js +8 -8
- package/esm/components/markdown/markdown-editor.spec.js.map +1 -1
- package/esm/components/markdown/markdown-input.spec.js +17 -17
- package/esm/components/markdown/markdown-input.spec.js.map +1 -1
- package/esm/components/menu/menu.spec.js +28 -28
- package/esm/components/menu/menu.spec.js.map +1 -1
- package/esm/components/modal.spec.js +15 -18
- package/esm/components/modal.spec.js.map +1 -1
- package/esm/components/noty-list.spec.js +25 -23
- package/esm/components/noty-list.spec.js.map +1 -1
- package/esm/components/page-container/index.spec.js +16 -16
- package/esm/components/page-container/index.spec.js.map +1 -1
- package/esm/components/page-container/page-header.spec.js +16 -16
- package/esm/components/page-container/page-header.spec.js.map +1 -1
- package/esm/components/page-layout/index.spec.js +29 -29
- package/esm/components/page-layout/index.spec.js.map +1 -1
- package/esm/components/paper.spec.js +3 -3
- package/esm/components/paper.spec.js.map +1 -1
- package/esm/components/rating.spec.js +61 -61
- package/esm/components/rating.spec.js.map +1 -1
- package/esm/components/skeleton.spec.js +10 -6
- package/esm/components/skeleton.spec.js.map +1 -1
- package/esm/components/suggest/suggest-input.spec.js +4 -10
- package/esm/components/suggest/suggest-input.spec.js.map +1 -1
- package/esm/components/tabs.spec.js +30 -30
- package/esm/components/tabs.spec.js.map +1 -1
- package/esm/components/tree/tree.spec.js +27 -27
- package/esm/components/tree/tree.spec.js.map +1 -1
- package/esm/components/typography.spec.js +3 -3
- package/esm/components/typography.spec.js.map +1 -1
- package/esm/components/wizard/index.spec.js +5 -5
- package/esm/components/wizard/index.spec.js.map +1 -1
- package/esm/utils/promisify-animation.d.ts.map +1 -1
- package/esm/utils/promisify-animation.js +3 -0
- package/esm/utils/promisify-animation.js.map +1 -1
- package/package.json +2 -2
- package/src/components/app-bar-link.spec.tsx +16 -19
- package/src/components/app-bar.spec.tsx +6 -4
- package/src/components/avatar.spec.tsx +9 -9
- package/src/components/breadcrumb.spec.tsx +2 -2
- package/src/components/button-group.spec.tsx +155 -11
- package/src/components/button-group.tsx +49 -2
- package/src/components/button.spec.tsx +4 -4
- package/src/components/cache-view.spec.tsx +3 -3
- package/src/components/carousel.spec.tsx +47 -47
- package/src/components/circular-progress.spec.tsx +2 -2
- package/src/components/command-palette/command-palette-input.spec.tsx +23 -19
- package/src/components/command-palette/command-palette-suggestion-list.spec.tsx +27 -27
- package/src/components/command-palette/index.spec.tsx +64 -51
- package/src/components/context-menu/context-menu.spec.tsx +33 -33
- package/src/components/data-grid/body.spec.tsx +13 -13
- package/src/components/data-grid/data-grid-row.spec.tsx +8 -8
- package/src/components/data-grid/data-grid.spec.tsx +106 -28
- package/src/components/data-grid/data-grid.tsx +44 -11
- package/src/components/data-grid/filters/boolean-filter.spec.tsx +142 -0
- package/src/components/data-grid/filters/boolean-filter.tsx +45 -0
- package/src/components/data-grid/filters/date-filter.spec.tsx +181 -0
- package/src/components/data-grid/filters/date-filter.tsx +162 -0
- package/src/components/data-grid/filters/enum-filter.spec.tsx +168 -0
- package/src/components/data-grid/filters/enum-filter.tsx +119 -0
- package/src/components/data-grid/filters/filter-dropdown.spec.tsx +89 -0
- package/src/components/data-grid/filters/filter-dropdown.tsx +60 -0
- package/src/components/data-grid/filters/filter-styles.ts +26 -0
- package/src/components/data-grid/filters/index.ts +6 -0
- package/src/components/data-grid/filters/number-filter.spec.tsx +174 -0
- package/src/components/data-grid/filters/number-filter.tsx +115 -0
- package/src/components/data-grid/filters/string-filter.spec.tsx +157 -0
- package/src/components/data-grid/filters/string-filter.tsx +112 -0
- package/src/components/data-grid/footer.spec.tsx +38 -36
- package/src/components/data-grid/footer.tsx +21 -8
- package/src/components/data-grid/header.spec.tsx +128 -212
- package/src/components/data-grid/header.tsx +95 -183
- package/src/components/data-grid/index.tsx +1 -0
- package/src/components/data-grid/selection-cell.spec.tsx +8 -8
- package/src/components/drawer/drawer-toggle-button.spec.tsx +22 -22
- package/src/components/drawer/index.spec.tsx +36 -36
- package/src/components/dropdown.spec.tsx +38 -30
- package/src/components/fab.spec.tsx +4 -4
- package/src/components/form.spec.tsx +37 -37
- package/src/components/grid.spec.tsx +3 -3
- package/src/components/image.spec.tsx +55 -52
- package/src/components/inputs/autocomplete.spec.tsx +7 -14
- package/src/components/inputs/checkbox.spec.tsx +22 -22
- package/src/components/inputs/input-number.spec.tsx +47 -47
- package/src/components/inputs/input.spec.tsx +53 -53
- package/src/components/inputs/radio-group.spec.tsx +14 -14
- package/src/components/inputs/radio.spec.tsx +16 -16
- package/src/components/inputs/select.spec.tsx +74 -74
- package/src/components/inputs/slider.spec.tsx +16 -16
- package/src/components/inputs/switch.spec.tsx +24 -24
- package/src/components/inputs/text-area.spec.tsx +17 -17
- package/src/components/linear-progress.spec.tsx +2 -2
- package/src/components/list/list.spec.tsx +36 -36
- package/src/components/markdown/markdown-display.spec.tsx +15 -15
- package/src/components/markdown/markdown-editor.spec.tsx +8 -8
- package/src/components/markdown/markdown-input.spec.tsx +17 -17
- package/src/components/menu/menu.spec.tsx +28 -28
- package/src/components/modal.spec.tsx +15 -18
- package/src/components/noty-list.spec.tsx +25 -23
- package/src/components/page-container/index.spec.tsx +16 -16
- package/src/components/page-container/page-header.spec.tsx +16 -16
- package/src/components/page-layout/index.spec.tsx +29 -29
- package/src/components/paper.spec.tsx +3 -3
- package/src/components/rating.spec.tsx +61 -61
- package/src/components/skeleton.spec.tsx +10 -6
- package/src/components/suggest/suggest-input.spec.tsx +4 -10
- package/src/components/tabs.spec.tsx +30 -30
- package/src/components/tree/tree.spec.tsx +27 -27
- package/src/components/typography.spec.tsx +3 -3
- package/src/components/wizard/index.spec.tsx +5 -5
- package/src/utils/promisify-animation.ts +3 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Injector } from '@furystack/inject';
|
|
2
|
-
import { createComponent, initializeShadeRoot } from '@furystack/shades';
|
|
3
|
-
import {
|
|
2
|
+
import { createComponent, flushUpdates, initializeShadeRoot } from '@furystack/shades';
|
|
3
|
+
import { usingAsync } from '@furystack/utils';
|
|
4
4
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
5
5
|
import { Select } from './select.js';
|
|
6
6
|
describe('Select', () => {
|
|
@@ -24,7 +24,7 @@ describe('Select', () => {
|
|
|
24
24
|
rootElement: root,
|
|
25
25
|
jsxElement: createComponent(Select, { ...props }),
|
|
26
26
|
});
|
|
27
|
-
await
|
|
27
|
+
await flushUpdates();
|
|
28
28
|
return {
|
|
29
29
|
injector,
|
|
30
30
|
select: document.querySelector('shade-select'),
|
|
@@ -278,7 +278,7 @@ describe('Select', () => {
|
|
|
278
278
|
await usingAsync(await renderSelect({ options: defaultOptions, disabled: true }), async ({ select }) => {
|
|
279
279
|
const trigger = select.querySelector('.select-trigger');
|
|
280
280
|
trigger.click();
|
|
281
|
-
await
|
|
281
|
+
await flushUpdates();
|
|
282
282
|
expect(select.hasAttribute('data-open')).toBe(false);
|
|
283
283
|
});
|
|
284
284
|
});
|
|
@@ -288,7 +288,7 @@ describe('Select', () => {
|
|
|
288
288
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
289
289
|
const trigger = select.querySelector('.select-trigger');
|
|
290
290
|
trigger.click();
|
|
291
|
-
await
|
|
291
|
+
await flushUpdates();
|
|
292
292
|
expect(select.hasAttribute('data-open')).toBe(true);
|
|
293
293
|
const dropdown = select.querySelector('.dropdown');
|
|
294
294
|
expect(dropdown).not.toBeNull();
|
|
@@ -298,7 +298,7 @@ describe('Select', () => {
|
|
|
298
298
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
299
299
|
const trigger = select.querySelector('.select-trigger');
|
|
300
300
|
trigger.click();
|
|
301
|
-
await
|
|
301
|
+
await flushUpdates();
|
|
302
302
|
const items = select.querySelectorAll('.dropdown-item');
|
|
303
303
|
expect(items.length).toBe(3);
|
|
304
304
|
});
|
|
@@ -307,11 +307,11 @@ describe('Select', () => {
|
|
|
307
307
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
308
308
|
const trigger = select.querySelector('.select-trigger');
|
|
309
309
|
trigger.click();
|
|
310
|
-
await
|
|
310
|
+
await flushUpdates();
|
|
311
311
|
expect(select.hasAttribute('data-open')).toBe(true);
|
|
312
312
|
const backdrop = select.querySelector('.dropdown-backdrop');
|
|
313
313
|
backdrop.click();
|
|
314
|
-
await
|
|
314
|
+
await flushUpdates();
|
|
315
315
|
expect(select.hasAttribute('data-open')).toBe(false);
|
|
316
316
|
});
|
|
317
317
|
});
|
|
@@ -319,12 +319,12 @@ describe('Select', () => {
|
|
|
319
319
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
320
320
|
const trigger = select.querySelector('.select-trigger');
|
|
321
321
|
trigger.click();
|
|
322
|
-
await
|
|
322
|
+
await flushUpdates();
|
|
323
323
|
expect(select.hasAttribute('data-open')).toBe(true);
|
|
324
324
|
// Re-query after re-render
|
|
325
325
|
const trigger2 = select.querySelector('.select-trigger');
|
|
326
326
|
trigger2.click();
|
|
327
|
-
await
|
|
327
|
+
await flushUpdates();
|
|
328
328
|
expect(select.hasAttribute('data-open')).toBe(false);
|
|
329
329
|
});
|
|
330
330
|
});
|
|
@@ -335,10 +335,10 @@ describe('Select', () => {
|
|
|
335
335
|
await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
|
|
336
336
|
const trigger = select.querySelector('.select-trigger');
|
|
337
337
|
trigger.click();
|
|
338
|
-
await
|
|
338
|
+
await flushUpdates();
|
|
339
339
|
const items = select.querySelectorAll('.dropdown-item');
|
|
340
340
|
items[1].click();
|
|
341
|
-
await
|
|
341
|
+
await flushUpdates();
|
|
342
342
|
expect(onValueChange).toHaveBeenCalledWith('b');
|
|
343
343
|
});
|
|
344
344
|
});
|
|
@@ -347,10 +347,10 @@ describe('Select', () => {
|
|
|
347
347
|
await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
|
|
348
348
|
const trigger = select.querySelector('.select-trigger');
|
|
349
349
|
trigger.click();
|
|
350
|
-
await
|
|
350
|
+
await flushUpdates();
|
|
351
351
|
const items = select.querySelectorAll('.dropdown-item');
|
|
352
352
|
items[0].click();
|
|
353
|
-
await
|
|
353
|
+
await flushUpdates();
|
|
354
354
|
expect(select.hasAttribute('data-open')).toBe(false);
|
|
355
355
|
});
|
|
356
356
|
});
|
|
@@ -363,10 +363,10 @@ describe('Select', () => {
|
|
|
363
363
|
await usingAsync(await renderSelect({ options, onValueChange }), async ({ select }) => {
|
|
364
364
|
const trigger = select.querySelector('.select-trigger');
|
|
365
365
|
trigger.click();
|
|
366
|
-
await
|
|
366
|
+
await flushUpdates();
|
|
367
367
|
const items = select.querySelectorAll('.dropdown-item');
|
|
368
368
|
items[1].click();
|
|
369
|
-
await
|
|
369
|
+
await flushUpdates();
|
|
370
370
|
expect(onValueChange).not.toHaveBeenCalled();
|
|
371
371
|
});
|
|
372
372
|
});
|
|
@@ -374,7 +374,7 @@ describe('Select', () => {
|
|
|
374
374
|
await usingAsync(await renderSelect({ options: defaultOptions, value: 'b' }), async ({ select }) => {
|
|
375
375
|
const trigger = select.querySelector('.select-trigger');
|
|
376
376
|
trigger.click();
|
|
377
|
-
await
|
|
377
|
+
await flushUpdates();
|
|
378
378
|
const selected = select.querySelector('.dropdown-item[data-selected]');
|
|
379
379
|
expect(selected).not.toBeNull();
|
|
380
380
|
expect(selected?.textContent).toContain('Beta');
|
|
@@ -411,10 +411,10 @@ describe('Select', () => {
|
|
|
411
411
|
}), async ({ select }) => {
|
|
412
412
|
const trigger = select.querySelector('.select-trigger');
|
|
413
413
|
trigger.click();
|
|
414
|
-
await
|
|
414
|
+
await flushUpdates();
|
|
415
415
|
const items = select.querySelectorAll('.dropdown-item');
|
|
416
416
|
items[1].click();
|
|
417
|
-
await
|
|
417
|
+
await flushUpdates();
|
|
418
418
|
expect(onMultiValueChange).toHaveBeenCalledWith(['a', 'b']);
|
|
419
419
|
});
|
|
420
420
|
});
|
|
@@ -428,10 +428,10 @@ describe('Select', () => {
|
|
|
428
428
|
}), async ({ select }) => {
|
|
429
429
|
const trigger = select.querySelector('.select-trigger');
|
|
430
430
|
trigger.click();
|
|
431
|
-
await
|
|
431
|
+
await flushUpdates();
|
|
432
432
|
const items = select.querySelectorAll('.dropdown-item');
|
|
433
433
|
items[0].click();
|
|
434
|
-
await
|
|
434
|
+
await flushUpdates();
|
|
435
435
|
expect(onMultiValueChange).toHaveBeenCalledWith(['b']);
|
|
436
436
|
});
|
|
437
437
|
});
|
|
@@ -446,7 +446,7 @@ describe('Select', () => {
|
|
|
446
446
|
const chipRemoves = select.querySelectorAll('.select-chip-remove');
|
|
447
447
|
expect(chipRemoves.length).toBe(2);
|
|
448
448
|
chipRemoves[0].click();
|
|
449
|
-
await
|
|
449
|
+
await flushUpdates();
|
|
450
450
|
expect(onMultiValueChange).toHaveBeenCalledWith(['b']);
|
|
451
451
|
});
|
|
452
452
|
});
|
|
@@ -462,7 +462,7 @@ describe('Select', () => {
|
|
|
462
462
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
463
463
|
const trigger = select.querySelector('.select-trigger');
|
|
464
464
|
trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }));
|
|
465
|
-
await
|
|
465
|
+
await flushUpdates();
|
|
466
466
|
expect(select.hasAttribute('data-open')).toBe(true);
|
|
467
467
|
});
|
|
468
468
|
});
|
|
@@ -470,7 +470,7 @@ describe('Select', () => {
|
|
|
470
470
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
471
471
|
const trigger = select.querySelector('.select-trigger');
|
|
472
472
|
trigger.dispatchEvent(new KeyboardEvent('keydown', { key: ' ', bubbles: true }));
|
|
473
|
-
await
|
|
473
|
+
await flushUpdates();
|
|
474
474
|
expect(select.hasAttribute('data-open')).toBe(true);
|
|
475
475
|
});
|
|
476
476
|
});
|
|
@@ -478,7 +478,7 @@ describe('Select', () => {
|
|
|
478
478
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
479
479
|
const trigger = select.querySelector('.select-trigger');
|
|
480
480
|
trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }));
|
|
481
|
-
await
|
|
481
|
+
await flushUpdates();
|
|
482
482
|
expect(select.hasAttribute('data-open')).toBe(true);
|
|
483
483
|
});
|
|
484
484
|
});
|
|
@@ -486,7 +486,7 @@ describe('Select', () => {
|
|
|
486
486
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
487
487
|
const trigger = select.querySelector('.select-trigger');
|
|
488
488
|
trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowUp', bubbles: true }));
|
|
489
|
-
await
|
|
489
|
+
await flushUpdates();
|
|
490
490
|
expect(select.hasAttribute('data-open')).toBe(true);
|
|
491
491
|
});
|
|
492
492
|
});
|
|
@@ -494,10 +494,10 @@ describe('Select', () => {
|
|
|
494
494
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
495
495
|
const trigger = select.querySelector('.select-trigger');
|
|
496
496
|
trigger.click();
|
|
497
|
-
await
|
|
497
|
+
await flushUpdates();
|
|
498
498
|
expect(select.hasAttribute('data-open')).toBe(true);
|
|
499
499
|
trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true }));
|
|
500
|
-
await
|
|
500
|
+
await flushUpdates();
|
|
501
501
|
expect(select.hasAttribute('data-open')).toBe(false);
|
|
502
502
|
});
|
|
503
503
|
});
|
|
@@ -506,14 +506,14 @@ describe('Select', () => {
|
|
|
506
506
|
await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
|
|
507
507
|
const trigger = select.querySelector('.select-trigger');
|
|
508
508
|
trigger.click();
|
|
509
|
-
await
|
|
509
|
+
await flushUpdates();
|
|
510
510
|
// Re-query trigger after re-render, then navigate and select
|
|
511
511
|
const trigger2 = select.querySelector('.select-trigger');
|
|
512
512
|
trigger2.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }));
|
|
513
|
-
await
|
|
513
|
+
await flushUpdates();
|
|
514
514
|
const trigger3 = select.querySelector('.select-trigger');
|
|
515
515
|
trigger3.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }));
|
|
516
|
-
await
|
|
516
|
+
await flushUpdates();
|
|
517
517
|
expect(onValueChange).toHaveBeenCalled();
|
|
518
518
|
});
|
|
519
519
|
});
|
|
@@ -522,14 +522,14 @@ describe('Select', () => {
|
|
|
522
522
|
await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
|
|
523
523
|
const trigger = select.querySelector('.select-trigger');
|
|
524
524
|
trigger.click();
|
|
525
|
-
await
|
|
525
|
+
await flushUpdates();
|
|
526
526
|
// Re-query trigger after re-render
|
|
527
527
|
const trigger2 = select.querySelector('.select-trigger');
|
|
528
528
|
trigger2.dispatchEvent(new KeyboardEvent('keydown', { key: 'End', bubbles: true }));
|
|
529
|
-
await
|
|
529
|
+
await flushUpdates();
|
|
530
530
|
const trigger3 = select.querySelector('.select-trigger');
|
|
531
531
|
trigger3.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }));
|
|
532
|
-
await
|
|
532
|
+
await flushUpdates();
|
|
533
533
|
expect(onValueChange).toHaveBeenCalledWith('c');
|
|
534
534
|
});
|
|
535
535
|
});
|
|
@@ -537,7 +537,7 @@ describe('Select', () => {
|
|
|
537
537
|
await usingAsync(await renderSelect({ options: defaultOptions, disabled: true }), async ({ select }) => {
|
|
538
538
|
const trigger = select.querySelector('.select-trigger');
|
|
539
539
|
trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }));
|
|
540
|
-
await
|
|
540
|
+
await flushUpdates();
|
|
541
541
|
expect(select.hasAttribute('data-open')).toBe(false);
|
|
542
542
|
});
|
|
543
543
|
});
|
|
@@ -547,7 +547,7 @@ describe('Select', () => {
|
|
|
547
547
|
await usingAsync(await renderSelect({ options: defaultOptions, showSearch: true }), async ({ select }) => {
|
|
548
548
|
const trigger = select.querySelector('.select-trigger');
|
|
549
549
|
trigger.click();
|
|
550
|
-
await
|
|
550
|
+
await flushUpdates();
|
|
551
551
|
const searchInput = select.querySelector('.dropdown-search');
|
|
552
552
|
expect(searchInput).not.toBeNull();
|
|
553
553
|
});
|
|
@@ -556,7 +556,7 @@ describe('Select', () => {
|
|
|
556
556
|
await usingAsync(await renderSelect({ options: defaultOptions, showSearch: false }), async ({ select }) => {
|
|
557
557
|
const trigger = select.querySelector('.select-trigger');
|
|
558
558
|
trigger.click();
|
|
559
|
-
await
|
|
559
|
+
await flushUpdates();
|
|
560
560
|
const searchInput = select.querySelector('.dropdown-search');
|
|
561
561
|
expect(searchInput).toBeNull();
|
|
562
562
|
});
|
|
@@ -565,11 +565,11 @@ describe('Select', () => {
|
|
|
565
565
|
await usingAsync(await renderSelect({ options: defaultOptions, showSearch: true }), async ({ select }) => {
|
|
566
566
|
const trigger = select.querySelector('.select-trigger');
|
|
567
567
|
trigger.click();
|
|
568
|
-
await
|
|
568
|
+
await flushUpdates();
|
|
569
569
|
const searchInput = select.querySelector('.dropdown-search');
|
|
570
570
|
searchInput.value = 'alp';
|
|
571
571
|
searchInput.dispatchEvent(new Event('input', { bubbles: true }));
|
|
572
|
-
await
|
|
572
|
+
await flushUpdates();
|
|
573
573
|
const items = select.querySelectorAll('.dropdown-item');
|
|
574
574
|
expect(items.length).toBe(1);
|
|
575
575
|
expect(items[0].textContent).toContain('Alpha');
|
|
@@ -579,11 +579,11 @@ describe('Select', () => {
|
|
|
579
579
|
await usingAsync(await renderSelect({ options: defaultOptions, showSearch: true }), async ({ select }) => {
|
|
580
580
|
const trigger = select.querySelector('.select-trigger');
|
|
581
581
|
trigger.click();
|
|
582
|
-
await
|
|
582
|
+
await flushUpdates();
|
|
583
583
|
const searchInput = select.querySelector('.dropdown-search');
|
|
584
584
|
searchInput.value = 'zzz';
|
|
585
585
|
searchInput.dispatchEvent(new Event('input', { bubbles: true }));
|
|
586
|
-
await
|
|
586
|
+
await flushUpdates();
|
|
587
587
|
const noResults = select.querySelector('.dropdown-no-results');
|
|
588
588
|
expect(noResults).not.toBeNull();
|
|
589
589
|
expect(noResults?.textContent).toContain('No results found');
|
|
@@ -594,11 +594,11 @@ describe('Select', () => {
|
|
|
594
594
|
await usingAsync(await renderSelect({ options: defaultOptions, showSearch: true, filterOption }), async ({ select }) => {
|
|
595
595
|
const trigger = select.querySelector('.select-trigger');
|
|
596
596
|
trigger.click();
|
|
597
|
-
await
|
|
597
|
+
await flushUpdates();
|
|
598
598
|
const searchInput = select.querySelector('.dropdown-search');
|
|
599
599
|
searchInput.value = 'anything';
|
|
600
600
|
searchInput.dispatchEvent(new Event('input', { bubbles: true }));
|
|
601
|
-
await
|
|
601
|
+
await flushUpdates();
|
|
602
602
|
const items = select.querySelectorAll('.dropdown-item');
|
|
603
603
|
expect(items.length).toBe(1);
|
|
604
604
|
expect(items[0].textContent).toContain('Alpha');
|
|
@@ -623,7 +623,7 @@ describe('Select', () => {
|
|
|
623
623
|
await usingAsync(await renderSelect({ optionGroups }), async ({ select }) => {
|
|
624
624
|
const trigger = select.querySelector('.select-trigger');
|
|
625
625
|
trigger.click();
|
|
626
|
-
await
|
|
626
|
+
await flushUpdates();
|
|
627
627
|
const groupLabels = select.querySelectorAll('.dropdown-group-label');
|
|
628
628
|
expect(groupLabels.length).toBe(2);
|
|
629
629
|
expect(groupLabels[0].textContent).toContain('Fruits');
|
|
@@ -649,11 +649,11 @@ describe('Select', () => {
|
|
|
649
649
|
await usingAsync(await renderSelect({ optionGroups, showSearch: true }), async ({ select }) => {
|
|
650
650
|
const trigger = select.querySelector('.select-trigger');
|
|
651
651
|
trigger.click();
|
|
652
|
-
await
|
|
652
|
+
await flushUpdates();
|
|
653
653
|
const searchInput = select.querySelector('.dropdown-search');
|
|
654
654
|
searchInput.value = 'apple';
|
|
655
655
|
searchInput.dispatchEvent(new Event('input', { bubbles: true }));
|
|
656
|
-
await
|
|
656
|
+
await flushUpdates();
|
|
657
657
|
const items = select.querySelectorAll('.dropdown-item');
|
|
658
658
|
expect(items.length).toBe(1);
|
|
659
659
|
expect(items[0].textContent).toContain('Apple');
|
|
@@ -703,7 +703,7 @@ describe('Select', () => {
|
|
|
703
703
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
704
704
|
const trigger = select.querySelector('.select-trigger');
|
|
705
705
|
trigger.dispatchEvent(new FocusEvent('focus', { bubbles: true }));
|
|
706
|
-
await
|
|
706
|
+
await flushUpdates();
|
|
707
707
|
// Focus handler sets data-focused on the inner container div (selectRootRef), not the host
|
|
708
708
|
const innerContainer = select.querySelector('div');
|
|
709
709
|
expect(innerContainer.hasAttribute('data-focused')).toBe(true);
|
|
@@ -713,11 +713,11 @@ describe('Select', () => {
|
|
|
713
713
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
714
714
|
const trigger = select.querySelector('.select-trigger');
|
|
715
715
|
trigger.dispatchEvent(new FocusEvent('focus', { bubbles: true }));
|
|
716
|
-
await
|
|
716
|
+
await flushUpdates();
|
|
717
717
|
const innerContainer = select.querySelector('div');
|
|
718
718
|
expect(innerContainer.hasAttribute('data-focused')).toBe(true);
|
|
719
719
|
trigger.dispatchEvent(new FocusEvent('blur', { bubbles: true }));
|
|
720
|
-
await
|
|
720
|
+
await flushUpdates();
|
|
721
721
|
expect(innerContainer.hasAttribute('data-focused')).toBe(false);
|
|
722
722
|
});
|
|
723
723
|
});
|
|
@@ -779,7 +779,7 @@ describe('Select', () => {
|
|
|
779
779
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
780
780
|
const trigger = select.querySelector('.select-trigger');
|
|
781
781
|
trigger.click();
|
|
782
|
-
await
|
|
782
|
+
await flushUpdates();
|
|
783
783
|
// Re-query after re-render
|
|
784
784
|
const trigger2 = select.querySelector('.select-trigger');
|
|
785
785
|
expect(trigger2.getAttribute('aria-expanded')).toBe('true');
|
|
@@ -789,7 +789,7 @@ describe('Select', () => {
|
|
|
789
789
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
790
790
|
const trigger = select.querySelector('.select-trigger');
|
|
791
791
|
trigger.click();
|
|
792
|
-
await
|
|
792
|
+
await flushUpdates();
|
|
793
793
|
const dropdown = select.querySelector('.dropdown');
|
|
794
794
|
expect(dropdown?.getAttribute('role')).toBe('listbox');
|
|
795
795
|
});
|
|
@@ -798,7 +798,7 @@ describe('Select', () => {
|
|
|
798
798
|
await usingAsync(await renderSelect(), async ({ select }) => {
|
|
799
799
|
const trigger = select.querySelector('.select-trigger');
|
|
800
800
|
trigger.click();
|
|
801
|
-
await
|
|
801
|
+
await flushUpdates();
|
|
802
802
|
const items = select.querySelectorAll('.dropdown-item');
|
|
803
803
|
items.forEach((item) => {
|
|
804
804
|
expect(item.getAttribute('role')).toBe('option');
|
|
@@ -809,7 +809,7 @@ describe('Select', () => {
|
|
|
809
809
|
await usingAsync(await renderSelect({ options: defaultOptions, mode: 'multiple' }), async ({ select }) => {
|
|
810
810
|
const trigger = select.querySelector('.select-trigger');
|
|
811
811
|
trigger.click();
|
|
812
|
-
await
|
|
812
|
+
await flushUpdates();
|
|
813
813
|
const dropdown = select.querySelector('.dropdown');
|
|
814
814
|
expect(dropdown?.getAttribute('aria-multiselectable')).toBe('true');
|
|
815
815
|
});
|
|
@@ -827,10 +827,10 @@ describe('Select', () => {
|
|
|
827
827
|
}), async ({ select }) => {
|
|
828
828
|
const trigger = select.querySelector('.select-trigger');
|
|
829
829
|
trigger.click();
|
|
830
|
-
await
|
|
830
|
+
await flushUpdates();
|
|
831
831
|
const searchInput = select.querySelector('.dropdown-search');
|
|
832
832
|
searchInput.dispatchEvent(new KeyboardEvent('keydown', { key: 'Backspace', bubbles: true }));
|
|
833
|
-
await
|
|
833
|
+
await flushUpdates();
|
|
834
834
|
expect(onMultiValueChange).toHaveBeenCalledWith(['a']);
|
|
835
835
|
});
|
|
836
836
|
});
|
|
@@ -841,19 +841,19 @@ describe('Select', () => {
|
|
|
841
841
|
await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
|
|
842
842
|
const trigger = select.querySelector('.select-trigger');
|
|
843
843
|
trigger.click();
|
|
844
|
-
await
|
|
844
|
+
await flushUpdates();
|
|
845
845
|
// Navigate to End first
|
|
846
846
|
const trigger2 = select.querySelector('.select-trigger');
|
|
847
847
|
trigger2.dispatchEvent(new KeyboardEvent('keydown', { key: 'End', bubbles: true }));
|
|
848
|
-
await
|
|
848
|
+
await flushUpdates();
|
|
849
849
|
// Now ArrowUp
|
|
850
850
|
const trigger3 = select.querySelector('.select-trigger');
|
|
851
851
|
trigger3.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowUp', bubbles: true }));
|
|
852
|
-
await
|
|
852
|
+
await flushUpdates();
|
|
853
853
|
// Then select with Enter
|
|
854
854
|
const trigger4 = select.querySelector('.select-trigger');
|
|
855
855
|
trigger4.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }));
|
|
856
|
-
await
|
|
856
|
+
await flushUpdates();
|
|
857
857
|
expect(onValueChange).toHaveBeenCalledWith('b');
|
|
858
858
|
});
|
|
859
859
|
});
|
|
@@ -864,13 +864,13 @@ describe('Select', () => {
|
|
|
864
864
|
await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
|
|
865
865
|
const trigger = select.querySelector('.select-trigger');
|
|
866
866
|
trigger.click();
|
|
867
|
-
await
|
|
867
|
+
await flushUpdates();
|
|
868
868
|
const trigger2 = select.querySelector('.select-trigger');
|
|
869
869
|
trigger2.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true }));
|
|
870
|
-
await
|
|
870
|
+
await flushUpdates();
|
|
871
871
|
const trigger3 = select.querySelector('.select-trigger');
|
|
872
872
|
trigger3.dispatchEvent(new KeyboardEvent('keydown', { key: ' ', bubbles: true }));
|
|
873
|
-
await
|
|
873
|
+
await flushUpdates();
|
|
874
874
|
expect(onValueChange).toHaveBeenCalled();
|
|
875
875
|
});
|
|
876
876
|
});
|
|
@@ -879,10 +879,10 @@ describe('Select', () => {
|
|
|
879
879
|
await usingAsync(await renderSelect({ options: defaultOptions, showSearch: true, onValueChange }), async ({ select }) => {
|
|
880
880
|
const trigger = select.querySelector('.select-trigger');
|
|
881
881
|
trigger.click();
|
|
882
|
-
await
|
|
882
|
+
await flushUpdates();
|
|
883
883
|
const searchInput = select.querySelector('.dropdown-search');
|
|
884
884
|
searchInput.dispatchEvent(new KeyboardEvent('keydown', { key: ' ', bubbles: true }));
|
|
885
|
-
await
|
|
885
|
+
await flushUpdates();
|
|
886
886
|
// Space should be ignored as a selection trigger when search is active
|
|
887
887
|
expect(onValueChange).not.toHaveBeenCalled();
|
|
888
888
|
});
|
|
@@ -894,13 +894,13 @@ describe('Select', () => {
|
|
|
894
894
|
await usingAsync(await renderSelect({ options: defaultOptions, onValueChange }), async ({ select }) => {
|
|
895
895
|
const trigger = select.querySelector('.select-trigger');
|
|
896
896
|
trigger.click();
|
|
897
|
-
await
|
|
897
|
+
await flushUpdates();
|
|
898
898
|
const trigger2 = select.querySelector('.select-trigger');
|
|
899
899
|
trigger2.dispatchEvent(new KeyboardEvent('keydown', { key: 'Home', bubbles: true }));
|
|
900
|
-
await
|
|
900
|
+
await flushUpdates();
|
|
901
901
|
const trigger3 = select.querySelector('.select-trigger');
|
|
902
902
|
trigger3.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true }));
|
|
903
|
-
await
|
|
903
|
+
await flushUpdates();
|
|
904
904
|
expect(onValueChange).toHaveBeenCalledWith('a');
|
|
905
905
|
});
|
|
906
906
|
});
|
|
@@ -930,10 +930,10 @@ describe('Select', () => {
|
|
|
930
930
|
}), async ({ select }) => {
|
|
931
931
|
const trigger = select.querySelector('.select-trigger');
|
|
932
932
|
trigger.click();
|
|
933
|
-
await
|
|
933
|
+
await flushUpdates();
|
|
934
934
|
const items = select.querySelectorAll('.dropdown-item');
|
|
935
935
|
items[1].click();
|
|
936
|
-
await
|
|
936
|
+
await flushUpdates();
|
|
937
937
|
expect(onValueChange).toHaveBeenCalledWith('a,b');
|
|
938
938
|
});
|
|
939
939
|
});
|
|
@@ -949,7 +949,7 @@ describe('Select', () => {
|
|
|
949
949
|
}), async ({ select }) => {
|
|
950
950
|
const chipRemoves = select.querySelectorAll('.select-chip-remove');
|
|
951
951
|
chipRemoves[0].click();
|
|
952
|
-
await
|
|
952
|
+
await flushUpdates();
|
|
953
953
|
expect(onValueChange).toHaveBeenCalledWith('b');
|
|
954
954
|
});
|
|
955
955
|
});
|
|
@@ -979,11 +979,11 @@ describe('Select', () => {
|
|
|
979
979
|
await usingAsync(await renderSelect({ optionGroups, showSearch: true }), async ({ select }) => {
|
|
980
980
|
const trigger = select.querySelector('.select-trigger');
|
|
981
981
|
trigger.click();
|
|
982
|
-
await
|
|
982
|
+
await flushUpdates();
|
|
983
983
|
const searchInput = select.querySelector('.dropdown-search');
|
|
984
984
|
searchInput.value = 'zzz';
|
|
985
985
|
searchInput.dispatchEvent(new Event('input', { bubbles: true }));
|
|
986
|
-
await
|
|
986
|
+
await flushUpdates();
|
|
987
987
|
const noResults = select.querySelector('.dropdown-no-results');
|
|
988
988
|
expect(noResults).not.toBeNull();
|
|
989
989
|
expect(noResults?.textContent).toContain('No results found');
|
|
@@ -995,12 +995,12 @@ describe('Select', () => {
|
|
|
995
995
|
await usingAsync(await renderSelect({ options: defaultOptions, mode: 'multiple' }), async ({ select }) => {
|
|
996
996
|
const trigger = select.querySelector('.select-trigger');
|
|
997
997
|
trigger.click();
|
|
998
|
-
await
|
|
998
|
+
await flushUpdates();
|
|
999
999
|
expect(select.hasAttribute('data-open')).toBe(true);
|
|
1000
1000
|
// In multi mode, clicking trigger again should NOT close (only backdrop closes)
|
|
1001
1001
|
const trigger2 = select.querySelector('.select-trigger');
|
|
1002
1002
|
trigger2.click();
|
|
1003
|
-
await
|
|
1003
|
+
await flushUpdates();
|
|
1004
1004
|
// It should still remain open or re-open in multi mode
|
|
1005
1005
|
});
|
|
1006
1006
|
});
|