@crowdstrike/glide-core 0.9.1 → 0.9.2
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/accordion.styles.js +2 -4
- package/dist/button-group.button.styles.js +3 -8
- package/dist/button-group.styles.js +2 -2
- package/dist/button.d.ts +1 -0
- package/dist/button.js +1 -1
- package/dist/button.styles.js +2 -4
- package/dist/button.test.events.js +86 -10
- package/dist/checkbox.js +1 -1
- package/dist/checkbox.styles.js +43 -6
- package/dist/checkbox.test.form.js +16 -0
- package/dist/checkbox.test.interactions.js +8 -0
- package/dist/drawer.js +1 -1
- package/dist/dropdown.d.ts +4 -2
- package/dist/dropdown.js +1 -1
- package/dist/dropdown.option.js +1 -1
- package/dist/dropdown.option.styles.js +1 -0
- package/dist/dropdown.styles.js +47 -26
- package/dist/dropdown.test.focus.filterable.js +20 -0
- package/dist/dropdown.test.focus.js +1 -0
- package/dist/dropdown.test.form.js +23 -112
- package/dist/dropdown.test.interactions.filterable.js +121 -17
- package/dist/dropdown.test.interactions.multiple.js +15 -22
- package/dist/dropdown.test.interactions.single.js +44 -22
- package/dist/icon-button.styles.js +2 -4
- package/dist/icons/checked.d.ts +5 -0
- package/dist/icons/checked.js +1 -1
- package/dist/input.d.ts +1 -1
- package/dist/input.js +1 -1
- package/dist/input.stories.d.ts +0 -4
- package/dist/input.styles.d.ts +1 -1
- package/dist/input.styles.js +93 -93
- package/dist/input.test.basics.js +45 -45
- package/dist/input.test.form.js +17 -0
- package/dist/label.styles.js +6 -11
- package/dist/library/localize.test.js +45 -0
- package/dist/menu.button.styles.js +1 -0
- package/dist/menu.js +1 -1
- package/dist/menu.link.styles.js +1 -0
- package/dist/menu.styles.js +3 -1
- package/dist/menu.test.events.js +1 -97
- package/dist/menu.test.focus.js +26 -3
- package/dist/menu.test.interactions.js +3 -0
- package/dist/modal.d.ts +0 -7
- package/dist/modal.icon-button.test.basics.js +9 -9
- package/dist/modal.styles.js +2 -4
- package/dist/modal.tertiary-icon.test.basics.js +14 -14
- package/dist/modal.test.accessibility.js +16 -27
- package/dist/modal.test.basics.js +64 -68
- package/dist/modal.test.close.js +12 -16
- package/dist/modal.test.events.js +32 -44
- package/dist/modal.test.lock-scroll.js +15 -25
- package/dist/modal.test.methods.js +8 -12
- package/dist/modal.test.scrollbars.js +2 -4
- package/dist/radio-group.js +1 -1
- package/dist/radio-group.test.basics.js +3 -3
- package/dist/radio-group.test.events.js +6 -6
- package/dist/radio-group.test.form.js +19 -0
- package/dist/radio.styles.js +2 -6
- package/dist/split-button.styles.js +2 -4
- package/dist/split-container.styles.js +2 -4
- package/dist/styles/focus-outline.d.ts +1 -1
- package/dist/styles/focus-outline.js +7 -1
- package/dist/styles/menu-opening-animation.d.ts +2 -0
- package/dist/styles/menu-opening-animation.js +26 -0
- package/dist/styles/variables.css +1 -1
- package/dist/styles/visually-hidden.d.ts +1 -1
- package/dist/styles/visually-hidden.js +14 -1
- package/dist/tab.group.d.ts +6 -6
- package/dist/tab.group.js +1 -1
- package/dist/tab.group.styles.js +46 -5
- package/dist/tab.group.test.basics.js +9 -2
- package/dist/tab.group.test.interactions.js +70 -93
- package/dist/tab.js +1 -1
- package/dist/tab.panel.styles.js +3 -9
- package/dist/tab.styles.js +6 -13
- package/dist/tab.test.basics.js +15 -17
- package/dist/tag.js +1 -1
- package/dist/tag.styles.js +2 -4
- package/dist/tag.test.basics.js +28 -27
- package/dist/tag.test.events.js +3 -3
- package/dist/tag.test.focus.js +4 -4
- package/dist/textarea.d.ts +1 -1
- package/dist/textarea.stories.d.ts +0 -4
- package/dist/textarea.styles.d.ts +1 -1
- package/dist/textarea.styles.js +63 -67
- package/dist/textarea.test.basics.js +52 -52
- package/dist/toasts.d.ts +5 -0
- package/dist/toasts.styles.js +1 -1
- package/dist/toggle.styles.js +2 -1
- package/dist/toggle.test.interactions.js +11 -0
- package/dist/tooltip.js +1 -1
- package/dist/tooltip.styles.js +22 -18
- package/dist/tooltip.test.interactions.js +6 -6
- package/dist/translations/en.js +1 -1
- package/dist/translations/fr.d.ts +3 -1
- package/dist/translations/fr.js +1 -1
- package/dist/translations/ja.d.ts +3 -1
- package/dist/translations/ja.js +1 -1
- package/dist/tree.item.styles.js +11 -3
- package/dist/tree.item.test.basics.js +0 -30
- package/package.json +1 -1
- package/dist/button.test.form.d.ts +0 -1
- package/dist/button.test.form.js +0 -50
- package/dist/input.test.translations.js +0 -38
- package/dist/tag.test.translations.d.ts +0 -1
- package/dist/tag.test.translations.js +0 -25
- package/dist/textarea.test.translations.d.ts +0 -1
- package/dist/textarea.test.translations.js +0 -34
- /package/dist/{input.test.translations.d.ts → library/localize.test.d.ts} +0 -0
package/dist/tree.item.styles.js
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
import{css}from"lit";import focusOutline from"./styles/focus-outline.js";export default[css`
|
2
|
+
${focusOutline(".label-container:focus-visible")}
|
3
|
+
`,css`
|
2
4
|
:host {
|
3
5
|
cursor: pointer;
|
4
6
|
display: flex;
|
@@ -50,6 +52,7 @@ import{css}from"lit";import focusOutline from"./styles/focus-outline.js";export
|
|
50
52
|
font-size: var(--glide-core-body-sm-font-size);
|
51
53
|
padding-block: var(--glide-core-spacing-xxs);
|
52
54
|
padding-inline: var(--glide-core-spacing-xs);
|
55
|
+
transition: background-color 150ms ease-in-out;
|
53
56
|
|
54
57
|
&:hover {
|
55
58
|
background-color: var(--glide-core-surface-hover);
|
@@ -64,13 +67,18 @@ import{css}from"lit";import focusOutline from"./styles/focus-outline.js";export
|
|
64
67
|
}
|
65
68
|
|
66
69
|
&:focus-visible {
|
67
|
-
${focusOutline};
|
68
|
-
|
69
70
|
/* The outline is inside the component since children have overflow hidden */
|
70
71
|
outline-offset: -2px;
|
71
72
|
|
72
73
|
.component.selected & {
|
73
|
-
|
74
|
+
/*
|
75
|
+
We need !important here as we must override the focusVisible mixin
|
76
|
+
that also includes !important.
|
77
|
+
This component is a bit of a unique case as we want to override the
|
78
|
+
default outline styles when a tree item is also focus-visible, but
|
79
|
+
also selected.
|
80
|
+
*/
|
81
|
+
outline: 1px solid var(--glide-core-icon-selected) !important;
|
74
82
|
outline-offset: -3px;
|
75
83
|
}
|
76
84
|
}
|
@@ -52,36 +52,6 @@ it('adds label to menu target', async () => {
|
|
52
52
|
?.querySelector('glide-core-icon-button');
|
53
53
|
expect(menuTarget?.label).to.equal('Actions for Item');
|
54
54
|
});
|
55
|
-
it('adds Japanese label to menu', async () => {
|
56
|
-
document.documentElement.setAttribute('lang', 'ja');
|
57
|
-
const treeItem = await fixture(html `
|
58
|
-
<glide-core-tree-item label="Item">
|
59
|
-
<glide-core-tree-item-menu slot="menu" data-menu>
|
60
|
-
<glide-core-menu-link label="Move" url="/move"> </glide-core-menu-link>
|
61
|
-
</glide-core-tree-item-menu>
|
62
|
-
</glide-core-tree-item>
|
63
|
-
`);
|
64
|
-
const menuTarget = treeItem
|
65
|
-
.querySelector('glide-core-tree-item-menu')
|
66
|
-
?.shadowRoot?.querySelector('glide-core-menu')
|
67
|
-
?.querySelector('glide-core-icon-button');
|
68
|
-
expect(menuTarget?.label).to.equal('Actions for Item');
|
69
|
-
});
|
70
|
-
it('adds French label to menu', async () => {
|
71
|
-
document.documentElement.setAttribute('lang', 'fr');
|
72
|
-
const treeItem = await fixture(html `
|
73
|
-
<glide-core-tree-item label="Item">
|
74
|
-
<glide-core-tree-item-menu slot="menu" data-menu>
|
75
|
-
<glide-core-menu-link label="Move" url="/move"> </glide-core-menu-link>
|
76
|
-
</glide-core-tree-item-menu>
|
77
|
-
</glide-core-tree-item>
|
78
|
-
`);
|
79
|
-
const menuTarget = treeItem
|
80
|
-
.querySelector('glide-core-tree-item-menu')
|
81
|
-
?.shadowRoot?.querySelector('glide-core-menu')
|
82
|
-
?.querySelector('glide-core-icon-button');
|
83
|
-
expect(menuTarget?.label).to.equal('Actions for Item');
|
84
|
-
});
|
85
55
|
it('renders with a suffix slot', async () => {
|
86
56
|
await fixture(html `
|
87
57
|
<glide-core-tree-item label="Item">
|
package/package.json
CHANGED
@@ -1 +0,0 @@
|
|
1
|
-
import './button.js';
|
package/dist/button.test.form.js
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import './button.js';
|
3
|
-
import { expect, fixture, html, oneEvent } from '@open-wc/testing';
|
4
|
-
import { sendKeys } from '@web/test-runner-commands';
|
5
|
-
import GlideCoreButton from './button.js';
|
6
|
-
GlideCoreButton.shadowRootOptions.mode = 'open';
|
7
|
-
it('participates in a form when type="reset"', async () => {
|
8
|
-
const form = document.createElement('form');
|
9
|
-
const component = await fixture(html ` <glide-core-button type="reset">Button</glide-core-button> `, {
|
10
|
-
parentNode: form,
|
11
|
-
});
|
12
|
-
const formResetEvent = oneEvent(form, 'reset');
|
13
|
-
component.shadowRoot?.querySelector('button')?.click();
|
14
|
-
const event = await formResetEvent;
|
15
|
-
expect(event instanceof Event).to.be.true;
|
16
|
-
});
|
17
|
-
it('participates in a form when hitting "enter" and type="reset"', async () => {
|
18
|
-
const form = document.createElement('form');
|
19
|
-
const component = await fixture(html ` <glide-core-button type="reset">Button</glide-core-button> `, {
|
20
|
-
parentNode: form,
|
21
|
-
});
|
22
|
-
const formResetEvent = oneEvent(form, 'reset');
|
23
|
-
component.focus();
|
24
|
-
await sendKeys({ press: 'Enter' });
|
25
|
-
const event = await formResetEvent;
|
26
|
-
expect(event instanceof Event).to.be.true;
|
27
|
-
});
|
28
|
-
it('participates in a form when type="submit"', async () => {
|
29
|
-
const form = document.createElement('form');
|
30
|
-
const component = await fixture(html ` <glide-core-button type="submit">Button</glide-core-button> `, {
|
31
|
-
parentNode: form,
|
32
|
-
});
|
33
|
-
form.addEventListener('submit', (event) => event.preventDefault());
|
34
|
-
const formSubmitEvent = oneEvent(form, 'submit');
|
35
|
-
component.shadowRoot?.querySelector('button')?.click();
|
36
|
-
const event = await formSubmitEvent;
|
37
|
-
expect(event instanceof Event).to.be.true;
|
38
|
-
});
|
39
|
-
it('participates in a form when hitting "enter" and type="submit"', async () => {
|
40
|
-
const form = document.createElement('form');
|
41
|
-
const component = await fixture(html ` <glide-core-button type="submit">Button</glide-core-button> `, {
|
42
|
-
parentNode: form,
|
43
|
-
});
|
44
|
-
form.addEventListener('submit', (event) => event.preventDefault());
|
45
|
-
const formSubmitEvent = oneEvent(form, 'submit');
|
46
|
-
component.focus();
|
47
|
-
await sendKeys({ press: 'Enter' });
|
48
|
-
const event = await formSubmitEvent;
|
49
|
-
expect(event instanceof Event).to.be.true;
|
50
|
-
});
|
@@ -1,38 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
|
3
|
-
import GlideCoreInput from './input.js';
|
4
|
-
GlideCoreInput.shadowRootOptions.mode = 'open';
|
5
|
-
it('renders dynamic strings in Japanese', async () => {
|
6
|
-
const element = await fixture(html `
|
7
|
-
<glide-core-input
|
8
|
-
label="Test"
|
9
|
-
value="lorem"
|
10
|
-
maxlength="40"
|
11
|
-
clearable
|
12
|
-
></glide-core-input>
|
13
|
-
`);
|
14
|
-
document.documentElement.setAttribute('lang', 'ja');
|
15
|
-
await elementUpdated(element);
|
16
|
-
const maxCharacterCountText = element.shadowRoot?.querySelector('[data-test="character-count-text"]');
|
17
|
-
expect(maxCharacterCountText?.textContent?.trim()).to.equal('5/40');
|
18
|
-
const maxCharacterCountAnnouncement = element.shadowRoot?.querySelector('[data-test="character-count-announcement"]');
|
19
|
-
expect(maxCharacterCountAnnouncement?.textContent?.trim()).to.equal('Character count 5 of 40');
|
20
|
-
expect(element.shadowRoot?.querySelector('[data-test="clear-button"]')?.label).to.equal('Clear Test entry');
|
21
|
-
});
|
22
|
-
it('renders dynamic strings in French', async () => {
|
23
|
-
const element = await fixture(html `
|
24
|
-
<glide-core-input
|
25
|
-
label="Test"
|
26
|
-
value="lorem"
|
27
|
-
maxlength="40"
|
28
|
-
clearable
|
29
|
-
></glide-core-input>
|
30
|
-
`);
|
31
|
-
document.documentElement.setAttribute('lang', 'fr');
|
32
|
-
await elementUpdated(element);
|
33
|
-
const maxCharacterCountText = element.shadowRoot?.querySelector('[data-test="character-count-text"]');
|
34
|
-
expect(maxCharacterCountText?.textContent?.trim()).to.equal('5/40');
|
35
|
-
const maxCharacterCountAnnouncement = element.shadowRoot?.querySelector('[data-test="character-count-announcement"]');
|
36
|
-
expect(maxCharacterCountAnnouncement?.textContent?.trim()).to.equal('Character count 5 of 40');
|
37
|
-
expect(element.shadowRoot?.querySelector('[data-test="clear-button"]')?.label).to.equal('Clear Test entry');
|
38
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
|
2
|
-
import GlideCoreTag from './tag.js';
|
3
|
-
GlideCoreTag.shadowRootOptions.mode = 'open';
|
4
|
-
it('renders dynamic string in Japanese', async () => {
|
5
|
-
const element = await fixture(html `<glide-core-tag removable-label="test-aria-label"
|
6
|
-
><span slot="prefix">Prefix</span
|
7
|
-
><span data-content>Tag</span></glide-core-tag
|
8
|
-
>`);
|
9
|
-
document.documentElement.setAttribute('lang', 'ja');
|
10
|
-
await elementUpdated(element);
|
11
|
-
const iconButton = element.shadowRoot?.querySelector('button');
|
12
|
-
expect(iconButton).to.have.attribute('aria-label', `タグを削除: test-aria-label`);
|
13
|
-
expect(iconButton).to.have.attribute('type', 'button');
|
14
|
-
});
|
15
|
-
it('renders dynamic string in French', async () => {
|
16
|
-
const element = await fixture(html `<glide-core-tag removable-label="test-aria-label"
|
17
|
-
><span slot="prefix">Prefix</span
|
18
|
-
><span data-content>Tag</span></glide-core-tag
|
19
|
-
>`);
|
20
|
-
document.documentElement.setAttribute('lang', 'fr');
|
21
|
-
await elementUpdated(element);
|
22
|
-
const iconButton = element.shadowRoot?.querySelector('button');
|
23
|
-
expect(iconButton).to.have.attribute('aria-label', `Supprimer la balise : test-aria-label`);
|
24
|
-
expect(iconButton).to.have.attribute('type', 'button');
|
25
|
-
});
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1,34 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unused-expressions */
|
2
|
-
import { elementUpdated, expect, fixture, html } from '@open-wc/testing';
|
3
|
-
import GlideCoreTextarea from './textarea.js';
|
4
|
-
GlideCoreTextarea.shadowRootOptions.mode = 'open';
|
5
|
-
it('renders dynamic strings in Japanese', async () => {
|
6
|
-
const element = await fixture(html `
|
7
|
-
<glide-core-textarea
|
8
|
-
label="Test"
|
9
|
-
value="lorem"
|
10
|
-
maxlength="40"
|
11
|
-
></glide-core-textarea>
|
12
|
-
`);
|
13
|
-
document.documentElement.setAttribute('lang', 'ja');
|
14
|
-
await elementUpdated(element);
|
15
|
-
const maxCharacterCountText = element.shadowRoot?.querySelector('[data-test="character-count-text"]');
|
16
|
-
expect(maxCharacterCountText?.textContent?.trim()).to.equal('5/40');
|
17
|
-
const maxCharacterCountAnnouncement = element.shadowRoot?.querySelector('[data-test="character-count-announcement"]');
|
18
|
-
expect(maxCharacterCountAnnouncement?.textContent?.trim()).to.equal('Character count 5 of 40');
|
19
|
-
});
|
20
|
-
it('renders dynamic strings in French', async () => {
|
21
|
-
const element = await fixture(html `
|
22
|
-
<glide-core-textarea
|
23
|
-
label="Test"
|
24
|
-
value="lorem"
|
25
|
-
maxlength="40"
|
26
|
-
></glide-core-textarea>
|
27
|
-
`);
|
28
|
-
document.documentElement.setAttribute('lang', 'fr');
|
29
|
-
await elementUpdated(element);
|
30
|
-
const maxCharacterCountText = element.shadowRoot?.querySelector('[data-test="character-count-text"]');
|
31
|
-
expect(maxCharacterCountText?.textContent?.trim()).to.equal('5/40');
|
32
|
-
const maxCharacterCountAnnouncement = element.shadowRoot?.querySelector('[data-test="character-count-announcement"]');
|
33
|
-
expect(maxCharacterCountAnnouncement?.textContent?.trim()).to.equal('Character count 5 of 40');
|
34
|
-
});
|
File without changes
|