@tedi-design-system/react 19.1.0-rc.1 → 19.1.0-rc.10

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 (90) hide show
  1. package/DESIGN.md +308 -0
  2. package/README.md +28 -0
  3. package/bundle-stats.html +1 -1
  4. package/component.manifest.json +1191 -0
  5. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
  6. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
  7. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  8. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
  9. package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
  10. package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
  11. package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
  12. package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
  13. package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  14. package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
  15. package/external/prop-types/external/react-is/index.cjs.js +1 -1
  16. package/external/prop-types/external/react-is/index.es.js +1 -1
  17. package/index.css +1 -1
  18. package/package.json +2 -2
  19. package/src/community/components/layout/sidenav/sidenav.cjs.js +1 -1
  20. package/src/community/components/layout/sidenav/sidenav.es.js +38 -40
  21. package/src/community/components/map-components/base-map-selection/base-map-option.cjs.js +1 -1
  22. package/src/community/components/map-components/base-map-selection/base-map-option.d.ts +8 -5
  23. package/src/community/components/map-components/base-map-selection/base-map-option.es.js +63 -65
  24. package/src/community/components/map-components/base-map-selection/base-map-selection.cjs.js +1 -1
  25. package/src/community/components/map-components/base-map-selection/base-map-selection.d.ts +1 -4
  26. package/src/community/components/map-components/base-map-selection/base-map-selection.es.js +55 -55
  27. package/src/community/components/map-components/map-button/map-button.cjs.js +1 -1
  28. package/src/community/components/map-components/map-button/map-button.d.ts +2 -3
  29. package/src/community/components/map-components/map-button/map-button.es.js +37 -36
  30. package/src/community/components/map-components/map-dropdown/map-dropdown.cjs.js +1 -1
  31. package/src/community/components/map-components/map-dropdown/map-dropdown.es.js +51 -49
  32. package/src/tedi/components/content/card/card.module.scss.cjs.js +1 -1
  33. package/src/tedi/components/content/card/card.module.scss.es.js +3 -2
  34. package/src/tedi/components/content/collapse/collapse.cjs.js +1 -1
  35. package/src/tedi/components/content/collapse/collapse.d.ts +9 -0
  36. package/src/tedi/components/content/collapse/collapse.es.js +44 -35
  37. package/src/tedi/components/filter/filter/filter.cjs.js +1 -1
  38. package/src/tedi/components/filter/filter/filter.d.ts +5 -0
  39. package/src/tedi/components/filter/filter/filter.es.js +154 -144
  40. package/src/tedi/components/filter/filter/filter.module.scss.cjs.js +1 -1
  41. package/src/tedi/components/filter/filter/filter.module.scss.es.js +2 -1
  42. package/src/tedi/components/form/date-field/date-field-helpers.cjs.js +1 -1
  43. package/src/tedi/components/form/date-field/date-field-helpers.d.ts +12 -19
  44. package/src/tedi/components/form/date-field/date-field-helpers.es.js +27 -21
  45. package/src/tedi/components/form/date-field/date-field.cjs.js +1 -1
  46. package/src/tedi/components/form/date-field/date-field.d.ts +1 -1
  47. package/src/tedi/components/form/date-field/date-field.es.js +169 -164
  48. package/src/tedi/components/form/textfield/textfield.cjs.js +1 -1
  49. package/src/tedi/components/form/textfield/textfield.es.js +21 -21
  50. package/src/tedi/components/form/time-field/time-field.cjs.js +1 -1
  51. package/src/tedi/components/form/time-field/time-field.es.js +126 -124
  52. package/src/tedi/components/layout/sidenav/components/sidenav-item/sidenav-item.cjs.js +1 -1
  53. package/src/tedi/components/layout/sidenav/components/sidenav-item/sidenav-item.es.js +82 -85
  54. package/src/tedi/components/layout/sidenav/sidenav.cjs.js +1 -1
  55. package/src/tedi/components/layout/sidenav/sidenav.es.js +16 -16
  56. package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.cjs.js +1 -1
  57. package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.es.js +6 -7
  58. package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.cjs.js +1 -1
  59. package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.es.js +2 -2
  60. package/src/tedi/components/layout/top-nav/top-nav.cjs.js +1 -1
  61. package/src/tedi/components/layout/top-nav/top-nav.es.js +9 -8
  62. package/src/tedi/components/misc/affix/affix.cjs.js +1 -1
  63. package/src/tedi/components/misc/affix/affix.es.js +20 -8
  64. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-collapsible/table-of-contents-collapsible.cjs.js +1 -1
  65. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-collapsible/table-of-contents-collapsible.d.ts +9 -1
  66. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-collapsible/table-of-contents-collapsible.es.js +78 -39
  67. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-item/table-of-contents-item.d.ts +6 -0
  68. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.cjs.js +1 -1
  69. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.es.js +23 -28
  70. package/src/tedi/components/navigation/table-of-contents/table-of-contents.cjs.js +1 -1
  71. package/src/tedi/components/navigation/table-of-contents/table-of-contents.d.ts +32 -21
  72. package/src/tedi/components/navigation/table-of-contents/table-of-contents.es.js +58 -55
  73. package/src/tedi/components/navigation/table-of-contents/table-of-contents.module.scss.cjs.js +1 -1
  74. package/src/tedi/components/navigation/table-of-contents/table-of-contents.module.scss.es.js +4 -1
  75. package/src/tedi/components/overlays/dropdown/dropdown.cjs.js +1 -1
  76. package/src/tedi/components/overlays/dropdown/dropdown.d.ts +8 -0
  77. package/src/tedi/components/overlays/dropdown/dropdown.es.js +82 -74
  78. package/src/tedi/components/overlays/dropdown/dropdown.module.scss.cjs.js +1 -1
  79. package/src/tedi/components/overlays/dropdown/dropdown.module.scss.es.js +1 -0
  80. package/src/tedi/components/overlays/overlay/overlay-trigger.cjs.js +1 -1
  81. package/src/tedi/components/overlays/overlay/overlay-trigger.es.js +22 -21
  82. package/src/tedi/helpers/hooks/use-safe-id.cjs.js +1 -0
  83. package/src/tedi/helpers/hooks/use-safe-id.d.ts +16 -0
  84. package/src/tedi/helpers/hooks/use-safe-id.es.js +5 -0
  85. package/src/tedi/helpers/index.d.ts +1 -0
  86. package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
  87. package/src/tedi/providers/label-provider/labels-map.d.ts +14 -0
  88. package/src/tedi/providers/label-provider/labels-map.es.js +14 -0
  89. package/tedi.cjs.js +1 -1
  90. package/tedi.es.js +10 -8
@@ -1,235 +1,245 @@
1
1
  import { jsxs as p, Fragment as g, jsx as t } from "react/jsx-runtime";
2
- import ue from "../../../../../external/classnames/index.es.js";
3
- import Je, { forwardRef as Ke, useContext as Qe, useRef as Ue, useState as O, useMemo as S, useEffect as Ve, useCallback as C } from "react";
4
- import { Icon as fe } from "../../base/icon/icon.es.js";
5
- import { Button as J } from "../../buttons/button/button.es.js";
6
- import { Checkbox as me } from "../../form/checkbox/checkbox.es.js";
7
- import { Search as Xe } from "../../form/search/search.es.js";
2
+ import Q from "../../../../../external/classnames/index.es.js";
3
+ import Qe, { forwardRef as Ue, useContext as Ve, useRef as Xe, useState as P, useMemo as _, useEffect as Ye, useCallback as y } from "react";
4
+ import { Icon as pe } from "../../base/icon/icon.es.js";
5
+ import { Button as U } from "../../buttons/button/button.es.js";
6
+ import { Checkbox as ve } from "../../form/checkbox/checkbox.es.js";
7
+ import { Search as et } from "../../form/search/search.es.js";
8
8
  import { Dropdown as c } from "../../overlays/dropdown/dropdown.es.js";
9
- import { StatusBadge as Ye } from "../../tags/status-badge/status-badge.es.js";
10
- import i from "./filter.module.scss.es.js";
11
- import { FilterGroupContext as et } from "./filter-group-context.es.js";
12
- import { useBreakpointProps as tt } from "../../../helpers/hooks/use-breakpoint-props.es.js";
13
- import { useLabels as lt } from "../../../providers/label-provider/use-labels.es.js";
14
- const he = (_) => _ === "large" ? 24 : 18, rt = (_) => {
15
- const v = Je.useId();
16
- return _ ?? `tedi-filter-${v.replace(/[^a-zA-Z0-9-]/g, "")}`;
17
- }, it = Ke((_, v) => {
18
- const { getCurrentBreakpointProps: pe } = tt(_.defaultServerBreakpoint), {
9
+ import { StatusBadge as tt } from "../../tags/status-badge/status-badge.es.js";
10
+ import r from "./filter.module.scss.es.js";
11
+ import { FilterGroupContext as lt } from "./filter-group-context.es.js";
12
+ import { useBreakpointProps as rt } from "../../../helpers/hooks/use-breakpoint-props.es.js";
13
+ import { useLabels as it } from "../../../providers/label-provider/use-labels.es.js";
14
+ const be = (S) => S === "large" ? 24 : 18, nt = (S) => {
15
+ const v = Qe.useId();
16
+ return S ?? `tedi-filter-${v.replace(/[^a-zA-Z0-9-]/g, "")}`;
17
+ }, st = Ue((S, v) => {
18
+ const { getCurrentBreakpointProps: ge } = rt(S.defaultServerBreakpoint), {
19
19
  text: w,
20
- value: k,
21
- disabled: ve = !1,
22
- className: be,
23
- id: K,
24
- selected: y,
25
- defaultSelected: Q = !1,
20
+ value: C,
21
+ disabled: _e = !1,
22
+ className: Se,
23
+ id: V,
24
+ selected: k,
25
+ defaultSelected: X = !1,
26
26
  onSelectedChange: I,
27
- selectedValue: L,
28
- defaultSelectedValue: ge,
27
+ selectedValue: x,
28
+ defaultSelectedValue: we,
29
29
  onSelectedValueChange: d,
30
- multiselect: U = !1,
30
+ multiselect: Y = !1,
31
31
  selectedValues: u,
32
- defaultSelectedValues: Se,
32
+ defaultSelectedValues: xe,
33
33
  onSelectedValuesChange: s,
34
34
  options: N = [],
35
- searchable: _e = !1,
36
- showSelectAll: we = !1,
37
- selectAllLabel: Le,
38
- showClear: V = !1,
39
- clearLabel: Ne,
40
- preserveLabel: X = !1,
41
- children: Y,
42
- onClear: P,
43
- prepend: A,
44
- hidePrependWhenSelected: xe = !0,
45
- append: R,
46
- placement: Ce = "bottom-start",
47
- variant: ke = "primary",
48
- size: M = "default",
49
- searchLabel: ee
50
- } = pe(_), { getLabel: te } = lt(), ye = Le ?? te("filter.select-all"), le = Ne ?? te("filter.clear-selection"), n = Qe(et), B = rt(K), Ie = Ue(null), G = N.length > 0, $ = !!Y, b = G || $, f = G && !U, m = G && U, F = !!(n != null && n.isManaged) && k !== void 0 && !b, D = F && !(n != null && n.multiselect), re = ve || ((n == null ? void 0 : n.disabled) ?? !1), [Be, $e] = O(Q), [Fe, ie] = O(ge ?? ""), [Oe, j] = O(Se ?? []);
51
- $ && (Q || I) && y === void 0 && console.warn(
35
+ searchable: Ne = !1,
36
+ showSelectAll: Le = !1,
37
+ selectAllLabel: ye,
38
+ showClear: ee = !1,
39
+ clearLabel: Ce,
40
+ preserveLabel: te = !1,
41
+ children: le,
42
+ onClear: T,
43
+ prepend: R,
44
+ hidePrependWhenSelected: ke = !0,
45
+ append: G,
46
+ placement: Ie = "bottom-start",
47
+ variant: $e = "primary",
48
+ size: H = "default",
49
+ searchLabel: re,
50
+ maxHeight: z
51
+ } = ge(S), { getLabel: ie } = it(), Be = ye ?? ie("filter.select-all"), ne = Ce ?? ie("filter.clear-selection"), $ = z === void 0 ? void 0 : typeof z == "number" ? `${z}px` : z, n = Ve(lt), B = nt(V), Fe = Xe(null), D = N.length > 0, F = !!le, b = D || F, f = D && !Y, m = D && Y, O = !!(n != null && n.isManaged) && C !== void 0 && !b, j = O && !(n != null && n.multiselect), se = _e || ((n == null ? void 0 : n.disabled) ?? !1), [Oe, Pe] = P(X), [Te, oe] = P(we ?? ""), [ze, E] = P(xe ?? []);
52
+ F && (X || I) && k === void 0 && console.warn(
52
53
  "[Filter] `defaultSelected` and `onSelectedChange` are not honoured in custom-content mode (when `children` is provided). Drive the selected state yourself via the controlled `selected` prop, e.g. `selected={Boolean(value)}`."
53
54
  );
54
- const T = y !== void 0 ? y : Be, h = L !== void 0 ? L : Fe, r = u !== void 0 ? u : Oe, x = S(() => F ? n.isSelected(k) : m ? r.length > 0 : f ? h !== "" : T, [F, k, n, m, r, f, h, T]), z = S(() => {
55
+ const A = k !== void 0 ? k : Oe, h = x !== void 0 ? x : Te, i = u !== void 0 ? u : ze, L = _(() => O ? n.isSelected(C) : m ? i.length > 0 : f ? h !== "" : A, [O, C, n, m, i, f, h, A]), M = _(() => {
55
56
  var e;
56
57
  return !f || !h ? null : ((e = N.find((l) => l.value === h)) == null ? void 0 : e.label) ?? null;
57
- }, [f, h, N]), Pe = S(() => f ? z && X ? `${w}: ${z}` : z ?? w : w, [f, z, X, w]), [E, ne] = O(!1), [W, se] = O("");
58
- Ve(() => {
59
- E || se("");
60
- }, [E]);
61
- const Z = S(() => {
62
- const e = W.trim().toLowerCase();
58
+ }, [f, h, N]), Ae = _(() => f ? M && te ? `${w}: ${M}` : M ?? w : w, [f, M, te, w]), [W, ae] = P(!1), [Z, ce] = P("");
59
+ Ye(() => {
60
+ W || ce("");
61
+ }, [W]);
62
+ const q = _(() => {
63
+ const e = Z.trim().toLowerCase();
63
64
  return e ? N.filter((l) => l.label.toLowerCase().includes(e)) : N;
64
- }, [W, N]), a = S(() => Z.filter((e) => !e.disabled), [Z]), q = S(() => a.length === 0 ? !1 : a.every((e) => r.includes(e.value)), [a, r]), Te = S(() => {
65
- if (a.length === 0) return !1;
66
- const e = a.filter((l) => r.includes(l.value)).length;
67
- return e > 0 && e < a.length;
68
- }, [a, r]), ze = C(
65
+ }, [Z, N]), o = _(() => q.filter((e) => !e.disabled), [q]), J = _(() => o.length === 0 ? !1 : o.every((e) => i.includes(e.value)), [o, i]), Me = _(() => {
66
+ if (o.length === 0) return !1;
67
+ const e = o.filter((l) => i.includes(l.value)).length;
68
+ return e > 0 && e < o.length;
69
+ }, [o, i]), Re = y(
69
70
  (e) => {
70
- Ie.current = e, typeof v == "function" ? v(e) : v && (v.current = e);
71
+ Fe.current = e, typeof v == "function" ? v(e) : v && (v.current = e);
71
72
  },
72
73
  [v]
73
- ), Ae = C(() => {
74
- if (F) {
75
- n.selectFilter(k);
74
+ ), Ge = y(() => {
75
+ if (O) {
76
+ n.selectFilter(C);
76
77
  return;
77
78
  }
78
- const e = !T;
79
- y === void 0 && $e(e), I == null || I(e);
80
- }, [F, n, k, T, y, I]), Re = C(
79
+ const e = !A;
80
+ k === void 0 && Pe(e), I == null || I(e);
81
+ }, [O, n, C, A, k, I]), He = y(
81
82
  (e) => {
82
83
  const l = h === e ? "" : e;
83
- L === void 0 && ie(l), d == null || d(l);
84
+ x === void 0 && oe(l), d == null || d(l);
84
85
  },
85
- [h, L, d]
86
- ), Me = C(
86
+ [h, x, d]
87
+ ), De = y(
87
88
  (e) => {
88
- const l = r.includes(e) ? r.filter((o) => o !== e) : [...r, e];
89
- u === void 0 && j(l), s == null || s(l);
89
+ const l = i.includes(e) ? i.filter((a) => a !== e) : [...i, e];
90
+ u === void 0 && E(l), s == null || s(l);
90
91
  },
91
- [r, u, s]
92
- ), Ge = C(() => {
92
+ [i, u, s]
93
+ ), je = y(() => {
93
94
  let e;
94
- if (q) {
95
- const l = new Set(a.map((o) => o.value));
96
- e = r.filter((o) => !l.has(o));
95
+ if (J) {
96
+ const l = new Set(o.map((a) => a.value));
97
+ e = i.filter((a) => !l.has(a));
97
98
  } else {
98
- const l = new Set(r);
99
- a.forEach((o) => l.add(o.value)), e = [...l];
99
+ const l = new Set(i);
100
+ o.forEach((a) => l.add(a.value)), e = [...l];
100
101
  }
101
- u === void 0 && j(e), s == null || s(e);
102
- }, [q, a, r, u, s]), ae = C(() => {
103
- $ ? P == null || P() : m ? (u === void 0 && j([]), s == null || s([])) : f && (L === void 0 && ie(""), d == null || d("")), ne(!1);
102
+ u === void 0 && E(e), s == null || s(e);
103
+ }, [J, o, i, u, s]), de = y(() => {
104
+ F ? T == null || T() : m ? (u === void 0 && E([]), s == null || s([])) : f && (x === void 0 && oe(""), d == null || d("")), ae(!1);
104
105
  }, [
105
- $,
106
- P,
106
+ F,
107
+ T,
107
108
  m,
108
109
  u,
109
110
  s,
110
111
  f,
111
- L,
112
+ x,
112
113
  d
113
- ]), De = x && xe, je = D ? "radio" : void 0, Ee = D ? x : void 0, We = !b && !D ? x : void 0, Ze = /* @__PURE__ */ p(g, { children: [
114
- !b && x && /* @__PURE__ */ t(fe, { className: i["tedi-filter__icon"], name: "check", size: he(M), color: "inherit" }),
115
- A != null && /* @__PURE__ */ t(
114
+ ]), Ee = L && ke, We = j ? "radio" : void 0, Ze = j ? L : void 0, qe = !b && !j ? L : void 0, Je = /* @__PURE__ */ p(g, { children: [
115
+ !b && L && /* @__PURE__ */ t(pe, { className: r["tedi-filter__icon"], name: "check", size: be(H), color: "inherit" }),
116
+ R != null && /* @__PURE__ */ t(
116
117
  "span",
117
118
  {
118
- className: ue(i["tedi-filter__prepend"], {
119
- [i["tedi-filter__prepend--hidden"]]: De
119
+ className: Q(r["tedi-filter__prepend"], {
120
+ [r["tedi-filter__prepend--hidden"]]: Ee
120
121
  }),
121
- children: A
122
+ children: R
122
123
  }
123
124
  ),
124
- /* @__PURE__ */ t("span", { className: i["tedi-filter__text"], children: Pe }),
125
- R != null && /* @__PURE__ */ t("span", { className: i["tedi-filter__append"], children: R }),
126
- m && x && r.length > 0 && /* @__PURE__ */ t(Ye, { className: i["tedi-filter__count"], color: re ? "neutral" : "brand", children: String(r.length) }),
125
+ /* @__PURE__ */ t("span", { className: r["tedi-filter__text"], children: Ae }),
126
+ G != null && /* @__PURE__ */ t("span", { className: r["tedi-filter__append"], children: G }),
127
+ m && L && i.length > 0 && /* @__PURE__ */ t(tt, { className: r["tedi-filter__count"], color: se ? "neutral" : "brand", children: String(i.length) }),
127
128
  b && /* @__PURE__ */ t(
128
- fe,
129
+ pe,
129
130
  {
130
- className: i["tedi-filter__icon"],
131
+ className: r["tedi-filter__icon"],
131
132
  name: "arrow_drop_down",
132
133
  filled: !0,
133
- size: he(M),
134
+ size: be(H),
134
135
  color: "inherit"
135
136
  }
136
137
  )
137
- ] }), oe = ue(
138
- i["tedi-filter"],
139
- i[`tedi-filter--${ke}`],
140
- M === "large" && i["tedi-filter--large"],
141
- x && i["tedi-filter--selected"],
142
- be
143
- ), ce = /* @__PURE__ */ t(
144
- J,
138
+ ] }), ue = Q(
139
+ r["tedi-filter"],
140
+ r[`tedi-filter--${$e}`],
141
+ H === "large" && r["tedi-filter--large"],
142
+ L && r["tedi-filter--selected"],
143
+ Se
144
+ ), fe = /* @__PURE__ */ t(
145
+ U,
145
146
  {
146
- ref: ze,
147
- id: K,
147
+ ref: Re,
148
+ id: V,
148
149
  type: "button",
149
- disabled: re,
150
- className: i["tedi-filter__button"],
151
- onClick: b ? void 0 : Ae,
152
- role: b ? void 0 : je,
153
- "aria-checked": Ee,
154
- "aria-pressed": We,
150
+ disabled: se,
151
+ className: r["tedi-filter__button"],
152
+ onClick: b ? void 0 : Ge,
153
+ role: b ? void 0 : We,
154
+ "aria-checked": Ze,
155
+ "aria-pressed": qe,
155
156
  noStyle: !0,
156
- children: Ze
157
+ children: Je
157
158
  }
158
159
  );
159
160
  if (!b)
160
- return /* @__PURE__ */ t("div", { className: oe, children: ce });
161
- const H = m && we ? 0 : null, qe = H !== null ? 1 : 0, He = () => Z.map((e, l) => {
162
- const o = m ? r.includes(e.value) : h === e.value, de = l + qe;
163
- return m ? /* @__PURE__ */ t(c.Item, { index: de, asChild: !0, disabled: e.disabled, closeOnSelect: !1, children: /* @__PURE__ */ t(
164
- me,
161
+ return /* @__PURE__ */ t("div", { className: ue, children: fe });
162
+ const K = m && Le ? 0 : null, Ke = K !== null ? 1 : 0, me = () => q.map((e, l) => {
163
+ const a = m ? i.includes(e.value) : h === e.value, he = l + Ke;
164
+ return m ? /* @__PURE__ */ t(c.Item, { index: he, asChild: !0, disabled: e.disabled, closeOnSelect: !1, children: /* @__PURE__ */ t(
165
+ ve,
165
166
  {
166
167
  id: `${B}-option-${l}`,
167
168
  label: e.label,
168
169
  value: e.value,
169
- checked: o,
170
+ checked: a,
170
171
  disabled: e.disabled,
171
- onChange: () => Me(e.value),
172
+ onChange: () => De(e.value),
172
173
  name: `${B}-options`
173
174
  }
174
175
  ) }, e.value) : /* @__PURE__ */ t(
175
176
  c.Item,
176
177
  {
177
- index: de,
178
+ index: he,
178
179
  disabled: e.disabled,
179
- active: o,
180
- onClick: () => Re(e.value),
180
+ active: a,
181
+ onClick: () => He(e.value),
181
182
  children: e.label
182
183
  },
183
184
  e.value
184
185
  );
185
186
  });
186
- return /* @__PURE__ */ t("div", { className: oe, children: /* @__PURE__ */ p(c, { open: E, onOpenChange: ne, placement: Ce, width: "auto", children: [
187
- /* @__PURE__ */ t(c.Trigger, { children: ce }),
188
- /* @__PURE__ */ t(c.Content, { children: $ ? /* @__PURE__ */ p(g, { children: [
189
- /* @__PURE__ */ t("div", { className: i["tedi-filter-dropdown__custom-content"], children: Y }),
190
- V && /* @__PURE__ */ p(g, { children: [
187
+ return /* @__PURE__ */ t("div", { className: ue, children: /* @__PURE__ */ p(c, { open: W, onOpenChange: ae, placement: Ie, width: "auto", children: [
188
+ /* @__PURE__ */ t(c.Trigger, { children: fe }),
189
+ /* @__PURE__ */ t(c.Content, { children: F ? /* @__PURE__ */ p(g, { children: [
190
+ /* @__PURE__ */ t(
191
+ "div",
192
+ {
193
+ className: Q(r["tedi-filter-dropdown__custom-content"], {
194
+ [r["tedi-filter-dropdown__options"]]: $ !== void 0
195
+ }),
196
+ style: $ !== void 0 ? { maxHeight: $ } : void 0,
197
+ children: le
198
+ }
199
+ ),
200
+ ee && /* @__PURE__ */ p(g, { children: [
191
201
  /* @__PURE__ */ t(c.Separator, {}),
192
- /* @__PURE__ */ t("div", { className: i["tedi-filter-dropdown__clear"], children: /* @__PURE__ */ t(J, { visualType: "neutral", size: "small", type: "button", iconLeft: "refresh", onClick: ae, children: le }) })
202
+ /* @__PURE__ */ t("div", { className: r["tedi-filter-dropdown__clear"], children: /* @__PURE__ */ t(U, { visualType: "neutral", size: "small", type: "button", iconLeft: "refresh", onClick: de, children: ne }) })
193
203
  ] })
194
204
  ] }) : /* @__PURE__ */ p(g, { children: [
195
- _e && /* @__PURE__ */ p(g, { children: [
196
- /* @__PURE__ */ t("div", { className: i["tedi-filter-dropdown__search"], children: /* @__PURE__ */ t(
197
- Xe,
205
+ Ne && /* @__PURE__ */ p(g, { children: [
206
+ /* @__PURE__ */ t("div", { className: r["tedi-filter-dropdown__search"], children: /* @__PURE__ */ t(
207
+ et,
198
208
  {
199
209
  id: `${B}-search`,
200
- label: ee ?? w,
210
+ label: re ?? w,
201
211
  hideLabel: !0,
202
- ariaLabel: ee ?? w,
203
- value: W,
204
- onChange: se
212
+ ariaLabel: re ?? w,
213
+ value: Z,
214
+ onChange: ce
205
215
  }
206
216
  ) }),
207
217
  /* @__PURE__ */ t(c.Separator, {})
208
218
  ] }),
209
- H !== null && /* @__PURE__ */ p(g, { children: [
210
- /* @__PURE__ */ t(c.Item, { index: H, asChild: !0, closeOnSelect: !1, children: /* @__PURE__ */ t(
211
- me,
219
+ K !== null && /* @__PURE__ */ p(g, { children: [
220
+ /* @__PURE__ */ t(c.Item, { index: K, asChild: !0, closeOnSelect: !1, children: /* @__PURE__ */ t(
221
+ ve,
212
222
  {
213
223
  id: `${B}-select-all`,
214
- label: ye,
224
+ label: Be,
215
225
  value: "select-all",
216
- checked: q,
217
- indeterminate: Te,
218
- onChange: Ge,
226
+ checked: J,
227
+ indeterminate: Me,
228
+ onChange: je,
219
229
  name: `${B}-select-all`
220
230
  }
221
231
  ) }),
222
232
  /* @__PURE__ */ t(c.Separator, {})
223
233
  ] }),
224
- He(),
225
- V && /* @__PURE__ */ p(g, { children: [
234
+ $ !== void 0 ? /* @__PURE__ */ t("div", { className: r["tedi-filter-dropdown__options"], style: { maxHeight: $ }, children: me() }) : me(),
235
+ ee && /* @__PURE__ */ p(g, { children: [
226
236
  /* @__PURE__ */ t(c.Separator, {}),
227
- /* @__PURE__ */ t("div", { className: i["tedi-filter-dropdown__clear"], children: /* @__PURE__ */ t(J, { visualType: "neutral", size: "small", type: "button", iconLeft: "refresh", onClick: ae, children: le }) })
237
+ /* @__PURE__ */ t("div", { className: r["tedi-filter-dropdown__clear"], children: /* @__PURE__ */ t(U, { visualType: "neutral", size: "small", type: "button", iconLeft: "refresh", onClick: de, children: ne }) })
228
238
  ] })
229
239
  ] }) })
230
240
  ] }) });
231
241
  });
232
- it.displayName = "Filter";
242
+ st.displayName = "Filter";
233
243
  export {
234
- it as Filter
244
+ st as Filter
235
245
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-filter":"tedi-filter-e3f2f618","tedi-filter__button":"tedi-filter__button-b7abc5ed","tedi-filter__text":"tedi-filter__text-2c4eaab6","tedi-filter__icon":"tedi-filter__icon-1b8e93f2","tedi-filter__prepend":"tedi-filter__prepend-68dc0007","tedi-filter__append":"tedi-filter__append-bdb27679","tedi-filter__prepend--hidden":"tedi-filter__prepend--hidden-5039af1e","tedi-filter__count":"tedi-filter__count-d72acead","tedi-filter--primary":"tedi-filter--primary-837108e8","tedi-filter--selected":"tedi-filter--selected-7273f310","tedi-filter--secondary":"tedi-filter--secondary-8aaf488e","tedi-filter--large":"tedi-filter--large-f7f46174","tedi-filter-group":"tedi-filter-group-9d16304d","tedi-filter-dropdown__custom-content":"tedi-filter-dropdown__custom-content-6e851b26","tedi-filter-dropdown__search":"tedi-filter-dropdown__search-dbb4e1a3","tedi-filter-dropdown__clear":"tedi-filter-dropdown__clear-fa4e6a11"};exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-filter":"tedi-filter-e3f2f618","tedi-filter__button":"tedi-filter__button-b7abc5ed","tedi-filter__text":"tedi-filter__text-2c4eaab6","tedi-filter__icon":"tedi-filter__icon-1b8e93f2","tedi-filter__prepend":"tedi-filter__prepend-68dc0007","tedi-filter__append":"tedi-filter__append-bdb27679","tedi-filter__prepend--hidden":"tedi-filter__prepend--hidden-5039af1e","tedi-filter__count":"tedi-filter__count-d72acead","tedi-filter--primary":"tedi-filter--primary-837108e8","tedi-filter--selected":"tedi-filter--selected-7273f310","tedi-filter--secondary":"tedi-filter--secondary-8aaf488e","tedi-filter--large":"tedi-filter--large-f7f46174","tedi-filter-group":"tedi-filter-group-9d16304d","tedi-filter-dropdown__custom-content":"tedi-filter-dropdown__custom-content-6e851b26","tedi-filter-dropdown__search":"tedi-filter-dropdown__search-dbb4e1a3","tedi-filter-dropdown__clear":"tedi-filter-dropdown__clear-fa4e6a11","tedi-filter-dropdown__options":"tedi-filter-dropdown__options-45f2e9a4"};exports.default=e;
@@ -14,7 +14,8 @@ const e = {
14
14
  "tedi-filter-group": "tedi-filter-group-9d16304d",
15
15
  "tedi-filter-dropdown__custom-content": "tedi-filter-dropdown__custom-content-6e851b26",
16
16
  "tedi-filter-dropdown__search": "tedi-filter-dropdown__search-dbb4e1a3",
17
- "tedi-filter-dropdown__clear": "tedi-filter-dropdown__clear-fa4e6a11"
17
+ "tedi-filter-dropdown__clear": "tedi-filter-dropdown__clear-fa4e6a11",
18
+ "tedi-filter-dropdown__options": "tedi-filter-dropdown__options-45f2e9a4"
18
19
  };
19
20
  export {
20
21
  e as default
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=4,c=8,l=e=>!!e&&!Array.isArray(e)&&!(e instanceof Date)&&"from"in e,f=(e,a,t)=>t&&l(a)&&a.from&&a.to?{from:t,to:void 0}:l(e)?e:void 0,D=e=>{const a=[];return e.disabled&&(Array.isArray(e.disabled)?a.push(...e.disabled):a.push(e.disabled)),e.minDate&&a.push({before:e.minDate}),e.maxDate&&a.push({after:e.maxDate}),e.disablePast&&a.push({before:new Date}),e.disableFuture&&a.push({after:new Date}),e.shouldDisableMonth&&a.push(t=>{var r;return((r=e.shouldDisableMonth)==null?void 0:r.call(e,t))??!1}),e.shouldDisableYear&&a.push(t=>{var r;return((r=e.shouldDisableYear)==null?void 0:r.call(e,t))??!1}),a},h=e=>{const a=new Date(2099,11,31),t=e.formatToParts(a),r=[],s=[];for(const o of t)o.type==="day"||o.type==="month"||o.type==="year"?r.push(o.type):o.type==="literal"&&r.length>0&&s.length<2&&s.push(o.value);return{fieldOrder:r,separators:s}},n=({fieldOrder:e,separators:a})=>{const t=r=>r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.map((r,s)=>{const o=r==="year"?"\\d{4}":"\\d{2}";return`${s>0?t(a[s-1]??""):""}(${o})`}).join("")};exports.CALENDAR_POPOVER_OFFSET=d;exports.CALENDAR_POPOVER_PADDING=c;exports.buildDateRegexSource=n;exports.buildDisabledMatchers=D;exports.getLocaleDateParts=h;exports.resolveRangeSelection=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=4,n=8,l=e=>!!e&&!Array.isArray(e)&&!(e instanceof Date)&&"from"in e,D=(e,a,t)=>{if(t&&l(a)&&a.from&&a.to)return{from:t,to:void 0};if(!l(e))return;const r=!!e.from&&!!e.to&&e.from.getTime()===e.to.getTime(),o=l(a)&&!!a.from&&!a.to;return r&&!o?{from:e.from,to:void 0}:e},c=e=>{const a=[];return e.disabled&&(Array.isArray(e.disabled)?a.push(...e.disabled):a.push(e.disabled)),e.minDate&&a.push({before:e.minDate}),e.maxDate&&a.push({after:e.maxDate}),e.disablePast&&a.push({before:new Date}),e.disableFuture&&a.push({after:new Date}),e.shouldDisableMonth&&a.push(t=>{var r;return((r=e.shouldDisableMonth)==null?void 0:r.call(e,t))??!1}),e.shouldDisableYear&&a.push(t=>{var r;return((r=e.shouldDisableYear)==null?void 0:r.call(e,t))??!1}),a},d=e=>{const a=new Date(2099,11,31),t=e.formatToParts(a),r=[],o=[];for(const s of t)s.type==="day"||s.type==="month"||s.type==="year"?r.push(s.type):s.type==="literal"&&r.length>0&&o.length<2&&o.push(s.value);return{fieldOrder:r,separators:o}},i=({fieldOrder:e,separators:a})=>{const t=r=>r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.map((r,o)=>{const s=r==="year"?"\\d{4}":"\\d{2}";return`${o>0?t(a[o-1]??""):""}(${s})`}).join("")};exports.CALENDAR_POPOVER_OFFSET=f;exports.CALENDAR_POPOVER_PADDING=n;exports.buildDateRegexSource=i;exports.buildDisabledMatchers=c;exports.getLocaleDateParts=d;exports.resolveRangeSelection=D;
@@ -13,27 +13,22 @@ export declare const CALENDAR_POPOVER_OFFSET = 4;
13
13
  export declare const CALENDAR_POPOVER_PADDING = 8;
14
14
  export type SelectedValueLike = Date | Date[] | DateRange | undefined;
15
15
  /**
16
- * Range-selection click resolver. react-day-picker's default `addToRange`
17
- * keeps a completed `{ from, to }` range and only moves one of its ends when
18
- * the user clicks again — so after picking a start and an end, clicking a new
19
- * start instead drags the existing end. That surprises users who expect a
20
- * fresh click to begin a new range.
16
+ * Range-selection click resolver that fixes two quirks in react-day-picker's default `addToRange`:
17
+ * clicking on a completed range drags an existing end instead of starting over, and the first click
18
+ * on an empty range returns a same-day `{ from, to }` that reads as already-complete (issue #813).
21
19
  *
22
- * This normalises that: once a range is complete, the next click starts over
23
- * with `from` set to the clicked day and `to` cleared. While the range is
24
- * still being built (or empty), DayPicker's own result is passed through.
20
+ * So: a click on a complete range starts a new one (`from` set, `to` cleared); the first click on an
21
+ * empty range becomes a `to`-less start (re-clicking the same day keeps a single-day range);
22
+ * otherwise DayPicker's result passes through.
25
23
  *
26
24
  * @param computed - the range react-day-picker derived from the click
27
- * @param previous - the range that was selected before this click
28
- * @param clickedDay - the day the user just clicked
25
+ * @param previous - the range selected before this click
26
+ * @param clickedDay - the day just clicked
29
27
  */
30
28
  export declare const resolveRangeSelection: (computed: SelectedValueLike, previous: SelectedValueLike, clickedDay: Date | undefined) => DateRange | undefined;
31
29
  /**
32
- * Resolves the month the calendar should start on for any selection
33
- * shape. Used by both `DateField` (single / multiple / range Date(s)) and
34
- * `DateTimeField` (single Date or `{from, to}` range). For arrays the
35
- * earliest date wins; for ranges the `from` (or `to` if `from` is unset)
36
- * wins. Falls back to the explicit `fallback` and finally `new Date()`.
30
+ * Resolves the month the calendar should open on for any selection shape: a single `Date`, an array
31
+ * (earliest date wins), or a range (`from`, else `to`). Falls back to `fallback`, then `new Date()`.
37
32
  */
38
33
  export declare const getInitialMonth: (val: SelectedValueLike, fallback?: Date) => Date;
39
34
  /**
@@ -58,10 +53,8 @@ export interface DisabledMatcherInputs {
58
53
  */
59
54
  export declare const buildDisabledMatchers: (inputs: DisabledMatcherInputs) => Matcher[];
60
55
  /**
61
- * Field order + literal separators extracted from a locale's date format,
62
- * derived via `Intl.DateTimeFormat.formatToParts`. Used by parsers in
63
- * `DateField` (date-only) and `DateTimeField` (date + " HH:mm") to build
64
- * a regex that round-trips the displayed value in any locale.
56
+ * Field order + literal separators extracted from a locale's date format (via
57
+ * `Intl.DateTimeFormat.formatToParts`), used to build a locale-aware parsing regex.
65
58
  */
66
59
  export interface LocaleDateParts {
67
60
  fieldOrder: ('day' | 'month' | 'year')[];
@@ -1,29 +1,35 @@
1
- const d = 4, c = 8, l = (e) => !!e && !Array.isArray(e) && !(e instanceof Date) && "from" in e, h = (e, a, o) => o && l(a) && a.from && a.to ? { from: o, to: void 0 } : l(e) ? e : void 0, D = (e) => {
1
+ const n = 4, h = 8, f = (e) => !!e && !Array.isArray(e) && !(e instanceof Date) && "from" in e, D = (e, a, t) => {
2
+ if (t && f(a) && a.from && a.to)
3
+ return { from: t, to: void 0 };
4
+ if (!f(e)) return;
5
+ const r = !!e.from && !!e.to && e.from.getTime() === e.to.getTime(), o = f(a) && !!a.from && !a.to;
6
+ return r && !o ? { from: e.from, to: void 0 } : e;
7
+ }, d = (e) => {
2
8
  const a = [];
3
- return e.disabled && (Array.isArray(e.disabled) ? a.push(...e.disabled) : a.push(e.disabled)), e.minDate && a.push({ before: e.minDate }), e.maxDate && a.push({ after: e.maxDate }), e.disablePast && a.push({ before: /* @__PURE__ */ new Date() }), e.disableFuture && a.push({ after: /* @__PURE__ */ new Date() }), e.shouldDisableMonth && a.push((o) => {
9
+ return e.disabled && (Array.isArray(e.disabled) ? a.push(...e.disabled) : a.push(e.disabled)), e.minDate && a.push({ before: e.minDate }), e.maxDate && a.push({ after: e.maxDate }), e.disablePast && a.push({ before: /* @__PURE__ */ new Date() }), e.disableFuture && a.push({ after: /* @__PURE__ */ new Date() }), e.shouldDisableMonth && a.push((t) => {
4
10
  var r;
5
- return ((r = e.shouldDisableMonth) == null ? void 0 : r.call(e, o)) ?? !1;
6
- }), e.shouldDisableYear && a.push((o) => {
11
+ return ((r = e.shouldDisableMonth) == null ? void 0 : r.call(e, t)) ?? !1;
12
+ }), e.shouldDisableYear && a.push((t) => {
7
13
  var r;
8
- return ((r = e.shouldDisableYear) == null ? void 0 : r.call(e, o)) ?? !1;
14
+ return ((r = e.shouldDisableYear) == null ? void 0 : r.call(e, t)) ?? !1;
9
15
  }), a;
10
- }, n = (e) => {
11
- const a = new Date(2099, 11, 31), o = e.formatToParts(a), r = [], s = [];
12
- for (const t of o)
13
- t.type === "day" || t.type === "month" || t.type === "year" ? r.push(t.type) : t.type === "literal" && r.length > 0 && s.length < 2 && s.push(t.value);
14
- return { fieldOrder: r, separators: s };
15
- }, b = ({ fieldOrder: e, separators: a }) => {
16
- const o = (r) => r.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
17
- return e.map((r, s) => {
18
- const t = r === "year" ? "\\d{4}" : "\\d{2}";
19
- return `${s > 0 ? o(a[s - 1] ?? "") : ""}(${t})`;
16
+ }, c = (e) => {
17
+ const a = new Date(2099, 11, 31), t = e.formatToParts(a), r = [], o = [];
18
+ for (const s of t)
19
+ s.type === "day" || s.type === "month" || s.type === "year" ? r.push(s.type) : s.type === "literal" && r.length > 0 && o.length < 2 && o.push(s.value);
20
+ return { fieldOrder: r, separators: o };
21
+ }, i = ({ fieldOrder: e, separators: a }) => {
22
+ const t = (r) => r.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
23
+ return e.map((r, o) => {
24
+ const s = r === "year" ? "\\d{4}" : "\\d{2}";
25
+ return `${o > 0 ? t(a[o - 1] ?? "") : ""}(${s})`;
20
26
  }).join("");
21
27
  };
22
28
  export {
23
- d as CALENDAR_POPOVER_OFFSET,
24
- c as CALENDAR_POPOVER_PADDING,
25
- b as buildDateRegexSource,
26
- D as buildDisabledMatchers,
27
- n as getLocaleDateParts,
28
- h as resolveRangeSelection
29
+ n as CALENDAR_POPOVER_OFFSET,
30
+ h as CALENDAR_POPOVER_PADDING,
31
+ i as buildDateRegexSource,
32
+ d as buildDisabledMatchers,
33
+ c as getLocaleDateParts,
34
+ D as resolveRangeSelection
29
35
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react/jsx-runtime"),A=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),I=require("../../../../../external/classnames/index.cjs.js"),a=require("react"),At=require("../../content/calendar/calendar.cjs.js"),Ft=require("../multi-value-field/multi-value-field.cjs.js"),kt=require("../textfield/textfield.cjs.js"),D=require("./date-field.module.scss.cjs.js"),v=require("./date-field-helpers.cjs.js"),vt=require("./date-picker-modal/date-picker-modal.cjs.js"),Pt=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),wt=require("../../../providers/label-provider/use-labels.cjs.js"),Nt=require("../../../../../external/react-day-picker/dist/esm/locale/et.cjs.js"),me=require("../../../helpers/hooks/use-breakpoint.cjs.js"),Et=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),G=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),Ot=require("../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs.js"),$e=a.forwardRef((P,w)=>{const{getCurrentBreakpointProps:He}=Pt.useBreakpointProps(P.defaultServerBreakpoint),{getLabel:z}=wt.useLabels(),{useNativePicker:Ye=!1,enableCalendar:h=!0,calendarTrigger:T="button",numberOfMonths:X,clearable:pe=!0}=He(P),{id:he,mode:l="single",label:ge,selected:j,onSelect:i,disabled:N,disabledMatchers:E,placeholder:Ue,className:We,formatDate:c,required:S,showOutsideDays:be=!0,parseDate:Ge,monthYearSelectType:ye,minYear:De,maxYear:_e,dayStatus:xe,tagsDirection:ze,showNavigation:Me=!0,selectionLevel:O="days",initialView:L,locale:Ce=Nt.et,localeCode:$="et-EE",initialMonth:H,closeOnSelect:Xe,footer:Ae,defaultValue:Y,minDate:J,maxDate:K,disablePast:Fe,disableFuture:ke,shouldDisableMonth:Q,shouldDisableYear:Z,readOnly:R,availableDays:ve,inputProps:n,modal:ee=!1,modalProps:Je,modalTitle:Ke,disabledDateErrorMessage:Qe=z("dateField.disabledDateError"),invalidDateErrorMessage:Ze=z("dateField.invalidDateError"),useNativePicker:Rt,enableCalendar:Vt,calendarTrigger:qt,numberOfMonths:Bt,defaultServerBreakpoint:It,sm:Tt,md:jt,lg:St,xl:Lt,xxl:$t,...Pe}=P,f=Ye&&l==="single",we=me.default(P.defaultServerBreakpoint),F=me.isBreakpointBelow(we,"md"),[et,g]=a.useState(j??Y),[b,V]=a.useState(!1),[te,Ne]=a.useState(!1),[tt,Ee]=a.useState(L??O),[re,_]=a.useState(""),[Oe,m]=a.useState(!1),[Re,ae]=a.useState(!1),y=h&&!f&&!R&&(ee===!0||typeof ee=="string"&&me.isBreakpointBelow(we,ee)),Ve=F&&!y&&typeof X=="number"&&X>1?1:X,{current:u}=a.useRef("selected"in P),s=u?j:et,ie=a.useRef(null),qe=a.useRef(null),rt=a.useCallback(e=>{ie.current=e,typeof w=="function"?w(e):w&&(w.current=e)},[w]),at=e=>{if(!e)return"";const t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),o=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${o}`},it=f&&s instanceof Date?at(s):"",ne=a.useCallback((e,t)=>e instanceof Date?e:Array.isArray(e)&&e.length>0?[...e].sort((r,o)=>r.getTime()-o.getTime())[0]:e&&typeof e=="object"&&"from"in e&&e.from instanceof Date?e.from:e&&typeof e=="object"&&"to"in e&&e.to instanceof Date?e.to:t??new Date,[]),[nt,se]=a.useState(()=>ne(s,H));a.useEffect(()=>{b||se(ne(s,H))},[s,H,b,ne]),a.useEffect(()=>{b&&Ee(L??O)},[b,O,L]),a.useEffect(()=>{u&&g(j)},[j,u]);const x=a.useMemo(()=>new Intl.DateTimeFormat($,{day:"2-digit",month:"2-digit",year:"numeric"}),[$]),M=a.useCallback(e=>{if(!e)return"";if(e instanceof Date)return x.format(e);if(Array.isArray(e))return e.map(t=>x.format(t)).join(", ");if(e.from){const t=x.format(e.from);return e.to?`${t} – ${x.format(e.to)}`:t}return""},[x]),oe=Xe??l==="single",Be=l==="multiple"&&Array.isArray(s)?s.map((e,t)=>({id:t,label:c?c(e):M(e),date:e})):[],U=a.useMemo(()=>{const e=[];return N&&(Array.isArray(N)?e.push(...N):e.push(N)),E&&(Array.isArray(E)?e.push(...E):e.push(E)),J&&e.push({before:J}),K&&e.push({after:K}),Fe&&e.push({before:new Date}),ke&&e.push({after:new Date}),Q&&e.push(t=>Q(t)),Z&&e.push(t=>Z(t)),e},[N,E,J,K,Fe,ke,Q,Z]),k=a.useCallback(e=>Ot.dateMatchModifiers(e,U),[U]),st=(e,t,r,o)=>{const d=l==="range"?v.resolveRangeSelection(e,s,t):e;if(m(!1),u||g(d),i==null||i(d,t,r,o),d){const C=c?c(d):M(d);_(C)}else _("");oe&&V(!1)},ot=e=>{if(k(e))return;const t=l==="range"?{from:e,to:void 0}:l==="multiple"?[...Array.isArray(s)?s:[],e]:e;m(!1),u||g(t),i==null||i(t,e,{},{});const r=c?c(t):M(t);_(r),oe&&V(!1)},lt=a.useMemo(()=>{const e=v.getLocaleDateParts(x),t=new RegExp(`^${v.buildDateRegexSource(e)}$`),{fieldOrder:r}=e;return o=>{const d=o.match(t);if(!d)return;const C={};r.forEach((Mt,Ct)=>{C[Mt]=Number(d[Ct+1])});const{day:ue,month:ce,year:fe}=C;if(ue===void 0||ce===void 0||fe===void 0)return;const B=new Date(fe,ce-1,ue);if(!(isNaN(B.getTime())||B.getFullYear()!==fe||B.getMonth()!==ce-1||B.getDate()!==ue))return B}},[x]),Ie=e=>(Ge??(l==="single"?lt:()=>{}))(e),Te=e=>l==="single"&&e instanceof Date||l==="multiple"&&Array.isArray(e)||l==="range"&&!!e&&!Array.isArray(e)&&"from"in e,dt=e=>{if(_(e),ae(!1),e.trim()===""){m(!1),s!==void 0&&(u||g(void 0),i==null||i(void 0,void 0,{},{}));return}const t=Ie(e);if(!Te(t)){m(!1);return}const o=t&&!Array.isArray(t)&&"from"in t?t:null;if(t instanceof Date&&k(t)||Array.isArray(t)&&t.some(C=>C instanceof Date&&k(C))||!!o&&(o.from&&k(o.from)||o.to&&k(o.to))){m(!0);return}m(!1),u||g(t),i==null||i(t,t,{},{}),t instanceof Date&&se(t),oe&&V(!1)},ut=()=>{if(re.trim()===""){ae(!1);return}ae(!Te(Ie(re)))};a.useEffect(()=>{if(u){const e=c?c(s):M(s);_(e)}},[s,u,c,M]),a.useEffect(()=>{if(!u&&Y){const e=c?c(Y):M(Y);_(e)}},[]);const ct=A.useFloating({open:b,onOpenChange:V,placement:T==="input"?"bottom-start":"bottom-end",middleware:[G.offset(v.CALENDAR_POPOVER_OFFSET),G.flip(),G.shift({padding:v.CALENDAR_POPOVER_PADDING}),G.size({padding:v.CALENDAR_POPOVER_PADDING,apply({availableWidth:e,elements:t}){const r=t.floating;if(r.style.width="",r.style.maxWidth="",r.style.overflowX="",F)return;r.style.width="max-content",r.getBoundingClientRect().width>e&&(r.style.width="min-content",r.style.maxWidth=`${e}px`)}})],whileElementsMounted:Et.autoUpdate}),{refs:q,context:W,x:ft,y:mt,strategy:pt}=ct,ht=A.useClick(W),je=A.useInteractions([...h&&!f&&T==="input"&&!y?[ht]:[],A.useDismiss(W,{outsidePress:e=>{const t=e.target;return!(t!=null&&t.closest('[role="menu"], [role="listbox"]'))}}),A.useRole(W,{role:"dialog"})]);a.useEffect(()=>{var t,r;const e=l==="multiple"?((t=qe.current)==null?void 0:t.wrapper)??null:((r=ie.current)==null?void 0:r.input)??null;q.setPositionReference(e??q.reference.current)},[l,b,q]);const gt=()=>{var t;const e=(t=ie.current)==null?void 0:t.input;if(e){if(typeof e.showPicker=="function")try{e.showPicker();return}catch{}e.focus()}},le=()=>{!h||R||(f?gt():y?Ne(!0):V(e=>!e))},bt=e=>{if(m(!1),u||g(e),i==null||i(e,e,{},{}),e){const t=c?c(e):M(e);_(t)}else _("")},yt=e=>{if(!e){m(!1),u||g(void 0),i==null||i(void 0,void 0,{},{});return}const[t,r,o]=e.split("-").map(Number);if(!t||!r||!o)return;const d=new Date(t,r-1,o);if(!Number.isNaN(d.getTime())){if(k(d)){m(!0);return}m(!1),u||g(d),i==null||i(d,d,{},{})}},Dt=je.getReferenceProps(y&&T==="input"?{onClick:()=>le()}:void 0),{role:Ht,"aria-expanded":Yt,"aria-haspopup":Ut,"aria-controls":_t,...xt}=Dt,Se=y?void 0:_t,de=z("dateField.openCalendar"),Le={"aria-label":de,"aria-expanded":y?te:b,"aria-haspopup":"dialog","aria-controls":Se};return p.jsxs(p.Fragment,{children:[p.jsx("div",{className:I.default(D.default["tedi-date-field__container"],We),...xt,ref:q.setReference,children:l==="multiple"?p.jsx(Ft.MultiValueField,{...n,ref:qe,id:he,label:ge,tagsDirection:ze,values:Be.map(e=>e.label),icon:"calendar_today",onIconClick:le,iconButtonProps:h?Le:{"aria-label":de},isClearable:pe,required:S,onChange:e=>{if(!Array.isArray(s))return;const t=Be.filter(r=>e.includes(r.label)).map(r=>r.date);u||g(t),i==null||i(t,{},{},{})},className:I.default(D.default["tedi-date-field__textfield"],{[D.default["tedi-date-field__icon--disabled"]]:!h||R})}):p.jsx(kt.TextField,{...n,ref:rt,id:he,label:ge,readOnly:R,value:f?it:re,placeholder:Ue,icon:"calendar_today",isClearable:pe,onIconClick:le,iconButtonProps:h&&!f?Le:{"aria-label":de},onChange:e=>f?yt(e):dt(e),onBlur:e=>{var t;f||ut(),(t=n==null?void 0:n.onBlur)==null||t.call(n,e)},required:S,invalid:Oe||Re||(n==null?void 0:n.invalid),helper:(()=>{const e=n==null?void 0:n.helper,t=Oe?Qe:Re?Ze:null,r=t?{text:t,type:"error"}:null;return r?e?Array.isArray(e)?[...e,r]:[e,r]:r:e})(),className:I.default(D.default["tedi-date-field__textfield"],{[D.default["tedi-date-field__textfield--disabled"]]:n==null?void 0:n.disabled,[D.default["tedi-date-field__icon--disabled"]]:!h||R}),input:{...n==null?void 0:n.input,...f&&{type:"date"},...h&&!f&&T==="input"?{role:"combobox","aria-haspopup":"dialog","aria-expanded":y?te:b,"aria-controls":Se}:{}}})}),y&&p.jsx(vt.DatePickerModal,{open:te,onOpenChange:Ne,value:s,onConfirm:bt,mode:l,numberOfMonths:Ve,locale:Ce,localeCode:$,showOutsideDays:be,disabledMatchers:U,required:S,availableDays:ve,footer:Ae,monthYearSelectType:ye,minYear:De,maxYear:_e,dayStatus:xe,showNavigation:Me,selectionLevel:O,initialView:L,initialMonth:H,modalProps:Je,...Pe,title:Ke}),h&&!f&&!y&&p.jsx(A.FloatingPortal,{children:b&&p.jsx(A.FloatingFocusManager,{context:W,modal:!1,initialFocus:-1,children:p.jsx("div",{ref:q.setFloating,className:I.default({[D.default["tedi-date-field__calendar-popover--fullwidth"]]:F}),...je.getFloatingProps({style:{position:pt,top:mt??0,left:F?0:ft??0,right:F?0:void 0}}),children:p.jsx(At.Calendar,{...Pe,numberOfMonths:Ve,view:tt,selectionLevel:O,currentMonth:nt,setCurrentMonth:se,setView:Ee,mode:l,value:s,locale:Ce,localeCode:$,showOutsideDays:be,disabledMatchers:U,required:S,availableDays:ve,footer:Ae,monthYearSelectType:ye,minYear:De,maxYear:_e,dayStatus:xe,showNavigation:Me,handleSelect:st,applyValue:ot,className:I.default(D.default["tedi-date-field__calendar"],{[D.default["tedi-date-field__calendar--fullwidth"]]:F})})})})})]})});$e.displayName="DateField";exports.DateField=$e;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react/jsx-runtime"),A=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),I=require("../../../../../external/classnames/index.cjs.js"),a=require("react"),At=require("../../content/calendar/calendar.cjs.js"),Ft=require("../multi-value-field/multi-value-field.cjs.js"),kt=require("../textfield/textfield.cjs.js"),D=require("./date-field.module.scss.cjs.js"),v=require("./date-field-helpers.cjs.js"),vt=require("./date-picker-modal/date-picker-modal.cjs.js"),Pt=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),wt=require("../../../providers/label-provider/use-labels.cjs.js"),Nt=require("../../../../../external/react-day-picker/dist/esm/locale/et.cjs.js"),pe=require("../../../helpers/hooks/use-breakpoint.cjs.js"),Et=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),z=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),Ot=require("../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs.js"),He=a.forwardRef((P,w)=>{const{getCurrentBreakpointProps:Ye}=Pt.useBreakpointProps(P.defaultServerBreakpoint),{getLabel:X}=wt.useLabels(),{useNativePicker:Ue=!1,enableCalendar:g=!0,calendarTrigger:T="button",numberOfMonths:J,clearable:ge=!0}=Ye(P),{id:he,mode:s="single",label:be,selected:j,onSelect:i,disabled:N,disabledMatchers:E,placeholder:We,className:Ge,formatDate:c,required:S,showOutsideDays:ye=!0,parseDate:K,monthYearSelectType:De,minYear:_e,maxYear:xe,dayStatus:Me,tagsDirection:ze,showNavigation:Ce=!0,selectionLevel:O="days",initialView:L,locale:Ae=Nt.et,localeCode:$="et-EE",initialMonth:H,closeOnSelect:Xe,footer:Fe,defaultValue:Y,minDate:Q,maxDate:Z,disablePast:ke,disableFuture:ve,shouldDisableMonth:ee,shouldDisableYear:te,readOnly:R,availableDays:Pe,inputProps:n,modal:re=!1,modalProps:Je,modalTitle:Ke,disabledDateErrorMessage:Qe=X("dateField.disabledDateError"),invalidDateErrorMessage:Ze=X("dateField.invalidDateError"),useNativePicker:Rt,enableCalendar:Vt,calendarTrigger:qt,numberOfMonths:Bt,defaultServerBreakpoint:It,sm:Tt,md:jt,lg:St,xl:Lt,xxl:$t,...we}=P,f=Ue&&s==="single",Ne=pe.default(P.defaultServerBreakpoint),F=pe.isBreakpointBelow(Ne,"md"),[et,h]=a.useState(j??Y),[b,V]=a.useState(!1),[ae,Ee]=a.useState(!1),[tt,Oe]=a.useState(L??O),[ie,_]=a.useState(""),[Re,m]=a.useState(!1),[Ve,U]=a.useState(!1),y=g&&!f&&!R&&(re===!0||typeof re=="string"&&pe.isBreakpointBelow(Ne,re)),qe=F&&!y&&typeof J=="number"&&J>1?1:J,{current:u}=a.useRef("selected"in P),o=u?j:et,ne=a.useRef(null),Be=a.useRef(null),rt=a.useCallback(e=>{ne.current=e,typeof w=="function"?w(e):w&&(w.current=e)},[w]),at=e=>{if(!e)return"";const t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),l=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${l}`},it=f&&o instanceof Date?at(o):"",se=a.useCallback((e,t)=>e instanceof Date?e:Array.isArray(e)&&e.length>0?[...e].sort((r,l)=>r.getTime()-l.getTime())[0]:e&&typeof e=="object"&&"from"in e&&e.from instanceof Date?e.from:e&&typeof e=="object"&&"to"in e&&e.to instanceof Date?e.to:t??new Date,[]),[nt,oe]=a.useState(()=>se(o,H));a.useEffect(()=>{b||oe(se(o,H))},[o,H,b,se]),a.useEffect(()=>{b&&Oe(L??O)},[b,O,L]),a.useEffect(()=>{u&&h(j)},[j,u]);const x=a.useMemo(()=>new Intl.DateTimeFormat($,{day:"2-digit",month:"2-digit",year:"numeric"}),[$]),M=a.useCallback(e=>{if(!e)return"";if(e instanceof Date)return x.format(e);if(Array.isArray(e))return e.map(t=>x.format(t)).join(", ");if(e.from){const t=x.format(e.from);return e.to?`${t} – ${x.format(e.to)}`:t}return""},[x]),le=Xe??s==="single",Ie=s==="multiple"&&Array.isArray(o)?o.map((e,t)=>({id:t,label:c?c(e):M(e),date:e})):[],W=a.useMemo(()=>{const e=[];return N&&(Array.isArray(N)?e.push(...N):e.push(N)),E&&(Array.isArray(E)?e.push(...E):e.push(E)),Q&&e.push({before:Q}),Z&&e.push({after:Z}),ke&&e.push({before:new Date}),ve&&e.push({after:new Date}),ee&&e.push(t=>ee(t)),te&&e.push(t=>te(t)),e},[N,E,Q,Z,ke,ve,ee,te]),k=a.useCallback(e=>Ot.dateMatchModifiers(e,W),[W]),st=(e,t,r,l)=>{const d=s==="range"?v.resolveRangeSelection(e,o,t):e;if(m(!1),u||h(d),i==null||i(d,t,r,l),d){const C=c?c(d):M(d);_(C)}else _("");le&&V(!1)},ot=e=>{if(k(e))return;const t=s==="range"?{from:e,to:void 0}:s==="multiple"?[...Array.isArray(o)?o:[],e]:e;m(!1),u||h(t),i==null||i(t,e,{},{});const r=c?c(t):M(t);_(r),le&&V(!1)},lt=a.useMemo(()=>{const e=v.getLocaleDateParts(x),t=new RegExp(`^${v.buildDateRegexSource(e)}$`),{fieldOrder:r}=e;return l=>{const d=l.match(t);if(!d)return;const C={};r.forEach((Mt,Ct)=>{C[Mt]=Number(d[Ct+1])});const{day:ce,month:fe,year:me}=C;if(ce===void 0||fe===void 0||me===void 0)return;const B=new Date(me,fe-1,ce);if(!(isNaN(B.getTime())||B.getFullYear()!==me||B.getMonth()!==fe-1||B.getDate()!==ce))return B}},[x]),Te=e=>(K??(s==="single"?lt:()=>{}))(e),je=e=>s==="single"&&e instanceof Date||s==="multiple"&&Array.isArray(e)||s==="range"&&!!e&&!Array.isArray(e)&&"from"in e,dt=e=>{if(_(e),U(!1),e.trim()===""){m(!1),o!==void 0&&(u||h(void 0),i==null||i(void 0,void 0,{},{}));return}const t=Te(e);if(!je(t)){m(!1);return}const l=t&&!Array.isArray(t)&&"from"in t?t:null;if(t instanceof Date&&k(t)||Array.isArray(t)&&t.some(C=>C instanceof Date&&k(C))||!!l&&(l.from&&k(l.from)||l.to&&k(l.to))){m(!0);return}m(!1),u||h(t),i==null||i(t,t,{},{}),t instanceof Date&&oe(t),le&&V(!1)},ut=()=>{if(ie.trim()===""){U(!1);return}if(!K&&s!=="single"){U(!1);return}U(!je(Te(ie)))};a.useEffect(()=>{if(u){const e=c?c(o):M(o);_(e)}},[o,u,c,M]),a.useEffect(()=>{if(!u&&Y){const e=c?c(Y):M(Y);_(e)}},[]);const ct=A.useFloating({open:b,onOpenChange:V,placement:T==="input"?"bottom-start":"bottom-end",middleware:[z.offset(v.CALENDAR_POPOVER_OFFSET),z.flip(),z.shift({padding:v.CALENDAR_POPOVER_PADDING}),z.size({padding:v.CALENDAR_POPOVER_PADDING,apply({availableWidth:e,elements:t}){const r=t.floating;if(r.style.width="",r.style.maxWidth="",r.style.overflowX="",F)return;r.style.width="max-content",r.getBoundingClientRect().width>e&&(r.style.width="min-content",r.style.maxWidth=`${e}px`)}})],whileElementsMounted:Et.autoUpdate}),{refs:q,context:G,x:ft,y:mt,strategy:pt}=ct,gt=A.useClick(G),Se=A.useInteractions([...g&&!f&&T==="input"&&!y?[gt]:[],A.useDismiss(G,{outsidePress:e=>{const t=e.target;return!(t!=null&&t.closest('[role="menu"], [role="listbox"]'))}}),A.useRole(G,{role:"dialog"})]);a.useEffect(()=>{var t,r;const e=s==="multiple"?((t=Be.current)==null?void 0:t.wrapper)??null:((r=ne.current)==null?void 0:r.input)??null;q.setPositionReference(e??q.reference.current)},[s,b,q]);const ht=()=>{var t;const e=(t=ne.current)==null?void 0:t.input;if(e){if(typeof e.showPicker=="function")try{e.showPicker();return}catch{}e.focus()}},de=()=>{!g||R||(f?ht():y?Ee(!0):V(e=>!e))},bt=e=>{if(m(!1),u||h(e),i==null||i(e,e,{},{}),e){const t=c?c(e):M(e);_(t)}else _("")},yt=e=>{if(!e){m(!1),u||h(void 0),i==null||i(void 0,void 0,{},{});return}const[t,r,l]=e.split("-").map(Number);if(!t||!r||!l)return;const d=new Date(t,r-1,l);if(!Number.isNaN(d.getTime())){if(k(d)){m(!0);return}m(!1),u||h(d),i==null||i(d,d,{},{})}},Dt=Se.getReferenceProps(y&&T==="input"?{onClick:()=>de()}:void 0),{role:Ht,"aria-expanded":Yt,"aria-haspopup":Ut,"aria-controls":_t,...xt}=Dt,Le=y?void 0:_t,ue=X("dateField.openCalendar"),$e={"aria-label":ue,"aria-expanded":y?ae:b,"aria-haspopup":"dialog","aria-controls":Le};return p.jsxs(p.Fragment,{children:[p.jsx("div",{className:I.default(D.default["tedi-date-field__container"],Ge),...xt,ref:q.setReference,children:s==="multiple"?p.jsx(Ft.MultiValueField,{...n,ref:Be,id:he,label:be,tagsDirection:ze,values:Ie.map(e=>e.label),icon:"calendar_today",onIconClick:de,iconButtonProps:g?$e:{"aria-label":ue},isClearable:ge,required:S,onChange:e=>{if(!Array.isArray(o))return;const t=Ie.filter(r=>e.includes(r.label)).map(r=>r.date);u||h(t),i==null||i(t,{},{},{})},className:I.default(D.default["tedi-date-field__textfield"],{[D.default["tedi-date-field__icon--disabled"]]:!g||R})}):p.jsx(kt.TextField,{...n,ref:rt,id:he,label:be,readOnly:R,value:f?it:ie,placeholder:We,icon:"calendar_today",isClearable:ge,onIconClick:de,iconButtonProps:g&&!f?$e:{"aria-label":ue},onChange:e=>f?yt(e):dt(e),onBlur:e=>{var t;f||ut(),(t=n==null?void 0:n.onBlur)==null||t.call(n,e)},required:S,invalid:Re||Ve||(n==null?void 0:n.invalid),helper:(()=>{const e=n==null?void 0:n.helper,t=Re?Qe:Ve?Ze:null,r=t?{text:t,type:"error"}:null;return r?e?Array.isArray(e)?[...e,r]:[e,r]:r:e})(),className:I.default(D.default["tedi-date-field__textfield"],{[D.default["tedi-date-field__textfield--disabled"]]:n==null?void 0:n.disabled,[D.default["tedi-date-field__icon--disabled"]]:!g||R}),input:{...n==null?void 0:n.input,...!K&&s!=="single"&&{readOnly:!0},...f&&{type:"date"},...g&&!f&&T==="input"?{role:"combobox","aria-haspopup":"dialog","aria-expanded":y?ae:b,"aria-controls":Le}:{}}})}),y&&p.jsx(vt.DatePickerModal,{open:ae,onOpenChange:Ee,value:o,onConfirm:bt,mode:s,numberOfMonths:qe,locale:Ae,localeCode:$,showOutsideDays:ye,disabledMatchers:W,required:S,availableDays:Pe,footer:Fe,monthYearSelectType:De,minYear:_e,maxYear:xe,dayStatus:Me,showNavigation:Ce,selectionLevel:O,initialView:L,initialMonth:H,modalProps:Je,...we,title:Ke}),g&&!f&&!y&&p.jsx(A.FloatingPortal,{children:b&&p.jsx(A.FloatingFocusManager,{context:G,modal:!1,initialFocus:-1,children:p.jsx("div",{ref:q.setFloating,className:I.default({[D.default["tedi-date-field__calendar-popover--fullwidth"]]:F}),...Se.getFloatingProps({style:{position:pt,top:mt??0,left:F?0:ft??0,right:F?0:void 0}}),children:p.jsx(At.Calendar,{...we,numberOfMonths:qe,view:tt,selectionLevel:O,currentMonth:nt,setCurrentMonth:oe,setView:Oe,mode:s,value:o,locale:Ae,localeCode:$,showOutsideDays:ye,disabledMatchers:W,required:S,availableDays:Pe,footer:Fe,monthYearSelectType:De,minYear:_e,maxYear:xe,dayStatus:Me,showNavigation:Ce,handleSelect:st,applyValue:ot,className:I.default(D.default["tedi-date-field__calendar"],{[D.default["tedi-date-field__calendar--fullwidth"]]:F})})})})})]})});He.displayName="DateField";exports.DateField=He;
@@ -116,7 +116,7 @@ export interface DateFieldProps extends BreakpointSupport<DateFieldBreakpointPro
116
116
  showOutsideDays?: boolean;
117
117
  /**
118
118
  * Custom date parsing function for user input. Receives the input string and should return a `Date`, an array of `Date`s, a `DateRange`, or `undefined` if the input is invalid or cleared.
119
- * If not provided, the component will not allow manual input and will rely solely on the calendar picker for date selection.
119
+ * If not provided, `mode="single"` falls back to a built-in `dd.MM.yyyy` parser and stays typeable. `mode="multiple"` and `mode="range"` cannot be parsed automatically, so their input is read-only and dates are selected via the calendar only.
120
120
  */
121
121
  parseDate?: (value: string) => Date | Date[] | DateRange | undefined;
122
122
  /**