@solid-design-system/components 1.19.0 → 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 (104) 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/umd/solid-components.js +16 -16
  9. package/dist/custom-elements.json +1 -1
  10. package/dist/package/_components/button-group/button-group.d.ts +19 -0
  11. package/dist/package/_components/button-group/button-group.js +76 -0
  12. package/dist/package/_components/button-group/button-group.styles.d.ts +2 -0
  13. package/dist/package/_components/button-group/button-group.styles.js +6 -0
  14. package/dist/package/components/button/button.d.ts +4 -0
  15. package/dist/package/components/button/button.js +25 -3
  16. package/dist/package/components/radio/radio.d.ts +27 -0
  17. package/dist/package/components/radio/radio.js +130 -0
  18. package/dist/package/components/radio-group/radio-group.d.ts +52 -0
  19. package/dist/package/components/radio-group/radio-group.js +321 -0
  20. package/dist/package/internal/form.d.ts +7 -1
  21. package/dist/package/internal/form.js +110 -49
  22. package/dist/package/internal/solid-element.d.ts +2 -0
  23. package/dist/package/solid-components.d.ts +2 -0
  24. package/dist/package/solid-components.js +12 -8
  25. package/dist/package/styles/tailwind.css.js +1 -1
  26. package/dist/versioned-components/es/accordion-group.js +1 -1
  27. package/dist/versioned-components/es/accordion.js +1 -1
  28. package/dist/versioned-components/es/badge.js +1 -1
  29. package/dist/versioned-components/es/brandshape.js +1 -1
  30. package/dist/versioned-components/es/button.js +1 -1
  31. package/dist/versioned-components/es/carousel-item.js +1 -1
  32. package/dist/versioned-components/es/carousel.js +3 -3
  33. package/dist/versioned-components/es/divider.js +1 -1
  34. package/dist/versioned-components/es/drawer.js +1 -1
  35. package/dist/versioned-components/es/dropdown.js +1 -1
  36. package/dist/versioned-components/es/form.js +1 -0
  37. package/dist/versioned-components/es/icon.js +1 -1
  38. package/dist/versioned-components/es/include.js +1 -1
  39. package/dist/versioned-components/es/link.js +1 -1
  40. package/dist/versioned-components/es/navigation-item.js +1 -1
  41. package/dist/versioned-components/es/popup.js +1 -1
  42. package/dist/versioned-components/es/radio-group.js +1 -0
  43. package/dist/versioned-components/es/radio.js +1 -0
  44. package/dist/versioned-components/es/solid-components2.js +1 -1
  45. package/dist/versioned-components/es/solid-element.js +4 -4
  46. package/dist/versioned-components/es/spinner.js +1 -1
  47. package/dist/versioned-components/es/tag.js +1 -1
  48. package/dist/versioned-components/es/teaser.js +1 -1
  49. package/dist/versioned-components/es/video.js +1 -1
  50. package/dist/versioned-package/_components/button-group/button-group.d.ts +19 -0
  51. package/dist/versioned-package/_components/button-group/button-group.js +76 -0
  52. package/dist/versioned-package/_components/button-group/button-group.styles.d.ts +2 -0
  53. package/dist/versioned-package/_components/button-group/button-group.styles.js +6 -0
  54. package/dist/versioned-package/components/accordion/accordion.d.ts +1 -1
  55. package/dist/versioned-package/components/accordion/accordion.js +2 -2
  56. package/dist/versioned-package/components/accordion-group/accordion-group.d.ts +1 -1
  57. package/dist/versioned-package/components/accordion-group/accordion-group.js +3 -3
  58. package/dist/versioned-package/components/badge/badge.d.ts +1 -1
  59. package/dist/versioned-package/components/badge/badge.js +1 -1
  60. package/dist/versioned-package/components/brandshape/brandshape.d.ts +1 -1
  61. package/dist/versioned-package/components/brandshape/brandshape.js +1 -1
  62. package/dist/versioned-package/components/button/button.d.ts +5 -1
  63. package/dist/versioned-package/components/button/button.js +29 -7
  64. package/dist/versioned-package/components/carousel/carousel.d.ts +1 -1
  65. package/dist/versioned-package/components/carousel/carousel.js +6 -6
  66. package/dist/versioned-package/components/carousel-item/carousel-item.d.ts +1 -1
  67. package/dist/versioned-package/components/carousel-item/carousel-item.js +1 -1
  68. package/dist/versioned-package/components/divider/divider.d.ts +1 -1
  69. package/dist/versioned-package/components/divider/divider.js +2 -2
  70. package/dist/versioned-package/components/drawer/drawer.d.ts +1 -1
  71. package/dist/versioned-package/components/drawer/drawer.js +2 -2
  72. package/dist/versioned-package/components/dropdown/dropdown.d.ts +1 -1
  73. package/dist/versioned-package/components/dropdown/dropdown.js +6 -6
  74. package/dist/versioned-package/components/icon/icon.d.ts +1 -1
  75. package/dist/versioned-package/components/icon/icon.js +1 -1
  76. package/dist/versioned-package/components/include/include.d.ts +1 -1
  77. package/dist/versioned-package/components/include/include.js +1 -1
  78. package/dist/versioned-package/components/link/link.d.ts +1 -1
  79. package/dist/versioned-package/components/link/link.js +2 -2
  80. package/dist/versioned-package/components/navigation-item/navigation-item.d.ts +1 -1
  81. package/dist/versioned-package/components/navigation-item/navigation-item.js +3 -3
  82. package/dist/versioned-package/components/popup/popup.d.ts +1 -1
  83. package/dist/versioned-package/components/popup/popup.js +1 -1
  84. package/dist/versioned-package/components/radio/radio.d.ts +27 -0
  85. package/dist/versioned-package/components/radio/radio.js +130 -0
  86. package/dist/versioned-package/components/radio-group/radio-group.d.ts +52 -0
  87. package/dist/versioned-package/components/radio-group/radio-group.js +321 -0
  88. package/dist/versioned-package/components/spinner/spinner.d.ts +1 -1
  89. package/dist/versioned-package/components/spinner/spinner.js +1 -1
  90. package/dist/versioned-package/components/tag/tag.d.ts +1 -1
  91. package/dist/versioned-package/components/tag/tag.js +2 -2
  92. package/dist/versioned-package/components/teaser/teaser.js +1 -1
  93. package/dist/versioned-package/components/video/video.d.ts +1 -1
  94. package/dist/versioned-package/components/video/video.js +2 -2
  95. package/dist/versioned-package/internal/form.d.ts +7 -1
  96. package/dist/versioned-package/internal/form.js +110 -49
  97. package/dist/versioned-package/internal/solid-element.d.ts +2 -0
  98. package/dist/versioned-package/solid-components.d.ts +2 -0
  99. package/dist/versioned-package/solid-components.js +12 -8
  100. package/dist/versioned-package/styles/tailwind.css.js +1 -1
  101. package/dist/versioned-styles/solid-styles.css +1 -1
  102. package/dist/vscode.html-custom-data.json +201 -21
  103. package/dist/web-types.json +910 -122
  104. package/package.json +3 -3
@@ -0,0 +1,19 @@
1
+ import SolidElement from '../../internal/solid-element';
2
+ import type { CSSResultGroup } from 'lit';
3
+ export default class SdButtonGroup extends SolidElement {
4
+ static styles: CSSResultGroup;
5
+ defaultSlot: HTMLSlotElement;
6
+ disableRole: boolean;
7
+ label: string;
8
+ private handleFocus;
9
+ private handleBlur;
10
+ private handleMouseOver;
11
+ private handleMouseOut;
12
+ private handleSlotChange;
13
+ render(): import("lit-html").TemplateResult<1>;
14
+ }
15
+ declare global {
16
+ interface HTMLElementTagNameMap {
17
+ 'sd-button-group': SdButtonGroup;
18
+ }
19
+ }
@@ -0,0 +1,76 @@
1
+ import { customElement } from "../../internal/register-custom-element.js";
2
+ import { query, state, property } from "lit/decorators.js";
3
+ import { html } from "lit";
4
+ import SolidElement from "../../internal/solid-element.js";
5
+ import styles from "./button-group.styles.js";
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
+ var __decorateClass = (decorators, target, key, kind) => {
9
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
10
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
11
+ if (decorator = decorators[i])
12
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
13
+ if (kind && result)
14
+ __defProp(target, key, result);
15
+ return result;
16
+ };
17
+ let SdButtonGroup = class extends SolidElement {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.disableRole = false;
21
+ this.label = "";
22
+ }
23
+ handleFocus(event) {
24
+ const button = findButton(event.target);
25
+ button == null ? void 0 : button.classList.add("sd-button-group__button--focus");
26
+ }
27
+ handleBlur(event) {
28
+ const button = findButton(event.target);
29
+ button == null ? void 0 : button.classList.remove("sd-button-group__button--focus");
30
+ }
31
+ handleMouseOver(event) {
32
+ const button = findButton(event.target);
33
+ button == null ? void 0 : button.classList.add("sd-button-group__button--hover");
34
+ }
35
+ handleMouseOut(event) {
36
+ const button = findButton(event.target);
37
+ button == null ? void 0 : button.classList.remove("sd-button-group__button--hover");
38
+ }
39
+ handleSlotChange() {
40
+ const slottedElements = [...this.defaultSlot.assignedElements({ flatten: true })];
41
+ slottedElements.forEach((el) => {
42
+ const index = slottedElements.indexOf(el);
43
+ const button = findButton(el);
44
+ if (button !== null) {
45
+ button.classList.add("sd-button-group__button");
46
+ button.classList.toggle("sd-button-group__button--first", index === 0);
47
+ button.classList.toggle("sd-button-group__button--inner", index > 0 && index < slottedElements.length - 1);
48
+ button.classList.toggle("sd-button-group__button--last", index === slottedElements.length - 1);
49
+ button.classList.toggle("sd-button-group__button--radio", button.tagName.toLowerCase() === "sd-radio-button");
50
+ }
51
+ });
52
+ }
53
+ render() {
54
+ return html`<slot part="base" class="button-group" role="${this.disableRole ? "presentation" : "group"}" aria-label="${this.label}" @focusout="${this.handleBlur}" @focusin="${this.handleFocus}" @mouseover="${this.handleMouseOver}" @mouseout="${this.handleMouseOut}" @slotchange="${this.handleSlotChange}"></slot>`;
55
+ }
56
+ };
57
+ SdButtonGroup.styles = styles;
58
+ __decorateClass([
59
+ query("slot")
60
+ ], SdButtonGroup.prototype, "defaultSlot", 2);
61
+ __decorateClass([
62
+ state()
63
+ ], SdButtonGroup.prototype, "disableRole", 2);
64
+ __decorateClass([
65
+ property()
66
+ ], SdButtonGroup.prototype, "label", 2);
67
+ SdButtonGroup = __decorateClass([
68
+ customElement("sd-button-group")
69
+ ], SdButtonGroup);
70
+ function findButton(el) {
71
+ const selector = "sd-button, sd-radio-button";
72
+ return el.closest(selector) ?? el.querySelector(selector);
73
+ }
74
+ export {
75
+ SdButtonGroup as default
76
+ };
@@ -0,0 +1,2 @@
1
+ declare const _default: import("lit").CSSResult;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import { css } from "lit";
2
+ import componentStyles from "../../styles/component.styles.js";
3
+ const styles = css`${componentStyles}:host{display:inline-block}.button-group{display:flex;flex-wrap:nowrap}`;
4
+ export {
5
+ styles as default
6
+ };
@@ -25,10 +25,13 @@ export default class SdButton extends SolidElement implements SolidFormControl {
25
25
  formMethod: 'post' | 'get';
26
26
  formNoValidate: boolean;
27
27
  formTarget: '_self' | '_blank' | '_parent' | '_top';
28
+ get validity(): ValidityState;
29
+ get validationMessage(): string;
28
30
  firstUpdated(): void;
29
31
  private handleBlur;
30
32
  private handleFocus;
31
33
  private handleClick;
34
+ private handleInvalid;
32
35
  private isButton;
33
36
  private isLink;
34
37
  handleDisabledChange(): void;
@@ -36,6 +39,7 @@ export default class SdButton extends SolidElement implements SolidFormControl {
36
39
  focus(options?: FocusOptions): void;
37
40
  blur(): void;
38
41
  checkValidity(): boolean;
42
+ getForm(): HTMLFormElement | null;
39
43
  reportValidity(): boolean;
40
44
  setCustomValidity(message: string): void;
41
45
  render(): import("lit-html").TemplateResult;
@@ -1,7 +1,7 @@
1
1
  import "../spinner/spinner.js";
2
2
  import { css } from "lit";
3
3
  import { customElement } from "../../internal/register-custom-element.js";
4
- import { FormControlController } from "../../internal/form.js";
4
+ import { FormControlController, validValidityState } from "../../internal/form.js";
5
5
  import { HasSlotController } from "../../internal/slot.js";
6
6
  import { literal, html } from "lit/static-html.js";
7
7
  import { ifDefined } from "lit/directives/if-defined.js";
@@ -47,6 +47,20 @@ let SdButton = class extends SolidElement {
47
47
  this.value = "";
48
48
  this.href = "";
49
49
  }
50
+ /** Gets the validity state object */
51
+ get validity() {
52
+ if (this.isButton()) {
53
+ return this.button.validity;
54
+ }
55
+ return validValidityState;
56
+ }
57
+ /** Gets the validation message */
58
+ get validationMessage() {
59
+ if (this.isButton()) {
60
+ return this.button.validationMessage;
61
+ }
62
+ return "";
63
+ }
50
64
  firstUpdated() {
51
65
  if (this.isButton()) {
52
66
  this.formControlController.updateValidity();
@@ -71,6 +85,10 @@ let SdButton = class extends SolidElement {
71
85
  this.formControlController.reset(this);
72
86
  }
73
87
  }
88
+ handleInvalid(event) {
89
+ this.formControlController.setValidity(false);
90
+ this.formControlController.emitInvalidEvent(event);
91
+ }
74
92
  isButton() {
75
93
  return this.href ? false : true;
76
94
  }
@@ -94,13 +112,17 @@ let SdButton = class extends SolidElement {
94
112
  blur() {
95
113
  this.button.blur();
96
114
  }
97
- /** Checks for validity but does not show the browser's validation message. */
115
+ /** Checks for validity but does not show the browser's validation message. Returns `true` when valid and `false` when invalid. */
98
116
  checkValidity() {
99
117
  if (this.isButton()) {
100
118
  return this.button.checkValidity();
101
119
  }
102
120
  return true;
103
121
  }
122
+ /** Gets the associated form, if one exists. */
123
+ getForm() {
124
+ return this.formControlController.getForm();
125
+ }
104
126
  /** Checks for validity and shows the browser's validation message if the control is invalid. */
105
127
  reportValidity() {
106
128
  if (this.isButton()) {
@@ -170,7 +192,7 @@ let SdButton = class extends SolidElement {
170
192
  active:bg-accent-700
171
193
  ${!this.inverted ? "disabled:bg-neutral-500" : "disabled:bg-neutral-600"} disabled:text-white`
172
194
  }[this.variant]
173
- )}" ?disabled="${ifDefined(isLink ? void 0 : this.disabled)}" type="${ifDefined(isLink ? void 0 : this.type)}" title="${this.title}" name="${ifDefined(isLink ? void 0 : this.name)}" value="${ifDefined(isLink ? void 0 : this.value)}" href="${ifDefined(isLink ? this.href : void 0)}" target="${ifDefined(isLink ? this.target : void 0)}" download="${ifDefined(isLink ? this.download : void 0)}" rel="${ifDefined(isLink && this.target ? "noreferrer noopener" : void 0)}" role="${ifDefined(isLink ? void 0 : "button")}" aria-disabled="${this.disabled ? "true" : "false"}" tabindex="${this.disabled ? "-1" : "0"}" @blur="${this.handleBlur}" @focus="${this.handleFocus}" @click="${this.handleClick}"><slot name="icon-left" part="icon-left" class="${cx(
195
+ )}" ?disabled="${ifDefined(isLink ? void 0 : this.disabled)}" type="${ifDefined(isLink ? void 0 : this.type)}" title="${this.title}" name="${ifDefined(isLink ? void 0 : this.name)}" value="${ifDefined(isLink ? void 0 : this.value)}" href="${ifDefined(isLink ? this.href : void 0)}" target="${ifDefined(isLink ? this.target : void 0)}" download="${ifDefined(isLink ? this.download : void 0)}" rel="${ifDefined(isLink && this.target ? "noreferrer noopener" : void 0)}" role="${ifDefined(isLink ? void 0 : "button")}" aria-disabled="${this.disabled ? "true" : "false"}" tabindex="${this.disabled ? "-1" : "0"}" @blur="${this.handleBlur}" @focus="${this.handleFocus}" @invalid="${this.isButton() ? this.handleInvalid : null}" @click="${this.handleClick}"><slot name="icon-left" part="icon-left" class="${cx(
174
196
  "flex flex-auto items-center pointer-events-none",
175
197
  slots["icon-only"] && "hidden",
176
198
  this.loading && "invisible",
@@ -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-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-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-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-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-radio-group': SdRadioGroup;
51
+ }
52
+ }