@skf-design-system/ui-components 1.0.2-beta.20 → 1.0.2-beta.22

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.
@@ -1,8 +1,8 @@
1
- var _ = (n) => {
2
- throw TypeError(n);
1
+ var _ = (s) => {
2
+ throw TypeError(s);
3
3
  };
4
- var w = (n, r, t) => r.has(n) || _("Cannot " + t);
5
- var f = (n, r, t) => (w(n, r, "read from private field"), t ? t.call(n) : r.get(n)), S = (n, r, t) => r.has(n) ? _("Cannot add the same private member more than once") : r instanceof WeakSet ? r.add(n) : r.set(n, t), $ = (n, r, t, e) => (w(n, r, "write to private field"), e ? e.call(n, t) : r.set(n, t), t);
4
+ var w = (s, r, t) => r.has(s) || _("Cannot " + t);
5
+ var f = (s, r, t) => (w(s, r, "read from private field"), t ? t.call(s) : r.get(s)), S = (s, r, t) => r.has(s) ? _("Cannot add the same private member more than once") : r instanceof WeakSet ? r.add(s) : r.set(s, t), $ = (s, r, t, e) => (w(s, r, "write to private field"), e ? e.call(s, t) : r.set(s, t), t);
6
6
  import { SkfElement as L } from "../../internal/components/skf-element.js";
7
7
  import { watch as O } from "../../internal/helpers/watch.js";
8
8
  import { Temporal as h } from "@js-temporal/polyfill";
@@ -14,9 +14,9 @@ import { repeat as y } from "lit/directives/repeat.js";
14
14
  import { styles as C } from "./datepicker-calendar.styles.js";
15
15
  import { compareDates as E } from "./datepicker-popup.helpers.js";
16
16
  import { dateFormatter as D } from "./datepicker.helpers.js";
17
- var F = Object.defineProperty, A = Object.getOwnPropertyDescriptor, l = (n, r, t, e) => {
18
- for (var a = e > 1 ? void 0 : e ? A(r, t) : r, s = n.length - 1, i; s >= 0; s--)
19
- (i = n[s]) && (a = (e ? i(r, t, a) : i(a)) || a);
17
+ var F = Object.defineProperty, A = Object.getOwnPropertyDescriptor, l = (s, r, t, e) => {
18
+ for (var a = e > 1 ? void 0 : e ? A(r, t) : r, n = s.length - 1, i; n >= 0; n--)
19
+ (i = s[n]) && (a = (e ? i(r, t, a) : i(a)) || a);
20
20
  return e && a && F(r, t, a), a;
21
21
  }, u;
22
22
  const b = class b extends L {
@@ -45,12 +45,12 @@ const b = class b extends L {
45
45
  const m = Array.from(d.parentElement?.children ?? []).indexOf(d);
46
46
  d.parentElement?.children[m - 7]?.firstElementChild?.focus();
47
47
  }
48
- function a(s) {
49
- return s ? Array.from(s.parentElement?.children ?? []).indexOf(s) : 0;
48
+ function a(n) {
49
+ return n ? Array.from(n.parentElement?.children ?? []).indexOf(n) : 0;
50
50
  }
51
51
  }, this.dateSelectable = (t) => {
52
- const e = this.invalidDates?.split(",").includes(t), a = !this.selectableTo || E(t, this.selectableTo) < 0, s = !this.selectableFrom || E(t, this.selectableFrom) > 0;
53
- return { matchesInvalidDates: e, dateWithinRange: !(a && s) };
52
+ const e = this.invalidDates?.split(",").includes(t), a = !this.selectableTo || E(t, this.selectableTo) < 0, n = !this.selectableFrom || E(t, this.selectableFrom) > 0;
53
+ return { matchesInvalidDates: e, dateWithinRange: !(a && n) };
54
54
  };
55
55
  }
56
56
  firstUpdated() {
@@ -65,7 +65,7 @@ const b = class b extends L {
65
65
  months: 1
66
66
  }).daysInMonth ?? 0;
67
67
  }
68
- _createDate({ year: t, month: e, day: a = 1 }, s) {
68
+ _createDate({ year: t, month: e, day: a = 1 }, n) {
69
69
  switch (e ??= this.date.getMonth(), t ??= this.date.getFullYear(), !0) {
70
70
  case e < 0:
71
71
  e = 11, t--;
@@ -74,7 +74,7 @@ const b = class b extends L {
74
74
  e = 0, t++;
75
75
  break;
76
76
  }
77
- if (s)
77
+ if (n)
78
78
  try {
79
79
  return h.PlainDate.from({
80
80
  year: t,
@@ -104,8 +104,8 @@ const b = class b extends L {
104
104
  /** @internal Check if a day is between two dates */
105
105
  _isDateBetween(t, e, a) {
106
106
  if (!e || !a) return !1;
107
- const s = h.PlainDate.compare(t, e) > 0, i = h.PlainDate.compare(t, a) < 0;
108
- return s && i;
107
+ const n = h.PlainDate.compare(t, e) > 0, i = h.PlainDate.compare(t, a) < 0;
108
+ return n && i;
109
109
  }
110
110
  render() {
111
111
  return g`
@@ -165,7 +165,7 @@ const b = class b extends L {
165
165
  }
166
166
  /** @internal */
167
167
  returnDayClasses(t) {
168
- const e = [], a = this._createDate({ day: t }).getDate(), s = this.selectedDate?.getMonth() === this.date.getMonth(), i = this.selectedDate?.getFullYear() === this.date.getFullYear();
168
+ const e = [], a = this._createDate({ day: t }).getDate(), n = this.selectedDate?.getMonth() === this.date.getMonth(), i = this.selectedDate?.getFullYear() === this.date.getFullYear();
169
169
  this.range && this._isDateBetween(
170
170
  this._createDate({ day: t }, !0),
171
171
  this._plainDate(this.selectedDateRange.start) ?? void 0,
@@ -176,7 +176,7 @@ const b = class b extends L {
176
176
  );
177
177
  (d || m) && e.push("invalid");
178
178
  const p = this.selectedDate?.getDate() === a;
179
- return !this.range && p && s && i && (console.log("is single date selected", this.selectedDate), e.push("selected")), this._createDate({ day: t }, !0).equals(String(this._plainDate(/* @__PURE__ */ new Date()))) && e.push("today"), e.join(" ");
179
+ return !this.range && p && n && i && (console.log("is single date selected", this.selectedDate), e.push("selected")), this._createDate({ day: t }, !0).equals(String(this._plainDate(/* @__PURE__ */ new Date()))) && e.push("today"), e.join(" ");
180
180
  }
181
181
  /** @internal */
182
182
  handleSelectDay({
@@ -184,7 +184,7 @@ const b = class b extends L {
184
184
  month: e = this.date.getMonth(),
185
185
  day: a
186
186
  }) {
187
- this.emit("selected-date-changed", {
187
+ this.emit("skf-datepicker-selected-date-changed", {
188
188
  detail: {
189
189
  date: new Date(t, e, a),
190
190
  id: this.eventid
@@ -209,8 +209,8 @@ const b = class b extends L {
209
209
  day: t + 1
210
210
  },
211
211
  !0
212
- ).toString(), { matchesInvalidDates: s, dateWithinRange: i } = this.dateSelectable(a);
213
- return (s || i) && e.push("invalid"), g`<li class="day ">
212
+ ).toString(), { matchesInvalidDates: n, dateWithinRange: i } = this.dateSelectable(a);
213
+ return (n || i) && e.push("invalid"), g`<li class="day ">
214
214
  <button
215
215
  class=${e.join(" ")}
216
216
  data-date=${a}
@@ -252,8 +252,8 @@ const b = class b extends L {
252
252
  day: t + 1
253
253
  },
254
254
  !0
255
- ).toString(), { matchesInvalidDates: s, dateWithinRange: i } = this.dateSelectable(a);
256
- return (s || i) && e.push("invalid"), g`<li class="day">
255
+ ).toString(), { matchesInvalidDates: n, dateWithinRange: i } = this.dateSelectable(a);
256
+ return (n || i) && e.push("invalid"), g`<li class="day">
257
257
  <button
258
258
  data-date=${a}
259
259
  class=${e.join(" ")}
@@ -352,11 +352,11 @@ let o = b;
352
352
  l([
353
353
  c({
354
354
  converter: {
355
- fromAttribute(n) {
356
- return console.log("value", typeof n), new Date(n);
355
+ fromAttribute(s) {
356
+ return console.log("value", typeof s), new Date(s);
357
357
  },
358
- toAttribute(n) {
359
- return n.toISOString();
358
+ toAttribute(s) {
359
+ return s.toISOString();
360
360
  }
361
361
  }
362
362
  })
@@ -385,7 +385,7 @@ l([
385
385
  l([
386
386
  c({
387
387
  attribute: "selected-date",
388
- converter: { fromAttribute: (n) => new Date(n) },
388
+ converter: { fromAttribute: (s) => new Date(s) },
389
389
  reflect: !0
390
390
  })
391
391
  ], o.prototype, "selectedDate", 2);
@@ -72,7 +72,10 @@ const _ = class _ extends E {
72
72
  };
73
73
  }
74
74
  connectedCallback() {
75
- super.connectedCallback(), this.addEventListener("skf-update-calendar-view", this._handleCalendarView), this.addEventListener("selected-date-changed", this._handleSelectedDate);
75
+ super.connectedCallback(), this.addEventListener("skf-update-calendar-view", this._handleCalendarView), this.addEventListener(
76
+ "skf-datepicker-selected-date-changed",
77
+ this._handleSelectedDate
78
+ );
76
79
  }
77
80
  firstUpdated() {
78
81
  (this.selectedDateRange.start ?? this.selectedDate) && this._onRangeCompleteEmitEvent();
@@ -8,6 +8,13 @@ import { type CSSResultGroup } from 'lit';
8
8
  import type { SkfDatepickerPopup, SkfDatepickerPopupDateRange } from './datepicker-popup.component.js';
9
9
  import './datepicker-popup.js';
10
10
  /**
11
+ * @description A datepicker component for selecting dates.
12
+ *
13
+ * @event {CustomEvent} skf-datepicker-selected-date-changed - Fired when the user selects a date.
14
+ * @event {CustomEvent} skf-datepicker-selected-date-range-changed - Fired when the user selects a date range.
15
+ * @event {CustomEvent} skf-datepicker-opened - Fired when the datepicker is opened.
16
+ * @event {CustomEvent} skf-datepicker-closed - Fired when the datepicker is closed.
17
+ *
11
18
  * @tagname skf-datepicker
12
19
  */
13
20
  export declare class SkfDatepicker extends FormBase {
@@ -2,7 +2,7 @@ var P = (o) => {
2
2
  throw TypeError(o);
3
3
  };
4
4
  var S = (o, l, e) => l.has(o) || P("Cannot " + e);
5
- var D = (o, l, e) => (S(o, l, "read from private field"), e ? e.call(o) : l.get(o)), E = (o, l, e) => l.has(o) ? P("Cannot add the same private member more than once") : l instanceof WeakSet ? l.add(o) : l.set(o, e), C = (o, l, e, t) => (S(o, l, "write to private field"), t ? t.call(o, e) : l.set(o, e), e);
5
+ var k = (o, l, e) => (S(o, l, "read from private field"), e ? e.call(o) : l.get(o)), E = (o, l, e) => l.has(o) ? P("Cannot add the same private member more than once") : l instanceof WeakSet ? l.add(o) : l.set(o, e), C = (o, l, e, t) => (S(o, l, "write to private field"), t ? t.call(o, e) : l.set(o, e), e);
6
6
  import "../icon/icon.js";
7
7
  import { computePosition as T, flip as B, offset as x } from "@floating-ui/dom";
8
8
  import { FormBase as R } from "../../internal/components/formBase.js";
@@ -15,7 +15,7 @@ import { Temporal as I } from "@js-temporal/polyfill";
15
15
  import { componentStyles as q } from "../../styles/component.styles.js";
16
16
  import { LocalizeController as U } from "../../utilities/localize.js";
17
17
  import { nothing as f, html as b } from "lit";
18
- import { property as d, state as k, query as $, queryAssignedNodes as N } from "lit/decorators.js";
18
+ import { property as d, state as D, query as $, queryAssignedNodes as N } from "lit/decorators.js";
19
19
  import { ifDefined as u } from "lit/directives/if-defined.js";
20
20
  import { live as O } from "lit/directives/live.js";
21
21
  import "./datepicker-popup.js";
@@ -53,12 +53,12 @@ const w = class w extends R {
53
53
  this.$datepickerPopup.selectedDateRange = {
54
54
  start: new Date(i),
55
55
  end: new Date(h)
56
- }, this.$datepickerPopup.emit("selected-date-changed", {
56
+ }, this.$datepickerPopup.emit("skf-datepicker-selected-date-changed", {
57
57
  detail: { date: new Date(i) }
58
58
  });
59
59
  } else {
60
60
  if (!t.value || !m(t.value).date()) return;
61
- this.$datepickerPopup.emit("selected-date-changed", {
61
+ this.$datepickerPopup.emit("skf-datepicker-selected-date-changed", {
62
62
  detail: { date: new Date(t.value) }
63
63
  });
64
64
  }
@@ -85,7 +85,7 @@ const w = class w extends R {
85
85
  this.$input_range_end.focus();
86
86
  }, 200));
87
87
  } else
88
- this.$datepickerPopup.selectedDate = new Date(t.value), this.$datepickerPopup.emit("selected-date-changed", {
88
+ this.$datepickerPopup.selectedDate = new Date(t.value), this.$datepickerPopup.emit("skf-datepicker-selected-date-changed", {
89
89
  detail: { date: new Date(t.value) }
90
90
  });
91
91
  this.validateOn === "input" && (this._pristine = !1, this.validateInput());
@@ -113,7 +113,10 @@ const w = class w extends R {
113
113
  return this.customError;
114
114
  }
115
115
  connectedCallback() {
116
- super.connectedCallback(), this._init_date = this.value?.split(",")[0], this.addEventListener("selected-date-changed", this._handleSelectedDate);
116
+ super.connectedCallback(), this._init_date = this.value?.split(",")[0], this.addEventListener(
117
+ "skf-datepicker-selected-date-changed",
118
+ this._handleSelectedDate
119
+ );
117
120
  }
118
121
  disconnectedCallback() {
119
122
  super.disconnectedCallback(), this.abortController.abort();
@@ -276,7 +279,7 @@ const w = class w extends R {
276
279
  <label>
277
280
  <div class=${this.hideLabel ? "visually-hidden" : ""} ?hidden=${e} id="label">
278
281
  <slot>${this.label}</slot>
279
- ${this.required ? V(D(this, g).term("required")) : f}
282
+ ${this.required ? V(k(this, g).term("required")) : f}
280
283
  </div>
281
284
  <div id="input">
282
285
  <input
@@ -326,7 +329,7 @@ const w = class w extends R {
326
329
  ` : f}
327
330
  ${this.showClearbutton ? b`
328
331
  <button
329
- aria-label=${D(this, g).term("close")}
332
+ aria-label=${k(this, g).term("close")}
330
333
  class="password skf-icon-host"
331
334
  type="button"
332
335
  @click=${this.clear.bind(this)}
@@ -418,16 +421,16 @@ r([
418
421
  d()
419
422
  ], s.prototype, "value", 2);
420
423
  r([
421
- k()
424
+ D()
422
425
  ], s.prototype, "_init_date", 2);
423
426
  r([
424
427
  d({ type: Boolean, reflect: !0 })
425
428
  ], s.prototype, "invalid", 2);
426
429
  r([
427
- k()
430
+ D()
428
431
  ], s.prototype, "selectedRangeDates", 2);
429
432
  r([
430
- k()
433
+ D()
431
434
  ], s.prototype, "showClearbutton", 2);
432
435
  r([
433
436
  $("#popover")
@@ -32,11 +32,11 @@ const f = class f extends L {
32
32
  constructor() {
33
33
  super();
34
34
  g(this, d);
35
- y(this, d, new F(this)), this._componentIsConnected = !1, this.selectDelay = 200, this._optionsList = [], this.hideLabel = !1, this.hideTags = !1, this.label = "", this.lang = "en", this.multiple = !1, this.showValid = !1, this.size = "md", this._expanded = !1, this._invalid = !1, this.globalClickController = new M(this), this.keyboardNavController = new N(this), this.developerFeedbackController = new H(this), this.popoverController = new k(this), this._handleOptionSelected = (t) => {
35
+ y(this, d, new F(this)), this._componentIsConnected = !1, this.selectDelay = 200, this._optionsList = [], this.hideLabel = !1, this.hideTags = !1, this.label = "", this.lang = "en", this.multiple = !1, this.showValid = !1, this.size = "md", this._expanded = !1, this._invalid = !1, this.globalClickController = new M(this), this.keyboardNavController = new N(this), this.developerFeedbackController = new H(this), this.popoverController = new k(this), this._handleOptionSelected = ((t) => {
36
36
  this._pristine = !1;
37
37
  const e = this._selectedOptions.length > 0;
38
38
  this.setFormValue(e ? this.selectedValues.join(",") : null), this._updateState(t);
39
- }, this._handleReset = () => {
39
+ }), this._handleReset = () => {
40
40
  this.emit("reset"), this._resetSelectedOptions();
41
41
  }, this._updateWidth = () => {
42
42
  setTimeout(() => {
@@ -9,6 +9,8 @@ type Size = 'sm' | 'md';
9
9
  *
10
10
  * @documentation See [zeroheight](https://zeroheight.com/853e936c9/p/28bdd6-tags) for design principles
11
11
  *
12
+ * @event {CustomEvent} skf-tag-remove - Fired when the tag is removed. Convenient to use together with the `prevent-dom-updates` property to avoid bypassing internal state management/React Virtual DOM.
13
+ *
12
14
  * @slot - The component's placeholder content
13
15
  *
14
16
  * @tagname skf-tag
@@ -73,7 +73,6 @@ export declare class SkfTextArea extends FormBase implements SkfTextAreaProps {
73
73
  /** @internal */
74
74
  private $input?;
75
75
  firstUpdated(): void;
76
- willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
77
76
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
78
77
  _invalidChanged(): void;
79
78
  _hintChanged(): void;
@@ -2,24 +2,24 @@ var $ = (a) => {
2
2
  throw TypeError(a);
3
3
  };
4
4
  var _ = (a, r, t) => r.has(a) || $("Cannot " + t);
5
- var p = (a, r, t) => (_(a, r, "read from private field"), t ? t.call(a) : r.get(a)), c = (a, r, t) => r.has(a) ? $("Cannot add the same private member more than once") : r instanceof WeakSet ? r.add(a) : r.set(a, t), m = (a, r, t, n) => (_(a, r, "write to private field"), n ? n.call(a, t) : r.set(a, t), t);
5
+ var p = (a, r, t) => (_(a, r, "read from private field"), t ? t.call(a) : r.get(a)), c = (a, r, t) => r.has(a) ? $("Cannot add the same private member more than once") : r instanceof WeakSet ? r.add(a) : r.set(a, t), v = (a, r, t, n) => (_(a, r, "write to private field"), n ? n.call(a, t) : r.set(a, t), t);
6
6
  import "../icon/icon.js";
7
7
  import { FormBase as V } from "../../internal/components/formBase.js";
8
8
  import "../../internal/components/hint/hint.js";
9
- import { hintSeverity as w } from "../../internal/helpers/hintSeverity.js";
9
+ import { hintSeverity as C } from "../../internal/helpers/hintSeverity.js";
10
10
  import { watch as g } from "../../internal/helpers/watch.js";
11
- import { Asterisk as C } from "../../internal/templates/asterisk.js";
11
+ import { Asterisk as w } from "../../internal/templates/asterisk.js";
12
12
  import { componentStyles as I } from "../../styles/component.styles.js";
13
13
  import { LocalizeController as x } from "../../utilities/localize.js";
14
14
  import { nothing as f, html as E } from "lit";
15
15
  import { property as s, query as L } from "lit/decorators.js";
16
- import { ifDefined as o } from "lit/directives/if-defined.js";
17
- import A from "./textarea.styles.js";
18
- var M = Object.defineProperty, O = Object.getOwnPropertyDescriptor, e = (a, r, t, n) => {
19
- for (var l = n > 1 ? void 0 : n ? O(r, t) : r, h = a.length - 1, d; h >= 0; h--)
20
- (d = a[h]) && (l = (n ? d(r, t, l) : d(l)) || l);
21
- return n && l && M(r, t, l), l;
22
- }, y, u, v;
16
+ import { ifDefined as h } from "lit/directives/if-defined.js";
17
+ import O from "./textarea.styles.js";
18
+ var S = Object.defineProperty, F = Object.getOwnPropertyDescriptor, e = (a, r, t, n) => {
19
+ for (var l = n > 1 ? void 0 : n ? F(r, t) : r, o = a.length - 1, d; o >= 0; o--)
20
+ (d = a[o]) && (l = (n ? d(r, t, l) : d(l)) || l);
21
+ return n && l && S(r, t, l), l;
22
+ }, y, u, m;
23
23
  const b = class b extends V {
24
24
  constructor() {
25
25
  super(...arguments);
@@ -27,8 +27,8 @@ const b = class b extends V {
27
27
  /** @internal */
28
28
  c(this, u);
29
29
  /** @internal */
30
- c(this, v);
31
- m(this, y, new x(this)), this.debug = !1, this.hideLabel = !1, this.invalid = !1, this.lang = "en", this.readonly = !1, this.showValid = !1, this.size = "md", this.validateOn = "change", this.value = "", this._resetValue = (t) => {
30
+ c(this, m);
31
+ v(this, y, new x(this)), this.debug = !1, this.hideLabel = !1, this.invalid = !1, this.lang = "en", this.readonly = !1, this.showValid = !1, this.size = "md", this.validateOn = "change", this.value = "", this._resetValue = (t) => {
32
32
  t.stopPropagation(), this.value = p(this, u) ?? "", this._internals.setFormValue(this.value);
33
33
  }, this._handleInput = () => {
34
34
  this.value = this.$input?.value ?? "", this.validateOn === "input" && (this.pristine = !1, this.validateInput());
@@ -47,23 +47,14 @@ const b = class b extends V {
47
47
  this.pristine = !1, this.invalid = !0, this.customErrorDisplay && t.preventDefault();
48
48
  }), this.addEventListener("reset", this._resetValue), this.validateInput();
49
49
  }
50
- willUpdate(t) {
51
- if (t.has("invalid"))
52
- if (this.invalid) {
53
- this.setAttribute("invalid", ""), this.showValid || this.removeAttribute("valid");
54
- const n = this._internals.validationMessage;
55
- this.hint = n !== "" ? this._internals.validationMessage : "unspecified error", this.checkValidity();
56
- } else
57
- this.removeAttribute("invalid"), !this.pristine && this.showValid && this.setAttribute("valid", "true"), this.hint = p(this, v) ?? "";
58
- }
59
50
  attributeChangedCallback(t, n, l) {
60
- if (super.attributeChangedCallback(t, n, l), t === "value" && l !== p(this, u) && m(this, u, void 0), t === "custom-invalid")
51
+ if (super.attributeChangedCallback(t, n, l), t === "value" && l !== p(this, u) && v(this, u, void 0), t === "custom-invalid")
61
52
  if (typeof l == "string") {
62
53
  const d = this.withFallback(l);
63
54
  this.pristine = !1, this._internals.setValidity({ customError: !0 }, d), this.invalid = !0, this.hint = d, this.checkValidity();
64
55
  } else
65
56
  this._internals.setValidity({}), this.validateInput();
66
- t === "hint" && m(this, v, this.getAttribute("hint") ?? "");
57
+ t === "hint" && v(this, m, this.getAttribute("hint") ?? "");
67
58
  }
68
59
  _invalidChanged() {
69
60
  if (this.invalid) {
@@ -71,13 +62,13 @@ const b = class b extends V {
71
62
  const t = this._internals.validationMessage;
72
63
  this.hint = t !== "" ? this._internals.validationMessage : "", this.checkValidity();
73
64
  } else
74
- !this._pristine && this.showValid && this.setAttribute("valid", "true"), this.hint = p(this, v) ?? "";
65
+ !this._pristine && this.showValid && this.setAttribute("valid", "true"), this.hint = p(this, m) ?? "";
75
66
  }
76
67
  _hintChanged() {
77
- p(this, v) ?? m(this, v, this.hint);
68
+ p(this, m) ?? v(this, m, this.hint);
78
69
  }
79
70
  _valueChanged() {
80
- p(this, u) ?? m(this, u, this.value), this._internals.setFormValue(this.value), this.validateInput();
71
+ p(this, u) ?? v(this, u, this.value), this._internals.setFormValue(this.value), this.validateInput();
81
72
  }
82
73
  /** @internal */
83
74
  validateInput() {
@@ -89,12 +80,12 @@ const b = class b extends V {
89
80
  this.invalid = !this.pristine && !n.valid;
90
81
  let l;
91
82
  for (l in n) {
92
- const h = `data-${l}`;
93
- if (n[l] && !this.hasAttribute(h) && this.debug && console.log(
94
- `Add custom message on ${this.localName} using attribute: ${h.toUpperCase()}="Your custom message"`
83
+ const o = `data-${l}`;
84
+ if (n[l] && !this.hasAttribute(o) && this.debug && console.log(
85
+ `Add custom message on ${this.localName} using attribute: ${o.toUpperCase()}="Your custom message"`
95
86
  ), n[l]) {
96
87
  this.validationError = l;
97
- const d = this.hasAttribute(h) ? this.getAttribute(h) : this.$input.validationMessage;
88
+ const d = this.hasAttribute(o) ? this.getAttribute(o) : this.$input.validationMessage;
98
89
  this._internals.setValidity(
99
90
  { [this.validationError]: !0, customError: this._internals.validity.customError },
100
91
  this.withFallback(d)
@@ -108,7 +99,7 @@ const b = class b extends V {
108
99
  <div id="root">
109
100
  <label>
110
101
  <div class=${this.hideLabel ? "visually-hidden" : ""} id="label">
111
- <slot>${this.label}</slot> ${this.required ? C(p(this, y).term("required")) : f}
102
+ <slot>${this.label}</slot> ${this.required ? w(p(this, y).term("required")) : f}
112
103
  </div>
113
104
  <div id="input">
114
105
  <textarea
@@ -117,15 +108,15 @@ const b = class b extends V {
117
108
  ?required=${this.required}
118
109
  .value=${this.value}
119
110
  @input=${this._handleInput}
120
- aria-describedby=${o(this.hint?.trim() ? "hint" : f)}
121
- aria-errormessage=${o(this.hint?.trim() ? "hint" : f)}
111
+ aria-describedby=${h(this.hint?.trim() ? "hint" : f)}
112
+ aria-errormessage=${h(this.hint?.trim() ? "hint" : f)}
122
113
  aria-invalid=${!!this.invalid}
123
- cols=${o(this.cols)}
124
- maxlength=${o(this.maxLength)}
125
- minlength=${o(this.minLength)}
126
- name=${o(this.name)}
127
- placeholder=${o(this.placeholder)}
128
- rows=${o(this.rows)}
114
+ cols=${h(this.cols)}
115
+ maxlength=${h(this.maxLength)}
116
+ minlength=${h(this.minLength)}
117
+ name=${h(this.name)}
118
+ placeholder=${h(this.placeholder)}
119
+ rows=${h(this.rows)}
129
120
  >
130
121
  </textarea>
131
122
  </div>
@@ -135,7 +126,7 @@ const b = class b extends V {
135
126
  ?disabled=${this.disabled}
136
127
  aria-live=${this.invalid ? "assertive" : "polite"}
137
128
  id="hint"
138
- severity=${o(w(this.invalid, this.severity))}
129
+ severity=${h(C(this.invalid, this.severity))}
139
130
  >
140
131
  ${this.customInvalid ?? this.hint}
141
132
  </skf-hint>
@@ -144,7 +135,7 @@ const b = class b extends V {
144
135
  `;
145
136
  }
146
137
  };
147
- y = new WeakMap(), u = new WeakMap(), v = new WeakMap(), b.styles = [I, A];
138
+ y = new WeakMap(), u = new WeakMap(), m = new WeakMap(), b.styles = [I, O];
148
139
  let i = b;
149
140
  e([
150
141
  s({ type: Number })
@@ -2305,6 +2305,36 @@
2305
2305
  }
2306
2306
  }
2307
2307
  ],
2308
+ "events": [
2309
+ {
2310
+ "type": {
2311
+ "text": "CustomEvent"
2312
+ },
2313
+ "description": " Fired when the user selects a date.",
2314
+ "name": "skf-datepicker-selected-date-changed"
2315
+ },
2316
+ {
2317
+ "type": {
2318
+ "text": "CustomEvent"
2319
+ },
2320
+ "description": " Fired when the user selects a date range.",
2321
+ "name": "skf-datepicker-selected-date-range-changed"
2322
+ },
2323
+ {
2324
+ "type": {
2325
+ "text": "CustomEvent"
2326
+ },
2327
+ "description": " Fired when the datepicker is opened.",
2328
+ "name": "skf-datepicker-opened"
2329
+ },
2330
+ {
2331
+ "type": {
2332
+ "text": "CustomEvent"
2333
+ },
2334
+ "description": " Fired when the datepicker is closed.",
2335
+ "name": "skf-datepicker-closed"
2336
+ }
2337
+ ],
2308
2338
  "attributes": [
2309
2339
  {
2310
2340
  "name": "custom-invalid",
@@ -5934,6 +5964,15 @@
5934
5964
  "attribute": "removable"
5935
5965
  }
5936
5966
  ],
5967
+ "events": [
5968
+ {
5969
+ "type": {
5970
+ "text": "CustomEvent"
5971
+ },
5972
+ "description": "Fired when the tag is removed. Convenient to use together with the `prevent-dom-updates` property to avoid bypassing internal state management/React Virtual DOM.",
5973
+ "name": "skf-tag-remove"
5974
+ }
5975
+ ],
5937
5976
  "attributes": [
5938
5977
  {
5939
5978
  "name": "size",
@@ -506,7 +506,14 @@ export type SkfDatepickerProps = {
506
506
  /** */
507
507
  "focusTimeoutId"?: SkfDatepicker['focusTimeoutId'];
508
508
 
509
-
509
+ /** Fired when the user selects a date. */
510
+ "onskf-datepicker-selected-date-changed"?: (e: CustomEvent<CustomEvent>) => void;
511
+ /** Fired when the user selects a date range. */
512
+ "onskf-datepicker-selected-date-range-changed"?: (e: CustomEvent<CustomEvent>) => void;
513
+ /** Fired when the datepicker is opened. */
514
+ "onskf-datepicker-opened"?: (e: CustomEvent<CustomEvent>) => void;
515
+ /** Fired when the datepicker is closed. */
516
+ "onskf-datepicker-closed"?: (e: CustomEvent<CustomEvent>) => void;
510
517
  }
511
518
 
512
519
 
@@ -942,7 +949,8 @@ export type SkfTagProps = {
942
949
  /** If defined, accepts a function that runs on click. Self removal can be overridden by using `event.stopPropagation()`. */
943
950
  "callbackOnRemove"?: SkfTag['callbackOnRemove'];
944
951
 
945
-
952
+ /** Fired when the tag is removed. Convenient to use together with the `prevent-dom-updates` property to avoid bypassing internal state management/React Virtual DOM. */
953
+ "onskf-tag-remove"?: (e: CustomEvent<CustomEvent>) => void;
946
954
  }
947
955
 
948
956
 
@@ -1596,6 +1604,15 @@ export type SkfTooltipProps = {
1596
1604
  * - `value`: The current value of the input field
1597
1605
  * - `focusTimeoutId`: undefined (property only)
1598
1606
  *
1607
+ * #### Events
1608
+ *
1609
+ * Events that will be emitted by the component.
1610
+ *
1611
+ * - `skf-datepicker-selected-date-changed`: Fired when the user selects a date.
1612
+ * - `skf-datepicker-selected-date-range-changed`: Fired when the user selects a date range.
1613
+ * - `skf-datepicker-opened`: Fired when the datepicker is opened.
1614
+ * - `skf-datepicker-closed`: Fired when the datepicker is closed.
1615
+ *
1599
1616
  * #### Methods
1600
1617
  *
1601
1618
  * Methods that can be called to access component functionality.
@@ -2177,6 +2194,12 @@ export type SkfTooltipProps = {
2177
2194
  * - `clickCallback`: If defined, accepts a function that runs on click (property only)
2178
2195
  * - `callbackOnRemove`: If defined, accepts a function that runs on click. Self removal can be overridden by using `event.stopPropagation()`. (property only)
2179
2196
  *
2197
+ * #### Events
2198
+ *
2199
+ * Events that will be emitted by the component.
2200
+ *
2201
+ * - `skf-tag-remove`: Fired when the tag is removed. Convenient to use together with the `prevent-dom-updates` property to avoid bypassing internal state management/React Virtual DOM.
2202
+ *
2180
2203
  * #### Slots
2181
2204
  *
2182
2205
  * Areas where markup can be added to the component.
@@ -11,7 +11,7 @@ import type { SkfButton, CustomEvent } from "../../components/button/button.comp
11
11
  import type { SkfCard } from "../../components/card/card.component.js";
12
12
  import type { SkfCheckbox, Event } from "../../components/checkbox/checkbox.component.js";
13
13
  import type { SkfDatepickerCalendar } from "../../components/datepicker-calendar/datepicker-calendar.component.js";
14
- import type { SkfDatepicker } from "../../components/datepicker/datepicker.component.js";
14
+ import type { SkfDatepicker, CustomEvent } from "../../components/datepicker/datepicker.component.js";
15
15
  import type { SkfHeading } from "../../components/heading/heading.component.js";
16
16
  import type { SkfDialog, CustomEvent } from "../../components/dialog/dialog.component.js";
17
17
  import type { SkfDivider } from "../../components/divider/divider.component.js";
@@ -34,7 +34,7 @@ import type {
34
34
  } from "../../components/segmented-button-item/segmented-button-item.component.js";
35
35
  import type { SkfSegmentedButton } from "../../components/segmented-button/segmented-button.component.js";
36
36
  import type { SkfSelectOptionGroup } from "../../components/select-option-group/select-option-group.component.js";
37
- import type { SkfTag } from "../../components/tag/tag.component.js";
37
+ import type { SkfTag, CustomEvent } from "../../components/tag/tag.component.js";
38
38
  import type { SkfSelect, Event, CustomEvent } from "../../components/select/select.component.js";
39
39
  import type { SkfSelectOption } from "../../components/select-option/select-option.component.js";
40
40
  import type { SkfStepperItem } from "../../components/stepper-item/stepper-item.component.js";
@@ -261,6 +261,14 @@ type SkfDatepickerProps = {
261
261
  value?: SkfDatepicker["value"];
262
262
  /** */
263
263
  focusTimeoutId?: SkfDatepicker["focusTimeoutId"];
264
+ /** Fired when the user selects a date. */
265
+ "onskf-datepicker-selected-date-changed"?: (e: CustomEvent<CustomEvent>) => void;
266
+ /** Fired when the user selects a date range. */
267
+ "onskf-datepicker-selected-date-range-changed"?: (e: CustomEvent<CustomEvent>) => void;
268
+ /** Fired when the datepicker is opened. */
269
+ "onskf-datepicker-opened"?: (e: CustomEvent<CustomEvent>) => void;
270
+ /** Fired when the datepicker is closed. */
271
+ "onskf-datepicker-closed"?: (e: CustomEvent<CustomEvent>) => void;
264
272
  };
265
273
 
266
274
  type SkfHeadingProps = {
@@ -609,6 +617,8 @@ type SkfTagProps = {
609
617
  clickCallback?: SkfTag["clickCallback"];
610
618
  /** If defined, accepts a function that runs on click. Self removal can be overridden by using `event.stopPropagation()`. */
611
619
  callbackOnRemove?: SkfTag["callbackOnRemove"];
620
+ /** Fired when the tag is removed. Convenient to use together with the `prevent-dom-updates` property to avoid bypassing internal state management/React Virtual DOM. */
621
+ "onskf-tag-remove"?: (e: CustomEvent<CustomEvent>) => void;
612
622
  };
613
623
 
614
624
  type SkfSelectProps = {
@@ -1006,6 +1016,12 @@ export type CustomElements = {
1006
1016
  * ---
1007
1017
  *
1008
1018
  *
1019
+ * ### **Events:**
1020
+ * - **skf-datepicker-selected-date-changed** - Fired when the user selects a date.
1021
+ * - **skf-datepicker-selected-date-range-changed** - Fired when the user selects a date range.
1022
+ * - **skf-datepicker-opened** - Fired when the datepicker is opened.
1023
+ * - **skf-datepicker-closed** - Fired when the datepicker is closed.
1024
+ *
1009
1025
  * ### **Methods:**
1010
1026
  * - **clear()** - Clears the input field
1011
1027
  */
@@ -1260,6 +1276,9 @@ export type CustomElements = {
1260
1276
  * ---
1261
1277
  *
1262
1278
  *
1279
+ * ### **Events:**
1280
+ * - **skf-tag-remove** - Fired when the tag is removed. Convenient to use together with the `prevent-dom-updates` property to avoid bypassing internal state management/React Virtual DOM.
1281
+ *
1263
1282
  * ### **Slots:**
1264
1283
  * - _default_ - The component's placeholder content
1265
1284
  */
@@ -364,7 +364,7 @@
364
364
  },
365
365
  {
366
366
  "name": "skf-datepicker",
367
- "description": "\n---\n\n\n### **Methods:**\n - **clear()** - Clears the input field",
367
+ "description": "\n---\n\n\n### **Events:**\n - **skf-datepicker-selected-date-changed** - Fired when the user selects a date.\n- **skf-datepicker-selected-date-range-changed** - Fired when the user selects a date range.\n- **skf-datepicker-opened** - Fired when the datepicker is opened.\n- **skf-datepicker-closed** - Fired when the datepicker is closed.\n\n### **Methods:**\n - **clear()** - Clears the input field",
368
368
  "attributes": [
369
369
  {
370
370
  "name": "custom-invalid",
@@ -1147,7 +1147,7 @@
1147
1147
  },
1148
1148
  {
1149
1149
  "name": "skf-tag",
1150
- "description": "The `<skf-tag>` is a component that displays a list of actions or options\n---\n\n\n### **Slots:**\n - _default_ - The component's placeholder content",
1150
+ "description": "The `<skf-tag>` is a component that displays a list of actions or options\n---\n\n\n### **Events:**\n - **skf-tag-remove** - Fired when the tag is removed. Convenient to use together with the `prevent-dom-updates` property to avoid bypassing internal state management/React Virtual DOM.\n\n### **Slots:**\n - _default_ - The component's placeholder content",
1151
1151
  "attributes": [
1152
1152
  {
1153
1153
  "name": "size",
@@ -817,7 +817,7 @@
817
817
  },
818
818
  {
819
819
  "name": "skf-datepicker",
820
- "description": "\n---\n\n\n### **Methods:**\n - **clear()** - Clears the input field",
820
+ "description": "\n---\n\n\n### **Events:**\n - **skf-datepicker-selected-date-changed** - Fired when the user selects a date.\n- **skf-datepicker-selected-date-range-changed** - Fired when the user selects a date range.\n- **skf-datepicker-opened** - Fired when the datepicker is opened.\n- **skf-datepicker-closed** - Fired when the datepicker is closed.\n\n### **Methods:**\n - **clear()** - Clears the input field",
821
821
  "doc-url": "",
822
822
  "attributes": [
823
823
  {
@@ -908,7 +908,28 @@
908
908
  "value": { "type": "string | undefined" }
909
909
  }
910
910
  ],
911
- "events": [],
911
+ "events": [
912
+ {
913
+ "name": "skf-datepicker-selected-date-changed",
914
+ "type": "CustomEvent",
915
+ "description": " Fired when the user selects a date."
916
+ },
917
+ {
918
+ "name": "skf-datepicker-selected-date-range-changed",
919
+ "type": "CustomEvent",
920
+ "description": " Fired when the user selects a date range."
921
+ },
922
+ {
923
+ "name": "skf-datepicker-opened",
924
+ "type": "CustomEvent",
925
+ "description": " Fired when the datepicker is opened."
926
+ },
927
+ {
928
+ "name": "skf-datepicker-closed",
929
+ "type": "CustomEvent",
930
+ "description": " Fired when the datepicker is closed."
931
+ }
932
+ ],
912
933
  "js": {
913
934
  "properties": [
914
935
  {
@@ -988,7 +1009,28 @@
988
1009
  "type": "string | undefined"
989
1010
  }
990
1011
  ],
991
- "events": []
1012
+ "events": [
1013
+ {
1014
+ "name": "skf-datepicker-selected-date-changed",
1015
+ "type": "CustomEvent",
1016
+ "description": " Fired when the user selects a date."
1017
+ },
1018
+ {
1019
+ "name": "skf-datepicker-selected-date-range-changed",
1020
+ "type": "CustomEvent",
1021
+ "description": " Fired when the user selects a date range."
1022
+ },
1023
+ {
1024
+ "name": "skf-datepicker-opened",
1025
+ "type": "CustomEvent",
1026
+ "description": " Fired when the datepicker is opened."
1027
+ },
1028
+ {
1029
+ "name": "skf-datepicker-closed",
1030
+ "type": "CustomEvent",
1031
+ "description": " Fired when the datepicker is closed."
1032
+ }
1033
+ ]
992
1034
  }
993
1035
  },
994
1036
  {
@@ -2517,7 +2559,7 @@
2517
2559
  },
2518
2560
  {
2519
2561
  "name": "skf-tag",
2520
- "description": "The `<skf-tag>` is a component that displays a list of actions or options\n---\n\n\n### **Slots:**\n - _default_ - The component's placeholder content",
2562
+ "description": "The `<skf-tag>` is a component that displays a list of actions or options\n---\n\n\n### **Events:**\n - **skf-tag-remove** - Fired when the tag is removed. Convenient to use together with the `prevent-dom-updates` property to avoid bypassing internal state management/React Virtual DOM.\n\n### **Slots:**\n - _default_ - The component's placeholder content",
2521
2563
  "doc-url": "",
2522
2564
  "attributes": [
2523
2565
  {
@@ -2554,7 +2596,13 @@
2554
2596
  "slots": [
2555
2597
  { "name": "", "description": "The component's placeholder content" }
2556
2598
  ],
2557
- "events": [],
2599
+ "events": [
2600
+ {
2601
+ "name": "skf-tag-remove",
2602
+ "type": "CustomEvent",
2603
+ "description": "Fired when the tag is removed. Convenient to use together with the `prevent-dom-updates` property to avoid bypassing internal state management/React Virtual DOM."
2604
+ }
2605
+ ],
2558
2606
  "js": {
2559
2607
  "properties": [
2560
2608
  {
@@ -2596,7 +2644,13 @@
2596
2644
  "type": "boolean"
2597
2645
  }
2598
2646
  ],
2599
- "events": []
2647
+ "events": [
2648
+ {
2649
+ "name": "skf-tag-remove",
2650
+ "type": "CustomEvent",
2651
+ "description": "Fired when the tag is removed. Convenient to use together with the `prevent-dom-updates` property to avoid bypassing internal state management/React Virtual DOM."
2652
+ }
2653
+ ]
2600
2654
  }
2601
2655
  },
2602
2656
  {
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "pnpm": ">=10"
11
11
  },
12
12
  "engineStrict": true,
13
- "customElements": "./dist/custom-elements.json",
13
+ "customElements": "dist/custom-elements.json",
14
14
  "exports": {
15
15
  ".": {
16
16
  "types": "./dist/index.d.ts",
@@ -35,7 +35,7 @@
35
35
  "sideEffects": true,
36
36
  "type": "module",
37
37
  "types": "./dist/index.d.ts",
38
- "version": "1.0.2-beta.20",
38
+ "version": "1.0.2-beta.22",
39
39
  "dependencies": {
40
40
  "@floating-ui/dom": "^1.7.3",
41
41
  "@js-temporal/polyfill": "^0.5.1",
@@ -44,17 +44,17 @@
44
44
  "lit": "^3.3.1"
45
45
  },
46
46
  "devDependencies": {
47
- "@changesets/cli": "^2.29.5",
47
+ "@changesets/cli": "^2.29.6",
48
48
  "@chromatic-com/storybook": "^4.1.0",
49
49
  "@commitlint/cli": "^19.8.1",
50
50
  "@commitlint/config-conventional": "^19.8.1",
51
- "@custom-elements-manifest/analyzer": "^0.10.4",
51
+ "@custom-elements-manifest/analyzer": "^0.10.5",
52
52
  "@eslint/js": "^9.33.0",
53
- "@storybook/addon-a11y": "^9.1.1",
54
- "@storybook/addon-docs": "^9.1.1",
55
- "@storybook/addon-links": "^9.1.1",
56
- "@storybook/web-components-vite": "^9.1.1",
57
- "@types/node": "^24.2.1",
53
+ "@storybook/addon-a11y": "^9.1.2",
54
+ "@storybook/addon-docs": "^9.1.2",
55
+ "@storybook/addon-links": "^9.1.2",
56
+ "@storybook/web-components-vite": "^9.1.2",
57
+ "@types/node": "^24.3.0",
58
58
  "@wc-toolkit/jsx-types": "^1.3.0",
59
59
  "@wc-toolkit/module-path-resolver": "^1.0.0",
60
60
  "@wc-toolkit/storybook-helpers": "^9.0.1",
@@ -66,13 +66,13 @@
66
66
  "eslint": "^9.33.0",
67
67
  "eslint-plugin-lit": "^2.1.1",
68
68
  "eslint-plugin-lit-a11y": "^5.1.1",
69
- "eslint-plugin-storybook": "9.1.1",
69
+ "eslint-plugin-storybook": "9.1.2",
70
70
  "eslint-plugin-wc": "^3.0.1",
71
71
  "husky": "^9.1.7",
72
72
  "lint-staged": "^16.1.5",
73
73
  "postcss-styled-syntax": "^0.7.1",
74
74
  "prettier": "3.6.2",
75
- "storybook": "^9.1.1",
75
+ "storybook": "^9.1.2",
76
76
  "stylelint": "^16.23.1",
77
77
  "stylelint-config-standard": "^39.0.0",
78
78
  "stylelint-no-unsupported-browser-features": "^8.0.4",
@@ -80,8 +80,8 @@
80
80
  "stylelint-value-no-unknown-custom-properties": "^6.0.1",
81
81
  "tsc-alias": "^1.8.16",
82
82
  "typescript": "^5.9.2",
83
- "typescript-eslint": "^8.39.0",
84
- "vite": "^7.1.1",
83
+ "typescript-eslint": "^8.40.0",
84
+ "vite": "^7.1.3",
85
85
  "vite-tsconfig-paths": "^5.1.4"
86
86
  },
87
87
  "scripts": {