@solid-design-system/components 1.39.0 → 2.0.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/input.js +1 -1
- package/dist/components/es/select.js +3 -3
- package/dist/components/es/textarea.js +1 -1
- package/dist/components/umd/solid-components.js +11 -11
- package/dist/custom-elements.json +1 -1
- package/dist/package/components/input/input.d.ts +1 -0
- package/dist/package/components/input/input.js +6 -2
- package/dist/package/components/select/select.d.ts +1 -0
- package/dist/package/components/select/select.js +6 -2
- package/dist/package/components/textarea/textarea.d.ts +1 -0
- package/dist/package/components/textarea/textarea.js +7 -2
- 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 -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/select.js +3 -3
- 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 +1 -1
- package/dist/versioned-package/components/checkbox/checkbox.js +4 -4
- package/dist/versioned-package/components/checkbox-group/checkbox-group.d.ts +1 -1
- package/dist/versioned-package/components/checkbox-group/checkbox-group.js +5 -5
- package/dist/versioned-package/components/divider/divider.d.ts +1 -1
- package/dist/versioned-package/components/divider/divider.js +2 -2
- package/dist/versioned-package/components/drawer/drawer.d.ts +1 -1
- package/dist/versioned-package/components/drawer/drawer.js +2 -2
- package/dist/versioned-package/components/dropdown/dropdown.d.ts +1 -1
- package/dist/versioned-package/components/dropdown/dropdown.js +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 +2 -1
- package/dist/versioned-package/components/input/input.js +9 -5
- 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 -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 +15 -15
- package/dist/versioned-package/components/select/select.d.ts +5 -4
- package/dist/versioned-package/components/select/select.js +33 -29
- package/dist/versioned-package/components/spinner/spinner.d.ts +1 -1
- package/dist/versioned-package/components/spinner/spinner.js +1 -1
- package/dist/versioned-package/components/switch/switch.d.ts +1 -1
- package/dist/versioned-package/components/switch/switch.js +2 -2
- package/dist/versioned-package/components/tag/tag.d.ts +1 -1
- package/dist/versioned-package/components/tag/tag.js +2 -2
- package/dist/versioned-package/components/teaser/teaser.js +1 -1
- package/dist/versioned-package/components/textarea/textarea.d.ts +2 -1
- package/dist/versioned-package/components/textarea/textarea.js +9 -4
- 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-styles/solid-styles.css +1 -1
- package/dist/vscode.html-custom-data.json +62 -32
- package/dist/web-types.json +5771 -1
- package/package.json +3 -3
|
@@ -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-
|
|
97
|
+
)}">${this.selected ? html`<sd-2-0-0-icon part="checked-icon" class="text-white w-3 h-3" library="system" name="status-hook"></sd-2-0-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>`;
|
|
98
98
|
}
|
|
99
99
|
};
|
|
100
100
|
SdOption.styles = [
|
|
@@ -136,7 +136,7 @@ __decorateClass([
|
|
|
136
136
|
watch("value")
|
|
137
137
|
], SdOption.prototype, "handleValueChange", 1);
|
|
138
138
|
SdOption = __decorateClass([
|
|
139
|
-
customElement("sd-
|
|
139
|
+
customElement("sd-2-0-0-option")
|
|
140
140
|
], SdOption);
|
|
141
141
|
export {
|
|
142
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-
|
|
332
|
+
customElement("sd-2-0-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-
|
|
76
|
+
"sd-2-0-0-radio group inline-flex items-start items-center text-base leading-normal text-black cursor-pointer align-middle",
|
|
77
77
|
this.disabled && "hover:cursor-not-allowed",
|
|
78
78
|
{
|
|
79
79
|
/* sizes, fonts */
|
|
@@ -121,7 +121,7 @@ __decorateClass([
|
|
|
121
121
|
watch("disabled", { waitUntilFirstUpdate: true })
|
|
122
122
|
], SdRadio.prototype, "handleDisabledChange", 1);
|
|
123
123
|
SdRadio = __decorateClass([
|
|
124
|
-
customElement("sd-
|
|
124
|
+
customElement("sd-2-0-0-radio")
|
|
125
125
|
], SdRadio);
|
|
126
126
|
export {
|
|
127
127
|
SdRadio as default
|
|
@@ -84,7 +84,7 @@ let SdRadioButton = class extends SolidElement {
|
|
|
84
84
|
SdRadioButton.styles = [
|
|
85
85
|
SolidElement.styles,
|
|
86
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-
|
|
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-2-0-0-button-group__button--first:not(.sd-2-0-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-2-0-0-button-group__button--inner) button{border-radius:var(--sd-border-radius-none,0)}:host(.sd-2-0-0-button-group__button--last:not(.sd-2-0-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-2-0-0-button-group__button:not(.sd-2-0-0-button-group__button--first)){margin-inline-start:-1px}:host(.sd-2-0-0-button-group__button--hover){z-index:10}:host(.sd-2-0-0-button-group__button--focus),:host(.sd-2-0-0-button-group__button[checked]){z-index:20}`
|
|
88
88
|
];
|
|
89
89
|
__decorateClass([
|
|
90
90
|
query(".button")
|
|
@@ -111,7 +111,7 @@ __decorateClass([
|
|
|
111
111
|
watch("disabled", { waitUntilFirstUpdate: true })
|
|
112
112
|
], SdRadioButton.prototype, "handleDisabledChange", 1);
|
|
113
113
|
SdRadioButton = __decorateClass([
|
|
114
|
-
customElement("sd-
|
|
114
|
+
customElement("sd-2-0-0-radio-button")
|
|
115
115
|
], SdRadioButton);
|
|
116
116
|
export {
|
|
117
117
|
SdRadioButton as default
|
|
@@ -4,7 +4,7 @@ import SolidElement from '../../internal/solid-element';
|
|
|
4
4
|
import type { SolidFormControl } from '../../internal/solid-element';
|
|
5
5
|
export default class SdRadioGroup extends SolidElement implements SolidFormControl {
|
|
6
6
|
static dependencies: {
|
|
7
|
-
'sd-
|
|
7
|
+
'sd-2-0-0-button-group': typeof SdButtonGroup;
|
|
8
8
|
};
|
|
9
9
|
protected readonly formControlController: FormControlController;
|
|
10
10
|
private readonly hasSlotController;
|
|
@@ -48,6 +48,6 @@ export default class SdRadioGroup extends SolidElement implements SolidFormContr
|
|
|
48
48
|
}
|
|
49
49
|
declare global {
|
|
50
50
|
interface HTMLElementTagNameMap {
|
|
51
|
-
'sd-
|
|
51
|
+
'sd-2-0-0-radio-group': SdRadioGroup;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
@@ -68,10 +68,10 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
68
68
|
this.formControlController.updateValidity();
|
|
69
69
|
}
|
|
70
70
|
getAllRadios() {
|
|
71
|
-
return [...this.querySelectorAll("sd-
|
|
71
|
+
return [...this.querySelectorAll("sd-2-0-0-radio, sd-2-0-0-radio-button")];
|
|
72
72
|
}
|
|
73
73
|
handleRadioClick(event) {
|
|
74
|
-
const target = event.target.closest("sd-
|
|
74
|
+
const target = event.target.closest("sd-2-0-0-radio, sd-2-0-0-radio-button");
|
|
75
75
|
const radios = this.getAllRadios();
|
|
76
76
|
const oldValue = this.value;
|
|
77
77
|
if (target.disabled) {
|
|
@@ -81,7 +81,7 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
81
81
|
radios.forEach((radio) => radio.checked = radio === target);
|
|
82
82
|
if (this.value !== oldValue) {
|
|
83
83
|
this.emit("sd-change");
|
|
84
|
-
this.emit("sd-
|
|
84
|
+
this.emit("sd-2-0-0-input");
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
handleKeyDown(event) {
|
|
@@ -115,7 +115,7 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
115
115
|
}
|
|
116
116
|
if (this.value !== oldValue) {
|
|
117
117
|
this.emit("sd-change");
|
|
118
|
-
this.emit("sd-
|
|
118
|
+
this.emit("sd-2-0-0-input");
|
|
119
119
|
}
|
|
120
120
|
event.preventDefault();
|
|
121
121
|
}
|
|
@@ -147,7 +147,7 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
147
147
|
}
|
|
148
148
|
})
|
|
149
149
|
);
|
|
150
|
-
this.hasButtonGroup = radios.some((radio) => radio.tagName.toLowerCase() === "sd-
|
|
150
|
+
this.hasButtonGroup = radios.some((radio) => radio.tagName.toLowerCase() === "sd-2-0-0-radio-button");
|
|
151
151
|
if (!radios.some((radio) => radio.checked)) {
|
|
152
152
|
if (this.hasButtonGroup) {
|
|
153
153
|
const buttonRadio = (_a = radios[0].shadowRoot) == null ? void 0 : _a.querySelector("button");
|
|
@@ -159,26 +159,26 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
if (this.hasButtonGroup) {
|
|
162
|
-
const buttonGroup = (_b = this.shadowRoot) == null ? void 0 : _b.querySelector("sd-
|
|
162
|
+
const buttonGroup = (_b = this.shadowRoot) == null ? void 0 : _b.querySelector("sd-2-0-0-button-group");
|
|
163
163
|
if (buttonGroup) {
|
|
164
164
|
buttonGroup.disableRole = true;
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
syncRadios() {
|
|
169
|
-
if (customElements.get("sd-
|
|
169
|
+
if (customElements.get("sd-2-0-0-radio") && customElements.get("sd-2-0-0-radio-button")) {
|
|
170
170
|
this.syncRadioElements();
|
|
171
171
|
return;
|
|
172
172
|
}
|
|
173
|
-
if (customElements.get("sd-
|
|
173
|
+
if (customElements.get("sd-2-0-0-radio")) {
|
|
174
174
|
this.syncRadioElements();
|
|
175
175
|
} else {
|
|
176
|
-
customElements.whenDefined("sd-
|
|
176
|
+
customElements.whenDefined("sd-2-0-0-radio").then(() => this.syncRadios());
|
|
177
177
|
}
|
|
178
|
-
if (customElements.get("sd-
|
|
178
|
+
if (customElements.get("sd-2-0-0-radio-button")) {
|
|
179
179
|
this.syncRadioElements();
|
|
180
180
|
} else {
|
|
181
|
-
customElements.whenDefined("sd-
|
|
181
|
+
customElements.whenDefined("sd-2-0-0-radio-button").then(() => this.syncRadios());
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
updateCheckedRadio() {
|
|
@@ -253,14 +253,14 @@ let SdRadioGroup = class extends SolidElement {
|
|
|
253
253
|
vertical: "flex-col",
|
|
254
254
|
horizontal: "flex-row"
|
|
255
255
|
}[this.orientation]
|
|
256
|
-
)}"><div class="sr-only"><label><input id="validation-input" type="text" ?required="${this.required}" tabindex="-1" hidden @invalid="${this.handleInvalid}"></label></div>${this.hasButtonGroup ? html`<sd-
|
|
256
|
+
)}"><div class="sr-only"><label><input id="validation-input" type="text" ?required="${this.required}" tabindex="-1" hidden @invalid="${this.handleInvalid}"></label></div>${this.hasButtonGroup ? html`<sd-2-0-0-button-group part="button-group" exportparts="base:button-group__base" role="presentation">${defaultSlot}</sd-2-0-0-button-group>` : defaultSlot}</div></fieldset>${this.formControlController.renderInvalidMessage()}`;
|
|
257
257
|
}
|
|
258
258
|
};
|
|
259
|
-
SdRadioGroup.dependencies = { "sd-
|
|
259
|
+
SdRadioGroup.dependencies = { "sd-2-0-0-button-group": SdButtonGroup };
|
|
260
260
|
SdRadioGroup.styles = [
|
|
261
261
|
componentStyles,
|
|
262
262
|
SolidElement.styles,
|
|
263
|
-
css`:host{display:block}:host([orientation=vertical]) ::slotted(sd-
|
|
263
|
+
css`:host{display:block}:host([orientation=vertical]) ::slotted(sd-2-0-0-radio){margin-bottom:var(--sd-spacing-2,.5rem);display:flex}:host([orientation=vertical]) ::slotted(sd-2-0-0-radio:last-of-type){margin-bottom:var(--sd-spacing-0,0)}:host([orientation=horizontal]) ::slotted(sd-2-0-0-radio){margin-right:var(--sd-spacing-6,1.5rem)}:host([orientation=horizontal]) ::slotted(sd-2-0-0-radio:last-of-type){margin-right:var(--sd-spacing-0,0)}:host([orientation=horizontal]):host([size=sm]) ::slotted(sd-2-0-0-radio){margin-right:var(--sd-spacing-4,1rem)}:host([orientation=horizontal]):host([size=sm]) ::slotted(sd-2-0-0-radio:last-of-type){margin-right:var(--sd-spacing-0,0)}:host([required]) #label::after{content:' *'}`
|
|
264
264
|
];
|
|
265
265
|
__decorateClass([
|
|
266
266
|
query("slot:not([name])")
|
|
@@ -314,7 +314,7 @@ __decorateClass([
|
|
|
314
314
|
watch("value")
|
|
315
315
|
], SdRadioGroup.prototype, "handleValueChange", 1);
|
|
316
316
|
SdRadioGroup = __decorateClass([
|
|
317
|
-
customElement("sd-
|
|
317
|
+
customElement("sd-2-0-0-radio-group")
|
|
318
318
|
], SdRadioGroup);
|
|
319
319
|
export {
|
|
320
320
|
SdRadioGroup as default
|
|
@@ -7,9 +7,9 @@ import type { TemplateResult } from 'lit';
|
|
|
7
7
|
import type SdOption from '../option/option';
|
|
8
8
|
export default class SdSelect extends SolidElement implements SolidFormControl {
|
|
9
9
|
static dependencies: {
|
|
10
|
-
'sd-
|
|
11
|
-
'sd-
|
|
12
|
-
'sd-
|
|
10
|
+
'sd-2-0-0-icon': typeof SdIcon;
|
|
11
|
+
'sd-2-0-0-popup': typeof SdPopup;
|
|
12
|
+
'sd-2-0-0-tag': typeof SdTag;
|
|
13
13
|
};
|
|
14
14
|
private readonly formControlController;
|
|
15
15
|
private readonly hasSlotController;
|
|
@@ -47,6 +47,7 @@ export default class SdSelect extends SolidElement implements SolidFormControl {
|
|
|
47
47
|
name: string;
|
|
48
48
|
value: string | string[];
|
|
49
49
|
required: boolean;
|
|
50
|
+
styleOnValid: boolean;
|
|
50
51
|
hoist: boolean;
|
|
51
52
|
getTag: (option: SdOption, index: number) => TemplateResult | string | HTMLElement;
|
|
52
53
|
get validity(): ValidityState;
|
|
@@ -96,6 +97,6 @@ export default class SdSelect extends SolidElement implements SolidFormControl {
|
|
|
96
97
|
}
|
|
97
98
|
declare global {
|
|
98
99
|
interface HTMLElementTagNameMap {
|
|
99
|
-
'sd-
|
|
100
|
+
'sd-2-0-0-select': SdSelect;
|
|
100
101
|
}
|
|
101
102
|
}
|
|
@@ -32,7 +32,7 @@ let SdSelect = class extends SolidElement {
|
|
|
32
32
|
constructor() {
|
|
33
33
|
super(...arguments);
|
|
34
34
|
this.formControlController = new FormControlController(this, {
|
|
35
|
-
assumeInteractionOn: ["sd-blur", "sd-
|
|
35
|
+
assumeInteractionOn: ["sd-blur", "sd-2-0-0-input"]
|
|
36
36
|
});
|
|
37
37
|
this.hasSlotController = new HasSlotController(this, "help-text", "label");
|
|
38
38
|
this.localize = new LocalizeController(this);
|
|
@@ -60,13 +60,14 @@ let SdSelect = class extends SolidElement {
|
|
|
60
60
|
this.name = "";
|
|
61
61
|
this.value = "";
|
|
62
62
|
this.required = false;
|
|
63
|
+
this.styleOnValid = false;
|
|
63
64
|
this.hoist = false;
|
|
64
65
|
this.getTag = (option) => {
|
|
65
|
-
return html`<sd-
|
|
66
|
+
return html`<sd-2-0-0-tag ?disabled="${this.disabled}" part="tag" exportparts="
|
|
66
67
|
base:tag__base,
|
|
67
68
|
content:tag__content,
|
|
68
69
|
removable-indicator:tag__removable-indicator,
|
|
69
|
-
" size="${this.size === "sm" ? "sm" : "lg"}" removable @sd-remove="${(event) => this.handleTagRemove(event, option)}">${option.getTextLabel()}</sd-
|
|
70
|
+
" size="${this.size === "sm" ? "sm" : "lg"}" removable @sd-remove="${(event) => this.handleTagRemove(event, option)}">${option.getTextLabel()}</sd-2-0-0-tag>`;
|
|
70
71
|
};
|
|
71
72
|
this.handleDocumentFocusIn = (event) => {
|
|
72
73
|
const path = event.composedPath();
|
|
@@ -77,7 +78,7 @@ let SdSelect = class extends SolidElement {
|
|
|
77
78
|
this.handleDocumentKeyDown = (event) => {
|
|
78
79
|
const target = event.target;
|
|
79
80
|
const isClearButton = target.closest(".select__clear") !== null;
|
|
80
|
-
const isIconButton = target.closest("sd-
|
|
81
|
+
const isIconButton = target.closest("sd-2-0-0-icon-button") !== null;
|
|
81
82
|
if (isClearButton || isIconButton) {
|
|
82
83
|
return;
|
|
83
84
|
}
|
|
@@ -101,7 +102,7 @@ let SdSelect = class extends SolidElement {
|
|
|
101
102
|
this.setSelectedOptions(this.currentOption);
|
|
102
103
|
}
|
|
103
104
|
this.updateComplete.then(() => {
|
|
104
|
-
this.emit("sd-
|
|
105
|
+
this.emit("sd-2-0-0-input");
|
|
105
106
|
this.emit("sd-change");
|
|
106
107
|
});
|
|
107
108
|
if (!this.multiple) {
|
|
@@ -229,7 +230,7 @@ let SdSelect = class extends SolidElement {
|
|
|
229
230
|
this.displayInput.focus({ preventScroll: true });
|
|
230
231
|
this.updateComplete.then(() => {
|
|
231
232
|
this.emit("sd-clear");
|
|
232
|
-
this.emit("sd-
|
|
233
|
+
this.emit("sd-2-0-0-input");
|
|
233
234
|
this.emit("sd-change");
|
|
234
235
|
});
|
|
235
236
|
}
|
|
@@ -240,7 +241,7 @@ let SdSelect = class extends SolidElement {
|
|
|
240
241
|
}
|
|
241
242
|
handleOptionClick(event) {
|
|
242
243
|
const target = event.target;
|
|
243
|
-
const option = target.closest("sd-
|
|
244
|
+
const option = target.closest("sd-2-0-0-option");
|
|
244
245
|
const oldValue = this.value;
|
|
245
246
|
if (option && !option.disabled) {
|
|
246
247
|
if (this.multiple) {
|
|
@@ -251,7 +252,7 @@ let SdSelect = class extends SolidElement {
|
|
|
251
252
|
this.updateComplete.then(() => this.displayInput.focus({ preventScroll: true }));
|
|
252
253
|
if (this.value !== oldValue) {
|
|
253
254
|
this.updateComplete.then(() => {
|
|
254
|
-
this.emit("sd-
|
|
255
|
+
this.emit("sd-2-0-0-input");
|
|
255
256
|
this.emit("sd-change");
|
|
256
257
|
});
|
|
257
258
|
}
|
|
@@ -265,7 +266,7 @@ let SdSelect = class extends SolidElement {
|
|
|
265
266
|
const allOptions = this.getAllOptions();
|
|
266
267
|
const value = Array.isArray(this.value) ? this.value : [this.value];
|
|
267
268
|
const values = [];
|
|
268
|
-
if (customElements.get("sd-
|
|
269
|
+
if (customElements.get("sd-2-0-0-option")) {
|
|
269
270
|
allOptions.forEach((option) => {
|
|
270
271
|
if (this.multiple) {
|
|
271
272
|
option.checkbox = true;
|
|
@@ -274,7 +275,7 @@ let SdSelect = class extends SolidElement {
|
|
|
274
275
|
});
|
|
275
276
|
this.setSelectedOptions(allOptions.filter((el) => value.includes(el.value)));
|
|
276
277
|
} else {
|
|
277
|
-
customElements.whenDefined("sd-
|
|
278
|
+
customElements.whenDefined("sd-2-0-0-option").then(() => this.handleDefaultSlotChange());
|
|
278
279
|
}
|
|
279
280
|
}
|
|
280
281
|
handleTagRemove(event, option) {
|
|
@@ -282,18 +283,18 @@ let SdSelect = class extends SolidElement {
|
|
|
282
283
|
if (!this.disabled) {
|
|
283
284
|
this.toggleOptionSelection(option, false);
|
|
284
285
|
this.updateComplete.then(() => {
|
|
285
|
-
this.emit("sd-
|
|
286
|
+
this.emit("sd-2-0-0-input");
|
|
286
287
|
this.emit("sd-change");
|
|
287
288
|
});
|
|
288
289
|
}
|
|
289
290
|
}
|
|
290
|
-
// Gets an array of all <sd-
|
|
291
|
+
// Gets an array of all <sd-2-0-0-option> elements
|
|
291
292
|
getAllOptions() {
|
|
292
|
-
return [...this.querySelectorAll("sd-
|
|
293
|
+
return [...this.querySelectorAll("sd-2-0-0-option")];
|
|
293
294
|
}
|
|
294
|
-
// Gets the first <sd-
|
|
295
|
+
// Gets the first <sd-2-0-0-option> element
|
|
295
296
|
getFirstOption() {
|
|
296
|
-
return this.querySelector("sd-
|
|
297
|
+
return this.querySelector("sd-2-0-0-option");
|
|
297
298
|
}
|
|
298
299
|
// Sets the current option, which is the option the user is currently interacting with (e.g. via keyboard). Only one
|
|
299
300
|
// option may be "current" at a time.
|
|
@@ -355,7 +356,7 @@ let SdSelect = class extends SolidElement {
|
|
|
355
356
|
const tag = this.getTag(option, index);
|
|
356
357
|
return html`<div @sd-remove="${(e) => this.handleTagRemove(e, option)}">${typeof tag === "string" ? unsafeHTML(tag) : tag}</div>`;
|
|
357
358
|
} else if (index === this.maxOptionsVisible) {
|
|
358
|
-
return html`<sd-
|
|
359
|
+
return html`<sd-2-0-0-tag size="${this.size === "sm" ? "sm" : "lg"}" ?disabled="${this.disabled}">+${this.selectedOptions.length - index}</sd-2-0-0-tag>`;
|
|
359
360
|
}
|
|
360
361
|
return html``;
|
|
361
362
|
});
|
|
@@ -371,7 +372,7 @@ let SdSelect = class extends SolidElement {
|
|
|
371
372
|
handleMouseLeave() {
|
|
372
373
|
this.hasHover = false;
|
|
373
374
|
}
|
|
374
|
-
/** Receives incoming event detail from sd-
|
|
375
|
+
/** Receives incoming event detail from sd-2-0-0-popup and updates local state for conditional styling. */
|
|
375
376
|
handleCurrentPlacement(e) {
|
|
376
377
|
const incomingPlacement = e.detail;
|
|
377
378
|
if (incomingPlacement) {
|
|
@@ -380,7 +381,7 @@ let SdSelect = class extends SolidElement {
|
|
|
380
381
|
}
|
|
381
382
|
handleUseTagsChange() {
|
|
382
383
|
const allOptions = this.getAllOptions();
|
|
383
|
-
if (customElements.get("sd-
|
|
384
|
+
if (customElements.get("sd-2-0-0-option")) {
|
|
384
385
|
allOptions.forEach((option) => {
|
|
385
386
|
option.checkbox = this.multiple;
|
|
386
387
|
});
|
|
@@ -486,7 +487,7 @@ let SdSelect = class extends SolidElement {
|
|
|
486
487
|
const hasLabel = this.label ? true : !!slots["label"];
|
|
487
488
|
const hasHelpText = this.helpText ? true : !!slots["helpText"];
|
|
488
489
|
const hasClearIcon = this.clearable && !this.disabled && this.value.length > 0;
|
|
489
|
-
const selectState = this.disabled ? "disabled" : this.hasFocus && this.showInvalidStyle ? "activeInvalid" : this.hasFocus && this.showValidStyle ? "activeValid" : this.hasFocus || this.open ? "active" : this.showInvalidStyle ? "invalid" : this.showValidStyle ? "valid" : "default";
|
|
490
|
+
const selectState = this.disabled ? "disabled" : this.hasFocus && this.showInvalidStyle ? "activeInvalid" : this.hasFocus && this.styleOnValid && this.showValidStyle ? "activeValid" : this.hasFocus || this.open ? "active" : this.showInvalidStyle ? "invalid" : this.styleOnValid && this.showValidStyle ? "valid" : "default";
|
|
490
491
|
const cursorStyles = this.disabled ? "cursor-not-allowed" : "cursor-pointer";
|
|
491
492
|
const iconMarginLeft = { sm: "ml-1", md: "ml-2", lg: "ml-2" }[this.size];
|
|
492
493
|
const iconSize = {
|
|
@@ -525,7 +526,7 @@ let SdSelect = class extends SolidElement {
|
|
|
525
526
|
default: "border-neutral-800"
|
|
526
527
|
}[selectState],
|
|
527
528
|
this.open && (this.currentPlacement === "bottom" ? "rounded-bl-none rounded-br-none" : "rounded-tl-none rounded-tr-none")
|
|
528
|
-
)}"></div><sd-
|
|
529
|
+
)}"></div><sd-2-0-0-popup @sd-current-placement="${this.handleCurrentPlacement}" class="${cx(
|
|
529
530
|
"inline-flex relative w-full",
|
|
530
531
|
this.currentPlacement === "bottom" ? "origin-top" : "origin-bottom"
|
|
531
532
|
)}" placement="${this.placement}" strategy="${this.hoist ? "fixed" : "absolute"}" flip shift sync="width" auto-size="vertical" auto-size-padding="10" exportparts="
|
|
@@ -541,27 +542,27 @@ let SdSelect = class extends SolidElement {
|
|
|
541
542
|
"appearance-none outline-none flex-grow bg-transparent",
|
|
542
543
|
cursorStyles,
|
|
543
544
|
this.multiple && this.useTags && this.value.length > 0 ? "hidden" : ""
|
|
544
|
-
)}" 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-
|
|
545
|
+
)}" 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-2-0-0-icon class="${cx("text-neutral-500", iconSize)}" library="system" name="closing-round"></sd-2-0-0-icon></slot></button>` : ""} ${this.showInvalidStyle ? html`<sd-2-0-0-icon part="invalid-icon" class="${cx("text-error", iconMarginLeft, iconSize)}" library="system" name="risk"></sd-2-0-0-icon>` : ""} ${this.styleOnValid && this.showValidStyle ? html`<sd-2-0-0-icon part="valid-icon" class="${cx("text-success", iconMarginLeft, iconSize)}" library="system" name="confirm"></sd-2-0-0-icon>` : ""}<slot name="expand-icon" part="expand-icon" class="${cx("inline-flex ml-2 transition-all", this.open ? "rotate-180" : "rotate-0", iconSize)}"><sd-2-0-0-icon name="chevron-down" part="chevron" library="system" color="currentColor"></sd-2-0-0-icon></slot></div><div id="listbox" role="listbox" aria-expanded="${this.open ? "true" : "false"}" aria-multiselectable="${this.multiple ? "true" : "false"}" aria-labelledby="label" part="listbox" class="${cx(
|
|
545
546
|
"bg-white px-2 py-3 relative",
|
|
546
547
|
this.currentPlacement === "bottom" ? "border-r-2 border-b-2 border-l-2 rounded-br-default rounded-bl-default" : "border-r-2 border-t-2 border-l-2 rounded-tr-default rounded-tl-default"
|
|
547
|
-
)}" tabindex="-1" @mouseup="${this.handleOptionClick}" @slotchange="${this.handleDefaultSlotChange}"><slot></slot></div></sd-
|
|
548
|
+
)}" tabindex="-1" @mouseup="${this.handleOptionClick}" @slotchange="${this.handleDefaultSlotChange}"><slot></slot></div></sd-2-0-0-popup></div><div class="text-sm text-neutral-700" part="form-control-help-text" id="help-text" aria-hidden="${hasHelpText ? "false" : "true"}"><slot name="help-text">${this.helpText}</slot></div></div>${this.formControlController.renderInvalidMessage()}`;
|
|
548
549
|
}
|
|
549
550
|
};
|
|
550
551
|
SdSelect.dependencies = {
|
|
551
|
-
"sd-
|
|
552
|
-
"sd-
|
|
553
|
-
"sd-
|
|
552
|
+
"sd-2-0-0-icon": SdIcon,
|
|
553
|
+
"sd-2-0-0-popup": SdPopup,
|
|
554
|
+
"sd-2-0-0-tag": SdTag
|
|
554
555
|
};
|
|
555
556
|
SdSelect.styles = [
|
|
556
557
|
componentStyles,
|
|
557
558
|
SolidElement.styles,
|
|
558
|
-
css`:host{position:relative;display:block;width:100%}:host([required]) #label::after{content:' *'}sd-
|
|
559
|
+
css`:host{position:relative;display:block;width:100%}:host([required]) #label::after{content:' *'}sd-2-0-0-popup::part(popup){z-index:var(--sd-z-index-dropdown,900);overflow-y:scroll}sd-2-0-0-tag::part(base){border-radius:var(--sd-border-radius-default,.25rem);padding-left:var(--sd-spacing-1,.25rem);padding-right:var(--sd-spacing-1,.25rem)}sd-2-0-0-tag[size=lg]::part(base){padding-left:var(--sd-spacing-2,.5rem);padding-right:var(--sd-spacing-2,.5rem)}sd-2-0-0-tag[disabled=false]::part(base):hover{--tw-bg-opacity:1;background-color:rgb(var(--sd-color-primary-100,236 240 249) / var(--tw-bg-opacity))}`
|
|
559
560
|
];
|
|
560
561
|
__decorateClass([
|
|
561
|
-
queryAssignedElements({ selector: "sd-
|
|
562
|
+
queryAssignedElements({ selector: "sd-2-0-0-option" })
|
|
562
563
|
], SdSelect.prototype, "_optionsInDefaultSlot", 2);
|
|
563
564
|
__decorateClass([
|
|
564
|
-
query("sd-
|
|
565
|
+
query("sd-2-0-0-popup")
|
|
565
566
|
], SdSelect.prototype, "popup", 2);
|
|
566
567
|
__decorateClass([
|
|
567
568
|
query('[part="combobox"]')
|
|
@@ -655,6 +656,9 @@ __decorateClass([
|
|
|
655
656
|
__decorateClass([
|
|
656
657
|
property({ type: Boolean, reflect: true })
|
|
657
658
|
], SdSelect.prototype, "required", 2);
|
|
659
|
+
__decorateClass([
|
|
660
|
+
property({ type: Boolean, reflect: true, attribute: "style-on-valid" })
|
|
661
|
+
], SdSelect.prototype, "styleOnValid", 2);
|
|
658
662
|
__decorateClass([
|
|
659
663
|
property({ type: Boolean })
|
|
660
664
|
], SdSelect.prototype, "hoist", 2);
|
|
@@ -677,7 +681,7 @@ __decorateClass([
|
|
|
677
681
|
watch("value", { waitUntilFirstUpdate: true })
|
|
678
682
|
], SdSelect.prototype, "handleValueChange", 1);
|
|
679
683
|
SdSelect = __decorateClass([
|
|
680
|
-
customElement("sd-
|
|
684
|
+
customElement("sd-2-0-0-select")
|
|
681
685
|
], SdSelect);
|
|
682
686
|
setDefaultAnimation("select.show", {
|
|
683
687
|
keyframes: [
|
|
@@ -51,7 +51,7 @@ let SdSwitch = class extends SolidElement {
|
|
|
51
51
|
this.emit("sd-blur");
|
|
52
52
|
}
|
|
53
53
|
handleInput() {
|
|
54
|
-
this.emit("sd-
|
|
54
|
+
this.emit("sd-2-0-0-input");
|
|
55
55
|
}
|
|
56
56
|
handleInvalid(event) {
|
|
57
57
|
this.formControlController.setValidity(false);
|
|
@@ -163,7 +163,7 @@ __decorateClass([
|
|
|
163
163
|
watch(["checked"], { waitUntilFirstUpdate: true })
|
|
164
164
|
], SdSwitch.prototype, "handleStateChange", 1);
|
|
165
165
|
SdSwitch = __decorateClass([
|
|
166
|
-
customElement("sd-
|
|
166
|
+
customElement("sd-2-0-0-switch")
|
|
167
167
|
], SdSwitch);
|
|
168
168
|
export {
|
|
169
169
|
SdSwitch as default
|
|
@@ -74,7 +74,7 @@ let SdTag = class extends SolidElement {
|
|
|
74
74
|
lg: "text-base",
|
|
75
75
|
sm: "text-[12px]"
|
|
76
76
|
}[this.size]
|
|
77
|
-
)}"><sd-
|
|
77
|
+
)}"><sd-2-0-0-icon library="system" name="close" label="remove"></sd-2-0-0-icon></slot>` : ""}</${tag}>`;
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
80
|
SdTag.styles = [
|
|
@@ -106,7 +106,7 @@ __decorateClass([
|
|
|
106
106
|
property()
|
|
107
107
|
], SdTag.prototype, "download", 2);
|
|
108
108
|
SdTag = __decorateClass([
|
|
109
|
-
customElement("sd-
|
|
109
|
+
customElement("sd-2-0-0-tag")
|
|
110
110
|
], SdTag);
|
|
111
111
|
export {
|
|
112
112
|
SdTag as default
|
|
@@ -27,6 +27,7 @@ export default class SdTextarea extends SolidElement implements SolidFormControl
|
|
|
27
27
|
autocomplete: string;
|
|
28
28
|
autofocus: boolean;
|
|
29
29
|
enterkeyhint: 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send';
|
|
30
|
+
styleOnValid: boolean;
|
|
30
31
|
spellcheck: boolean;
|
|
31
32
|
inputmode: 'none' | 'text';
|
|
32
33
|
defaultValue: string;
|
|
@@ -65,6 +66,6 @@ export default class SdTextarea extends SolidElement implements SolidFormControl
|
|
|
65
66
|
}
|
|
66
67
|
declare global {
|
|
67
68
|
interface HTMLElementTagNameMap {
|
|
68
|
-
'sd-
|
|
69
|
+
'sd-2-0-0-textarea': SdTextarea;
|
|
69
70
|
}
|
|
70
71
|
}
|