@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
package/dist/menu.styles.js
CHANGED
@@ -20,25 +20,11 @@ import{css}from"lit";export default[css`
|
|
20
20
|
border-radius: var(--glide-core-spacing-xs);
|
21
21
|
box-shadow: var(--glide-core-shadow-lg);
|
22
22
|
box-sizing: border-box;
|
23
|
-
display: flex;
|
24
23
|
inline-size: max-content;
|
25
|
-
inset
|
26
|
-
inset-inline-start: 0;
|
24
|
+
inset: unset;
|
27
25
|
margin-block: 0;
|
28
26
|
min-inline-size: 9.375rem;
|
29
27
|
padding: var(--glide-core-spacing-xxxs);
|
30
28
|
position: absolute;
|
31
|
-
visibility: hidden;
|
32
|
-
|
33
|
-
/*
|
34
|
-
".container" is relative and many Menus may be stacked in a column.
|
35
|
-
This ensures the ".menu" of Menus earlier in the column aren't obscured
|
36
|
-
by the ".target-container" that come later.
|
37
|
-
*/
|
38
|
-
z-index: 1;
|
39
|
-
|
40
|
-
&.visible {
|
41
|
-
visibility: visible;
|
42
|
-
}
|
43
29
|
}
|
44
30
|
`];
|
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
import './menu.link.js';
|
1
|
+
export {};
|
package/dist/menu.test.basics.js
CHANGED
@@ -1,12 +1,15 @@
|
|
1
|
-
|
2
|
-
import './menu.link.js';
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
3
2
|
import { ArgumentError } from 'ow';
|
4
|
-
import { expect, fixture, html } from '@open-wc/testing';
|
3
|
+
import { aTimeout, expect, fixture, html } from '@open-wc/testing';
|
5
4
|
import GlideCoreMenu from './menu.js';
|
5
|
+
import GlideCoreMenuButton from './menu.button.js';
|
6
|
+
import GlideCoreMenuLink from './menu.link.js';
|
6
7
|
import GlideCoreMenuOptions from './menu.options.js';
|
7
8
|
import expectArgumentError from './library/expect-argument-error.js';
|
8
9
|
import sinon from 'sinon';
|
9
10
|
GlideCoreMenu.shadowRootOptions.mode = 'open';
|
11
|
+
GlideCoreMenuButton.shadowRootOptions.mode = 'open';
|
12
|
+
GlideCoreMenuLink.shadowRootOptions.mode = 'open';
|
10
13
|
it('registers', async () => {
|
11
14
|
expect(window.customElements.get('glide-core-menu')).to.equal(GlideCoreMenu);
|
12
15
|
});
|
@@ -37,6 +40,7 @@ it('is accessible', async () => {
|
|
37
40
|
const target = component.querySelector('button');
|
38
41
|
const options = component.querySelector('glide-core-menu-options');
|
39
42
|
expect(target?.getAttribute('aria-controls')).to.equal(options?.id);
|
43
|
+
expect(target?.getAttribute('aria-haspopup')).to.equal('true');
|
40
44
|
expect(options?.ariaLabelledby).to.equal(target?.id);
|
41
45
|
await expect(component).to.be.accessible();
|
42
46
|
});
|
@@ -48,11 +52,16 @@ it('can be opened', async () => {
|
|
48
52
|
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
49
53
|
</glide-core-menu-options>
|
50
54
|
</glide-core-menu>`);
|
55
|
+
// Wait for Floating UI.
|
56
|
+
await aTimeout(0);
|
51
57
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
58
|
+
const options = component.querySelector('glide-core-menu-options');
|
52
59
|
const target = component.querySelector('button');
|
60
|
+
const link = component.querySelector('glide-core-menu-link');
|
53
61
|
expect(component.open).to.be.true;
|
54
|
-
expect(defaultSlot?.checkVisibility(
|
62
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
55
63
|
expect(target?.ariaExpanded).to.equal('true');
|
64
|
+
expect(options?.getAttribute('aria-activedescendant')).to.equal(link?.id);
|
56
65
|
});
|
57
66
|
it('can have a default slot', async () => {
|
58
67
|
const component = await fixture(html `<glide-core-menu>
|
@@ -91,6 +100,8 @@ it('activates the first menu link by default', async () => {
|
|
91
100
|
</glide-core-menu-options>
|
92
101
|
</glide-core-menu>
|
93
102
|
`);
|
103
|
+
// Wait for Floating UI.
|
104
|
+
await aTimeout(0);
|
94
105
|
const links = component.querySelectorAll('glide-core-menu-link');
|
95
106
|
const options = component.querySelector('glide-core-menu-options');
|
96
107
|
expect(links[0].privateActive).to.be.true;
|
@@ -108,6 +119,8 @@ it('activates the first menu button by default', async () => {
|
|
108
119
|
</glide-core-menu-options>
|
109
120
|
</glide-core-menu>
|
110
121
|
`);
|
122
|
+
// Wait for Floating UI.
|
123
|
+
await aTimeout(0);
|
111
124
|
const buttons = component.querySelectorAll('glide-core-menu-button');
|
112
125
|
const options = component.querySelector('glide-core-menu-options');
|
113
126
|
expect(buttons[0].privateActive).to.be.true;
|
@@ -122,10 +135,14 @@ it('is not opened when initially `open` and its target is `disabled`', async ()
|
|
122
135
|
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
123
136
|
</glide-core-menu-options>
|
124
137
|
</glide-core-menu>`);
|
138
|
+
// Wait for Floating UI.
|
139
|
+
await aTimeout(0);
|
125
140
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
126
141
|
const target = component.querySelector('button');
|
127
|
-
|
142
|
+
const options = component.querySelector('glide-core-menu-options');
|
143
|
+
expect(defaultSlot?.checkVisibility()).to.be.false;
|
128
144
|
expect(target?.ariaExpanded).to.equal('false');
|
145
|
+
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
129
146
|
});
|
130
147
|
it('throws if it does not have a default slot', async () => {
|
131
148
|
await expectArgumentError(() => {
|
@@ -156,7 +173,7 @@ it('throws if it does not have a "target" slot', async () => {
|
|
156
173
|
spy();
|
157
174
|
}
|
158
175
|
}
|
159
|
-
expect(spy.
|
176
|
+
expect(spy.callCount).to.equal(1);
|
160
177
|
});
|
161
178
|
it('sets accessibility attributes', async () => {
|
162
179
|
const component = await fixture(html `<glide-core-menu>
|
package/dist/menu.test.events.js
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
+
import './menu.js';
|
1
3
|
import './menu.link.js';
|
2
4
|
import './menu.options.js';
|
3
5
|
import { expect, fixture, html, oneEvent } from '@open-wc/testing';
|
4
|
-
import GlideCoreMenu from './menu.js';
|
5
6
|
it('dispatches a "click" event when a link is clicked', async () => {
|
6
7
|
const component = await fixture(html `<glide-core-menu open>
|
7
8
|
<button slot="target">Target</button>
|
package/dist/menu.test.focus.js
CHANGED
@@ -1,8 +1,9 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
1
2
|
import './menu.link.js';
|
2
|
-
import
|
3
|
+
import './menu.options.js';
|
4
|
+
import { aTimeout, assert, elementUpdated, expect, fixture, html, } from '@open-wc/testing';
|
3
5
|
import { sendKeys } from '@web/test-runner-commands';
|
4
6
|
import GlideCoreMenu from './menu.js';
|
5
|
-
import GlideCoreMenuOptions from './menu.options.js';
|
6
7
|
GlideCoreMenu.shadowRootOptions.mode = 'open';
|
7
8
|
it('focuses the target on `focus()`', async () => {
|
8
9
|
const component = await fixture(html `<glide-core-menu>
|
@@ -30,7 +31,7 @@ it('closes when it loses focus', async () => {
|
|
30
31
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
31
32
|
const options = component.querySelector('glide-core-menu-options');
|
32
33
|
expect(component.open).to.be.false;
|
33
|
-
expect(defaultSlot?.checkVisibility(
|
34
|
+
expect(defaultSlot?.checkVisibility()).be.false;
|
34
35
|
expect(options?.getAttribute('aria-activedescendant')).to.equal('');
|
35
36
|
});
|
36
37
|
it('remains open when the options component is focused', async () => {
|
@@ -41,13 +42,14 @@ it('remains open when the options component is focused', async () => {
|
|
41
42
|
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
42
43
|
</glide-core-menu-options>
|
43
44
|
</glide-core-menu>`);
|
45
|
+
// Wait for Floating UI.
|
46
|
+
await aTimeout(0);
|
44
47
|
component.focus();
|
45
48
|
const options = component.querySelector('glide-core-menu-options');
|
46
|
-
assert(options instanceof GlideCoreMenuOptions);
|
47
|
-
options.focus();
|
48
49
|
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
50
|
+
options?.focus();
|
49
51
|
expect(component.open).to.be.true;
|
50
|
-
expect(defaultSlot?.checkVisibility(
|
52
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
51
53
|
});
|
52
54
|
it('remains open when an option is focused', async () => {
|
53
55
|
const component = await fixture(html `<glide-core-menu open>
|
@@ -57,11 +59,15 @@ it('remains open when an option is focused', async () => {
|
|
57
59
|
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
58
60
|
</glide-core-menu-options>
|
59
61
|
</glide-core-menu>`);
|
62
|
+
// Wait for Floating UI.
|
63
|
+
await aTimeout(0);
|
60
64
|
component.focus();
|
65
|
+
const defaultSlot = component?.shadowRoot?.querySelector('slot:not([name])');
|
61
66
|
const option = component.querySelector('glide-core-menu-link');
|
62
67
|
assert(option);
|
63
68
|
option?.focus();
|
64
69
|
expect(component.open).to.be.true;
|
70
|
+
expect(defaultSlot?.checkVisibility()).to.be.true;
|
65
71
|
});
|
66
72
|
it('sets the focused option as active', async () => {
|
67
73
|
const component = await fixture(html `<glide-core-menu open>
|
@@ -72,6 +78,8 @@ it('sets the focused option as active', async () => {
|
|
72
78
|
<glide-core-menu-link label="Link"></glide-core-menu-link>
|
73
79
|
</glide-core-menu-options>
|
74
80
|
</glide-core-menu>`);
|
81
|
+
// Wait for Floating UI.
|
82
|
+
await aTimeout(0);
|
75
83
|
component.focus();
|
76
84
|
const target = component.querySelector('glide-core-menu-button');
|
77
85
|
const link = component.querySelector('glide-core-menu-link');
|