@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 +0,0 @@
|
|
1
|
-
import './accordion.js';
|
@@ -1,28 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './accordion.js';
|
3
|
-
import { expect, fixture, html } from '@open-wc/testing';
|
4
|
-
import GlideCoreAccordion from './accordion.js';
|
5
|
-
GlideCoreAccordion.shadowRootOptions.mode = 'open';
|
6
|
-
it('registers', async () => {
|
7
|
-
expect(window.customElements.get('glide-core-accordion')).to.equal(GlideCoreAccordion);
|
8
|
-
});
|
9
|
-
it('is accessible', async () => {
|
10
|
-
const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
|
11
|
-
await expect(component).to.be.accessible();
|
12
|
-
});
|
13
|
-
it('has defaults', async () => {
|
14
|
-
const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
|
15
|
-
expect(component.open).to.be.false;
|
16
|
-
});
|
17
|
-
it('`#onPrefixIconSlotChange` coverage', async () => {
|
18
|
-
await fixture(html `<glide-core-accordion label="Label">
|
19
|
-
Content
|
20
|
-
<div slot="prefix-icon"></div>
|
21
|
-
</glide-core-accordion>`);
|
22
|
-
});
|
23
|
-
it('`#onSuffixIconsSlotChange` coverage', async () => {
|
24
|
-
await fixture(html `<glide-core-accordion label="Label">
|
25
|
-
Content
|
26
|
-
<div slot="suffix-icons"></div>
|
27
|
-
</glide-core-accordion>`);
|
28
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
import './accordion.js';
|
@@ -1,28 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './accordion.js';
|
3
|
-
import { emulateMedia } from '@web/test-runner-commands';
|
4
|
-
import { expect, fixture, html, oneEvent } from '@open-wc/testing';
|
5
|
-
import GlideCoreAccordion from './accordion.js';
|
6
|
-
GlideCoreAccordion.shadowRootOptions.mode = 'open';
|
7
|
-
it('dispatches a "toggle" event on open', async () => {
|
8
|
-
await emulateMedia({ reducedMotion: 'reduce' });
|
9
|
-
const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
|
10
|
-
setTimeout(() => {
|
11
|
-
component.click();
|
12
|
-
});
|
13
|
-
const event = await oneEvent(component, 'toggle');
|
14
|
-
expect(event instanceof Event).to.be.true;
|
15
|
-
expect(event.bubbles).to.be.true;
|
16
|
-
});
|
17
|
-
it('dispatches a "toggle" event on close', async () => {
|
18
|
-
await emulateMedia({ reducedMotion: 'reduce' });
|
19
|
-
const component = await fixture(html `<glide-core-accordion label="Label" open>
|
20
|
-
Content
|
21
|
-
</glide-core-accordion>`);
|
22
|
-
setTimeout(() => {
|
23
|
-
component.click();
|
24
|
-
});
|
25
|
-
const event = await oneEvent(component, 'toggle');
|
26
|
-
expect(event instanceof Event).to.be.true;
|
27
|
-
expect(event.bubbles).to.be.true;
|
28
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
import './accordion.js';
|
@@ -1,11 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './accordion.js';
|
3
|
-
import { expect, fixture, html } from '@open-wc/testing';
|
4
|
-
import GlideCoreAccordion from './accordion.js';
|
5
|
-
GlideCoreAccordion.shadowRootOptions.mode = 'open';
|
6
|
-
it('focuses itself when `focus()` is called', async () => {
|
7
|
-
const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
|
8
|
-
component.focus();
|
9
|
-
const summary = component?.shadowRoot?.querySelector('[data-test="summary"]');
|
10
|
-
expect(component?.shadowRoot?.activeElement).to.equal(summary);
|
11
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
import './accordion.js';
|
@@ -1,75 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './accordion.js';
|
3
|
-
import { emulateMedia } from '@web/test-runner-commands';
|
4
|
-
import { expect, fixture, html, waitUntil } from '@open-wc/testing';
|
5
|
-
import { sendKeys } from '@web/test-runner-commands';
|
6
|
-
import GlideCoreAccordion from './accordion.js';
|
7
|
-
GlideCoreAccordion.shadowRootOptions.mode = 'open';
|
8
|
-
it('can be opened via click', async () => {
|
9
|
-
await emulateMedia({ reducedMotion: 'reduce' });
|
10
|
-
const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
|
11
|
-
component.click();
|
12
|
-
expect(component.open).to.be.true;
|
13
|
-
});
|
14
|
-
it('can be opened via click when animated', async () => {
|
15
|
-
await emulateMedia({ reducedMotion: 'no-preference' });
|
16
|
-
const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
|
17
|
-
component.click();
|
18
|
-
let animation;
|
19
|
-
let isAnimationFinished = false;
|
20
|
-
await waitUntil(() => {
|
21
|
-
animation = component.shadowRoot
|
22
|
-
?.querySelector('[data-test="default-slot"]')
|
23
|
-
?.getAnimations()
|
24
|
-
?.at(0);
|
25
|
-
return animation;
|
26
|
-
});
|
27
|
-
animation?.addEventListener('finish', () => {
|
28
|
-
isAnimationFinished = true;
|
29
|
-
});
|
30
|
-
await waitUntil(() => isAnimationFinished);
|
31
|
-
expect(component.open).to.be.true;
|
32
|
-
});
|
33
|
-
it('can be opened via Space', async () => {
|
34
|
-
await emulateMedia({ reducedMotion: 'reduce' });
|
35
|
-
const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
|
36
|
-
component.focus();
|
37
|
-
await sendKeys({ press: ' ' });
|
38
|
-
expect(component.open).to.be.true;
|
39
|
-
});
|
40
|
-
it('can be opened via Enter', async () => {
|
41
|
-
await emulateMedia({ reducedMotion: 'reduce' });
|
42
|
-
const component = await fixture(html `<glide-core-accordion label="Label">Content</glide-core-accordion>`);
|
43
|
-
component.focus();
|
44
|
-
await sendKeys({ press: 'Enter' });
|
45
|
-
expect(component.open).to.be.true;
|
46
|
-
});
|
47
|
-
it('can be closed via click', async () => {
|
48
|
-
await emulateMedia({ reducedMotion: 'reduce' });
|
49
|
-
const component = await fixture(html `<glide-core-accordion label="Label" open>
|
50
|
-
Content
|
51
|
-
</glide-core-accordion>`);
|
52
|
-
component.click();
|
53
|
-
expect(component.open).to.be.false;
|
54
|
-
});
|
55
|
-
it('can be closed via click when animated', async () => {
|
56
|
-
await emulateMedia({ reducedMotion: 'no-preference' });
|
57
|
-
const component = await fixture(html `<glide-core-accordion label="Label" open>
|
58
|
-
Content
|
59
|
-
</glide-core-accordion>`);
|
60
|
-
component.click();
|
61
|
-
let animation;
|
62
|
-
let isAnimationFinished = false;
|
63
|
-
await waitUntil(() => {
|
64
|
-
animation = component.shadowRoot
|
65
|
-
?.querySelector('[data-test="default-slot"]')
|
66
|
-
?.getAnimations()
|
67
|
-
?.at(0);
|
68
|
-
return animation;
|
69
|
-
});
|
70
|
-
animation?.addEventListener('finish', () => {
|
71
|
-
isAnimationFinished = true;
|
72
|
-
});
|
73
|
-
await waitUntil(() => isAnimationFinished);
|
74
|
-
expect(component.open).to.be.false;
|
75
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
import './button-group.button.js';
|
@@ -1,97 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './button-group.button.js';
|
3
|
-
import { ArgumentError } from 'ow';
|
4
|
-
import { expect, fixture, html } from '@open-wc/testing';
|
5
|
-
import GlideCoreButtonGroupButton from './button-group.button.js';
|
6
|
-
import sinon from 'sinon';
|
7
|
-
GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
|
8
|
-
it('registers', async () => {
|
9
|
-
expect(window.customElements.get('glide-core-button-group-button')).to.equal(GlideCoreButtonGroupButton);
|
10
|
-
});
|
11
|
-
it('has defaults', async () => {
|
12
|
-
const component = await fixture(html `
|
13
|
-
<glide-core-button-group-button
|
14
|
-
label="Button"
|
15
|
-
></glide-core-button-group-button>
|
16
|
-
`);
|
17
|
-
expect(component.disabled).to.be.false;
|
18
|
-
expect(component.selected).to.be.false;
|
19
|
-
expect(component.value).to.equal('');
|
20
|
-
expect(component.getAttribute('value')).to.equal('');
|
21
|
-
expect(component).to.not.have.attribute('disabled');
|
22
|
-
expect(component).to.not.have.attribute('selected');
|
23
|
-
});
|
24
|
-
it('is accessible', async () => {
|
25
|
-
const component = await fixture(html `<glide-core-button-group-button
|
26
|
-
label="Button"
|
27
|
-
></glide-core-button-group-button>`);
|
28
|
-
await expect(component).to.be.accessible();
|
29
|
-
});
|
30
|
-
it('can have a label', async () => {
|
31
|
-
const component = await fixture(html `<glide-core-button-group-button
|
32
|
-
label="Button"
|
33
|
-
selected
|
34
|
-
></glide-core-button-group-button>`);
|
35
|
-
expect(component.shadowRoot?.textContent?.trim()).to.equal('Button');
|
36
|
-
});
|
37
|
-
it('sets `aria-checked` when selected', async () => {
|
38
|
-
const component = await fixture(html `<glide-core-button-group-button
|
39
|
-
label="Button"
|
40
|
-
selected
|
41
|
-
></glide-core-button-group-button>`);
|
42
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
43
|
-
expect(radio?.getAttribute('aria-checked')).to.equal('true');
|
44
|
-
});
|
45
|
-
it('sets `aria-checked` when not selected', async () => {
|
46
|
-
const component = await fixture(html `<glide-core-button-group-button
|
47
|
-
label="Button"
|
48
|
-
></glide-core-button-group-button>`);
|
49
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
50
|
-
expect(radio?.getAttribute('aria-checked')).to.equal('false');
|
51
|
-
});
|
52
|
-
it('sets `aria-disabled` when disabled', async () => {
|
53
|
-
const component = await fixture(html `<glide-core-button-group-button
|
54
|
-
label="Button"
|
55
|
-
disabled
|
56
|
-
></glide-core-button-group-button>`);
|
57
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
58
|
-
expect(radio?.getAttribute('aria-disabled')).to.equal('true');
|
59
|
-
});
|
60
|
-
it('sets `aria-disabled` when not disabled', async () => {
|
61
|
-
const component = await fixture(html `<glide-core-button-group-button
|
62
|
-
label="Button"
|
63
|
-
></glide-core-button-group-button>`);
|
64
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
65
|
-
expect(radio?.getAttribute('aria-disabled')).to.equal('false');
|
66
|
-
});
|
67
|
-
it('is tabbable when selected', async () => {
|
68
|
-
const component = await fixture(html `<glide-core-button-group-button
|
69
|
-
label="Button"
|
70
|
-
selected
|
71
|
-
></glide-core-button-group-button>`);
|
72
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
73
|
-
expect(radio?.getAttribute('tabindex')).to.equal('0');
|
74
|
-
});
|
75
|
-
it('is not tabbable when not selected', async () => {
|
76
|
-
const component = await fixture(html `<glide-core-button-group-button
|
77
|
-
label="Button"
|
78
|
-
></glide-core-button-group-button>`);
|
79
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
80
|
-
expect(radio?.getAttribute('tabindex')).to.equal('-1');
|
81
|
-
});
|
82
|
-
it('throws when icon-only and no "icon" slot', async () => {
|
83
|
-
const spy = sinon.spy();
|
84
|
-
try {
|
85
|
-
await fixture(html `<glide-core-button-group-button
|
86
|
-
value="value"
|
87
|
-
selected
|
88
|
-
privateVariant="icon-only"
|
89
|
-
></glide-core-button-group-button>`);
|
90
|
-
}
|
91
|
-
catch (error) {
|
92
|
-
if (error instanceof ArgumentError) {
|
93
|
-
spy();
|
94
|
-
}
|
95
|
-
}
|
96
|
-
expect(spy.callCount).to.equal(1);
|
97
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
import './button-group.button.js';
|
@@ -1,15 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './button-group.button.js';
|
3
|
-
import { expect, fixture, html, oneEvent } from '@open-wc/testing';
|
4
|
-
import GlideCoreButtonGroupButton from './button-group.button.js';
|
5
|
-
it('emits a "private-selected" event when selected', async () => {
|
6
|
-
const component = await fixture(html `<glide-core-button-group-button
|
7
|
-
label="Button"
|
8
|
-
></glide-core-button-group-button>`);
|
9
|
-
setTimeout(() => {
|
10
|
-
component.selected = true;
|
11
|
-
});
|
12
|
-
const event = await oneEvent(component, 'private-selected');
|
13
|
-
expect(event instanceof Event).to.be.true;
|
14
|
-
expect(event.bubbles).to.be.true;
|
15
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1,13 +0,0 @@
|
|
1
|
-
import { expect, fixture, html } from '@open-wc/testing';
|
2
|
-
import GlideCoreButtonGroupButton from './button-group.button.js';
|
3
|
-
GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
|
4
|
-
it('focuses itself when `focus()` is called ', async () => {
|
5
|
-
const component = await fixture(html `
|
6
|
-
<glide-core-button-group-button
|
7
|
-
label="Button"
|
8
|
-
></glide-core-button-group-button>
|
9
|
-
`);
|
10
|
-
component.focus();
|
11
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
12
|
-
expect(component.shadowRoot?.activeElement).to.equal(radio);
|
13
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
import './button-group.button.js';
|
@@ -1,42 +0,0 @@
|
|
1
|
-
import './button-group.button.js';
|
2
|
-
import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
|
3
|
-
import GlideCoreButtonGroupButton from './button-group.button.js';
|
4
|
-
GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
|
5
|
-
it('sets `aria-checked` when selected programmatically', async () => {
|
6
|
-
const component = await fixture(html `<glide-core-button-group-button
|
7
|
-
label="Button"
|
8
|
-
></glide-core-button-group-button>`);
|
9
|
-
component.selected = true;
|
10
|
-
await elementUpdated(component);
|
11
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
12
|
-
expect(radio?.getAttribute('aria-checked')).to.equal('true');
|
13
|
-
});
|
14
|
-
it('sets `aria-checked` when deselected programmatically', async () => {
|
15
|
-
const component = await fixture(html `<glide-core-button-group-button
|
16
|
-
label="Button"
|
17
|
-
selected
|
18
|
-
></glide-core-button-group-button>`);
|
19
|
-
component.selected = false;
|
20
|
-
await elementUpdated(component);
|
21
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
22
|
-
expect(radio?.getAttribute('aria-checked')).to.equal('false');
|
23
|
-
});
|
24
|
-
it('sets `aria-disabled` when disabled programmatically', async () => {
|
25
|
-
const component = await fixture(html `<glide-core-button-group-button
|
26
|
-
label="Button"
|
27
|
-
></glide-core-button-group-button>`);
|
28
|
-
component.disabled = true;
|
29
|
-
await elementUpdated(component);
|
30
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
31
|
-
expect(radio?.getAttribute('aria-disabled')).to.equal('true');
|
32
|
-
});
|
33
|
-
it('sets `aria-disabled` when enabled programmatically', async () => {
|
34
|
-
const component = await fixture(html `<glide-core-button-group-button
|
35
|
-
label="Button"
|
36
|
-
disabled
|
37
|
-
></glide-core-button-group-button>`);
|
38
|
-
component.disabled = false;
|
39
|
-
await elementUpdated(component);
|
40
|
-
const radio = component.shadowRoot?.querySelector('[role="radio"]');
|
41
|
-
expect(radio?.getAttribute('aria-disabled')).to.equal('false');
|
42
|
-
});
|
@@ -1,7 +0,0 @@
|
|
1
|
-
import './button-group.js';
|
2
|
-
import './icons/storybook.js';
|
3
|
-
import type { Meta, StoryObj } from '@storybook/web-components';
|
4
|
-
declare const meta: Meta;
|
5
|
-
export default meta;
|
6
|
-
export declare const ButtonGroup: StoryObj;
|
7
|
-
export declare const WithIcons: StoryObj;
|
@@ -1 +0,0 @@
|
|
1
|
-
import './button-group.js';
|
@@ -1,148 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './button-group.js';
|
3
|
-
import { expect, fixture, html } from '@open-wc/testing';
|
4
|
-
import GlideCoreButtonGroup from './button-group.js';
|
5
|
-
import GlideCoreButtonGroupButton from './button-group.button.js';
|
6
|
-
import expectArgumentError from './library/expect-argument-error.js';
|
7
|
-
GlideCoreButtonGroup.shadowRootOptions.mode = 'open';
|
8
|
-
GlideCoreButtonGroupButton.shadowRootOptions.mode = 'open';
|
9
|
-
it('registers', async () => {
|
10
|
-
expect(window.customElements.get('glide-core-button-group')).to.equal(GlideCoreButtonGroup);
|
11
|
-
});
|
12
|
-
it('has defaults', async () => {
|
13
|
-
const component = await fixture(html `<glide-core-button-group label="Label">
|
14
|
-
<glide-core-button-group-button
|
15
|
-
label="One"
|
16
|
-
></glide-core-button-group-button>
|
17
|
-
|
18
|
-
<glide-core-button-group-button
|
19
|
-
label="Two"
|
20
|
-
></glide-core-button-group-button>
|
21
|
-
</glide-core-button-group>`);
|
22
|
-
expect(component.orientation).to.equal('horizontal');
|
23
|
-
expect(component.variant).to.equal(undefined);
|
24
|
-
expect(component.getAttribute('orientation')).to.equal('horizontal');
|
25
|
-
expect(component).to.not.have.attribute('variant');
|
26
|
-
});
|
27
|
-
it('is accessible', async () => {
|
28
|
-
const component = await fixture(html `<glide-core-button-group label="Label">
|
29
|
-
<glide-core-button-group-button
|
30
|
-
label="One"
|
31
|
-
></glide-core-button-group-button>
|
32
|
-
|
33
|
-
<glide-core-button-group-button
|
34
|
-
label="Two"
|
35
|
-
></glide-core-button-group-button>
|
36
|
-
</glide-core-button-group>`);
|
37
|
-
// It's unfortunate to ignore this rule. But the label doesn't meet color
|
38
|
-
// contrast requirements.
|
39
|
-
// Axe has an `ignoreTags` but no `ignoreSelectors`.
|
40
|
-
await expect(component).to.be.accessible({
|
41
|
-
ignoredRules: ['color-contrast'],
|
42
|
-
});
|
43
|
-
});
|
44
|
-
it('can have a label', async () => {
|
45
|
-
const component = await fixture(html `<glide-core-button-group label="Label">
|
46
|
-
<glide-core-button-group-button
|
47
|
-
label="One"
|
48
|
-
></glide-core-button-group-button>
|
49
|
-
|
50
|
-
<glide-core-button-group-button
|
51
|
-
label="Two"
|
52
|
-
></glide-core-button-group-button>
|
53
|
-
</glide-core-button-group>`);
|
54
|
-
const label = component.shadowRoot?.querySelector('[data-test="label"]');
|
55
|
-
const radioGroup = component.shadowRoot?.querySelector('[role="radiogroup"]');
|
56
|
-
expect(label?.textContent).to.equal('Label');
|
57
|
-
expect(radioGroup?.getAttribute('aria-labelledby')).to.equal(label?.id);
|
58
|
-
});
|
59
|
-
it('sets the orientation of each button when horizontal', async () => {
|
60
|
-
await fixture(html `<glide-core-button-group>
|
61
|
-
<glide-core-button-group-button
|
62
|
-
label="One"
|
63
|
-
></glide-core-button-group-button>
|
64
|
-
|
65
|
-
<glide-core-button-group-button
|
66
|
-
label="Two"
|
67
|
-
></glide-core-button-group-button>
|
68
|
-
</glide-core-button-group>`);
|
69
|
-
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
70
|
-
expect(buttons[0]?.privateOrientation).to.equal('horizontal');
|
71
|
-
expect(buttons[1]?.privateOrientation).to.equal('horizontal');
|
72
|
-
});
|
73
|
-
it('sets the orientation of each button when vertical', async () => {
|
74
|
-
await fixture(html `<glide-core-button-group orientation="vertical">
|
75
|
-
<glide-core-button-group-button
|
76
|
-
label="One"
|
77
|
-
></glide-core-button-group-button>
|
78
|
-
|
79
|
-
<glide-core-button-group-button
|
80
|
-
label="Two"
|
81
|
-
></glide-core-button-group-button>
|
82
|
-
</glide-core-button-group>`);
|
83
|
-
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
84
|
-
expect(buttons[0]?.privateOrientation).to.equal('vertical');
|
85
|
-
expect(buttons[1]?.privateOrientation).to.equal('vertical');
|
86
|
-
});
|
87
|
-
it('sets `privateVariant` on each button', async () => {
|
88
|
-
await fixture(html `<glide-core-button-group label="Label" variant="icon-only">
|
89
|
-
<glide-core-button-group-button label="One">
|
90
|
-
<div slot="icon">Icon</div>
|
91
|
-
</glide-core-button-group-button>
|
92
|
-
|
93
|
-
<glide-core-button-group-button label="Two">
|
94
|
-
<div slot="icon">Icon</div>
|
95
|
-
</glide-core-button-group-button>
|
96
|
-
</glide-core-button-group>`);
|
97
|
-
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
98
|
-
expect(buttons[0].privateVariant).to.equal('icon-only');
|
99
|
-
expect(buttons[1].privateVariant).to.equal('icon-only');
|
100
|
-
});
|
101
|
-
it('throws when its default slot is the wrong type', async () => {
|
102
|
-
await expectArgumentError(() => {
|
103
|
-
return fixture(html `
|
104
|
-
<glide-core-button-group label="Label">
|
105
|
-
<div></div>
|
106
|
-
</glide-core-button-group>
|
107
|
-
`);
|
108
|
-
});
|
109
|
-
await expectArgumentError(() => {
|
110
|
-
return fixture(html `<glide-core-button-group label="Label"> </glide-core-button-group>`);
|
111
|
-
});
|
112
|
-
});
|
113
|
-
it('selects the first button not disabled', async () => {
|
114
|
-
await fixture(html `<glide-core-button-group>
|
115
|
-
<glide-core-button-group-button
|
116
|
-
label="One"
|
117
|
-
disabled
|
118
|
-
></glide-core-button-group-button>
|
119
|
-
|
120
|
-
<glide-core-button-group-button
|
121
|
-
label="Two"
|
122
|
-
></glide-core-button-group-button>
|
123
|
-
|
124
|
-
<glide-core-button-group-button
|
125
|
-
label="Three"
|
126
|
-
></glide-core-button-group-button>
|
127
|
-
</glide-core-button-group>`);
|
128
|
-
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
129
|
-
expect(buttons[0].selected).to.be.false;
|
130
|
-
expect(buttons[1].selected).to.be.true;
|
131
|
-
expect(buttons[2].selected).to.be.false;
|
132
|
-
});
|
133
|
-
it('selects no buttons when all are disabled', async () => {
|
134
|
-
await fixture(html `<glide-core-button-group>
|
135
|
-
<glide-core-button-group-button
|
136
|
-
label="One"
|
137
|
-
disabled
|
138
|
-
></glide-core-button-group-button>
|
139
|
-
|
140
|
-
<glide-core-button-group-button
|
141
|
-
label="Two"
|
142
|
-
disabled
|
143
|
-
></glide-core-button-group-button>
|
144
|
-
</glide-core-button-group>`);
|
145
|
-
const buttons = document.querySelectorAll('glide-core-button-group-button');
|
146
|
-
expect(buttons[0].selected).to.be.false;
|
147
|
-
expect(buttons[1].selected).to.be.false;
|
148
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
import './button-group.button.js';
|