@solid-design-system/components 1.35.1 → 1.37.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/checkbox-group.js +1 -1
- package/dist/components/es/checkbox.js +1 -1
- package/dist/components/es/form.js +1 -1
- package/dist/components/es/input.js +1 -1
- package/dist/components/es/option.js +1 -1
- package/dist/components/es/radio-button.js +1 -0
- package/dist/components/es/radio-group.js +1 -1
- package/dist/components/es/radio.js +1 -1
- package/dist/components/es/select.js +2 -2
- package/dist/components/es/solid-components2.js +1 -1
- package/dist/components/es/solid-element.js +1 -1
- package/dist/components/es/switch.js +1 -1
- package/dist/components/es/textarea.js +1 -1
- package/dist/components/umd/solid-components.js +19 -19
- package/dist/custom-elements.json +1 -1
- package/dist/package/components/checkbox/checkbox.d.ts +2 -0
- package/dist/package/components/checkbox/checkbox.js +23 -6
- package/dist/package/components/checkbox-group/checkbox-group.js +1 -1
- package/dist/package/components/input/input.d.ts +3 -0
- package/dist/package/components/input/input.js +20 -19
- package/dist/package/components/option/option.js +0 -2
- package/dist/package/components/radio/radio.js +3 -3
- package/dist/package/components/radio-button/radio-button.d.ts +25 -0
- package/dist/package/components/radio-button/radio-button.js +118 -0
- package/dist/package/components/radio-group/radio-group.d.ts +4 -3
- package/dist/package/components/radio-group/radio-group.js +26 -26
- package/dist/package/components/select/select.d.ts +3 -3
- package/dist/package/components/select/select.js +18 -23
- package/dist/package/components/switch/switch.d.ts +2 -0
- package/dist/package/components/switch/switch.js +15 -7
- package/dist/package/components/textarea/textarea.d.ts +3 -0
- package/dist/package/components/textarea/textarea.js +30 -24
- package/dist/package/internal/form.d.ts +3 -1
- package/dist/package/internal/form.js +38 -10
- package/dist/package/internal/solid-element.d.ts +2 -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/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 -1
- package/dist/versioned-components/es/option.js +1 -1
- package/dist/versioned-components/es/popup.js +1 -1
- package/dist/versioned-components/es/radio-button.js +1 -0
- package/dist/versioned-components/es/radio-group.js +1 -1
- package/dist/versioned-components/es/radio.js +1 -1
- package/dist/versioned-components/es/select.js +2 -2
- 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/textarea.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 +2 -2
- 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 +3 -1
- package/dist/versioned-package/components/checkbox/checkbox.js +27 -10
- package/dist/versioned-package/components/checkbox-group/checkbox-group.d.ts +1 -1
- package/dist/versioned-package/components/checkbox-group/checkbox-group.js +6 -6
- 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 +8 -8
- 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/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 +4 -1
- package/dist/versioned-package/components/input/input.js +23 -22
- 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 +1 -1
- package/dist/versioned-package/components/notification/notification.js +5 -5
- package/dist/versioned-package/components/option/option.d.ts +1 -1
- package/dist/versioned-package/components/option/option.js +2 -4
- 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 +5 -5
- package/dist/versioned-package/components/radio-button/radio-button.d.ts +25 -0
- package/dist/versioned-package/components/radio-button/radio-button.js +118 -0
- package/dist/versioned-package/components/radio-group/radio-group.d.ts +6 -5
- package/dist/versioned-package/components/radio-group/radio-group.js +39 -39
- package/dist/versioned-package/components/select/select.d.ts +7 -7
- package/dist/versioned-package/components/select/select.js +44 -49
- 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 +3 -1
- package/dist/versioned-package/components/switch/switch.js +17 -9
- 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/textarea/textarea.d.ts +4 -1
- package/dist/versioned-package/components/textarea/textarea.js +32 -26
- 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.d.ts +3 -1
- package/dist/versioned-package/internal/form.js +40 -12
- package/dist/versioned-package/internal/solid-element.d.ts +2 -0
- package/dist/versioned-package/solid-components.d.ts +1 -0
- package/dist/versioned-package/solid-components.js +20 -18
- 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 +107 -33
- package/dist/web-types.json +177 -18
- package/package.json +5 -4
- package/dist/components/es/form-control.styles.js +0 -1
- package/dist/package/styles/form-control.styles.d.ts +0 -2
- package/dist/package/styles/form-control.styles.js +0 -5
- package/dist/versioned-components/es/form-control.styles.js +0 -1
- package/dist/versioned-package/styles/form-control.styles.d.ts +0 -2
- package/dist/versioned-package/styles/form-control.styles.js +0 -5
|
@@ -12,7 +12,6 @@ import { query, state, property } from "lit/decorators.js";
|
|
|
12
12
|
import { watch } from "../../internal/watch.js";
|
|
13
13
|
import componentStyles from "../../styles/component.styles.js";
|
|
14
14
|
import cx from "classix";
|
|
15
|
-
import formControlStyles from "../../styles/form-control.styles.js";
|
|
16
15
|
import SolidElement from "../../internal/solid-element.js";
|
|
17
16
|
var __defProp = Object.defineProperty;
|
|
18
17
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -42,6 +41,8 @@ let SdInput = class extends SolidElement {
|
|
|
42
41
|
);
|
|
43
42
|
this.localize = new LocalizeController(this);
|
|
44
43
|
this.hasFocus = false;
|
|
44
|
+
this.showValidStyle = false;
|
|
45
|
+
this.showInvalidStyle = false;
|
|
45
46
|
this.type = "text";
|
|
46
47
|
this.size = "lg";
|
|
47
48
|
this.value = "";
|
|
@@ -101,7 +102,7 @@ let SdInput = class extends SolidElement {
|
|
|
101
102
|
handleClearClick(event) {
|
|
102
103
|
this.value = "";
|
|
103
104
|
this.emit("sd-clear");
|
|
104
|
-
this.emit("sd-1-
|
|
105
|
+
this.emit("sd-1-37-0-input");
|
|
105
106
|
this.emit("sd-change");
|
|
106
107
|
this.input.focus();
|
|
107
108
|
event.stopPropagation();
|
|
@@ -113,10 +114,12 @@ let SdInput = class extends SolidElement {
|
|
|
113
114
|
handleInput() {
|
|
114
115
|
this.value = this.input.value;
|
|
115
116
|
this.formControlController.updateValidity();
|
|
116
|
-
this.emit("sd-1-
|
|
117
|
+
this.emit("sd-1-37-0-input");
|
|
117
118
|
}
|
|
118
|
-
handleInvalid() {
|
|
119
|
+
handleInvalid(event) {
|
|
119
120
|
this.formControlController.setValidity(false);
|
|
121
|
+
this.formControlController.emitInvalidEvent(event);
|
|
122
|
+
this.invalidMessage.textContent = event.target.validationMessage;
|
|
120
123
|
}
|
|
121
124
|
handleKeyDown(event) {
|
|
122
125
|
const hasModifier = event.metaKey || event.ctrlKey || event.shiftKey || event.altKey;
|
|
@@ -210,10 +213,7 @@ let SdInput = class extends SolidElement {
|
|
|
210
213
|
const hasLabel = this.label ? true : !!slots["label"];
|
|
211
214
|
const hasHelpText = this.helpText ? true : !!slots["helpText"];
|
|
212
215
|
const hasClearIcon = this.clearable && !this.readonly && (typeof this.value === "number" || this.value.length > 0);
|
|
213
|
-
const
|
|
214
|
-
const isInvalid = hasValidationAttr && !this.checkValidity();
|
|
215
|
-
const isValid = hasValidationAttr && this.checkValidity();
|
|
216
|
-
const inputState = this.disabled ? "disabled" : this.readonly ? "readonly" : this.hasFocus && isInvalid ? "activeInvalid" : this.hasFocus && isValid ? "activeValid" : this.hasFocus ? "active" : isInvalid ? "invalid" : isValid ? "valid" : "default";
|
|
216
|
+
const inputState = this.disabled ? "disabled" : this.readonly ? "readonly" : this.hasFocus && this.showInvalidStyle ? "activeInvalid" : this.hasFocus && this.showValidStyle ? "activeValid" : this.hasFocus ? "active" : this.showInvalidStyle ? "invalid" : this.showValidStyle ? "valid" : "default";
|
|
217
217
|
const textSize = this.size === "sm" ? "text-sm" : "text-base";
|
|
218
218
|
const textColor = {
|
|
219
219
|
disabled: "text-neutral-500",
|
|
@@ -242,40 +242,41 @@ let SdInput = class extends SolidElement {
|
|
|
242
242
|
md: "text-lg",
|
|
243
243
|
lg: "text-xl"
|
|
244
244
|
}[this.size];
|
|
245
|
-
return html`<div part="form-control" class="${cx(
|
|
246
|
-
"
|
|
247
|
-
borderColor
|
|
248
|
-
)}"></div><div part="base" class="${cx(
|
|
249
|
-
"px-4 flex flex-row items-center rounded-default transition-all",
|
|
245
|
+
return html`<div part="form-control" class="${cx(this.disabled && "pointer-events-none")}"><label part="form-control-label" id="label" class="${cx("mb-2", hasLabel ? "inline-block" : "hidden", textSize)}" for="input" aria-hidden="${hasLabel ? "false" : "true"}"><slot name="label">${this.label}</slot></label><div part="form-control-input" class="relative w-full"><div part="border" class="${cx("absolute w-full h-full pointer-events-none border rounded-default", borderColor)}"></div><div part="base" class="${cx(
|
|
246
|
+
"px-4 flex flex-row items-center rounded-default transition-all bg-white",
|
|
250
247
|
// Vertical Padding
|
|
251
248
|
this.size === "lg" ? "py-2" : "py-1",
|
|
252
249
|
// States
|
|
253
250
|
!this.disabled && !this.readonly ? "hover:bg-neutral-200" : "",
|
|
254
251
|
this.readonly && "bg-neutral-100",
|
|
255
|
-
|
|
256
|
-
textColor,
|
|
257
|
-
!this.value && "input--empty",
|
|
258
|
-
this.noSpinButtons && "input--no-spin-buttons",
|
|
259
|
-
isFirefox && "input--is-firefox"
|
|
252
|
+
textColor
|
|
260
253
|
)}">${slots["left"] ? html`<slot name="left" part="left" class="${cx("inline-flex", this.size === "sm" ? "mr-1" : "mr-2", iconColor, iconSize)}"></slot>` : ""} <input part="input" id="input" class="${cx(
|
|
261
254
|
"min-w-0 flex-grow focus:outline-none bg-transparent placeholder-neutral-700",
|
|
262
255
|
this.size === "sm" ? "h-6" : "h-8",
|
|
263
256
|
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-
|
|
257
|
+
)}" 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-37-0-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-1-37-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-37-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye"></sd-1-37-0-icon></slot>` : html`<slot name="hide-password-icon"><sd-1-37-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye-crossed-out"></sd-1-37-0-icon></slot>`}</button>` : ""} ${(this.type === "date" || this.type === "datetime-local") && !isFirefox ? html`<sd-1-37-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="calendar"></sd-1-37-0-icon>` : ""} ${this.type === "time" ? html`<sd-1-37-0-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="clock"></sd-1-37-0-icon>` : ""} ${this.showInvalidStyle ? html`<sd-1-37-0-icon class="${cx("text-error", iconMarginLeft, iconSize)}" library="system" name="risk"></sd-1-37-0-icon>` : ""} ${this.showValidStyle ? html`<sd-1-37-0-icon class="${cx("text-success", iconMarginLeft, iconSize)}" library="system" name="confirm"></sd-1-37-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}">${this.helpText}</slot></div>${this.formControlController.renderInvalidMessage()}`;
|
|
265
258
|
}
|
|
266
259
|
};
|
|
267
260
|
SdInput.styles = [
|
|
268
261
|
componentStyles,
|
|
269
|
-
formControlStyles,
|
|
270
262
|
SolidElement.styles,
|
|
271
|
-
css`:host{position:relative;box-sizing:border-box;display:inline-block;width:100%;text-align:left}:host([vertical]){display:block}:host([required]) #label
|
|
263
|
+
css`:host{position:relative;box-sizing:border-box;display:inline-block;width:100%;text-align:left}:host([vertical]){display:block}:host([required]) #label::after{content:' *'}details summary::-webkit-details-marker{display:none}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}input[type=time]::-webkit-calendar-picker-indicator{background:0 0}details summary::-webkit-details-marker,input[type=date]::-webkit-calendar-picker-indicator,input[type=datetime-local]::-webkit-calendar-picker-indicator,input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{display:none}`
|
|
272
264
|
];
|
|
273
265
|
__decorateClass([
|
|
274
266
|
query("#input")
|
|
275
267
|
], SdInput.prototype, "input", 2);
|
|
268
|
+
__decorateClass([
|
|
269
|
+
query("#invalid-message")
|
|
270
|
+
], SdInput.prototype, "invalidMessage", 2);
|
|
276
271
|
__decorateClass([
|
|
277
272
|
state()
|
|
278
273
|
], SdInput.prototype, "hasFocus", 2);
|
|
274
|
+
__decorateClass([
|
|
275
|
+
state()
|
|
276
|
+
], SdInput.prototype, "showValidStyle", 2);
|
|
277
|
+
__decorateClass([
|
|
278
|
+
state()
|
|
279
|
+
], SdInput.prototype, "showInvalidStyle", 2);
|
|
279
280
|
__decorateClass([
|
|
280
281
|
property({ reflect: true })
|
|
281
282
|
], SdInput.prototype, "type", 2);
|
|
@@ -383,7 +384,7 @@ __decorateClass([
|
|
|
383
384
|
watch("value", { waitUntilFirstUpdate: true })
|
|
384
385
|
], SdInput.prototype, "handleValueChange", 1);
|
|
385
386
|
SdInput = __decorateClass([
|
|
386
|
-
customElement("sd-1-
|
|
387
|
+
customElement("sd-1-37-0-input")
|
|
387
388
|
], SdInput);
|
|
388
389
|
export {
|
|
389
390
|
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-37-0-icon){font-size:1.25em;margin-bottom:-.25em}:host([size=sm][standalone]) ::slotted(sd-1-37-0-icon){font-size:var(--sd-font-size-base,1rem)}:host([size=lg][standalone]) ::slotted(sd-1-37-0-icon){font-size:var(--sd-font-size-xl,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-37-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-37-0-divider part="divider" class="${cx("w-full transition-all absolute -top-[1px] left-0", this.calculatePaddingX())}"></sd-1-37-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-37-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-37-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-37-0-navigation-item")
|
|
163
163
|
], SdNavigationItem);
|
|
164
164
|
export {
|
|
165
165
|
SdNavigationItem as default
|
|
@@ -129,7 +129,7 @@ let SdNotification = class extends SolidElement {
|
|
|
129
129
|
() => {
|
|
130
130
|
toastStack.removeChild(this);
|
|
131
131
|
resolve();
|
|
132
|
-
if (toastStack.querySelector("sd-1-
|
|
132
|
+
if (toastStack.querySelector("sd-1-37-0-notification") === null) {
|
|
133
133
|
toastStack.remove();
|
|
134
134
|
}
|
|
135
135
|
},
|
|
@@ -146,15 +146,15 @@ let SdNotification = class extends SolidElement {
|
|
|
146
146
|
warning: "bg-warning",
|
|
147
147
|
error: "bg-error"
|
|
148
148
|
}[this.variant]
|
|
149
|
-
)}"><sd-1-
|
|
149
|
+
)}"><sd-1-37-0-icon name="${{
|
|
150
150
|
info: "info-circle",
|
|
151
151
|
success: "confirm-circle",
|
|
152
152
|
warning: "exclamation-circle",
|
|
153
153
|
error: "warning"
|
|
154
|
-
}[this.variant] || ""}" library="system" class="h-6 w-6 text-white"></sd-1-
|
|
154
|
+
}[this.variant] || ""}" library="system" class="h-6 w-6 text-white"></sd-1-37-0-icon></slot><div part="content" class="${cx(
|
|
155
155
|
"h-full w-full p-1 gap-2 flex items-center justify-stretch bg-white",
|
|
156
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-
|
|
157
|
+
)}"><slot part="message" class="block w-full pl-3 py-2" aria-live="polite"></slot>${this.closable ? html`<sd-1-37-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-37-0-icon name="close" library="system" color="currentColor"></sd-1-37-0-icon></sd-1-37-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
158
|
}
|
|
159
159
|
};
|
|
160
160
|
SdNotification.styles = [
|
|
@@ -190,7 +190,7 @@ __decorateClass([
|
|
|
190
190
|
watch("duration")
|
|
191
191
|
], SdNotification.prototype, "handleDurationChange", 1);
|
|
192
192
|
SdNotification = __decorateClass([
|
|
193
|
-
customElement("sd-1-
|
|
193
|
+
customElement("sd-1-37-0-notification")
|
|
194
194
|
], SdNotification);
|
|
195
195
|
setDefaultAnimation("notification.show", {
|
|
196
196
|
keyframes: [
|
|
@@ -7,7 +7,6 @@ import { query, state, property } from "lit/decorators.js";
|
|
|
7
7
|
import { watch } from "../../internal/watch.js";
|
|
8
8
|
import componentStyles from "../../styles/component.styles.js";
|
|
9
9
|
import cx from "classix";
|
|
10
|
-
import formControlStyles from "../../styles/form-control.styles.js";
|
|
11
10
|
import SolidElement from "../../internal/solid-element.js";
|
|
12
11
|
var __defProp = Object.defineProperty;
|
|
13
12
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -95,12 +94,11 @@ let SdOption = class extends SolidElement {
|
|
|
95
94
|
)}"></span> ${this.checkbox ? html`<span id="control" part="control ${this.selected ? " control--checked" : "control--unchecked"}" class="${cx(
|
|
96
95
|
"relative flex flex-initial items-center justify-center border rounded-sm h-4 w-4 mr-2",
|
|
97
96
|
this.disabled ? "border-neutral-500" : this.selected ? "bg-accent border-accent" : "border-neutral-800"
|
|
98
|
-
)}">${this.selected ? html`<sd-1-
|
|
97
|
+
)}">${this.selected ? html`<sd-1-37-0-icon part="checked-icon" class="text-white w-3 h-3" library="system" name="status-hook"></sd-1-37-0-icon>` : ""}</span>` : ""} ${slots["left"] ? html`<slot name="left" part="left" class="inline-flex mr-2"></slot>` : ""}<slot part="label" class="inline-block flex-grow" @slotchange="${this.handleDefaultSlotChange}"></slot>${slots["right"] ? html`<slot name="right" part="right" class="inline-flex ml-2"></slot>` : ""}</div>`;
|
|
99
98
|
}
|
|
100
99
|
};
|
|
101
100
|
SdOption.styles = [
|
|
102
101
|
componentStyles,
|
|
103
|
-
formControlStyles,
|
|
104
102
|
SolidElement.styles,
|
|
105
103
|
css`:host{position:relative;display:block;width:100%;outline:2px solid transparent!important;outline-offset:2px!important}`
|
|
106
104
|
];
|
|
@@ -138,7 +136,7 @@ __decorateClass([
|
|
|
138
136
|
watch("value")
|
|
139
137
|
], SdOption.prototype, "handleValueChange", 1);
|
|
140
138
|
SdOption = __decorateClass([
|
|
141
|
-
customElement("sd-1-
|
|
139
|
+
customElement("sd-1-37-0-option")
|
|
142
140
|
], SdOption);
|
|
143
141
|
export {
|
|
144
142
|
SdOption as default
|
|
@@ -329,7 +329,7 @@ __decorateClass([
|
|
|
329
329
|
property({ attribute: "auto-size-padding", type: Number })
|
|
330
330
|
], SdPopup.prototype, "autoSizePadding", 2);
|
|
331
331
|
SdPopup = __decorateClass([
|
|
332
|
-
customElement("sd-1-
|
|
332
|
+
customElement("sd-1-37-0-popup")
|
|
333
333
|
], SdPopup);
|
|
334
334
|
export {
|
|
335
335
|
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-37-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 */
|
|
@@ -82,13 +82,13 @@ let SdRadio = class extends SolidElement {
|
|
|
82
82
|
}[this.size]
|
|
83
83
|
)}"><span part="${`${this.checked ? "control--checked" : "control--unchecked"}`}" class="${cx(
|
|
84
84
|
"flex-initial shrink-0 relative inline-flex items-center justify-center border rounded-full bg-white h-4 w-4",
|
|
85
|
-
this.disabled
|
|
85
|
+
this.disabled ? "border-neutral-500" : this.invalid ? "border-error hover:border-error-400 group-hover:border-error-400" : this.checked ? "border-accent hover:border-accent-550 group-hover:border-accent-550" : "border-neutral-800 hover:bg-neutral-200 group-hover:bg-neutral-200"
|
|
86
86
|
)}">${this.checked ? html`<span part="checked" class="${cx(
|
|
87
87
|
"rounded-full inline-flex text-white border bg-accent h-2.5 w-2.5",
|
|
88
|
-
this.disabled
|
|
88
|
+
this.disabled ? "bg-neutral-500" : this.invalid ? "bg-error hover:bg-error-400 group-hover:bg-error-400" : this.checked ? "bg-accent hover:bg-accent-550 group-hover:bg-accent-550" : "bg-neutral-800"
|
|
89
89
|
)}"></span>` : ""}</span><slot part="label" class="${cx(
|
|
90
90
|
"ml-2 select-none inline-block",
|
|
91
|
-
this.disabled
|
|
91
|
+
this.disabled ? "text-neutral-500" : this.invalid ? "text-error" : "text-black"
|
|
92
92
|
)}"></slot></span>`;
|
|
93
93
|
}
|
|
94
94
|
};
|
|
@@ -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-37-0-radio")
|
|
125
125
|
], SdRadio);
|
|
126
126
|
export {
|
|
127
127
|
SdRadio as default
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import SolidElement from '../../internal/solid-element';
|
|
2
|
+
export default class SdRadioButton extends SolidElement {
|
|
3
|
+
private readonly hasSlotController;
|
|
4
|
+
input: HTMLInputElement;
|
|
5
|
+
hiddenInput: HTMLInputElement;
|
|
6
|
+
protected hasFocus: boolean;
|
|
7
|
+
checked: boolean;
|
|
8
|
+
value: string;
|
|
9
|
+
disabled: boolean;
|
|
10
|
+
size: 'lg' | 'md' | 'sm';
|
|
11
|
+
connectedCallback(): void;
|
|
12
|
+
private handleBlur;
|
|
13
|
+
private handleClick;
|
|
14
|
+
private handleFocus;
|
|
15
|
+
handleDisabledChange(): void;
|
|
16
|
+
focus(options?: FocusOptions): void;
|
|
17
|
+
blur(): void;
|
|
18
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
19
|
+
static styles: import("lit").CSSResultGroup[];
|
|
20
|
+
}
|
|
21
|
+
declare global {
|
|
22
|
+
interface HTMLElementTagNameMap {
|
|
23
|
+
'sd-1-37-0-radio-button': SdRadioButton;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { css, html } from "lit";
|
|
2
|
+
import { customElement } from "../../internal/register-custom-element.js";
|
|
3
|
+
import { HasSlotController } from "../../internal/slot.js";
|
|
4
|
+
import { ifDefined } from "lit/directives/if-defined.js";
|
|
5
|
+
import { query, state, property } from "lit/decorators.js";
|
|
6
|
+
import { watch } from "../../internal/watch.js";
|
|
7
|
+
import componentStyles from "../../styles/component.styles.js";
|
|
8
|
+
import cx from "classix";
|
|
9
|
+
import SolidElement from "../../internal/solid-element.js";
|
|
10
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
13
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
14
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
15
|
+
if (decorator = decorators[i])
|
|
16
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
17
|
+
if (kind && result)
|
|
18
|
+
__defProp(target, key, result);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
let SdRadioButton = class extends SolidElement {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments);
|
|
24
|
+
this.hasSlotController = new HasSlotController(this, "[default]", "icon");
|
|
25
|
+
this.hasFocus = false;
|
|
26
|
+
this.checked = false;
|
|
27
|
+
this.disabled = false;
|
|
28
|
+
this.size = "lg";
|
|
29
|
+
}
|
|
30
|
+
connectedCallback() {
|
|
31
|
+
super.connectedCallback();
|
|
32
|
+
this.setAttribute("role", "presentation");
|
|
33
|
+
}
|
|
34
|
+
handleBlur() {
|
|
35
|
+
this.hasFocus = false;
|
|
36
|
+
this.emit("sd-blur");
|
|
37
|
+
}
|
|
38
|
+
handleClick(e) {
|
|
39
|
+
if (this.disabled) {
|
|
40
|
+
e.preventDefault();
|
|
41
|
+
e.stopPropagation();
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.checked = true;
|
|
45
|
+
}
|
|
46
|
+
handleFocus() {
|
|
47
|
+
this.hasFocus = true;
|
|
48
|
+
this.emit("sd-focus");
|
|
49
|
+
}
|
|
50
|
+
handleDisabledChange() {
|
|
51
|
+
this.setAttribute("aria-disabled", this.disabled ? "true" : "false");
|
|
52
|
+
}
|
|
53
|
+
/** Sets focus on the radio button. */
|
|
54
|
+
focus(options) {
|
|
55
|
+
this.input.focus(options);
|
|
56
|
+
}
|
|
57
|
+
/** Removes focus from the radio button. */
|
|
58
|
+
blur() {
|
|
59
|
+
this.input.blur();
|
|
60
|
+
}
|
|
61
|
+
render() {
|
|
62
|
+
const hasDefaultSlot = this.hasSlotController.test("[default]");
|
|
63
|
+
const hasIconSlot = this.hasSlotController.test("icon");
|
|
64
|
+
const buttonSizeClass = `${this.size}-${hasDefaultSlot ? "label" : "no-label"}`;
|
|
65
|
+
return html`<div part="base" role="presentation" class="relative"><button part="${`button${this.checked ? " button--checked" : ""}`}" role="radio" aria-checked="${this.checked}" class="${cx(
|
|
66
|
+
"relative text-center border rounded-default transition-all ease-in-out duration-100 items-center justify-center focus-visible:focus-outline",
|
|
67
|
+
this.size === "sm" ? "text-sm" : "text-base",
|
|
68
|
+
this.checked && !this.disabled ? "bg-primary border-primary text-white hover:bg-primary-500 hover:border-primary-500" : this.disabled && !this.checked ? "border-neutral-500 text-neutral-500 hover:cursor-not-allowed" : this.disabled && this.checked ? "bg-neutral-500 text-white hover:cursor-not-allowed" : "bg-transparent text-primary border-primary hover:bg-primary-100 hover:border-primary-500 hover:text-primary-500 cursor-pointer",
|
|
69
|
+
hasDefaultSlot && "px-4",
|
|
70
|
+
this.hasFocus && "focused-class",
|
|
71
|
+
hasDefaultSlot && "button--has-label",
|
|
72
|
+
hasIconSlot && "button--has-icon flex gap-2",
|
|
73
|
+
buttonSizeClass
|
|
74
|
+
)}" aria-disabled="${this.disabled}" type="button" value="${ifDefined(this.value)}" tabindex="${this.checked ? "0" : "-1"}" @blur="${this.handleBlur}" @focus="${this.handleFocus}" @click="${this.handleClick}"><slot name="icon" part="icon" class="${cx(
|
|
75
|
+
hasIconSlot && "inline-flex relative items-center",
|
|
76
|
+
{
|
|
77
|
+
sm: "text-base",
|
|
78
|
+
md: "text-lg",
|
|
79
|
+
lg: "text-xl"
|
|
80
|
+
}[this.size]
|
|
81
|
+
)}" ?hidden="${!hasIconSlot}"></slot>${hasDefaultSlot ? html`<slot part="label" class="button__label inline-flex relative items-center whitespace-nowrap"></slot>` : null}</button></div>`;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
SdRadioButton.styles = [
|
|
85
|
+
SolidElement.styles,
|
|
86
|
+
componentStyles,
|
|
87
|
+
css`:host{display:block;width:-moz-min-content;width:min-content}.hidden-input{all:unset;position:absolute;inset:var(--sd-spacing-0,0);z-index:-10;opacity:var(--sd-opacity-0,0);outline-style:dotted;outline-width:1px;outline-color:rgb(var(--sd-color-error,204 25 55) / 1)}.lg-label{height:var(--sd-spacing-12,3rem)}.lg-no-label{height:var(--sd-spacing-12,3rem);width:var(--sd-spacing-12,3rem)}.md-label{height:var(--sd-spacing-10,2.5rem)}.md-no-label{height:var(--sd-spacing-10,2.5rem);width:var(--sd-spacing-10,2.5rem)}.sm-label{height:var(--sd-spacing-8,2rem)}.sm-no-label{height:var(--sd-spacing-8,2rem);width:var(--sd-spacing-8,2rem)}:host(.sd-1-37-0-button-group__button--first:not(.sd-1-37-0-button-group__button--last)) button{border-top-right-radius:var(--sd-border-radius-none,0);border-bottom-right-radius:var(--sd-border-radius-none,0)}:host(.sd-1-37-0-button-group__button--inner) button{border-radius:var(--sd-border-radius-none,0)}:host(.sd-1-37-0-button-group__button--last:not(.sd-1-37-0-button-group__button--first)) button{border-top-left-radius:var(--sd-border-radius-none,0);border-bottom-left-radius:var(--sd-border-radius-none,0)}:host(.sd-1-37-0-button-group__button:not(.sd-1-37-0-button-group__button--first)){margin-inline-start:-1px}:host(.sd-1-37-0-button-group__button--hover){z-index:10}:host(.sd-1-37-0-button-group__button--focus),:host(.sd-1-37-0-button-group__button[checked]){z-index:20}`
|
|
88
|
+
];
|
|
89
|
+
__decorateClass([
|
|
90
|
+
query(".button")
|
|
91
|
+
], SdRadioButton.prototype, "input", 2);
|
|
92
|
+
__decorateClass([
|
|
93
|
+
query(".hidden-input")
|
|
94
|
+
], SdRadioButton.prototype, "hiddenInput", 2);
|
|
95
|
+
__decorateClass([
|
|
96
|
+
state()
|
|
97
|
+
], SdRadioButton.prototype, "hasFocus", 2);
|
|
98
|
+
__decorateClass([
|
|
99
|
+
property({ type: Boolean, reflect: true })
|
|
100
|
+
], SdRadioButton.prototype, "checked", 2);
|
|
101
|
+
__decorateClass([
|
|
102
|
+
property()
|
|
103
|
+
], SdRadioButton.prototype, "value", 2);
|
|
104
|
+
__decorateClass([
|
|
105
|
+
property({ type: Boolean, reflect: true })
|
|
106
|
+
], SdRadioButton.prototype, "disabled", 2);
|
|
107
|
+
__decorateClass([
|
|
108
|
+
property({ reflect: true })
|
|
109
|
+
], SdRadioButton.prototype, "size", 2);
|
|
110
|
+
__decorateClass([
|
|
111
|
+
watch("disabled", { waitUntilFirstUpdate: true })
|
|
112
|
+
], SdRadioButton.prototype, "handleDisabledChange", 1);
|
|
113
|
+
SdRadioButton = __decorateClass([
|
|
114
|
+
customElement("sd-1-37-0-radio-button")
|
|
115
|
+
], SdRadioButton);
|
|
116
|
+
export {
|
|
117
|
+
SdRadioButton as default
|
|
118
|
+
};
|
|
@@ -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-37-0-button-group': typeof SdButtonGroup;
|
|
8
8
|
};
|
|
9
9
|
protected readonly formControlController: FormControlController;
|
|
10
10
|
private readonly hasSlotController;
|
|
@@ -12,11 +12,12 @@ export default class SdRadioGroup extends SolidElement implements SolidFormContr
|
|
|
12
12
|
private validationTimeout;
|
|
13
13
|
defaultSlot: HTMLSlotElement;
|
|
14
14
|
validationInput: HTMLInputElement;
|
|
15
|
+
invalidMessage: HTMLDivElement;
|
|
15
16
|
private hasButtonGroup;
|
|
16
17
|
defaultValue: string;
|
|
17
|
-
|
|
18
|
-
private errorText;
|
|
18
|
+
showInvalidStyle: boolean;
|
|
19
19
|
label: string;
|
|
20
|
+
boldLabel: boolean;
|
|
20
21
|
name: string;
|
|
21
22
|
value: string;
|
|
22
23
|
size: 'lg' | 'sm';
|
|
@@ -30,7 +31,7 @@ export default class SdRadioGroup extends SolidElement implements SolidFormContr
|
|
|
30
31
|
private getAllRadios;
|
|
31
32
|
private handleRadioClick;
|
|
32
33
|
private handleKeyDown;
|
|
33
|
-
|
|
34
|
+
focus(): void;
|
|
34
35
|
private handleInvalid;
|
|
35
36
|
private syncRadioElements;
|
|
36
37
|
private syncRadios;
|
|
@@ -47,6 +48,6 @@ export default class SdRadioGroup extends SolidElement implements SolidFormContr
|
|
|
47
48
|
}
|
|
48
49
|
declare global {
|
|
49
50
|
interface HTMLElementTagNameMap {
|
|
50
|
-
'sd-1-
|
|
51
|
+
'sd-1-37-0-radio-group': SdRadioGroup;
|
|
51
52
|
}
|
|
52
53
|
}
|