@skf-design-system/ui-components 1.0.1-beta.0 → 1.0.2-beta.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 (206) hide show
  1. package/README.md +1 -18
  2. package/dist/components/accordion/accordion.component.d.ts +4 -4
  3. package/dist/components/accordion/accordion.component.js +8 -8
  4. package/dist/components/alert/alert.component.d.ts +8 -9
  5. package/dist/components/alert/alert.component.js +14 -14
  6. package/dist/components/breadcrumb/breadcrumb.component.d.ts +1 -1
  7. package/dist/components/button/button.component.d.ts +3 -3
  8. package/dist/components/button/button.component.js +59 -55
  9. package/dist/components/card/card.component.js +18 -30
  10. package/dist/components/card/card.styles.js +25 -28
  11. package/dist/components/checkbox/checkbox.component.d.ts +9 -7
  12. package/dist/components/checkbox/checkbox.component.js +71 -58
  13. package/dist/components/collapse/collapse.component.js +1 -1
  14. package/dist/components/date-picker/datepicker.calendar.component.d.ts +77 -0
  15. package/dist/components/date-picker/datepicker.calendar.component.js +415 -0
  16. package/dist/components/date-picker/datepicker.calendar.styles.d.ts +1 -0
  17. package/dist/components/date-picker/datepicker.calendar.styles.js +202 -0
  18. package/dist/components/date-picker/datepicker.component.d.ts +79 -0
  19. package/dist/components/date-picker/datepicker.component.js +261 -0
  20. package/dist/components/date-picker/datepicker.d.ts +10 -0
  21. package/dist/components/date-picker/datepicker.helpers.d.ts +41 -0
  22. package/dist/components/date-picker/datepicker.helpers.js +76 -0
  23. package/dist/components/date-picker/datepicker.js +8 -0
  24. package/dist/components/date-picker/datepicker.styles.d.ts +1 -0
  25. package/dist/components/date-picker/datepicker.styles.js +87 -0
  26. package/dist/components/date-picker-input/datepicker-input.component.d.ts +115 -0
  27. package/dist/components/date-picker-input/datepicker-input.component.js +441 -0
  28. package/dist/components/date-picker-input/datepicker-input.d.ts +8 -0
  29. package/dist/components/date-picker-input/datepicker-input.helpers.d.ts +38 -0
  30. package/dist/components/date-picker-input/datepicker-input.helpers.js +31 -0
  31. package/dist/components/date-picker-input/datepicker-input.js +6 -0
  32. package/dist/components/date-picker-input/datepicker-input.styles.d.ts +1 -0
  33. package/dist/components/date-picker-input/datepicker-input.styles.js +18 -0
  34. package/dist/components/dialog/dialog.component.d.ts +18 -28
  35. package/dist/components/dialog/dialog.component.js +94 -84
  36. package/dist/components/divider/divider.component.d.ts +4 -8
  37. package/dist/components/divider/divider.component.js +24 -46
  38. package/dist/components/divider/divider.styles.js +34 -30
  39. package/dist/components/drawer/drawer.component.d.ts +57 -0
  40. package/dist/components/drawer/drawer.component.js +124 -0
  41. package/dist/components/drawer/drawer.d.ts +8 -0
  42. package/dist/components/drawer/drawer.js +6 -0
  43. package/dist/components/drawer/drawer.styles.d.ts +1 -0
  44. package/dist/components/drawer/drawer.styles.js +71 -0
  45. package/dist/components/header/header.component.d.ts +45 -0
  46. package/dist/components/header/header.component.js +110 -0
  47. package/dist/components/header/header.d.ts +8 -0
  48. package/dist/components/header/header.js +6 -0
  49. package/dist/components/header/header.styles.d.ts +1 -0
  50. package/dist/components/header/header.styles.js +68 -0
  51. package/dist/components/heading/heading.component.d.ts +6 -12
  52. package/dist/components/heading/heading.component.js +17 -17
  53. package/dist/components/heading/heading.styles.d.ts +1 -2
  54. package/dist/components/heading/heading.styles.js +1 -1
  55. package/dist/components/icon/icon.component.d.ts +1 -1
  56. package/dist/components/icon/icon.component.js +19 -19
  57. package/dist/components/input/input.component.d.ts +3 -2
  58. package/dist/components/input/input.component.js +89 -82
  59. package/dist/components/input/input.controllers.d.ts +20 -6
  60. package/dist/components/input/input.controllers.js +14 -10
  61. package/dist/components/link/link.component.js +29 -28
  62. package/dist/components/link/link.styles.js +24 -20
  63. package/dist/components/loader/loader.component.js +19 -19
  64. package/dist/components/logo/logo.component.js +6 -6
  65. package/dist/components/menu/menu.component.d.ts +4 -5
  66. package/dist/components/menu/menu.component.js +1 -1
  67. package/dist/components/nav/nav.component.d.ts +17 -0
  68. package/dist/components/nav/nav.component.js +34 -0
  69. package/dist/components/nav/nav.d.ts +8 -0
  70. package/dist/components/nav/nav.js +6 -0
  71. package/dist/components/nav/nav.styles.d.ts +1 -0
  72. package/dist/components/nav/nav.styles.js +17 -0
  73. package/dist/components/nav-item/nav-item.component.d.ts +20 -0
  74. package/dist/components/nav-item/nav-item.component.js +38 -0
  75. package/dist/components/nav-item/nav-item.d.ts +8 -0
  76. package/dist/components/nav-item/nav-item.js +6 -0
  77. package/dist/components/nav-item/nav-item.styles.d.ts +1 -0
  78. package/dist/components/nav-item/nav-item.styles.js +39 -0
  79. package/dist/components/popover/popover.component.d.ts +5 -6
  80. package/dist/components/popover/popover.component.js +24 -24
  81. package/dist/components/progress/progress.component.js +7 -7
  82. package/dist/components/radio/radio.component.d.ts +10 -6
  83. package/dist/components/radio/radio.component.js +14 -14
  84. package/dist/components/radio/radio.styles.d.ts +1 -2
  85. package/dist/components/radio/radio.styles.js +1 -1
  86. package/dist/components/segmented-button/segmented-button.component.d.ts +32 -0
  87. package/dist/components/segmented-button/segmented-button.d.ts +8 -0
  88. package/dist/components/segmented-button/segmented-button.styles.d.ts +1 -0
  89. package/dist/components/segmented-button-item/segmented-button-item.component.d.ts +36 -0
  90. package/dist/components/segmented-button-item/segmented-button-item.d.ts +8 -0
  91. package/dist/components/segmented-button-item/segmented-button-item.styles.d.ts +1 -0
  92. package/dist/components/select/select.component.js +2 -2
  93. package/dist/components/select/select.controllers.d.ts +20 -9
  94. package/dist/components/select/select.controllers.js +27 -22
  95. package/dist/components/select-option/select-option.controllers.d.ts +11 -5
  96. package/dist/components/select-option-group/select-option-group.component.js +9 -9
  97. package/dist/components/stepper/stepper.component.d.ts +2 -1
  98. package/dist/components/stepper/stepper.component.js +9 -9
  99. package/dist/components/stepper/stepper.helpers.js +5 -5
  100. package/dist/components/stepper-item/stepper-item.component.js +25 -25
  101. package/dist/components/switch/switch.component.d.ts +7 -6
  102. package/dist/components/switch/switch.component.js +7 -7
  103. package/dist/components/tab/tab.component.js +4 -4
  104. package/dist/components/tab-panel/tab-panel.component.js +12 -12
  105. package/dist/components/tag/tag.component.d.ts +4 -2
  106. package/dist/components/tag/tag.component.js +14 -14
  107. package/dist/components/textarea/textarea.component.js +10 -10
  108. package/dist/components/toast/toast.component.d.ts +1 -1
  109. package/dist/components/toast/toast.component.js +13 -13
  110. package/dist/components/toast-wrapper/toast-wrapper.component.js +10 -10
  111. package/dist/components/tooltip/tooltip.component.d.ts +5 -6
  112. package/dist/components/tooltip/tooltip.component.js +11 -11
  113. package/dist/custom-elements.json +3702 -2190
  114. package/dist/index.d.ts +6 -0
  115. package/dist/index.js +84 -66
  116. package/dist/internal/base-classes/popover/popover.base.d.ts +17 -7
  117. package/dist/internal/base-classes/popover/popover.base.js +119 -75
  118. package/dist/internal/base-classes/popover/popover.styles.js +14 -1
  119. package/dist/internal/components/hint/hint.component.js +13 -13
  120. package/dist/internal/controllers/elementOverflowController.d.ts +13 -0
  121. package/dist/internal/controllers/popover.controller.d.ts +12 -6
  122. package/dist/internal/controllers/popover.controller.js +9 -14
  123. package/dist/internal/helpers/dateFormatter.d.ts +2 -0
  124. package/dist/internal/helpers/utilityTypes.d.ts +22 -0
  125. package/dist/internal/helpers/uuid.d.ts +15 -0
  126. package/dist/internal/helpers/uuid.js +14 -0
  127. package/dist/internal/storybook/styles.d.ts +1 -0
  128. package/dist/styles/form-field.styles.js +11 -6
  129. package/dist/styles/global.css +1 -1
  130. package/dist/types/jsx/custom-element-jsx.d.ts +663 -1240
  131. package/dist/types/vue/index.d.ts +453 -255
  132. package/dist/vscode.html-custom-data.json +821 -503
  133. package/dist/web-types.json +1005 -633
  134. package/package.json +43 -52
  135. package/dist/react/index.d.ts +0 -35
  136. package/dist/react/index.js +0 -35
  137. package/dist/react/skf-accordion/index.d.ts +0 -3
  138. package/dist/react/skf-accordion/index.js +0 -13
  139. package/dist/react/skf-alert/index.d.ts +0 -9
  140. package/dist/react/skf-alert/index.js +0 -17
  141. package/dist/react/skf-breadcrumb/index.d.ts +0 -9
  142. package/dist/react/skf-breadcrumb/index.js +0 -17
  143. package/dist/react/skf-breadcrumb-item/index.d.ts +0 -3
  144. package/dist/react/skf-breadcrumb-item/index.js +0 -13
  145. package/dist/react/skf-button/index.d.ts +0 -9
  146. package/dist/react/skf-button/index.js +0 -17
  147. package/dist/react/skf-card/index.d.ts +0 -3
  148. package/dist/react/skf-card/index.js +0 -13
  149. package/dist/react/skf-checkbox/index.d.ts +0 -9
  150. package/dist/react/skf-checkbox/index.js +0 -17
  151. package/dist/react/skf-collapse/index.d.ts +0 -9
  152. package/dist/react/skf-collapse/index.js +0 -17
  153. package/dist/react/skf-dialog/index.d.ts +0 -15
  154. package/dist/react/skf-dialog/index.js +0 -19
  155. package/dist/react/skf-divider/index.d.ts +0 -3
  156. package/dist/react/skf-divider/index.js +0 -13
  157. package/dist/react/skf-heading/index.d.ts +0 -3
  158. package/dist/react/skf-heading/index.js +0 -13
  159. package/dist/react/skf-icon/index.d.ts +0 -3
  160. package/dist/react/skf-icon/index.js +0 -13
  161. package/dist/react/skf-input/index.d.ts +0 -12
  162. package/dist/react/skf-input/index.js +0 -18
  163. package/dist/react/skf-link/index.d.ts +0 -3
  164. package/dist/react/skf-link/index.js +0 -13
  165. package/dist/react/skf-loader/index.d.ts +0 -3
  166. package/dist/react/skf-loader/index.js +0 -13
  167. package/dist/react/skf-logo/index.d.ts +0 -3
  168. package/dist/react/skf-logo/index.js +0 -13
  169. package/dist/react/skf-menu/index.d.ts +0 -12
  170. package/dist/react/skf-menu/index.js +0 -18
  171. package/dist/react/skf-menu-item/index.d.ts +0 -27
  172. package/dist/react/skf-menu-item/index.js +0 -23
  173. package/dist/react/skf-popover/index.d.ts +0 -12
  174. package/dist/react/skf-popover/index.js +0 -18
  175. package/dist/react/skf-progress/index.d.ts +0 -3
  176. package/dist/react/skf-progress/index.js +0 -13
  177. package/dist/react/skf-radio/index.d.ts +0 -9
  178. package/dist/react/skf-radio/index.js +0 -17
  179. package/dist/react/skf-select/index.d.ts +0 -21
  180. package/dist/react/skf-select/index.js +0 -21
  181. package/dist/react/skf-select-option/index.d.ts +0 -9
  182. package/dist/react/skf-select-option/index.js +0 -17
  183. package/dist/react/skf-select-option-group/index.d.ts +0 -3
  184. package/dist/react/skf-select-option-group/index.js +0 -13
  185. package/dist/react/skf-stepper/index.d.ts +0 -9
  186. package/dist/react/skf-stepper/index.js +0 -17
  187. package/dist/react/skf-stepper-item/index.d.ts +0 -9
  188. package/dist/react/skf-stepper-item/index.js +0 -17
  189. package/dist/react/skf-switch/index.d.ts +0 -3
  190. package/dist/react/skf-switch/index.js +0 -13
  191. package/dist/react/skf-tab/index.d.ts +0 -12
  192. package/dist/react/skf-tab/index.js +0 -18
  193. package/dist/react/skf-tab-group/index.d.ts +0 -3
  194. package/dist/react/skf-tab-group/index.js +0 -13
  195. package/dist/react/skf-tab-panel/index.d.ts +0 -3
  196. package/dist/react/skf-tab-panel/index.js +0 -13
  197. package/dist/react/skf-tag/index.d.ts +0 -3
  198. package/dist/react/skf-tag/index.js +0 -13
  199. package/dist/react/skf-textarea/index.d.ts +0 -12
  200. package/dist/react/skf-textarea/index.js +0 -18
  201. package/dist/react/skf-toast/index.d.ts +0 -3
  202. package/dist/react/skf-toast/index.js +0 -13
  203. package/dist/react/skf-toast-wrapper/index.d.ts +0 -3
  204. package/dist/react/skf-toast-wrapper/index.js +0 -13
  205. package/dist/react/skf-tooltip/index.d.ts +0 -12
  206. package/dist/react/skf-tooltip/index.js +0 -18
@@ -1,66 +1,61 @@
1
- var _ = (o) => {
2
- throw TypeError(o);
1
+ var m = (e) => {
2
+ throw TypeError(e);
3
3
  };
4
- var w = (o, e, t) => e.has(o) || _("Cannot " + t);
5
- var f = (o, e, t) => (w(o, e, "read from private field"), t ? t.call(o) : e.get(o)), g = (o, e, t) => e.has(o) ? _("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(o) : e.set(o, t), h = (o, e, t, a) => (w(o, e, "write to private field"), a ? a.call(o, t) : e.set(o, t), t);
4
+ var _ = (e, i, o) => i.has(e) || m("Cannot " + o);
5
+ var h = (e, i, o) => (_(e, i, "read from private field"), o ? o.call(e) : i.get(e)), g = (e, i, o) => i.has(e) ? m("Cannot add the same private member more than once") : i instanceof WeakSet ? i.add(e) : i.set(e, o), c = (e, i, o, t) => (_(e, i, "write to private field"), t ? t.call(e, o) : i.set(e, o), o);
6
6
  import "../button/button.js";
7
7
  import "../heading/heading.js";
8
8
  import "../icon/icon.js";
9
- import { SkfElement as v } from "../../internal/components/skf-element.js";
10
- import { watch as C } from "../../internal/helpers/watch.js";
9
+ import { SkfElement as C } from "../../internal/components/skf-element.js";
10
+ import { watch as v } from "../../internal/helpers/watch.js";
11
11
  import B from "../../styles/component.styles.js";
12
- import { html as b, nothing as k } from "lit";
13
- import { property as c, state as m, query as P, queryAssignedElements as M } from "lit/decorators.js";
14
- import { classMap as $ } from "lit/directives/class-map.js";
12
+ import { nothing as k, html as $ } from "lit";
13
+ import { property as p, state as b, query as P, queryAssignedElements as E } from "lit/decorators.js";
14
+ import { classMap as w } from "lit/directives/class-map.js";
15
15
  import { styles as O } from "./dialog.styles.js";
16
- var A = Object.defineProperty, E = Object.getOwnPropertyDescriptor, i = (o, e, t, a) => {
17
- for (var n = a > 1 ? void 0 : a ? E(e, t) : e, l = o.length - 1, r; l >= 0; l--)
18
- (r = o[l]) && (n = (a ? r(e, t, n) : r(n)) || n);
19
- return a && n && A(e, t, n), n;
20
- }, p, u, d;
21
- const y = class y extends v {
16
+ var x = Object.defineProperty, A = Object.getOwnPropertyDescriptor, n = (e, i, o, t) => {
17
+ for (var l = t > 1 ? void 0 : t ? A(i, o) : i, a = e.length - 1, d; a >= 0; a--)
18
+ (d = e[a]) && (l = (t ? d(i, o, l) : d(l)) || l);
19
+ return t && l && x(i, o, l), l;
20
+ }, f, u, r;
21
+ const y = class y extends C {
22
22
  constructor() {
23
23
  super(...arguments);
24
- g(this, p);
24
+ g(this, f);
25
25
  g(this, u);
26
- g(this, d);
27
- h(this, p, 0), h(this, u, 20), h(this, d, !1), this.fullscreen = !1, this.noCloseButton = !1, this.noPadding = !1, this.onClose = null, this.modal = !0, this.renderFoot = !1, this.show = async () => await this.showModal(), this._handleBackdropClick = (t) => {
28
- this._isModal || t.target !== this.$dialog || this.close();
29
- }, this._handleClose = (t) => {
30
- console.log("Handle close reached"), this.onClose && this.onClose(t), this.close();
31
- }, this.showModal = async () => await (async () => (console.log("%cmodal ->", "color: red", this.modal), this.$dialog.showModal(), await this._transition().entry(), this.emit("skf-dialog-open"), !0))(), this.close = async () => (console.log("close reached"), f(this, d) ? void 0 : (h(this, d, !0), await (async () => (this.emit("skf-dialog-close"), await this._transition().exit(), this.$dialog.close(), this.open = !1, h(this, d, !1), !0))()));
26
+ g(this, r);
27
+ c(this, f, 0), c(this, u, 20), c(this, r, !1), this.fullscreen = !1, this.noCloseButton = !1, this.noPadding = !1, this.open = !1, this.onClose = null, this.renderFoot = !1, this._handleBackdropClick = (o) => {
28
+ o.target === this.$dialog && this.close();
29
+ }, this._handleClose = (o) => {
30
+ console.log("Handle close reached"), this.onClose && this.onClose(o), this.close();
31
+ }, this._handleKeyDown = (o) => {
32
+ o.preventDefault(), o.key === "Escape" && this.close();
33
+ };
34
+ }
35
+ handleOpenChange() {
36
+ var o;
37
+ this.open ? this.showModal() : this.close(), this.open && (this.renderFoot = !!((o = this.footerEls) != null && o.length));
32
38
  }
33
39
  firstUpdated() {
34
- this.$dialog.addEventListener("close", (t) => {
35
- t.stopPropagation(), console.log("close event detected 1", t), this.emit("close");
40
+ this.$dialog && this.$dialog.addEventListener("close", (o) => {
41
+ o.stopPropagation(), this.emit("skf-dialog-closed");
36
42
  });
37
43
  }
38
- handleOpenChange() {
39
- var t;
40
- switch (!0) {
41
- case (this.open === !0 && !!this.modal):
42
- this.showModal();
43
- break;
44
- case (this.open === !0 && !this.modal):
45
- this.show();
46
- break;
47
- case this.open === !1:
48
- this.close();
49
- break;
50
- }
51
- this.open && (this.renderFoot = !!((t = this.footerEls) != null && t.length));
52
- }
53
44
  /** @internal */
54
45
  _transition() {
55
- const t = this.fullscreen ? {} : {
56
- translate: `${String(f(this, p))} ${String(f(this, u))}px`
46
+ const o = this.fullscreen ? {} : {
47
+ translate: `${String(h(this, f))} ${String(h(this, u))}px`
57
48
  };
58
- return { entry: () => new Promise((l) => {
59
- const r = this.$dialog.animate(
49
+ return { entry: () => new Promise((a) => {
50
+ if (!this.$dialog) {
51
+ a("no dialog found");
52
+ return;
53
+ }
54
+ const d = this.$dialog.animate(
60
55
  [
61
56
  {
62
57
  opacity: 0,
63
- ...t
58
+ ...o
64
59
  },
65
60
  { opacity: 1, translate: "0 0" }
66
61
  ],
@@ -74,16 +69,20 @@ const y = class y extends v {
74
69
  duration: 200,
75
70
  fill: "forwards",
76
71
  pseudoElement: "::backdrop"
77
- }), r.onfinish = () => {
78
- l("opened");
72
+ }), d.onfinish = () => {
73
+ a("opened");
79
74
  };
80
- }), exit: () => new Promise((l) => {
81
- const r = this.$dialog.animate(
75
+ }), exit: () => new Promise((a) => {
76
+ if (!this.$dialog) {
77
+ a("no dialog found");
78
+ return;
79
+ }
80
+ const d = this.$dialog.animate(
82
81
  [
83
82
  { opacity: 1, translate: "0 0" },
84
83
  {
85
84
  opacity: 0,
86
- ...t
85
+ ...o
87
86
  }
88
87
  ],
89
88
  {
@@ -96,23 +95,37 @@ const y = class y extends v {
96
95
  duration: 200,
97
96
  fill: "forwards",
98
97
  pseudoElement: "::backdrop"
99
- }), r.onfinish = () => {
100
- l("closed");
98
+ }), d.onfinish = () => {
99
+ a("closed");
101
100
  };
102
101
  }) };
103
102
  }
104
- /** @internal */
105
- get _isModal() {
106
- return typeof this.modal == "string";
103
+ /** Method that opens the dialog in modal state */
104
+ async showModal() {
105
+ async function o(t) {
106
+ return t.$dialog ? (t.$dialog.showModal(), await t._transition().entry(), t.emit("skf-dialog-opened"), !0) : !1;
107
+ }
108
+ return await o(this);
109
+ }
110
+ /** Method that closes the dialog */
111
+ async close() {
112
+ if (console.log("close reached", h(this, r)), h(this, r) || !this.open) return;
113
+ c(this, r, !0);
114
+ async function o(t) {
115
+ return t.$dialog ? (t.emit("skf-dialog-closing"), await t._transition().exit(), t.$dialog.close(), t.open = !1, c(t, r, !1), !0) : !1;
116
+ }
117
+ return await o(this);
107
118
  }
108
119
  render() {
109
- return b`
120
+ return $`
110
121
  <dialog
111
122
  @close=${this._handleClose}
112
123
  @mousedown=${this._handleBackdropClick}
113
124
  @touchstart=${this._handleBackdropClick}
125
+ @keydown=${this._handleKeyDown}
126
+ aria-modal="true"
114
127
  autofocus
115
- class=${$({
128
+ class=${w({
116
129
  dialog: !0,
117
130
  "dialog--fullscreen": this.fullscreen,
118
131
  "dialog--no-padding": this.noPadding
@@ -120,7 +133,7 @@ const y = class y extends v {
120
133
  >
121
134
  <div class="dialog__head">
122
135
  <h2 class="dialog__heading">${this.heading}</h2>
123
- ${this.noCloseButton ? k : b`
136
+ ${this.noCloseButton ? k : $`
124
137
  <button
125
138
  @click=${this._handleClose}
126
139
  aria-label=${this.closeButtonAriaLabel ?? "Close dialog"}
@@ -133,7 +146,7 @@ const y = class y extends v {
133
146
  <div class="dialog__body">
134
147
  <slot class="dialog__main"></slot>
135
148
  <slot
136
- class=${$({
149
+ class=${w({
137
150
  dialog__foot: !0,
138
151
  "dialog__foot--hidden": !this.renderFoot
139
152
  })}
@@ -144,43 +157,40 @@ const y = class y extends v {
144
157
  `;
145
158
  }
146
159
  };
147
- p = new WeakMap(), u = new WeakMap(), d = new WeakMap(), y.styles = [B, O];
160
+ f = new WeakMap(), u = new WeakMap(), r = new WeakMap(), y.styles = [B, O];
148
161
  let s = y;
149
- i([
150
- c({ attribute: "close-button-aria-label" })
162
+ n([
163
+ p({ attribute: "close-button-aria-label" })
151
164
  ], s.prototype, "closeButtonAriaLabel", 2);
152
- i([
153
- c()
165
+ n([
166
+ p()
154
167
  ], s.prototype, "heading", 2);
155
- i([
156
- c({ type: Boolean })
168
+ n([
169
+ p({ type: Boolean })
157
170
  ], s.prototype, "fullscreen", 2);
158
- i([
159
- c({ type: Boolean, attribute: "no-close-button" })
171
+ n([
172
+ p({ type: Boolean, attribute: "no-close-button" })
160
173
  ], s.prototype, "noCloseButton", 2);
161
- i([
162
- c({ type: Boolean, attribute: "no-padding" })
174
+ n([
175
+ p({ type: Boolean, attribute: "no-padding" })
163
176
  ], s.prototype, "noPadding", 2);
164
- i([
165
- c({ type: Boolean, reflect: !0 })
177
+ n([
178
+ p({ type: Boolean, reflect: !0 })
166
179
  ], s.prototype, "open", 2);
167
- i([
168
- m()
180
+ n([
181
+ b()
169
182
  ], s.prototype, "onClose", 2);
170
- i([
183
+ n([
184
+ b()
185
+ ], s.prototype, "renderFoot", 2);
186
+ n([
171
187
  P("dialog")
172
188
  ], s.prototype, "$dialog", 2);
173
- i([
174
- M({ slot: "footer" })
189
+ n([
190
+ E({ slot: "footer" })
175
191
  ], s.prototype, "footerEls", 2);
176
- i([
177
- m()
178
- ], s.prototype, "modal", 2);
179
- i([
180
- m()
181
- ], s.prototype, "renderFoot", 2);
182
- i([
183
- C("open")
192
+ n([
193
+ v("open")
184
194
  ], s.prototype, "handleOpenChange", 1);
185
195
  export {
186
196
  s as SkfDialog
@@ -1,6 +1,7 @@
1
1
  import { SkfElement } from '../../internal/components/skf-element.js';
2
2
  import type { BorderColor } from '@skf-design-system/ui-assets';
3
3
  import { type CSSResultGroup } from 'lit';
4
+ type SkfDividerColor = BorderColor;
4
5
  /**
5
6
  * The `<Divider>` component can separate items from each other, to visually emphasize their lack of a relationship between groups of information
6
7
  *
@@ -12,18 +13,13 @@ import { type CSSResultGroup } from 'lit';
12
13
  * @tagname skf-divider
13
14
  */
14
15
  export declare class SkfDivider extends SkfElement {
15
- #private;
16
16
  static styles: CSSResultGroup;
17
- /**
18
- * Defines the Divider color
19
- * @type { "emphasised" | "primary" | "secondary" | "tertiary" | "inverse" }
20
- */
21
- color: BorderColor;
17
+ /** Defines the Divider color */
18
+ color: SkfDividerColor;
22
19
  /** If true, renders a div for presentational purpose instead of the semantic hr-element */
23
20
  decorative: boolean;
24
21
  /** If true, renders the divider vertically */
25
22
  vertical: boolean;
26
- constructor();
27
23
  connectedCallback(): void;
28
- render(): import("lit").TemplateResult<1>;
29
24
  }
25
+ export {};
@@ -1,54 +1,32 @@
1
- var v = (r) => {
2
- throw TypeError(r);
1
+ import { SkfElement as n } from "../../internal/components/skf-element.js";
2
+ import m from "../../styles/component.styles.js";
3
+ import "lit";
4
+ import { property as o } from "lit/decorators.js";
5
+ import { styles as f } from "./divider.styles.js";
6
+ var h = Object.defineProperty, a = (l, s, c, v) => {
7
+ for (var t = void 0, r = l.length - 1, p; r >= 0; r--)
8
+ (p = l[r]) && (t = p(s, c, t) || t);
9
+ return t && h(s, c, t), t;
3
10
  };
4
- var m = (r, e, t) => e.has(r) || v("Cannot " + t);
5
- var c = (r, e, t) => (m(r, e, "read from private field"), t ? t.call(r) : e.get(r)), f = (r, e, t) => e.has(r) ? v("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(r) : e.set(r, t), y = (r, e, t, a) => (m(r, e, "write to private field"), a ? a.call(r, t) : e.set(r, t), t);
6
- import { SkfElement as u } from "../../internal/components/skf-element.js";
7
- import b from "../../styles/component.styles.js";
8
- import { html as C } from "lit";
9
- import { property as n } from "lit/decorators.js";
10
- import { classMap as _ } from "lit/directives/class-map.js";
11
- import { styles as x } from "./divider.styles.js";
12
- var B = Object.defineProperty, d = (r, e, t, a) => {
13
- for (var o = void 0, l = r.length - 1, h; l >= 0; l--)
14
- (h = r[l]) && (o = h(e, t, o) || o);
15
- return o && B(e, t, o), o;
16
- }, i;
17
- const p = class p extends u {
11
+ const i = class i extends n {
18
12
  constructor() {
19
- super();
20
- f(this, i);
21
- this.color = "primary", this.decorative = !1, this.vertical = !1, y(this, i, this.attachInternals());
13
+ super(...arguments), this.color = "primary", this.decorative = !1, this.vertical = !1;
22
14
  }
23
15
  connectedCallback() {
24
- super.connectedCallback(), c(this, i).role = this.decorative ? "generic" : "separator", c(this, i).ariaOrientation = this.vertical ? "vertical" : "horizontal";
25
- }
26
- render() {
27
- return C`
28
- <div
29
- class=${_({
30
- divider: !0,
31
- "divider--color-emphasised": this.color === "emphasised",
32
- "divider--color-inverse": this.color === "inverse",
33
- "divider--color-secondary": this.color === "secondary",
34
- "divider--color-tertiary": this.color === "tertiary",
35
- "divider--vertical": this.vertical
36
- })}
37
- ></div>
38
- `;
16
+ super.connectedCallback(), this.role = this.decorative ? "generic" : "separator", this.ariaOrientation = this.vertical ? "vertical" : "horizontal";
39
17
  }
40
18
  };
41
- i = new WeakMap(), p.styles = [b, x];
42
- let s = p;
43
- d([
44
- n({ reflect: !0 })
45
- ], s.prototype, "color");
46
- d([
47
- n({ type: Boolean })
48
- ], s.prototype, "decorative");
49
- d([
50
- n({ type: Boolean, reflect: !0 })
51
- ], s.prototype, "vertical");
19
+ i.styles = [m, f];
20
+ let e = i;
21
+ a([
22
+ o({ reflect: !0 })
23
+ ], e.prototype, "color");
24
+ a([
25
+ o({ type: Boolean })
26
+ ], e.prototype, "decorative");
27
+ a([
28
+ o({ type: Boolean, reflect: !0 })
29
+ ], e.prototype, "vertical");
52
30
  export {
53
- s as SkfDivider
31
+ e as SkfDivider
54
32
  };
@@ -1,43 +1,47 @@
1
1
  import { css as r } from "lit";
2
- const d = r`
3
- /* stylelint-disable selector-class-pattern */
4
- .divider {
5
- --_skf-divider-border: var(--skf-border-width-sm) solid
6
- var(--_skf-divider-border-color, var(--skf-border-color-primary));
2
+ const e = r`
3
+ @layer components {
4
+ @layer base {
5
+ :host {
6
+ --_skf-divider-border: var(--skf-border-width-sm) solid
7
+ var(--_skf-divider-border-color, var(--skf-border-color-primary));
7
8
 
8
- display: block;
9
+ display: block;
10
+ }
9
11
 
10
- &:not(.divider--vertical) {
11
- border-top: var(--_skf-divider-border);
12
- margin-block: var(--skf-divider-spacing, var(--skf-spacing-100));
13
- margin-inline: var(--skf-divider-inset, 0);
12
+ :host(:not([vertical])) {
13
+ border-top: var(--_skf-divider-border);
14
+ margin-block: var(--skf-divider-spacing, var(--skf-spacing-100));
15
+ margin-inline: var(--skf-divider-inset, 0);
16
+ }
14
17
  }
15
- }
16
18
 
17
- .divider--vertical {
18
- block-size: 100%;
19
- border-left: var(--_skf-divider-border);
20
- margin-block: var(--skf-divider-inset, 0);
21
- margin-inline: var(--skf-divider-spacing, var(--skf-spacing-100));
22
- }
19
+ @layer mods {
20
+ :host([vertical]) {
21
+ block-size: 100%;
22
+ border-left: var(--_skf-divider-border);
23
+ margin-block: var(--skf-divider-inset, 0);
24
+ margin-inline: var(--skf-divider-spacing, var(--skf-spacing-100));
25
+ }
23
26
 
24
- /** Colors */
25
- .divider--color-emphasised {
26
- --_skf-divider-border-color: var(--skf-border-color-emphasised);
27
- }
27
+ :host([color='emphasised']) {
28
+ --_skf-divider-border-color: var(--skf-border-color-emphasised);
29
+ }
28
30
 
29
- .divider--color-inverse {
30
- --_skf-divider-border-color: var(--skf-border-color-inverse);
31
- }
31
+ :host([color='inverse']) {
32
+ --_skf-divider-border-color: var(--skf-border-color-inverse);
33
+ }
32
34
 
33
- .divider--color-secondary {
34
- --_skf-divider-border-color: var(--skf-border-color-secondary);
35
- }
35
+ :host([color='secondary']) {
36
+ --_skf-divider-border-color: var(--skf-border-color-secondary);
37
+ }
36
38
 
37
- .divider--color-tertiary {
38
- --_skf-divider-border-color: var(--skf-border-color-tertiary);
39
+ :host([color='tertiary']) {
40
+ --_skf-divider-border-color: var(--skf-border-color-tertiary);
41
+ }
42
+ }
39
43
  }
40
44
  `;
41
45
  export {
42
- d as styles
46
+ e as styles
43
47
  };
@@ -0,0 +1,57 @@
1
+ import '../icon/icon.js';
2
+ import { SkfElement } from '../../internal/components/skf-element';
3
+ import { type CSSResultGroup } from 'lit';
4
+ /**
5
+ * TODO:
6
+ *
7
+ * - Fix drag outside closes the drawer
8
+ * - add tests
9
+ * - add documentation
10
+ */
11
+ /**
12
+ * The `<skf-drawer>` is a modal component that displays content and toggle by sliding from left/right viewport edge.
13
+ *
14
+ * @documentation See [zeroheight](https://zeroheight.com/853e936c9/p/0789c4-drawer) for design principles
15
+ *
16
+ * @event skf-drawer-opened - Fires when the drawer is opened (after transitioned in)
17
+ * @event skf-drawer-closing - Fires when the drawer is closed (before transitioned out)
18
+ * @event skf-drawer-closed - Fires when the drawer is closed (after transitioned out)
19
+ *
20
+ * @slot - The Drawer's main content
21
+ *
22
+ * @tagname skf-drawer
23
+ */
24
+ export declare class SkfDrawer extends SkfElement {
25
+ static styles: CSSResultGroup;
26
+ /** @internal */
27
+ private _abortController?;
28
+ /** @internal */
29
+ private _signal?;
30
+ /** If defined, sets the aria-label for the close button */
31
+ closeButtonAriaLabel: string;
32
+ /** Heading for the Drawer */
33
+ heading?: string;
34
+ /** Sets the max-width */
35
+ size: 'sm' | 'md' | 'lg';
36
+ /** If true, Drawer is open */
37
+ open: boolean;
38
+ /** Placement of the Drawer */
39
+ placement: 'left' | 'right';
40
+ /** @internal */
41
+ $dialog: HTMLDialogElement;
42
+ disconnectedCallback(): void;
43
+ /** @internal */
44
+ _placementChanged: () => void;
45
+ /** @internal */
46
+ _openChanged(): Promise<void>;
47
+ /** @internal */
48
+ private _startListeners;
49
+ clickIsInsideElement(event: MouseEvent, el: HTMLElement): boolean;
50
+ /** @internal */
51
+ private _animateDrawer;
52
+ _clickstartInDialog: boolean;
53
+ _handleMouseDown: (event: MouseEvent) => void;
54
+ _handleMouseUp: () => void;
55
+ close(): void;
56
+ render(): import("lit").TemplateResult<1>;
57
+ }
@@ -0,0 +1,124 @@
1
+ import "../icon/icon.js";
2
+ import { SkfElement as m } from "../../internal/components/skf-element.js";
3
+ import { watch as d } from "../../internal/helpers/watch.js";
4
+ import { MOTION_DURATIONS as p } from "@skf-design-system/ui-assets";
5
+ import f from "../../styles/component.styles.js";
6
+ import { html as g } from "lit";
7
+ import { property as r, query as u } from "lit/decorators.js";
8
+ import { styles as _ } from "./drawer.styles.js";
9
+ var b = Object.defineProperty, w = Object.getOwnPropertyDescriptor, a = (h, t, i, e) => {
10
+ for (var o = e > 1 ? void 0 : e ? w(t, i) : t, n = h.length - 1, l; n >= 0; n--)
11
+ (l = h[n]) && (o = (e ? l(t, i, o) : l(o)) || o);
12
+ return e && o && b(t, i, o), o;
13
+ };
14
+ const c = class c extends m {
15
+ constructor() {
16
+ super(...arguments), this.closeButtonAriaLabel = "Close dialog", this.size = "md", this.open = !1, this.placement = "right", this._placementChanged = () => {
17
+ this.$dialog.getAnimations().forEach((i) => {
18
+ i.cancel();
19
+ });
20
+ }, this._clickstartInDialog = !1, this._handleMouseDown = (t) => {
21
+ this.clickIsInsideElement(t, this.$dialog) && (this._clickstartInDialog = !0);
22
+ }, this._handleMouseUp = () => {
23
+ if (this._clickstartInDialog) {
24
+ this._clickstartInDialog = !1;
25
+ return;
26
+ }
27
+ };
28
+ }
29
+ disconnectedCallback() {
30
+ var t;
31
+ super.disconnectedCallback(), (t = this._abortController) == null || t.abort();
32
+ }
33
+ async _openChanged() {
34
+ var t;
35
+ this.open ? (this._abortController = new AbortController(), this._signal = this._abortController.signal, this.$dialog.showModal(), this._startListeners(), await this._animateDrawer(), this.emit("skf-drawer-opened")) : ((t = this._abortController) == null || t.abort(), this.emit("skf-drawer-closing"), await this._animateDrawer(), this.emit("skf-drawer-closed"), this.$dialog.close());
36
+ }
37
+ /** @internal */
38
+ _startListeners() {
39
+ window.addEventListener(
40
+ "keydown",
41
+ (t) => {
42
+ t.key === "Escape" && (t.preventDefault(), this.close());
43
+ },
44
+ { signal: this._signal }
45
+ ), this.addEventListener("click", (t) => {
46
+ !this.clickIsInsideElement(t, this.$dialog) && !this._clickstartInDialog && this.close();
47
+ });
48
+ }
49
+ clickIsInsideElement(t, i) {
50
+ const e = i.getBoundingClientRect();
51
+ return e.top <= t.clientY && t.clientY <= e.top + e.height && e.left <= t.clientX && t.clientX <= e.left + e.width;
52
+ }
53
+ /** @internal */
54
+ _animateDrawer() {
55
+ const t = this.open ? [{ opacity: 0 }, { opacity: 0.4 }] : [{ opacity: 0 }], i = this.open ? [{ translate: "0" }] : [{ translate: this.placement === "right" ? "100%" : "-100%" }];
56
+ return new Promise((e) => {
57
+ requestAnimationFrame(() => {
58
+ const o = this.$dialog.animate(t, {
59
+ duration: p.normal,
60
+ fill: "forwards",
61
+ pseudoElement: "::backdrop"
62
+ }), n = this.$dialog.animate(i, {
63
+ duration: p.normal,
64
+ easing: "ease-out",
65
+ fill: "forwards"
66
+ });
67
+ Promise.all([o.finished, n.finished]).then(() => {
68
+ e("Animations finished");
69
+ }).catch(() => {
70
+ throw new Error("Animation failed");
71
+ });
72
+ });
73
+ });
74
+ }
75
+ close() {
76
+ this.open = !1;
77
+ }
78
+ render() {
79
+ return g`
80
+ <dialog @mousedown="${this._handleMouseDown}" @mouseup="${this._handleMouseUp}">
81
+ <header>
82
+ <h2>${this.heading}</h2>
83
+ <button
84
+ aria-label=${this.closeButtonAriaLabel}
85
+ id="close-button"
86
+ @click="${() => this.open = !1}"
87
+ >
88
+ <skf-icon name="close" color="inverse"></skf-icon>
89
+ </button>
90
+ </header>
91
+ <slot id="body" part="body">${this.slot}</slot>
92
+ </dialog>
93
+ `;
94
+ }
95
+ };
96
+ c.styles = [f, _];
97
+ let s = c;
98
+ a([
99
+ r({ attribute: "close-button-aria-label" })
100
+ ], s.prototype, "closeButtonAriaLabel", 2);
101
+ a([
102
+ r()
103
+ ], s.prototype, "heading", 2);
104
+ a([
105
+ r({ reflect: !0 })
106
+ ], s.prototype, "size", 2);
107
+ a([
108
+ r({ type: Boolean, reflect: !0 })
109
+ ], s.prototype, "open", 2);
110
+ a([
111
+ r({ reflect: !0 })
112
+ ], s.prototype, "placement", 2);
113
+ a([
114
+ u("dialog")
115
+ ], s.prototype, "$dialog", 2);
116
+ a([
117
+ d("placement", { waitUntilFirstUpdate: !0 })
118
+ ], s.prototype, "_placementChanged", 2);
119
+ a([
120
+ d("open", { waitUntilFirstUpdate: !0, afterUpdate: !0 })
121
+ ], s.prototype, "_openChanged", 1);
122
+ export {
123
+ s as SkfDrawer
124
+ };
@@ -0,0 +1,8 @@
1
+ import { SkfDrawer } from './drawer.component';
2
+ export * from './drawer.component';
3
+ export default SkfDrawer;
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ 'skf-drawer': SkfDrawer;
7
+ }
8
+ }
@@ -0,0 +1,6 @@
1
+ import { SkfDrawer as r } from "./drawer.component.js";
2
+ r.define("skf-drawer");
3
+ export {
4
+ r as SkfDrawer,
5
+ r as default
6
+ };
@@ -0,0 +1 @@
1
+ export declare const styles: import("lit").CSSResult;