@solid-design-system/components 1.18.1 → 1.20.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.
Files changed (107) hide show
  1. package/dist/components/es/button.js +1 -1
  2. package/dist/components/es/drawer.js +1 -1
  3. package/dist/components/es/form.js +1 -0
  4. package/dist/components/es/radio-group.js +1 -0
  5. package/dist/components/es/radio.js +1 -0
  6. package/dist/components/es/solid-components2.js +1 -1
  7. package/dist/components/es/solid-element.js +4 -4
  8. package/dist/components/es/video.js +1 -0
  9. package/dist/components/umd/solid-components.js +17 -17
  10. package/dist/custom-elements.json +1 -1
  11. package/dist/package/_components/button-group/button-group.d.ts +19 -0
  12. package/dist/package/_components/button-group/button-group.js +76 -0
  13. package/dist/package/_components/button-group/button-group.styles.d.ts +2 -0
  14. package/dist/package/_components/button-group/button-group.styles.js +6 -0
  15. package/dist/package/components/button/button.d.ts +5 -1
  16. package/dist/package/components/button/button.js +25 -3
  17. package/dist/package/components/radio/radio.d.ts +27 -0
  18. package/dist/package/components/radio/radio.js +130 -0
  19. package/dist/package/components/radio-group/radio-group.d.ts +52 -0
  20. package/dist/package/components/radio-group/radio-group.js +321 -0
  21. package/dist/package/components/video/video.d.ts +24 -0
  22. package/dist/package/components/video/video.js +117 -0
  23. package/dist/package/internal/form.d.ts +9 -3
  24. package/dist/package/internal/form.js +110 -49
  25. package/dist/package/internal/solid-element.d.ts +2 -0
  26. package/dist/package/solid-components.d.ts +3 -0
  27. package/dist/package/solid-components.js +12 -6
  28. package/dist/package/styles/tailwind.css.js +1 -1
  29. package/dist/versioned-components/es/accordion-group.js +1 -1
  30. package/dist/versioned-components/es/accordion.js +1 -1
  31. package/dist/versioned-components/es/badge.js +1 -1
  32. package/dist/versioned-components/es/brandshape.js +1 -1
  33. package/dist/versioned-components/es/button.js +1 -1
  34. package/dist/versioned-components/es/carousel-item.js +1 -1
  35. package/dist/versioned-components/es/carousel.js +3 -3
  36. package/dist/versioned-components/es/divider.js +1 -1
  37. package/dist/versioned-components/es/drawer.js +1 -1
  38. package/dist/versioned-components/es/dropdown.js +1 -1
  39. package/dist/versioned-components/es/form.js +1 -0
  40. package/dist/versioned-components/es/icon.js +1 -1
  41. package/dist/versioned-components/es/include.js +1 -1
  42. package/dist/versioned-components/es/link.js +1 -1
  43. package/dist/versioned-components/es/navigation-item.js +1 -1
  44. package/dist/versioned-components/es/popup.js +1 -1
  45. package/dist/versioned-components/es/radio-group.js +1 -0
  46. package/dist/versioned-components/es/radio.js +1 -0
  47. package/dist/versioned-components/es/solid-components2.js +1 -1
  48. package/dist/versioned-components/es/solid-element.js +4 -4
  49. package/dist/versioned-components/es/spinner.js +1 -1
  50. package/dist/versioned-components/es/tag.js +1 -1
  51. package/dist/versioned-components/es/teaser.js +1 -1
  52. package/dist/versioned-components/es/video.js +1 -0
  53. package/dist/versioned-package/_components/button-group/button-group.d.ts +19 -0
  54. package/dist/versioned-package/_components/button-group/button-group.js +76 -0
  55. package/dist/versioned-package/_components/button-group/button-group.styles.d.ts +2 -0
  56. package/dist/versioned-package/_components/button-group/button-group.styles.js +6 -0
  57. package/dist/versioned-package/components/accordion/accordion.d.ts +1 -1
  58. package/dist/versioned-package/components/accordion/accordion.js +2 -2
  59. package/dist/versioned-package/components/accordion-group/accordion-group.d.ts +1 -1
  60. package/dist/versioned-package/components/accordion-group/accordion-group.js +3 -3
  61. package/dist/versioned-package/components/badge/badge.d.ts +1 -1
  62. package/dist/versioned-package/components/badge/badge.js +1 -1
  63. package/dist/versioned-package/components/brandshape/brandshape.d.ts +1 -1
  64. package/dist/versioned-package/components/brandshape/brandshape.js +1 -1
  65. package/dist/versioned-package/components/button/button.d.ts +6 -2
  66. package/dist/versioned-package/components/button/button.js +29 -7
  67. package/dist/versioned-package/components/carousel/carousel.d.ts +1 -1
  68. package/dist/versioned-package/components/carousel/carousel.js +6 -6
  69. package/dist/versioned-package/components/carousel-item/carousel-item.d.ts +1 -1
  70. package/dist/versioned-package/components/carousel-item/carousel-item.js +1 -1
  71. package/dist/versioned-package/components/divider/divider.d.ts +1 -1
  72. package/dist/versioned-package/components/divider/divider.js +2 -2
  73. package/dist/versioned-package/components/drawer/drawer.d.ts +1 -1
  74. package/dist/versioned-package/components/drawer/drawer.js +2 -2
  75. package/dist/versioned-package/components/dropdown/dropdown.d.ts +1 -1
  76. package/dist/versioned-package/components/dropdown/dropdown.js +6 -6
  77. package/dist/versioned-package/components/icon/icon.d.ts +1 -1
  78. package/dist/versioned-package/components/icon/icon.js +1 -1
  79. package/dist/versioned-package/components/include/include.d.ts +1 -1
  80. package/dist/versioned-package/components/include/include.js +1 -1
  81. package/dist/versioned-package/components/link/link.d.ts +1 -1
  82. package/dist/versioned-package/components/link/link.js +2 -2
  83. package/dist/versioned-package/components/navigation-item/navigation-item.d.ts +1 -1
  84. package/dist/versioned-package/components/navigation-item/navigation-item.js +3 -3
  85. package/dist/versioned-package/components/popup/popup.d.ts +1 -1
  86. package/dist/versioned-package/components/popup/popup.js +1 -1
  87. package/dist/versioned-package/components/radio/radio.d.ts +27 -0
  88. package/dist/versioned-package/components/radio/radio.js +130 -0
  89. package/dist/versioned-package/components/radio-group/radio-group.d.ts +52 -0
  90. package/dist/versioned-package/components/radio-group/radio-group.js +321 -0
  91. package/dist/versioned-package/components/spinner/spinner.d.ts +1 -1
  92. package/dist/versioned-package/components/spinner/spinner.js +1 -1
  93. package/dist/versioned-package/components/tag/tag.d.ts +1 -1
  94. package/dist/versioned-package/components/tag/tag.js +2 -2
  95. package/dist/versioned-package/components/teaser/teaser.js +1 -1
  96. package/dist/versioned-package/components/video/video.d.ts +24 -0
  97. package/dist/versioned-package/components/video/video.js +117 -0
  98. package/dist/versioned-package/internal/form.d.ts +9 -3
  99. package/dist/versioned-package/internal/form.js +110 -49
  100. package/dist/versioned-package/internal/solid-element.d.ts +2 -0
  101. package/dist/versioned-package/solid-components.d.ts +3 -0
  102. package/dist/versioned-package/solid-components.js +12 -6
  103. package/dist/versioned-package/styles/tailwind.css.js +1 -1
  104. package/dist/versioned-styles/solid-styles.css +1 -1
  105. package/dist/vscode.html-custom-data.json +244 -20
  106. package/dist/web-types.json +1370 -380
  107. package/package.json +16 -9
@@ -7,6 +7,6 @@ export default class SdCarouselItem extends SolidElement {
7
7
  }
8
8
  declare global {
9
9
  interface HTMLElementTagNameMap {
10
- 'sd-1-18-1-carousel-item': SdCarouselItem;
10
+ 'sd-1-20-0-carousel-item': SdCarouselItem;
11
11
  }
12
12
  }
@@ -30,7 +30,7 @@ SdCarouselItem.styles = [
30
30
  css`${componentStyles}:host{display:flex;align-items:center;justify-content:center;flex-direction:column;width:100%;height:100%;aspect-ratio:var(--aspect-ratio);scroll-snap-align:start;scroll-snap-stop:always}::slotted(img){width:100%;height:100%;object-fit:cover}`
31
31
  ];
32
32
  SdCarouselItem = __decorateClass([
33
- customElement("sd-1-18-1-carousel-item")
33
+ customElement("sd-1-20-0-carousel-item")
34
34
  ], SdCarouselItem);
35
35
  export {
36
36
  SdCarouselItem as default
@@ -8,6 +8,6 @@ export default class SdDivider extends SolidElement {
8
8
  }
9
9
  declare global {
10
10
  interface HTMLElementTagNameMap {
11
- 'sd-1-18-1-divider': SdDivider;
11
+ 'sd-1-20-0-divider': SdDivider;
12
12
  }
13
13
  }
@@ -35,7 +35,7 @@ let SdDivider = class extends SolidElement {
35
35
  SdDivider.styles = [
36
36
  componentStyles,
37
37
  SolidElement.styles,
38
- css`:host{margin:0}:host(sd-1-18-1-divider[orientation=horizontal]){display:block}:host(sd-1-18-1-divider[orientation=vertical]){display:inline-block}`
38
+ css`:host{margin:0}:host(sd-1-20-0-divider[orientation=horizontal]){display:block}:host(sd-1-20-0-divider[orientation=vertical]){display:inline-block}`
39
39
  ];
40
40
  __decorateClass([
41
41
  property({ reflect: true })
@@ -44,7 +44,7 @@ __decorateClass([
44
44
  property({ type: Boolean, reflect: true })
45
45
  ], SdDivider.prototype, "inverted", 2);
46
46
  SdDivider = __decorateClass([
47
- customElement("sd-1-18-1-divider")
47
+ customElement("sd-1-20-0-divider")
48
48
  ], SdDivider);
49
49
  export {
50
50
  SdDivider as default
@@ -29,6 +29,6 @@ export default class SdDrawer extends SolidElement {
29
29
  }
30
30
  declare global {
31
31
  interface HTMLElementTagNameMap {
32
- 'sd-1-18-1-drawer': SdDrawer;
32
+ 'sd-1-20-0-drawer': SdDrawer;
33
33
  }
34
34
  }
@@ -183,7 +183,7 @@ let SdDrawer = class extends SolidElement {
183
183
  end: "top-0 end-0 bottom-auto start-auto w-[--width] h-full",
184
184
  start: "top-0 end-auto bottom-auto start-0 w-[--width] h-full"
185
185
  }[this.placement]
186
- )}" role="dialog" aria-modal="true" aria-hidden="${this.open ? "false" : "true"}" aria-label="${this.label}" aria-labelledby="${ifDefined(!this.noHeader ? "title" : void 0)}" tabindex="0">${!this.noHeader ? html`<header part="header" class="flex justify-between py-2 px-4 items-center flex-shrink-0" style="min-height:56px"><div part="title"><slot name="header" part="title" class="flex-auto text-xl m-0" id="title"></slot></div><div class="shrink-0 flex flex-wrap justify-end gap-1 ml-4 absolute top-2 right-2"><sd-1-18-1-button variant="tertiary" size="lg" part="close-button" @click="${() => this.requestClose("close-button")}"><sd-1-18-1-icon name="close" library="system"></sd-1-18-1-icon></sd-1-18-1-button></div></header>` : ""}<div part="body" class="flex-auto block px-4"><slot></slot></div><footer part="footer" class="${cx(this.hasSlotController.test("footer") ? "text-left p-4" : "hidden")}"><slot name="footer"></slot></footer></div></div>`;
186
+ )}" role="dialog" aria-modal="true" aria-hidden="${this.open ? "false" : "true"}" aria-label="${this.label}" aria-labelledby="${ifDefined(!this.noHeader ? "title" : void 0)}" tabindex="0">${!this.noHeader ? html`<header part="header" class="flex justify-between py-2 px-4 items-center flex-shrink-0" style="min-height:56px"><div part="title"><slot name="header" part="title" class="flex-auto text-xl m-0" id="title"></slot></div><div class="shrink-0 flex flex-wrap justify-end gap-1 ml-4 absolute top-2 right-2"><sd-1-20-0-button variant="tertiary" size="lg" part="close-button" @click="${() => this.requestClose("close-button")}"><sd-1-20-0-icon name="close" library="system"></sd-1-20-0-icon></sd-1-20-0-button></div></header>` : ""}<div part="body" class="flex-auto block px-4"><slot></slot></div><footer part="footer" class="${cx(this.hasSlotController.test("footer") ? "text-left p-4" : "hidden")}"><slot name="footer"></slot></footer></div></div>`;
187
187
  }
188
188
  };
189
189
  SdDrawer.styles = [
@@ -221,7 +221,7 @@ __decorateClass([
221
221
  watch("contained", { waitUntilFirstUpdate: true })
222
222
  ], SdDrawer.prototype, "handleNoModalChange", 1);
223
223
  SdDrawer = __decorateClass([
224
- customElement("sd-1-18-1-drawer")
224
+ customElement("sd-1-20-0-drawer")
225
225
  ], SdDrawer);
226
226
  setDefaultAnimation("drawer.showStart", {
227
227
  keyframes: [
@@ -44,6 +44,6 @@ export default class SdDropdown extends SolidElement {
44
44
  }
45
45
  declare global {
46
46
  interface HTMLElementTagNameMap {
47
- 'sd-1-18-1-dropdown': SdDropdown;
47
+ 'sd-1-20-0-dropdown': SdDropdown;
48
48
  }
49
49
  }
@@ -170,7 +170,7 @@ let SdDropdown = class extends SolidElement {
170
170
  // that gets slotted in) so screen readers will understand them. The accessible trigger could be the slotted element,
171
171
  // a child of the slotted element, or an element in the slotted element's shadow root.
172
172
  //
173
- // For example, the accessible trigger of an <sd-1-18-1-button> is a <button> located inside its shadow root.
173
+ // For example, the accessible trigger of an <sd-1-20-0-button> is a <button> located inside its shadow root.
174
174
  //
175
175
  // To determine this, we assume the first tabbable element in the trigger slot is the "accessible trigger."
176
176
  //
@@ -180,8 +180,8 @@ let SdDropdown = class extends SolidElement {
180
180
  let target;
181
181
  if (accessibleTrigger) {
182
182
  switch (accessibleTrigger.tagName.toLowerCase()) {
183
- case "sd-1-18-1-button":
184
- case "sd-1-18-1-icon-button":
183
+ case "sd-1-20-0-button":
184
+ case "sd-1-20-0-icon-button":
185
185
  target = accessibleTrigger.button;
186
186
  break;
187
187
  default:
@@ -257,11 +257,11 @@ let SdDropdown = class extends SolidElement {
257
257
  }
258
258
  }
259
259
  render() {
260
- return html`<sd-1-18-1-popup part="base" id="dropdown" placement="${this.placement}" distance="${this.rounded && this.distance < 1 ? 1 : this.distance}" skidding="${this.skidding}" strategy="${this.hoist ? "fixed" : "absolute"}" ?flip="${!this.noFlip}" shift auto-size="vertical" auto-size-padding="10" ?active="${this.open}"><slot name="trigger" slot="anchor" part="trigger" class="block" @click="${this.handleTriggerClick}" @keydown="${this.handleTriggerKeyDown}" @keyup="${this.handleTriggerKeyUp}" @slotchange="${this.handleTriggerSlotChange}"></slot><slot part="panel" class="${cx(
260
+ return html`<sd-1-20-0-popup part="base" id="dropdown" placement="${this.placement}" distance="${this.rounded && this.distance < 1 ? 1 : this.distance}" skidding="${this.skidding}" strategy="${this.hoist ? "fixed" : "absolute"}" ?flip="${!this.noFlip}" shift auto-size="vertical" auto-size-padding="10" ?active="${this.open}"><slot name="trigger" slot="anchor" part="trigger" class="block" @click="${this.handleTriggerClick}" @keydown="${this.handleTriggerKeyDown}" @keyup="${this.handleTriggerKeyUp}" @slotchange="${this.handleTriggerSlotChange}"></slot><slot part="panel" class="${cx(
261
261
  "shadow bg-white",
262
262
  this.open ? "block pointer-events-auto" : "pointer-events-none",
263
263
  this.rounded && "rounded-md"
264
- )}" aria-hidden="${this.open ? "false" : "true"}" aria-labelledby="dropdown"></slot></sd-1-18-1-popup>`;
264
+ )}" aria-hidden="${this.open ? "false" : "true"}" aria-labelledby="dropdown"></slot></sd-1-20-0-popup>`;
265
265
  }
266
266
  };
267
267
  SdDropdown.styles = [
@@ -315,7 +315,7 @@ __decorateClass([
315
315
  watch("open", { waitUntilFirstUpdate: true })
316
316
  ], SdDropdown.prototype, "handleOpenChange", 1);
317
317
  SdDropdown = __decorateClass([
318
- customElement("sd-1-18-1-dropdown")
318
+ customElement("sd-1-20-0-dropdown")
319
319
  ], SdDropdown);
320
320
  setDefaultAnimation("dropdown.show", {
321
321
  keyframes: [
@@ -17,6 +17,6 @@ export default class SdIcon extends SolidElement {
17
17
  }
18
18
  declare global {
19
19
  interface HTMLElementTagNameMap {
20
- 'sd-1-18-1-icon': SdIcon;
20
+ 'sd-1-20-0-icon': SdIcon;
21
21
  }
22
22
  }
@@ -123,7 +123,7 @@ __decorateClass([
123
123
  watch(["name", "src", "library"])
124
124
  ], SdIcon.prototype, "setIcon", 1);
125
125
  SdIcon = __decorateClass([
126
- customElement("sd-1-18-1-icon")
126
+ customElement("sd-1-20-0-icon")
127
127
  ], SdIcon);
128
128
  export {
129
129
  SdIcon as default
@@ -11,6 +11,6 @@ export default class SdInclude extends SolidElement {
11
11
  }
12
12
  declare global {
13
13
  interface HTMLElementTagNameMap {
14
- 'sd-1-18-1-include': SdInclude;
14
+ 'sd-1-20-0-include': SdInclude;
15
15
  }
16
16
  }
@@ -66,7 +66,7 @@ __decorateClass([
66
66
  watch("src")
67
67
  ], SdInclude.prototype, "handleSrcChange", 1);
68
68
  SdInclude = __decorateClass([
69
- customElement("sd-1-18-1-include")
69
+ customElement("sd-1-20-0-include")
70
70
  ], SdInclude);
71
71
  export {
72
72
  SdInclude as default
@@ -17,6 +17,6 @@ export default class SdLink extends SolidElement {
17
17
  }
18
18
  declare global {
19
19
  interface HTMLElementTagNameMap {
20
- 'sd-1-18-1-link': SdLink;
20
+ 'sd-1-20-0-link': SdLink;
21
21
  }
22
22
  }
@@ -77,7 +77,7 @@ let SdLink = class extends SolidElement {
77
77
  };
78
78
  SdLink.styles = [
79
79
  SolidElement.styles,
80
- css`::slotted(sd-1-18-1-icon){font-size:1.25em;margin-bottom:-.25em}:host([size=sm][standalone]) ::slotted(sd-1-18-1-icon){font-size:1rem}:host([size=lg][standalone]) ::slotted(sd-1-18-1-icon){font-size:1.5rem}`
80
+ css`::slotted(sd-1-20-0-icon){font-size:1.25em;margin-bottom:-.25em}:host([size=sm][standalone]) ::slotted(sd-1-20-0-icon){font-size:1rem}:host([size=lg][standalone]) ::slotted(sd-1-20-0-icon){font-size:1.5rem}`
81
81
  ];
82
82
  __decorateClass([
83
83
  query("a")
@@ -101,7 +101,7 @@ __decorateClass([
101
101
  property()
102
102
  ], SdLink.prototype, "download", 2);
103
103
  SdLink = __decorateClass([
104
- customElement("sd-1-18-1-link")
104
+ customElement("sd-1-20-0-link")
105
105
  ], SdLink);
106
106
  export {
107
107
  SdLink as default
@@ -26,6 +26,6 @@ export default class SdNavigationItem extends SolidElement {
26
26
  }
27
27
  declare global {
28
28
  interface HTMLElementTagNameMap {
29
- 'sd-1-18-1-navigation-item': SdNavigationItem;
29
+ 'sd-1-20-0-navigation-item': SdNavigationItem;
30
30
  }
31
31
  }
@@ -105,10 +105,10 @@ let SdNavigationItem = class extends SolidElement {
105
105
  isAccordion ? "grow" : "w-full",
106
106
  slots["description"] ? "pb-1" : horizontalPaddingBottom,
107
107
  this.calculatePaddingX()
108
- )}">${this.divider && this.vertical ? html`<sd-1-18-1-divider part="divider" class="${cx("w-full transition-all absolute -top-[1px] left-0", this.calculatePaddingX())}"></sd-1-18-1-divider>` : ""} <span class="inline-flex items-center flex-auto"><slot part="content" class="inline"></slot></span>${(this.chevron || slots["children"]) && this.vertical ? html`<sd-1-18-1-icon name="chevron-down" part="chevron" library="system" color="currentColor" class="${cx(
108
+ )}">${this.divider && this.vertical ? html`<sd-1-20-0-divider part="divider" class="${cx("w-full transition-all absolute -top-[1px] left-0", this.calculatePaddingX())}"></sd-1-20-0-divider>` : ""} <span class="inline-flex items-center flex-auto"><slot part="content" class="inline"></slot></span>${(this.chevron || slots["children"]) && this.vertical ? html`<sd-1-20-0-icon name="chevron-down" part="chevron" library="system" color="currentColor" class="${cx(
109
109
  "h-6 w-6 ml-2 transition-all",
110
110
  isAccordion ? this.open ? "rotate-180" : "rotate-0" : "rotate-[270deg]"
111
- )}"></sd-1-18-1-icon>` : ""} </span>${slots["description"] && this.vertical ? html`<slot name="description" part="description" class="${cx(
111
+ )}"></sd-1-20-0-icon>` : ""} </span>${slots["description"] && this.vertical ? html`<slot name="description" part="description" class="${cx(
112
112
  "inline-block text-sm text-left text-black",
113
113
  isAccordion ? "grow" : "w-full",
114
114
  horizontalPaddingBottom,
@@ -159,7 +159,7 @@ __decorateClass([
159
159
  property({ type: Boolean, reflect: true })
160
160
  ], SdNavigationItem.prototype, "open", 2);
161
161
  SdNavigationItem = __decorateClass([
162
- customElement("sd-1-18-1-navigation-item")
162
+ customElement("sd-1-20-0-navigation-item")
163
163
  ], SdNavigationItem);
164
164
  export {
165
165
  SdNavigationItem as default
@@ -37,6 +37,6 @@ export default class SdPopup extends SolidElement {
37
37
  }
38
38
  declare global {
39
39
  interface HTMLElementTagNameMap {
40
- 'sd-1-18-1-popup': SdPopup;
40
+ 'sd-1-20-0-popup': SdPopup;
41
41
  }
42
42
  }
@@ -312,7 +312,7 @@ __decorateClass([
312
312
  property({ attribute: "auto-size-padding", type: Number })
313
313
  ], SdPopup.prototype, "autoSizePadding", 2);
314
314
  SdPopup = __decorateClass([
315
- customElement("sd-1-18-1-popup")
315
+ customElement("sd-1-20-0-popup")
316
316
  ], SdPopup);
317
317
  export {
318
318
  SdPopup as default
@@ -0,0 +1,27 @@
1
+ import '../icon/icon';
2
+ import SolidElement from '../../internal/solid-element';
3
+ export default class SdRadio extends SolidElement {
4
+ checked: boolean;
5
+ protected hasFocus: boolean;
6
+ size: 'lg' | 'sm';
7
+ invalid: boolean;
8
+ disabled: boolean;
9
+ value: string;
10
+ connectedCallback(): void;
11
+ disconnectedCallback(): void;
12
+ private addEventListeners;
13
+ private removeEventListeners;
14
+ private handleBlur;
15
+ private handleClick;
16
+ private handleFocus;
17
+ private setInitialAttributes;
18
+ handleCheckedChange(): void;
19
+ handleDisabledChange(): void;
20
+ render(): import("lit-html").TemplateResult<1>;
21
+ static styles: import("lit").CSSResultGroup[];
22
+ }
23
+ declare global {
24
+ interface HTMLElementTagNameMap {
25
+ 'sd-1-20-0-radio': SdRadio;
26
+ }
27
+ }
@@ -0,0 +1,130 @@
1
+ import "../icon/icon.js";
2
+ import { css, html } from "lit";
3
+ import { customElement } from "../../internal/register-custom-element.js";
4
+ import { state, property } from "lit/decorators.js";
5
+ import { watch } from "../../internal/watch.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 SdRadio = class extends SolidElement {
20
+ constructor() {
21
+ super(...arguments);
22
+ this.checked = false;
23
+ this.hasFocus = false;
24
+ this.size = "lg";
25
+ this.invalid = false;
26
+ this.disabled = false;
27
+ }
28
+ connectedCallback() {
29
+ super.connectedCallback();
30
+ this.handleBlur = this.handleBlur.bind(this);
31
+ this.handleClick = this.handleClick.bind(this);
32
+ this.handleFocus = this.handleFocus.bind(this);
33
+ this.setInitialAttributes();
34
+ this.addEventListeners();
35
+ }
36
+ disconnectedCallback() {
37
+ this.removeEventListeners();
38
+ }
39
+ addEventListeners() {
40
+ this.addEventListener("blur", this.handleBlur);
41
+ this.addEventListener("click", this.handleClick);
42
+ this.addEventListener("focus", this.handleFocus);
43
+ }
44
+ removeEventListeners() {
45
+ this.removeEventListener("blur", this.handleBlur);
46
+ this.removeEventListener("click", this.handleClick);
47
+ this.removeEventListener("focus", this.handleFocus);
48
+ }
49
+ handleBlur() {
50
+ this.hasFocus = false;
51
+ this.emit("sd-blur");
52
+ }
53
+ handleClick() {
54
+ if (!this.disabled) {
55
+ this.checked = true;
56
+ }
57
+ }
58
+ handleFocus() {
59
+ this.hasFocus = true;
60
+ this.emit("sd-focus");
61
+ }
62
+ setInitialAttributes() {
63
+ this.setAttribute("role", "radio");
64
+ this.setAttribute("tabindex", "-1");
65
+ this.setAttribute("aria-disabled", this.disabled ? "true" : "false");
66
+ }
67
+ handleCheckedChange() {
68
+ this.setAttribute("aria-checked", this.checked ? "true" : "false");
69
+ this.setAttribute("tabindex", this.checked ? "0" : "-1");
70
+ }
71
+ handleDisabledChange() {
72
+ this.setAttribute("aria-disabled", this.disabled ? "true" : "false");
73
+ }
74
+ render() {
75
+ return html`<span part="base" class="${cx(
76
+ "sd-1-20-0-radio group inline-flex items-start items-center text-base leading-normal text-black cursor-pointer align-middle",
77
+ this.checked && "radio--checked",
78
+ this.disabled && "hover:cursor-not-allowed",
79
+ this.hasFocus && "radio--focused",
80
+ {
81
+ /* sizes, fonts */
82
+ sm: "small-size text-sm",
83
+ lg: "text-base"
84
+ }[this.size]
85
+ )}"><span part="${`${this.checked ? "control--checked" : "control--unchecked"}`}" class="${cx(
86
+ "flex-initial shrink-0 relative inline-flex items-center justify-center border rounded-full bg-white h-4 w-4",
87
+ this.disabled && "border-neutral-500" || this.invalid && "border-error hover:border-error-400 group-hover:border-error-400" || this.checked && "border-accent hover:border-accent-550 group-hover:border-accent-550" || "border-neutral-800 hover:bg-neutral-200 group-hover:bg-neutral-200"
88
+ )}">${this.checked ? html`<span part="checked" class="${cx(
89
+ "rounded-full inline-flex text-white border bg-accent h-2.5 w-2.5",
90
+ this.disabled && "bg-neutral-500" || this.invalid && "bg-error hover:bg-error-400 group-hover:bg-error-400" || this.checked && "bg-accent hover:bg-accent-550 group-hover:bg-accent-550" || "bg-neutral-800"
91
+ )}"></span>` : ""}</span><slot part="label" class="${cx(
92
+ "label ml-2 select-none inline-block",
93
+ this.disabled && "text-neutral-500" || this.invalid && "text-error" || "text-black"
94
+ )}"></slot></span>`;
95
+ }
96
+ };
97
+ SdRadio.styles = [
98
+ SolidElement.styles,
99
+ css`:host{display:block}:host(:focus-visible){outline:0}:host(:focus-visible) [part=control--checked],:host(:focus-visible) [part=control--unchecked]{outline:2px solid #00358e;outline-offset:2px}`
100
+ ];
101
+ __decorateClass([
102
+ state()
103
+ ], SdRadio.prototype, "checked", 2);
104
+ __decorateClass([
105
+ state()
106
+ ], SdRadio.prototype, "hasFocus", 2);
107
+ __decorateClass([
108
+ property({ reflect: true })
109
+ ], SdRadio.prototype, "size", 2);
110
+ __decorateClass([
111
+ property({ type: Boolean, reflect: true })
112
+ ], SdRadio.prototype, "invalid", 2);
113
+ __decorateClass([
114
+ property({ type: Boolean, reflect: true })
115
+ ], SdRadio.prototype, "disabled", 2);
116
+ __decorateClass([
117
+ property()
118
+ ], SdRadio.prototype, "value", 2);
119
+ __decorateClass([
120
+ watch("checked")
121
+ ], SdRadio.prototype, "handleCheckedChange", 1);
122
+ __decorateClass([
123
+ watch("disabled", { waitUntilFirstUpdate: true })
124
+ ], SdRadio.prototype, "handleDisabledChange", 1);
125
+ SdRadio = __decorateClass([
126
+ customElement("sd-1-20-0-radio")
127
+ ], SdRadio);
128
+ export {
129
+ SdRadio as default
130
+ };
@@ -0,0 +1,52 @@
1
+ import { FormControlController } from '../../internal/form';
2
+ import SdButtonGroup from '../../_components/button-group/button-group';
3
+ import SolidElement from '../../internal/solid-element';
4
+ import type { SolidFormControl } from '../../internal/solid-element';
5
+ export default class SdRadioGroup extends SolidElement implements SolidFormControl {
6
+ static dependencies: {
7
+ 'sd-1-20-0-button-group': typeof SdButtonGroup;
8
+ };
9
+ protected readonly formControlController: FormControlController;
10
+ private readonly hasSlotController;
11
+ private customValidityMessage;
12
+ private validationTimeout;
13
+ defaultSlot: HTMLSlotElement;
14
+ validationInput: HTMLInputElement;
15
+ private hasButtonGroup;
16
+ defaultValue: string;
17
+ private invalid;
18
+ private errorText;
19
+ label: string;
20
+ name: string;
21
+ value: string;
22
+ size: 'lg' | 'sm';
23
+ form: string;
24
+ required: boolean;
25
+ orientation: 'horizontal' | 'vertical';
26
+ get validity(): ValidityState;
27
+ get validationMessage(): string;
28
+ connectedCallback(): void;
29
+ firstUpdated(): void;
30
+ private getAllRadios;
31
+ private handleRadioClick;
32
+ private handleKeyDown;
33
+ private handleLabelClick;
34
+ private handleInvalid;
35
+ private syncRadioElements;
36
+ private syncRadios;
37
+ private updateCheckedRadio;
38
+ handleSizeChange(): void;
39
+ handleInvalidChange(): void;
40
+ handleValueChange(): void;
41
+ checkValidity(): boolean;
42
+ getForm(): HTMLFormElement | null;
43
+ reportValidity(): boolean;
44
+ setCustomValidity(message?: string): void;
45
+ render(): import("lit-html").TemplateResult<1>;
46
+ static styles: import("lit").CSSResultGroup[];
47
+ }
48
+ declare global {
49
+ interface HTMLElementTagNameMap {
50
+ 'sd-1-20-0-radio-group': SdRadioGroup;
51
+ }
52
+ }