@ukic/web-components 3.15.0 → 3.17.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/cjs/core.cjs.js +1 -1
- package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-list.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-footer.cjs.entry.js +9 -5
- package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js +2 -2
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
- package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-pagination.cjs.entry.js +8 -4
- package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-option.cjs.entry.js +9 -6
- package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
- package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toast.cjs.entry.js +14 -6
- package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js +18 -3
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/ic-button/ic-button.stories.js +3 -3
- package/dist/collection/components/ic-checkbox/ic-checkbox.css +2 -0
- package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.stories.js +18 -18
- package/dist/collection/components/ic-data-list/ic-data-list.css +1 -0
- package/dist/collection/components/ic-data-row/ic-data-row.css +2 -0
- package/dist/collection/components/ic-footer/ic-footer.js +29 -5
- package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
- package/dist/collection/components/ic-footer/ic-footer.stories.js +31 -0
- package/dist/collection/components/ic-hero/ic-hero.css +0 -2
- package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +9 -0
- package/dist/collection/components/ic-input-validation/ic-input-validation.css +2 -1
- package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.stories.js +17 -18
- package/dist/collection/components/ic-menu/ic-menu.css +8 -0
- package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +12 -0
- package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +2 -7
- package/dist/collection/components/ic-pagination/ic-pagination.js +28 -4
- package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
- package/dist/collection/components/ic-pagination/ic-pagination.stories.js +5 -3
- package/dist/collection/components/ic-popover-menu/ic-popover-menu.stories.js +7 -7
- package/dist/collection/components/ic-radio-group/ic-radio-group.css +6 -6
- package/dist/collection/components/ic-radio-group/ic-radio-group.stories.js +12 -12
- package/dist/collection/components/ic-radio-option/ic-radio-option.css +60 -54
- package/dist/collection/components/ic-radio-option/ic-radio-option.js +9 -5
- package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
- package/dist/collection/components/ic-search-bar/ic-search-bar.css +8 -0
- package/dist/collection/components/ic-search-bar/ic-search-bar.stories.js +19 -19
- package/dist/collection/components/ic-select/ic-select_(multi).stories.js +20 -20
- package/dist/collection/components/ic-select/ic-select_(searchable).stories.js +21 -21
- package/dist/collection/components/ic-tab-context/ic-tabs.stories.js +1 -1
- package/dist/collection/components/ic-text-field/ic-text-field.stories.js +19 -19
- package/dist/collection/components/ic-toast/ic-toast.css +26 -1
- package/dist/collection/components/ic-toast/ic-toast.js +39 -5
- package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
- package/dist/collection/components/ic-toast/ic-toast.stories.js +21 -9
- package/dist/collection/components/ic-toggle-button/ic-toggle-button.stories.js +14 -14
- package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +52 -4
- package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js.map +1 -1
- package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.stories.js +7 -7
- package/dist/collection/components/ic-tooltip/ic-tooltip.stories.js +11 -11
- package/dist/collection/components/ic-top-navigation/ic-top-navigation.stories.js +15 -15
- package/dist/collection/components/ic-typography/ic-typography.stories.js +1 -1
- package/dist/collection/patterns/top-nav-content-footer.stories.js +1 -1
- package/dist/components/ic-checkbox.js.map +1 -1
- package/dist/components/ic-data-list.js.map +1 -1
- package/dist/components/ic-data-row.js.map +1 -1
- package/dist/components/ic-footer.js +10 -5
- package/dist/components/ic-footer.js.map +1 -1
- package/dist/components/ic-hero.js.map +1 -1
- package/dist/components/ic-input-component-container2.js +1 -1
- package/dist/components/ic-input-component-container2.js.map +1 -1
- package/dist/components/ic-input-validation2.js +1 -1
- package/dist/components/ic-input-validation2.js.map +1 -1
- package/dist/components/ic-menu2.js +1 -1
- package/dist/components/ic-menu2.js.map +1 -1
- package/dist/components/ic-navigation-group.js +1 -1
- package/dist/components/ic-navigation-group.js.map +1 -1
- package/dist/components/ic-navigation-item.js +1 -1
- package/dist/components/ic-navigation-item.js.map +1 -1
- package/dist/components/ic-pagination.js +9 -4
- package/dist/components/ic-pagination.js.map +1 -1
- package/dist/components/ic-popover-menu.js.map +1 -1
- package/dist/components/ic-radio-group.js +1 -1
- package/dist/components/ic-radio-group.js.map +1 -1
- package/dist/components/ic-radio-option.js +10 -7
- package/dist/components/ic-radio-option.js.map +1 -1
- package/dist/components/ic-search-bar.js +1 -1
- package/dist/components/ic-search-bar.js.map +1 -1
- package/dist/components/ic-side-navigation.js.map +1 -1
- package/dist/components/ic-skeleton.js.map +1 -1
- package/dist/components/ic-toast.js +15 -6
- package/dist/components/ic-toast.js.map +1 -1
- package/dist/components/ic-toggle-button-group.js +21 -4
- package/dist/components/ic-toggle-button-group.js.map +1 -1
- package/dist/core/core.css +28 -6
- package/dist/core/core.esm.js +1 -1
- package/dist/core/core.esm.js.map +1 -1
- package/dist/core/p-082e0068.entry.js +2 -0
- package/dist/core/p-082e0068.entry.js.map +1 -0
- package/dist/core/p-3238389a.entry.js +2 -0
- package/dist/core/p-3238389a.entry.js.map +1 -0
- package/dist/core/p-33e35173.entry.js.map +1 -1
- package/dist/core/p-3636be4f.entry.js +2 -0
- package/dist/core/p-3636be4f.entry.js.map +1 -0
- package/dist/core/p-52c66bfe.entry.js +2 -0
- package/dist/core/p-52c66bfe.entry.js.map +1 -0
- package/dist/core/p-6ed48c46.entry.js +2 -0
- package/dist/core/p-6ed48c46.entry.js.map +1 -0
- package/dist/core/p-8abcc114.entry.js.map +1 -1
- package/dist/core/p-9c52ee48.entry.js +2 -0
- package/dist/core/p-9c52ee48.entry.js.map +1 -0
- package/dist/core/p-afbba548.entry.js +2 -0
- package/dist/core/p-afbba548.entry.js.map +1 -0
- package/dist/core/p-b4a2f6fa.entry.js.map +1 -1
- package/dist/core/{p-0c4ceed9.entry.js → p-b59504f1.entry.js} +2 -2
- package/dist/core/p-b59504f1.entry.js.map +1 -0
- package/dist/core/p-b83a736d.entry.js +3 -0
- package/dist/core/p-b83a736d.entry.js.map +1 -0
- package/dist/core/{p-4bdeb62d.entry.js → p-bdda404b.entry.js} +2 -2
- package/dist/core/p-bdda404b.entry.js.map +1 -0
- package/dist/core/p-ca82850f.entry.js +2 -0
- package/dist/core/p-ca82850f.entry.js.map +1 -0
- package/dist/core/p-ffd0d9d1.entry.js.map +1 -1
- package/dist/esm/core.js +1 -1
- package/dist/esm/ic-checkbox.entry.js.map +1 -1
- package/dist/esm/ic-data-list.entry.js.map +1 -1
- package/dist/esm/ic-data-row.entry.js.map +1 -1
- package/dist/esm/ic-footer.entry.js +9 -5
- package/dist/esm/ic-footer.entry.js.map +1 -1
- package/dist/esm/ic-hero.entry.js.map +1 -1
- package/dist/esm/ic-input-component-container_3.entry.js +2 -2
- package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
- package/dist/esm/ic-input-label_2.entry.js +1 -1
- package/dist/esm/ic-input-label_2.entry.js.map +1 -1
- package/dist/esm/ic-navigation-group.entry.js +1 -1
- package/dist/esm/ic-navigation-group.entry.js.map +1 -1
- package/dist/esm/ic-navigation-item.entry.js +1 -1
- package/dist/esm/ic-navigation-item.entry.js.map +1 -1
- package/dist/esm/ic-pagination.entry.js +8 -4
- package/dist/esm/ic-pagination.entry.js.map +1 -1
- package/dist/esm/ic-radio-group.entry.js +1 -1
- package/dist/esm/ic-radio-group.entry.js.map +1 -1
- package/dist/esm/ic-radio-option.entry.js +9 -6
- package/dist/esm/ic-radio-option.entry.js.map +1 -1
- package/dist/esm/ic-search-bar.entry.js +1 -1
- package/dist/esm/ic-search-bar.entry.js.map +1 -1
- package/dist/esm/ic-toast.entry.js +14 -6
- package/dist/esm/ic-toast.entry.js.map +1 -1
- package/dist/esm/ic-toggle-button-group.entry.js +18 -3
- package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/ic-footer/ic-footer.d.ts +4 -0
- package/dist/types/components/ic-pagination/ic-pagination.d.ts +4 -0
- package/dist/types/components/ic-toast/ic-toast.d.ts +5 -1
- package/dist/types/components/ic-toggle-button-group/ic-toggle-button-group.d.ts +5 -0
- package/dist/types/components.d.ts +25 -0
- package/hydrate/index.js +72 -33
- package/hydrate/index.mjs +72 -33
- package/package.json +24 -24
- package/vscode-data.json +23 -0
- package/dist/core/p-042cfc35.entry.js +0 -2
- package/dist/core/p-042cfc35.entry.js.map +0 -1
- package/dist/core/p-06c950a3.entry.js +0 -2
- package/dist/core/p-06c950a3.entry.js.map +0 -1
- package/dist/core/p-0c4ceed9.entry.js.map +0 -1
- package/dist/core/p-11d8a504.entry.js +0 -3
- package/dist/core/p-11d8a504.entry.js.map +0 -1
- package/dist/core/p-14d43f64.entry.js +0 -2
- package/dist/core/p-14d43f64.entry.js.map +0 -1
- package/dist/core/p-3680f22c.entry.js +0 -2
- package/dist/core/p-3680f22c.entry.js.map +0 -1
- package/dist/core/p-4bdeb62d.entry.js.map +0 -1
- package/dist/core/p-762ea31a.entry.js +0 -2
- package/dist/core/p-762ea31a.entry.js.map +0 -1
- package/dist/core/p-a5415f6c.entry.js +0 -2
- package/dist/core/p-a5415f6c.entry.js.map +0 -1
- package/dist/core/p-b3cb1e35.entry.js +0 -2
- package/dist/core/p-b3cb1e35.entry.js.map +0 -1
- package/dist/core/p-e7af1e2d.entry.js +0 -2
- package/dist/core/p-e7af1e2d.entry.js.map +0 -1
|
@@ -482,6 +482,7 @@ video {
|
|
|
482
482
|
display: flex;
|
|
483
483
|
align-items: center;
|
|
484
484
|
position: relative;
|
|
485
|
+
border: var(--ic-space-1px) solid var(--ic-color-border-neutral-grey);
|
|
485
486
|
border-radius: var(--ic-border-radius);
|
|
486
487
|
}
|
|
487
488
|
|
|
@@ -491,11 +492,35 @@ video {
|
|
|
491
492
|
align-items: center;
|
|
492
493
|
}
|
|
493
494
|
|
|
495
|
+
.container-neutral {
|
|
496
|
+
border-color: var(--ic-toast-status-neutral);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
.container-info {
|
|
500
|
+
border-color: var(--ic-toast-status-info);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
.container-warning {
|
|
504
|
+
border-color: var(--ic-toast-status-warning);
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
.container-error {
|
|
508
|
+
border-color: var(--ic-toast-status-error);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
.container-success {
|
|
512
|
+
border-color: var(--ic-toast-status-success);
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
.container-ai {
|
|
516
|
+
border-color: var(--ic-toast-status-ai);
|
|
517
|
+
}
|
|
518
|
+
|
|
494
519
|
.divider {
|
|
495
520
|
height: 100%;
|
|
496
521
|
width: var(--ic-space-xs);
|
|
497
522
|
position: absolute;
|
|
498
|
-
border-radius:
|
|
523
|
+
border-radius: 0;
|
|
499
524
|
}
|
|
500
525
|
|
|
501
526
|
.divider-neutral {
|
|
@@ -14,6 +14,10 @@ export class Toast {
|
|
|
14
14
|
this.interactiveElements = [];
|
|
15
15
|
this.timerProgress = 100;
|
|
16
16
|
this.visible = false;
|
|
17
|
+
/**
|
|
18
|
+
* Sets the theme color to the dark or light theme color. "inherit" will set the color based on the system settings or ic-theme component.
|
|
19
|
+
*/
|
|
20
|
+
this.theme = "inherit";
|
|
17
21
|
/**
|
|
18
22
|
* If toast dismissMode is set to `automatic`, use this prop to define the time before the toast dismisses (in MILLISECONDS)
|
|
19
23
|
* (NOTE: Has a minimum value of `5000ms`)
|
|
@@ -201,17 +205,21 @@ export class Toast {
|
|
|
201
205
|
: document.activeElement === targetEl;
|
|
202
206
|
}
|
|
203
207
|
render() {
|
|
204
|
-
const { variant, heading, message, visible, isManual, dismissButtonAriaLabel, } = this;
|
|
205
|
-
return (h(Host, { key: '
|
|
208
|
+
const { variant, heading, message, visible, isManual, dismissButtonAriaLabel, theme, } = this;
|
|
209
|
+
return (h(Host, { key: '9934a16e3f339bec971138aec7d46092216d5554', class: {
|
|
210
|
+
[`ic-theme-${theme}`]: theme !== "inherit",
|
|
206
211
|
["ic-toast-hidden"]: !visible,
|
|
207
212
|
[`ic-toast-variant-${variant}`]: variant !== undefined,
|
|
208
|
-
}, tabindex: "0", onFocus: this.onFocus, onBlur: this.onBlur, role: isManual ? "dialog" : "alert", "aria-live": isManual ? null : "polite" }, h("div", { key: '
|
|
213
|
+
}, tabindex: "0", onFocus: this.onFocus, onBlur: this.onBlur, role: isManual ? "dialog" : "alert", "aria-live": isManual ? null : "polite" }, h("div", { key: '97a03d41017adf58f826e42291906b3225ab091c', class: {
|
|
214
|
+
["container"]: true,
|
|
215
|
+
[`container-${variant}`]: variant !== undefined,
|
|
216
|
+
} }, variant && visible && (h("div", { key: '289b4544bee27fd02b20deae22b5bbb822844c9e', class: "toast-icon-container" }, h("div", { key: '03dae21944b95c1d96e2a6b2480b0c20e12ccbd7', class: {
|
|
209
217
|
["divider"]: true,
|
|
210
218
|
[`divider-${variant}`]: true,
|
|
211
|
-
} }), variant === "neutral" ? (h("slot", { name: "neutral-icon" })) : (h("span", { class: "toast-icon", innerHTML: VARIANT_ICONS[variant].icon })))), h("div", { key: '
|
|
219
|
+
} }), variant === "neutral" ? (h("slot", { name: "neutral-icon" })) : (h("span", { class: "toast-icon", innerHTML: VARIANT_ICONS[variant].icon })))), h("div", { key: '6191a3f5c39adfa8c5ab4ca5c9e35fd214e00fa2', class: {
|
|
212
220
|
["toast-content"]: true,
|
|
213
221
|
["no-icon"]: variant === "neutral" && !isSlotUsed(this.el, "neutral-icon"),
|
|
214
|
-
} }, h("div", { key: '
|
|
222
|
+
} }, h("div", { key: '1e08fbbfa2ba920c1b90f2eaf35aa801830d47b0', class: "toast-text" }, h("ic-typography", { key: 'ebc61cb12c3bdd05511ae567d09f5504ad010c47', variant: "subtitle-large", class: "toast-heading" }, visible && (isManual ? h("h5", null, heading) : h("p", null, heading))), message && (h("ic-typography", { key: '48ffe5377a09237ac490c8d4a62e962979ce6dc0', variant: "body", class: "toast-message" }, visible && h("p", { key: '7fbffa0f6e6d30389a9d0e5a3b5e1c279911ed9a' }, message)))), isSlotUsed(this.el, "action") && (h("div", { key: '83ba75d3d7aa54caf13cc7723defee623103dffc', class: "toast-action-container" }, h("slot", { key: '18367dd5f8acdc33129ead64728abc71a82f7e57', name: "action" })))), !isManual ? (h("ic-loading-indicator", { class: "toast-dismiss-timer", theme: "dark", monochrome: true, size: "icon", progress: this.timerProgress, description: "Dismiss timer" })) : (h("ic-button", { id: "dismiss-button", innerHTML: closeIcon, onClick: this.dismissAction, variant: "icon-tertiary", "aria-label": dismissButtonAriaLabel })))));
|
|
215
223
|
}
|
|
216
224
|
static get is() { return "ic-toast"; }
|
|
217
225
|
static get encapsulation() { return "shadow"; }
|
|
@@ -227,6 +235,32 @@ export class Toast {
|
|
|
227
235
|
}
|
|
228
236
|
static get properties() {
|
|
229
237
|
return {
|
|
238
|
+
"theme": {
|
|
239
|
+
"type": "string",
|
|
240
|
+
"mutable": false,
|
|
241
|
+
"complexType": {
|
|
242
|
+
"original": "IcThemeMode",
|
|
243
|
+
"resolved": "\"dark\" | \"inherit\" | \"light\"",
|
|
244
|
+
"references": {
|
|
245
|
+
"IcThemeMode": {
|
|
246
|
+
"location": "import",
|
|
247
|
+
"path": "../../utils/types",
|
|
248
|
+
"id": "src/utils/types.ts::IcThemeMode"
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
"required": false,
|
|
253
|
+
"optional": false,
|
|
254
|
+
"docs": {
|
|
255
|
+
"tags": [],
|
|
256
|
+
"text": "Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component."
|
|
257
|
+
},
|
|
258
|
+
"getter": false,
|
|
259
|
+
"setter": false,
|
|
260
|
+
"attribute": "theme",
|
|
261
|
+
"reflect": false,
|
|
262
|
+
"defaultValue": "\"inherit\""
|
|
263
|
+
},
|
|
230
264
|
"autoDismissTimeout": {
|
|
231
265
|
"type": "number",
|
|
232
266
|
"mutable": true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ic-toast.js","sourceRoot":"","sources":["../../../src/components/ic-toast/ic-toast.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport { VARIANT_ICONS } from \"../../utils/constants\";\nimport {\n getSlot,\n isPropDefined,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IcActivationTypes, IcStatusVariants } from \"../../utils/types\";\nimport { ActionAreaElementTypes } from \"./ic-toast.types\";\n\nconst AUTO_DISMISS_TIMER_REFRESH_RATE_MS = 1000;\nconst TOAST_HEADING_CHAR_LIMIT = 70;\nconst TOAST_MESSAGE_CHAR_LIMIT = 140;\n\n/**\n * @slot action - IcButton or IcLink is placed below header and message. If used will default toast to manual `dismiss` type.\n * @slot neutral-icon - A custom neutral icon is placed on the left side of the component. If used will default toast to `neutral` variant.\n */\n@Component({\n tag: \"ic-toast\",\n styleUrl: \"ic-toast.css\",\n shadow: true,\n})\nexport class Toast {\n private dismissTimeout: number;\n private interactiveElements: ActionAreaElementTypes[] = [];\n private neutralVariantLabel: string;\n private timerRefreshInterval: number;\n private focusInteractiveElement: boolean;\n private shiftKeyPressed: boolean;\n\n @Element() el: HTMLIcToastElement;\n\n @State() isManual: boolean;\n @State() timerProgress = 100;\n @State() visible = false;\n\n /**\n * If toast dismissMode is set to `automatic`, use this prop to define the time before the toast dismisses (in MILLISECONDS)\n * (NOTE: Has a minimum value of `5000ms`)\n */\n @Prop({ mutable: true }) autoDismissTimeout? = 5000;\n\n /**\n * If toast can be manually dismissed, this prop sets a custom aria-label for the ic-button component\n */\n @Prop() dismissButtonAriaLabel? = \"dismiss\";\n\n /**\n * How the toast will be dismissed. If manual will display a dismiss button.\n */\n @Prop({ mutable: true }) dismissMode?: IcActivationTypes = \"manual\";\n @Watch(\"dismissMode\")\n dismissModeChangeHandler(newValue: IcActivationTypes): void {\n this.isManual = newValue === \"manual\";\n }\n\n /**\n * The title to display at the start of the toast. (NOTE: Should be no more than `70` characters)\n */\n @Prop() heading!: string;\n\n /**\n * The main body message of the toast. (NOTE: Should be no more than `140` characters)\n */\n @Prop() message?: string;\n\n /**\n * Provides a custom alt-text to be announced to screen readers, if slotting a custom neutral icon\n */\n @Prop() neutralIconAriaLabel?: string;\n\n /**\n * The variant of the toast being rendered\n */\n @Prop({ mutable: true }) variant?: IcStatusVariants;\n\n /**\n * Is emitted when the user dismisses the toast\n */\n @Event() icDismiss: EventEmitter<void>;\n\n disconnectedCallback(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n }\n\n componentWillLoad(): void {\n this.handleLongText(\n this.heading.length > TOAST_HEADING_CHAR_LIMIT,\n !!this.message && this.message?.length > TOAST_MESSAGE_CHAR_LIMIT\n );\n\n if (this.autoDismissTimeout! < 5000) this.autoDismissTimeout = 5000;\n\n if (isSlotUsed(this.el, \"action\")) this.dismissMode = \"manual\";\n this.isManual = this.dismissMode === \"manual\";\n\n if (isSlotUsed(this.el, \"neutral-icon\")) this.variant = \"neutral\";\n if (this.variant === \"neutral\") {\n this.neutralVariantLabel =\n this.neutralIconAriaLabel ?? VARIANT_ICONS[this.variant].ariaLabel;\n }\n\n if (this.isManual) {\n const toastMessage: string = isPropDefined(this.message)\n ? `. ${this.message}`\n : \"\";\n this.el.setAttribute(\n \"aria-label\",\n this.variant\n ? this.neutralVariantLabel || VARIANT_ICONS[this.variant].ariaLabel\n : this.heading\n );\n (this.variant || this.message) &&\n this.el.setAttribute(\n \"aria-description\",\n this.variant ? `${this.heading}${toastMessage}` : this.message || \"\"\n );\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Toast\"\n );\n }\n\n componentDidUpdate(): void {\n if (this.focusInteractiveElement && this.isManual) {\n this.resetAutoDismissTimer();\n\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot?.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n\n this.focusInteractiveElement = false;\n this.findNextInteractiveElement(this.shiftKeyPressed).setFocus();\n this.shiftKeyPressed = false;\n }\n }\n\n @Watch(\"visible\")\n watchVisibleHandler(): void {\n if (this.visible) {\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot?.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n } else {\n this.interactiveElements = [];\n }\n }\n\n @Listen(\"icDismiss\", { capture: true })\n handleDismiss(): void {\n this.visible = false;\n this.resetAutoDismissTimer();\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyboard(ev: KeyboardEvent): void {\n if (this.visible) {\n if (this.isManual) {\n switch (ev.key) {\n case \"Tab\":\n ev.preventDefault();\n this.findNextInteractiveElement(ev.shiftKey).setFocus();\n break;\n case \"Escape\":\n !ev.repeat && this.dismissAction();\n ev.stopImmediatePropagation();\n break;\n }\n } else {\n if (ev.key === \"Tab\") {\n this.shiftKeyPressed = ev.shiftKey;\n this.focusInteractiveElement = true;\n }\n }\n }\n }\n\n @Listen(\"mouseenter\")\n @Listen(\"mouseleave\")\n handleTimer(ev: MouseEvent): void {\n switch (ev.type) {\n case \"mouseenter\":\n if (!this.isManual) {\n this.resetAutoDismissTimer();\n }\n this.isManual = true;\n break;\n case \"mouseleave\":\n if (this.dismissMode === \"automatic\") {\n this.isManual = false;\n this.interactiveElements = [];\n if (this.visible) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n }\n }\n break;\n }\n }\n\n /**\n * @internal Used to display the individual toast.\n * @returns The element that previously had focus before the toast appeared\n */\n @Method()\n async setVisible(): Promise<HTMLElement | null> {\n if (!this.visible) this.visible = true;\n if (!this.isManual) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n return null;\n } else {\n window.setTimeout(() => this.interactiveElements[0].setFocus(), 200);\n return document.activeElement as HTMLElement;\n }\n }\n\n private dismissAction = (): void => {\n this.icDismiss.emit();\n };\n\n private handleProgressChange = () => {\n this.timerProgress -=\n (AUTO_DISMISS_TIMER_REFRESH_RATE_MS / this.autoDismissTimeout!) * 100;\n };\n\n private handleLongText(\n headingTooLong: boolean,\n messageTooLong?: boolean\n ): void {\n if (messageTooLong || headingTooLong) {\n console.error(\n `Too many characters in toast ${headingTooLong ? \"heading\" : \"\"}${\n headingTooLong && messageTooLong ? \" and \" : \"\"\n }${\n messageTooLong ? \"message\" : \"\"\n }. Refer to character limits specified in the prop description`\n );\n }\n }\n\n private findNextInteractiveElement(\n isBackwards: boolean\n ): ActionAreaElementTypes {\n const firstEl = this.interactiveElements[0];\n const lastEl =\n this.interactiveElements[this.interactiveElements.length - 1];\n\n if (this.isActive(isBackwards ? firstEl : lastEl))\n return isBackwards ? lastEl : firstEl;\n\n let currentIndex = 0;\n\n return this.interactiveElements.some((el, index) => {\n if (!this.isActive(el)) return false;\n currentIndex = index;\n return true;\n })\n ? this.interactiveElements[currentIndex + (isBackwards ? -1 : 1)]\n : firstEl;\n }\n\n private resetAutoDismissTimer(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n this.timerProgress = 100;\n }\n\n private isActive(targetEl: HTMLElement): boolean {\n return targetEl === this.el\n ? !!this.el.shadowRoot!.activeElement\n : document.activeElement === targetEl;\n }\n\n private onFocus = (): void => {\n if (this.focusInteractiveElement) {\n this.isManual = true;\n }\n };\n\n private onBlur = (): void => {\n this.handleTimer({ type: \"mouseleave\" } as MouseEvent);\n };\n\n render() {\n const {\n variant,\n heading,\n message,\n visible,\n isManual,\n dismissButtonAriaLabel,\n } = this;\n return (\n <Host\n class={{\n [\"ic-toast-hidden\"]: !visible,\n [`ic-toast-variant-${variant}`]: variant !== undefined,\n }}\n tabindex=\"0\"\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n role={isManual ? \"dialog\" : \"alert\"}\n aria-live={isManual ? null : \"polite\"}\n >\n <div class=\"container\">\n {variant && visible && (\n <div class=\"toast-icon-container\">\n <div\n class={{\n [\"divider\"]: true,\n [`divider-${variant}`]: true,\n }}\n ></div>\n {variant === \"neutral\" ? (\n <slot name=\"neutral-icon\" />\n ) : (\n <span\n class=\"toast-icon\"\n innerHTML={VARIANT_ICONS[variant].icon}\n ></span>\n )}\n </div>\n )}\n <div\n class={{\n [\"toast-content\"]: true,\n [\"no-icon\"]:\n variant === \"neutral\" && !isSlotUsed(this.el, \"neutral-icon\"),\n }}\n >\n <div class=\"toast-text\">\n <ic-typography variant=\"subtitle-large\" class=\"toast-heading\">\n {visible && (isManual ? <h5>{heading}</h5> : <p>{heading}</p>)}\n </ic-typography>\n {message && (\n <ic-typography variant=\"body\" class=\"toast-message\">\n {visible && <p>{message}</p>}\n </ic-typography>\n )}\n </div>\n {isSlotUsed(this.el, \"action\") && (\n <div class=\"toast-action-container\">\n <slot name=\"action\" />\n </div>\n )}\n </div>\n {!isManual ? (\n <ic-loading-indicator\n class=\"toast-dismiss-timer\"\n theme=\"dark\"\n monochrome\n size=\"icon\"\n progress={this.timerProgress}\n description=\"Dismiss timer\"\n ></ic-loading-indicator>\n ) : (\n <ic-button\n id=\"dismiss-button\"\n innerHTML={closeIcon}\n onClick={this.dismissAction}\n variant=\"icon-tertiary\"\n aria-label={dismissButtonAriaLabel}\n ></ic-button>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ic-toast.js","sourceRoot":"","sources":["../../../src/components/ic-toast/ic-toast.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport { VARIANT_ICONS } from \"../../utils/constants\";\nimport {\n getSlot,\n isPropDefined,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport {\n IcActivationTypes,\n IcStatusVariants,\n IcThemeMode,\n} from \"../../utils/types\";\nimport { ActionAreaElementTypes } from \"./ic-toast.types\";\n\nconst AUTO_DISMISS_TIMER_REFRESH_RATE_MS = 1000;\nconst TOAST_HEADING_CHAR_LIMIT = 70;\nconst TOAST_MESSAGE_CHAR_LIMIT = 140;\n\n/**\n * @slot action - IcButton or IcLink is placed below header and message. If used will default toast to manual `dismiss` type.\n * @slot neutral-icon - A custom neutral icon is placed on the left side of the component. If used will default toast to `neutral` variant.\n */\n@Component({\n tag: \"ic-toast\",\n styleUrl: \"ic-toast.css\",\n shadow: true,\n})\nexport class Toast {\n private dismissTimeout: number;\n private interactiveElements: ActionAreaElementTypes[] = [];\n private neutralVariantLabel: string;\n private timerRefreshInterval: number;\n private focusInteractiveElement: boolean;\n private shiftKeyPressed: boolean;\n\n @Element() el: HTMLIcToastElement;\n\n @State() isManual: boolean;\n @State() timerProgress = 100;\n @State() visible = false;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * If toast dismissMode is set to `automatic`, use this prop to define the time before the toast dismisses (in MILLISECONDS)\n * (NOTE: Has a minimum value of `5000ms`)\n */\n @Prop({ mutable: true }) autoDismissTimeout? = 5000;\n\n /**\n * If toast can be manually dismissed, this prop sets a custom aria-label for the ic-button component\n */\n @Prop() dismissButtonAriaLabel? = \"dismiss\";\n\n /**\n * How the toast will be dismissed. If manual will display a dismiss button.\n */\n @Prop({ mutable: true }) dismissMode?: IcActivationTypes = \"manual\";\n @Watch(\"dismissMode\")\n dismissModeChangeHandler(newValue: IcActivationTypes): void {\n this.isManual = newValue === \"manual\";\n }\n\n /**\n * The title to display at the start of the toast. (NOTE: Should be no more than `70` characters)\n */\n @Prop() heading!: string;\n\n /**\n * The main body message of the toast. (NOTE: Should be no more than `140` characters)\n */\n @Prop() message?: string;\n\n /**\n * Provides a custom alt-text to be announced to screen readers, if slotting a custom neutral icon\n */\n @Prop() neutralIconAriaLabel?: string;\n\n /**\n * The variant of the toast being rendered\n */\n @Prop({ mutable: true }) variant?: IcStatusVariants;\n\n /**\n * Is emitted when the user dismisses the toast\n */\n @Event() icDismiss: EventEmitter<void>;\n\n disconnectedCallback(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n }\n\n componentWillLoad(): void {\n this.handleLongText(\n this.heading.length > TOAST_HEADING_CHAR_LIMIT,\n !!this.message && this.message?.length > TOAST_MESSAGE_CHAR_LIMIT\n );\n\n if (this.autoDismissTimeout! < 5000) this.autoDismissTimeout = 5000;\n\n if (isSlotUsed(this.el, \"action\")) this.dismissMode = \"manual\";\n this.isManual = this.dismissMode === \"manual\";\n\n if (isSlotUsed(this.el, \"neutral-icon\")) this.variant = \"neutral\";\n if (this.variant === \"neutral\") {\n this.neutralVariantLabel =\n this.neutralIconAriaLabel ?? VARIANT_ICONS[this.variant].ariaLabel;\n }\n\n if (this.isManual) {\n const toastMessage: string = isPropDefined(this.message)\n ? `. ${this.message}`\n : \"\";\n this.el.setAttribute(\n \"aria-label\",\n this.variant\n ? this.neutralVariantLabel || VARIANT_ICONS[this.variant].ariaLabel\n : this.heading\n );\n (this.variant || this.message) &&\n this.el.setAttribute(\n \"aria-description\",\n this.variant ? `${this.heading}${toastMessage}` : this.message || \"\"\n );\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Toast\"\n );\n }\n\n componentDidUpdate(): void {\n if (this.focusInteractiveElement && this.isManual) {\n this.resetAutoDismissTimer();\n\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot?.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n\n this.focusInteractiveElement = false;\n this.findNextInteractiveElement(this.shiftKeyPressed).setFocus();\n this.shiftKeyPressed = false;\n }\n }\n\n @Watch(\"visible\")\n watchVisibleHandler(): void {\n if (this.visible) {\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot?.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n } else {\n this.interactiveElements = [];\n }\n }\n\n @Listen(\"icDismiss\", { capture: true })\n handleDismiss(): void {\n this.visible = false;\n this.resetAutoDismissTimer();\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyboard(ev: KeyboardEvent): void {\n if (this.visible) {\n if (this.isManual) {\n switch (ev.key) {\n case \"Tab\":\n ev.preventDefault();\n this.findNextInteractiveElement(ev.shiftKey).setFocus();\n break;\n case \"Escape\":\n !ev.repeat && this.dismissAction();\n ev.stopImmediatePropagation();\n break;\n }\n } else {\n if (ev.key === \"Tab\") {\n this.shiftKeyPressed = ev.shiftKey;\n this.focusInteractiveElement = true;\n }\n }\n }\n }\n\n @Listen(\"mouseenter\")\n @Listen(\"mouseleave\")\n handleTimer(ev: MouseEvent): void {\n switch (ev.type) {\n case \"mouseenter\":\n if (!this.isManual) {\n this.resetAutoDismissTimer();\n }\n this.isManual = true;\n break;\n case \"mouseleave\":\n if (this.dismissMode === \"automatic\") {\n this.isManual = false;\n this.interactiveElements = [];\n if (this.visible) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n }\n }\n break;\n }\n }\n\n /**\n * @internal Used to display the individual toast.\n * @returns The element that previously had focus before the toast appeared\n */\n @Method()\n async setVisible(): Promise<HTMLElement | null> {\n if (!this.visible) this.visible = true;\n if (!this.isManual) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n return null;\n } else {\n window.setTimeout(() => this.interactiveElements[0].setFocus(), 200);\n return document.activeElement as HTMLElement;\n }\n }\n\n private dismissAction = (): void => {\n this.icDismiss.emit();\n };\n\n private handleProgressChange = () => {\n this.timerProgress -=\n (AUTO_DISMISS_TIMER_REFRESH_RATE_MS / this.autoDismissTimeout!) * 100;\n };\n\n private handleLongText(\n headingTooLong: boolean,\n messageTooLong?: boolean\n ): void {\n if (messageTooLong || headingTooLong) {\n console.error(\n `Too many characters in toast ${headingTooLong ? \"heading\" : \"\"}${\n headingTooLong && messageTooLong ? \" and \" : \"\"\n }${\n messageTooLong ? \"message\" : \"\"\n }. Refer to character limits specified in the prop description`\n );\n }\n }\n\n private findNextInteractiveElement(\n isBackwards: boolean\n ): ActionAreaElementTypes {\n const firstEl = this.interactiveElements[0];\n const lastEl =\n this.interactiveElements[this.interactiveElements.length - 1];\n\n if (this.isActive(isBackwards ? firstEl : lastEl))\n return isBackwards ? lastEl : firstEl;\n\n let currentIndex = 0;\n\n return this.interactiveElements.some((el, index) => {\n if (!this.isActive(el)) return false;\n currentIndex = index;\n return true;\n })\n ? this.interactiveElements[currentIndex + (isBackwards ? -1 : 1)]\n : firstEl;\n }\n\n private resetAutoDismissTimer(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n this.timerProgress = 100;\n }\n\n private isActive(targetEl: HTMLElement): boolean {\n return targetEl === this.el\n ? !!this.el.shadowRoot!.activeElement\n : document.activeElement === targetEl;\n }\n\n private onFocus = (): void => {\n if (this.focusInteractiveElement) {\n this.isManual = true;\n }\n };\n\n private onBlur = (): void => {\n this.handleTimer({ type: \"mouseleave\" } as MouseEvent);\n };\n\n render() {\n const {\n variant,\n heading,\n message,\n visible,\n isManual,\n dismissButtonAriaLabel,\n theme,\n } = this;\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-toast-hidden\"]: !visible,\n [`ic-toast-variant-${variant}`]: variant !== undefined,\n }}\n tabindex=\"0\"\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n role={isManual ? \"dialog\" : \"alert\"}\n aria-live={isManual ? null : \"polite\"}\n >\n <div\n class={{\n [\"container\"]: true,\n [`container-${variant}`]: variant !== undefined,\n }}\n >\n {variant && visible && (\n <div class=\"toast-icon-container\">\n <div\n class={{\n [\"divider\"]: true,\n [`divider-${variant}`]: true,\n }}\n ></div>\n {variant === \"neutral\" ? (\n <slot name=\"neutral-icon\" />\n ) : (\n <span\n class=\"toast-icon\"\n innerHTML={VARIANT_ICONS[variant].icon}\n ></span>\n )}\n </div>\n )}\n <div\n class={{\n [\"toast-content\"]: true,\n [\"no-icon\"]:\n variant === \"neutral\" && !isSlotUsed(this.el, \"neutral-icon\"),\n }}\n >\n <div class=\"toast-text\">\n <ic-typography variant=\"subtitle-large\" class=\"toast-heading\">\n {visible && (isManual ? <h5>{heading}</h5> : <p>{heading}</p>)}\n </ic-typography>\n {message && (\n <ic-typography variant=\"body\" class=\"toast-message\">\n {visible && <p>{message}</p>}\n </ic-typography>\n )}\n </div>\n {isSlotUsed(this.el, \"action\") && (\n <div class=\"toast-action-container\">\n <slot name=\"action\" />\n </div>\n )}\n </div>\n {!isManual ? (\n <ic-loading-indicator\n class=\"toast-dismiss-timer\"\n theme=\"dark\"\n monochrome\n size=\"icon\"\n progress={this.timerProgress}\n description=\"Dismiss timer\"\n ></ic-loading-indicator>\n ) : (\n <ic-button\n id=\"dismiss-button\"\n innerHTML={closeIcon}\n onClick={this.dismissAction}\n variant=\"icon-tertiary\"\n aria-label={dismissButtonAriaLabel}\n ></ic-button>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -10,6 +10,7 @@ const defaultArgs = {
|
|
|
10
10
|
variant: "neutral",
|
|
11
11
|
actionSlot: "action",
|
|
12
12
|
neutralIconSlot: "neutral-icon",
|
|
13
|
+
theme: "inherit",
|
|
13
14
|
};
|
|
14
15
|
|
|
15
16
|
export default {
|
|
@@ -18,7 +19,7 @@ export default {
|
|
|
18
19
|
};
|
|
19
20
|
|
|
20
21
|
export const Default = {
|
|
21
|
-
render: (
|
|
22
|
+
render: () =>
|
|
22
23
|
html`<button onclick="func()">Display toast</button>
|
|
23
24
|
<script>
|
|
24
25
|
var toastRegion = document.querySelector("ic-toast-region");
|
|
@@ -35,7 +36,7 @@ export const Default = {
|
|
|
35
36
|
};
|
|
36
37
|
|
|
37
38
|
export const WithVariant = {
|
|
38
|
-
render: (
|
|
39
|
+
render: () =>
|
|
39
40
|
html`<button onclick="func()">Display toast</button>
|
|
40
41
|
<script>
|
|
41
42
|
var toastRegion = document.querySelector("ic-toast-region");
|
|
@@ -57,7 +58,7 @@ export const WithVariant = {
|
|
|
57
58
|
};
|
|
58
59
|
|
|
59
60
|
export const MultilineMessage = {
|
|
60
|
-
render: (
|
|
61
|
+
render: () =>
|
|
61
62
|
html`<button onclick="func()">Display toast</button>
|
|
62
63
|
<script>
|
|
63
64
|
var toastRegion = document.querySelector("ic-toast-region");
|
|
@@ -78,7 +79,7 @@ export const MultilineMessage = {
|
|
|
78
79
|
};
|
|
79
80
|
|
|
80
81
|
export const SlottedActionElements = {
|
|
81
|
-
render: (
|
|
82
|
+
render: () =>
|
|
82
83
|
html`<button onclick="func()">Display toast 1</button>
|
|
83
84
|
<button onclick="func2()">Display toast 2</button>
|
|
84
85
|
<script>
|
|
@@ -115,7 +116,7 @@ export const SlottedActionElements = {
|
|
|
115
116
|
};
|
|
116
117
|
|
|
117
118
|
export const AutoDismiss = {
|
|
118
|
-
render: (
|
|
119
|
+
render: () =>
|
|
119
120
|
html`<button onclick="func()">Display toast 1</button>
|
|
120
121
|
<button onclick="func2()">Display toast 2</button>
|
|
121
122
|
<script>
|
|
@@ -152,7 +153,7 @@ export const AutoDismiss = {
|
|
|
152
153
|
};
|
|
153
154
|
|
|
154
155
|
export const CustomNeutralIconAndDismissAriaLabel = {
|
|
155
|
-
render: (
|
|
156
|
+
render: () =>
|
|
156
157
|
html`<button onclick="func()">Display toast</button>
|
|
157
158
|
<script>
|
|
158
159
|
var toastRegion = document.querySelector("ic-toast-region");
|
|
@@ -188,7 +189,7 @@ export const CustomNeutralIconAndDismissAriaLabel = {
|
|
|
188
189
|
};
|
|
189
190
|
|
|
190
191
|
export const ExampleOnPage = {
|
|
191
|
-
render: (
|
|
192
|
+
render: () =>
|
|
192
193
|
html` <script>
|
|
193
194
|
var toastRegion = document.querySelector("ic-toast-region");
|
|
194
195
|
function func() {
|
|
@@ -317,6 +318,8 @@ export const ExampleOnPage = {
|
|
|
317
318
|
name: "Example on page",
|
|
318
319
|
};
|
|
319
320
|
|
|
321
|
+
const inlineRadioSelector = "inline-radio";
|
|
322
|
+
|
|
320
323
|
export const Playground = {
|
|
321
324
|
render: (args) =>
|
|
322
325
|
html`<button onclick="func()">Display toast</button>
|
|
@@ -337,6 +340,7 @@ export const Playground = {
|
|
|
337
340
|
auto-dismiss-timeout=${args.autoDismissTimeout}
|
|
338
341
|
neutral-icon-aria-label=${args.neutralIconAriaLabel}
|
|
339
342
|
dismiss-button-aria-label=${args.dismissButtonAriaLabel}
|
|
343
|
+
theme=${args.theme}
|
|
340
344
|
>
|
|
341
345
|
<ic-button slot=${args.actionSlot} appearance="light"
|
|
342
346
|
>Click me</ic-button
|
|
@@ -363,7 +367,7 @@ export const Playground = {
|
|
|
363
367
|
options: ["manual", "automatic"],
|
|
364
368
|
|
|
365
369
|
control: {
|
|
366
|
-
type:
|
|
370
|
+
type: inlineRadioSelector,
|
|
367
371
|
},
|
|
368
372
|
},
|
|
369
373
|
|
|
@@ -371,7 +375,7 @@ export const Playground = {
|
|
|
371
375
|
options: ["neutral", "info", "warning", "error", "success", "ai", ""],
|
|
372
376
|
|
|
373
377
|
control: {
|
|
374
|
-
type:
|
|
378
|
+
type: inlineRadioSelector,
|
|
375
379
|
},
|
|
376
380
|
},
|
|
377
381
|
|
|
@@ -390,6 +394,14 @@ export const Playground = {
|
|
|
390
394
|
type: "select",
|
|
391
395
|
},
|
|
392
396
|
},
|
|
397
|
+
|
|
398
|
+
theme: {
|
|
399
|
+
options: ["inherit", "light", "dark"],
|
|
400
|
+
|
|
401
|
+
control: {
|
|
402
|
+
type: inlineRadioSelector,
|
|
403
|
+
},
|
|
404
|
+
},
|
|
393
405
|
},
|
|
394
406
|
|
|
395
407
|
name: "Playground",
|
|
@@ -50,7 +50,7 @@ const defaultIconArgs = {
|
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
export const Default = {
|
|
53
|
-
render: (
|
|
53
|
+
render: () =>
|
|
54
54
|
html`<ic-toggle-button label="Toggle"></ic-toggle-button>
|
|
55
55
|
<script>
|
|
56
56
|
var toggle = document.querySelector("ic-toggle-button");
|
|
@@ -63,13 +63,13 @@ export const Default = {
|
|
|
63
63
|
};
|
|
64
64
|
|
|
65
65
|
export const Checked = {
|
|
66
|
-
render: (
|
|
66
|
+
render: () =>
|
|
67
67
|
html`<ic-toggle-button label="Toggle" checked="true"></ic-toggle-button>`,
|
|
68
68
|
name: "Checked",
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
export const Disabled = {
|
|
72
|
-
render: (
|
|
72
|
+
render: () =>
|
|
73
73
|
html`<ic-toggle-button label="Toggle" disabled="true"></ic-toggle-button>
|
|
74
74
|
<ic-toggle-button
|
|
75
75
|
label="Toggle"
|
|
@@ -81,7 +81,7 @@ export const Disabled = {
|
|
|
81
81
|
};
|
|
82
82
|
|
|
83
83
|
export const WithIcon = {
|
|
84
|
-
render: (
|
|
84
|
+
render: () =>
|
|
85
85
|
html`<ic-toggle-button label="Toggle">
|
|
86
86
|
<svg
|
|
87
87
|
slot="icon"
|
|
@@ -102,7 +102,7 @@ export const WithIcon = {
|
|
|
102
102
|
};
|
|
103
103
|
|
|
104
104
|
export const Sizes = {
|
|
105
|
-
render: (
|
|
105
|
+
render: () =>
|
|
106
106
|
html`<div style="padding: 6px">
|
|
107
107
|
<ic-toggle-button label="Toggle" size="small"></ic-toggle-button>
|
|
108
108
|
</div>
|
|
@@ -117,7 +117,7 @@ export const Sizes = {
|
|
|
117
117
|
};
|
|
118
118
|
|
|
119
119
|
export const WithBadge = {
|
|
120
|
-
render: (
|
|
120
|
+
render: () =>
|
|
121
121
|
html`<ic-toggle-button label="Toggle">
|
|
122
122
|
<ic-badge label="1" slot="badge" variant="success"></ic-badge>
|
|
123
123
|
</ic-toggle-button>
|
|
@@ -129,7 +129,7 @@ export const WithBadge = {
|
|
|
129
129
|
};
|
|
130
130
|
|
|
131
131
|
export const Monochrome = {
|
|
132
|
-
render: (
|
|
132
|
+
render: () =>
|
|
133
133
|
html`<ic-toggle-button
|
|
134
134
|
label="Toggle"
|
|
135
135
|
monochrome="true"
|
|
@@ -139,7 +139,7 @@ export const Monochrome = {
|
|
|
139
139
|
};
|
|
140
140
|
|
|
141
141
|
export const FullWidth = {
|
|
142
|
-
render: (
|
|
142
|
+
render: () =>
|
|
143
143
|
html`<ic-toggle-button
|
|
144
144
|
label="Toggle"
|
|
145
145
|
full-width="true"
|
|
@@ -149,7 +149,7 @@ export const FullWidth = {
|
|
|
149
149
|
};
|
|
150
150
|
|
|
151
151
|
export const Loading = {
|
|
152
|
-
render: (
|
|
152
|
+
render: () =>
|
|
153
153
|
html`<div style="padding: 6px">
|
|
154
154
|
<ic-toggle-button label="Toggle" loading="true"></ic-toggle-button>
|
|
155
155
|
<ic-toggle-button
|
|
@@ -252,7 +252,7 @@ export const Loading = {
|
|
|
252
252
|
};
|
|
253
253
|
|
|
254
254
|
export const IconOnly = {
|
|
255
|
-
render: (
|
|
255
|
+
render: () =>
|
|
256
256
|
html`<div style="padding:6px 10px; width:fit-content">
|
|
257
257
|
<ic-toggle-button
|
|
258
258
|
variant="icon"
|
|
@@ -367,7 +367,7 @@ export const IconOnly = {
|
|
|
367
367
|
};
|
|
368
368
|
|
|
369
369
|
export const IconRight = {
|
|
370
|
-
render: (
|
|
370
|
+
render: () =>
|
|
371
371
|
html`<ic-toggle-button label="Toggle" icon-placement="right">
|
|
372
372
|
<svg
|
|
373
373
|
slot="icon"
|
|
@@ -388,7 +388,7 @@ export const IconRight = {
|
|
|
388
388
|
};
|
|
389
389
|
|
|
390
390
|
export const IconTop = {
|
|
391
|
-
render: (
|
|
391
|
+
render: () =>
|
|
392
392
|
html`<ic-toggle-button label="Toggle" icon-placement="top">
|
|
393
393
|
<svg
|
|
394
394
|
slot="icon"
|
|
@@ -409,7 +409,7 @@ export const IconTop = {
|
|
|
409
409
|
};
|
|
410
410
|
|
|
411
411
|
export const TooltipPlacement = {
|
|
412
|
-
render: (
|
|
412
|
+
render: () =>
|
|
413
413
|
html`<div style="padding:100px 10px; width:fit-content">
|
|
414
414
|
<ic-toggle-button
|
|
415
415
|
variant="icon"
|
|
@@ -471,7 +471,7 @@ export const TooltipPlacement = {
|
|
|
471
471
|
};
|
|
472
472
|
|
|
473
473
|
export const HideOutline = {
|
|
474
|
-
render: (
|
|
474
|
+
render: () =>
|
|
475
475
|
html`<ic-toggle-button label="Toggle" outline="false"></ic-toggle-button>`,
|
|
476
476
|
|
|
477
477
|
name: "Hide outline",
|
|
@@ -7,6 +7,7 @@ export class ToggleButtonGroup {
|
|
|
7
7
|
key: null,
|
|
8
8
|
shift: false,
|
|
9
9
|
};
|
|
10
|
+
this.externallySetActiveToggle = null;
|
|
10
11
|
/**
|
|
11
12
|
* The accessible label of the toggle button group component to provide context for screen reader users.
|
|
12
13
|
*/
|
|
@@ -90,7 +91,15 @@ export class ToggleButtonGroup {
|
|
|
90
91
|
key !== "ArrowUp")
|
|
91
92
|
return;
|
|
92
93
|
const toggleButtonOptions = this.getAllToggleButtons();
|
|
93
|
-
|
|
94
|
+
let targetToggle;
|
|
95
|
+
if (this.externallySetActiveToggle) {
|
|
96
|
+
targetToggle =
|
|
97
|
+
toggleButtonOptions[this.getNextItemToSelect(toggleButtonOptions.indexOf(toggleButtonOptions.filter((el) => el === this.externallySetActiveToggle)[0]), key === "ArrowDown" || key === "ArrowRight")];
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
targetToggle =
|
|
101
|
+
toggleButtonOptions[this.getNextItemToSelect(toggleButtonOptions.indexOf(toggleButtonOptions.filter((el) => el === document.activeElement)[0]), key === "ArrowDown" || key === "ArrowRight")];
|
|
102
|
+
}
|
|
94
103
|
if (this.selectMethod === "auto") {
|
|
95
104
|
// trigger selectHandler when unable to add 'target'
|
|
96
105
|
targetToggle.checked = true;
|
|
@@ -200,6 +209,12 @@ export class ToggleButtonGroup {
|
|
|
200
209
|
});
|
|
201
210
|
}
|
|
202
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* @internal Used to enable other components to set the active toggle button when toggle button group is in a shadow dom.
|
|
214
|
+
*/
|
|
215
|
+
async setActiveToggle(toggle) {
|
|
216
|
+
this.externallySetActiveToggle = toggle;
|
|
217
|
+
}
|
|
203
218
|
componentWillLoad() {
|
|
204
219
|
if (this.selectType === "multi")
|
|
205
220
|
this.selectMethod = "manual";
|
|
@@ -230,14 +245,14 @@ export class ToggleButtonGroup {
|
|
|
230
245
|
}
|
|
231
246
|
render() {
|
|
232
247
|
const { accessibleLabel, disabled, fullWidth, loading, monochrome, outline, theme, } = this;
|
|
233
|
-
return (h(Host, { key: '
|
|
248
|
+
return (h(Host, { key: '5ae12c9f09c65a04cbe1f19850998c0d942327c8', role: "group", "aria-label": accessibleLabel, tabindex: disabled ? -1 : 0, class: {
|
|
234
249
|
"ic-toggle-button-group-disabled": disabled,
|
|
235
250
|
"ic-toggle-button-group-full-width": fullWidth,
|
|
236
251
|
"ic-toggle-button-group-loading": loading,
|
|
237
252
|
"ic-toggle-button-group-monochrome": monochrome,
|
|
238
253
|
"ic-toggle-button-group-hide-outline": !outline,
|
|
239
254
|
[`ic-theme-${theme}`]: theme !== "inherit",
|
|
240
|
-
}, onFocus: this.handleHostFocus }, h("slot", { key: '
|
|
255
|
+
}, onFocus: this.handleHostFocus }, h("slot", { key: '02c4f4cd7df626d4032246bdbcd7e07d2167ba52' })));
|
|
241
256
|
}
|
|
242
257
|
static get is() { return "ic-toggle-button-group"; }
|
|
243
258
|
static get encapsulation() { return "shadow"; }
|
|
@@ -552,7 +567,8 @@ export class ToggleButtonGroup {
|
|
|
552
567
|
}
|
|
553
568
|
static get states() {
|
|
554
569
|
return {
|
|
555
|
-
"lastKeyPressed": {}
|
|
570
|
+
"lastKeyPressed": {},
|
|
571
|
+
"externallySetActiveToggle": {}
|
|
556
572
|
};
|
|
557
573
|
}
|
|
558
574
|
static get events() {
|
|
@@ -579,6 +595,38 @@ export class ToggleButtonGroup {
|
|
|
579
595
|
}
|
|
580
596
|
}];
|
|
581
597
|
}
|
|
598
|
+
static get methods() {
|
|
599
|
+
return {
|
|
600
|
+
"setActiveToggle": {
|
|
601
|
+
"complexType": {
|
|
602
|
+
"signature": "(toggle: HTMLIcToggleButtonElement) => Promise<void>",
|
|
603
|
+
"parameters": [{
|
|
604
|
+
"name": "toggle",
|
|
605
|
+
"type": "HTMLIcToggleButtonElement",
|
|
606
|
+
"docs": ""
|
|
607
|
+
}],
|
|
608
|
+
"references": {
|
|
609
|
+
"Promise": {
|
|
610
|
+
"location": "global",
|
|
611
|
+
"id": "global::Promise"
|
|
612
|
+
},
|
|
613
|
+
"HTMLIcToggleButtonElement": {
|
|
614
|
+
"location": "global",
|
|
615
|
+
"id": "global::HTMLIcToggleButtonElement"
|
|
616
|
+
}
|
|
617
|
+
},
|
|
618
|
+
"return": "Promise<void>"
|
|
619
|
+
},
|
|
620
|
+
"docs": {
|
|
621
|
+
"text": "",
|
|
622
|
+
"tags": [{
|
|
623
|
+
"name": "internal",
|
|
624
|
+
"text": "Used to enable other components to set the active toggle button when toggle button group is in a shadow dom."
|
|
625
|
+
}]
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
};
|
|
629
|
+
}
|
|
582
630
|
static get elementRef() { return "el"; }
|
|
583
631
|
static get watchers() {
|
|
584
632
|
return [{
|