@solid-design-system/components 1.26.0 → 1.28.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/components/es/accordion.js +1 -1
- package/dist/components/es/notification.js +1 -0
- package/dist/components/es/solid-components2.js +1 -1
- package/dist/components/es/solid-element.js +1 -1
- package/dist/components/umd/solid-components.js +15 -15
- package/dist/custom-elements.json +1 -1
- package/dist/package/components/accordion/accordion.js +6 -4
- package/dist/package/components/icon/library.system.d.ts +3 -0
- package/dist/package/components/icon/library.system.js +7 -1
- package/dist/package/components/notification/notification.d.ts +31 -0
- package/dist/package/components/notification/notification.js +211 -0
- package/dist/package/solid-components.d.ts +1 -0
- package/dist/package/solid-components.js +20 -18
- package/dist/package/styles/tailwind.css.js +1 -1
- package/dist/styles/solid-styles.css +1 -1
- package/dist/versioned-components/es/accordion-group.js +1 -1
- package/dist/versioned-components/es/accordion.js +1 -1
- package/dist/versioned-components/es/badge.js +1 -1
- package/dist/versioned-components/es/brandshape.js +1 -1
- package/dist/versioned-components/es/button.js +1 -1
- package/dist/versioned-components/es/carousel-item.js +1 -1
- package/dist/versioned-components/es/carousel.js +3 -3
- package/dist/versioned-components/es/checkbox-group.js +1 -1
- package/dist/versioned-components/es/checkbox.js +1 -1
- package/dist/versioned-components/es/divider.js +1 -1
- package/dist/versioned-components/es/drawer.js +1 -1
- package/dist/versioned-components/es/dropdown.js +1 -1
- package/dist/versioned-components/es/form.js +1 -1
- package/dist/versioned-components/es/header.js +1 -1
- package/dist/versioned-components/es/icon.js +1 -1
- package/dist/versioned-components/es/include.js +1 -1
- package/dist/versioned-components/es/input.js +1 -1
- package/dist/versioned-components/es/link.js +1 -1
- package/dist/versioned-components/es/navigation-item.js +1 -1
- package/dist/versioned-components/es/notification.js +1 -0
- package/dist/versioned-components/es/popup.js +1 -1
- package/dist/versioned-components/es/radio-group.js +1 -1
- package/dist/versioned-components/es/radio.js +1 -1
- package/dist/versioned-components/es/solid-components2.js +1 -1
- package/dist/versioned-components/es/solid-element.js +1 -1
- package/dist/versioned-components/es/spinner.js +1 -1
- package/dist/versioned-components/es/switch.js +1 -1
- package/dist/versioned-components/es/tag.js +1 -1
- package/dist/versioned-components/es/teaser.js +1 -1
- package/dist/versioned-components/es/tooltip.js +2 -2
- package/dist/versioned-components/es/video.js +1 -1
- package/dist/versioned-package/_components/button-group/button-group.d.ts +1 -1
- package/dist/versioned-package/_components/button-group/button-group.js +11 -11
- package/dist/versioned-package/components/accordion/accordion.d.ts +1 -1
- package/dist/versioned-package/components/accordion/accordion.js +8 -6
- package/dist/versioned-package/components/accordion-group/accordion-group.d.ts +1 -1
- package/dist/versioned-package/components/accordion-group/accordion-group.js +3 -3
- package/dist/versioned-package/components/badge/badge.d.ts +1 -1
- package/dist/versioned-package/components/badge/badge.js +1 -1
- package/dist/versioned-package/components/brandshape/brandshape.d.ts +1 -1
- package/dist/versioned-package/components/brandshape/brandshape.js +1 -1
- package/dist/versioned-package/components/button/button.d.ts +1 -1
- package/dist/versioned-package/components/button/button.js +4 -4
- package/dist/versioned-package/components/carousel/carousel.d.ts +1 -1
- package/dist/versioned-package/components/carousel/carousel.js +6 -6
- package/dist/versioned-package/components/carousel-item/carousel-item.d.ts +1 -1
- package/dist/versioned-package/components/carousel-item/carousel-item.js +1 -1
- package/dist/versioned-package/components/checkbox/checkbox.d.ts +1 -1
- package/dist/versioned-package/components/checkbox/checkbox.js +4 -4
- package/dist/versioned-package/components/checkbox-group/checkbox-group.d.ts +1 -1
- package/dist/versioned-package/components/checkbox-group/checkbox-group.js +5 -5
- package/dist/versioned-package/components/divider/divider.d.ts +1 -1
- package/dist/versioned-package/components/divider/divider.js +2 -2
- package/dist/versioned-package/components/drawer/drawer.d.ts +1 -1
- package/dist/versioned-package/components/drawer/drawer.js +2 -2
- package/dist/versioned-package/components/dropdown/dropdown.d.ts +1 -1
- package/dist/versioned-package/components/dropdown/dropdown.js +6 -6
- package/dist/versioned-package/components/header/header.d.ts +1 -1
- package/dist/versioned-package/components/header/header.js +4 -4
- package/dist/versioned-package/components/icon/icon.d.ts +1 -1
- package/dist/versioned-package/components/icon/icon.js +1 -1
- package/dist/versioned-package/components/icon/library.system.d.ts +3 -0
- package/dist/versioned-package/components/icon/library.system.js +7 -1
- package/dist/versioned-package/components/include/include.d.ts +1 -1
- package/dist/versioned-package/components/include/include.js +1 -1
- package/dist/versioned-package/components/input/input.d.ts +1 -1
- package/dist/versioned-package/components/input/input.js +4 -4
- package/dist/versioned-package/components/link/link.d.ts +1 -1
- package/dist/versioned-package/components/link/link.js +2 -2
- package/dist/versioned-package/components/navigation-item/navigation-item.d.ts +1 -1
- package/dist/versioned-package/components/navigation-item/navigation-item.js +3 -3
- package/dist/versioned-package/components/notification/notification.d.ts +31 -0
- package/dist/versioned-package/components/notification/notification.js +211 -0
- package/dist/versioned-package/components/popup/popup.d.ts +1 -1
- package/dist/versioned-package/components/popup/popup.js +1 -1
- package/dist/versioned-package/components/radio/radio.d.ts +1 -1
- package/dist/versioned-package/components/radio/radio.js +2 -2
- package/dist/versioned-package/components/radio-group/radio-group.d.ts +2 -2
- package/dist/versioned-package/components/radio-group/radio-group.js +14 -14
- package/dist/versioned-package/components/spinner/spinner.d.ts +1 -1
- package/dist/versioned-package/components/spinner/spinner.js +1 -1
- package/dist/versioned-package/components/switch/switch.d.ts +1 -1
- package/dist/versioned-package/components/switch/switch.js +2 -2
- package/dist/versioned-package/components/tag/tag.d.ts +1 -1
- package/dist/versioned-package/components/tag/tag.js +2 -2
- package/dist/versioned-package/components/teaser/teaser.js +1 -1
- package/dist/versioned-package/components/tooltip/tooltip.d.ts +1 -1
- package/dist/versioned-package/components/tooltip/tooltip.js +5 -5
- package/dist/versioned-package/components/video/video.d.ts +1 -1
- package/dist/versioned-package/components/video/video.js +2 -2
- package/dist/versioned-package/internal/form.js +2 -2
- package/dist/versioned-package/solid-components.d.ts +1 -0
- package/dist/versioned-package/solid-components.js +20 -18
- package/dist/versioned-package/styles/form-control.styles.js +1 -1
- package/dist/versioned-package/styles/tailwind.css.js +1 -1
- package/dist/versioned-styles/solid-styles.css +1 -1
- package/dist/vscode.html-custom-data.json +141 -27
- package/dist/web-types.json +167 -1
- package/package.json +3 -3
|
@@ -101,7 +101,7 @@ let SdInput = class extends SolidElement {
|
|
|
101
101
|
handleClearClick(event) {
|
|
102
102
|
this.value = "";
|
|
103
103
|
this.emit("sd-clear");
|
|
104
|
-
this.emit("sd-1-
|
|
104
|
+
this.emit("sd-1-28-0-input");
|
|
105
105
|
this.emit("sd-change");
|
|
106
106
|
this.input.focus();
|
|
107
107
|
event.stopPropagation();
|
|
@@ -113,7 +113,7 @@ let SdInput = class extends SolidElement {
|
|
|
113
113
|
handleInput() {
|
|
114
114
|
this.value = this.input.value;
|
|
115
115
|
this.formControlController.updateValidity();
|
|
116
|
-
this.emit("sd-1-
|
|
116
|
+
this.emit("sd-1-28-0-input");
|
|
117
117
|
}
|
|
118
118
|
handleInvalid() {
|
|
119
119
|
this.formControlController.setValidity(false);
|
|
@@ -261,7 +261,7 @@ let SdInput = class extends SolidElement {
|
|
|
261
261
|
"min-w-0 flex-grow focus:outline-none bg-transparent placeholder-neutral-700",
|
|
262
262
|
this.size === "sm" ? "h-6" : "h-8",
|
|
263
263
|
textSize
|
|
264
|
-
)}" type="${this.type === "password" && this.passwordVisible ? "text" : this.type}" title="${this.title}" name="${ifDefined(this.name)}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?required="${this.required}" placeholder="${ifDefined(this.placeholder)}" minlength="${ifDefined(this.minlength)}" maxlength="${ifDefined(this.maxlength)}" min="${ifDefined(this.min)}" max="${ifDefined(this.max)}" step="${ifDefined(this.step)}" .value="${live(this.value)}" autocapitalize="${ifDefined(this.type === "password" ? "off" : this.autocapitalize)}" autocomplete="${ifDefined(this.type === "password" ? "off" : this.autocomplete)}" autocorrect="${ifDefined(this.type === "password" ? "off" : this.autocorrect)}" ?autofocus="${this.autofocus}" spellcheck="${this.spellcheck}" pattern="${ifDefined(this.pattern)}" enterkeyhint="${ifDefined(this.enterkeyhint)}" inputmode="${ifDefined(this.inputmode)}" aria-describedby="help-text" @change="${this.handleChange}" @input="${this.handleInput}" @invalid="${this.handleInvalid}" @keydown="${this.handleKeyDown}" @focus="${this.handleFocus}" @blur="${this.handleBlur}"> ${hasClearIcon ? html`<button part="clear-button" class="${cx("flex justify-center ", iconMarginLeft)}" type="button" aria-label="${this.localize.term("clearEntry")}" @click="${this.handleClearClick}" tabindex="-1"><slot name="clear-icon"><sd-1-
|
|
264
|
+
)}" type="${this.type === "password" && this.passwordVisible ? "text" : this.type}" title="${this.title}" name="${ifDefined(this.name)}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?required="${this.required}" placeholder="${ifDefined(this.placeholder)}" minlength="${ifDefined(this.minlength)}" maxlength="${ifDefined(this.maxlength)}" min="${ifDefined(this.min)}" max="${ifDefined(this.max)}" step="${ifDefined(this.step)}" .value="${live(this.value)}" autocapitalize="${ifDefined(this.type === "password" ? "off" : this.autocapitalize)}" autocomplete="${ifDefined(this.type === "password" ? "off" : this.autocomplete)}" autocorrect="${ifDefined(this.type === "password" ? "off" : this.autocorrect)}" ?autofocus="${this.autofocus}" spellcheck="${this.spellcheck}" pattern="${ifDefined(this.pattern)}" enterkeyhint="${ifDefined(this.enterkeyhint)}" inputmode="${ifDefined(this.inputmode)}" aria-describedby="help-text" @change="${this.handleChange}" @input="${this.handleInput}" @invalid="${this.handleInvalid}" @keydown="${this.handleKeyDown}" @focus="${this.handleFocus}" @blur="${this.handleBlur}"> ${hasClearIcon ? html`<button part="clear-button" class="${cx("flex justify-center ", iconMarginLeft)}" type="button" aria-label="${this.localize.term("clearEntry")}" @click="${this.handleClearClick}" tabindex="-1"><slot name="clear-icon"><sd-1-28-0-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-1-28-0-icon></slot></button>` : ""} ${this.passwordToggle && this.type === "password" ? html`<button aria-label="${this.localize.term(this.passwordVisible ? "hidePassword" : "showPassword")}" part="password-toggle-button" class="flex items-center" type="button" @click="${this.handlePasswordToggle}" tabindex="-1">${this.passwordVisible ? html`<slot name="show-password-icon"><sd-1-28-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye"></sd-1-28-0-icon></slot>` : html`<slot name="hide-password-icon"><sd-1-28-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye-crossed-out"></sd-1-28-0-icon></slot>`}</button>` : ""} ${(this.type === "date" || this.type === "datetime-local") && !isFirefox ? html`<sd-1-28-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="calendar"></sd-1-28-0-icon>` : ""} ${this.type === "time" ? html`<sd-1-28-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="clock"></sd-1-28-0-icon>` : ""} ${isInvalid ? html`<sd-1-28-0-icon class="${cx("text-error", iconMarginLeft, iconSize)}" library="system" name="risk"></sd-1-28-0-icon>` : ""} ${isValid ? html`<sd-1-28-0-icon class="${cx("text-success", iconMarginLeft, iconSize)}" library="system" name="confirm"></sd-1-28-0-icon>` : ""} ${slots["right"] ? html`<slot name="right" part="right" class="${cx("inline-flex", iconColor, iconMarginLeft, iconSize)}"></slot>` : ""}</div></div><slot name="help-text" part="form-control-help-text" id="help-text" class="${cx("text-sm text-neutral-700", hasHelpText ? "block" : "hidden")}" aria-hidden="${hasHelpText ? "false" : "true"}">${this.helpText}</slot></div>`;
|
|
265
265
|
}
|
|
266
266
|
};
|
|
267
267
|
SdInput.styles = [
|
|
@@ -383,7 +383,7 @@ __decorateClass([
|
|
|
383
383
|
watch("value", { waitUntilFirstUpdate: true })
|
|
384
384
|
], SdInput.prototype, "handleValueChange", 1);
|
|
385
385
|
SdInput = __decorateClass([
|
|
386
|
-
customElement("sd-1-
|
|
386
|
+
customElement("sd-1-28-0-input")
|
|
387
387
|
], SdInput);
|
|
388
388
|
export {
|
|
389
389
|
SdInput as default
|
|
@@ -77,7 +77,7 @@ let SdLink = class extends SolidElement {
|
|
|
77
77
|
};
|
|
78
78
|
SdLink.styles = [
|
|
79
79
|
SolidElement.styles,
|
|
80
|
-
css`::slotted(sd-1-
|
|
80
|
+
css`::slotted(sd-1-28-0-icon){font-size:1.25em;margin-bottom:-.25em}:host([size=sm][standalone]) ::slotted(sd-1-28-0-icon){font-size:1rem}:host([size=lg][standalone]) ::slotted(sd-1-28-0-icon){font-size:1.5rem}`
|
|
81
81
|
];
|
|
82
82
|
__decorateClass([
|
|
83
83
|
query("a")
|
|
@@ -101,7 +101,7 @@ __decorateClass([
|
|
|
101
101
|
property()
|
|
102
102
|
], SdLink.prototype, "download", 2);
|
|
103
103
|
SdLink = __decorateClass([
|
|
104
|
-
customElement("sd-1-
|
|
104
|
+
customElement("sd-1-28-0-link")
|
|
105
105
|
], SdLink);
|
|
106
106
|
export {
|
|
107
107
|
SdLink as default
|
|
@@ -105,10 +105,10 @@ let SdNavigationItem = class extends SolidElement {
|
|
|
105
105
|
isAccordion ? "grow" : "w-full",
|
|
106
106
|
slots["description"] ? "pb-1" : horizontalPaddingBottom,
|
|
107
107
|
this.calculatePaddingX()
|
|
108
|
-
)}">${this.divider && this.vertical ? html`<sd-1-
|
|
108
|
+
)}">${this.divider && this.vertical ? html`<sd-1-28-0-divider part="divider" class="${cx("w-full transition-all absolute -top-[1px] left-0", this.calculatePaddingX())}"></sd-1-28-0-divider>` : ""} <span class="inline-flex items-center flex-auto"><slot part="content" class="inline"></slot></span>${(this.chevron || slots["children"]) && this.vertical ? html`<sd-1-28-0-icon name="chevron-down" part="chevron" library="system" color="currentColor" class="${cx(
|
|
109
109
|
"h-6 w-6 ml-2 transition-all",
|
|
110
110
|
isAccordion ? this.open ? "rotate-180" : "rotate-0" : "rotate-[270deg]"
|
|
111
|
-
)}"></sd-1-
|
|
111
|
+
)}"></sd-1-28-0-icon>` : ""} </span>${slots["description"] && this.vertical ? html`<slot name="description" part="description" class="${cx(
|
|
112
112
|
"inline-block text-sm text-left text-black",
|
|
113
113
|
isAccordion ? "grow" : "w-full",
|
|
114
114
|
horizontalPaddingBottom,
|
|
@@ -159,7 +159,7 @@ __decorateClass([
|
|
|
159
159
|
property({ type: Boolean, reflect: true })
|
|
160
160
|
], SdNavigationItem.prototype, "open", 2);
|
|
161
161
|
SdNavigationItem = __decorateClass([
|
|
162
|
-
customElement("sd-1-
|
|
162
|
+
customElement("sd-1-28-0-navigation-item")
|
|
163
163
|
], SdNavigationItem);
|
|
164
164
|
export {
|
|
165
165
|
SdNavigationItem as default
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import SolidElement from '../../internal/solid-element.js';
|
|
2
|
+
export default class SdNotification extends SolidElement {
|
|
3
|
+
private autoHideTimeout;
|
|
4
|
+
private readonly localize;
|
|
5
|
+
base: HTMLElement;
|
|
6
|
+
open: boolean;
|
|
7
|
+
closable: boolean;
|
|
8
|
+
variant: 'info' | 'success' | 'error' | 'warning';
|
|
9
|
+
toastStack: 'top-right' | 'bottom-center';
|
|
10
|
+
duration: number;
|
|
11
|
+
durationIndicator: boolean;
|
|
12
|
+
private remainingDuration;
|
|
13
|
+
private startTime;
|
|
14
|
+
firstUpdated(): void;
|
|
15
|
+
private startAutoHide;
|
|
16
|
+
private onHover;
|
|
17
|
+
private onHoverEnd;
|
|
18
|
+
private handleCloseClick;
|
|
19
|
+
handleOpenChange(): Promise<void>;
|
|
20
|
+
handleDurationChange(): void;
|
|
21
|
+
show(): Promise<void>;
|
|
22
|
+
hide(): Promise<void>;
|
|
23
|
+
toast(): Promise<void>;
|
|
24
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
25
|
+
static styles: import("lit").CSSResultGroup[];
|
|
26
|
+
}
|
|
27
|
+
declare global {
|
|
28
|
+
interface HTMLElementTagNameMap {
|
|
29
|
+
'sd-1-28-0-notification': SdNotification;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { stopAnimations, animateTo } from "../../internal/animate.js";
|
|
2
|
+
import { css, html } from "lit";
|
|
3
|
+
import { customElement } from "../../internal/register-custom-element.js";
|
|
4
|
+
import { setDefaultAnimation, getAnimation } from "../../utilities/animation-registry.js";
|
|
5
|
+
import { LocalizeController } from "../../utilities/localize.js";
|
|
6
|
+
import { query, property } from "lit/decorators.js";
|
|
7
|
+
import { waitForEvent } from "../../internal/event.js";
|
|
8
|
+
import { watch } from "../../internal/watch.js";
|
|
9
|
+
import componentStyles from "../../styles/component.styles.js";
|
|
10
|
+
import cx from "classix";
|
|
11
|
+
import SolidElement from "../../internal/solid-element.js";
|
|
12
|
+
var __defProp = Object.defineProperty;
|
|
13
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
14
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
15
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
16
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
17
|
+
if (decorator = decorators[i])
|
|
18
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
19
|
+
if (kind && result)
|
|
20
|
+
__defProp(target, key, result);
|
|
21
|
+
return result;
|
|
22
|
+
};
|
|
23
|
+
const toastStackDefault = Object.assign(document.createElement("div"), {
|
|
24
|
+
className: "sd-toast-stack sd-toast-stack--top-right"
|
|
25
|
+
});
|
|
26
|
+
const toastStackBottomCenter = Object.assign(document.createElement("div"), {
|
|
27
|
+
className: "sd-toast-stack sd-toast-stack--bottom-center"
|
|
28
|
+
});
|
|
29
|
+
let SdNotification = class extends SolidElement {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(...arguments);
|
|
32
|
+
this.localize = new LocalizeController(this);
|
|
33
|
+
this.open = false;
|
|
34
|
+
this.closable = false;
|
|
35
|
+
this.variant = "info";
|
|
36
|
+
this.toastStack = "top-right";
|
|
37
|
+
this.duration = Infinity;
|
|
38
|
+
this.durationIndicator = false;
|
|
39
|
+
this.remainingDuration = this.duration;
|
|
40
|
+
this.startTime = Date.now();
|
|
41
|
+
}
|
|
42
|
+
firstUpdated() {
|
|
43
|
+
this.base.hidden = !this.open;
|
|
44
|
+
}
|
|
45
|
+
startAutoHide() {
|
|
46
|
+
clearTimeout(this.autoHideTimeout);
|
|
47
|
+
this.startTime = Date.now();
|
|
48
|
+
this.remainingDuration = this.duration;
|
|
49
|
+
if (this.open && this.duration < Infinity) {
|
|
50
|
+
this.autoHideTimeout = window.setTimeout(() => this.hide(), this.duration);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
onHover() {
|
|
54
|
+
clearTimeout(this.autoHideTimeout);
|
|
55
|
+
if (this.duration < Infinity) {
|
|
56
|
+
this.remainingDuration -= Date.now() - this.startTime;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
onHoverEnd() {
|
|
60
|
+
this.startTime = Date.now();
|
|
61
|
+
clearTimeout(this.autoHideTimeout);
|
|
62
|
+
if (this.open && this.duration < Infinity) {
|
|
63
|
+
this.autoHideTimeout = window.setTimeout(() => {
|
|
64
|
+
this.hide();
|
|
65
|
+
}, this.remainingDuration);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
handleCloseClick() {
|
|
69
|
+
this.hide();
|
|
70
|
+
}
|
|
71
|
+
async handleOpenChange() {
|
|
72
|
+
if (this.open) {
|
|
73
|
+
this.emit("sd-show");
|
|
74
|
+
if (this.duration < Infinity) {
|
|
75
|
+
this.startAutoHide();
|
|
76
|
+
}
|
|
77
|
+
await stopAnimations(this.base);
|
|
78
|
+
this.base.hidden = false;
|
|
79
|
+
const { keyframes, options } = getAnimation(this, "notification.show", { dir: this.localize.dir() });
|
|
80
|
+
await animateTo(this.base, keyframes, options);
|
|
81
|
+
this.emit("sd-after-show");
|
|
82
|
+
} else {
|
|
83
|
+
this.emit("sd-hide");
|
|
84
|
+
clearTimeout(this.autoHideTimeout);
|
|
85
|
+
await stopAnimations(this.base);
|
|
86
|
+
const { keyframes, options } = getAnimation(this, "notification.hide", { dir: this.localize.dir() });
|
|
87
|
+
await animateTo(this.base, keyframes, options);
|
|
88
|
+
this.base.hidden = true;
|
|
89
|
+
this.emit("sd-after-hide");
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
handleDurationChange() {
|
|
93
|
+
this.startAutoHide();
|
|
94
|
+
}
|
|
95
|
+
/** Shows the notification. */
|
|
96
|
+
async show() {
|
|
97
|
+
if (this.open) {
|
|
98
|
+
return void 0;
|
|
99
|
+
}
|
|
100
|
+
this.open = true;
|
|
101
|
+
return waitForEvent(this, "sd-after-show");
|
|
102
|
+
}
|
|
103
|
+
/** Hides the notification */
|
|
104
|
+
async hide() {
|
|
105
|
+
if (!this.open) {
|
|
106
|
+
return void 0;
|
|
107
|
+
}
|
|
108
|
+
this.open = false;
|
|
109
|
+
return waitForEvent(this, "sd-after-hide");
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Displays the notification as a toast notification. This will move the notification out of its position in the DOM and, when
|
|
113
|
+
* dismissed, it will be removed from the DOM completely. By storing a reference to the notification, you can reuse it by
|
|
114
|
+
* calling this method again. The returned promise will resolve after the notification is hidden.
|
|
115
|
+
*/
|
|
116
|
+
async toast() {
|
|
117
|
+
return new Promise((resolve) => {
|
|
118
|
+
const toastStack = this.toastStack === "bottom-center" ? toastStackBottomCenter : toastStackDefault;
|
|
119
|
+
if (toastStack.parentElement === null) {
|
|
120
|
+
document.body.append(toastStack);
|
|
121
|
+
}
|
|
122
|
+
toastStack.appendChild(this);
|
|
123
|
+
requestAnimationFrame(() => {
|
|
124
|
+
this.clientWidth;
|
|
125
|
+
this.show();
|
|
126
|
+
});
|
|
127
|
+
this.addEventListener(
|
|
128
|
+
"sd-after-hide",
|
|
129
|
+
() => {
|
|
130
|
+
toastStack.removeChild(this);
|
|
131
|
+
resolve();
|
|
132
|
+
if (toastStack.querySelector("sd-1-28-0-notification") === null) {
|
|
133
|
+
toastStack.remove();
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
{ once: true }
|
|
137
|
+
);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
render() {
|
|
141
|
+
return html`<div part="base" class="${cx("w-full overflow-hidden flex items-stretch relative m-2")}" role="alert" id="notification" aria-hidden="${this.open ? "false" : "true"}" @mouseenter="${this.onHover}" @mouseleave="${this.onHoverEnd}"><slot name="icon" part="icon" class="${cx(
|
|
142
|
+
"min-w-min flex items-center px-3 justify-center",
|
|
143
|
+
{
|
|
144
|
+
info: "bg-info",
|
|
145
|
+
success: "bg-success",
|
|
146
|
+
warning: "bg-warning",
|
|
147
|
+
error: "bg-error"
|
|
148
|
+
}[this.variant]
|
|
149
|
+
)}"><sd-1-28-0-icon name="${{
|
|
150
|
+
info: "info-circle",
|
|
151
|
+
success: "confirm-circle",
|
|
152
|
+
warning: "exclamation-circle",
|
|
153
|
+
error: "warning"
|
|
154
|
+
}[this.variant] || ""}" library="system" class="h-6 w-6 text-white"></sd-1-28-0-icon></slot><div part="content" class="${cx(
|
|
155
|
+
"h-full w-full p-1 gap-2 flex items-center justify-stretch bg-white",
|
|
156
|
+
"border-solid border-[1px] border-l-0 border-neutral-400"
|
|
157
|
+
)}"><slot part="message" class="block w-full pl-3 py-2" aria-live="polite"></slot>${this.closable ? html`<sd-1-28-0-button size="md" variant="tertiary" part="close-button" class="ml-auto flex flex-[0_0_auto] items-stretch" label="${this.localize.term("close")}" @click="${this.handleCloseClick}"><sd-1-28-0-icon name="close" library="system" color="currentColor"></sd-1-28-0-icon></sd-1-28-0-button>` : ""}</div>${this.durationIndicator ? html`<div part="duration-indicator__elapsed" id="duration-indicator__elapsed" style="${`animation-duration: ${this.duration}ms`}" class="${cx(`absolute w-0 h-[2px] bottom-0 bg-primary z-10 animate-grow`)}"></div><div part="duration-indicator__total" class="w-full h-[2px] bottom-0 absolute bg-neutral-400"></div>` : ""}</div>`;
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
SdNotification.styles = [
|
|
161
|
+
componentStyles,
|
|
162
|
+
SolidElement.styles,
|
|
163
|
+
css`:host{display:contents}#notification:hover #duration-indicator__elapsed{animation-play-state:paused!important}`
|
|
164
|
+
];
|
|
165
|
+
__decorateClass([
|
|
166
|
+
query('[part~="base"]')
|
|
167
|
+
], SdNotification.prototype, "base", 2);
|
|
168
|
+
__decorateClass([
|
|
169
|
+
property({ type: Boolean, reflect: true })
|
|
170
|
+
], SdNotification.prototype, "open", 2);
|
|
171
|
+
__decorateClass([
|
|
172
|
+
property({ type: Boolean, reflect: true })
|
|
173
|
+
], SdNotification.prototype, "closable", 2);
|
|
174
|
+
__decorateClass([
|
|
175
|
+
property({ reflect: true })
|
|
176
|
+
], SdNotification.prototype, "variant", 2);
|
|
177
|
+
__decorateClass([
|
|
178
|
+
property({ reflect: true, attribute: "toast-stack" })
|
|
179
|
+
], SdNotification.prototype, "toastStack", 2);
|
|
180
|
+
__decorateClass([
|
|
181
|
+
property({ type: Number })
|
|
182
|
+
], SdNotification.prototype, "duration", 2);
|
|
183
|
+
__decorateClass([
|
|
184
|
+
property({ type: Boolean, reflect: true, attribute: "duration-indicator" })
|
|
185
|
+
], SdNotification.prototype, "durationIndicator", 2);
|
|
186
|
+
__decorateClass([
|
|
187
|
+
watch("open", { waitUntilFirstUpdate: true })
|
|
188
|
+
], SdNotification.prototype, "handleOpenChange", 1);
|
|
189
|
+
__decorateClass([
|
|
190
|
+
watch("duration")
|
|
191
|
+
], SdNotification.prototype, "handleDurationChange", 1);
|
|
192
|
+
SdNotification = __decorateClass([
|
|
193
|
+
customElement("sd-1-28-0-notification")
|
|
194
|
+
], SdNotification);
|
|
195
|
+
setDefaultAnimation("notification.show", {
|
|
196
|
+
keyframes: [
|
|
197
|
+
{ opacity: 0, scale: 0.8 },
|
|
198
|
+
{ opacity: 1, scale: 1 }
|
|
199
|
+
],
|
|
200
|
+
options: { duration: 250, easing: "ease" }
|
|
201
|
+
});
|
|
202
|
+
setDefaultAnimation("notification.hide", {
|
|
203
|
+
keyframes: [
|
|
204
|
+
{ opacity: 1, scale: 1 },
|
|
205
|
+
{ opacity: 0, scale: 0.8 }
|
|
206
|
+
],
|
|
207
|
+
options: { duration: 250, easing: "ease" }
|
|
208
|
+
});
|
|
209
|
+
export {
|
|
210
|
+
SdNotification as default
|
|
211
|
+
};
|
|
@@ -312,7 +312,7 @@ __decorateClass([
|
|
|
312
312
|
property({ attribute: "auto-size-padding", type: Number })
|
|
313
313
|
], SdPopup.prototype, "autoSizePadding", 2);
|
|
314
314
|
SdPopup = __decorateClass([
|
|
315
|
-
customElement("sd-1-
|
|
315
|
+
customElement("sd-1-28-0-popup")
|
|
316
316
|
], SdPopup);
|
|
317
317
|
export {
|
|
318
318
|
SdPopup as default
|
|
@@ -73,7 +73,7 @@ let SdRadio = class extends SolidElement {
|
|
|
73
73
|
}
|
|
74
74
|
render() {
|
|
75
75
|
return html`<span part="base" class="${cx(
|
|
76
|
-
"sd-1-
|
|
76
|
+
"sd-1-28-0-radio group inline-flex items-start items-center text-base leading-normal text-black cursor-pointer align-middle",
|
|
77
77
|
this.disabled && "hover:cursor-not-allowed",
|
|
78
78
|
{
|
|
79
79
|
/* sizes, fonts */
|
|
@@ -121,7 +121,7 @@ __decorateClass([
|
|
|
121
121
|
watch("disabled", { waitUntilFirstUpdate: true })
|
|
122
122
|
], SdRadio.prototype, "handleDisabledChange", 1);
|
|
123
123
|
SdRadio = __decorateClass([
|
|
124
|
-
customElement("sd-1-
|
|
124
|
+
customElement("sd-1-28-0-radio")
|
|
125
125
|
], SdRadio);
|
|
126
126
|
export {
|
|
127
127
|
SdRadio as default
|
|
@@ -4,7 +4,7 @@ import SolidElement from '../../internal/solid-element';
|
|
|
4
4
|
import type { SolidFormControl } from '../../internal/solid-element';
|
|
5
5
|
export default class SdRadioGroup extends SolidElement implements SolidFormControl {
|
|
6
6
|
static dependencies: {
|
|
7
|
-
'sd-1-
|
|
7
|
+
'sd-1-28-0-button-group': typeof SdButtonGroup;
|
|
8
8
|
};
|
|
9
9
|
protected readonly formControlController: FormControlController;
|
|
10
10
|
private readonly hasSlotController;
|
|
@@ -47,6 +47,6 @@ export default class SdRadioGroup extends SolidElement implements SolidFormContr
|
|
|
47
47
|
}
|
|
48
48
|
declare global {
|
|
49
49
|
interface HTMLElementTagNameMap {
|
|
50
|
-
'sd-1-
|
|
50
|
+
'sd-1-28-0-radio-group': SdRadioGroup;
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -72,10 +72,10 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
72
72
|
this.formControlController.updateValidity();
|
|
73
73
|
}
|
|
74
74
|
getAllRadios() {
|
|
75
|
-
return [...this.querySelectorAll("sd-1-
|
|
75
|
+
return [...this.querySelectorAll("sd-1-28-0-radio, sd-1-28-0-radio-button")];
|
|
76
76
|
}
|
|
77
77
|
handleRadioClick(event) {
|
|
78
|
-
const target = event.target.closest("sd-1-
|
|
78
|
+
const target = event.target.closest("sd-1-28-0-radio, sd-1-28-0-radio-button");
|
|
79
79
|
const radios = this.getAllRadios();
|
|
80
80
|
const oldValue = this.value;
|
|
81
81
|
if (target.disabled) {
|
|
@@ -85,7 +85,7 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
85
85
|
radios.forEach((radio) => radio.checked = radio === target);
|
|
86
86
|
if (this.value !== oldValue) {
|
|
87
87
|
this.emit("sd-change");
|
|
88
|
-
this.emit("sd-1-
|
|
88
|
+
this.emit("sd-1-28-0-input");
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
handleKeyDown(event) {
|
|
@@ -119,7 +119,7 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
119
119
|
}
|
|
120
120
|
if (this.value !== oldValue) {
|
|
121
121
|
this.emit("sd-change");
|
|
122
|
-
this.emit("sd-1-
|
|
122
|
+
this.emit("sd-1-28-0-input");
|
|
123
123
|
}
|
|
124
124
|
event.preventDefault();
|
|
125
125
|
}
|
|
@@ -147,7 +147,7 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
147
147
|
radio.invalid = this.invalid;
|
|
148
148
|
})
|
|
149
149
|
);
|
|
150
|
-
this.hasButtonGroup = radios.some((radio) => radio.tagName.toLowerCase() === "sd-1-
|
|
150
|
+
this.hasButtonGroup = radios.some((radio) => radio.tagName.toLowerCase() === "sd-1-28-0-radio-button");
|
|
151
151
|
if (!radios.some((radio) => radio.checked)) {
|
|
152
152
|
if (this.hasButtonGroup) {
|
|
153
153
|
const buttonRadio = (_a = radios[0].shadowRoot) == null ? void 0 : _a.querySelector("button");
|
|
@@ -159,26 +159,26 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
if (this.hasButtonGroup) {
|
|
162
|
-
const buttonGroup = (_b = this.shadowRoot) == null ? void 0 : _b.querySelector("sd-1-
|
|
162
|
+
const buttonGroup = (_b = this.shadowRoot) == null ? void 0 : _b.querySelector("sd-1-28-0-button-group");
|
|
163
163
|
if (buttonGroup) {
|
|
164
164
|
buttonGroup.disableRole = true;
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
syncRadios() {
|
|
169
|
-
if (customElements.get("sd-1-
|
|
169
|
+
if (customElements.get("sd-1-28-0-radio") && customElements.get("sd-1-28-0-radio-button")) {
|
|
170
170
|
this.syncRadioElements();
|
|
171
171
|
return;
|
|
172
172
|
}
|
|
173
|
-
if (customElements.get("sd-1-
|
|
173
|
+
if (customElements.get("sd-1-28-0-radio")) {
|
|
174
174
|
this.syncRadioElements();
|
|
175
175
|
} else {
|
|
176
|
-
customElements.whenDefined("sd-1-
|
|
176
|
+
customElements.whenDefined("sd-1-28-0-radio").then(() => this.syncRadios());
|
|
177
177
|
}
|
|
178
|
-
if (customElements.get("sd-1-
|
|
178
|
+
if (customElements.get("sd-1-28-0-radio-button")) {
|
|
179
179
|
this.syncRadioElements();
|
|
180
180
|
} else {
|
|
181
|
-
customElements.whenDefined("sd-1-
|
|
181
|
+
customElements.whenDefined("sd-1-28-0-radio-button").then(() => this.syncRadios());
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
updateCheckedRadio() {
|
|
@@ -258,11 +258,11 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
258
258
|
)}"><div class="sr-only"><div id="error-message" aria-live="assertive">${this.errorText}</div><label><input id="validation-input" type="text" ?required="${this.required}" tabindex="-1" hidden @invalid="${this.handleInvalid}"></label></div>${defaultSlot}</div></fieldset>`;
|
|
259
259
|
}
|
|
260
260
|
};
|
|
261
|
-
SdRadioGroup.dependencies = { "sd-1-
|
|
261
|
+
SdRadioGroup.dependencies = { "sd-1-28-0-button-group": SdButtonGroup };
|
|
262
262
|
SdRadioGroup.styles = [
|
|
263
263
|
componentStyles,
|
|
264
264
|
SolidElement.styles,
|
|
265
|
-
css`:host{display:block}:host([orientation=vertical]) ::slotted(sd-1-
|
|
265
|
+
css`:host{display:block}:host([orientation=vertical]) ::slotted(sd-1-28-0-radio){margin-bottom:8px;display:flex}:host([orientation=vertical]) ::slotted(sd-1-28-0-radio:last-of-type){margin-bottom:0}:host([orientation=horizontal]) ::slotted(sd-1-28-0-radio){margin-right:24px}:host([size=sm]):host([orientation=horizontal]) ::slotted(sd-1-28-0-radio){margin-right:16px}:host([orientation=horizontal]) ::slotted(sd-1-28-0-radio:last-of-type){margin-right:0}:host([required]) #label.has-label::after{content:'*';margin-left:2px}`
|
|
266
266
|
];
|
|
267
267
|
__decorateClass([
|
|
268
268
|
query("slot:not([name])")
|
|
@@ -313,7 +313,7 @@ __decorateClass([
|
|
|
313
313
|
watch("value")
|
|
314
314
|
], SdRadioGroup.prototype, "handleValueChange", 1);
|
|
315
315
|
SdRadioGroup = __decorateClass([
|
|
316
|
-
customElement("sd-1-
|
|
316
|
+
customElement("sd-1-28-0-radio-group")
|
|
317
317
|
], SdRadioGroup);
|
|
318
318
|
export {
|
|
319
319
|
SdRadioGroup as default
|
|
@@ -50,7 +50,7 @@ let SdSwitch = class extends SolidElement {
|
|
|
50
50
|
this.emit("sd-blur");
|
|
51
51
|
}
|
|
52
52
|
handleInput() {
|
|
53
|
-
this.emit("sd-1-
|
|
53
|
+
this.emit("sd-1-28-0-input");
|
|
54
54
|
}
|
|
55
55
|
handleInvalid(event) {
|
|
56
56
|
this.formControlController.setValidity(false);
|
|
@@ -155,7 +155,7 @@ __decorateClass([
|
|
|
155
155
|
watch(["checked"], { waitUntilFirstUpdate: true })
|
|
156
156
|
], SdSwitch.prototype, "handleStateChange", 1);
|
|
157
157
|
SdSwitch = __decorateClass([
|
|
158
|
-
customElement("sd-1-
|
|
158
|
+
customElement("sd-1-28-0-switch")
|
|
159
159
|
], SdSwitch);
|
|
160
160
|
export {
|
|
161
161
|
SdSwitch as default
|
|
@@ -72,7 +72,7 @@ let SdTag = class extends SolidElement {
|
|
|
72
72
|
lg: "text-base",
|
|
73
73
|
sm: "text-[12px]"
|
|
74
74
|
}[this.size]
|
|
75
|
-
)}"><sd-1-
|
|
75
|
+
)}"><sd-1-28-0-icon library="system" name="close" label="remove"></sd-1-28-0-icon></slot></${tag}>`;
|
|
76
76
|
}
|
|
77
77
|
};
|
|
78
78
|
SdTag.styles = [
|
|
@@ -104,7 +104,7 @@ __decorateClass([
|
|
|
104
104
|
property()
|
|
105
105
|
], SdTag.prototype, "download", 2);
|
|
106
106
|
SdTag = __decorateClass([
|
|
107
|
-
customElement("sd-1-
|
|
107
|
+
customElement("sd-1-28-0-tag")
|
|
108
108
|
], SdTag);
|
|
109
109
|
export {
|
|
110
110
|
SdTag as default
|