@tedi-design-system/react 17.2.0-rc.1 → 18.0.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 (199) hide show
  1. package/bundle-stats.html +1 -1
  2. package/external/@floating-ui/core/dist/floating-ui.core.cjs.js +1 -1
  3. package/external/@floating-ui/core/dist/floating-ui.core.es.js +275 -271
  4. package/external/@floating-ui/dom/dist/floating-ui.dom.cjs.js +1 -1
  5. package/external/@floating-ui/dom/dist/floating-ui.dom.es.js +189 -188
  6. package/external/@floating-ui/react/dist/floating-ui.react.cjs.js +1 -1
  7. package/external/@floating-ui/react/dist/floating-ui.react.es.js +1419 -1538
  8. package/external/@floating-ui/react/dist/floating-ui.react.utils.cjs.js +1 -1
  9. package/external/@floating-ui/react/dist/floating-ui.react.utils.es.js +348 -81
  10. package/external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js +1 -1
  11. package/external/@floating-ui/react-dom/dist/floating-ui.react-dom.es.js +113 -93
  12. package/external/@floating-ui/utils/dist/floating-ui.utils.cjs.js +1 -1
  13. package/external/@floating-ui/utils/dist/floating-ui.utils.dom.cjs.js +1 -1
  14. package/external/@floating-ui/utils/dist/floating-ui.utils.dom.es.js +97 -97
  15. package/external/@floating-ui/utils/dist/floating-ui.utils.es.js +66 -68
  16. package/external/lodash-es/_baseUnset.cjs.js +1 -1
  17. package/external/lodash-es/_baseUnset.es.js +12 -19
  18. package/external/tabbable/dist/index.esm.cjs.js +1 -1
  19. package/external/tabbable/dist/index.esm.es.js +72 -63
  20. package/index.css +1 -1
  21. package/package.json +4 -4
  22. package/src/community/components/form/pickers/calendar/calendar.d.ts +6 -0
  23. package/src/community/components/form/pickers/datepicker/datepicker.d.ts +6 -0
  24. package/src/community/components/form/pickers/datetimepicker/datetimepicker.d.ts +6 -0
  25. package/src/community/components/form/pickers/timepicker/timepicker.d.ts +6 -0
  26. package/src/community/components/modal/modal-closer.d.ts +6 -0
  27. package/src/community/components/modal/modal-provider.d.ts +6 -0
  28. package/src/community/components/modal/modal-trigger.d.ts +6 -0
  29. package/src/community/components/modal/modal.d.ts +6 -0
  30. package/src/tedi/components/buttons/button-group/button-group.cjs.js +1 -1
  31. package/src/tedi/components/buttons/button-group/button-group.es.js +4 -4
  32. package/src/tedi/components/buttons/collapse/collapse.cjs.js +1 -1
  33. package/src/tedi/components/buttons/collapse/collapse.d.ts +23 -0
  34. package/src/tedi/components/buttons/collapse/collapse.es.js +62 -59
  35. package/src/tedi/components/buttons/collapse/collapse.module.scss.cjs.js +1 -1
  36. package/src/tedi/components/buttons/collapse/collapse.module.scss.es.js +2 -1
  37. package/src/tedi/components/content/calendar/calendar-grid.cjs.js +1 -1
  38. package/src/tedi/components/content/calendar/calendar-grid.es.js +7 -6
  39. package/src/tedi/components/content/calendar/calendar.cjs.js +1 -1
  40. package/src/tedi/components/content/calendar/calendar.d.ts +9 -1
  41. package/src/tedi/components/content/calendar/calendar.es.js +72 -71
  42. package/src/tedi/components/content/calendar/calendar.module.scss.cjs.js +1 -1
  43. package/src/tedi/components/content/calendar/calendar.module.scss.es.js +3 -2
  44. package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.cjs.js +1 -1
  45. package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.es.js +99 -79
  46. package/src/tedi/components/content/table/index.d.ts +6 -0
  47. package/src/tedi/components/content/table/table-columns-menu/table-columns-menu.cjs.js +1 -0
  48. package/src/tedi/components/content/table/table-columns-menu/table-columns-menu.d.ts +15 -0
  49. package/src/tedi/components/content/table/table-columns-menu/table-columns-menu.es.js +37 -0
  50. package/src/tedi/components/content/table/table-context.cjs.js +1 -0
  51. package/src/tedi/components/content/table/table-context.d.ts +3 -0
  52. package/src/tedi/components/content/table/table-context.es.js +11 -0
  53. package/src/tedi/components/content/table/table-header-button/table-header-button.cjs.js +1 -0
  54. package/src/tedi/components/content/table/table-header-button/table-header-button.d.ts +51 -0
  55. package/src/tedi/components/content/table/table-header-button/table-header-button.es.js +42 -0
  56. package/src/tedi/components/content/table/table-header-button/table-header-button.module.scss.cjs.js +1 -0
  57. package/src/tedi/components/content/table/table-header-button/table-header-button.module.scss.es.js +7 -0
  58. package/src/tedi/components/content/table/table-toolbar/table-toolbar.cjs.js +1 -0
  59. package/src/tedi/components/content/table/table-toolbar/table-toolbar.d.ts +21 -0
  60. package/src/tedi/components/content/table/table-toolbar/table-toolbar.es.js +9 -0
  61. package/src/tedi/components/content/table/table.cjs.js +1 -0
  62. package/src/tedi/components/content/table/table.d.ts +519 -0
  63. package/src/tedi/components/content/table/table.es.js +856 -0
  64. package/src/tedi/components/content/table/table.module.scss.cjs.js +1 -0
  65. package/src/tedi/components/content/table/table.module.scss.es.js +54 -0
  66. package/src/tedi/components/content/table/use-table-persistence.cjs.js +1 -0
  67. package/src/tedi/components/content/table/use-table-persistence.d.ts +13 -0
  68. package/src/tedi/components/content/table/use-table-persistence.es.js +53 -0
  69. package/src/tedi/components/filter/filter/filter-group-context.cjs.js +1 -0
  70. package/src/tedi/components/filter/filter/filter-group-context.d.ts +8 -0
  71. package/src/tedi/components/filter/filter/filter-group-context.es.js +5 -0
  72. package/src/tedi/components/filter/filter/filter-group.cjs.js +1 -0
  73. package/src/tedi/components/filter/filter/filter-group.d.ts +94 -0
  74. package/src/tedi/components/filter/filter/filter-group.es.js +64 -0
  75. package/src/tedi/components/filter/filter/filter.cjs.js +1 -0
  76. package/src/tedi/components/filter/filter/filter.d.ts +98 -0
  77. package/src/tedi/components/filter/filter/filter.es.js +236 -0
  78. package/src/tedi/components/filter/filter/filter.module.scss.cjs.js +1 -0
  79. package/src/tedi/components/filter/filter/filter.module.scss.es.js +21 -0
  80. package/src/tedi/components/filter/filter/index.d.ts +3 -0
  81. package/src/tedi/components/form/date-field/date-field-helpers.cjs.js +1 -0
  82. package/src/tedi/components/form/date-field/date-field-helpers.d.ts +66 -0
  83. package/src/tedi/components/form/date-field/date-field-helpers.es.js +28 -0
  84. package/src/tedi/components/form/date-field/date-field.cjs.js +1 -1
  85. package/src/tedi/components/form/date-field/date-field.d.ts +22 -0
  86. package/src/tedi/components/form/date-field/date-field.es.js +248 -212
  87. package/src/tedi/components/form/date-time-field/date-time-field.cjs.js +1 -0
  88. package/src/tedi/components/form/date-time-field/date-time-field.d.ts +207 -0
  89. package/src/tedi/components/form/date-time-field/date-time-field.es.js +376 -0
  90. package/src/tedi/components/form/date-time-field/date-time-field.module.scss.cjs.js +1 -0
  91. package/src/tedi/components/form/date-time-field/date-time-field.module.scss.es.js +30 -0
  92. package/src/tedi/components/form/number-field/number-field.cjs.js +1 -1
  93. package/src/tedi/components/form/number-field/number-field.d.ts +16 -3
  94. package/src/tedi/components/form/number-field/number-field.es.js +121 -97
  95. package/src/tedi/components/form/search/search.cjs.js +1 -1
  96. package/src/tedi/components/form/search/search.es.js +22 -20
  97. package/src/tedi/components/form/time-field/time-field.cjs.js +1 -1
  98. package/src/tedi/components/form/time-field/time-field.d.ts +9 -0
  99. package/src/tedi/components/form/time-field/time-field.es.js +80 -78
  100. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.cjs.js +1 -0
  101. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.d.ts +52 -0
  102. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.es.js +68 -0
  103. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.module.scss.cjs.js +1 -0
  104. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.module.scss.es.js +9 -0
  105. package/src/tedi/components/layout/mobile-nav/index.d.ts +2 -0
  106. package/src/tedi/components/layout/mobile-nav/mobile-nav.cjs.js +1 -0
  107. package/src/tedi/components/layout/mobile-nav/mobile-nav.d.ts +20 -0
  108. package/src/tedi/components/layout/{sidenav/components/sidenav-mobile/sidenav-mobile.es.js → mobile-nav/mobile-nav.es.js} +21 -20
  109. package/src/tedi/components/layout/sidenav/index.d.ts +2 -2
  110. package/src/tedi/components/layout/sidenav/sidenav.cjs.js +1 -1
  111. package/src/tedi/components/layout/sidenav/sidenav.d.ts +2 -11
  112. package/src/tedi/components/layout/sidenav/sidenav.es.js +27 -27
  113. package/src/tedi/components/layout/top-nav/components/top-nav-group/top-nav-group.cjs.js +1 -0
  114. package/src/tedi/components/layout/top-nav/components/top-nav-group/top-nav-group.d.ts +34 -0
  115. package/src/tedi/components/layout/top-nav/components/top-nav-group/top-nav-group.es.js +33 -0
  116. package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.cjs.js +1 -0
  117. package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.d.ts +66 -0
  118. package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.es.js +101 -0
  119. package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.cjs.js +1 -0
  120. package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.d.ts +11 -0
  121. package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.es.js +9 -0
  122. package/src/tedi/components/layout/top-nav/components/top-nav-subitem/top-nav-subitem.cjs.js +1 -0
  123. package/src/tedi/components/layout/top-nav/components/top-nav-subitem/top-nav-subitem.d.ts +28 -0
  124. package/src/tedi/components/layout/top-nav/components/top-nav-subitem/top-nav-subitem.es.js +30 -0
  125. package/src/tedi/components/layout/top-nav/index.d.ts +5 -0
  126. package/src/tedi/components/layout/top-nav/top-nav-context.cjs.js +1 -0
  127. package/src/tedi/components/layout/top-nav/top-nav-context.d.ts +11 -0
  128. package/src/tedi/components/layout/top-nav/top-nav-context.es.js +6 -0
  129. package/src/tedi/components/layout/top-nav/top-nav.cjs.js +1 -0
  130. package/src/tedi/components/layout/top-nav/top-nav.d.ts +91 -0
  131. package/src/tedi/components/layout/top-nav/top-nav.es.js +171 -0
  132. package/src/tedi/components/layout/top-nav/top-nav.module.scss.cjs.js +1 -0
  133. package/src/tedi/components/layout/top-nav/top-nav.module.scss.es.js +28 -0
  134. package/src/tedi/components/navigation/pagination/index.d.ts +1 -0
  135. package/src/tedi/components/navigation/pagination/pagination-mobile-modal/pagination-mobile-modal.cjs.js +1 -0
  136. package/src/tedi/components/navigation/pagination/pagination-mobile-modal/pagination-mobile-modal.d.ts +36 -0
  137. package/src/tedi/components/navigation/pagination/pagination-mobile-modal/pagination-mobile-modal.es.js +65 -0
  138. package/src/tedi/components/navigation/pagination/pagination-mobile-modal/pagination-mobile-modal.module.scss.cjs.js +1 -0
  139. package/src/tedi/components/navigation/pagination/pagination-mobile-modal/pagination-mobile-modal.module.scss.es.js +13 -0
  140. package/src/tedi/components/navigation/pagination/pagination.cjs.js +1 -1
  141. package/src/tedi/components/navigation/pagination/pagination.d.ts +115 -13
  142. package/src/tedi/components/navigation/pagination/pagination.es.js +244 -96
  143. package/src/tedi/components/navigation/pagination/pagination.module.scss.cjs.js +1 -1
  144. package/src/tedi/components/navigation/pagination/pagination.module.scss.es.js +18 -1
  145. package/src/tedi/components/notifications/alert/alert.cjs.js +1 -1
  146. package/src/tedi/components/notifications/alert/alert.d.ts +14 -1
  147. package/src/tedi/components/notifications/alert/alert.es.js +45 -42
  148. package/src/tedi/components/notifications/alert/alert.module.scss.cjs.js +1 -1
  149. package/src/tedi/components/notifications/alert/alert.module.scss.es.js +2 -1
  150. package/src/tedi/components/overlays/dropdown/dropdown.es.js +0 -3
  151. package/src/tedi/components/overlays/modal/index.d.ts +8 -0
  152. package/src/tedi/components/overlays/modal/modal-body/modal-body.cjs.js +1 -0
  153. package/src/tedi/components/overlays/modal/modal-body/modal-body.d.ts +22 -0
  154. package/src/tedi/components/overlays/modal/modal-body/modal-body.es.js +21 -0
  155. package/src/tedi/components/overlays/modal/modal-closer/modal-closer.cjs.js +1 -0
  156. package/src/tedi/components/overlays/modal/modal-closer/modal-closer.d.ts +15 -0
  157. package/src/tedi/components/overlays/modal/modal-closer/modal-closer.es.js +16 -0
  158. package/src/tedi/components/overlays/modal/modal-content/modal-content.cjs.js +1 -0
  159. package/src/tedi/components/overlays/modal/modal-content/modal-content.d.ts +108 -0
  160. package/src/tedi/components/overlays/modal/modal-content/modal-content.es.js +81 -0
  161. package/src/tedi/components/overlays/modal/modal-context.cjs.js +1 -0
  162. package/src/tedi/components/overlays/modal/modal-context.d.ts +59 -0
  163. package/src/tedi/components/overlays/modal/modal-context.es.js +15 -0
  164. package/src/tedi/components/overlays/modal/modal-footer/modal-footer.cjs.js +1 -0
  165. package/src/tedi/components/overlays/modal/modal-footer/modal-footer.d.ts +22 -0
  166. package/src/tedi/components/overlays/modal/modal-footer/modal-footer.es.js +25 -0
  167. package/src/tedi/components/overlays/modal/modal-header/modal-header.cjs.js +1 -0
  168. package/src/tedi/components/overlays/modal/modal-header/modal-header.d.ts +58 -0
  169. package/src/tedi/components/overlays/modal/modal-header/modal-header.es.js +25 -0
  170. package/src/tedi/components/overlays/modal/modal-trigger/modal-trigger.cjs.js +1 -0
  171. package/src/tedi/components/overlays/modal/modal-trigger/modal-trigger.d.ts +13 -0
  172. package/src/tedi/components/overlays/modal/modal-trigger/modal-trigger.es.js +14 -0
  173. package/src/tedi/components/overlays/modal/modal.cjs.js +1 -0
  174. package/src/tedi/components/overlays/modal/modal.d.ts +68 -0
  175. package/src/tedi/components/overlays/modal/modal.es.js +76 -0
  176. package/src/tedi/components/overlays/modal/modal.module.scss.cjs.js +1 -0
  177. package/src/tedi/components/overlays/modal/modal.module.scss.es.js +37 -0
  178. package/src/tedi/components/overlays/overlay/overlay-content.cjs.js +1 -1
  179. package/src/tedi/components/overlays/overlay/overlay-content.es.js +35 -32
  180. package/src/tedi/components/overlays/tooltip/tooltip.cjs.js +1 -1
  181. package/src/tedi/components/overlays/tooltip/tooltip.es.js +14 -6
  182. package/src/tedi/helpers/hooks/use-breakpoint.cjs.js +1 -1
  183. package/src/tedi/helpers/hooks/use-breakpoint.d.ts +7 -0
  184. package/src/tedi/helpers/hooks/use-breakpoint.es.js +22 -14
  185. package/src/tedi/helpers/hooks/use-sidenav-state.d.ts +1 -1
  186. package/src/tedi/index.d.ts +6 -0
  187. package/src/tedi/providers/label-provider/label-provider.d.ts +5 -0
  188. package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
  189. package/src/tedi/providers/label-provider/labels-map.d.ts +174 -6
  190. package/src/tedi/providers/label-provider/labels-map.es.js +234 -57
  191. package/tedi.cjs.js +1 -1
  192. package/tedi.es.js +257 -202
  193. package/src/tedi/components/layout/sidenav/components/sidenav-mobile/sidenav-mobile.cjs.js +0 -1
  194. package/src/tedi/components/layout/sidenav/components/sidenav-mobile/sidenav-mobile.d.ts +0 -14
  195. package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.cjs.js +0 -1
  196. package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.d.ts +0 -31
  197. package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.es.js +0 -48
  198. package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.module.scss.cjs.js +0 -1
  199. package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.module.scss.es.js +0 -8
@@ -0,0 +1,236 @@
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";
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), {
19
+ text: w,
20
+ value: k,
21
+ disabled: ve = !1,
22
+ className: be,
23
+ id: K,
24
+ selected: y,
25
+ defaultSelected: Q = !1,
26
+ onSelectedChange: I,
27
+ selectedValue: L,
28
+ defaultSelectedValue: ge,
29
+ onSelectedValueChange: d,
30
+ multiselect: U = !1,
31
+ selectedValues: u,
32
+ defaultSelectedValues: Se,
33
+ onSelectedValuesChange: s,
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(
52
+ "[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
+ 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
+ var e;
56
+ 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();
63
+ 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(
69
+ (e) => {
70
+ Ie.current = e, typeof v == "function" ? v(e) : v && (v.current = e);
71
+ },
72
+ [v]
73
+ ), Ae = C(() => {
74
+ if (F) {
75
+ n.selectFilter(k);
76
+ return;
77
+ }
78
+ const e = !T;
79
+ y === void 0 && $e(e), I == null || I(e);
80
+ }, [F, n, k, T, y, I]), Re = C(
81
+ (e) => {
82
+ const l = h === e ? "" : e;
83
+ L === void 0 && ie(l), d == null || d(l);
84
+ },
85
+ [h, L, d]
86
+ ), Me = C(
87
+ (e) => {
88
+ const l = r.includes(e) ? r.filter((o) => o !== e) : [...r, e];
89
+ u === void 0 && j(l), s == null || s(l);
90
+ },
91
+ [r, u, s]
92
+ ), Ge = C(() => {
93
+ let e;
94
+ if (q) {
95
+ const l = new Set(a.map((o) => o.value));
96
+ e = r.filter((o) => !l.has(o));
97
+ } else {
98
+ const l = new Set(r);
99
+ a.forEach((o) => l.add(o.value)), e = [...l];
100
+ }
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);
104
+ }, [
105
+ $,
106
+ P,
107
+ m,
108
+ u,
109
+ s,
110
+ f,
111
+ L,
112
+ 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(
116
+ "span",
117
+ {
118
+ className: ue(i["tedi-filter__prepend"], {
119
+ [i["tedi-filter__prepend--hidden"]]: De
120
+ }),
121
+ children: A
122
+ }
123
+ ),
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) }),
127
+ b && /* @__PURE__ */ t(
128
+ fe,
129
+ {
130
+ className: i["tedi-filter__icon"],
131
+ name: "arrow_drop_down",
132
+ filled: !0,
133
+ size: he(M),
134
+ color: "inherit"
135
+ }
136
+ )
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,
145
+ {
146
+ ref: ze,
147
+ id: K,
148
+ 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,
155
+ noStyle: !0,
156
+ children: Ze
157
+ }
158
+ );
159
+ 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,
165
+ {
166
+ id: `${B}-option-${l}`,
167
+ label: e.label,
168
+ value: e.value,
169
+ checked: o,
170
+ disabled: e.disabled,
171
+ onChange: () => Me(e.value),
172
+ name: `${B}-options`
173
+ }
174
+ ) }, e.value) : /* @__PURE__ */ t(
175
+ c.Item,
176
+ {
177
+ index: de,
178
+ disabled: e.disabled,
179
+ active: o,
180
+ onClick: () => Re(e.value),
181
+ children: e.label
182
+ },
183
+ e.value
184
+ );
185
+ });
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: [
191
+ /* @__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 }) })
193
+ ] })
194
+ ] }) : /* @__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,
198
+ {
199
+ id: `${B}-search`,
200
+ label: ee ?? w,
201
+ hideLabel: !0,
202
+ ariaLabel: ee ?? w,
203
+ value: W,
204
+ onChange: se
205
+ }
206
+ ) }),
207
+ /* @__PURE__ */ t(c.Separator, {})
208
+ ] }),
209
+ H !== null && /* @__PURE__ */ p(g, { children: [
210
+ /* @__PURE__ */ t(c.Item, { index: H, asChild: !0, closeOnSelect: !1, children: /* @__PURE__ */ t(
211
+ me,
212
+ {
213
+ id: `${B}-select-all`,
214
+ label: ye,
215
+ value: "select-all",
216
+ checked: q,
217
+ indeterminate: Te,
218
+ onChange: Ge,
219
+ name: `${B}-select-all`
220
+ }
221
+ ) }),
222
+ /* @__PURE__ */ t(c.Separator, {})
223
+ ] }),
224
+ He(),
225
+ V && /* @__PURE__ */ p(g, { children: [
226
+ /* @__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 }) })
228
+ ] })
229
+ ] }) })
230
+ ] }) });
231
+ });
232
+ it.displayName = "Filter";
233
+ export {
234
+ it as Filter,
235
+ it as default
236
+ };
@@ -0,0 +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;
@@ -0,0 +1,21 @@
1
+ const e = {
2
+ "tedi-filter": "tedi-filter-e3f2f618",
3
+ "tedi-filter__button": "tedi-filter__button-b7abc5ed",
4
+ "tedi-filter__text": "tedi-filter__text-2c4eaab6",
5
+ "tedi-filter__icon": "tedi-filter__icon-1b8e93f2",
6
+ "tedi-filter__prepend": "tedi-filter__prepend-68dc0007",
7
+ "tedi-filter__append": "tedi-filter__append-bdb27679",
8
+ "tedi-filter__prepend--hidden": "tedi-filter__prepend--hidden-5039af1e",
9
+ "tedi-filter__count": "tedi-filter__count-d72acead",
10
+ "tedi-filter--primary": "tedi-filter--primary-837108e8",
11
+ "tedi-filter--selected": "tedi-filter--selected-7273f310",
12
+ "tedi-filter--secondary": "tedi-filter--secondary-8aaf488e",
13
+ "tedi-filter--large": "tedi-filter--large-f7f46174",
14
+ "tedi-filter-group": "tedi-filter-group-9d16304d",
15
+ "tedi-filter-dropdown__custom-content": "tedi-filter-dropdown__custom-content-6e851b26",
16
+ "tedi-filter-dropdown__search": "tedi-filter-dropdown__search-dbb4e1a3",
17
+ "tedi-filter-dropdown__clear": "tedi-filter-dropdown__clear-fa4e6a11"
18
+ };
19
+ export {
20
+ e as default
21
+ };
@@ -0,0 +1,3 @@
1
+ export * from './filter';
2
+ export * from './filter-group';
3
+ export * from './filter-group-context';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=4,d=8,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(s=>{var r;return((r=e.shouldDisableMonth)==null?void 0:r.call(e,s))??!1}),e.shouldDisableYear&&a.push(s=>{var r;return((r=e.shouldDisableYear)==null?void 0:r.call(e,s))??!1}),a},D=e=>{const a=new Date(2099,11,31),s=e.formatToParts(a),r=[],o=[];for(const t of s)t.type==="day"||t.type==="month"||t.type==="year"?r.push(t.type):t.type==="literal"&&r.length>0&&o.length<2&&o.push(t.value);return{fieldOrder:r,separators:o}},f=({fieldOrder:e,separators:a})=>{const s=r=>r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.map((r,o)=>{const t=r==="year"?"\\d{4}":"\\d{2}";return`${o>0?s(a[o-1]??""):""}(${t})`}).join("")};exports.CALENDAR_POPOVER_OFFSET=l;exports.CALENDAR_POPOVER_PADDING=d;exports.buildDateRegexSource=f;exports.buildDisabledMatchers=c;exports.getLocaleDateParts=D;
@@ -0,0 +1,66 @@
1
+ import { DateRange, Matcher } from 'react-day-picker';
2
+ /**
3
+ * Floating-ui offset (in px) between the trigger input and the popover.
4
+ * Shared by `DateField` and `DateTimeField` so the popovers sit at the
5
+ * same distance from their triggers.
6
+ */
7
+ export declare const CALENDAR_POPOVER_OFFSET = 4;
8
+ /**
9
+ * Floating-ui shift / size middleware padding (in px) — keeps the popover
10
+ * away from the viewport edges by this amount when the size middleware
11
+ * caps its `maxWidth`.
12
+ */
13
+ export declare const CALENDAR_POPOVER_PADDING = 8;
14
+ export type SelectedValueLike = Date | Date[] | DateRange | undefined;
15
+ /**
16
+ * Resolves the month the calendar should start on for any selection
17
+ * shape. Used by both `DateField` (single / multiple / range Date(s)) and
18
+ * `DateTimeField` (single Date or `{from, to}` range). For arrays the
19
+ * earliest date wins; for ranges the `from` (or `to` if `from` is unset)
20
+ * wins. Falls back to the explicit `fallback` and finally `new Date()`.
21
+ */
22
+ export declare const getInitialMonth: (val: SelectedValueLike, fallback?: Date) => Date;
23
+ /**
24
+ * Configuration for the `buildDisabledMatchers` helper. All fields are
25
+ * forwarded as-is to react-day-picker. `shouldDisableMonth` /
26
+ * `shouldDisableYear` are predicates passed to `DayPicker.disabled` to
27
+ * disable a date when its month / year is "off limits".
28
+ */
29
+ export interface DisabledMatcherInputs {
30
+ disabled?: Matcher | Matcher[];
31
+ minDate?: Date;
32
+ maxDate?: Date;
33
+ disablePast?: boolean;
34
+ disableFuture?: boolean;
35
+ shouldDisableMonth?: (date: Date) => boolean;
36
+ shouldDisableYear?: (date: Date) => boolean;
37
+ }
38
+ /**
39
+ * Composes a flat `Matcher[]` array from the date-field-style constraint
40
+ * props. Returns an empty array when nothing is set, which lets the
41
+ * caller pass `matchers.length ? matchers : undefined` straight through.
42
+ */
43
+ export declare const buildDisabledMatchers: (inputs: DisabledMatcherInputs) => Matcher[];
44
+ /**
45
+ * Field order + literal separators extracted from a locale's date format,
46
+ * derived via `Intl.DateTimeFormat.formatToParts`. Used by parsers in
47
+ * `DateField` (date-only) and `DateTimeField` (date + " HH:mm") to build
48
+ * a regex that round-trips the displayed value in any locale.
49
+ */
50
+ export interface LocaleDateParts {
51
+ fieldOrder: ('day' | 'month' | 'year')[];
52
+ separators: string[];
53
+ }
54
+ /**
55
+ * Extract the date-portion field order and literal separators from a
56
+ * `dateFormatter`. The reference date `Dec 31, 2099` is used because all
57
+ * three components are unambiguously two-digit (day, month) / four-digit
58
+ * (year) values, so each `formatToParts` entry is unambiguous.
59
+ */
60
+ export declare const getLocaleDateParts: (dateFormatter: Intl.DateTimeFormat) => LocaleDateParts;
61
+ /**
62
+ * Build the date-portion of a parsing regex from the locale's field
63
+ * order and separators. Caller appends time / range separators as needed
64
+ * — DateField uses `^${datePart}$`, DateTimeField uses `^${datePart}\s+(\d{2}):(\d{2})$`.
65
+ */
66
+ export declare const buildDateRegexSource: ({ fieldOrder, separators }: LocaleDateParts) => string;
@@ -0,0 +1,28 @@
1
+ const d = 4, f = 8, h = (e) => {
2
+ 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) => {
4
+ var r;
5
+ return ((r = e.shouldDisableMonth) == null ? void 0 : r.call(e, o)) ?? !1;
6
+ }), e.shouldDisableYear && a.push((o) => {
7
+ var r;
8
+ return ((r = e.shouldDisableYear) == null ? void 0 : r.call(e, o)) ?? !1;
9
+ }), a;
10
+ }, c = (e) => {
11
+ const a = new Date(2099, 11, 31), o = e.formatToParts(a), r = [], t = [];
12
+ for (const s of o)
13
+ s.type === "day" || s.type === "month" || s.type === "year" ? r.push(s.type) : s.type === "literal" && r.length > 0 && t.length < 2 && t.push(s.value);
14
+ return { fieldOrder: r, separators: t };
15
+ }, D = ({ fieldOrder: e, separators: a }) => {
16
+ const o = (r) => r.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
17
+ return e.map((r, t) => {
18
+ const s = r === "year" ? "\\d{4}" : "\\d{2}";
19
+ return `${t > 0 ? o(a[t - 1] ?? "") : ""}(${s})`;
20
+ }).join("");
21
+ };
22
+ export {
23
+ d as CALENDAR_POPOVER_OFFSET,
24
+ f as CALENDAR_POPOVER_PADDING,
25
+ D as buildDateRegexSource,
26
+ h as buildDisabledMatchers,
27
+ c as getLocaleDateParts
28
+ };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("react/jsx-runtime"),D=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),X=require("../../../../../external/classnames/index.cjs.js"),a=require("react"),He=require("../../content/calendar/calendar.cjs.js"),Je=require("../multi-value-field/multi-value-field.cjs.js"),Ke=require("../textfield/textfield.cjs.js"),x=require("./date-field.module.scss.cjs.js"),Qe=require("../../../../../external/react-day-picker/dist/esm/locale/et.cjs.js"),Xe=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),R=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),Ze=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),ue=require("../../../helpers/hooks/use-breakpoint.cjs.js"),et=require("../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs.js"),tt=4,ce=8,de=a.forwardRef((P,F)=>{const{getCurrentBreakpointProps:fe}=Ze.useBreakpointProps(P.defaultServerBreakpoint),{useNativePicker:pe=!1,enableCalendar:c=!0,calendarTrigger:T="button",numberOfMonths:E}=fe(P),{id:Z,mode:d="single",label:ee,selected:C,onSelect:r,disabled:N,placeholder:me,className:he,formatDate:u,required:I,showOutsideDays:ge=!0,parseDate:ye,monthYearSelectType:be,selectionLevel:v="days",locale:De=Qe.et,localeCode:V="et-EE",initialMonth:$,closeOnSelect:xe,footer:_e,defaultValue:q,minDate:S,maxDate:U,disablePast:te,disableFuture:ie,shouldDisableMonth:W,shouldDisableYear:Y,readOnly:L,availableDays:Me,inputProps:h,useNativePicker:it,enableCalendar:at,calendarTrigger:rt,numberOfMonths:nt,defaultServerBreakpoint:st,sm:ot,md:lt,lg:ut,xl:ct,xxl:dt,...ke}=P,f=pe&&d==="single",Fe=ue.useBreakpoint(P.defaultServerBreakpoint),Ce=ue.isBreakpointBelow(Fe,"md")&&typeof E=="number"&&E>1?1:E,[Ne,y]=a.useState(C??q),[p,_]=a.useState(!1),[we,ae]=a.useState(v),[Ae,M]=a.useState(""),s=C!==void 0,o=s?C:Ne,re=a.useRef(null),Pe=a.useCallback(e=>{re.current=e,typeof F=="function"?F(e):F&&(F.current=e)},[F]),ve=e=>{if(!e)return"";const i=e.getFullYear(),t=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return`${i}-${t}-${n}`},qe=f&&o instanceof Date?ve(o):"",z=a.useCallback((e,i)=>e instanceof Date?e:Array.isArray(e)&&e.length>0?[...e].sort((t,n)=>t.getTime()-n.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:i??new Date,[]),[je,G]=a.useState(()=>z(o,$));a.useEffect(()=>{p||G(z(o,$))},[o,$,p,z]),a.useEffect(()=>{p&&ae(v)},[p,v]),a.useEffect(()=>{s&&y(C)},[C,s]);const b=a.useMemo(()=>new Intl.DateTimeFormat(V,{day:"2-digit",month:"2-digit",year:"numeric"}),[V]),k=a.useCallback(e=>{if(!e)return"";if(e instanceof Date)return b.format(e);if(Array.isArray(e))return e.map(i=>b.format(i)).join(", ");if(e.from){const i=b.format(e.from);return e.to?`${i} – ${b.format(e.to)}`:i}return""},[b]),H=xe??d==="single",ne=d==="multiple"&&Array.isArray(o)?o.map((e,i)=>({id:i,label:u?u(e):k(e),date:e})):[],J=a.useMemo(()=>{const e=[];return N&&(Array.isArray(N)?e.push(...N):e.push(N)),S&&e.push({before:S}),U&&e.push({after:U}),te&&e.push({before:new Date}),ie&&e.push({after:new Date}),W&&e.push(i=>W(i)),Y&&e.push(i=>Y(i)),e},[N,S,U,te,ie,W,Y]),se=a.useCallback(e=>et.dateMatchModifiers(e,J),[J]),Be=(e,i,t,n)=>{if(s||y(e),r==null||r(e,i,t,n),e){const g=u?u(e):k(e);M(g)}else M("");H&&_(!1)},Oe=e=>{if(se(e))return;s||y(e),r==null||r(e,e,{},{});const i=u?u(e):k(e);M(i),H&&_(!1)},Re=a.useMemo(()=>{const e=new Date(2099,11,31),i=b.formatToParts(e),t=[],n=[];for(const l of i)l.type==="day"||l.type==="month"||l.type==="year"?t.push(l.type):l.type==="literal"&&t.length>0&&n.length<2&&n.push(l.value);const g=l=>l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Ye=t.map((l,w)=>{const B=l==="year"?"\\d{4}":"\\d{2}";return`${w>0?g(n[w-1]??""):""}(${B})`}).join(""),Le=new RegExp(`^${Ye}$`);return l=>{const w=l.match(Le);if(!w)return;const B={};t.forEach((ze,Ge)=>{B[ze]=Number(w[Ge+1])});const{day:O,month:K,year:Q}=B;if(O===void 0||K===void 0||Q===void 0)return;const A=new Date(Q,K-1,O);if(!(isNaN(A.getTime())||A.getFullYear()!==Q||A.getMonth()!==K-1||A.getDate()!==O))return A}},[b]),Te=e=>{M(e);const t=(ye??(d==="single"?Re:()=>{}))(e);(d==="single"&&t instanceof Date||d==="multiple"&&Array.isArray(t)||d==="range"&&t&&!Array.isArray(t)&&"from"in t)&&(t instanceof Date&&se(t)||(s||y(t),r==null||r(t,t,{},{}),t instanceof Date&&G(t),H&&_(!1)))};a.useEffect(()=>{if(s){const e=u?u(o):k(o);M(e)}},[o,s,u,k]),a.useEffect(()=>{if(!s&&q){const e=u?u(q):k(q);M(e)}},[]);const Ee=D.useFloating({open:p,onOpenChange:_,placement:T==="input"?"bottom-start":"bottom-end",middleware:[R.offset(tt),R.flip(),R.shift({padding:ce}),R.size({padding:ce,apply({availableWidth:e,elements:i}){const t=i.floating;t.style.width="max-content",t.style.maxWidth="",t.getBoundingClientRect().width>e?(t.style.width="min-content",t.style.maxWidth=`${e}px`):(t.style.width="",t.style.maxWidth="")}})],whileElementsMounted:Xe.autoUpdate}),{refs:oe,context:j,x:Ie,y:Ve,strategy:$e}=Ee,Se=D.useClick(j),le=D.useInteractions([...c&&!f&&T==="input"?[Se]:[],D.useDismiss(j),D.useRole(j,{role:"dialog"})]),Ue=()=>{var i;const e=(i=re.current)==null?void 0:i.input;if(e){if(typeof e.showPicker=="function")try{e.showPicker();return}catch{}e.focus()}},We=e=>{if(!e){s||y(void 0),r==null||r(void 0,void 0,{},{});return}const[i,t,n]=e.split("-").map(Number);if(!i||!t||!n)return;const g=new Date(i,t-1,n);Number.isNaN(g.getTime())||(s||y(g),r==null||r(g,g,{},{}))};return m.jsxs(m.Fragment,{children:[m.jsx("div",{className:X.default(x.default["tedi-date-field__container"],he),...le.getReferenceProps(),ref:oe.setReference,children:d==="multiple"?m.jsx(Je.MultiValueField,{...h,id:Z,label:ee,values:ne.map(e=>e.label),icon:"calendar_today",onIconClick:()=>c&&_(e=>!e),iconButtonProps:c?{"aria-expanded":p,"aria-haspopup":"dialog"}:void 0,isClearable:!0,required:I,onChange:e=>{if(!Array.isArray(o))return;const i=ne.filter(t=>e.includes(t.label)).map(t=>t.date);s||y(i),r==null||r(i,{},{},{})},className:X.default(x.default["tedi-date-field__textfield"],{[x.default["tedi-date-field__icon--disabled"]]:!c||L})}):m.jsx(Ke.TextField,{...h,ref:Pe,id:Z,label:ee,readOnly:L,value:f?qe:Ae,placeholder:me,icon:"calendar_today",isClearable:!0,onIconClick:()=>{c&&(f?Ue():_(e=>!e))},iconButtonProps:c&&!f?{"aria-expanded":p,"aria-haspopup":"dialog"}:void 0,onChange:e=>f?We(e):Te(e),required:I,className:X.default(x.default["tedi-date-field__textfield"],{[x.default["tedi-date-field__textfield--disabled"]]:h==null?void 0:h.disabled,[x.default["tedi-date-field__icon--disabled"]]:!c||L}),input:{...h==null?void 0:h.input,...f&&{type:"date"},...c&&!f&&T==="input"?{"aria-haspopup":"dialog","aria-expanded":p}:{}}})}),c&&!f&&m.jsx(D.FloatingPortal,{children:p&&m.jsx(D.FloatingFocusManager,{context:j,modal:!1,initialFocus:-1,children:m.jsx("div",{ref:oe.setFloating,...le.getFloatingProps({style:{position:$e,top:Ve??0,left:Ie??0}}),children:m.jsx(He.Calendar,{...ke,numberOfMonths:Ce,view:we,selectionLevel:v,currentMonth:je,setCurrentMonth:G,setView:ae,mode:d,value:o,locale:De,localeCode:V,showOutsideDays:ge,disabledMatchers:J,required:I,availableDays:Me,footer:_e,monthYearSelectType:be,handleSelect:Be,applyValue:Oe,className:x.default["tedi-date-field__calendar"]})})})})]})});de.displayName="DateField";exports.DateField=de;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("react/jsx-runtime"),D=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),ee=require("../../../../../external/classnames/index.cjs.js"),a=require("react"),Je=require("../../content/calendar/calendar.cjs.js"),Ke=require("../multi-value-field/multi-value-field.cjs.js"),Qe=require("../textfield/textfield.cjs.js"),x=require("./date-field.module.scss.cjs.js"),O=require("./date-field-helpers.cjs.js"),Xe=require("../../../../../external/react-day-picker/dist/esm/locale/et.cjs.js"),Ze=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),B=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),et=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),tt=require("../../../providers/label-provider/use-labels.cjs.js"),ce=require("../../../helpers/hooks/use-breakpoint.cjs.js"),rt=require("../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs.js"),fe=a.forwardRef((v,C)=>{const{getCurrentBreakpointProps:me}=et.useBreakpointProps(v.defaultServerBreakpoint),{getLabel:pe}=tt.useLabels(),{useNativePicker:he=!1,enableCalendar:c=!0,calendarTrigger:j="button",numberOfMonths:I}=me(v),{id:te,mode:p="single",label:re,selected:N,onSelect:i,disabled:P,disabledMatchers:w,placeholder:ge,className:ye,formatDate:d,required:T,showOutsideDays:be=!0,parseDate:De,monthYearSelectType:xe,selectionLevel:R="days",locale:_e=Xe.et,localeCode:S="et-EE",initialMonth:L,closeOnSelect:Me,footer:Ae,defaultValue:q,minDate:$,maxDate:U,disablePast:ae,disableFuture:ie,shouldDisableMonth:W,shouldDisableYear:H,readOnly:Y,availableDays:Fe,inputProps:n,disabledDateErrorMessage:ke=pe("dateField.disabledDateError"),useNativePicker:at,enableCalendar:it,calendarTrigger:st,numberOfMonths:nt,defaultServerBreakpoint:ot,sm:lt,md:ut,lg:dt,xl:ct,xxl:ft,...Ce}=v,f=he&&p==="single",Ne=ce.useBreakpoint(v.defaultServerBreakpoint),Pe=ce.isBreakpointBelow(Ne,"md")&&typeof I=="number"&&I>1?1:I,[we,g]=a.useState(N??q),[m,_]=a.useState(!1),[Ee,se]=a.useState(R),[Oe,M]=a.useState(""),[ne,y]=a.useState(!1),o=N!==void 0,l=o?N:we,oe=a.useRef(null),ve=a.useCallback(e=>{oe.current=e,typeof C=="function"?C(e):C&&(C.current=e)},[C]),Re=e=>{if(!e)return"";const t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),u=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${u}`},qe=f&&l instanceof Date?Re(l):"",G=a.useCallback((e,t)=>e instanceof Date?e:Array.isArray(e)&&e.length>0?[...e].sort((r,u)=>r.getTime()-u.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,[]),[Ve,z]=a.useState(()=>G(l,L));a.useEffect(()=>{m||z(G(l,L))},[l,L,m,G]),a.useEffect(()=>{m&&se(R)},[m,R]),a.useEffect(()=>{o&&g(N)},[N,o]);const b=a.useMemo(()=>new Intl.DateTimeFormat(S,{day:"2-digit",month:"2-digit",year:"numeric"}),[S]),A=a.useCallback(e=>{if(!e)return"";if(e instanceof Date)return b.format(e);if(Array.isArray(e))return e.map(t=>b.format(t)).join(", ");if(e.from){const t=b.format(e.from);return e.to?`${t} – ${b.format(e.to)}`:t}return""},[b]),J=Me??p==="single",le=p==="multiple"&&Array.isArray(l)?l.map((e,t)=>({id:t,label:d?d(e):A(e),date:e})):[],K=a.useMemo(()=>{const e=[];return P&&(Array.isArray(P)?e.push(...P):e.push(P)),w&&(Array.isArray(w)?e.push(...w):e.push(w)),$&&e.push({before:$}),U&&e.push({after:U}),ae&&e.push({before:new Date}),ie&&e.push({after:new Date}),W&&e.push(t=>W(t)),H&&e.push(t=>H(t)),e},[P,w,$,U,ae,ie,W,H]),F=a.useCallback(e=>rt.dateMatchModifiers(e,K),[K]),Be=(e,t,r,u)=>{if(o||g(e),i==null||i(e,t,r,u),e){const s=d?d(e):A(e);M(s)}else M("");J&&_(!1)},je=e=>{if(F(e))return;o||g(e),i==null||i(e,e,{},{});const t=d?d(e):A(e);M(t),J&&_(!1)},Ie=a.useMemo(()=>{const e=O.getLocaleDateParts(b),t=new RegExp(`^${O.buildDateRegexSource(e)}$`),{fieldOrder:r}=e;return u=>{const s=u.match(t);if(!s)return;const Q={};r.forEach((Ge,ze)=>{Q[Ge]=Number(s[ze+1])});const{day:k,month:X,year:Z}=Q;if(k===void 0||X===void 0||Z===void 0)return;const E=new Date(Z,X-1,k);if(!(isNaN(E.getTime())||E.getFullYear()!==Z||E.getMonth()!==X-1||E.getDate()!==k))return E}},[b]),Te=e=>{if(M(e),e.trim()===""){y(!1);return}const r=(De??(p==="single"?Ie:()=>{}))(e);if(!(p==="single"&&r instanceof Date||p==="multiple"&&Array.isArray(r)||p==="range"&&!!r&&!Array.isArray(r)&&"from"in r)){y(!1);return}const s=r&&!Array.isArray(r)&&"from"in r?r:null;if(r instanceof Date&&F(r)||Array.isArray(r)&&r.some(k=>k instanceof Date&&F(k))||!!s&&(s.from&&F(s.from)||s.to&&F(s.to))){y(!0);return}y(!1),o||g(r),i==null||i(r,r,{},{}),r instanceof Date&&z(r),J&&_(!1)};a.useEffect(()=>{if(o){const e=d?d(l):A(l);M(e)}},[l,o,d,A]),a.useEffect(()=>{if(!o&&q){const e=d?d(q):A(q);M(e)}},[]);const Se=D.useFloating({open:m,onOpenChange:_,placement:j==="input"?"bottom-start":"bottom-end",middleware:[B.offset(O.CALENDAR_POPOVER_OFFSET),B.flip(),B.shift({padding:O.CALENDAR_POPOVER_PADDING}),B.size({padding:O.CALENDAR_POPOVER_PADDING,apply({availableWidth:e,elements:t}){const r=t.floating;r.style.width="max-content",r.style.maxWidth="",r.getBoundingClientRect().width>e?(r.style.width="min-content",r.style.maxWidth=`${e}px`):(r.style.width="",r.style.maxWidth="")}})],whileElementsMounted:Ze.autoUpdate}),{refs:ue,context:V,x:Le,y:$e,strategy:Ue}=Se,We=D.useClick(V),de=D.useInteractions([...c&&!f&&j==="input"?[We]:[],D.useDismiss(V,{outsidePress:e=>{const t=e.target;return!(t!=null&&t.closest('[role="menu"], [role="listbox"]'))}}),D.useRole(V,{role:"dialog"})]),He=()=>{var t;const e=(t=oe.current)==null?void 0:t.input;if(e){if(typeof e.showPicker=="function")try{e.showPicker();return}catch{}e.focus()}},Ye=e=>{if(!e){y(!1),o||g(void 0),i==null||i(void 0,void 0,{},{});return}const[t,r,u]=e.split("-").map(Number);if(!t||!r||!u)return;const s=new Date(t,r-1,u);if(!Number.isNaN(s.getTime())){if(F(s)){y(!0);return}y(!1),o||g(s),i==null||i(s,s,{},{})}};return h.jsxs(h.Fragment,{children:[h.jsx("div",{className:ee.default(x.default["tedi-date-field__container"],ye),...de.getReferenceProps(),ref:ue.setReference,children:p==="multiple"?h.jsx(Ke.MultiValueField,{...n,id:te,label:re,values:le.map(e=>e.label),icon:"calendar_today",onIconClick:()=>c&&_(e=>!e),iconButtonProps:c?{"aria-expanded":m,"aria-haspopup":"dialog"}:void 0,isClearable:!0,required:T,onChange:e=>{if(!Array.isArray(l))return;const t=le.filter(r=>e.includes(r.label)).map(r=>r.date);o||g(t),i==null||i(t,{},{},{})},className:ee.default(x.default["tedi-date-field__textfield"],{[x.default["tedi-date-field__icon--disabled"]]:!c||Y})}):h.jsx(Qe.TextField,{...n,ref:ve,id:te,label:re,readOnly:Y,value:f?qe:Oe,placeholder:ge,icon:"calendar_today","aria-expanded":c&&!f?m:void 0,isClearable:!0,onIconClick:()=>{c&&(f?He():_(e=>!e))},iconButtonProps:c&&!f?{"aria-expanded":m,"aria-haspopup":"dialog"}:void 0,onChange:e=>f?Ye(e):Te(e),required:T,invalid:ne||(n==null?void 0:n.invalid),helper:(()=>{const e=n==null?void 0:n.helper,t=ne?{text:ke,type:"error"}:null;return t?e?Array.isArray(e)?[...e,t]:[e,t]:t:e})(),className:ee.default(x.default["tedi-date-field__textfield"],{[x.default["tedi-date-field__textfield--disabled"]]:n==null?void 0:n.disabled,[x.default["tedi-date-field__icon--disabled"]]:!c||Y}),input:{...n==null?void 0:n.input,...f&&{type:"date"},...c&&!f&&j==="input"?{"aria-haspopup":"dialog","aria-expanded":m}:{}}})}),c&&!f&&h.jsx(D.FloatingPortal,{children:m&&h.jsx(D.FloatingFocusManager,{context:V,modal:!1,initialFocus:-1,children:h.jsx("div",{ref:ue.setFloating,...de.getFloatingProps({style:{position:Ue,top:$e??0,left:Le??0}}),children:h.jsx(Je.Calendar,{...Ce,numberOfMonths:Pe,view:Ee,selectionLevel:R,currentMonth:Ve,setCurrentMonth:z,setView:se,mode:p,value:l,locale:_e,localeCode:S,showOutsideDays:be,disabledMatchers:K,required:T,availableDays:Fe,footer:Ae,monthYearSelectType:xe,handleSelect:Be,applyValue:je,className:x.default["tedi-date-field__calendar"]})})})})]})});fe.displayName="DateField";exports.DateField=fe;
@@ -70,8 +70,22 @@ export interface DateFieldProps extends BreakpointSupport<DateFieldBreakpointPro
70
70
  onSelect?: OnSelectHandler<Date | Date[] | DateRange | undefined>;
71
71
  /**
72
72
  * Disable specific dates. Accepts the same matchers as React DayPicker's `disabled` prop.
73
+ *
74
+ * @deprecated Use `disabledMatchers` instead — same shape, semantics, and merging
75
+ * behaviour. The current overload re-uses the form-control `disabled` name for a
76
+ * matcher prop, which is inconsistent with `DateTimeField`'s boolean `disabled`
77
+ * and confusing for consumers migrating between the two siblings. `disabledMatchers`
78
+ * stays additive for now; this overload will be replaced by `disabled?: boolean`
79
+ * in a future major.
73
80
  */
74
81
  disabled?: Matcher | Matcher[];
82
+ /**
83
+ * Disable specific dates via react-day-picker matchers. Mirrors the
84
+ * `disabledMatchers` prop on `DateTimeField` so the API is consistent across
85
+ * the date-field family. Merges with the (deprecated) `disabled` overload —
86
+ * if both are supplied, the union of both matcher sets is applied.
87
+ */
88
+ disabledMatchers?: Matcher | Matcher[];
75
89
  /**
76
90
  * Input placeholder text when no date is selected.
77
91
  */
@@ -197,6 +211,14 @@ export interface DateFieldProps extends BreakpointSupport<DateFieldBreakpointPro
197
211
  * Props to pass down to the underlying TextField (in 'single' mode) or MultiValueField (in 'multiple' mode). This allows for additional customization of the input field, such as adding custom styles, attributes, or event handlers.
198
212
  */
199
213
  inputProps?: DateTextFieldProps | DateMultiValueFieldProps;
214
+ /**
215
+ * Error message rendered below the input when the user types a date that
216
+ * matches one of the disable matchers (`disablePast`, `disableFuture`,
217
+ * `minDate`, `maxDate`, `disabledMatchers`, or the deprecated `disabled`
218
+ * overload). Falls back to the localised `dateField.disabledDateError`
219
+ * label.
220
+ */
221
+ disabledDateErrorMessage?: string;
200
222
  }
201
223
  export declare const DateField: React.ForwardRefExoticComponent<DateFieldProps & React.RefAttributes<TextFieldForwardRef>>;
202
224
  export {};