@solid-design-system/components 3.3.1 → 3.5.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.js +1 -1
- package/dist/components/es/input.js +1 -1
- package/dist/components/es/option.js +1 -1
- package/dist/components/es/scrollable.js +1 -0
- package/dist/components/es/select.js +1 -1
- package/dist/components/es/solid-components2.js +1 -1
- package/dist/components/es/solid-element.js +3 -3
- package/dist/components/es/step-group.js +1 -0
- package/dist/components/es/step.js +1 -0
- 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.js +1 -1
- package/dist/package/components/icon/library.system.d.ts +1 -2
- package/dist/package/components/icon/library.system.js +2 -7
- package/dist/package/components/input/input.js +1 -1
- package/dist/package/components/option/option.js +1 -1
- package/dist/package/components/scrollable/scrollable.d.ts +28 -0
- package/dist/package/components/scrollable/scrollable.js +156 -0
- package/dist/package/components/select/select.js +1 -1
- package/dist/package/components/step/step.d.ts +27 -0
- package/dist/package/components/step/step.js +147 -0
- package/dist/package/components/step-group/step-group.d.ts +22 -0
- package/dist/package/components/step-group/step-group.js +127 -0
- package/dist/package/components/textarea/textarea.js +1 -1
- package/dist/package/solid-components.d.ts +3 -0
- package/dist/package/solid-components.js +30 -24
- package/dist/package/styles/paragraph/paragraph.css.js +4 -0
- 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/dialog.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/map-marker.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 -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/scrollable.js +1 -0
- package/dist/versioned-components/es/select.js +3 -3
- package/dist/versioned-components/es/solid-components2.js +1 -1
- package/dist/versioned-components/es/solid-element.js +3 -3
- package/dist/versioned-components/es/spinner.js +1 -1
- package/dist/versioned-components/es/step-group.js +1 -0
- package/dist/versioned-components/es/step.js +1 -0
- package/dist/versioned-components/es/switch.js +1 -1
- package/dist/versioned-components/es/tab-group.js +1 -1
- package/dist/versioned-components/es/tab-panel.js +1 -1
- package/dist/versioned-components/es/tab.js +1 -1
- package/dist/versioned-components/es/tag.js +1 -1
- package/dist/versioned-components/es/teaser-media.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 +1 -1
- package/dist/versioned-package/components/checkbox/checkbox.js +3 -3
- 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/dialog/dialog.d.ts +1 -1
- package/dist/versioned-package/components/dialog/dialog.js +2 -2
- 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/icon/library.system.d.ts +1 -2
- package/dist/versioned-package/components/icon/library.system.js +2 -7
- 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 +2 -2
- 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/map-marker/map-marker.d.ts +1 -1
- package/dist/versioned-package/components/map-marker/map-marker.js +1 -1
- 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 -2
- 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-button/radio-button.d.ts +1 -1
- package/dist/versioned-package/components/radio-button/radio-button.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 +13 -13
- package/dist/versioned-package/components/scrollable/scrollable.d.ts +28 -0
- package/dist/versioned-package/components/scrollable/scrollable.js +156 -0
- package/dist/versioned-package/components/select/select.d.ts +4 -4
- package/dist/versioned-package/components/select/select.js +25 -25
- 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/step/step.d.ts +27 -0
- package/dist/versioned-package/components/step/step.js +147 -0
- package/dist/versioned-package/components/step-group/step-group.d.ts +22 -0
- package/dist/versioned-package/components/step-group/step-group.js +127 -0
- package/dist/versioned-package/components/switch/switch.d.ts +1 -1
- package/dist/versioned-package/components/switch/switch.js +1 -1
- package/dist/versioned-package/components/tab/tab.d.ts +1 -1
- package/dist/versioned-package/components/tab/tab.js +2 -2
- package/dist/versioned-package/components/tab-group/tab-group.d.ts +1 -1
- package/dist/versioned-package/components/tab-group/tab-group.js +13 -13
- package/dist/versioned-package/components/tab-panel/tab-panel.d.ts +1 -1
- package/dist/versioned-package/components/tab-panel/tab-panel.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/teaser-media/teaser-media.js +1 -1
- package/dist/versioned-package/components/textarea/textarea.d.ts +1 -1
- package/dist/versioned-package/components/textarea/textarea.js +2 -2
- 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 +3 -3
- package/dist/versioned-package/solid-components.d.ts +3 -0
- package/dist/versioned-package/solid-components.js +30 -24
- package/dist/versioned-package/styles/headline/headline.css.js +1 -1
- package/dist/versioned-package/styles/paragraph/paragraph.css.js +4 -0
- package/dist/versioned-package/styles/tailwind.css.js +1 -1
- package/dist/versioned-package/utilities/autocomplete-config.js +4 -4
- package/dist/versioned-styles/solid-styles.css +1 -1
- package/dist/vscode.html-custom-data.json +356 -38
- package/dist/web-types.json +1019 -139
- package/package.json +3 -3
|
@@ -134,7 +134,7 @@ let SdCheckbox = class extends SolidElement {
|
|
|
134
134
|
filled: "border-accent hover:border-accent-550 group-hover:border-accent-550 bg-accent group-hover:bg-accent-550",
|
|
135
135
|
default: "border-neutral-800 hover:bg-neutral-200 group-hover:bg-neutral-200 bg-white"
|
|
136
136
|
}[checkboxState]
|
|
137
|
-
)}">${this.checked ? html`<sd-icon part="checked-icon" class="text-white w-3 h-3" library="system" name="status-
|
|
137
|
+
)}">${this.checked ? html`<sd-icon part="checked-icon" class="text-white w-3 h-3" library="system" name="status-check"></sd-icon>` : ""} ${!this.checked && this.indeterminate ? html`<sd-icon part="indeterminate-icon" class="text-white w-3 h-3" library="system" name="status-minus"></sd-icon>` : ""} </span><span part="label" id="label" class="${cx(
|
|
138
138
|
"select-none inline-block ml-2",
|
|
139
139
|
this.disabled ? "text-neutral-500" : this.showInvalidStyle ? "text-error" : "text-black"
|
|
140
140
|
)}"><slot></slot></span></label> ${this.formControlController.renderInvalidMessage()}`;
|
|
@@ -6,11 +6,10 @@ export declare const icons: {
|
|
|
6
6
|
clock: string;
|
|
7
7
|
close: string;
|
|
8
8
|
'closing-round': string;
|
|
9
|
-
confirm: string;
|
|
10
9
|
eye: string;
|
|
11
10
|
'eye-crossed-out': string;
|
|
12
11
|
'info-circle': string;
|
|
13
|
-
'status-
|
|
12
|
+
'status-check': string;
|
|
14
13
|
'status-minus': string;
|
|
15
14
|
pause: string;
|
|
16
15
|
risk: string;
|
|
@@ -31,11 +31,6 @@ const icons = {
|
|
|
31
31
|
<path d="M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Z"/>
|
|
32
32
|
<path d="M16.373 7.627a1 1 0 0 0-1.414 0l-2.96 2.96-2.96-2.96a1 1 0 0 0-1.413 1.414l-.001-.001 2.96 2.96-2.96 2.96a1 1 0 0 0 1.414 1.414l2.96-2.96 2.96 2.96a1 1 0 0 0 1.414-1.414L13.413 12l2.96-2.96a1 1 0 0 0 0-1.414v.001Z"/>
|
|
33
33
|
</svg>`,
|
|
34
|
-
confirm: `
|
|
35
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
36
|
-
<path d="M21.528 2.167a1 1 0 0 0-1.384.277l-.002.004-11.333 17-5.127-5.153a1 1 0 0 0-1.413 1.414l-.001-.001 6 6a.997.997 0 0 0 .707.293h.1c.307-.032.57-.199.731-.44l.002-.004 12-18a1 1 0 0 0-.276-1.388l-.004-.002Z"/>
|
|
37
|
-
</svg>
|
|
38
|
-
`,
|
|
39
34
|
eye: `
|
|
40
35
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
|
41
36
|
<path d="M12 18.96c-5.263 0-10-5.68-10-6.96 0-1.28 4.737-6.96 10-6.96S22 10.72 22 12c0 1.28-4.737 6.96-10 6.96ZM4.1 12c.76 1.197 4.07 4.96 7.9 4.96s7.14-3.767 7.9-4.96c-.76-1.197-4.07-4.96-7.9-4.96S4.86 10.807 4.1 12Z"/>
|
|
@@ -50,8 +45,8 @@ const icons = {
|
|
|
50
45
|
</svg>
|
|
51
46
|
`,
|
|
52
47
|
"info-circle": `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Z"/><path d="M13.333 7.833a1.5 1.5 0 1 1-3.001-.001 1.5 1.5 0 0 1 3.001.001ZM13 11.667a1 1 0 0 0-1-1h-1a1 1 0 0 0 0 2v2.667h2v-3.667Z"/><path d="M11 16.333v-1h-1a1 1 0 0 0 0 2h2a1 1 0 0 1-1-1Zm3-1h-1v1a1 1 0 0 1-1 1h2a1 1 0 0 0 0-2Z"/><path d="M13 16.333v-1h-2v1a1 1 0 0 0 2 0Z"/></svg>`,
|
|
53
|
-
"status-
|
|
54
|
-
<svg xmlns="http://www.w3.org/2000/svg"
|
|
48
|
+
"status-check": `
|
|
49
|
+
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 12 13">
|
|
55
50
|
<path fill="currentColor" d="m9.947 1.138-.005.008-.001.003-5.56 8.34-2.434-2.447-.004-.004a.648.648 0 0 0-1.093.475c0 .172.066.328.175.444l.003.004 3 2.999c.117.117.28.19.46.19h.065c.2-.021.37-.13.475-.286l.005-.008.001-.002 5.994-8.992a.65.65 0 0 0-.18-.902l-.007-.005-.002-.002a.65.65 0 0 0-.892.185Z"/>
|
|
56
51
|
</svg>
|
|
57
52
|
`,
|
|
@@ -256,7 +256,7 @@ let SdInput = class extends SolidElement {
|
|
|
256
256
|
"min-w-0 flex-grow focus:outline-none bg-transparent placeholder-neutral-700",
|
|
257
257
|
this.size === "sm" ? "h-6" : "h-8",
|
|
258
258
|
textSize
|
|
259
|
-
)}" 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-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-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-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye"></sd-icon></slot>` : html`<slot name="hide-password-icon"><sd-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye-crossed-out"></sd-icon></slot>`}</button>` : ""} ${(this.type === "date" || this.type === "datetime-local") && !isFirefox ? html`<sd-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="calendar"></sd-icon>` : ""} ${this.type === "time" ? html`<sd-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="clock"></sd-icon>` : ""} ${this.type === "search" ? html`<button class="flex items-center" type="button" tabindex="-1"><sd-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="magnifying-glass"></sd-icon></button>` : ""} ${this.showInvalidStyle ? html`<sd-icon part="invalid-icon" class="${cx("text-error", iconMarginLeft, iconSize)}" library="system" name="risk"></sd-icon>` : ""} ${this.showValidStyle && this.styleOnValid ? html`<sd-icon class="${cx("text-success flex-shrink-0", iconMarginLeft, iconSize)}" library="system" name="
|
|
259
|
+
)}" 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-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-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-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye"></sd-icon></slot>` : html`<slot name="hide-password-icon"><sd-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="eye-crossed-out"></sd-icon></slot>`}</button>` : ""} ${(this.type === "date" || this.type === "datetime-local") && !isFirefox ? html`<sd-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="calendar"></sd-icon>` : ""} ${this.type === "time" ? html`<sd-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="clock"></sd-icon>` : ""} ${this.type === "search" ? html`<button class="flex items-center" type="button" tabindex="-1"><sd-icon class="${cx(iconColor, iconMarginLeft, iconSize)}" library="system" name="magnifying-glass"></sd-icon></button>` : ""} ${this.showInvalidStyle ? html`<sd-icon part="invalid-icon" class="${cx("text-error", iconMarginLeft, iconSize)}" library="system" name="risk"></sd-icon>` : ""} ${this.showValidStyle && this.styleOnValid ? html`<sd-icon class="${cx("text-success flex-shrink-0", iconMarginLeft, iconSize)}" library="system" name="status-check" part="valid-icon"></sd-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()}`;
|
|
260
260
|
}
|
|
261
261
|
};
|
|
262
262
|
SdInput.styles = [
|
|
@@ -94,7 +94,7 @@ let SdOption = class extends SolidElement {
|
|
|
94
94
|
)}"></span> ${this.checkbox ? html`<span id="control" part="control ${this.selected ? " control--checked" : "control--unchecked"}" class="${cx(
|
|
95
95
|
"relative flex flex-initial items-center justify-center border rounded-sm h-4 w-4 mr-2",
|
|
96
96
|
this.disabled ? "border-neutral-500" : this.selected ? "bg-accent border-accent" : "border-neutral-800"
|
|
97
|
-
)}">${this.selected ? html`<sd-icon part="checked-icon" class="text-white w-3 h-3" library="system" name="status-
|
|
97
|
+
)}">${this.selected ? html`<sd-icon part="checked-icon" class="text-white w-3 h-3" library="system" name="status-check"></sd-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>`;
|
|
98
98
|
}
|
|
99
99
|
};
|
|
100
100
|
SdOption.styles = [
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import SolidElement from '../../internal/solid-element';
|
|
2
|
+
export default class SdScrollable extends SolidElement {
|
|
3
|
+
orientation: 'horizontal' | 'vertical' | 'auto';
|
|
4
|
+
buttons: boolean;
|
|
5
|
+
step: number;
|
|
6
|
+
scrollbars: boolean;
|
|
7
|
+
shadows: boolean;
|
|
8
|
+
inset: boolean;
|
|
9
|
+
private canScroll;
|
|
10
|
+
private isScrollHorizontalEnabled;
|
|
11
|
+
private isScrollVerticalEnabled;
|
|
12
|
+
private resizeObserver;
|
|
13
|
+
private scrollContainer;
|
|
14
|
+
connectedCallback(): void;
|
|
15
|
+
disconnectedCallback(): void;
|
|
16
|
+
updated(changedProperties: Map<string, unknown>): void;
|
|
17
|
+
private updateScrollEnabledFlags;
|
|
18
|
+
private get container();
|
|
19
|
+
updateScrollIndicatorVisibility(): void;
|
|
20
|
+
handleScroll(direction: 'left' | 'right' | 'up' | 'down'): void;
|
|
21
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
22
|
+
static styles: import("lit").CSSResultGroup[];
|
|
23
|
+
}
|
|
24
|
+
declare global {
|
|
25
|
+
interface HTMLElementTagNameMap {
|
|
26
|
+
'sd-scrollable': SdScrollable;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { unsafeCSS, css, html } from "lit";
|
|
2
|
+
import { customElement } from "../../internal/register-custom-element.js";
|
|
3
|
+
import { property, state } from "lit/decorators.js";
|
|
4
|
+
import componentStyles from "../../styles/component.styles.js";
|
|
5
|
+
import cx from "classix";
|
|
6
|
+
import InteractiveStyles from "../../styles/interactive/interactive.css.js";
|
|
7
|
+
import SolidElement from "../../internal/solid-element.js";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
11
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
12
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
13
|
+
if (decorator = decorators[i])
|
|
14
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
15
|
+
if (kind && result)
|
|
16
|
+
__defProp(target, key, result);
|
|
17
|
+
return result;
|
|
18
|
+
};
|
|
19
|
+
let SdScrollable = class extends SolidElement {
|
|
20
|
+
constructor() {
|
|
21
|
+
super(...arguments);
|
|
22
|
+
this.orientation = "horizontal";
|
|
23
|
+
this.buttons = false;
|
|
24
|
+
this.step = 150;
|
|
25
|
+
this.scrollbars = false;
|
|
26
|
+
this.shadows = false;
|
|
27
|
+
this.inset = false;
|
|
28
|
+
this.canScroll = {
|
|
29
|
+
left: false,
|
|
30
|
+
right: false,
|
|
31
|
+
up: false,
|
|
32
|
+
down: false
|
|
33
|
+
};
|
|
34
|
+
this.isScrollHorizontalEnabled = false;
|
|
35
|
+
this.isScrollVerticalEnabled = false;
|
|
36
|
+
this.scrollContainer = null;
|
|
37
|
+
}
|
|
38
|
+
connectedCallback() {
|
|
39
|
+
super.connectedCallback();
|
|
40
|
+
this.updateScrollEnabledFlags();
|
|
41
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
42
|
+
this.updateScrollIndicatorVisibility();
|
|
43
|
+
});
|
|
44
|
+
this.updateComplete.then(() => {
|
|
45
|
+
this.scrollContainer = this.renderRoot.querySelector(".scroll-container");
|
|
46
|
+
if (this.scrollContainer) {
|
|
47
|
+
this.resizeObserver.observe(this.scrollContainer);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
disconnectedCallback() {
|
|
52
|
+
super.disconnectedCallback();
|
|
53
|
+
if (this.scrollContainer) {
|
|
54
|
+
this.resizeObserver.unobserve(this.scrollContainer);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
updated(changedProperties) {
|
|
58
|
+
super.updated(changedProperties);
|
|
59
|
+
if (changedProperties.has("orientation") || changedProperties.has("buttons") || changedProperties.has("shadows")) {
|
|
60
|
+
this.updateScrollEnabledFlags();
|
|
61
|
+
this.updateScrollIndicatorVisibility();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
updateScrollEnabledFlags() {
|
|
65
|
+
const dir = this.orientation;
|
|
66
|
+
this.isScrollHorizontalEnabled = dir === "horizontal" || dir === "auto";
|
|
67
|
+
this.isScrollVerticalEnabled = dir === "vertical" || dir === "auto";
|
|
68
|
+
}
|
|
69
|
+
get container() {
|
|
70
|
+
return this.renderRoot.querySelector(".scroll-container");
|
|
71
|
+
}
|
|
72
|
+
updateScrollIndicatorVisibility() {
|
|
73
|
+
const container = this.container;
|
|
74
|
+
if (container) {
|
|
75
|
+
const canScrollLeft = this.isScrollHorizontalEnabled && container.scrollLeft > 0;
|
|
76
|
+
const canScrollRight = this.isScrollHorizontalEnabled && container.scrollLeft + container.clientWidth < container.scrollWidth - 1;
|
|
77
|
+
const canScrollUp = this.isScrollVerticalEnabled && container.scrollTop > 0;
|
|
78
|
+
const canScrollDown = this.isScrollVerticalEnabled && container.scrollTop + container.clientHeight < container.scrollHeight - 1;
|
|
79
|
+
this.canScroll = {
|
|
80
|
+
left: canScrollLeft,
|
|
81
|
+
right: canScrollRight,
|
|
82
|
+
up: canScrollUp,
|
|
83
|
+
down: canScrollDown
|
|
84
|
+
};
|
|
85
|
+
if (canScrollLeft || canScrollUp) {
|
|
86
|
+
this.dispatchEvent(new CustomEvent("start"));
|
|
87
|
+
}
|
|
88
|
+
if (canScrollRight || canScrollDown) {
|
|
89
|
+
this.dispatchEvent(new CustomEvent("end"));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
handleScroll(direction) {
|
|
94
|
+
var _a;
|
|
95
|
+
const scrollAmount = direction === "left" || direction === "up" ? -this.step : this.step;
|
|
96
|
+
const scrollDirection = direction === "left" || direction === "right" ? "left" : "top";
|
|
97
|
+
const scrollOptions = {
|
|
98
|
+
behavior: "smooth"
|
|
99
|
+
};
|
|
100
|
+
scrollOptions[scrollDirection] = scrollAmount;
|
|
101
|
+
(_a = this.scrollContainer) == null ? void 0 : _a.scrollBy(scrollOptions);
|
|
102
|
+
const eventName = `button-${direction}`;
|
|
103
|
+
this.dispatchEvent(new CustomEvent(eventName, { bubbles: true, composed: true }));
|
|
104
|
+
}
|
|
105
|
+
render() {
|
|
106
|
+
const scrollButtonClasses = "relative p-0 border-0 bg-transparent cursor-pointer w-5 h-5 flex items-center justify-center sd-interactive rounded-md flex text-lg";
|
|
107
|
+
const scrollShadowClasses = "scroll-shadow absolute z-10 pointer-events-none";
|
|
108
|
+
return html`<div part="base" class="${cx(
|
|
109
|
+
"scroll-container flex overflow-hidden flex-1",
|
|
110
|
+
this.orientation === "horizontal" && "scroll-horizontal flex-row whitespace-nowrap items-center overflow-x-scroll overflow-y-hidden",
|
|
111
|
+
this.orientation === "vertical" && "scroll-vertical justify-items-center overflow-y-scroll overflow-x-hidden",
|
|
112
|
+
this.orientation === "auto" && "scroll-auto overflow-auto",
|
|
113
|
+
this.scrollbars ? "show-scrollbars" : "hide-scrollbars",
|
|
114
|
+
this.inset ? "p-4" : ""
|
|
115
|
+
)}" @scroll="${this.updateScrollIndicatorVisibility}"><div part="scroll-content" class="flex-1"><slot></slot></div></div>${this.buttons ? html`${this.isScrollHorizontalEnabled ? html`${this.canScroll.left ? html`<div part="button-left" class="absolute z-10 flex items-center justify-center top-0 left-0 h-full w-8"><button part="button-start" class="${cx(scrollButtonClasses)}" @click="${() => this.handleScroll("left")}"><slot name="icon-start"><sd-icon library="system" name="chevron-up" class="rotate-[-90deg]"></sd-icon></slot></button></div>` : null} ${this.canScroll.right ? html`<div part="button-right" class="absolute z-10 flex items-center justify-center top-0 right-0 h-full w-8"><button part="button-end" class="${cx(scrollButtonClasses)}" @click="${() => this.handleScroll("right")}"><slot name="icon-end"><sd-icon library="system" name="chevron-down" class="rotate-[-90deg]"></sd-icon></slot></button></div>` : null}` : null} ${this.isScrollVerticalEnabled ? html`${this.canScroll.up ? html`<div part="button-top" class="absolute z-10 flex items-center justify-center top-0 left-0 w-full h-8"><button part="button-start" class="${cx(scrollButtonClasses)}" @click="${() => this.handleScroll("up")}"><slot name="icon-start"><sd-icon library="system" name="chevron-up"></sd-icon></slot></button></div>` : null} ${this.canScroll.down ? html`<div part="button-bottom" class="absolute z-10 flex items-center justify-center bottom-0 left-0 w-full h-8"><button part="button-end" class="${cx(scrollButtonClasses)}" @click="${() => this.handleScroll("down")}"><slot name="icon-end"><sd-icon library="system" name="chevron-down"></sd-icon></slot></button></div>` : null}` : null}` : null} ${this.shadows ? html`${this.isScrollHorizontalEnabled ? html`${this.canScroll.left ? html`<div part="shadow-left" class="${scrollShadowClasses} left top-0 left-0 w-[6px] h-full"></div>` : null} ${this.canScroll.right ? html`<div part="shadow-right" class="${scrollShadowClasses} right top-0 right-0 w-[6px] h-full"></div>` : null}` : null} ${this.isScrollVerticalEnabled ? html`${this.canScroll.up ? html`<div part="shadow-top" class="${scrollShadowClasses} top top-0 left-0 w-full h-[6px]"></div>` : null} ${this.canScroll.down ? html`<div part="shadow-bottom" class="${scrollShadowClasses} bottom bottom-0 left-0 w-full h-[6px]"></div>` : null}` : null}` : null}`;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
SdScrollable.styles = [
|
|
119
|
+
SolidElement.styles,
|
|
120
|
+
unsafeCSS(InteractiveStyles),
|
|
121
|
+
componentStyles,
|
|
122
|
+
css`:host{--gradient-color:rgba(255, 255, 255, 0);--gradient:var(--gradient-color) 0%,#fff 80%,#fff 100%;position:relative;display:flex;overflow:hidden}.hide-scrollbars{scrollbar-width:none;-ms-overflow-style:none}.hide-scrollbars::-webkit-scrollbar{display:none}.scroll-container::-webkit-scrollbar-thumb{background-color:transparent}.scroll-container:hover::-webkit-scrollbar-thumb{background:var(--background-neutral-400,#c3c3c3);border-radius:var(--sd-border-radius-sm,.125rem)}.scroll-container::-webkit-scrollbar{height:var(--sd-spacing-1,.25rem);width:var(--sd-spacing-1,.25rem)}.scroll-auto{overflow:auto}[part=button-left]{background:linear-gradient(270deg,var(--gradient))}[part=button-right]{background:linear-gradient(90deg,var(--gradient))}[part=button-top]{background:linear-gradient(0deg,var(--gradient))}[part=button-bottom]{background:linear-gradient(180deg,var(--gradient))}[part=shadow-left]{background:linear-gradient(270deg,rgba(24,24,24,0) 50%,rgba(24,24,24,.4) 100%)}[part=shadow-right]{background:linear-gradient(90deg,rgba(24,24,24,0) 50%,rgba(24,24,24,.4) 100%)}[part=shadow-top]{background:linear-gradient(0deg,rgba(24,24,24,0) 50%,rgba(24,24,24,.4) 100%)}[part=shadow-bottom]{background:linear-gradient(180deg,rgba(24,24,24,0) 50%,rgba(24,24,24,.4) 100%)}.sd-icon--top{align-self:flex-start}.sd-icon--down{align-self:flex-end}`
|
|
123
|
+
];
|
|
124
|
+
__decorateClass([
|
|
125
|
+
property({ type: String, reflect: true })
|
|
126
|
+
], SdScrollable.prototype, "orientation", 2);
|
|
127
|
+
__decorateClass([
|
|
128
|
+
property({ type: Boolean, reflect: true })
|
|
129
|
+
], SdScrollable.prototype, "buttons", 2);
|
|
130
|
+
__decorateClass([
|
|
131
|
+
property({ type: Number, reflect: true })
|
|
132
|
+
], SdScrollable.prototype, "step", 2);
|
|
133
|
+
__decorateClass([
|
|
134
|
+
property({ type: Boolean, reflect: true })
|
|
135
|
+
], SdScrollable.prototype, "scrollbars", 2);
|
|
136
|
+
__decorateClass([
|
|
137
|
+
property({ type: Boolean, reflect: true })
|
|
138
|
+
], SdScrollable.prototype, "shadows", 2);
|
|
139
|
+
__decorateClass([
|
|
140
|
+
property({ type: Boolean, reflect: true })
|
|
141
|
+
], SdScrollable.prototype, "inset", 2);
|
|
142
|
+
__decorateClass([
|
|
143
|
+
state()
|
|
144
|
+
], SdScrollable.prototype, "canScroll", 2);
|
|
145
|
+
__decorateClass([
|
|
146
|
+
state()
|
|
147
|
+
], SdScrollable.prototype, "isScrollHorizontalEnabled", 2);
|
|
148
|
+
__decorateClass([
|
|
149
|
+
state()
|
|
150
|
+
], SdScrollable.prototype, "isScrollVerticalEnabled", 2);
|
|
151
|
+
SdScrollable = __decorateClass([
|
|
152
|
+
customElement("sd-scrollable")
|
|
153
|
+
], SdScrollable);
|
|
154
|
+
export {
|
|
155
|
+
SdScrollable as default
|
|
156
|
+
};
|
|
@@ -543,7 +543,7 @@ let SdSelect = class extends SolidElement {
|
|
|
543
543
|
"appearance-none outline-none flex-grow bg-transparent w-full",
|
|
544
544
|
cursorStyles,
|
|
545
545
|
this.multiple && this.useTags && this.value.length > 0 ? "hidden" : ""
|
|
546
|
-
)}" type="text" placeholder="${this.placeholder}" .disabled="${this.disabled}" .value="${this.displayLabel}" autocomplete="off" spellcheck="false" autocapitalize="off" readonly="readonly" aria-controls="listbox" aria-expanded="${this.open ? "true" : "false"}" aria-haspopup="listbox" aria-labelledby="label" aria-disabled="${this.disabled ? "true" : "false"}" aria-describedby="help-text" role="combobox" tabindex="0" @focus="${this.handleFocus}" @blur="${this.handleBlur}"> ${this.multiple && this.useTags ? html`<div part="tags" class="flex-grow flex flex-wrap items-center gap-1">${this.tags}</div>` : ""} <input class="${cx("value-input absolute top-0 left-0 w-full h-full opacity-0 -z-10", cursorStyles)}" type="text" ?disabled="${this.disabled}" ?required="${this.required}" .value="${Array.isArray(this.value) ? this.value.join(", ") : this.value}" tabindex="-1" aria-hidden="true" @focus="${() => this.focus()}" @invalid="${this.handleInvalid}"> ${hasClearIcon ? html`<button part="clear-button" class="${cx("select__clear flex justify-center", iconMarginLeft)}" type="button" aria-label="${this.localize.term("clearEntry")}" @mousedown="${this.handleClearMouseDown}" @click="${this.handleClearClick}" tabindex="-1"><slot name="clear-icon"><sd-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-icon></slot></button>` : ""} ${this.showInvalidStyle ? html`<sd-icon part="invalid-icon" class="${cx(iconMarginLeft, iconSize)}" library="system" name="risk"></sd-icon>` : ""} ${this.styleOnValid && this.showValidStyle ? html`<sd-icon part="valid-icon" class="${cx("flex-shrink-0", iconMarginLeft, iconSize)}" library="system" name="
|
|
546
|
+
)}" type="text" placeholder="${this.placeholder}" .disabled="${this.disabled}" .value="${this.displayLabel}" autocomplete="off" spellcheck="false" autocapitalize="off" readonly="readonly" aria-controls="listbox" aria-expanded="${this.open ? "true" : "false"}" aria-haspopup="listbox" aria-labelledby="label" aria-disabled="${this.disabled ? "true" : "false"}" aria-describedby="help-text" role="combobox" tabindex="0" @focus="${this.handleFocus}" @blur="${this.handleBlur}"> ${this.multiple && this.useTags ? html`<div part="tags" class="flex-grow flex flex-wrap items-center gap-1">${this.tags}</div>` : ""} <input class="${cx("value-input absolute top-0 left-0 w-full h-full opacity-0 -z-10", cursorStyles)}" type="text" ?disabled="${this.disabled}" ?required="${this.required}" .value="${Array.isArray(this.value) ? this.value.join(", ") : this.value}" tabindex="-1" aria-hidden="true" @focus="${() => this.focus()}" @invalid="${this.handleInvalid}"> ${hasClearIcon ? html`<button part="clear-button" class="${cx("select__clear flex justify-center", iconMarginLeft)}" type="button" aria-label="${this.localize.term("clearEntry")}" @mousedown="${this.handleClearMouseDown}" @click="${this.handleClearClick}" tabindex="-1"><slot name="clear-icon"><sd-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-icon></slot></button>` : ""} ${this.showInvalidStyle ? html`<sd-icon part="invalid-icon" class="${cx(iconMarginLeft, iconSize)}" library="system" name="risk"></sd-icon>` : ""} ${this.styleOnValid && this.showValidStyle ? html`<sd-icon part="valid-icon" class="${cx("flex-shrink-0", iconMarginLeft, iconSize)}" library="system" name="status-check"></sd-icon>` : ""}<slot name="expand-icon" part="expand-icon" class="${cx(
|
|
547
547
|
"inline-flex ml-2 transition-all",
|
|
548
548
|
this.open ? "rotate-180" : "rotate-0",
|
|
549
549
|
this.disabled ? "text-neutral-500" : "text-primary",
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import SolidElement from '../../internal/solid-element';
|
|
2
|
+
export default class SdStep extends SolidElement {
|
|
3
|
+
size: 'lg' | 'sm';
|
|
4
|
+
orientation: 'horizontal' | 'vertical';
|
|
5
|
+
disabled: boolean;
|
|
6
|
+
current: boolean;
|
|
7
|
+
noTail: boolean;
|
|
8
|
+
notInteractive: boolean;
|
|
9
|
+
label: string;
|
|
10
|
+
description: string;
|
|
11
|
+
index: number;
|
|
12
|
+
href: string;
|
|
13
|
+
connectedCallback(): void;
|
|
14
|
+
private isLink;
|
|
15
|
+
private handleBlur;
|
|
16
|
+
private handleFocus;
|
|
17
|
+
handleCurrentChange(): void;
|
|
18
|
+
handleDisabledChange(): void;
|
|
19
|
+
handleInteractivityChange(): void;
|
|
20
|
+
render(): import("lit-html").TemplateResult;
|
|
21
|
+
static styles: import("lit").CSSResultGroup[];
|
|
22
|
+
}
|
|
23
|
+
declare global {
|
|
24
|
+
interface HTMLElementTagNameMap {
|
|
25
|
+
'sd-step': SdStep;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { unsafeCSS, css } from "lit";
|
|
2
|
+
import { customElement } from "../../internal/register-custom-element.js";
|
|
3
|
+
import { literal, html } from "lit/static-html.js";
|
|
4
|
+
import { ifDefined } from "lit/directives/if-defined.js";
|
|
5
|
+
import { 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 ParagraphStyles from "../../styles/paragraph/paragraph.css.js";
|
|
10
|
+
import SolidElement from "../../internal/solid-element.js";
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
13
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
14
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
15
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
16
|
+
if (decorator = decorators[i])
|
|
17
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
18
|
+
if (kind && result)
|
|
19
|
+
__defProp(target, key, result);
|
|
20
|
+
return result;
|
|
21
|
+
};
|
|
22
|
+
let SdStep = class extends SolidElement {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
this.size = "lg";
|
|
26
|
+
this.orientation = "horizontal";
|
|
27
|
+
this.disabled = false;
|
|
28
|
+
this.current = false;
|
|
29
|
+
this.noTail = false;
|
|
30
|
+
this.notInteractive = false;
|
|
31
|
+
this.label = "";
|
|
32
|
+
this.description = "";
|
|
33
|
+
this.index = 1;
|
|
34
|
+
this.href = "";
|
|
35
|
+
}
|
|
36
|
+
connectedCallback() {
|
|
37
|
+
super.connectedCallback();
|
|
38
|
+
}
|
|
39
|
+
isLink() {
|
|
40
|
+
return this.href ? true : false;
|
|
41
|
+
}
|
|
42
|
+
handleBlur() {
|
|
43
|
+
this.emit("sd-blur");
|
|
44
|
+
}
|
|
45
|
+
handleFocus() {
|
|
46
|
+
this.emit("sd-focus");
|
|
47
|
+
}
|
|
48
|
+
handleCurrentChange() {
|
|
49
|
+
if (this.current) {
|
|
50
|
+
this.disabled = false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
handleDisabledChange() {
|
|
54
|
+
if (this.disabled) {
|
|
55
|
+
this.current = false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
handleInteractivityChange() {
|
|
59
|
+
if (this.notInteractive) {
|
|
60
|
+
this.current = false;
|
|
61
|
+
this.disabled = false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
render() {
|
|
65
|
+
const isLink = this.isLink();
|
|
66
|
+
const tag = this.notInteractive ? literal`div` : isLink ? literal`a` : literal`button`;
|
|
67
|
+
return html`<div part="base" class="${cx(
|
|
68
|
+
"flex pt-1",
|
|
69
|
+
this.orientation === "horizontal" ? "flex-col w-full" : "flex-row gap-4 items-stretch h-full w-min overflow-hidden",
|
|
70
|
+
!this.disabled && !this.current && !this.notInteractive && "group"
|
|
71
|
+
)}" @focus="${this.handleFocus}" @blur="${this.handleBlur}"><div part="circle-and-tail-container" class="${cx(
|
|
72
|
+
"flex shrink-0 gap-2",
|
|
73
|
+
this.noTail && "w-max",
|
|
74
|
+
this.orientation === "horizontal" ? "flex-row" : "flex-col items-stretch",
|
|
75
|
+
this.orientation === "horizontal" ? this.size === "lg" ? "translateLg" : "translateSm" : this.size === "lg" ? "mt-1" : "mt-3"
|
|
76
|
+
)}"><${tag} part="circle" ?disabled="${this.disabled}" tabindex="${!this.disabled && !this.current ? "0" : "-1"}" href="${ifDefined(isLink ? this.href : void 0)}" aria-current="${this.current ? "step" : void 0}" aria-label="Step ${this.index}" class="${cx(
|
|
77
|
+
"border rounded-full aspect-square circle flex items-center justify-center shrink-0 font-bold select-none",
|
|
78
|
+
!this.disabled && !this.current ? "focus-visible:focus-outline" : "focus-visible:outline-none",
|
|
79
|
+
this.notInteractive ? this.size === "lg" ? "w-[72px]" : "w-12" : this.size === "lg" ? "w-12" : "w-8",
|
|
80
|
+
this.disabled && "border-neutral-400 text-neutral-500",
|
|
81
|
+
!this.disabled && !this.current && !this.notInteractive && "border-primary group-hover:bg-primary-100 group-hover:border-primary-500",
|
|
82
|
+
this.notInteractive ? "border-neutral-400" : "group-hover:cursor-pointer",
|
|
83
|
+
this.current && "bg-accent border-none text-white"
|
|
84
|
+
)}"><slot name="circle-content" class="${cx(
|
|
85
|
+
!this.disabled && !this.current && !this.notInteractive && "text-primary group-hover:text-primary-500 group-hover:fill-primary-500",
|
|
86
|
+
this.notInteractive && "text-primary",
|
|
87
|
+
this.size === "lg" ? "text-lg" : "text-sm"
|
|
88
|
+
)}">${!this.disabled && !this.current && !this.notInteractive ? html`<sd-icon name="status-check" library="system"></sd-icon>` : html`${this.index}`}</slot></${tag}>${this.noTail ? "" : this.orientation === "horizontal" ? html`<sd-divider part="tail" orientation="horizontal" class="${cx(
|
|
89
|
+
"w-full my-auto mr-2",
|
|
90
|
+
!this.disabled && !this.current && !this.notInteractive && "tail-to-primary"
|
|
91
|
+
)}"></sd-divider>` : html`<sd-divider part="tail" orientation="vertical" class="${cx(
|
|
92
|
+
"flex-grow flex-shrink-0 basis-auto h-full w-[1px] mx-auto",
|
|
93
|
+
!this.disabled && !this.current && !this.notInteractive && "tail-to-primary"
|
|
94
|
+
)}"></sd-divider>`}</div><div part="text-container" class="${cx("mt-4 mr-4 break-words flex flex-col gap-2", this.orientation === "horizontal" ? "text-center w-40" : "w-max text-left", this.disabled && "!text-neutral-500")}"><div part="label" class="${cx("!font-bold sd-paragraph", this.disabled && "!text-neutral-500", !this.disabled && !this.current && !this.notInteractive ? "!text-primary group-hover:!text-primary-500 group-hover:cursor-pointer" : "text-black")}"><slot name="label">${this.label}</slot></div><div part="description" class="${cx("sd-paragraph sd-paragraph--size-sm", this.disabled && "!text-neutral-500")}">${this.description || html`<slot></slot>`}</div></div></div>`;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
SdStep.styles = [
|
|
98
|
+
SolidElement.styles,
|
|
99
|
+
componentStyles,
|
|
100
|
+
unsafeCSS(ParagraphStyles),
|
|
101
|
+
css`:host{flex:1 1 0%}[part=base]:not(:has(sd-divider)){height:-moz-max-content;height:max-content}:host([no-tail]){flex-grow:0}.translateLg{transform:translateX(55px)}.translateSm{transform:translateX(64px)}.tail-to-primary::part(main){--tw-border-opacity:1!important;border-color:rgb(var(--sd-color-primary,0 53 142) / var(--tw-border-opacity))!important}.group:hover .tail-to-primary::part(main){--tw-border-opacity:1!important;border-color:rgb(var(--sd-color-primary-500,70 109 175) / var(--tw-border-opacity))!important}sd-divider::part(main){--tw-border-opacity:1!important;border-color:rgb(var(--sd-color-neutral-400,195 195 195) / var(--tw-border-opacity))!important}`
|
|
102
|
+
];
|
|
103
|
+
__decorateClass([
|
|
104
|
+
property({ reflect: true })
|
|
105
|
+
], SdStep.prototype, "size", 2);
|
|
106
|
+
__decorateClass([
|
|
107
|
+
property({ reflect: true })
|
|
108
|
+
], SdStep.prototype, "orientation", 2);
|
|
109
|
+
__decorateClass([
|
|
110
|
+
property({ type: Boolean, reflect: true })
|
|
111
|
+
], SdStep.prototype, "disabled", 2);
|
|
112
|
+
__decorateClass([
|
|
113
|
+
property({ type: Boolean, reflect: true })
|
|
114
|
+
], SdStep.prototype, "current", 2);
|
|
115
|
+
__decorateClass([
|
|
116
|
+
property({ reflect: true, type: Boolean, attribute: "no-tail" })
|
|
117
|
+
], SdStep.prototype, "noTail", 2);
|
|
118
|
+
__decorateClass([
|
|
119
|
+
property({ type: Boolean, reflect: true, attribute: "not-interactive" })
|
|
120
|
+
], SdStep.prototype, "notInteractive", 2);
|
|
121
|
+
__decorateClass([
|
|
122
|
+
property()
|
|
123
|
+
], SdStep.prototype, "label", 2);
|
|
124
|
+
__decorateClass([
|
|
125
|
+
property()
|
|
126
|
+
], SdStep.prototype, "description", 2);
|
|
127
|
+
__decorateClass([
|
|
128
|
+
property({ type: Number, reflect: true, attribute: "index" })
|
|
129
|
+
], SdStep.prototype, "index", 2);
|
|
130
|
+
__decorateClass([
|
|
131
|
+
property()
|
|
132
|
+
], SdStep.prototype, "href", 2);
|
|
133
|
+
__decorateClass([
|
|
134
|
+
watch("current")
|
|
135
|
+
], SdStep.prototype, "handleCurrentChange", 1);
|
|
136
|
+
__decorateClass([
|
|
137
|
+
watch("disabled")
|
|
138
|
+
], SdStep.prototype, "handleDisabledChange", 1);
|
|
139
|
+
__decorateClass([
|
|
140
|
+
watch("notInteractive")
|
|
141
|
+
], SdStep.prototype, "handleInteractivityChange", 1);
|
|
142
|
+
SdStep = __decorateClass([
|
|
143
|
+
customElement("sd-step")
|
|
144
|
+
], SdStep);
|
|
145
|
+
export {
|
|
146
|
+
SdStep as default
|
|
147
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import SolidElement from '../../internal/solid-element';
|
|
2
|
+
export default class SdStepGroup extends SolidElement {
|
|
3
|
+
private steps;
|
|
4
|
+
body: HTMLSlotElement;
|
|
5
|
+
size: 'lg' | 'sm';
|
|
6
|
+
orientation: 'horizontal' | 'vertical';
|
|
7
|
+
activeStep: number;
|
|
8
|
+
notInteractive: boolean;
|
|
9
|
+
connectedCallback(): void;
|
|
10
|
+
updateSize(): void;
|
|
11
|
+
updateOrientation(): void;
|
|
12
|
+
private getAllSteps;
|
|
13
|
+
setActiveStep(index: number): void;
|
|
14
|
+
handleInteractivityChange(): void;
|
|
15
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
16
|
+
static styles: import("lit").CSSResultGroup[];
|
|
17
|
+
}
|
|
18
|
+
declare global {
|
|
19
|
+
interface HTMLElementTagNameMap {
|
|
20
|
+
'sd-step-group': SdStepGroup;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { css, html } from "lit";
|
|
2
|
+
import { customElement } from "../../internal/register-custom-element.js";
|
|
3
|
+
import { query, property } from "lit/decorators.js";
|
|
4
|
+
import { watch } from "../../internal/watch.js";
|
|
5
|
+
import componentStyles from "../../styles/component.styles.js";
|
|
6
|
+
import cx from "classix";
|
|
7
|
+
import SolidElement from "../../internal/solid-element.js";
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
11
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
12
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
13
|
+
if (decorator = decorators[i])
|
|
14
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
15
|
+
if (kind && result)
|
|
16
|
+
__defProp(target, key, result);
|
|
17
|
+
return result;
|
|
18
|
+
};
|
|
19
|
+
let SdStepGroup = class extends SolidElement {
|
|
20
|
+
constructor() {
|
|
21
|
+
super(...arguments);
|
|
22
|
+
this.steps = [];
|
|
23
|
+
this.size = "lg";
|
|
24
|
+
this.orientation = "horizontal";
|
|
25
|
+
this.activeStep = 0;
|
|
26
|
+
this.notInteractive = false;
|
|
27
|
+
}
|
|
28
|
+
connectedCallback() {
|
|
29
|
+
super.connectedCallback();
|
|
30
|
+
this.updateComplete.then(() => {
|
|
31
|
+
this.steps = this.getAllSteps();
|
|
32
|
+
this.steps[this.steps.length - 1].noTail = true;
|
|
33
|
+
let activeStep;
|
|
34
|
+
this.steps.forEach((step, index) => {
|
|
35
|
+
step.index = index + 1;
|
|
36
|
+
step.size = this.size;
|
|
37
|
+
step.orientation = this.orientation;
|
|
38
|
+
if (this.notInteractive) {
|
|
39
|
+
step.current = false;
|
|
40
|
+
step.disabled = false;
|
|
41
|
+
step.notInteractive = true;
|
|
42
|
+
} else if (step.current) {
|
|
43
|
+
activeStep = index;
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
this.setActiveStep(activeStep || this.activeStep);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
updateSize() {
|
|
50
|
+
this.steps.forEach((step) => {
|
|
51
|
+
step.size = this.size;
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
updateOrientation() {
|
|
55
|
+
this.steps.forEach((step) => {
|
|
56
|
+
step.orientation = this.orientation;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
getAllSteps() {
|
|
60
|
+
return [...this.body.assignedElements()].filter((el) => el.tagName.toLowerCase() === "sd-step");
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Sets the active step.
|
|
64
|
+
* @param index The index of the step to set as active.
|
|
65
|
+
*/
|
|
66
|
+
setActiveStep(index) {
|
|
67
|
+
if (index >= 0 && index < this.steps.length && !this.notInteractive) {
|
|
68
|
+
this.activeStep = index;
|
|
69
|
+
this.steps.forEach((step, i) => {
|
|
70
|
+
if (i === index) {
|
|
71
|
+
step.current = true;
|
|
72
|
+
} else if (i > index) {
|
|
73
|
+
step.disabled = true;
|
|
74
|
+
} else {
|
|
75
|
+
step.current = false;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
handleInteractivityChange() {
|
|
81
|
+
if (this.notInteractive) {
|
|
82
|
+
this.steps.forEach((step) => {
|
|
83
|
+
step.current = false;
|
|
84
|
+
step.disabled = false;
|
|
85
|
+
step.notInteractive = true;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
render() {
|
|
90
|
+
return html`<div part="base" role="${!this.notInteractive ? "navigation" : "group"}" class="${cx("flex", this.orientation === "vertical" && "flex-col h-full")}"><slot part="body"></slot></div>`;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
SdStepGroup.styles = [
|
|
94
|
+
SolidElement.styles,
|
|
95
|
+
componentStyles,
|
|
96
|
+
css`:host{width:-moz-max-content;width:max-content}`
|
|
97
|
+
];
|
|
98
|
+
__decorateClass([
|
|
99
|
+
query("[part=body]")
|
|
100
|
+
], SdStepGroup.prototype, "body", 2);
|
|
101
|
+
__decorateClass([
|
|
102
|
+
property({ reflect: true })
|
|
103
|
+
], SdStepGroup.prototype, "size", 2);
|
|
104
|
+
__decorateClass([
|
|
105
|
+
property({ reflect: true })
|
|
106
|
+
], SdStepGroup.prototype, "orientation", 2);
|
|
107
|
+
__decorateClass([
|
|
108
|
+
property({ type: Number, reflect: true, attribute: "active-step" })
|
|
109
|
+
], SdStepGroup.prototype, "activeStep", 2);
|
|
110
|
+
__decorateClass([
|
|
111
|
+
property({ type: Boolean, reflect: true, attribute: "not-interactive" })
|
|
112
|
+
], SdStepGroup.prototype, "notInteractive", 2);
|
|
113
|
+
__decorateClass([
|
|
114
|
+
watch("size", { waitUntilFirstUpdate: true })
|
|
115
|
+
], SdStepGroup.prototype, "updateSize", 1);
|
|
116
|
+
__decorateClass([
|
|
117
|
+
watch("orientation", { waitUntilFirstUpdate: true })
|
|
118
|
+
], SdStepGroup.prototype, "updateOrientation", 1);
|
|
119
|
+
__decorateClass([
|
|
120
|
+
watch("notInteractive")
|
|
121
|
+
], SdStepGroup.prototype, "handleInteractivityChange", 1);
|
|
122
|
+
SdStepGroup = __decorateClass([
|
|
123
|
+
customElement("sd-step-group")
|
|
124
|
+
], SdStepGroup);
|
|
125
|
+
export {
|
|
126
|
+
SdStepGroup as default
|
|
127
|
+
};
|
|
@@ -211,7 +211,7 @@ let SdTextarea = class extends SolidElement {
|
|
|
211
211
|
"flex-grow focus:outline-none bg-transparent placeholder-neutral-700 resize-none",
|
|
212
212
|
this.disabled && "cursor-not-allowed",
|
|
213
213
|
textSize
|
|
214
|
-
)}" title="${this.title}" name="${ifDefined(this.name)}" .value="${live(this.value)}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?required="${this.required}" placeholder="${ifDefined(this.placeholder)}" minlength="${ifDefined(this.minlength)}" maxlength="${ifDefined(this.maxlength)}" rows="${ifDefined(this.rows)}" autocapitalize="${ifDefined(this.autocapitalize)}" autocorrect="${ifDefined(this.autocorrect)}" ?autofocus="${this.autofocus}" spellcheck="${ifDefined(this.spellcheck)}" enterkeyhint="${ifDefined(this.enterkeyhint)}" inputmode="${ifDefined(this.inputmode)}" aria-describedby="help-text" @change="${this.handleChange}" @input="${this.handleInput}" @invalid="${this.handleInvalid}" @focus="${this.handleFocus}" @blur="${this.handleBlur}"></textarea> ${this.showInvalidStyle ? html`<sd-icon class="${cx("text-error absolute right-4 bg-white group-hover:bg-neutral-200", iconSizeMarginLeft)}" library="system" name="risk" part="invalid-icon"></sd-icon>` : ""} ${this.styleOnValid && this.showValidStyle ? html`<sd-icon class="${cx("text-success absolute right-4 bg-white group-hover:bg-neutral-200", iconSizeMarginLeft)}" library="system" name="
|
|
214
|
+
)}" title="${this.title}" name="${ifDefined(this.name)}" .value="${live(this.value)}" ?disabled="${this.disabled}" ?readonly="${this.readonly}" ?required="${this.required}" placeholder="${ifDefined(this.placeholder)}" minlength="${ifDefined(this.minlength)}" maxlength="${ifDefined(this.maxlength)}" rows="${ifDefined(this.rows)}" autocapitalize="${ifDefined(this.autocapitalize)}" autocorrect="${ifDefined(this.autocorrect)}" ?autofocus="${this.autofocus}" spellcheck="${ifDefined(this.spellcheck)}" enterkeyhint="${ifDefined(this.enterkeyhint)}" inputmode="${ifDefined(this.inputmode)}" aria-describedby="help-text" @change="${this.handleChange}" @input="${this.handleInput}" @invalid="${this.handleInvalid}" @focus="${this.handleFocus}" @blur="${this.handleBlur}"></textarea> ${this.showInvalidStyle ? html`<sd-icon class="${cx("text-error absolute right-4 bg-white group-hover:bg-neutral-200", iconSizeMarginLeft)}" library="system" name="risk" part="invalid-icon"></sd-icon>` : ""} ${this.styleOnValid && this.showValidStyle ? html`<sd-icon class="${cx("text-success absolute right-4 bg-white group-hover:bg-neutral-200", iconSizeMarginLeft)}" library="system" name="status-check" part="valid-icon"></sd-icon>` : ""}</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>${this.formControlController.renderInvalidMessage()}`;
|
|
215
215
|
}
|
|
216
216
|
};
|
|
217
217
|
SdTextarea.styles = [
|