@crowdstrike/glide-core 0.13.0 → 0.14.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/dist/drawer.d.ts +2 -2
- package/dist/drawer.js +1 -1
- package/dist/drawer.styles.js +3 -3
- package/dist/dropdown.js +11 -11
- package/dist/dropdown.option.d.ts +1 -1
- package/dist/dropdown.option.js +1 -1
- package/dist/dropdown.styles.js +11 -16
- package/dist/input.styles.js +6 -1
- package/dist/styles/variables.css +1 -1
- package/dist/textarea.styles.js +6 -0
- package/dist/toasts.d.ts +2 -2
- package/dist/toasts.toast.d.ts +1 -1
- package/dist/toasts.toast.js +1 -1
- package/dist/toasts.toast.styles.js +8 -0
- package/dist/tree.item.styles.js +2 -2
- package/package.json +9 -6
- package/dist/accordion.stories.d.ts +0 -6
- package/dist/accordion.test.basics.d.ts +0 -1
- package/dist/accordion.test.basics.js +0 -28
- package/dist/accordion.test.events.d.ts +0 -1
- package/dist/accordion.test.events.js +0 -28
- package/dist/accordion.test.focus.d.ts +0 -1
- package/dist/accordion.test.focus.js +0 -11
- package/dist/accordion.test.interactions.d.ts +0 -1
- package/dist/accordion.test.interactions.js +0 -75
- package/dist/button-group.button.test.basics.d.ts +0 -1
- package/dist/button-group.button.test.basics.js +0 -97
- package/dist/button-group.button.test.events.d.ts +0 -1
- package/dist/button-group.button.test.events.js +0 -15
- package/dist/button-group.button.test.focus.d.ts +0 -1
- package/dist/button-group.button.test.focus.js +0 -13
- package/dist/button-group.button.test.interactions.d.ts +0 -1
- package/dist/button-group.button.test.interactions.js +0 -42
- package/dist/button-group.stories.d.ts +0 -7
- package/dist/button-group.test.basics.d.ts +0 -1
- package/dist/button-group.test.basics.js +0 -148
- package/dist/button-group.test.events.d.ts +0 -1
- package/dist/button-group.test.events.js +0 -241
- package/dist/button-group.test.focus.d.ts +0 -1
- package/dist/button-group.test.focus.js +0 -39
- package/dist/button-group.test.interactions.d.ts +0 -1
- package/dist/button-group.test.interactions.js +0 -91
- package/dist/button.stories.d.ts +0 -7
- package/dist/button.test.basics.d.ts +0 -1
- package/dist/button.test.basics.js +0 -69
- package/dist/button.test.events.d.ts +0 -1
- package/dist/button.test.events.js +0 -102
- package/dist/checkbox-group.stories.d.ts +0 -6
- package/dist/checkbox-group.test.basics.d.ts +0 -1
- package/dist/checkbox-group.test.basics.js +0 -116
- package/dist/checkbox-group.test.events.d.ts +0 -1
- package/dist/checkbox-group.test.events.js +0 -111
- package/dist/checkbox-group.test.focus.d.ts +0 -1
- package/dist/checkbox-group.test.focus.js +0 -70
- package/dist/checkbox-group.test.form.d.ts +0 -1
- package/dist/checkbox-group.test.form.js +0 -131
- package/dist/checkbox-group.test.interactions.d.ts +0 -1
- package/dist/checkbox-group.test.interactions.js +0 -82
- package/dist/checkbox-group.test.validity.d.ts +0 -1
- package/dist/checkbox-group.test.validity.js +0 -145
- package/dist/checkbox.stories.d.ts +0 -5
- package/dist/checkbox.test.basics.d.ts +0 -1
- package/dist/checkbox.test.basics.js +0 -90
- package/dist/checkbox.test.events.d.ts +0 -1
- package/dist/checkbox.test.events.js +0 -105
- package/dist/checkbox.test.focus.d.ts +0 -1
- package/dist/checkbox.test.focus.js +0 -51
- package/dist/checkbox.test.form.d.ts +0 -1
- package/dist/checkbox.test.form.js +0 -133
- package/dist/checkbox.test.interactions.d.ts +0 -1
- package/dist/checkbox.test.interactions.js +0 -131
- package/dist/checkbox.test.validity.d.ts +0 -1
- package/dist/checkbox.test.validity.js +0 -128
- package/dist/drawer.stories.d.ts +0 -6
- package/dist/drawer.test.accessibility.d.ts +0 -1
- package/dist/drawer.test.accessibility.js +0 -22
- package/dist/drawer.test.basics.d.ts +0 -1
- package/dist/drawer.test.basics.js +0 -44
- package/dist/drawer.test.closing.d.ts +0 -1
- package/dist/drawer.test.closing.js +0 -40
- package/dist/drawer.test.events.d.ts +0 -1
- package/dist/drawer.test.events.js +0 -42
- package/dist/drawer.test.methods.d.ts +0 -1
- package/dist/drawer.test.methods.js +0 -35
- package/dist/dropdown.option.test.basics.d.ts +0 -1
- package/dist/dropdown.option.test.basics.js +0 -34
- package/dist/dropdown.option.test.basics.multiple.d.ts +0 -1
- package/dist/dropdown.option.test.basics.multiple.js +0 -36
- package/dist/dropdown.option.test.basics.single.d.ts +0 -1
- package/dist/dropdown.option.test.basics.single.js +0 -29
- package/dist/dropdown.option.test.events.d.ts +0 -1
- package/dist/dropdown.option.test.events.js +0 -36
- package/dist/dropdown.option.test.focus.d.ts +0 -1
- package/dist/dropdown.option.test.focus.js +0 -11
- package/dist/dropdown.option.test.interactions.multiple.d.ts +0 -1
- package/dist/dropdown.option.test.interactions.multiple.js +0 -42
- package/dist/dropdown.option.test.interactions.single.d.ts +0 -1
- package/dist/dropdown.option.test.interactions.single.js +0 -76
- package/dist/dropdown.stories.d.ts +0 -8
- package/dist/dropdown.test.basics.d.ts +0 -1
- package/dist/dropdown.test.basics.filterable.d.ts +0 -1
- package/dist/dropdown.test.basics.filterable.js +0 -108
- package/dist/dropdown.test.basics.js +0 -181
- package/dist/dropdown.test.basics.multiple.d.ts +0 -1
- package/dist/dropdown.test.basics.multiple.js +0 -259
- package/dist/dropdown.test.basics.single.d.ts +0 -1
- package/dist/dropdown.test.basics.single.js +0 -122
- package/dist/dropdown.test.events.d.ts +0 -1
- package/dist/dropdown.test.events.filterable.d.ts +0 -1
- package/dist/dropdown.test.events.filterable.js +0 -31
- package/dist/dropdown.test.events.js +0 -251
- package/dist/dropdown.test.events.multiple.d.ts +0 -1
- package/dist/dropdown.test.events.multiple.js +0 -446
- package/dist/dropdown.test.events.single.d.ts +0 -1
- package/dist/dropdown.test.events.single.js +0 -343
- package/dist/dropdown.test.focus.d.ts +0 -1
- package/dist/dropdown.test.focus.filterable.d.ts +0 -1
- package/dist/dropdown.test.focus.filterable.js +0 -140
- package/dist/dropdown.test.focus.js +0 -107
- package/dist/dropdown.test.focus.multiple.d.ts +0 -1
- package/dist/dropdown.test.focus.multiple.js +0 -170
- package/dist/dropdown.test.focus.single.d.ts +0 -1
- package/dist/dropdown.test.focus.single.js +0 -42
- package/dist/dropdown.test.form.d.ts +0 -1
- package/dist/dropdown.test.form.js +0 -74
- package/dist/dropdown.test.form.multiple.d.ts +0 -1
- package/dist/dropdown.test.form.multiple.js +0 -151
- package/dist/dropdown.test.form.single.d.ts +0 -1
- package/dist/dropdown.test.form.single.js +0 -129
- package/dist/dropdown.test.interactions.d.ts +0 -1
- package/dist/dropdown.test.interactions.filterable.d.ts +0 -1
- package/dist/dropdown.test.interactions.filterable.js +0 -805
- package/dist/dropdown.test.interactions.js +0 -696
- package/dist/dropdown.test.interactions.multiple.d.ts +0 -1
- package/dist/dropdown.test.interactions.multiple.js +0 -1026
- package/dist/dropdown.test.interactions.single.d.ts +0 -1
- package/dist/dropdown.test.interactions.single.js +0 -569
- package/dist/dropdown.test.validity.d.ts +0 -1
- package/dist/dropdown.test.validity.js +0 -181
- package/dist/form-controls-layout.stories.d.ts +0 -10
- package/dist/form-controls-layout.test.basics.d.ts +0 -2
- package/dist/form-controls-layout.test.basics.js +0 -75
- package/dist/form-controls-layout.test.interactions.d.ts +0 -2
- package/dist/form-controls-layout.test.interactions.js +0 -26
- package/dist/icon-button.stories.d.ts +0 -6
- package/dist/icon-button.test.basics.d.ts +0 -1
- package/dist/icon-button.test.basics.js +0 -43
- package/dist/icon-button.test.focus.d.ts +0 -1
- package/dist/icon-button.test.focus.js +0 -13
- package/dist/input.stories.d.ts +0 -8
- package/dist/input.test.basics.d.ts +0 -1
- package/dist/input.test.basics.js +0 -138
- package/dist/input.test.events.d.ts +0 -1
- package/dist/input.test.events.js +0 -98
- package/dist/input.test.focus.d.ts +0 -1
- package/dist/input.test.focus.js +0 -58
- package/dist/input.test.form.d.ts +0 -1
- package/dist/input.test.form.js +0 -74
- package/dist/input.test.validity.d.ts +0 -1
- package/dist/input.test.validity.js +0 -258
- package/dist/label.test.basics.d.ts +0 -1
- package/dist/label.test.basics.js +0 -136
- package/dist/menu.button.test.basics.d.ts +0 -1
- package/dist/menu.button.test.basics.js +0 -43
- package/dist/menu.link.test.basics.d.ts +0 -1
- package/dist/menu.link.test.basics.js +0 -47
- package/dist/menu.options.test.basics.d.ts +0 -2
- package/dist/menu.options.test.basics.js +0 -44
- package/dist/menu.options.test.events.d.ts +0 -1
- package/dist/menu.options.test.events.js +0 -19
- package/dist/menu.stories.d.ts +0 -11
- package/dist/menu.test.basics.d.ts +0 -1
- package/dist/menu.test.basics.js +0 -178
- package/dist/menu.test.events.d.ts +0 -3
- package/dist/menu.test.events.js +0 -125
- package/dist/menu.test.focus.d.ts +0 -2
- package/dist/menu.test.focus.js +0 -102
- package/dist/menu.test.interactions.d.ts +0 -3
- package/dist/menu.test.interactions.js +0 -1069
- package/dist/modal.icon-button.test.basics.d.ts +0 -1
- package/dist/modal.icon-button.test.basics.js +0 -46
- package/dist/modal.stories.d.ts +0 -13
- package/dist/modal.tertiary-icon.test.basics.d.ts +0 -1
- package/dist/modal.tertiary-icon.test.basics.js +0 -60
- package/dist/modal.test.accessibility.d.ts +0 -1
- package/dist/modal.test.accessibility.js +0 -38
- package/dist/modal.test.basics.d.ts +0 -3
- package/dist/modal.test.basics.js +0 -204
- package/dist/modal.test.close.d.ts +0 -1
- package/dist/modal.test.close.js +0 -35
- package/dist/modal.test.events.d.ts +0 -1
- package/dist/modal.test.events.js +0 -99
- package/dist/modal.test.lock-scroll.d.ts +0 -1
- package/dist/modal.test.lock-scroll.js +0 -67
- package/dist/modal.test.methods.d.ts +0 -1
- package/dist/modal.test.methods.js +0 -20
- package/dist/modal.test.scrollbars.d.ts +0 -1
- package/dist/modal.test.scrollbars.js +0 -18
- package/dist/radio-group.stories.d.ts +0 -6
- package/dist/radio-group.test.basics.d.ts +0 -2
- package/dist/radio-group.test.basics.js +0 -324
- package/dist/radio-group.test.events.d.ts +0 -2
- package/dist/radio-group.test.events.js +0 -278
- package/dist/radio-group.test.focus.d.ts +0 -2
- package/dist/radio-group.test.focus.js +0 -95
- package/dist/radio-group.test.form.d.ts +0 -1
- package/dist/radio-group.test.form.js +0 -124
- package/dist/radio-group.test.validity.d.ts +0 -1
- package/dist/radio-group.test.validity.js +0 -311
- package/dist/split-button.primary-button.test.basics.d.ts +0 -1
- package/dist/split-button.primary-button.test.basics.js +0 -31
- package/dist/split-button.primary-button.test.focus.d.ts +0 -1
- package/dist/split-button.primary-button.test.focus.js +0 -14
- package/dist/split-button.primary-link.test.basics.d.ts +0 -1
- package/dist/split-button.primary-link.test.basics.js +0 -30
- package/dist/split-button.primary-link.test.focus.d.ts +0 -1
- package/dist/split-button.primary-link.test.focus.js +0 -15
- package/dist/split-button.secondary-button.test.basics.d.ts +0 -1
- package/dist/split-button.secondary-button.test.basics.js +0 -58
- package/dist/split-button.secondary-button.test.focus.d.ts +0 -1
- package/dist/split-button.secondary-button.test.focus.js +0 -14
- package/dist/split-button.secondary-button.test.interactions.d.ts +0 -2
- package/dist/split-button.secondary-button.test.interactions.js +0 -30
- package/dist/split-button.stories.d.ts +0 -13
- package/dist/split-button.test.basics.d.ts +0 -2
- package/dist/split-button.test.basics.js +0 -87
- package/dist/split-button.test.interactions.d.ts +0 -4
- package/dist/split-button.test.interactions.js +0 -51
- package/dist/tab.group.test.basics.d.ts +0 -3
- package/dist/tab.group.test.basics.js +0 -234
- package/dist/tab.group.test.interactions.d.ts +0 -3
- package/dist/tab.group.test.interactions.js +0 -434
- package/dist/tab.test.basics.d.ts +0 -1
- package/dist/tab.test.basics.js +0 -50
- package/dist/tabs.stories.d.ts +0 -8
- package/dist/tag.stories.d.ts +0 -7
- package/dist/tag.test.basics.d.ts +0 -1
- package/dist/tag.test.basics.js +0 -28
- package/dist/tag.test.events.d.ts +0 -1
- package/dist/tag.test.events.js +0 -93
- package/dist/tag.test.focus.d.ts +0 -1
- package/dist/tag.test.focus.js +0 -10
- package/dist/tag.test.interactions.d.ts +0 -1
- package/dist/tag.test.interactions.js +0 -36
- package/dist/textarea.stories.d.ts +0 -5
- package/dist/textarea.test.basics.d.ts +0 -1
- package/dist/textarea.test.basics.js +0 -177
- package/dist/textarea.test.events.d.ts +0 -1
- package/dist/textarea.test.events.js +0 -106
- package/dist/textarea.test.form.d.ts +0 -1
- package/dist/textarea.test.form.js +0 -71
- package/dist/textarea.test.validity.d.ts +0 -1
- package/dist/textarea.test.validity.js +0 -204
- package/dist/toasts.stories.d.ts +0 -7
- package/dist/toasts.test.basics.d.ts +0 -1
- package/dist/toasts.test.basics.js +0 -115
- package/dist/toasts.toast.test.basics.d.ts +0 -1
- package/dist/toasts.toast.test.basics.js +0 -139
- package/dist/toggle.stories.d.ts +0 -4
- package/dist/toggle.test.basics.d.ts +0 -1
- package/dist/toggle.test.basics.js +0 -69
- package/dist/toggle.test.events.d.ts +0 -1
- package/dist/toggle.test.events.js +0 -30
- package/dist/toggle.test.focus.d.ts +0 -1
- package/dist/toggle.test.focus.js +0 -9
- package/dist/toggle.test.interactions.d.ts +0 -1
- package/dist/toggle.test.interactions.js +0 -81
- package/dist/tooltip.stories.d.ts +0 -7
- package/dist/tooltip.test.basics.d.ts +0 -1
- package/dist/tooltip.test.basics.js +0 -100
- package/dist/tooltip.test.interactions.d.ts +0 -1
- package/dist/tooltip.test.interactions.js +0 -203
- package/dist/tree.item.icon-button.test.basics.d.ts +0 -1
- package/dist/tree.item.icon-button.test.basics.js +0 -22
- package/dist/tree.item.menu.test.basics.d.ts +0 -1
- package/dist/tree.item.menu.test.basics.js +0 -86
- package/dist/tree.item.test.basics.d.ts +0 -2
- package/dist/tree.item.test.basics.js +0 -138
- package/dist/tree.stories.d.ts +0 -9
- package/dist/tree.test.aria.d.ts +0 -1
- package/dist/tree.test.aria.js +0 -86
- package/dist/tree.test.basics.d.ts +0 -3
- package/dist/tree.test.basics.js +0 -130
- package/dist/tree.test.events.d.ts +0 -2
- package/dist/tree.test.events.js +0 -19
- package/dist/tree.test.focus.d.ts +0 -1
- package/dist/tree.test.focus.js +0 -383
@@ -1,259 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './dropdown.option.js';
|
3
|
-
import { aTimeout, expect, fixture, html } from '@open-wc/testing';
|
4
|
-
import GlideCoreDropdown from './dropdown.js';
|
5
|
-
import GlideCoreTag from './tag.js';
|
6
|
-
GlideCoreDropdown.shadowRootOptions.mode = 'open';
|
7
|
-
it('is accessible', async () => {
|
8
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
|
9
|
-
<glide-core-dropdown-option label="One"></glide-core-dropdown-option>
|
10
|
-
|
11
|
-
<glide-core-dropdown-option
|
12
|
-
label="Two"
|
13
|
-
selected
|
14
|
-
></glide-core-dropdown-option>
|
15
|
-
</glide-core-dropdown>`);
|
16
|
-
await expect(component).to.be.accessible();
|
17
|
-
});
|
18
|
-
it('sets `value` to that of the initially selected options', async () => {
|
19
|
-
const component = await fixture(html `<glide-core-dropdown open multiple>
|
20
|
-
<glide-core-dropdown-option
|
21
|
-
label="One"
|
22
|
-
value="one"
|
23
|
-
></glide-core-dropdown-option>
|
24
|
-
|
25
|
-
<glide-core-dropdown-option
|
26
|
-
label="Two"
|
27
|
-
value="two"
|
28
|
-
selected
|
29
|
-
></glide-core-dropdown-option>
|
30
|
-
|
31
|
-
<glide-core-dropdown-option
|
32
|
-
label="Three"
|
33
|
-
value="three"
|
34
|
-
selected
|
35
|
-
></glide-core-dropdown-option>
|
36
|
-
</glide-core-dropdown>`);
|
37
|
-
expect(component.value).to.deep.equal(['two', 'three']);
|
38
|
-
});
|
39
|
-
it('has selected option labels when options are initially selected', async () => {
|
40
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
|
41
|
-
<glide-core-dropdown-option
|
42
|
-
label="One"
|
43
|
-
selected
|
44
|
-
></glide-core-dropdown-option>
|
45
|
-
|
46
|
-
<glide-core-dropdown-option
|
47
|
-
label="Two"
|
48
|
-
selected
|
49
|
-
></glide-core-dropdown-option>
|
50
|
-
</glide-core-dropdown>`);
|
51
|
-
const labels = component.shadowRoot?.querySelectorAll('[data-test="selected-option-label"]');
|
52
|
-
expect(labels?.length).to.equal(2);
|
53
|
-
expect(labels?.[0]?.textContent?.trim()).to.equal('One,');
|
54
|
-
expect(labels?.[1]?.textContent?.trim()).to.equal('Two,');
|
55
|
-
});
|
56
|
-
it('has a tag when an option is initially selected', async () => {
|
57
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
|
58
|
-
<glide-core-dropdown-option
|
59
|
-
label="One"
|
60
|
-
selected
|
61
|
-
></glide-core-dropdown-option>
|
62
|
-
|
63
|
-
<glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
|
64
|
-
</glide-core-dropdown>`);
|
65
|
-
const tag = component.shadowRoot?.querySelector('[data-test="tag"]');
|
66
|
-
expect(tag?.checkVisibility()).to.be.true;
|
67
|
-
expect(tag?.label).to.equal('One');
|
68
|
-
});
|
69
|
-
it('shows Select All', async () => {
|
70
|
-
const component = await fixture(html `<glide-core-dropdown
|
71
|
-
label="Label"
|
72
|
-
placeholder="Placeholder"
|
73
|
-
multiple
|
74
|
-
select-all
|
75
|
-
open
|
76
|
-
>
|
77
|
-
<glide-core-dropdown-option
|
78
|
-
label="One"
|
79
|
-
selected
|
80
|
-
></glide-core-dropdown-option>
|
81
|
-
|
82
|
-
<glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
|
83
|
-
</glide-core-dropdown>`);
|
84
|
-
// Wait for it to open.
|
85
|
-
await aTimeout(0);
|
86
|
-
const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
|
87
|
-
expect(selectAll?.checkVisibility()).to.be.true;
|
88
|
-
});
|
89
|
-
it('sets Select All as selected when all options are initially selected', async () => {
|
90
|
-
const component = await fixture(html `<glide-core-dropdown
|
91
|
-
label="Label"
|
92
|
-
placeholder="Placeholder"
|
93
|
-
multiple
|
94
|
-
select-all
|
95
|
-
>
|
96
|
-
<glide-core-dropdown-option
|
97
|
-
label="One"
|
98
|
-
selected
|
99
|
-
></glide-core-dropdown-option>
|
100
|
-
|
101
|
-
<glide-core-dropdown-option
|
102
|
-
label="Two"
|
103
|
-
selected
|
104
|
-
></glide-core-dropdown-option>
|
105
|
-
</glide-core-dropdown>`);
|
106
|
-
const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
|
107
|
-
expect(selectAll?.selected).to.be.true;
|
108
|
-
});
|
109
|
-
it('sets Select All as deselected when no options are initially selected', async () => {
|
110
|
-
const component = await fixture(html `<glide-core-dropdown
|
111
|
-
label="Label"
|
112
|
-
placeholder="Placeholder"
|
113
|
-
multiple
|
114
|
-
select-all
|
115
|
-
>
|
116
|
-
<glide-core-dropdown-option label="One"></glide-core-dropdown-option>
|
117
|
-
<glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
|
118
|
-
</glide-core-dropdown>`);
|
119
|
-
const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
|
120
|
-
expect(selectAll?.selected).to.be.false;
|
121
|
-
});
|
122
|
-
it('sets Select All as indeterminate when not all options are initially selected', async () => {
|
123
|
-
const component = await fixture(html `<glide-core-dropdown
|
124
|
-
label="Label"
|
125
|
-
placeholder="Placeholder"
|
126
|
-
multiple
|
127
|
-
select-all
|
128
|
-
>
|
129
|
-
<glide-core-dropdown-option
|
130
|
-
label="One"
|
131
|
-
selected
|
132
|
-
></glide-core-dropdown-option>
|
133
|
-
|
134
|
-
<glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
|
135
|
-
</glide-core-dropdown>`);
|
136
|
-
const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
|
137
|
-
expect(selectAll?.privateIndeterminate).to.be.true;
|
138
|
-
});
|
139
|
-
it('does not set Select All as indeterminate when no options are initially selected', async () => {
|
140
|
-
const component = await fixture(html `<glide-core-dropdown
|
141
|
-
label="Label"
|
142
|
-
placeholder="Placeholder"
|
143
|
-
multiple
|
144
|
-
select-all
|
145
|
-
>
|
146
|
-
<glide-core-dropdown-option label="One"></glide-core-dropdown-option>
|
147
|
-
<glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
|
148
|
-
</glide-core-dropdown>`);
|
149
|
-
const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
|
150
|
-
expect(selectAll?.privateIndeterminate).to.be.false;
|
151
|
-
});
|
152
|
-
it('does not set Select All as indeterminate when all options are initially selected', async () => {
|
153
|
-
const component = await fixture(html `<glide-core-dropdown
|
154
|
-
label="Label"
|
155
|
-
placeholder="Placeholder"
|
156
|
-
multiple
|
157
|
-
select-all
|
158
|
-
>
|
159
|
-
<glide-core-dropdown-option
|
160
|
-
label="One"
|
161
|
-
selected
|
162
|
-
></glide-core-dropdown-option>
|
163
|
-
|
164
|
-
<glide-core-dropdown-option
|
165
|
-
label="Two"
|
166
|
-
selected
|
167
|
-
></glide-core-dropdown-option>
|
168
|
-
</glide-core-dropdown>`);
|
169
|
-
const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
|
170
|
-
expect(selectAll?.privateIndeterminate).to.be.false;
|
171
|
-
});
|
172
|
-
it('sets its internal label to `placeholder` when no option is initially selected', async () => {
|
173
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
|
174
|
-
<glide-core-dropdown-option label="One"></glide-core-dropdown-option>
|
175
|
-
<glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
|
176
|
-
</glide-core-dropdown>`);
|
177
|
-
const label = component.shadowRoot?.querySelector('[data-test="internal-label"]');
|
178
|
-
expect(label?.textContent?.trim()).to.equal('Placeholder');
|
179
|
-
});
|
180
|
-
it('has no internal label when an option is initially selected', async () => {
|
181
|
-
const component = await fixture(html `<glide-core-dropdown
|
182
|
-
label="Label"
|
183
|
-
placeholder="Placeholder"
|
184
|
-
open
|
185
|
-
multiple
|
186
|
-
>
|
187
|
-
<glide-core-dropdown-option
|
188
|
-
label="One"
|
189
|
-
selected
|
190
|
-
></glide-core-dropdown-option>
|
191
|
-
|
192
|
-
<glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
|
193
|
-
</glide-core-dropdown>`);
|
194
|
-
const label = component.shadowRoot?.querySelector('[data-test="internal-label"]');
|
195
|
-
expect(label?.checkVisibility()).to.not.be.ok;
|
196
|
-
});
|
197
|
-
it('has a "multiselect" icon for each selected option with a value', async () => {
|
198
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
|
199
|
-
<div slot="icon:one">✓</div>
|
200
|
-
<div slot="icon:two">✓</div>
|
201
|
-
<div slot="icon:three">✓</div>
|
202
|
-
|
203
|
-
<glide-core-dropdown-option
|
204
|
-
label="One"
|
205
|
-
value="one"
|
206
|
-
selected
|
207
|
-
></glide-core-dropdown-option>
|
208
|
-
|
209
|
-
<glide-core-dropdown-option
|
210
|
-
label="Two"
|
211
|
-
value="two"
|
212
|
-
selected
|
213
|
-
></glide-core-dropdown-option>
|
214
|
-
|
215
|
-
<glide-core-dropdown-option
|
216
|
-
label="Three"
|
217
|
-
selected
|
218
|
-
></glide-core-dropdown-option>
|
219
|
-
</glide-core-dropdown>`);
|
220
|
-
const icons = component.shadowRoot?.querySelectorAll('[data-test="multiselect-icon-slot"]');
|
221
|
-
expect(icons?.length).to.equal(2);
|
222
|
-
});
|
223
|
-
it('has no "multiselect" icons when no options are selected', async () => {
|
224
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
|
225
|
-
<div slot="icon:one">✓</div>
|
226
|
-
<div slot="icon:two">✓</div>
|
227
|
-
|
228
|
-
<glide-core-dropdown-option
|
229
|
-
label="One"
|
230
|
-
value="one"
|
231
|
-
></glide-core-dropdown-option>
|
232
|
-
|
233
|
-
<glide-core-dropdown-option
|
234
|
-
label="Two"
|
235
|
-
value="two"
|
236
|
-
></glide-core-dropdown-option>
|
237
|
-
</glide-core-dropdown>`);
|
238
|
-
const icons = component.shadowRoot?.querySelectorAll('[data-test="multiselect-icon-slot"]');
|
239
|
-
expect(icons?.length).to.equal(0);
|
240
|
-
});
|
241
|
-
it('has no "single-select" icon', async () => {
|
242
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" multiple>
|
243
|
-
<div slot="icon:one">✓</div>
|
244
|
-
<div slot="icon:two">✓</div>
|
245
|
-
|
246
|
-
<glide-core-dropdown-option
|
247
|
-
label="One"
|
248
|
-
value="one"
|
249
|
-
selected
|
250
|
-
></glide-core-dropdown-option>
|
251
|
-
|
252
|
-
<glide-core-dropdown-option
|
253
|
-
label="Two"
|
254
|
-
value="two"
|
255
|
-
></glide-core-dropdown-option>
|
256
|
-
</glide-core-dropdown>`);
|
257
|
-
const iconSlot = component.shadowRoot?.querySelector('[data-test="single-select-icon-slot"]');
|
258
|
-
expect(iconSlot).to.be.null;
|
259
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1,122 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import { expect, fixture, html } from '@open-wc/testing';
|
3
|
-
import GlideCoreDropdown from './dropdown.js';
|
4
|
-
GlideCoreDropdown.shadowRootOptions.mode = 'open';
|
5
|
-
it('is accessible ', async () => {
|
6
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
7
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
8
|
-
</glide-core-dropdown>`);
|
9
|
-
await expect(component).to.be.accessible();
|
10
|
-
});
|
11
|
-
it('has a selected option label when an option is initially selected', async () => {
|
12
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
13
|
-
<glide-core-dropdown-option
|
14
|
-
label="One"
|
15
|
-
selected
|
16
|
-
></glide-core-dropdown-option>
|
17
|
-
</glide-core-dropdown>`);
|
18
|
-
const labels = component.shadowRoot?.querySelectorAll('[data-test="selected-option-label"]');
|
19
|
-
expect(labels?.length).to.equal(1);
|
20
|
-
expect(labels?.[0]?.textContent?.trim()).to.equal('One,');
|
21
|
-
});
|
22
|
-
it('sets its internal `label` to the last initially selected option', async () => {
|
23
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
24
|
-
<glide-core-dropdown-option
|
25
|
-
label="One"
|
26
|
-
selected
|
27
|
-
></glide-core-dropdown-option>
|
28
|
-
|
29
|
-
<glide-core-dropdown-option
|
30
|
-
label="Two"
|
31
|
-
selected
|
32
|
-
></glide-core-dropdown-option>
|
33
|
-
</glide-core-dropdown>`);
|
34
|
-
const label = component.shadowRoot?.querySelector('[data-test="internal-label"]');
|
35
|
-
expect(label?.textContent?.trim()).to.equal('Two');
|
36
|
-
});
|
37
|
-
it('sets `value` to that of the last initially selected option', async () => {
|
38
|
-
const component = await fixture(html `<glide-core-dropdown open>
|
39
|
-
<glide-core-dropdown-option
|
40
|
-
label="One"
|
41
|
-
value="one"
|
42
|
-
></glide-core-dropdown-option>
|
43
|
-
|
44
|
-
<glide-core-dropdown-option
|
45
|
-
label="Two"
|
46
|
-
value="two"
|
47
|
-
selected
|
48
|
-
></glide-core-dropdown-option>
|
49
|
-
|
50
|
-
<glide-core-dropdown-option
|
51
|
-
label="Three"
|
52
|
-
value="three"
|
53
|
-
selected
|
54
|
-
></glide-core-dropdown-option>
|
55
|
-
</glide-core-dropdown>`);
|
56
|
-
expect(component.value).to.deep.equal(['three']);
|
57
|
-
});
|
58
|
-
it('hides Select All', async () => {
|
59
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
60
|
-
<glide-core-dropdown-option
|
61
|
-
label="One"
|
62
|
-
value="one"
|
63
|
-
selected
|
64
|
-
></glide-core-dropdown-option>
|
65
|
-
|
66
|
-
<glide-core-dropdown-option
|
67
|
-
label="Two"
|
68
|
-
value="two"
|
69
|
-
></glide-core-dropdown-option>
|
70
|
-
</glide-core-dropdown>`);
|
71
|
-
const selectAll = component.shadowRoot?.querySelector('[data-test="select-all"]');
|
72
|
-
expect(selectAll?.checkVisibility()).to.not.be.ok;
|
73
|
-
});
|
74
|
-
it('has an icon when an option with a value is selected', async () => {
|
75
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
76
|
-
<div slot="icon:one">✓</div>
|
77
|
-
<div slot="icon:two">✓</div>
|
78
|
-
|
79
|
-
<glide-core-dropdown-option label="One" value="one" selected>
|
80
|
-
<div slot="icon">✓</div>
|
81
|
-
</glide-core-dropdown-option>
|
82
|
-
|
83
|
-
<glide-core-dropdown-option label="Two" value="two">
|
84
|
-
<div slot="icon">✓</div>
|
85
|
-
</glide-core-dropdown-option>
|
86
|
-
</glide-core-dropdown>`);
|
87
|
-
const iconSlot = component.shadowRoot?.querySelector('[data-test="single-select-icon-slot"]');
|
88
|
-
expect(iconSlot instanceof HTMLSlotElement).to.be.true;
|
89
|
-
expect(iconSlot?.assignedElements().at(0)?.slot).to.equal('icon:one');
|
90
|
-
});
|
91
|
-
it('has no icon when an option without a value is selected', async () => {
|
92
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
93
|
-
<div slot="icon:one">✓</div>
|
94
|
-
<div slot="icon:two">✓</div>
|
95
|
-
|
96
|
-
<glide-core-dropdown-option label="One" selected>
|
97
|
-
<div slot="icon">✓</div>
|
98
|
-
</glide-core-dropdown-option>
|
99
|
-
|
100
|
-
<glide-core-dropdown-option label="Two" value="two">
|
101
|
-
<div slot="icon">✓</div>
|
102
|
-
</glide-core-dropdown-option>
|
103
|
-
</glide-core-dropdown>`);
|
104
|
-
const iconSlot = component.shadowRoot?.querySelector('[data-test="single-select-icon-slot"]');
|
105
|
-
expect(iconSlot).to.be.null;
|
106
|
-
});
|
107
|
-
it('has no icon when no option is selected', async () => {
|
108
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
109
|
-
<div slot="icon:one">✓</div>
|
110
|
-
<div slot="icon:two">✓</div>
|
111
|
-
|
112
|
-
<glide-core-dropdown-option label="One" value="one">
|
113
|
-
<div slot="icon">✓</div>
|
114
|
-
</glide-core-dropdown-option>
|
115
|
-
|
116
|
-
<glide-core-dropdown-option label="Two" value="two">
|
117
|
-
<div slot="icon">✓</div>
|
118
|
-
</glide-core-dropdown-option>
|
119
|
-
</glide-core-dropdown>`);
|
120
|
-
const iconSlot = component.shadowRoot?.querySelector('[data-test="single-select-icon-slot"]');
|
121
|
-
expect(iconSlot).to.be.null;
|
122
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1,31 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import * as sinon from 'sinon';
|
3
|
-
import { expect, fixture, html } from '@open-wc/testing';
|
4
|
-
import { sendKeys } from '@web/test-runner-commands';
|
5
|
-
import GlideCoreDropdown from './dropdown.js';
|
6
|
-
import GlideCoreDropdownOption from './dropdown.option.js';
|
7
|
-
GlideCoreDropdown.shadowRootOptions.mode = 'open';
|
8
|
-
GlideCoreDropdownOption.shadowRootOptions.mode = 'open';
|
9
|
-
const defaultSlot = html `
|
10
|
-
<glide-core-dropdown-option label="One"></glide-core-dropdown-option>
|
11
|
-
<glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
|
12
|
-
<glide-core-dropdown-option label="Three"></glide-core-dropdown-option>
|
13
|
-
<glide-core-dropdown-option label="Four"></glide-core-dropdown-option>
|
14
|
-
<glide-core-dropdown-option label="Five"></glide-core-dropdown-option>
|
15
|
-
<glide-core-dropdown-option label="Six"></glide-core-dropdown-option>
|
16
|
-
<glide-core-dropdown-option label="Seven"></glide-core-dropdown-option>
|
17
|
-
<glide-core-dropdown-option label="Eight"></glide-core-dropdown-option>
|
18
|
-
<glide-core-dropdown-option label="Nine"></glide-core-dropdown-option>
|
19
|
-
<glide-core-dropdown-option label="Ten"></glide-core-dropdown-option>
|
20
|
-
<glide-core-dropdown-option label="Eleven"></glide-core-dropdown-option>
|
21
|
-
`;
|
22
|
-
it('does not dispatch "input" events on input', async () => {
|
23
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
24
|
-
${defaultSlot}
|
25
|
-
</glide-core-dropdown>`);
|
26
|
-
const spy = sinon.spy();
|
27
|
-
component.addEventListener('input', spy);
|
28
|
-
component.focus();
|
29
|
-
await sendKeys({ type: 'one' });
|
30
|
-
expect(spy.callCount).to.equal(0);
|
31
|
-
});
|
@@ -1,251 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import * as sinon from 'sinon';
|
3
|
-
import { aTimeout, assert, expect, fixture, html, oneEvent, } from '@open-wc/testing';
|
4
|
-
import { sendKeys } from '@web/test-runner-commands';
|
5
|
-
import GlideCoreDropdown from './dropdown.js';
|
6
|
-
import GlideCoreDropdownOption from './dropdown.option.js';
|
7
|
-
GlideCoreDropdown.shadowRootOptions.mode = 'open';
|
8
|
-
GlideCoreDropdownOption.shadowRootOptions.mode = 'open';
|
9
|
-
// `await aTimeout(0)` is used throughout. Using `oneEvent` instead and
|
10
|
-
// expecting it to throw would work. But it wouldn't throw until its
|
11
|
-
// timeout, which would make for a slow test. Its timeout can likely be
|
12
|
-
// configured. But waiting a turn of the event loop, when which the event
|
13
|
-
// will have been dispatched, gets the job done as well.
|
14
|
-
it('dispatches an "edit" event on click', async () => {
|
15
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
16
|
-
<glide-core-dropdown-option
|
17
|
-
label="Label"
|
18
|
-
editable
|
19
|
-
></glide-core-dropdown-option>
|
20
|
-
</glide-core-dropdown>`);
|
21
|
-
setTimeout(() => {
|
22
|
-
const button = component
|
23
|
-
.querySelector('glide-core-dropdown-option')
|
24
|
-
?.shadowRoot?.querySelector('[data-test="edit-button"]');
|
25
|
-
button?.dispatchEvent(new MouseEvent('mouseover'));
|
26
|
-
button?.click();
|
27
|
-
});
|
28
|
-
const option = component.querySelector('glide-core-dropdown-option');
|
29
|
-
assert(option);
|
30
|
-
const event = await oneEvent(option, 'edit');
|
31
|
-
expect(event instanceof Event).to.be.true;
|
32
|
-
expect(event.bubbles).to.be.true;
|
33
|
-
expect(event.composed).to.be.true;
|
34
|
-
expect(event.target).to.equal(option);
|
35
|
-
});
|
36
|
-
it('dispatches an "edit" event on Enter', async () => {
|
37
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
38
|
-
<glide-core-dropdown-option
|
39
|
-
label="Label"
|
40
|
-
editable
|
41
|
-
></glide-core-dropdown-option>
|
42
|
-
</glide-core-dropdown>`);
|
43
|
-
component
|
44
|
-
.querySelector('glide-core-dropdown-option')
|
45
|
-
?.shadowRoot?.querySelector('[data-test="edit-button"]')
|
46
|
-
?.dispatchEvent(new MouseEvent('mouseover'));
|
47
|
-
component.focus();
|
48
|
-
await sendKeys({ press: 'ArrowDown' });
|
49
|
-
sendKeys({ press: 'Enter' });
|
50
|
-
const option = component.querySelector('glide-core-dropdown-option');
|
51
|
-
assert(option);
|
52
|
-
const event = await oneEvent(option, 'edit');
|
53
|
-
expect(event instanceof Event).to.be.true;
|
54
|
-
expect(event.bubbles).to.be.true;
|
55
|
-
expect(event.composed).to.be.true;
|
56
|
-
expect(event.target).to.equal(option);
|
57
|
-
});
|
58
|
-
it('dispatches an "edit" event on Space', async () => {
|
59
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
60
|
-
<glide-core-dropdown-option
|
61
|
-
label="Label"
|
62
|
-
editable
|
63
|
-
></glide-core-dropdown-option>
|
64
|
-
</glide-core-dropdown>`);
|
65
|
-
component
|
66
|
-
.querySelector('glide-core-dropdown-option')
|
67
|
-
?.shadowRoot?.querySelector('[data-test="edit-button"]')
|
68
|
-
?.dispatchEvent(new MouseEvent('mouseover'));
|
69
|
-
component.focus();
|
70
|
-
await sendKeys({ press: 'ArrowDown' });
|
71
|
-
sendKeys({ press: ' ' });
|
72
|
-
const option = component.querySelector('glide-core-dropdown-option');
|
73
|
-
assert(option);
|
74
|
-
const event = await oneEvent(option, 'edit');
|
75
|
-
expect(event instanceof Event).to.be.true;
|
76
|
-
expect(event.bubbles).to.be.true;
|
77
|
-
expect(event.composed).to.be.true;
|
78
|
-
expect(event.target).to.equal(option);
|
79
|
-
});
|
80
|
-
it('dispatches an "add" event on click', async () => {
|
81
|
-
const component = await fixture(html `<glide-core-dropdown
|
82
|
-
add-button-label="Add"
|
83
|
-
label="Label"
|
84
|
-
placeholder="Placeholder"
|
85
|
-
open
|
86
|
-
>
|
87
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
88
|
-
</glide-core-dropdown>`);
|
89
|
-
// Wait for it to open.
|
90
|
-
await aTimeout(0);
|
91
|
-
setTimeout(async () => {
|
92
|
-
const button = component.shadowRoot?.querySelector('[data-test="add-button"]');
|
93
|
-
button?.dispatchEvent(new MouseEvent('mouseover'));
|
94
|
-
button?.click();
|
95
|
-
});
|
96
|
-
const event = await oneEvent(component, 'add');
|
97
|
-
expect(event instanceof Event).to.be.true;
|
98
|
-
expect(event.bubbles).to.be.true;
|
99
|
-
expect(event.composed).to.be.true;
|
100
|
-
});
|
101
|
-
it('dispatches an "add" event on Enter', async () => {
|
102
|
-
const component = await fixture(html `<glide-core-dropdown
|
103
|
-
add-button-label="Add"
|
104
|
-
label="Label"
|
105
|
-
placeholder="Placeholder"
|
106
|
-
open
|
107
|
-
>
|
108
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
109
|
-
</glide-core-dropdown>`);
|
110
|
-
// Wait for it to open.
|
111
|
-
await aTimeout(0);
|
112
|
-
component.shadowRoot
|
113
|
-
?.querySelector('[data-test="add-button"]')
|
114
|
-
?.focus();
|
115
|
-
sendKeys({ press: 'Enter' });
|
116
|
-
const event = await oneEvent(component, 'add');
|
117
|
-
expect(event instanceof Event).to.be.true;
|
118
|
-
expect(event.bubbles).to.be.true;
|
119
|
-
expect(event.composed).to.be.true;
|
120
|
-
});
|
121
|
-
it('dispatches an "add" event on Space', async () => {
|
122
|
-
const component = await fixture(html `<glide-core-dropdown
|
123
|
-
add-button-label="Add"
|
124
|
-
label="Label"
|
125
|
-
placeholder="Placeholder"
|
126
|
-
open
|
127
|
-
>
|
128
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
129
|
-
</glide-core-dropdown>`);
|
130
|
-
// Wait for it to open.
|
131
|
-
await aTimeout(0);
|
132
|
-
component.shadowRoot
|
133
|
-
?.querySelector('[data-test="add-button"]')
|
134
|
-
?.focus();
|
135
|
-
sendKeys({ press: ' ' });
|
136
|
-
const event = await oneEvent(component, 'add');
|
137
|
-
expect(event instanceof Event).to.be.true;
|
138
|
-
expect(event.bubbles).to.be.true;
|
139
|
-
expect(event.composed).to.be.true;
|
140
|
-
});
|
141
|
-
it('dispatches an "invalid" event on submit when required and no option is selected', async () => {
|
142
|
-
const form = document.createElement('form');
|
143
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" required>
|
144
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
145
|
-
</glide-core-dropdown>`, { parentNode: form });
|
146
|
-
setTimeout(() => form.requestSubmit());
|
147
|
-
const event = await oneEvent(component, 'invalid');
|
148
|
-
expect(event instanceof Event).to.be.true;
|
149
|
-
});
|
150
|
-
it('dispatches an "invalid" event when `checkValidity` is called when required and no option is selected', async () => {
|
151
|
-
const form = document.createElement('form');
|
152
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" required>
|
153
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
154
|
-
</glide-core-dropdown>`, { parentNode: form });
|
155
|
-
setTimeout(() => component.checkValidity());
|
156
|
-
const event = await oneEvent(component, 'invalid');
|
157
|
-
expect(event instanceof Event).to.be.true;
|
158
|
-
});
|
159
|
-
it('dispatches an "invalid" event when `reportValidity` is called when required and no option is selected', async () => {
|
160
|
-
const form = document.createElement('form');
|
161
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" required>
|
162
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
163
|
-
</glide-core-dropdown>`, { parentNode: form });
|
164
|
-
setTimeout(() => component.reportValidity());
|
165
|
-
const event = await oneEvent(component, 'invalid');
|
166
|
-
expect(event instanceof Event).to.be.true;
|
167
|
-
});
|
168
|
-
it('does not dispatch an "invalid" event when `checkValidity` is called when not required', async () => {
|
169
|
-
const form = document.createElement('form');
|
170
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
171
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
172
|
-
</glide-core-dropdown>`, { parentNode: form });
|
173
|
-
const spy = sinon.spy();
|
174
|
-
component.addEventListener('invalid', spy);
|
175
|
-
component.checkValidity();
|
176
|
-
await aTimeout(0);
|
177
|
-
expect(spy.callCount).to.equal(0);
|
178
|
-
});
|
179
|
-
it('does not dispatch an "invalid" event when `checkValidity` is called when required, disabled, and no option is selected', async () => {
|
180
|
-
const form = document.createElement('form');
|
181
|
-
const component = await fixture(html `<glide-core-dropdown
|
182
|
-
label="Label"
|
183
|
-
placeholder="Placeholder"
|
184
|
-
disabled
|
185
|
-
required
|
186
|
-
>
|
187
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
188
|
-
</glide-core-dropdown>`, { parentNode: form });
|
189
|
-
const spy = sinon.spy();
|
190
|
-
component.addEventListener('invalid', spy);
|
191
|
-
component.checkValidity();
|
192
|
-
await aTimeout(0);
|
193
|
-
expect(spy.callCount).to.equal(0);
|
194
|
-
});
|
195
|
-
it('does not dispatch an "invalid" event when `reportValidity` is called when not required,', async () => {
|
196
|
-
const form = document.createElement('form');
|
197
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder">
|
198
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
199
|
-
</glide-core-dropdown>`, { parentNode: form });
|
200
|
-
const spy = sinon.spy();
|
201
|
-
component.addEventListener('invalid', spy);
|
202
|
-
component.reportValidity();
|
203
|
-
await aTimeout(0);
|
204
|
-
expect(spy.callCount).to.equal(0);
|
205
|
-
});
|
206
|
-
it('does not dispatch an "invalid" event when `reportValidity` is called when required, disabled, and no option is selected', async () => {
|
207
|
-
const form = document.createElement('form');
|
208
|
-
const component = await fixture(html `<glide-core-dropdown
|
209
|
-
label="Label"
|
210
|
-
placeholder="Placeholder"
|
211
|
-
disabled
|
212
|
-
required
|
213
|
-
>
|
214
|
-
<glide-core-dropdown-option label="Label"></glide-core-dropdown-option>
|
215
|
-
</glide-core-dropdown>`, { parentNode: form });
|
216
|
-
const spy = sinon.spy();
|
217
|
-
component.addEventListener('invalid', spy);
|
218
|
-
component.reportValidity();
|
219
|
-
await aTimeout(0);
|
220
|
-
expect(spy.callCount).to.equal(0);
|
221
|
-
});
|
222
|
-
it('does not dispatch a "change" event when an option is selected programmatically', async () => {
|
223
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" open>
|
224
|
-
<glide-core-dropdown-option label="One"></glide-core-dropdown-option>
|
225
|
-
<glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
|
226
|
-
</glide-core-dropdown>`);
|
227
|
-
const spy = sinon.spy();
|
228
|
-
component.addEventListener('change', spy);
|
229
|
-
setTimeout(() => {
|
230
|
-
const option = component?.querySelector('glide-core-dropdown-option');
|
231
|
-
assert(option);
|
232
|
-
option.selected = true;
|
233
|
-
});
|
234
|
-
await aTimeout(0);
|
235
|
-
expect(spy.callCount).to.equal(0);
|
236
|
-
});
|
237
|
-
it('does not dispatch a "input" event when an option is selected programmatically', async () => {
|
238
|
-
const component = await fixture(html `<glide-core-dropdown label="Label" placeholder="Placeholder" open>
|
239
|
-
<glide-core-dropdown-option label="One"></glide-core-dropdown-option>
|
240
|
-
<glide-core-dropdown-option label="Two"></glide-core-dropdown-option>
|
241
|
-
</glide-core-dropdown>`);
|
242
|
-
const spy = sinon.spy();
|
243
|
-
component.addEventListener('input', spy);
|
244
|
-
setTimeout(() => {
|
245
|
-
const option = component?.querySelector('glide-core-dropdown-option');
|
246
|
-
assert(option);
|
247
|
-
option.selected = true;
|
248
|
-
});
|
249
|
-
await aTimeout(0);
|
250
|
-
expect(spy.callCount).to.equal(0);
|
251
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|