@crowdstrike/glide-core 0.13.1 → 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.styles.js +3 -2
- package/dist/input.styles.js +1 -0
- package/dist/styles/variables.css +1 -1
- package/dist/textarea.styles.js +2 -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 +8 -5
- 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,434 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './tab.group.js';
|
3
|
-
import './tab.js';
|
4
|
-
import './tab.panel.js';
|
5
|
-
import { emulateMedia } from '@web/test-runner-commands';
|
6
|
-
import { expect, fixture, html, waitUntil } from '@open-wc/testing';
|
7
|
-
import { sendKeys } from '@web/test-runner-commands';
|
8
|
-
import GlideCoreTabGroup from './tab.group.js';
|
9
|
-
import GlideCoreTabPanel from './tab.panel.js';
|
10
|
-
import sinon from 'sinon';
|
11
|
-
GlideCoreTabGroup.shadowRootOptions.mode = 'open';
|
12
|
-
GlideCoreTabPanel.shadowRootOptions.mode = 'open';
|
13
|
-
it('does not render overflow buttons when there is no overflow', async () => {
|
14
|
-
const component = await fixture(html `
|
15
|
-
<div style="width:25rem">
|
16
|
-
<glide-core-tab-group>
|
17
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
18
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
19
|
-
<glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
|
20
|
-
<glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
|
21
|
-
<glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
|
22
|
-
<glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
|
23
|
-
|
24
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
25
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
26
|
-
<glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
|
27
|
-
<glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
|
28
|
-
<glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
|
29
|
-
<glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
|
30
|
-
</glide-core-tab-group>
|
31
|
-
</div>
|
32
|
-
`);
|
33
|
-
const tabGroup = component.querySelector('glide-core-tab-group');
|
34
|
-
const startOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]');
|
35
|
-
expect(startOverflowButton).to.be.null;
|
36
|
-
const endOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]');
|
37
|
-
expect(endOverflowButton).to.be.null;
|
38
|
-
});
|
39
|
-
it('renders overflow buttons when there is overflow', async () => {
|
40
|
-
const component = await fixture(html `
|
41
|
-
<div style="width:23rem">
|
42
|
-
<glide-core-tab-group>
|
43
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
44
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
45
|
-
<glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
|
46
|
-
<glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
|
47
|
-
<glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
|
48
|
-
<glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
|
49
|
-
|
50
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
51
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
52
|
-
<glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
|
53
|
-
<glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
|
54
|
-
<glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
|
55
|
-
<glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
|
56
|
-
</glide-core-tab-group>
|
57
|
-
</div>
|
58
|
-
`);
|
59
|
-
const tabGroup = component.querySelector('glide-core-tab-group');
|
60
|
-
await waitUntil(() => {
|
61
|
-
return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
|
62
|
-
tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
|
63
|
-
});
|
64
|
-
});
|
65
|
-
it('renders a disabled start-overflow button when there is only overflow towards the end', async () => {
|
66
|
-
const component = await fixture(html `
|
67
|
-
<div style="width:23rem">
|
68
|
-
<glide-core-tab-group>
|
69
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
70
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
71
|
-
<glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
|
72
|
-
<glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
|
73
|
-
<glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
|
74
|
-
<glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
|
75
|
-
|
76
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
77
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
78
|
-
<glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
|
79
|
-
<glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
|
80
|
-
<glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
|
81
|
-
<glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
|
82
|
-
</glide-core-tab-group>
|
83
|
-
</div>
|
84
|
-
`);
|
85
|
-
const tabGroup = component.querySelector('glide-core-tab-group');
|
86
|
-
await waitUntil(() => {
|
87
|
-
return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
|
88
|
-
tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
|
89
|
-
});
|
90
|
-
const startOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]');
|
91
|
-
expect(startOverflowButton?.disabled).to.be.true;
|
92
|
-
const endOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]');
|
93
|
-
expect(endOverflowButton?.disabled).to.be.false;
|
94
|
-
});
|
95
|
-
it('renders a disabled end-overflow button when there is only overflow at the start', async () => {
|
96
|
-
const component = await fixture(html `
|
97
|
-
<div style="width:23rem">
|
98
|
-
<glide-core-tab-group>
|
99
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
100
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
101
|
-
<glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
|
102
|
-
<glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
|
103
|
-
<glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
|
104
|
-
<glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
|
105
|
-
|
106
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
107
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
108
|
-
<glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
|
109
|
-
<glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
|
110
|
-
<glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
|
111
|
-
<glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
|
112
|
-
</glide-core-tab-group>
|
113
|
-
</div>
|
114
|
-
`);
|
115
|
-
const tabGroup = component.querySelector('glide-core-tab-group');
|
116
|
-
await waitUntil(() => {
|
117
|
-
return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
|
118
|
-
tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
|
119
|
-
});
|
120
|
-
// Need to get the tab group into a state where there
|
121
|
-
// is overflow at the start -- do this by first scrolling to the end
|
122
|
-
const startOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]');
|
123
|
-
expect(startOverflowButton?.disabled).to.be.true;
|
124
|
-
const endOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]');
|
125
|
-
expect(endOverflowButton?.disabled).to.be.false;
|
126
|
-
endOverflowButton?.click();
|
127
|
-
await waitUntil(() => {
|
128
|
-
return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]')?.disabled === true);
|
129
|
-
});
|
130
|
-
expect(startOverflowButton?.disabled).to.be.false;
|
131
|
-
});
|
132
|
-
it('scrolls tabs when overflow buttons are clicked', async () => {
|
133
|
-
await emulateMedia({ reducedMotion: 'reduce' });
|
134
|
-
const spy = sinon.spy();
|
135
|
-
const component = await fixture(html `
|
136
|
-
<div style="width:23rem">
|
137
|
-
<glide-core-tab-group>
|
138
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
139
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
140
|
-
<glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
|
141
|
-
<glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
|
142
|
-
<glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
|
143
|
-
<glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
|
144
|
-
|
145
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
146
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
147
|
-
<glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
|
148
|
-
<glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
|
149
|
-
<glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
|
150
|
-
<glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
|
151
|
-
</glide-core-tab-group>
|
152
|
-
</div>
|
153
|
-
`);
|
154
|
-
const tabGroup = component.querySelector('glide-core-tab-group');
|
155
|
-
await waitUntil(() => {
|
156
|
-
return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
|
157
|
-
tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
|
158
|
-
});
|
159
|
-
tabGroup?.shadowRoot
|
160
|
-
?.querySelector('[role="tablist"]')
|
161
|
-
?.addEventListener('scroll', spy);
|
162
|
-
const endOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]');
|
163
|
-
endOverflowButton?.click();
|
164
|
-
await waitUntil(() => tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]')?.disabled === true);
|
165
|
-
expect(spy.callCount).to.equal(1);
|
166
|
-
spy.resetHistory();
|
167
|
-
const startOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]');
|
168
|
-
expect(startOverflowButton).to.be.not.null;
|
169
|
-
expect(startOverflowButton?.disabled).to.be.false;
|
170
|
-
startOverflowButton?.click();
|
171
|
-
await waitUntil(() => tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]')?.disabled === true);
|
172
|
-
expect(spy.callCount).to.equal(1);
|
173
|
-
expect(startOverflowButton?.disabled).to.be.true;
|
174
|
-
expect(endOverflowButton?.disabled).to.be.false;
|
175
|
-
await emulateMedia({ reducedMotion: 'no-preference' });
|
176
|
-
});
|
177
|
-
it('removes overflow buttons when the component is resized and there is no overflow', async () => {
|
178
|
-
const component = await fixture(html `
|
179
|
-
<div style="width:23rem" data-test="test-parent">
|
180
|
-
<glide-core-tab-group>
|
181
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
182
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
183
|
-
<glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
|
184
|
-
<glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
|
185
|
-
<glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
|
186
|
-
<glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
|
187
|
-
|
188
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
189
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
190
|
-
<glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
|
191
|
-
<glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
|
192
|
-
<glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
|
193
|
-
<glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
|
194
|
-
</glide-core-tab-group>
|
195
|
-
</div>
|
196
|
-
`);
|
197
|
-
const tabGroup = component.querySelector('glide-core-tab-group');
|
198
|
-
await waitUntil(() => {
|
199
|
-
return (tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
|
200
|
-
tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
|
201
|
-
});
|
202
|
-
const container = document?.querySelector('[data-test="test-parent"]');
|
203
|
-
expect(container).to.be.not.null;
|
204
|
-
container.style.width = 'auto';
|
205
|
-
await waitUntil(() => tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') === null &&
|
206
|
-
tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') === null);
|
207
|
-
});
|
208
|
-
it('renders overflow buttons when the component is resized and there is overflow', async () => {
|
209
|
-
const component = await fixture(html `
|
210
|
-
<div data-test="test-parent">
|
211
|
-
<glide-core-tab-group>
|
212
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
213
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
214
|
-
<glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
|
215
|
-
<glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
|
216
|
-
<glide-core-tab slot="nav" panel="5">Tab 5</glide-core-tab>
|
217
|
-
<glide-core-tab slot="nav" panel="6">Tab 6</glide-core-tab>
|
218
|
-
|
219
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
220
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
221
|
-
<glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
|
222
|
-
<glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
|
223
|
-
<glide-core-tab-panel name="5">Content for Tab 5</glide-core-tab-panel>
|
224
|
-
<glide-core-tab-panel name="6">Content for Tab 6</glide-core-tab-panel>
|
225
|
-
</glide-core-tab-group>
|
226
|
-
</div>
|
227
|
-
`);
|
228
|
-
const tabGroup = component.querySelector('glide-core-tab-group');
|
229
|
-
const startOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]');
|
230
|
-
const endOverflowButton = tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]');
|
231
|
-
expect(startOverflowButton).to.be.null;
|
232
|
-
expect(endOverflowButton).to.be.null;
|
233
|
-
const container = document?.querySelector('[data-test="test-parent"]');
|
234
|
-
expect(container).to.be.not.null;
|
235
|
-
container.style.width = '23rem';
|
236
|
-
await waitUntil(() => tabGroup?.shadowRoot?.querySelector('[data-test="overflow-start-button"]') !== null &&
|
237
|
-
tabGroup?.shadowRoot?.querySelector('[data-test="overflow-end-button"]') !== null);
|
238
|
-
});
|
239
|
-
it('has only one active tab that is tabbable after pressing the Enter key', async () => {
|
240
|
-
const component = await fixture(html `
|
241
|
-
<glide-core-tab-group>
|
242
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
243
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
244
|
-
<glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
|
245
|
-
<glide-core-tab slot="nav" panel="4">Tab 4</glide-core-tab>
|
246
|
-
|
247
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
248
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
249
|
-
<glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
|
250
|
-
<glide-core-tab-panel name="4">Content for Tab 4</glide-core-tab-panel>
|
251
|
-
</glide-core-tab-group>
|
252
|
-
`);
|
253
|
-
const [firstTab, secondTab, thirdTab, fourthTab] = component.tabElements;
|
254
|
-
expect(firstTab.active).to.be.true;
|
255
|
-
expect(secondTab.active).to.be.false;
|
256
|
-
expect(thirdTab.active).to.be.false;
|
257
|
-
expect(fourthTab.active).to.be.false;
|
258
|
-
expect(firstTab.tabIndex).to.equal(0);
|
259
|
-
expect(secondTab.tabIndex).to.equal(-1);
|
260
|
-
expect(thirdTab.tabIndex).to.equal(-1);
|
261
|
-
expect(fourthTab.tabIndex).to.equal(-1);
|
262
|
-
firstTab.focus();
|
263
|
-
await sendKeys({ press: 'ArrowRight' });
|
264
|
-
await sendKeys({ press: 'Enter' });
|
265
|
-
expect(firstTab.active).to.be.false;
|
266
|
-
expect(secondTab.active).to.be.true;
|
267
|
-
expect(thirdTab.active).to.be.false;
|
268
|
-
expect(fourthTab.active).to.be.false;
|
269
|
-
expect(firstTab.tabIndex).to.equal(-1);
|
270
|
-
expect(secondTab.tabIndex).to.equal(0);
|
271
|
-
expect(thirdTab.tabIndex).to.equal(-1);
|
272
|
-
expect(fourthTab.tabIndex).to.equal(-1);
|
273
|
-
await sendKeys({ press: 'End' });
|
274
|
-
await sendKeys({ press: 'Enter' });
|
275
|
-
expect(firstTab.active).to.be.false;
|
276
|
-
expect(secondTab.active).to.be.false;
|
277
|
-
expect(thirdTab.active).to.be.false;
|
278
|
-
expect(fourthTab.active).to.be.true;
|
279
|
-
expect(firstTab.tabIndex).to.equal(-1);
|
280
|
-
expect(secondTab.tabIndex).to.equal(-1);
|
281
|
-
expect(thirdTab.tabIndex).to.equal(-1);
|
282
|
-
expect(fourthTab.tabIndex).to.equal(0);
|
283
|
-
await sendKeys({ press: 'ArrowLeft' });
|
284
|
-
await sendKeys({ press: 'Enter' });
|
285
|
-
expect(firstTab.active).to.be.false;
|
286
|
-
expect(secondTab.active).to.be.false;
|
287
|
-
expect(thirdTab.active).to.be.true;
|
288
|
-
expect(fourthTab.active).to.be.false;
|
289
|
-
expect(firstTab.tabIndex).to.equal(-1);
|
290
|
-
expect(secondTab.tabIndex).to.equal(-1);
|
291
|
-
expect(thirdTab.tabIndex).to.equal(0);
|
292
|
-
expect(fourthTab.tabIndex).to.equal(-1);
|
293
|
-
await sendKeys({ press: 'Home' });
|
294
|
-
await sendKeys({ press: 'Enter' });
|
295
|
-
expect(firstTab.active).to.be.true;
|
296
|
-
expect(secondTab.active).to.be.false;
|
297
|
-
expect(thirdTab.active).to.be.false;
|
298
|
-
expect(fourthTab.active).to.be.false;
|
299
|
-
expect(firstTab.tabIndex).to.equal(0);
|
300
|
-
expect(secondTab.tabIndex).to.equal(-1);
|
301
|
-
expect(thirdTab.tabIndex).to.equal(-1);
|
302
|
-
expect(fourthTab.tabIndex).to.equal(-1);
|
303
|
-
});
|
304
|
-
it('has only one active tab that is tabbable when clicked', async () => {
|
305
|
-
const component = await fixture(html `
|
306
|
-
<glide-core-tab-group>
|
307
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
308
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
309
|
-
<glide-core-tab slot="nav" panel="3">Tab 3</glide-core-tab>
|
310
|
-
|
311
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
312
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
313
|
-
<glide-core-tab-panel name="3">Content for Tab 3</glide-core-tab-panel>
|
314
|
-
</glide-core-tab-group>
|
315
|
-
`);
|
316
|
-
const [firstTab, secondTab, thirdTab] = component.tabElements;
|
317
|
-
expect(firstTab.active).to.be.true;
|
318
|
-
expect(secondTab.active).to.be.false;
|
319
|
-
expect(thirdTab.active).to.be.false;
|
320
|
-
expect(firstTab.tabIndex).to.equal(0);
|
321
|
-
expect(secondTab.tabIndex).to.equal(-1);
|
322
|
-
expect(thirdTab.tabIndex).to.equal(-1);
|
323
|
-
secondTab.click();
|
324
|
-
expect(firstTab.active).to.be.false;
|
325
|
-
expect(secondTab.active).to.be.true;
|
326
|
-
expect(thirdTab.active).to.be.false;
|
327
|
-
expect(firstTab.tabIndex).to.equal(-1);
|
328
|
-
expect(secondTab.tabIndex).to.equal(0);
|
329
|
-
expect(thirdTab.tabIndex).to.equal(-1);
|
330
|
-
thirdTab.click();
|
331
|
-
expect(firstTab.active).to.be.false;
|
332
|
-
expect(secondTab.active).to.be.false;
|
333
|
-
expect(thirdTab.active).to.be.true;
|
334
|
-
expect(firstTab.tabIndex).to.equal(-1);
|
335
|
-
expect(secondTab.tabIndex).to.equal(-1);
|
336
|
-
expect(thirdTab.tabIndex).to.equal(0);
|
337
|
-
});
|
338
|
-
it('has only one tab panel that is active and tabbable when a tab is clicked', async () => {
|
339
|
-
const component = await fixture(html `
|
340
|
-
<glide-core-tab-group>
|
341
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
342
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
343
|
-
|
344
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
345
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
346
|
-
</glide-core-tab-group>
|
347
|
-
`);
|
348
|
-
const [, secondTab] = component.tabElements;
|
349
|
-
const [firstPanel, secondPanel] = component.panelElements;
|
350
|
-
expect(firstPanel.isActive).to.be.true;
|
351
|
-
expect(secondPanel.isActive).to.be.false;
|
352
|
-
expect(firstPanel.tabIndex).to.equal(0);
|
353
|
-
expect(secondPanel.tabIndex).to.equal(-1);
|
354
|
-
secondTab.click();
|
355
|
-
expect(firstPanel.isActive).to.be.false;
|
356
|
-
expect(secondPanel.isActive).to.be.true;
|
357
|
-
expect(firstPanel.tabIndex).to.equal(-1);
|
358
|
-
expect(secondPanel.tabIndex).to.equal(0);
|
359
|
-
});
|
360
|
-
it('has only one tab panel that is active and tabbable when using the keyboard to make selections', async () => {
|
361
|
-
const component = await fixture(html `
|
362
|
-
<glide-core-tab-group>
|
363
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
364
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
365
|
-
|
366
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
367
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
368
|
-
</glide-core-tab-group>
|
369
|
-
`);
|
370
|
-
const [firstTab] = component.tabElements;
|
371
|
-
const [firstPanel, secondPanel] = component.panelElements;
|
372
|
-
expect(firstPanel.isActive).to.be.true;
|
373
|
-
expect(secondPanel.isActive).to.be.false;
|
374
|
-
expect(firstPanel.tabIndex).to.equal(0);
|
375
|
-
expect(secondPanel.tabIndex).to.equal(-1);
|
376
|
-
firstTab.focus();
|
377
|
-
await sendKeys({ press: 'ArrowRight' });
|
378
|
-
await sendKeys({ press: 'Enter' });
|
379
|
-
expect(firstPanel.isActive).to.be.false;
|
380
|
-
expect(secondPanel.isActive).to.be.true;
|
381
|
-
expect(firstPanel.tabIndex).to.equal(-1);
|
382
|
-
expect(secondPanel.tabIndex).to.equal(0);
|
383
|
-
});
|
384
|
-
it('sets the last keyboard focused tab as tabbable ', async () => {
|
385
|
-
const component = await fixture(html `
|
386
|
-
<glide-core-tab-group>
|
387
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
388
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
389
|
-
|
390
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
391
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
392
|
-
</glide-core-tab-group>
|
393
|
-
`);
|
394
|
-
const [firstTab, secondTab] = component.tabElements;
|
395
|
-
expect(firstTab.active).to.be.true;
|
396
|
-
expect(secondTab.active).to.be.false;
|
397
|
-
expect(firstTab.tabIndex).to.equal(0);
|
398
|
-
expect(secondTab.tabIndex).to.equal(-1);
|
399
|
-
firstTab.focus();
|
400
|
-
await sendKeys({ press: 'ArrowRight' });
|
401
|
-
expect(firstTab.active).to.be.true;
|
402
|
-
expect(secondTab.active).to.be.false;
|
403
|
-
expect(firstTab.tabIndex).to.equal(-1);
|
404
|
-
expect(secondTab.tabIndex).to.equal(0);
|
405
|
-
});
|
406
|
-
it('sets the active tab as tabbable on tab blur', async () => {
|
407
|
-
// This behavior is to ensure that the last active tab is the first tabbable
|
408
|
-
// element in the component.
|
409
|
-
const component = await fixture(html `
|
410
|
-
<glide-core-tab-group>
|
411
|
-
<glide-core-tab slot="nav" panel="1">Tab 1</glide-core-tab>
|
412
|
-
<glide-core-tab slot="nav" panel="2">Tab 2</glide-core-tab>
|
413
|
-
|
414
|
-
<glide-core-tab-panel name="1">Content for Tab 1</glide-core-tab-panel>
|
415
|
-
<glide-core-tab-panel name="2">Content for Tab 2</glide-core-tab-panel>
|
416
|
-
</glide-core-tab-group>
|
417
|
-
`);
|
418
|
-
const [firstTab, secondTab] = component.tabElements;
|
419
|
-
expect(firstTab.active).to.be.true;
|
420
|
-
expect(secondTab.active).to.be.false;
|
421
|
-
expect(firstTab.tabIndex).to.equal(0);
|
422
|
-
expect(secondTab.tabIndex).to.equal(-1);
|
423
|
-
firstTab.focus();
|
424
|
-
await sendKeys({ press: 'ArrowRight' });
|
425
|
-
expect(firstTab.active).to.be.true;
|
426
|
-
expect(secondTab.active).to.be.false;
|
427
|
-
expect(firstTab.tabIndex).to.equal(-1);
|
428
|
-
expect(secondTab.tabIndex).to.equal(0);
|
429
|
-
secondTab.blur();
|
430
|
-
expect(firstTab.active).to.be.true;
|
431
|
-
expect(secondTab.active).to.be.false;
|
432
|
-
expect(firstTab.tabIndex).to.equal(0);
|
433
|
-
expect(secondTab.tabIndex).to.equal(-1);
|
434
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
import './tab.js';
|
package/dist/tab.test.basics.js
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './tab.js';
|
3
|
-
import { expect, fixture, html } from '@open-wc/testing';
|
4
|
-
import GlideCoreTab from './tab.js';
|
5
|
-
GlideCoreTab.shadowRootOptions.mode = 'open';
|
6
|
-
it('registers', async () => {
|
7
|
-
expect(window.customElements.get('glide-core-tab')).to.equal(GlideCoreTab);
|
8
|
-
});
|
9
|
-
it('renders correct markup and sets correct attributes for the default case', async () => {
|
10
|
-
const component = await fixture(html `
|
11
|
-
<glide-core-tab>Tab</glide-core-tab>
|
12
|
-
`);
|
13
|
-
await expect(component).to.not.be.accessible();
|
14
|
-
expect(component.active).to.be.false;
|
15
|
-
expect(component.disabled).to.be.false;
|
16
|
-
expect(component.getAttribute('aria-disabled')).to.equal(null, 'does not set aria-disabled');
|
17
|
-
expect([...component.shadowRoot.firstElementChild.classList]).to.deep.equal(['component']);
|
18
|
-
});
|
19
|
-
it('sets the panel attribute', async () => {
|
20
|
-
const component = await fixture(html `
|
21
|
-
<glide-core-tab panel="details">Tab</glide-core-tab>
|
22
|
-
`);
|
23
|
-
expect(component.panel).to.equal('details');
|
24
|
-
});
|
25
|
-
it('sets the active attribute', async () => {
|
26
|
-
const component = await fixture(html `
|
27
|
-
<glide-core-tab active>Tab</glide-core-tab>
|
28
|
-
`);
|
29
|
-
expect(component.active).to.be.true;
|
30
|
-
});
|
31
|
-
it('sets the disabled attribute', async () => {
|
32
|
-
const component = await fixture(html `
|
33
|
-
<glide-core-tab disabled>Tab</glide-core-tab>
|
34
|
-
`);
|
35
|
-
expect(component.disabled).to.be.true;
|
36
|
-
expect(component?.getAttribute('aria-disabled')).to.equal('true');
|
37
|
-
});
|
38
|
-
it('renders the icon slot', async () => {
|
39
|
-
const component = await fixture(html `
|
40
|
-
<glide-core-tab>
|
41
|
-
<span slot="icon">Icon</span>
|
42
|
-
<span>Tab</span>
|
43
|
-
</glide-core-tab>
|
44
|
-
`);
|
45
|
-
const slotNodes = component
|
46
|
-
.shadowRoot.querySelector('slot[name="icon"]')
|
47
|
-
?.assignedNodes();
|
48
|
-
expect(slotNodes?.length).to.equal(1);
|
49
|
-
expect(slotNodes?.at(0)?.textContent?.trim()).to.equal('Icon');
|
50
|
-
});
|
package/dist/tabs.stories.d.ts
DELETED
@@ -1,8 +0,0 @@
|
|
1
|
-
import './icons/storybook.js';
|
2
|
-
import './tab.group.js';
|
3
|
-
import './tab.panel.js';
|
4
|
-
import type { Meta, StoryObj } from '@storybook/web-components';
|
5
|
-
declare const meta: Meta;
|
6
|
-
export default meta;
|
7
|
-
export declare const Tabs: StoryObj;
|
8
|
-
export declare const WithOverflow: StoryObj;
|
package/dist/tag.stories.d.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
package/dist/tag.test.basics.js
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import { aTimeout, elementUpdated, expect, fixture, html, } from '@open-wc/testing';
|
3
|
-
import GlideCoreTag from './tag.js';
|
4
|
-
GlideCoreTag.shadowRootOptions.mode = 'open';
|
5
|
-
it('registers', async () => {
|
6
|
-
expect(window.customElements.get('glide-core-tag')).to.equal(GlideCoreTag);
|
7
|
-
});
|
8
|
-
it('is accessible', async () => {
|
9
|
-
const component = await fixture(html `<glide-core-tag label="Label"></glide-core-tag>`);
|
10
|
-
// Wait for the animation to complete.
|
11
|
-
await aTimeout(100);
|
12
|
-
await expect(component).to.be.accessible();
|
13
|
-
component.removable = true;
|
14
|
-
await elementUpdated(component);
|
15
|
-
await expect(component).to.be.accessible();
|
16
|
-
});
|
17
|
-
it('has defaults', async () => {
|
18
|
-
const component = await fixture(html `<glide-core-tag label="Label"></glide-core-tag>`);
|
19
|
-
expect(component.disabled).to.be.false;
|
20
|
-
expect(component.removable).to.be.false;
|
21
|
-
expect(component.size).to.equal('medium');
|
22
|
-
});
|
23
|
-
it('can be removed', async () => {
|
24
|
-
const component = await fixture(html `<glide-core-tag label="Label" removable></glide-core-tag>`);
|
25
|
-
const button = component.shadowRoot?.querySelector('[data-test="removal-button"]');
|
26
|
-
expect(button?.checkVisibility()).to.be.true;
|
27
|
-
expect(button?.getAttribute('aria-label')).to.equal('Remove tag: Label');
|
28
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
import './tag.js';
|
package/dist/tag.test.events.js
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './tag.js';
|
3
|
-
import { expect, fixture, html, oneEvent } from '@open-wc/testing';
|
4
|
-
import { sendKeys } from '@web/test-runner-commands';
|
5
|
-
import GlideCoreTag from './tag.js';
|
6
|
-
import sinon from 'sinon';
|
7
|
-
GlideCoreTag.shadowRootOptions.mode = 'open';
|
8
|
-
it('dispatches one "remove" event on click', async () => {
|
9
|
-
const component = await fixture(html `<glide-core-tag label="Label" removable></glide-core-tag>`);
|
10
|
-
setTimeout(() => {
|
11
|
-
component.shadowRoot
|
12
|
-
?.querySelector('[data-test="removal-button"]')
|
13
|
-
?.click();
|
14
|
-
});
|
15
|
-
const spy = sinon.spy();
|
16
|
-
component.addEventListener('remove', spy);
|
17
|
-
const event = await oneEvent(component, 'remove');
|
18
|
-
expect(event instanceof Event).to.be.true;
|
19
|
-
expect(event.bubbles).to.be.true;
|
20
|
-
expect(event.composed).to.be.true;
|
21
|
-
expect(spy.callCount).to.equal(1);
|
22
|
-
});
|
23
|
-
it('dispatches one "remove" event on Enter ', async () => {
|
24
|
-
const component = await fixture(html `<glide-core-tag label="Label" removable></glide-core-tag>`);
|
25
|
-
component.shadowRoot
|
26
|
-
?.querySelector('[data-test="removal-button"]')
|
27
|
-
?.focus();
|
28
|
-
sendKeys({ press: 'Enter' });
|
29
|
-
const spy = sinon.spy();
|
30
|
-
component.addEventListener('remove', spy);
|
31
|
-
const event = await oneEvent(component, 'remove');
|
32
|
-
expect(event instanceof Event).to.be.true;
|
33
|
-
expect(event.bubbles).to.be.true;
|
34
|
-
expect(event.composed).to.be.true;
|
35
|
-
expect(spy.callCount).to.equal(1);
|
36
|
-
});
|
37
|
-
it('dispatches one "remove" event on Space ', async () => {
|
38
|
-
const component = await fixture(html `<glide-core-tag label="Label" removable></glide-core-tag>`);
|
39
|
-
component.shadowRoot
|
40
|
-
?.querySelector('[data-test="removal-button"]')
|
41
|
-
?.focus();
|
42
|
-
sendKeys({ press: ' ' });
|
43
|
-
const spy = sinon.spy();
|
44
|
-
component.addEventListener('remove', spy);
|
45
|
-
const event = await oneEvent(component, 'remove');
|
46
|
-
expect(event instanceof Event).to.be.true;
|
47
|
-
expect(event.bubbles).to.be.true;
|
48
|
-
expect(event.composed).to.be.true;
|
49
|
-
expect(spy.callCount).to.equal(1);
|
50
|
-
});
|
51
|
-
it('dispatches one "edit" event on click', async () => {
|
52
|
-
const component = await fixture(html `<glide-core-tag label="Label" private-editable></glide-core-tag>`);
|
53
|
-
setTimeout(() => {
|
54
|
-
component.shadowRoot
|
55
|
-
?.querySelector('[data-test="edit-button"]')
|
56
|
-
?.click();
|
57
|
-
});
|
58
|
-
const spy = sinon.spy();
|
59
|
-
component.addEventListener('edit', spy);
|
60
|
-
const event = await oneEvent(component, 'edit');
|
61
|
-
expect(event instanceof Event).to.be.true;
|
62
|
-
expect(event.bubbles).to.be.true;
|
63
|
-
expect(event.composed).to.be.true;
|
64
|
-
expect(spy.callCount).to.equal(1);
|
65
|
-
});
|
66
|
-
it('dispatches one "edit" event on Enter ', async () => {
|
67
|
-
const component = await fixture(html `<glide-core-tag label="Label" private-editable></glide-core-tag>`);
|
68
|
-
component.shadowRoot
|
69
|
-
?.querySelector('[data-test="edit-button"]')
|
70
|
-
?.focus();
|
71
|
-
sendKeys({ press: 'Enter' });
|
72
|
-
const spy = sinon.spy();
|
73
|
-
component.addEventListener('edit', spy);
|
74
|
-
const event = await oneEvent(component, 'edit');
|
75
|
-
expect(event instanceof Event).to.be.true;
|
76
|
-
expect(event.bubbles).to.be.true;
|
77
|
-
expect(event.composed).to.be.true;
|
78
|
-
expect(spy.callCount).to.equal(1);
|
79
|
-
});
|
80
|
-
it('dispatches one "edit" event on Space ', async () => {
|
81
|
-
const component = await fixture(html `<glide-core-tag label="Label" private-editable></glide-core-tag>`);
|
82
|
-
component.shadowRoot
|
83
|
-
?.querySelector('[data-test="edit-button"]')
|
84
|
-
?.focus();
|
85
|
-
sendKeys({ press: ' ' });
|
86
|
-
const spy = sinon.spy();
|
87
|
-
component.addEventListener('edit', spy);
|
88
|
-
const event = await oneEvent(component, 'edit');
|
89
|
-
expect(event instanceof Event).to.be.true;
|
90
|
-
expect(event.bubbles).to.be.true;
|
91
|
-
expect(event.composed).to.be.true;
|
92
|
-
expect(spy.callCount).to.equal(1);
|
93
|
-
});
|
package/dist/tag.test.focus.d.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
package/dist/tag.test.focus.js
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import { expect, fixture, html } from '@open-wc/testing';
|
3
|
-
import GlideCoreTag from './tag.js';
|
4
|
-
GlideCoreTag.shadowRootOptions.mode = 'open';
|
5
|
-
it('calling `focus()` focuses the button', async () => {
|
6
|
-
const component = await fixture(html `<glide-core-tag label="Label" removable></glide-core-tag>`);
|
7
|
-
component.focus();
|
8
|
-
const button = component.shadowRoot?.querySelector('[data-test="removal-button"]');
|
9
|
-
expect(component.shadowRoot?.activeElement).to.equal(button);
|
10
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|