@crowdstrike/glide-core 0.7.0 → 0.9.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/README.md +44 -5
- package/dist/accordion.test.basics.js +1 -0
- package/dist/accordion.test.events.js +1 -0
- package/dist/button-group.button.d.ts +14 -15
- package/dist/button-group.button.js +1 -1
- package/dist/button-group.button.styles.js +75 -52
- package/dist/button-group.button.test.basics.d.ts +1 -1
- package/dist/button-group.button.test.basics.js +84 -147
- package/dist/button-group.button.test.events.js +9 -67
- package/dist/button-group.button.test.focus.js +13 -0
- package/dist/button-group.button.test.interactions.d.ts +1 -0
- package/dist/button-group.button.test.interactions.js +42 -0
- package/dist/button-group.d.ts +7 -10
- package/dist/button-group.js +1 -1
- package/dist/button-group.stories.d.ts +1 -5
- package/dist/button-group.styles.js +18 -6
- package/dist/button-group.test.basics.js +114 -234
- package/dist/button-group.test.events.js +211 -263
- package/dist/button-group.test.focus.d.ts +1 -0
- package/dist/button-group.test.focus.js +39 -0
- package/dist/button-group.test.interactions.d.ts +1 -0
- package/dist/button-group.test.interactions.js +91 -0
- package/dist/button.test.basics.js +2 -1
- package/dist/button.test.events.js +1 -0
- package/dist/button.test.form.js +1 -0
- package/dist/checkbox-group.js +1 -1
- package/dist/checkbox-group.styles.js +1 -1
- package/dist/checkbox-group.test.basics.js +2 -1
- package/dist/checkbox-group.test.events.js +5 -4
- package/dist/checkbox-group.test.focus.js +5 -3
- package/dist/checkbox-group.test.form.js +1 -0
- package/dist/checkbox-group.test.validity.js +1 -0
- package/dist/checkbox.d.ts +7 -1
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.styles.js +11 -3
- package/dist/checkbox.test.basics.js +1 -0
- package/dist/checkbox.test.events.js +5 -4
- package/dist/checkbox.test.focus.js +2 -2
- package/dist/checkbox.test.form.js +1 -0
- package/dist/{checkbox.test.states.js → checkbox.test.interactions.js} +25 -1
- package/dist/checkbox.test.validity.js +1 -0
- package/dist/drawer.js +1 -1
- package/dist/drawer.test.basics.js +1 -0
- package/dist/drawer.test.closing.js +1 -0
- package/dist/drawer.test.events.js +1 -0
- package/dist/drawer.test.methods.js +1 -0
- package/dist/dropdown.d.ts +6 -4
- package/dist/dropdown.js +1 -1
- package/dist/dropdown.option.d.ts +7 -2
- package/dist/dropdown.option.js +1 -1
- package/dist/dropdown.option.styles.js +13 -0
- package/dist/dropdown.option.test.basics.js +7 -3
- package/dist/dropdown.option.test.basics.multiple.js +1 -0
- package/dist/dropdown.option.test.basics.single.js +1 -0
- package/dist/dropdown.option.test.events.js +2 -1
- package/dist/dropdown.option.test.focus.js +1 -1
- package/dist/dropdown.option.test.interactions.multiple.js +2 -54
- package/dist/dropdown.option.test.interactions.single.js +52 -9
- package/dist/dropdown.styles.js +20 -19
- package/dist/dropdown.test.basics.filterable.js +1 -0
- package/dist/dropdown.test.basics.js +144 -2
- package/dist/dropdown.test.basics.multiple.js +6 -3
- package/dist/dropdown.test.basics.single.js +1 -1
- package/dist/dropdown.test.events.filterable.js +74 -0
- package/dist/dropdown.test.events.js +50 -160
- package/dist/dropdown.test.events.multiple.js +268 -10
- package/dist/dropdown.test.events.single.js +202 -4
- package/dist/dropdown.test.focus.filterable.js +9 -5
- package/dist/dropdown.test.focus.js +2 -1
- package/dist/dropdown.test.focus.multiple.js +1 -2
- package/dist/dropdown.test.focus.single.js +1 -1
- package/dist/dropdown.test.form.js +1 -0
- package/dist/dropdown.test.form.multiple.js +1 -0
- package/dist/dropdown.test.form.single.js +1 -0
- package/dist/dropdown.test.interactions.filterable.js +69 -11
- package/dist/dropdown.test.interactions.js +95 -5
- package/dist/dropdown.test.interactions.multiple.js +203 -6
- package/dist/dropdown.test.interactions.single.js +69 -6
- package/dist/dropdown.test.validity.js +1 -0
- package/dist/form-controls-layout.test.basics.js +2 -1
- package/dist/icon-button.test.basics.js +2 -1
- package/dist/icons/checked.d.ts +1 -1
- package/dist/icons/checked.js +1 -1
- package/dist/icons/magnifying-glass.js +1 -1
- package/dist/input.d.ts +0 -6
- package/dist/input.js +1 -1
- package/dist/input.styles.js +7 -2
- package/dist/input.test.basics.js +20 -5
- package/dist/input.test.events.js +5 -4
- package/dist/input.test.focus.js +5 -4
- package/dist/input.test.form.js +1 -0
- package/dist/input.test.translations.d.ts +1 -0
- package/dist/input.test.translations.js +38 -0
- package/dist/input.test.validity.js +134 -4
- package/dist/label.d.ts +1 -1
- package/dist/label.js +1 -1
- package/dist/label.styles.js +29 -20
- package/dist/label.test.basics.js +27 -24
- package/dist/library/expect-argument-error.js +1 -1
- package/dist/library/localize.d.ts +5 -1
- package/dist/library/ow.test.d.ts +2 -1
- package/dist/library/ow.test.js +8 -3
- package/dist/menu.button.test.basics.js +1 -0
- package/dist/menu.d.ts +3 -5
- package/dist/menu.js +1 -1
- package/dist/menu.link.test.basics.js +1 -0
- package/dist/menu.options.test.basics.js +3 -2
- package/dist/menu.styles.js +1 -15
- package/dist/menu.test.basics.d.ts +1 -2
- package/dist/menu.test.basics.js +23 -6
- package/dist/menu.test.events.d.ts +1 -0
- package/dist/menu.test.events.js +2 -1
- package/dist/menu.test.focus.d.ts +1 -0
- package/dist/menu.test.focus.js +14 -6
- package/dist/menu.test.interactions.js +213 -56
- package/dist/modal.icon-button.test.basics.js +2 -1
- package/dist/modal.js +1 -1
- package/dist/modal.styles.js +18 -13
- package/dist/modal.tertiary-icon.d.ts +0 -1
- package/dist/modal.tertiary-icon.js +1 -1
- package/dist/modal.tertiary-icon.test.basics.js +2 -1
- package/dist/modal.test.accessibility.js +1 -0
- package/dist/modal.test.basics.js +2 -1
- package/dist/modal.test.close.js +1 -0
- package/dist/modal.test.events.js +11 -10
- package/dist/modal.test.lock-scroll.js +1 -0
- package/dist/modal.test.methods.js +1 -0
- package/dist/modal.test.scrollbars.js +1 -0
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.styles.js +1 -1
- package/dist/radio-group.test.basics.js +1 -0
- package/dist/radio-group.test.events.js +1 -0
- package/dist/radio-group.test.focus.js +4 -3
- package/dist/radio-group.test.form.js +1 -0
- package/dist/radio-group.test.validity.js +1 -0
- package/dist/radio.d.ts +1 -0
- package/dist/radio.js +1 -1
- package/dist/radio.styles.js +33 -0
- package/dist/split-button.test.basics.js +1 -0
- package/dist/split-container.test.basics.js +5 -0
- package/dist/split-link.test.basics.js +1 -0
- package/dist/split-link.test.interactions.js +2 -1
- package/dist/styles/variables.css +1 -1
- package/dist/tab.d.ts +1 -3
- package/dist/tab.group.d.ts +3 -5
- package/dist/tab.group.js +1 -1
- package/dist/tab.group.styles.js +27 -13
- package/dist/tab.group.test.basics.js +8 -57
- package/dist/tab.group.test.interactions.d.ts +3 -0
- package/dist/tab.group.test.interactions.js +454 -0
- package/dist/tab.js +1 -1
- package/dist/tab.panel.d.ts +1 -0
- package/dist/tab.panel.js +1 -1
- package/dist/tab.panel.styles.js +11 -1
- package/dist/tab.styles.js +7 -68
- package/dist/tab.test.basics.js +0 -20
- package/dist/tabs.stories.d.ts +1 -2
- package/dist/tag.test.basics.js +3 -2
- package/dist/textarea.d.ts +0 -1
- package/dist/textarea.js +2 -2
- package/dist/textarea.stories.d.ts +3 -4
- package/dist/textarea.styles.js +14 -3
- package/dist/textarea.test.basics.js +81 -44
- package/dist/textarea.test.events.js +57 -41
- package/dist/textarea.test.form.js +1 -0
- package/dist/textarea.test.translations.d.ts +1 -0
- package/dist/textarea.test.translations.js +34 -0
- package/dist/textarea.test.validity.js +105 -20
- package/dist/toasts.js +1 -1
- package/dist/toasts.styles.js +8 -1
- package/dist/toasts.test.basics.js +20 -0
- package/dist/toggle.js +1 -1
- package/dist/toggle.test.basics.js +1 -0
- package/dist/toggle.test.events.js +1 -0
- package/dist/toggle.test.focus.js +1 -1
- package/dist/toggle.test.interactions.d.ts +1 -0
- package/dist/{toggle.test.states.js → toggle.test.interactions.js} +1 -0
- package/dist/tooltip.d.ts +7 -5
- package/dist/tooltip.js +1 -1
- package/dist/tooltip.styles.js +90 -25
- package/dist/tooltip.test.basics.js +39 -3
- package/dist/tooltip.test.interactions.js +137 -34
- package/dist/translations/en.js +1 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/ja.js +1 -1
- package/dist/tree.d.ts +0 -1
- package/dist/tree.item.d.ts +2 -3
- package/dist/tree.item.js +1 -1
- package/dist/tree.item.menu.d.ts +0 -1
- package/dist/tree.item.menu.js +1 -1
- package/dist/tree.item.test.basics.js +1 -0
- package/dist/tree.js +1 -1
- package/dist/tree.test.basics.js +2 -1
- package/dist/tree.test.events.js +1 -1
- package/package.json +40 -29
- package/dist/drawer.test.floating-components.d.ts +0 -1
- package/dist/drawer.test.floating-components.js +0 -51
- package/dist/library/set-containing-block.d.ts +0 -15
- package/dist/library/set-containing-block.js +0 -1
- package/dist/modal.test.floating-components.js +0 -62
- /package/dist/{checkbox.test.states.d.ts → button-group.button.test.focus.d.ts} +0 -0
- /package/dist/{modal.test.floating-components.d.ts → checkbox.test.interactions.d.ts} +0 -0
- /package/dist/{toggle.test.states.d.ts → dropdown.test.events.filterable.d.ts} +0 -0
@@ -1,3 +1,4 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
1
2
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2
3
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3
4
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
@@ -7,7 +8,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
7
8
|
import './menu.link.js';
|
8
9
|
import './menu.options.js';
|
9
10
|
import { LitElement } from 'lit';
|
10
|
-
import { assert, elementUpdated, expect, fixture, html, } from '@open-wc/testing';
|
11
|
+
import { aTimeout, assert, elementUpdated, expect, fixture, html, } from '@open-wc/testing';
|
11
12
|
import { customElement } from 'lit/decorators.js';
|
12
13
|
import { sendKeys } from '@web/test-runner-commands';
|
13
14
|
import GlideCoreMenu from './menu.js';
|
@@ -40,24 +41,114 @@ it('opens on click', async () => {
|
|
40
41
|
</glide-core-menu-options>
|
41
42
|
</glide-core-menu>`);
|
42
43
|
component.querySelector('button')?.click();
|
43
|
-
|
44
|
+
// Wait for Floating UI.
|
45
|
+
await aTimeout(0);
|
44
46
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
45
47
|
const target = component.querySelector('button');
|
48
|
+
const options = component.querySelector('glide-core-menu-options');
|
49
|
+
const link = component.querySelector('glide-core-menu-link');
|
50
|
+
expect(component.open).to.be.true;
|
51
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
52
|
+
expect(target?.ariaExpanded).to.equal('true');
|
53
|
+
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
54
|
+
});
|
55
|
+
it('opens when `open` is set programmatically', async () => {
|
56
|
+
const component = await fixture(html `<glide-core-menu>
|
57
|
+
<button slot="target">Target</button>
|
58
|
+
|
59
|
+
<glide-core-menu-options>
|
60
|
+
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
61
|
+
</glide-core-menu-options>
|
62
|
+
</glide-core-menu>`);
|
63
|
+
component.open = true;
|
64
|
+
// Wait for Floating UI.
|
65
|
+
await aTimeout(0);
|
66
|
+
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
67
|
+
const target = component.querySelector('button');
|
68
|
+
const options = component.querySelector('glide-core-menu-options');
|
69
|
+
const link = component.querySelector('glide-core-menu-link');
|
46
70
|
expect(component.open).to.be.true;
|
47
|
-
expect(defaultSlot?.checkVisibility(
|
71
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
72
|
+
expect(target?.ariaExpanded).to.equal('true');
|
73
|
+
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
74
|
+
});
|
75
|
+
it('opens when `disabled` is set programmatically on its target', async () => {
|
76
|
+
const component = await fixture(html `<glide-core-menu>
|
77
|
+
<button slot="target" disabled>Target</button>
|
78
|
+
|
79
|
+
<glide-core-menu-options>
|
80
|
+
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
81
|
+
</glide-core-menu-options>
|
82
|
+
</glide-core-menu>`);
|
83
|
+
const target = component.querySelector('button');
|
84
|
+
assert(target);
|
85
|
+
target.disabled = false;
|
86
|
+
target.click();
|
87
|
+
// Wait for Floating UI.
|
88
|
+
await aTimeout(0);
|
89
|
+
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
90
|
+
const options = component.querySelector('glide-core-menu-options');
|
91
|
+
const link = component.querySelector('glide-core-menu-link');
|
92
|
+
expect(component.open).to.be.true;
|
93
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
94
|
+
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
48
95
|
expect(target?.ariaExpanded).to.equal('true');
|
49
96
|
});
|
97
|
+
it('opens when `aria-disabled` is set programmatically on its target', async () => {
|
98
|
+
const component = await fixture(html `<glide-core-menu>
|
99
|
+
<button slot="target" aria-disabled="true">Target</button>
|
100
|
+
|
101
|
+
<glide-core-menu-options>
|
102
|
+
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
103
|
+
</glide-core-menu-options>
|
104
|
+
</glide-core-menu>`);
|
105
|
+
const target = component.querySelector('button');
|
106
|
+
assert(target);
|
107
|
+
target.ariaDisabled = 'false';
|
108
|
+
target.click();
|
109
|
+
// Wait for Floating UI.
|
110
|
+
await aTimeout(0);
|
111
|
+
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
112
|
+
const options = component.querySelector('glide-core-menu-options');
|
113
|
+
const link = component.querySelector('glide-core-menu-link');
|
114
|
+
expect(component.open).to.be.true;
|
115
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
116
|
+
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
117
|
+
expect(target?.ariaExpanded).to.equal('true');
|
118
|
+
});
|
119
|
+
it('closes when `open` is set programmatically', async () => {
|
120
|
+
const component = await fixture(html `<glide-core-menu open>
|
121
|
+
<button slot="target">Target</button>
|
122
|
+
|
123
|
+
<glide-core-menu-options>
|
124
|
+
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
125
|
+
</glide-core-menu-options>
|
126
|
+
</glide-core-menu>`);
|
127
|
+
// Wait for Floating UI.
|
128
|
+
await aTimeout(0);
|
129
|
+
component.open = false;
|
130
|
+
await elementUpdated(component);
|
131
|
+
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
132
|
+
const target = component.querySelector('button');
|
133
|
+
const options = component.querySelector('glide-core-menu-options');
|
134
|
+
expect(component.open).to.be.false;
|
135
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
136
|
+
expect(target?.ariaExpanded).to.equal('false');
|
137
|
+
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
138
|
+
});
|
50
139
|
it('does not open on click when there are no options', async () => {
|
51
140
|
const component = await fixture(html `<glide-core-menu>
|
52
141
|
<button slot="target">Target</button>
|
53
142
|
<glide-core-menu-options> </glide-core-menu-options>
|
54
143
|
</glide-core-menu>`);
|
55
144
|
component.querySelector('button')?.click();
|
145
|
+
// Wait for Floating UI.
|
146
|
+
await aTimeout(0);
|
56
147
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
57
148
|
const options = component.querySelector('glide-core-menu-options');
|
58
149
|
const target = component.querySelector('button');
|
59
150
|
expect(component.open).to.be.false;
|
60
|
-
expect(defaultSlot?.checkVisibility(
|
151
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
61
152
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
62
153
|
expect(target?.ariaExpanded).to.equal('false');
|
63
154
|
});
|
@@ -70,11 +161,13 @@ it('does not open when `disabled` is set on its target', async () => {
|
|
70
161
|
</glide-core-menu-options>
|
71
162
|
</glide-core-menu>`);
|
72
163
|
component.querySelector('button')?.click();
|
164
|
+
// Wait for Floating UI.
|
165
|
+
await aTimeout(0);
|
73
166
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
74
167
|
const options = component.querySelector('glide-core-menu-options');
|
75
168
|
const target = component.querySelector('button');
|
76
169
|
expect(component.open).to.be.false;
|
77
|
-
expect(defaultSlot?.checkVisibility(
|
170
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
78
171
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
79
172
|
expect(target?.ariaExpanded).to.equal('false');
|
80
173
|
});
|
@@ -88,13 +181,14 @@ it('does not open when `disabled` is set programmatically on its target', async
|
|
88
181
|
</glide-core-menu>`);
|
89
182
|
const target = component.querySelector('button');
|
90
183
|
assert(target);
|
91
|
-
target.click();
|
92
184
|
target.disabled = true;
|
93
|
-
|
185
|
+
target.click();
|
186
|
+
// Wait for Floating UI.
|
187
|
+
await aTimeout(0);
|
94
188
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
95
189
|
const options = component.querySelector('glide-core-menu-options');
|
96
190
|
expect(component.open).to.be.false;
|
97
|
-
expect(defaultSlot?.checkVisibility(
|
191
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
98
192
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
99
193
|
expect(target?.ariaExpanded).to.equal('false');
|
100
194
|
});
|
@@ -108,10 +202,12 @@ it('does not open when `aria-disabled` is set on its target', async () => {
|
|
108
202
|
</glide-core-menu>`);
|
109
203
|
const target = component.querySelector('button');
|
110
204
|
target?.click();
|
205
|
+
// Wait for Floating UI.
|
206
|
+
await aTimeout(0);
|
111
207
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
112
208
|
const options = component.querySelector('glide-core-menu-options');
|
113
209
|
expect(component.open).to.be.false;
|
114
|
-
expect(defaultSlot?.checkVisibility(
|
210
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
115
211
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
116
212
|
expect(target?.ariaExpanded).to.equal('false');
|
117
213
|
});
|
@@ -125,14 +221,12 @@ it('does not open when `aria-disabled` is set programmatically on its target', a
|
|
125
221
|
</glide-core-menu>`);
|
126
222
|
const button = component.querySelector('button');
|
127
223
|
assert(button);
|
128
|
-
button?.click();
|
129
224
|
button.ariaDisabled = 'true';
|
130
|
-
|
225
|
+
button?.click();
|
131
226
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
132
227
|
const options = component.querySelector('glide-core-menu-options');
|
133
228
|
const target = component.querySelector('button');
|
134
|
-
expect(
|
135
|
-
expect(defaultSlot?.checkVisibility({ checkVisibilityCSS: true })).not.ok;
|
229
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
136
230
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
137
231
|
expect(target?.ariaExpanded).to.equal('false');
|
138
232
|
});
|
@@ -151,7 +245,7 @@ it('opens on Enter', async () => {
|
|
151
245
|
const target = component.querySelector('button');
|
152
246
|
const link = component.querySelector('glide-core-menu-link');
|
153
247
|
expect(component.open).to.be.true;
|
154
|
-
expect(defaultSlot?.checkVisibility(
|
248
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
155
249
|
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
156
250
|
expect(target?.ariaExpanded).to.equal('true');
|
157
251
|
});
|
@@ -170,7 +264,7 @@ it('opens on ArrowUp', async () => {
|
|
170
264
|
const target = component.querySelector('button');
|
171
265
|
const link = component.querySelector('glide-core-menu-link');
|
172
266
|
expect(component.open).to.be.true;
|
173
|
-
expect(defaultSlot?.checkVisibility(
|
267
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
174
268
|
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
175
269
|
expect(target?.ariaExpanded).to.equal('true');
|
176
270
|
});
|
@@ -189,7 +283,7 @@ it('opens on ArrowDown', async () => {
|
|
189
283
|
const target = component.querySelector('button');
|
190
284
|
const link = component.querySelector('glide-core-menu-link');
|
191
285
|
expect(component.open).to.be.true;
|
192
|
-
expect(defaultSlot?.checkVisibility(
|
286
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
193
287
|
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
194
288
|
expect(target?.ariaExpanded).to.equal('true');
|
195
289
|
});
|
@@ -208,7 +302,7 @@ it('opens on Space', async () => {
|
|
208
302
|
const target = component.querySelector('button');
|
209
303
|
const link = component.querySelector('glide-core-menu-link');
|
210
304
|
expect(component.open).to.be.true;
|
211
|
-
expect(defaultSlot?.checkVisibility(
|
305
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
212
306
|
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
213
307
|
expect(target?.ariaExpanded).to.equal('true');
|
214
308
|
});
|
@@ -223,7 +317,7 @@ it('does not open on Space when there are no options', async () => {
|
|
223
317
|
const options = component.querySelector('glide-core-menu-options');
|
224
318
|
const target = component.querySelector('button');
|
225
319
|
expect(component.open).to.be.false;
|
226
|
-
expect(defaultSlot?.checkVisibility(
|
320
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
227
321
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
228
322
|
expect(target?.ariaExpanded).to.equal('false');
|
229
323
|
});
|
@@ -236,12 +330,13 @@ it('opens when opened programmatically', async () => {
|
|
236
330
|
</glide-core-menu-options>
|
237
331
|
</glide-core-menu>`);
|
238
332
|
component.open = true;
|
239
|
-
|
333
|
+
// Wait for Floating UI.
|
334
|
+
await aTimeout(0);
|
240
335
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
241
336
|
const options = component.querySelector('glide-core-menu-options');
|
242
337
|
const target = component.querySelector('button');
|
243
338
|
const link = component.querySelector('glide-core-menu-link');
|
244
|
-
expect(defaultSlot?.checkVisibility(
|
339
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
245
340
|
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
246
341
|
expect(target?.ariaExpanded).to.equal('true');
|
247
342
|
});
|
@@ -259,13 +354,14 @@ it('opens when opened programmatically via the click handler of another element'
|
|
259
354
|
anotherElement.addEventListener('click', () => (component.open = true));
|
260
355
|
div.append(anotherElement);
|
261
356
|
anotherElement.click();
|
262
|
-
|
357
|
+
// Wait for Floating UI.
|
358
|
+
await aTimeout(0);
|
263
359
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
264
360
|
const options = component.querySelector('glide-core-menu-options');
|
265
361
|
const target = component.querySelector('button');
|
266
362
|
const link = component.querySelector('glide-core-menu-link');
|
267
363
|
expect(component.open).to.be.true;
|
268
|
-
expect(defaultSlot?.checkVisibility(
|
364
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
269
365
|
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
270
366
|
expect(target?.ariaExpanded).to.equal('true');
|
271
367
|
});
|
@@ -290,12 +386,11 @@ it('closes when clicked', async () => {
|
|
290
386
|
</glide-core-menu-options>
|
291
387
|
</glide-core-menu>`);
|
292
388
|
component.querySelector('button')?.click();
|
293
|
-
await elementUpdated(component);
|
294
389
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
295
390
|
const options = component.querySelector('glide-core-menu-options');
|
296
391
|
const target = component.querySelector('button');
|
297
392
|
expect(component.open).to.be.false;
|
298
|
-
expect(defaultSlot?.checkVisibility(
|
393
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
299
394
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
300
395
|
expect(target?.ariaExpanded).to.equal('false');
|
301
396
|
});
|
@@ -313,7 +408,7 @@ it('closes when something outside of it is clicked', async () => {
|
|
313
408
|
const options = component.querySelector('glide-core-menu-options');
|
314
409
|
const target = component.querySelector('button');
|
315
410
|
expect(component.open).to.be.false;
|
316
|
-
expect(defaultSlot?.checkVisibility(
|
411
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
317
412
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
318
413
|
expect(target?.ariaExpanded).to.equal('false');
|
319
414
|
});
|
@@ -325,13 +420,15 @@ it('closes on Escape when the button has focus', async () => {
|
|
325
420
|
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
326
421
|
</glide-core-menu-options>
|
327
422
|
</glide-core-menu>`);
|
423
|
+
// Wait for it to open
|
424
|
+
await aTimeout(0);
|
328
425
|
component.querySelector('button')?.click();
|
329
426
|
await sendKeys({ press: 'Escape' });
|
330
427
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
331
428
|
const options = component.querySelector('glide-core-menu-options');
|
332
429
|
const target = component.querySelector('button');
|
333
430
|
expect(component.open).to.be.false;
|
334
|
-
expect(defaultSlot?.checkVisibility(
|
431
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
335
432
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
336
433
|
expect(target?.ariaExpanded).to.equal('false');
|
337
434
|
});
|
@@ -344,12 +441,11 @@ it('closes when an option is selected via click', async () => {
|
|
344
441
|
</glide-core-menu-options>
|
345
442
|
</glide-core-menu>`);
|
346
443
|
component.querySelector('glide-core-menu-link')?.click();
|
347
|
-
await elementUpdated(component);
|
348
444
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
349
445
|
const options = component.querySelector('glide-core-menu-options');
|
350
446
|
const target = component.querySelector('button');
|
351
447
|
expect(component.open).to.be.false;
|
352
|
-
expect(defaultSlot?.checkVisibility(
|
448
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
353
449
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
354
450
|
expect(target?.ariaExpanded).to.equal('false');
|
355
451
|
});
|
@@ -366,12 +462,11 @@ it('closes when an option is selected via Enter', async () => {
|
|
366
462
|
.querySelector('glide-core-menu-link')
|
367
463
|
?.dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
|
368
464
|
await sendKeys({ press: 'Enter' });
|
369
|
-
await elementUpdated(component);
|
370
465
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
371
466
|
const options = component.querySelector('glide-core-menu-options');
|
372
467
|
const target = component.querySelector('button');
|
373
468
|
expect(component.open).to.be.false;
|
374
|
-
expect(defaultSlot?.checkVisibility(
|
469
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
375
470
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
376
471
|
expect(target?.ariaExpanded).to.equal('false');
|
377
472
|
});
|
@@ -389,13 +484,13 @@ it('closes when an option is selected via Space', async () => {
|
|
389
484
|
const options = component.querySelector('glide-core-menu-options');
|
390
485
|
const target = component.querySelector('button');
|
391
486
|
expect(component.open).to.be.false;
|
392
|
-
expect(defaultSlot?.checkVisibility(
|
487
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
393
488
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
394
489
|
expect(target?.ariaExpanded).to.equal('false');
|
395
490
|
});
|
396
491
|
it('activates the first menu link by default', async () => {
|
397
492
|
const component = await fixture(html `
|
398
|
-
<glide-core-menu>
|
493
|
+
<glide-core-menu open>
|
399
494
|
<button slot="target">Target</button>
|
400
495
|
|
401
496
|
<glide-core-menu-options>
|
@@ -404,15 +499,15 @@ it('activates the first menu link by default', async () => {
|
|
404
499
|
</glide-core-menu-options>
|
405
500
|
</glide-core-menu>
|
406
501
|
`);
|
407
|
-
|
408
|
-
await
|
502
|
+
// Wait for Floating UI.
|
503
|
+
await aTimeout(0);
|
409
504
|
const links = component.querySelectorAll('glide-core-menu-link');
|
410
505
|
const options = component.querySelector('glide-core-menu-options');
|
411
506
|
expect(links[0].privateActive).to.be.true;
|
412
507
|
expect(links[1].privateActive).to.be.false;
|
413
508
|
expect(options?.getAttribute('aria-activedescendant')).to.equal(links[0]?.id);
|
414
509
|
});
|
415
|
-
it('activates the first menu button by default', async () => {
|
510
|
+
it('activates the first menu button by default when opened via click', async () => {
|
416
511
|
const component = await fixture(html `
|
417
512
|
<glide-core-menu>
|
418
513
|
<button slot="target">Target</button>
|
@@ -424,7 +519,8 @@ it('activates the first menu button by default', async () => {
|
|
424
519
|
</glide-core-menu>
|
425
520
|
`);
|
426
521
|
component.querySelector('button')?.click();
|
427
|
-
|
522
|
+
// Wait for Floating UI.
|
523
|
+
await aTimeout(0);
|
428
524
|
const buttons = component.querySelectorAll('glide-core-menu-button');
|
429
525
|
const options = component.querySelector('glide-core-menu-options');
|
430
526
|
expect(buttons[0].privateActive).to.be.true;
|
@@ -442,6 +538,8 @@ it('activates a menu link on "mouseover"', async () => {
|
|
442
538
|
</glide-core-menu-options>
|
443
539
|
</glide-core-menu>
|
444
540
|
`);
|
541
|
+
// Wait for Floating UI.
|
542
|
+
await aTimeout(0);
|
445
543
|
const links = component.querySelectorAll('glide-core-menu-link');
|
446
544
|
const options = component.querySelector('glide-core-menu-options');
|
447
545
|
links[1].dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
|
@@ -457,6 +555,8 @@ it('activates a menu link on "mouseover" when the link is in a nested slot', asy
|
|
457
555
|
<glide-core-menu-link label="Two"></glide-core-menu-link>
|
458
556
|
</glide-core-nested-slot>
|
459
557
|
`);
|
558
|
+
// Wait for Floating UI.
|
559
|
+
await aTimeout(0);
|
460
560
|
const links = component.querySelectorAll('glide-core-menu-link');
|
461
561
|
const options = component.shadowRoot?.querySelector('glide-core-menu-options');
|
462
562
|
links[1].dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
|
@@ -476,6 +576,8 @@ it('activates a menu button on "mouseover"', async () => {
|
|
476
576
|
</glide-core-menu-options>
|
477
577
|
</glide-core-menu>
|
478
578
|
`);
|
579
|
+
// Wait for Floating UI.
|
580
|
+
await aTimeout(0);
|
479
581
|
const buttons = component.querySelectorAll('glide-core-menu-button');
|
480
582
|
const options = component.querySelector('glide-core-menu-options');
|
481
583
|
buttons[1].dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
|
@@ -491,6 +593,8 @@ it('activates a menu button on "mouseover" when the button is in a nested slot',
|
|
491
593
|
<glide-core-menu-button label="Two"></glide-core-menu-button>
|
492
594
|
</glide-core-nested-slot>
|
493
595
|
`);
|
596
|
+
// Wait for Floating UI.
|
597
|
+
await aTimeout(0);
|
494
598
|
const links = component.querySelectorAll('glide-core-menu-button');
|
495
599
|
const options = component.shadowRoot?.querySelector('glide-core-menu-options');
|
496
600
|
links[1].dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
|
@@ -501,7 +605,7 @@ it('activates a menu button on "mouseover" when the button is in a nested slot',
|
|
501
605
|
});
|
502
606
|
it('activates the next option on ArrowDown', async () => {
|
503
607
|
const component = await fixture(html `
|
504
|
-
<glide-core-menu>
|
608
|
+
<glide-core-menu open>
|
505
609
|
<button slot="target">Target</button>
|
506
610
|
|
507
611
|
<glide-core-menu-options>
|
@@ -511,7 +615,8 @@ it('activates the next option on ArrowDown', async () => {
|
|
511
615
|
</glide-core-menu-options>
|
512
616
|
</glide-core-menu>
|
513
617
|
`);
|
514
|
-
|
618
|
+
// Wait for Floating UI.
|
619
|
+
await aTimeout(0);
|
515
620
|
component.focus();
|
516
621
|
const links = component.querySelectorAll('glide-core-menu-link');
|
517
622
|
const options = component.querySelector('glide-core-menu-options');
|
@@ -524,7 +629,7 @@ it('activates the next option on ArrowDown', async () => {
|
|
524
629
|
});
|
525
630
|
it('activates the previous option on ArrowUp', async () => {
|
526
631
|
const component = await fixture(html `
|
527
|
-
<glide-core-menu>
|
632
|
+
<glide-core-menu open>
|
528
633
|
<button slot="target">Target</button>
|
529
634
|
|
530
635
|
<glide-core-menu-options>
|
@@ -533,7 +638,8 @@ it('activates the previous option on ArrowUp', async () => {
|
|
533
638
|
</glide-core-menu-options>
|
534
639
|
</glide-core-menu>
|
535
640
|
`);
|
536
|
-
|
641
|
+
// Wait for Floating UI.
|
642
|
+
await aTimeout(0);
|
537
643
|
component.focus();
|
538
644
|
const links = component.querySelectorAll('glide-core-menu-link');
|
539
645
|
const options = component.querySelector('glide-core-menu-options');
|
@@ -545,7 +651,7 @@ it('activates the previous option on ArrowUp', async () => {
|
|
545
651
|
});
|
546
652
|
it('activates the first option on Home', async () => {
|
547
653
|
const component = await fixture(html `
|
548
|
-
<glide-core-menu>
|
654
|
+
<glide-core-menu open>
|
549
655
|
<button slot="target">Target</button>
|
550
656
|
|
551
657
|
<glide-core-menu-options>
|
@@ -554,7 +660,8 @@ it('activates the first option on Home', async () => {
|
|
554
660
|
</glide-core-menu-options>
|
555
661
|
</glide-core-menu>
|
556
662
|
`);
|
557
|
-
|
663
|
+
// Wait for Floating UI.
|
664
|
+
await aTimeout(0);
|
558
665
|
component.focus();
|
559
666
|
const links = component.querySelectorAll('glide-core-menu-link');
|
560
667
|
const options = component.querySelector('glide-core-menu-options');
|
@@ -566,7 +673,7 @@ it('activates the first option on Home', async () => {
|
|
566
673
|
});
|
567
674
|
it('activates the first option on PageUp', async () => {
|
568
675
|
const component = await fixture(html `
|
569
|
-
<glide-core-menu>
|
676
|
+
<glide-core-menu open>
|
570
677
|
<button slot="target">Target</button>
|
571
678
|
|
572
679
|
<glide-core-menu-options>
|
@@ -575,7 +682,8 @@ it('activates the first option on PageUp', async () => {
|
|
575
682
|
</glide-core-menu-options>
|
576
683
|
</glide-core-menu>
|
577
684
|
`);
|
578
|
-
|
685
|
+
// Wait for Floating UI.
|
686
|
+
await aTimeout(0);
|
579
687
|
component.focus();
|
580
688
|
const links = component.querySelectorAll('glide-core-menu-link');
|
581
689
|
const options = component.querySelector('glide-core-menu-options');
|
@@ -585,9 +693,9 @@ it('activates the first option on PageUp', async () => {
|
|
585
693
|
expect(links[1].privateActive).to.be.false;
|
586
694
|
expect(options?.getAttribute('aria-activedescendant')).to.equal(links[0].id);
|
587
695
|
});
|
588
|
-
it('activates the first option on
|
696
|
+
it('activates the first option on Meta + ArrowUp', async () => {
|
589
697
|
const component = await fixture(html `
|
590
|
-
<glide-core-menu>
|
698
|
+
<glide-core-menu open>
|
591
699
|
<button slot="target">Target</button>
|
592
700
|
|
593
701
|
<glide-core-menu-options>
|
@@ -596,7 +704,8 @@ it('activates the first option on ArrowUp + Meta', async () => {
|
|
596
704
|
</glide-core-menu-options>
|
597
705
|
</glide-core-menu>
|
598
706
|
`);
|
599
|
-
|
707
|
+
// Wait for Floating UI.
|
708
|
+
await aTimeout(0);
|
600
709
|
component.focus();
|
601
710
|
const links = component.querySelectorAll('glide-core-menu-link');
|
602
711
|
const options = component.querySelector('glide-core-menu-options');
|
@@ -609,7 +718,7 @@ it('activates the first option on ArrowUp + Meta', async () => {
|
|
609
718
|
});
|
610
719
|
it('activates the last option on End', async () => {
|
611
720
|
const component = await fixture(html `
|
612
|
-
<glide-core-menu>
|
721
|
+
<glide-core-menu open>
|
613
722
|
<button slot="target">Target</button>
|
614
723
|
|
615
724
|
<glide-core-menu-options>
|
@@ -618,7 +727,8 @@ it('activates the last option on End', async () => {
|
|
618
727
|
</glide-core-menu-options>
|
619
728
|
</glide-core-menu>
|
620
729
|
`);
|
621
|
-
|
730
|
+
// Wait for Floating UI.
|
731
|
+
await aTimeout(0);
|
622
732
|
component.focus();
|
623
733
|
await sendKeys({ press: 'End' });
|
624
734
|
const links = component.querySelectorAll('glide-core-menu-link');
|
@@ -639,6 +749,8 @@ it('activates the last option on PageDown', async () => {
|
|
639
749
|
</glide-core-menu>
|
640
750
|
`);
|
641
751
|
component.querySelector('button')?.click();
|
752
|
+
// Wait for Floating UI.
|
753
|
+
await aTimeout(0);
|
642
754
|
component.focus();
|
643
755
|
const links = component.querySelectorAll('glide-core-menu-link');
|
644
756
|
const options = component.querySelector('glide-core-menu-options');
|
@@ -650,7 +762,7 @@ it('activates the last option on PageDown', async () => {
|
|
650
762
|
});
|
651
763
|
it('activates the last option on Meta + ArrowDown', async () => {
|
652
764
|
const component = await fixture(html `
|
653
|
-
<glide-core-menu>
|
765
|
+
<glide-core-menu open>
|
654
766
|
<button slot="target">Target</button>
|
655
767
|
|
656
768
|
<glide-core-menu-options>
|
@@ -659,7 +771,8 @@ it('activates the last option on Meta + ArrowDown', async () => {
|
|
659
771
|
</glide-core-menu-options>
|
660
772
|
</glide-core-menu>
|
661
773
|
`);
|
662
|
-
|
774
|
+
// Wait for Floating UI.
|
775
|
+
await aTimeout(0);
|
663
776
|
component.focus();
|
664
777
|
const links = component.querySelectorAll('glide-core-menu-link');
|
665
778
|
const options = component.querySelector('glide-core-menu-options');
|
@@ -680,7 +793,8 @@ it('sets `aria-activedescendant` on open', async () => {
|
|
680
793
|
</glide-core-menu-options>
|
681
794
|
</glide-core-menu>`);
|
682
795
|
component.querySelector('button')?.click();
|
683
|
-
|
796
|
+
// Wait for Floating UI.
|
797
|
+
await aTimeout(0);
|
684
798
|
const link = component.querySelector('glide-core-menu-link');
|
685
799
|
const options = component.querySelector('glide-core-menu-options');
|
686
800
|
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
@@ -693,6 +807,8 @@ it('sets `aria-activedescendant` on close', async () => {
|
|
693
807
|
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
694
808
|
</glide-core-menu-options>
|
695
809
|
</glide-core-menu>`);
|
810
|
+
// Wait for Floating UI.
|
811
|
+
await aTimeout(0);
|
696
812
|
component.querySelector('button')?.click();
|
697
813
|
await elementUpdated(component);
|
698
814
|
const options = component.querySelector('glide-core-menu-options');
|
@@ -707,6 +823,8 @@ it('sets `aria-expanded` on open', async () => {
|
|
707
823
|
</glide-core-menu-options>
|
708
824
|
</glide-core-menu>`);
|
709
825
|
component.querySelector('button')?.click();
|
826
|
+
// Wait for Floating UI.
|
827
|
+
await aTimeout(0);
|
710
828
|
const button = component.querySelector('button');
|
711
829
|
expect(button?.getAttribute('aria-expanded')).to.equal('true');
|
712
830
|
});
|
@@ -724,7 +842,7 @@ it('sets `aria-expanded` on close', async () => {
|
|
724
842
|
});
|
725
843
|
it('does not wrap on ArrowUp', async () => {
|
726
844
|
const component = await fixture(html `
|
727
|
-
<glide-core-menu>
|
845
|
+
<glide-core-menu open>
|
728
846
|
<button slot="target">Target</button>
|
729
847
|
|
730
848
|
<glide-core-menu-options>
|
@@ -733,14 +851,33 @@ it('does not wrap on ArrowUp', async () => {
|
|
733
851
|
</glide-core-menu-options>
|
734
852
|
</glide-core-menu>
|
735
853
|
`);
|
736
|
-
|
854
|
+
// Wait for Floating UI.
|
855
|
+
await aTimeout(0);
|
856
|
+
await sendKeys({ press: 'ArrowUp' });
|
857
|
+
const link = component.querySelector('glide-core-menu-link');
|
858
|
+
expect(link?.privateActive).to.be.true;
|
859
|
+
});
|
860
|
+
it('does not wrap on Meta + ArrowUp', async () => {
|
861
|
+
const component = await fixture(html `
|
862
|
+
<glide-core-menu open>
|
863
|
+
<button slot="target">Target</button>
|
864
|
+
|
865
|
+
<glide-core-menu-options>
|
866
|
+
<glide-core-menu-link label="One"></glide-core-menu-link>
|
867
|
+
<glide-core-menu-link label="Two"></glide-core-menu-link>
|
868
|
+
</glide-core-menu-options>
|
869
|
+
</glide-core-menu>
|
870
|
+
`);
|
871
|
+
// Wait for Floating UI.
|
872
|
+
await aTimeout(0);
|
873
|
+
await sendKeys({ down: 'Meta' });
|
737
874
|
await sendKeys({ press: 'ArrowUp' });
|
738
875
|
const link = component.querySelector('glide-core-menu-link');
|
739
876
|
expect(link?.privateActive).to.be.true;
|
740
877
|
});
|
741
878
|
it('does not wrap on ArrowDown', async () => {
|
742
879
|
const component = await fixture(html `
|
743
|
-
<glide-core-menu>
|
880
|
+
<glide-core-menu open>
|
744
881
|
<button slot="target">Target</button>
|
745
882
|
|
746
883
|
<glide-core-menu-options>
|
@@ -749,9 +886,29 @@ it('does not wrap on ArrowDown', async () => {
|
|
749
886
|
</glide-core-menu-options>
|
750
887
|
</glide-core-menu>
|
751
888
|
`);
|
752
|
-
|
889
|
+
// Wait for Floating UI.
|
890
|
+
await aTimeout(0);
|
891
|
+
const options = component.querySelectorAll('glide-core-menu-link');
|
892
|
+
options[1].dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
|
893
|
+
await sendKeys({ press: 'ArrowDown' });
|
894
|
+
expect(options[1].privateActive).to.be.true;
|
895
|
+
});
|
896
|
+
it('does not wrap on ArrowDown', async () => {
|
897
|
+
const component = await fixture(html `
|
898
|
+
<glide-core-menu open>
|
899
|
+
<button slot="target">Target</button>
|
900
|
+
|
901
|
+
<glide-core-menu-options>
|
902
|
+
<glide-core-menu-link label="One"></glide-core-menu-link>
|
903
|
+
<glide-core-menu-link label="Two"></glide-core-menu-link>
|
904
|
+
</glide-core-menu-options>
|
905
|
+
</glide-core-menu>
|
906
|
+
`);
|
907
|
+
// Wait for Floating UI.
|
908
|
+
await aTimeout(0);
|
753
909
|
const options = component.querySelectorAll('glide-core-menu-link');
|
754
910
|
options[1].dispatchEvent(new MouseEvent('mouseover', { bubbles: true }));
|
911
|
+
await sendKeys({ down: 'Meta' });
|
755
912
|
await sendKeys({ press: 'ArrowDown' });
|
756
913
|
expect(options[1].privateActive).to.be.true;
|
757
914
|
});
|
@@ -1,3 +1,4 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
1
2
|
import { ArgumentError } from 'ow';
|
2
3
|
import { expect, fixture, html } from '@open-wc/testing';
|
3
4
|
import GlideCoreModalIconButton from './modal.icon-button.js';
|
@@ -41,5 +42,5 @@ it('throws if it does not have a default slot', async () => {
|
|
41
42
|
spy();
|
42
43
|
}
|
43
44
|
}
|
44
|
-
expect(spy.
|
45
|
+
expect(spy.callCount).to.equal(1);
|
45
46
|
});
|