@crowdstrike/glide-core 0.29.2 → 0.30.1
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.js +240 -1
- package/dist/accordion.styles.js +13 -7
- package/dist/button-group.button.js +143 -1
- package/dist/button-group.button.styles.js +43 -15
- package/dist/button-group.js +249 -1
- package/dist/button-group.styles.js +10 -5
- package/dist/button.js +206 -1
- package/dist/button.styles.js +12 -7
- package/dist/checkbox-group.js +479 -14
- package/dist/checkbox-group.styles.js +5 -2
- package/dist/checkbox.js +519 -32
- package/dist/checkbox.styles.js +10 -5
- package/dist/drawer.js +168 -1
- package/dist/drawer.styles.js +5 -2
- package/dist/dropdown.js +2423 -123
- package/dist/dropdown.option.js +536 -1
- package/dist/dropdown.option.styles.js +5 -2
- package/dist/dropdown.styles.js +15 -8
- package/dist/form-controls-layout.js +102 -1
- package/dist/form-controls-layout.styles.js +5 -2
- package/dist/icon-button.js +139 -1
- package/dist/icon-button.styles.js +19 -7
- package/dist/icons/checked.js +28 -1
- package/dist/icons/chevron.js +21 -1
- package/dist/icons/magnifying-glass.js +23 -1
- package/dist/icons/pencil.js +21 -1
- package/dist/icons/severity-critical.js +20 -1
- package/dist/icons/severity-informational.js +20 -1
- package/dist/icons/severity-medium.js +20 -1
- package/dist/icons/x.js +21 -1
- package/dist/inline-alert.js +118 -1
- package/dist/inline-alert.styles.js +5 -2
- package/dist/input.d.ts +8 -2
- package/dist/input.js +505 -41
- package/dist/input.styles.js +25 -4
- package/dist/label.js +303 -1
- package/dist/label.styles.js +11 -5
- package/dist/library/assert-slot.js +136 -1
- package/dist/library/expect-unhandled-rejection.js +14 -1
- package/dist/library/expect-window-error.js +26 -1
- package/dist/library/final.js +18 -1
- package/dist/library/form-control.js +1 -1
- package/dist/library/localize.js +10 -1
- package/dist/library/mouse.js +35 -1
- package/dist/library/on-resize.js +24 -1
- package/dist/library/required.js +35 -1
- package/dist/library/shadow-root-mode.js +4 -1
- package/dist/library/unique-id.js +3 -1
- package/dist/link.js +92 -1
- package/dist/link.styles.js +10 -5
- package/dist/menu.d.ts +3 -2
- package/dist/menu.js +1259 -1
- package/dist/menu.styles.js +35 -19
- package/dist/modal.d.ts +4 -0
- package/dist/modal.icon-button.js +60 -1
- package/dist/modal.icon-button.styles.js +5 -2
- package/dist/modal.js +473 -1
- package/dist/modal.styles.js +71 -22
- package/dist/option.d.ts +74 -0
- package/dist/option.js +498 -0
- package/dist/option.styles.js +140 -0
- package/dist/{menu.options.d.ts → options.d.ts} +5 -6
- package/dist/options.js +130 -0
- package/dist/options.styles.js +21 -0
- package/dist/popover.js +620 -1
- package/dist/popover.styles.js +11 -5
- package/dist/radio-group.js +624 -17
- package/dist/radio-group.radio.js +211 -1
- package/dist/radio-group.radio.styles.js +9 -4
- package/dist/radio-group.styles.js +5 -2
- package/dist/slider.js +1040 -61
- package/dist/slider.styles.js +9 -4
- package/dist/spinner.js +60 -1
- package/dist/spinner.styles.js +5 -2
- package/dist/split-button.js +116 -1
- package/dist/split-button.primary-button.js +100 -1
- package/dist/split-button.primary-button.styles.js +13 -6
- package/dist/split-button.primary-link.js +102 -1
- package/dist/split-button.secondary-button.d.ts +2 -3
- package/dist/split-button.secondary-button.js +121 -1
- package/dist/split-button.secondary-button.styles.js +12 -7
- package/dist/split-button.styles.js +9 -4
- package/dist/styles/focus-outline.js +9 -3
- package/dist/styles/fonts.css +6 -1
- package/dist/styles/opacity-and-scale-animation.js +6 -3
- package/dist/styles/skeleton.js +6 -3
- package/dist/styles/variables.css +410 -1
- package/dist/styles/visually-hidden.js +6 -3
- package/dist/tab.group.js +386 -1
- package/dist/tab.group.styles.js +5 -2
- package/dist/tab.js +133 -1
- package/dist/tab.panel.js +93 -1
- package/dist/tab.panel.styles.js +11 -5
- package/dist/tab.styles.js +9 -4
- package/dist/tag.js +207 -1
- package/dist/tag.styles.js +10 -5
- package/dist/textarea.js +353 -19
- package/dist/textarea.styles.js +23 -4
- package/dist/toast.js +130 -1
- package/dist/toast.toasts.js +248 -25
- package/dist/toast.toasts.styles.js +9 -4
- package/dist/toggle.js +178 -1
- package/dist/toggle.styles.js +25 -5
- package/dist/tooltip.container.js +130 -1
- package/dist/tooltip.container.styles.js +5 -2
- package/dist/tooltip.js +484 -1
- package/dist/tooltip.styles.js +21 -5
- package/dist/translations/en.js +36 -1
- package/dist/translations/fr.js +37 -1
- package/dist/translations/ja.js +37 -1
- package/package.json +8 -12
- package/dist/menu.button.d.ts +0 -42
- package/dist/menu.button.js +0 -1
- package/dist/menu.button.styles.js +0 -32
- package/dist/menu.link.d.ts +0 -44
- package/dist/menu.link.js +0 -1
- package/dist/menu.link.styles.js +0 -35
- package/dist/menu.options.js +0 -1
- package/dist/menu.options.styles.d.ts +0 -2
- package/dist/menu.options.styles.js +0 -20
- /package/dist/{menu.button.styles.d.ts → option.styles.d.ts} +0 -0
- /package/dist/{menu.link.styles.d.ts → options.styles.d.ts} +0 -0
package/dist/options.js
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6
|
+
};
|
7
|
+
import { html, LitElement } from 'lit';
|
8
|
+
import { classMap } from 'lit/directives/class-map.js';
|
9
|
+
import { customElement, property } from 'lit/decorators.js';
|
10
|
+
import { map } from 'lit/directives/map.js';
|
11
|
+
import { when } from 'lit/directives/when.js';
|
12
|
+
import { range } from 'lit/directives/range.js';
|
13
|
+
import packageJson from '../package.json' with { type: 'json' };
|
14
|
+
import styles from './options.styles.js';
|
15
|
+
import shadowRootMode from './library/shadow-root-mode.js';
|
16
|
+
import final from './library/final.js';
|
17
|
+
import uniqueId from './library/unique-id.js';
|
18
|
+
import assertSlot from './library/assert-slot.js';
|
19
|
+
import Option from './option.js';
|
20
|
+
// This component exists because Menu's target and its menu (`"role="menu"` or
|
21
|
+
// `role="listbox"`) both need to be in the light DOM so the target and menu can
|
22
|
+
// reference each other's IDs in ARIA attributes.
|
23
|
+
//
|
24
|
+
// Tooltip is in a similar situation but has no default slot. So we can simply take
|
25
|
+
// the value of its `label` attribute, pass it to Tooltip Container, then dump
|
26
|
+
// Tooltip Container into Tooltip's light DOM for consumers. We can't do the same
|
27
|
+
// for Menu because it necessarily has a default slot for Option(s) and arbitrary
|
28
|
+
// content.
|
29
|
+
//
|
30
|
+
// An alternative solution would be to require that consumers wrap their default
|
31
|
+
// slot content in any element. But doing so would be arguably more awkward than
|
32
|
+
// asking them to slot an element specifically for the purpose.
|
33
|
+
/**
|
34
|
+
* @attr {string} [aria-activedescendant='']
|
35
|
+
* @attr {string} [aria-labelledby='']
|
36
|
+
*
|
37
|
+
* @readonly
|
38
|
+
* @attr {string} [id]
|
39
|
+
*
|
40
|
+
* @attr {'menu'|'listbox'} [role='menu']
|
41
|
+
*
|
42
|
+
* @readonly
|
43
|
+
* @attr {number} [tabindex=-1]
|
44
|
+
*
|
45
|
+
* @readonly
|
46
|
+
* @attr {string} [version]
|
47
|
+
*
|
48
|
+
* @slot {Option | Text}
|
49
|
+
*/
|
50
|
+
let Options = class Options extends LitElement {
|
51
|
+
constructor() {
|
52
|
+
super(...arguments);
|
53
|
+
// On the host because `role` is on the host.
|
54
|
+
this.ariaActivedescendant = '';
|
55
|
+
// On the host because `role` is on the host.
|
56
|
+
this.ariaLabelledby = '';
|
57
|
+
// On the host instead so screenreaders can find it when Menu's target references
|
58
|
+
// it via `aria-controls`.
|
59
|
+
this.id = uniqueId();
|
60
|
+
this.privateLoading = false;
|
61
|
+
// On the host because otherwise VoiceOver won't recongize it as belonging to
|
62
|
+
// Menu's target.
|
63
|
+
this.role = 'menu';
|
64
|
+
// On the host because `role` is on the host.
|
65
|
+
this.tabIndex = -1;
|
66
|
+
this.version = packageJson.version;
|
67
|
+
}
|
68
|
+
static { this.shadowRootOptions = {
|
69
|
+
...LitElement.shadowRootOptions,
|
70
|
+
mode: shadowRootMode,
|
71
|
+
}; }
|
72
|
+
static { this.styles = styles; }
|
73
|
+
render() {
|
74
|
+
// Without `role="none"` VoiceOver doesn't announce how many options are available.
|
75
|
+
// Presumably because this element sits between the host (which has `role="menu" or
|
76
|
+
// `role="listbox"`) and Option(s) (which have `role="menuitem"` or
|
77
|
+
// `role="option"`).
|
78
|
+
return html `<div class="component" role="none">
|
79
|
+
<slot
|
80
|
+
class=${classMap({
|
81
|
+
'default-slot': true,
|
82
|
+
loading: this.privateLoading,
|
83
|
+
})}
|
84
|
+
@slotchange=${this.#onDefaultSlotChange}
|
85
|
+
${assertSlot([Option, Text], true)}
|
86
|
+
>
|
87
|
+
<!-- @type {Option | Text} -->
|
88
|
+
</slot>
|
89
|
+
|
90
|
+
${when(this.privateLoading, () => {
|
91
|
+
return html `<div class="loading-feedback" data-test="loading-feedback">
|
92
|
+
${map(range(7), () => html `<div></div>`)}
|
93
|
+
</div>`;
|
94
|
+
})}
|
95
|
+
</div>`;
|
96
|
+
}
|
97
|
+
#onDefaultSlotChange() {
|
98
|
+
this.dispatchEvent(new Event('private-slot-change', { bubbles: true }));
|
99
|
+
}
|
100
|
+
};
|
101
|
+
__decorate([
|
102
|
+
property({
|
103
|
+
attribute: 'aria-activedescendant',
|
104
|
+
reflect: true,
|
105
|
+
useDefault: true,
|
106
|
+
})
|
107
|
+
], Options.prototype, "ariaActivedescendant", void 0);
|
108
|
+
__decorate([
|
109
|
+
property({ attribute: 'aria-labelledby', reflect: true, useDefault: true })
|
110
|
+
], Options.prototype, "ariaLabelledby", void 0);
|
111
|
+
__decorate([
|
112
|
+
property({ reflect: true })
|
113
|
+
], Options.prototype, "id", void 0);
|
114
|
+
__decorate([
|
115
|
+
property({ type: Boolean })
|
116
|
+
], Options.prototype, "privateLoading", void 0);
|
117
|
+
__decorate([
|
118
|
+
property({ reflect: true })
|
119
|
+
], Options.prototype, "role", void 0);
|
120
|
+
__decorate([
|
121
|
+
property({ attribute: 'tabindex', reflect: true, type: Number })
|
122
|
+
], Options.prototype, "tabIndex", void 0);
|
123
|
+
__decorate([
|
124
|
+
property({ reflect: true })
|
125
|
+
], Options.prototype, "version", void 0);
|
126
|
+
Options = __decorate([
|
127
|
+
customElement('glide-core-options'),
|
128
|
+
final
|
129
|
+
], Options);
|
130
|
+
export default Options;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { css } from 'lit';
|
2
|
+
import skeleton from './styles/skeleton.js';
|
3
|
+
export default [
|
4
|
+
css `
|
5
|
+
${skeleton('.loading-feedback')}
|
6
|
+
`,
|
7
|
+
css `
|
8
|
+
:host {
|
9
|
+
/*
|
10
|
+
So consumers don't have to or don't forget to set it when they set "max-block-size".
|
11
|
+
*/
|
12
|
+
display: block;
|
13
|
+
}
|
14
|
+
|
15
|
+
.default-slot {
|
16
|
+
&.loading {
|
17
|
+
display: none;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
`,
|
21
|
+
];
|