@skf-design-system/ui-components 0.0.1-beta.4 → 1.0.0-alpha.28

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 (167) hide show
  1. package/README.md +26 -6
  2. package/custom-elements.json +18265 -0
  3. package/dist/components/accordion/accordion.component.d.ts +9 -5
  4. package/dist/components/accordion/accordion.component.js +22 -19
  5. package/dist/components/accordion/accordion.d.ts +1 -1
  6. package/dist/components/accordion/accordion.styles.js +3 -3
  7. package/dist/components/alert/alert.component.d.ts +7 -4
  8. package/dist/components/alert/alert.component.js +21 -19
  9. package/dist/components/alert/alert.styles.js +50 -47
  10. package/dist/components/button/button.component.d.ts +24 -0
  11. package/dist/components/button/button.component.js +80 -56
  12. package/dist/components/button/button.styles.js +2 -1
  13. package/dist/components/card/card.component.d.ts +3 -3
  14. package/dist/components/card/card.component.js +16 -19
  15. package/dist/components/card/card.styles.js +11 -3
  16. package/dist/components/checkbox/checkbox.component.d.ts +17 -15
  17. package/dist/components/checkbox/checkbox.component.js +95 -89
  18. package/dist/components/checkbox/checkbox.styles.js +7 -2
  19. package/dist/components/checkbox/checkbox.test.d.ts +1 -0
  20. package/dist/components/collapse/collapse.component.d.ts +9 -6
  21. package/dist/components/collapse/collapse.component.js +39 -36
  22. package/dist/components/collapse/collapse.styles.js +3 -3
  23. package/dist/components/collapse/collapse.test.d.ts +1 -0
  24. package/dist/components/divider/divider.component.d.ts +13 -10
  25. package/dist/components/divider/divider.component.js +34 -29
  26. package/dist/components/divider/divider.styles.js +1 -5
  27. package/dist/components/heading/heading.component.d.ts +12 -2
  28. package/dist/components/heading/heading.component.js +14 -14
  29. package/dist/components/heading/heading.styles.js +1 -1
  30. package/dist/components/icon/icon.component.d.ts +14 -8
  31. package/dist/components/icon/icon.component.js +6 -6
  32. package/dist/components/icon/icon.styles.js +56 -54
  33. package/dist/components/input/input.component.d.ts +44 -29
  34. package/dist/components/input/input.component.js +118 -111
  35. package/dist/components/link/link.component.d.ts +15 -12
  36. package/dist/components/link/link.component.js +7 -7
  37. package/dist/components/link/link.styles.js +1 -1
  38. package/dist/components/loader/loader.component.d.ts +7 -7
  39. package/dist/components/loader/loader.component.js +35 -61
  40. package/dist/components/loader/loader.styles.js +42 -10
  41. package/dist/components/logo/logo.component.d.ts +5 -3
  42. package/dist/components/logo/logo.component.js +8 -8
  43. package/dist/components/logo/logo.styles.js +2 -2
  44. package/dist/components/progress/progress.component.d.ts +22 -0
  45. package/dist/components/progress/progress.component.js +40 -0
  46. package/dist/components/progress/progress.d.ts +8 -0
  47. package/dist/components/progress/progress.js +6 -0
  48. package/dist/components/progress/progress.styles.d.ts +1 -0
  49. package/dist/components/progress/progress.styles.js +47 -0
  50. package/dist/components/radio/radio.component.d.ts +18 -18
  51. package/dist/components/radio/radio.component.js +94 -78
  52. package/dist/components/radio/radio.styles.js +6 -1
  53. package/dist/components/select/select.component.d.ts +140 -0
  54. package/dist/components/select/select.component.js +327 -0
  55. package/dist/components/select/select.controllers.d.ts +59 -0
  56. package/dist/components/select/select.controllers.js +172 -0
  57. package/dist/components/select/select.d.ts +8 -0
  58. package/dist/components/select/select.js +6 -0
  59. package/dist/components/select/select.styles.d.ts +1 -0
  60. package/dist/components/select/select.styles.js +131 -0
  61. package/dist/components/select-option/select-option.component.d.ts +77 -0
  62. package/dist/components/select-option/select-option.component.js +123 -0
  63. package/dist/components/select-option/select-option.controllers.d.ts +9 -0
  64. package/dist/components/select-option/select-option.d.ts +8 -0
  65. package/dist/components/select-option/select-option.js +6 -0
  66. package/dist/components/select-option/select-option.styles.d.ts +1 -0
  67. package/dist/components/select-option/select-option.styles.js +53 -0
  68. package/dist/components/select-option-group/select-option-group.component.d.ts +16 -0
  69. package/dist/components/select-option-group/select-option-group.component.js +31 -0
  70. package/dist/components/select-option-group/select-option-group.d.ts +8 -0
  71. package/dist/components/select-option-group/select-option-group.js +6 -0
  72. package/dist/components/select-option-group/select-option-group.style.d.ts +1 -0
  73. package/dist/components/select-option-group/select-option-group.style.js +18 -0
  74. package/dist/components/switch/switch.component.d.ts +2 -3
  75. package/dist/components/switch/switch.component.js +5 -2
  76. package/dist/components/switch/switch.styles.js +6 -1
  77. package/dist/components/switch/switch.test.d.ts +1 -0
  78. package/dist/components/tab/tab.component.d.ts +29 -0
  79. package/dist/components/tab/tab.component.js +57 -0
  80. package/dist/components/tab/tab.d.ts +8 -0
  81. package/dist/components/tab/tab.js +6 -0
  82. package/dist/components/tab/tab.styles.d.ts +1 -0
  83. package/dist/components/tab/tab.styles.js +123 -0
  84. package/dist/components/tab-group/tab-group.component.d.ts +43 -0
  85. package/dist/components/tab-group/tab-group.component.js +98 -0
  86. package/dist/components/tab-group/tab-group.d.ts +8 -0
  87. package/dist/components/tab-group/tab-group.js +6 -0
  88. package/dist/components/tab-group/tab-group.styles.d.ts +1 -0
  89. package/dist/components/tab-group/tab-group.styles.js +75 -0
  90. package/dist/components/tab-panel/tab-panel.component.d.ts +19 -0
  91. package/dist/components/tab-panel/tab-panel.component.js +36 -0
  92. package/dist/components/tab-panel/tab-panel.d.ts +8 -0
  93. package/dist/components/tab-panel/tab-panel.js +6 -0
  94. package/dist/components/tab-panel/tab-panel.styles.d.ts +1 -0
  95. package/dist/components/tab-panel/tab-panel.styles.js +13 -0
  96. package/dist/components/tag/tag.component.d.ts +25 -4
  97. package/dist/components/tag/tag.component.js +66 -29
  98. package/dist/components/tag/tag.styles.js +6 -5
  99. package/dist/components/textarea/textarea.component.d.ts +26 -23
  100. package/dist/components/textarea/textarea.component.js +20 -17
  101. package/dist/components/toast/toast.component.d.ts +35 -0
  102. package/dist/components/toast/toast.component.js +52 -0
  103. package/dist/components/toast/toast.d.ts +8 -0
  104. package/dist/components/toast/toast.js +6 -0
  105. package/dist/components/toast/toast.singleton.d.ts +26 -0
  106. package/dist/components/toast/toast.singleton.js +53 -0
  107. package/dist/components/toast/toast.styles.d.ts +1 -0
  108. package/dist/components/toast/toast.styles.js +9 -0
  109. package/dist/components/toast-item/toast-item.component.d.ts +21 -0
  110. package/dist/components/toast-item/toast-item.component.js +65 -0
  111. package/dist/components/toast-item/toast-item.d.ts +6 -0
  112. package/dist/components/toast-item/toast-item.js +2 -0
  113. package/dist/components/toast-item/toast-item.styles.d.ts +2 -0
  114. package/dist/components/toast-item/toast-item.styles.js +16 -0
  115. package/dist/components/toast-wrapper/toast-wrapper.component.d.ts +24 -0
  116. package/dist/components/toast-wrapper/toast-wrapper.component.js +37 -0
  117. package/dist/components/toast-wrapper/toast-wrapper.d.ts +8 -0
  118. package/dist/components/toast-wrapper/toast-wrapper.js +6 -0
  119. package/dist/components/toast-wrapper/toast-wrapper.styles.d.ts +1 -0
  120. package/dist/components/toast-wrapper/toast-wrapper.styles.js +20 -0
  121. package/dist/custom-elements.json +2146 -616
  122. package/dist/index.d.ts +8 -0
  123. package/dist/index.js +60 -36
  124. package/dist/internal/components/formBase.d.ts +19 -1
  125. package/dist/internal/components/formBase.js +29 -17
  126. package/dist/internal/components/hint/hint.component.js +12 -10
  127. package/dist/internal/components/hint/hint.styles.js +26 -10
  128. package/dist/internal/components/skf-element.d.ts +4 -4
  129. package/dist/internal/components/skf-element.js +15 -19
  130. package/dist/internal/helpers/array.d.ts +4 -0
  131. package/dist/internal/helpers/findMatchingTags.d.ts +2 -0
  132. package/dist/internal/helpers/findMatchingTags.js +12 -0
  133. package/dist/internal/helpers/hintSeverity.d.ts +2 -0
  134. package/dist/internal/helpers/hintSeverity.js +6 -0
  135. package/dist/internal/helpers/raiseError.d.ts +28 -0
  136. package/dist/internal/helpers/raiseError.js +29 -0
  137. package/dist/internal/helpers/watch.d.ts +27 -0
  138. package/dist/internal/helpers/watch.js +28 -0
  139. package/dist/internal/storybook/shadowRootTraverser.d.ts +16 -6
  140. package/dist/react/index.d.ts +9 -0
  141. package/dist/react/index.js +9 -0
  142. package/dist/react/skf-button/index.d.ts +7 -1
  143. package/dist/react/skf-button/index.js +5 -1
  144. package/dist/react/skf-progress/index.d.ts +3 -0
  145. package/dist/react/skf-progress/index.js +13 -0
  146. package/dist/react/skf-select/index.d.ts +21 -0
  147. package/dist/react/skf-select/index.js +21 -0
  148. package/dist/react/skf-select-option/index.d.ts +9 -0
  149. package/dist/react/skf-select-option/index.js +17 -0
  150. package/dist/react/skf-select-option-group/index.d.ts +3 -0
  151. package/dist/react/skf-select-option-group/index.js +13 -0
  152. package/dist/react/skf-tab/index.d.ts +12 -0
  153. package/dist/react/skf-tab/index.js +18 -0
  154. package/dist/react/skf-tab-group/index.d.ts +3 -0
  155. package/dist/react/skf-tab-group/index.js +13 -0
  156. package/dist/react/skf-tab-panel/index.d.ts +3 -0
  157. package/dist/react/skf-tab-panel/index.js +13 -0
  158. package/dist/react/skf-toast/index.d.ts +3 -0
  159. package/dist/react/skf-toast/index.js +13 -0
  160. package/dist/react/skf-toast-wrapper/index.d.ts +3 -0
  161. package/dist/react/skf-toast-wrapper/index.js +13 -0
  162. package/dist/styles/form-field.styles.js +11 -7
  163. package/dist/types/jsx/custom-element-jsx.d.ts +166 -995
  164. package/dist/types/vue/index.d.ts +368 -94
  165. package/dist/vscode.html-custom-data.json +408 -106
  166. package/dist/web-types.json +932 -281
  167. package/package.json +39 -35
@@ -1,18 +1,50 @@
1
1
  import { css as s } from "lit";
2
- const a = s`
3
- :host {
4
- display: inline-flex;
5
- }
2
+ const e = s`
3
+ @layer components {
4
+ :host {
5
+ display: inline-flex;
6
+ }
7
+
8
+ #root {
9
+ display: flex;
10
+ gap: var(--_skf-loader-gap, var(--skf-spacing-50));
11
+
12
+ :host([size='sm']) & {
13
+ --_skf-loader-gap: var(--skf-spacing-25);
14
+ }
15
+ }
6
16
 
7
- #loader {
8
- aspect-ratio: 1;
9
- block-size: var(--_skf-loader-size, var(--skf-size-48));
17
+ .circle {
18
+ animation: skf-loader 0.5s infinite ease-in alternate;
19
+ aspect-ratio: 1;
20
+ background-color: var(--_skf-loader-color, var(--skf-bg-color-emphasised));
21
+ border-radius: 50%;
22
+ inline-size: var(--_skf-loader-size, var(--skf-size-12));
23
+
24
+ &:nth-child(2) {
25
+ animation-delay: 0.1s;
26
+ }
27
+
28
+ &:nth-child(3) {
29
+ animation-delay: 0.2s;
30
+ }
31
+
32
+ :host([invert]) & {
33
+ --_skf-loader-color: var(--skf-bg-color-neutral-1);
34
+ }
35
+
36
+ :host([size='sm']) & {
37
+ --_skf-loader-size: var(--skf-size-4);
38
+ }
39
+ }
10
40
 
11
- :host([size='sm']) & {
12
- --_skf-loader-size: var(--skf-size-24);
41
+ @keyframes skf-loader {
42
+ to {
43
+ opacity: 0;
44
+ }
13
45
  }
14
46
  }
15
47
  `;
16
48
  export {
17
- a as default
49
+ e as default
18
50
  };
@@ -10,10 +10,12 @@ import { type CSSResultGroup } from 'lit';
10
10
  */
11
11
  export declare class SkfLogo extends SkfElement {
12
12
  static styles: CSSResultGroup;
13
- /** The title of the logo */
13
+ /** Defines the title of the logo */
14
14
  title: string;
15
- /** If provided, sets color of the logo */
16
- /** @type { "primary" | "secondary" | "inverse" } */
15
+ /**
16
+ * If defined, sets color of the logo
17
+ * @type { "primary" | "secondary" | "inverse" }
18
+ */
17
19
  color?: Logo;
18
20
  render(): import("lit").TemplateResult<1>;
19
21
  }
@@ -1,12 +1,12 @@
1
1
  import { SkfElement as i } from "../../internal/components/skf-element.js";
2
2
  import m from "../../styles/component.styles.js";
3
3
  import { html as n } from "lit";
4
- import { property as v } from "lit/decorators.js";
4
+ import { property as l } from "lit/decorators.js";
5
5
  import a from "./logo.styles.js";
6
- var d = Object.defineProperty, s = (h, o, l, f) => {
7
- for (var c = void 0, r = h.length - 1, p; r >= 0; r--)
8
- (p = h[r]) && (c = p(o, l, c) || c);
9
- return c && d(o, l, c), c;
6
+ var d = Object.defineProperty, s = (h, o, p, f) => {
7
+ for (var c = void 0, r = h.length - 1, v; r >= 0; r--)
8
+ (v = h[r]) && (c = v(o, p, c) || c);
9
+ return c && d(o, p, c), c;
10
10
  };
11
11
  const e = class e extends i {
12
12
  constructor() {
@@ -14,7 +14,7 @@ const e = class e extends i {
14
14
  }
15
15
  render() {
16
16
  return n`
17
- <svg id="logo" viewBox="0 0 1300 300" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px">
17
+ <svg id="root" viewBox="0 0 1300 300" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px">
18
18
  <title>${this.title}</title>
19
19
  <g>
20
20
  <g>
@@ -58,10 +58,10 @@ c0,5.8-4.3,6.1-9.1,6.1H1230.9z"
58
58
  e.styles = [m, a];
59
59
  let t = e;
60
60
  s([
61
- v()
61
+ l()
62
62
  ], t.prototype, "title");
63
63
  s([
64
- v()
64
+ l()
65
65
  ], t.prototype, "color");
66
66
  export {
67
67
  t as SkfLogo
@@ -1,10 +1,10 @@
1
1
  import { css as o } from "lit";
2
2
  const r = o`
3
3
  :host {
4
- display: contents;
4
+ display: inline-flex;
5
5
  }
6
6
 
7
- #logo {
7
+ #root {
8
8
  aspect-ratio: 13 / 3;
9
9
  block-size: var(--skf-logo-height, var(--skf-size-32));
10
10
  fill: var(--_skf-logo-color, var(--skf-logo-primary));
@@ -0,0 +1,22 @@
1
+ import { SkfElement } from '@internal/components/skf-element';
2
+ import { type CSSResultGroup } from 'lit';
3
+ /**
4
+ * The `<skf-progress>` element displays an indicator showing the completion progress of a task, typically displayed as a progress bar
5
+ *
6
+ * @documentation See [zeroheight](https://zeroheight.com/****) for design principles
7
+ *
8
+ * @tagname skf-progress
9
+ */
10
+ export declare class SkfProgress extends SkfElement {
11
+ #private;
12
+ static styles: CSSResultGroup;
13
+ static formAssociated: boolean;
14
+ /** If true, the progress-bar's fill value is animated */
15
+ animated?: boolean;
16
+ /** Describes how much work the task indicated by the progress element requires */
17
+ max: number;
18
+ /** Specifies how much of the task that has been completed */
19
+ value: number;
20
+ constructor();
21
+ render(): import("lit").TemplateResult<1>;
22
+ }
@@ -0,0 +1,40 @@
1
+ var h = (t) => {
2
+ throw TypeError(t);
3
+ };
4
+ var f = (t, e, r) => e.has(t) || h("Cannot " + r);
5
+ var v = (t, e, r) => (f(t, e, "read from private field"), r ? r.call(t) : e.get(t)), y = (t, e, r) => e.has(t) ? h("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, r), c = (t, e, r, a) => (f(t, e, "write to private field"), a ? a.call(t, r) : e.set(t, r), r);
6
+ import { SkfElement as d } from "../../internal/components/skf-element.js";
7
+ import x from "../../styles/component.styles.js";
8
+ import { html as b } from "lit";
9
+ import { property as m } from "lit/decorators.js";
10
+ import { styles as _ } from "./progress.styles.js";
11
+ var N = Object.defineProperty, n = (t, e, r, a) => {
12
+ for (var o = void 0, l = t.length - 1, u; l >= 0; l--)
13
+ (u = t[l]) && (o = u(e, r, o) || o);
14
+ return o && N(e, r, o), o;
15
+ }, i;
16
+ const p = class p extends d {
17
+ constructor() {
18
+ super();
19
+ y(this, i);
20
+ this.max = 1, this.value = 0, c(this, i, this.attachInternals()), v(this, i).role = "progressbar";
21
+ }
22
+ render() {
23
+ const r = this.value / this.max * 100;
24
+ return b`<div id="root" style="--_skf-progress-value: ${r}%"></div>`;
25
+ }
26
+ };
27
+ i = new WeakMap(), p.styles = [x, _], p.formAssociated = !0;
28
+ let s = p;
29
+ n([
30
+ m({ type: Boolean, reflect: !0 })
31
+ ], s.prototype, "animated");
32
+ n([
33
+ m({ type: Number })
34
+ ], s.prototype, "max");
35
+ n([
36
+ m({ type: Number })
37
+ ], s.prototype, "value");
38
+ export {
39
+ s as SkfProgress
40
+ };
@@ -0,0 +1,8 @@
1
+ import { SkfProgress } from './progress.component';
2
+ export * from './progress.component';
3
+ export default SkfProgress;
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ 'skf-progress': SkfProgress;
7
+ }
8
+ }
@@ -0,0 +1,6 @@
1
+ import { SkfProgress as r } from "./progress.component.js";
2
+ r.define("skf-progress");
3
+ export {
4
+ r as SkfProgress,
5
+ r as default
6
+ };
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;
@@ -0,0 +1,47 @@
1
+ import { css as r } from "lit";
2
+ const e = r`
3
+ @layer components {
4
+ #root {
5
+ background: var(--skf-bg-color-neutral-3);
6
+ block-size: var(--skf-size-8);
7
+ border-radius: 0.25rem; /* Missing token */
8
+ overflow: hidden;
9
+
10
+ &::after {
11
+ background-color: var(--skf-bg-color-emphasised);
12
+ block-size: inherit;
13
+ border-radius: inherit;
14
+ content: '';
15
+ display: block;
16
+ inline-size: var(--_skf-progress-value, auto);
17
+ transition: inline-size calc(var(--skf-motion-duration-slow) * 1ms)
18
+ cubic-bezier(0.4, 0.93, 0.71, 0.89);
19
+ }
20
+
21
+ :host([animated]) &::after {
22
+ animation: skf-progress-animation calc(var(--skf-motion-duration-slow) * 1ms) linear
23
+ infinite reverse;
24
+ background-image: linear-gradient(
25
+ -45deg,
26
+ rgba(255 255 255 / 20%) 25%,
27
+ transparent 25%,
28
+ transparent 50%,
29
+ rgba(255 255 255 / 20%) 50%,
30
+ rgba(255 255 255 / 20%) 75%,
31
+ transparent 75%,
32
+ transparent
33
+ );
34
+ background-size: 50px 50px;
35
+ }
36
+ }
37
+
38
+ @keyframes skf-progress-animation {
39
+ to {
40
+ background-position: 50px 50px;
41
+ }
42
+ }
43
+ }
44
+ `;
45
+ export {
46
+ e as styles
47
+ };
@@ -5,40 +5,40 @@ import { type CSSResultGroup } from 'lit';
5
5
  /**
6
6
  * The `<skf-radio>` component is used to create a radio input
7
7
  *
8
- * @documentation See [InVision DSM](https://skf.invisionapp.com/dsm/ab-skf/4-web-applications/nav/5fa7caf78c01200018354495/asset/6229d63d9fe16020a60657e5) for design principles
8
+ * @documentation See [zeroheight](https://zeroheight.com/853e936c9/p/78d5dd-radio-button) for design principles
9
9
  *
10
10
  * @attribute {boolean} disabled - If true, sets disabled state
11
11
  * @attribute {boolean} required - If true, value is required or must be checked for the form to be submittable
12
12
  *
13
13
  * @event change {object} - When the value of the input changes
14
14
  *
15
- * @slot Default - Alternatively, you can use the `label` attribute
15
+ * @slot - The radios label. Alternatively, you can use the `label` attribute.
16
16
  *
17
17
  * @tagname skf-radio
18
18
  */
19
19
  export declare class SkfRadio extends FormBase implements FormFieldBaseProps {
20
20
  static styles: CSSResultGroup;
21
- /** @internal */
22
21
  private _initialChecked;
23
- /** If provided, outputs helping hints in console */
24
- debug?: boolean | undefined;
22
+ /** If true, outputs helping hints in console */
23
+ debug?: boolean;
25
24
  /** If true, outputs helping hints in console */
26
25
  checked?: boolean;
27
26
  /** If true, forces component to invalid state until removed */
28
27
  customInvalid?: boolean;
29
- /** If true, hides the label visually */
30
- hideLabel: boolean;
31
- /** The input's label. Alternatively, you can use the `label` attribute. */
28
+ /** If defined, sets the input's label unless the default slot is used. Alternatively, you can use the `label` attribute. */
32
29
  label?: string;
33
- /** If provided, adds name to the input-element */
30
+ /** If defined, adds name to the input-element */
34
31
  name?: string;
35
- /** If provided, renders an alternative A11y text for the asterisk */
32
+ /** If defined, renders an alternative A11y text for the asterisk */
36
33
  requiredLabel?: string;
37
- /** If provided, displays an alternative size */
38
- size?: 'sm' | 'md';
39
- /** If provided, displays provided severity state */
34
+ /** Size of the Radio */
35
+ size: 'sm' | 'md';
36
+ /**
37
+ * If defined, displays provided severity state
38
+ * @type {"success" | "info" | "warning" | "alert"}
39
+ */
40
40
  severity?: FormFieldBaseProps['severity'];
41
- /** If provided, displays valid state after interaction */
41
+ /** If true, displays valid state after interaction */
42
42
  showValid?: boolean;
43
43
  /** The current value of the input field */
44
44
  value: string;
@@ -48,11 +48,11 @@ export declare class SkfRadio extends FormBase implements FormFieldBaseProps {
48
48
  /** @internal */
49
49
  private $input?;
50
50
  connectedCallback(): void;
51
- willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
52
51
  protected firstUpdated(): void;
53
- updated(changedProperties: Map<string | number | symbol, unknown>): void;
54
- attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
55
- debugOutput(): void;
52
+ handleInvalidChange(): void;
53
+ handleDebugInvalid(): void;
54
+ handleCheckedChanged(): void;
55
+ handleCustomInvalidChange(): void;
56
56
  /** @internal */
57
57
  private _resetValue;
58
58
  /** @internal */
@@ -1,134 +1,150 @@
1
1
  import "../icon/icon.js";
2
- import { FormBase as u } from "../../internal/components/formBase.js";
3
- import { Asterisk as c } from "../../internal/templates/asterisk.js";
4
- import p from "../../styles/component.styles.js";
2
+ import { FormBase as c } from "../../internal/components/formBase.js";
3
+ import { watch as n } from "../../internal/helpers/watch.js";
4
+ import { Asterisk as p } from "../../internal/templates/asterisk.js";
5
+ import v from "../../styles/component.styles.js";
5
6
  import { html as m } from "lit";
6
- import { property as a, state as v, query as f } from "lit/decorators.js";
7
- import { ifDefined as y } from "lit/directives/if-defined.js";
8
- import { live as b } from "lit/directives/live.js";
9
- import _ from "./radio.styles.js";
10
- var k = Object.defineProperty, i = (n, t, r, l) => {
11
- for (var s = void 0, o = n.length - 1, h; o >= 0; o--)
12
- (h = n[o]) && (s = h(t, r, s) || s);
13
- return s && k(t, r, s), s;
7
+ import { property as r, state as f, query as y } from "lit/decorators.js";
8
+ import { ifDefined as b } from "lit/directives/if-defined.js";
9
+ import { live as _ } from "lit/directives/live.js";
10
+ import g from "./radio.styles.js";
11
+ var k = Object.defineProperty, C = Object.getOwnPropertyDescriptor, i = (u, e, s, o) => {
12
+ for (var a = o > 1 ? void 0 : o ? C(e, s) : e, l = u.length - 1, h; l >= 0; l--)
13
+ (h = u[l]) && (a = (o ? h(e, s, a) : h(a)) || a);
14
+ return o && a && k(e, s, a), a;
14
15
  };
15
- const d = class d extends u {
16
+ const d = class d extends c {
16
17
  constructor() {
17
- super(...arguments), this._initialChecked = !1, this.debug = !1, this.hideLabel = !1, this.size = "md", this.value = "", this._invalid = !1, this._resetValue = (t) => {
18
- t.stopPropagation(), this.checked = this._initialChecked, this.$input && (this.$input.checked = !!this._initialChecked), this.setFormValue(this.checked ? this.value : "");
18
+ super(...arguments), this._initialChecked = !1, this.size = "md", this.value = "", this._invalid = !1, this._resetValue = (e) => {
19
+ e.stopPropagation(), this.checked = this._initialChecked, this.$input && (this.$input.checked = !!this._initialChecked), this.setFormValue(this.checked ? this.value : "");
19
20
  };
20
21
  }
21
22
  connectedCallback() {
22
23
  super.connectedCallback(), this._validateInput();
23
24
  }
24
- willUpdate(t) {
25
- t.has("_invalid") && (this._invalid ? (this.setAttribute("invalid", ""), this.showValid || this.removeAttribute("valid"), this.checkValidity()) : (this.removeAttribute("invalid"), !this.pristine && this.showValid && this.setAttribute("valid", "true")));
26
- }
27
25
  firstUpdated() {
28
- var t;
29
- (t = this.$input) == null || t.addEventListener("change", (r) => {
30
- var l;
31
- r.stopPropagation(), this.pristine = !1, this.checked = (l = this.$input) == null ? void 0 : l.checked, this._validateInput(), this.checked ? this.setFormValue(this.value) : this.setFormValue(""), this.emitEvent("change");
32
- }), this.addEventListener("invalid", (r) => {
33
- this.pristine = !1, this._invalid = !0, this.customErrorDisplay && r.preventDefault();
26
+ var e;
27
+ (e = this.$input) == null || e.addEventListener("change", (s) => {
28
+ var o;
29
+ s.stopPropagation(), this.pristine = !1, this.checked = (o = this.$input) == null ? void 0 : o.checked, this._validateInput(), this.checked ? this.setFormValue(this.value) : this.setFormValue(""), this.emitEvent("change");
30
+ }), this.addEventListener("invalid", (s) => {
31
+ this.pristine = !1, this._invalid = !0, this.customErrorDisplay && s.preventDefault();
34
32
  }), this._initialChecked = this.checked, this.addEventListener("reset", this._resetValue);
35
33
  }
36
- updated(t) {
37
- super.updated(t), t.has("_invalid") && this._invalid && this.debug && this.debugOutput(), t.has("checked") && this.form && this.setFormValue(this.checked ? this.value : null);
34
+ handleInvalidChange() {
35
+ this._invalid ? (this.setAttribute("invalid", ""), this.showValid && this.removeAttribute("valid"), this.checkValidity()) : (this.removeAttribute("invalid"), !this.pristine && this.showValid && this.setAttribute("valid", "true"));
36
+ }
37
+ handleDebugInvalid() {
38
+ this._invalid && this.debug && !this.validity.valid && console.log(`Radio invalidity reason: ${this._internals.validationMessage}`);
38
39
  }
39
- attributeChangedCallback(t, r, l) {
40
- if (super.attributeChangedCallback(t, r, l), t === "checked" && l !== null && this._uncheckSiblingRadios(), t === "custom-invalid")
41
- if (typeof l == "string") {
42
- const o = String(l).trim() || "Custom error";
43
- this.pristine = !1, this._invalid = !0, this._internals.setValidity({ customError: !0 }, o), this.checkValidity();
44
- } else
45
- this.setValidity({}), this._validateInput();
40
+ handleCheckedChanged() {
41
+ this.setFormValue(this.checked ? this.value : null), this.checked && this._uncheckSiblingRadios();
46
42
  }
47
- debugOutput() {
48
- this.debug && !this._internals.validity.valid && console.log(`Radio invalidity reason: ${this._internals.validationMessage}`);
43
+ handleCustomInvalidChange() {
44
+ if (this.customInvalid) {
45
+ const s = (
46
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
47
+ this.getAttribute("data-customerror") || "Set a custom error message using the data-customerror attribute"
48
+ );
49
+ this.pristine = !1, this._invalid = !0, this.setValidity({ customError: !0 }, s), this.checkValidity();
50
+ } else
51
+ this.setValidity({}), this._validateInput();
49
52
  }
50
53
  /** @internal */
51
54
  _uncheckSiblingRadios() {
52
- const t = this.name;
53
- if (!t) return;
54
- (this.form ?? document).querySelectorAll(`skf-radio[name="${t}"]`).forEach((s) => {
55
- const o = this.form === s.form, h = !this.form && !s.form;
56
- s !== this && (o || h) && (s.checked = !1);
55
+ const e = this.name;
56
+ if (!e) return;
57
+ (this.form ?? document).querySelectorAll(`skf-radio[name="${e}"]`).forEach((a) => {
58
+ const l = this.form === a.form, h = !this.form && !a.form;
59
+ a !== this && (l || h) && (a.checked = !1);
57
60
  });
58
61
  }
59
62
  /** @internal */
60
63
  _validateInput() {
61
- var t;
62
- if (this._invalid = !1, this.customInvalid)
63
- this.setValidity({ customError: !0 }, "Custom error"), this._invalid = !0;
64
- else if (this.required && !this.checked) {
64
+ var e;
65
+ if (this._invalid = !1, this.customInvalid) {
66
+ const s = this.getAttribute("data-customerror");
67
+ this.setValidity({ customError: !0 }, this.withFallback(s)), this._invalid = !0;
68
+ } else if (this.required && !this.checked) {
65
69
  this.pristine || (this._invalid = !0);
66
- const r = this.hasAttribute("data-valuemissing") ? this.getAttribute("data-valuemissing") : ((t = this.$input) == null ? void 0 : t.validationMessage) ?? "Please check this box if you want to proceed";
67
- this.setValidity({ valueMissing: !0 }, String(r));
70
+ const s = this.hasAttribute("data-valuemissing") ? this.getAttribute("data-valuemissing") : (
71
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
72
+ ((e = this.$input) == null ? void 0 : e.validationMessage) || "Please check this radio if you want to proceed"
73
+ );
74
+ this.setValidity({ valueMissing: !0 }, this.withFallback(s));
68
75
  } else
69
76
  this.setValidity({});
70
77
  }
71
78
  render() {
72
79
  return m`
73
- <label id="radio">
80
+ <label id="root">
74
81
  <input
75
82
  ?disabled=${this.disabled}
76
83
  ?required=${this.required}
77
- .checked=${b(!!this.checked)}
84
+ .checked=${_(!!this.checked)}
78
85
  aria-invalid=${!!this._invalid}
79
- name=${y(this.name)}
86
+ name=${b(this.name)}
80
87
  type="radio"
81
88
  value=${this.value}
82
89
  />
83
90
  <div id="label">
84
91
  <slot>${this.label}</slot>
85
- ${this.required ? c(this.requiredLabel) : null}
92
+ ${this.required ? p(this.requiredLabel) : null}
86
93
  </div>
87
94
  </label>
88
95
  `;
89
96
  }
90
97
  };
91
- d.styles = [p, _];
92
- let e = d;
98
+ d.styles = [v, g];
99
+ let t = d;
100
+ i([
101
+ r({ type: Boolean })
102
+ ], t.prototype, "debug", 2);
103
+ i([
104
+ r({ type: Boolean, reflect: !0 })
105
+ ], t.prototype, "checked", 2);
106
+ i([
107
+ r({ type: Boolean, attribute: "custom-invalid" })
108
+ ], t.prototype, "customInvalid", 2);
93
109
  i([
94
- a({ type: Boolean })
95
- ], e.prototype, "debug");
110
+ r()
111
+ ], t.prototype, "label", 2);
96
112
  i([
97
- a({ type: Boolean, reflect: !0 })
98
- ], e.prototype, "checked");
113
+ r()
114
+ ], t.prototype, "name", 2);
99
115
  i([
100
- a({ type: Boolean, attribute: "custom-invalid" })
101
- ], e.prototype, "customInvalid");
116
+ r({ attribute: "required-label" })
117
+ ], t.prototype, "requiredLabel", 2);
102
118
  i([
103
- a({ type: Boolean, attribute: "hide-label", reflect: !0 })
104
- ], e.prototype, "hideLabel");
119
+ r({ reflect: !0 })
120
+ ], t.prototype, "size", 2);
105
121
  i([
106
- a()
107
- ], e.prototype, "label");
122
+ r()
123
+ ], t.prototype, "severity", 2);
108
124
  i([
109
- a()
110
- ], e.prototype, "name");
125
+ r({ type: Boolean, attribute: "show-valid" })
126
+ ], t.prototype, "showValid", 2);
111
127
  i([
112
- a({ attribute: "required-label" })
113
- ], e.prototype, "requiredLabel");
128
+ r()
129
+ ], t.prototype, "value", 2);
114
130
  i([
115
- a({ reflect: !0 })
116
- ], e.prototype, "size");
131
+ f()
132
+ ], t.prototype, "_invalid", 2);
117
133
  i([
118
- a({ reflect: !0 })
119
- ], e.prototype, "severity");
134
+ y("input")
135
+ ], t.prototype, "$input", 2);
120
136
  i([
121
- a({ type: Boolean, attribute: "show-valid" })
122
- ], e.prototype, "showValid");
137
+ n("_invalid")
138
+ ], t.prototype, "handleInvalidChange", 1);
123
139
  i([
124
- a()
125
- ], e.prototype, "value");
140
+ n("_invalid", { afterUpdate: !0 })
141
+ ], t.prototype, "handleDebugInvalid", 1);
126
142
  i([
127
- v()
128
- ], e.prototype, "_invalid");
143
+ n("checked")
144
+ ], t.prototype, "handleCheckedChanged", 1);
129
145
  i([
130
- f("input")
131
- ], e.prototype, "$input");
146
+ n("customInvalid")
147
+ ], t.prototype, "handleCustomInvalidChange", 1);
132
148
  export {
133
- e as SkfRadio
149
+ t as SkfRadio
134
150
  };
@@ -8,11 +8,16 @@ const e = [
8
8
  contain: initial;
9
9
  }
10
10
 
11
- #radio {
11
+ #root {
12
12
  align-items: center;
13
+ color: var(--_skf-radio-color, var(--skf-text-color-primary));
13
14
  display: flex;
14
15
  grid-gap: var(--skf-spacing-50);
15
16
 
17
+ :host([disabled]) & {
18
+ --_skf-radio-color: var(--skf-interactive-text-color-disabled);
19
+ }
20
+
16
21
  :host([size='sm']) & {
17
22
  --_skf-radio-size: var(--skf-size-20);
18
23