@tedi-design-system/react 18.0.0-rc.8 → 18.0.0-rc.9

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 (58) hide show
  1. package/_virtual/index.cjs10.js +1 -1
  2. package/_virtual/index.cjs11.js +1 -1
  3. package/_virtual/index.cjs12.js +1 -1
  4. package/_virtual/index.cjs13.js +1 -1
  5. package/_virtual/index.cjs5.js +1 -1
  6. package/_virtual/index.cjs6.js +1 -1
  7. package/_virtual/index.cjs7.js +1 -1
  8. package/_virtual/index.cjs8.js +1 -1
  9. package/_virtual/index.cjs9.js +1 -1
  10. package/_virtual/index.es10.js +1 -1
  11. package/_virtual/index.es11.js +1 -1
  12. package/_virtual/index.es12.js +1 -1
  13. package/_virtual/index.es13.js +2 -4
  14. package/_virtual/index.es5.js +4 -2
  15. package/_virtual/index.es6.js +1 -1
  16. package/_virtual/index.es7.js +1 -1
  17. package/_virtual/index.es8.js +1 -1
  18. package/_virtual/index.es9.js +1 -1
  19. package/bundle-stats.html +1 -1
  20. package/external/@mui/system/colorManipulator.cjs.js +1 -1
  21. package/external/@mui/system/colorManipulator.es.js +2 -2
  22. package/external/@mui/system/createStyled.cjs.js +1 -1
  23. package/external/@mui/system/createStyled.es.js +6 -6
  24. package/external/@mui/system/useThemeWithoutDefault.cjs.js +1 -1
  25. package/external/@mui/system/useThemeWithoutDefault.es.js +1 -1
  26. package/external/toposort/index.cjs.js +1 -1
  27. package/external/toposort/index.es.js +1 -1
  28. package/index.css +1 -1
  29. package/package.json +1 -1
  30. package/src/community/components/form/pickers/calendar/calendar.d.ts +6 -0
  31. package/src/community/components/form/pickers/datepicker/datepicker.d.ts +6 -0
  32. package/src/community/components/form/pickers/datetimepicker/datetimepicker.d.ts +6 -0
  33. package/src/community/components/form/pickers/timepicker/timepicker.d.ts +6 -0
  34. package/src/tedi/components/content/calendar/calendar-grid.cjs.js +1 -1
  35. package/src/tedi/components/content/calendar/calendar-grid.es.js +7 -6
  36. package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.cjs.js +1 -1
  37. package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.es.js +99 -79
  38. package/src/tedi/components/form/date-field/date-field-helpers.cjs.js +1 -0
  39. package/src/tedi/components/form/date-field/date-field-helpers.d.ts +66 -0
  40. package/src/tedi/components/form/date-field/date-field-helpers.es.js +28 -0
  41. package/src/tedi/components/form/date-field/date-field.cjs.js +1 -1
  42. package/src/tedi/components/form/date-field/date-field.d.ts +22 -0
  43. package/src/tedi/components/form/date-field/date-field.es.js +248 -212
  44. package/src/tedi/components/form/date-time-field/date-time-field.cjs.js +1 -0
  45. package/src/tedi/components/form/date-time-field/date-time-field.d.ts +207 -0
  46. package/src/tedi/components/form/date-time-field/date-time-field.es.js +376 -0
  47. package/src/tedi/components/form/date-time-field/date-time-field.module.scss.cjs.js +1 -0
  48. package/src/tedi/components/form/date-time-field/date-time-field.module.scss.es.js +30 -0
  49. package/src/tedi/components/form/time-field/time-field.cjs.js +1 -1
  50. package/src/tedi/components/form/time-field/time-field.d.ts +9 -0
  51. package/src/tedi/components/form/time-field/time-field.es.js +81 -79
  52. package/src/tedi/components/overlays/dropdown/dropdown.es.js +0 -3
  53. package/src/tedi/index.d.ts +1 -0
  54. package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
  55. package/src/tedi/providers/label-provider/labels-map.d.ts +28 -0
  56. package/src/tedi/providers/label-provider/labels-map.es.js +93 -65
  57. package/tedi.cjs.js +1 -1
  58. package/tedi.es.js +217 -215
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tedi-design-system/react",
3
- "version": "18.0.0-rc.8",
3
+ "version": "18.0.0-rc.9",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -1,6 +1,9 @@
1
1
  import { Dayjs } from 'dayjs';
2
2
  export type CalendarValue = Dayjs | null;
3
3
  export type CalendarStatus = 'error' | 'success' | 'inactive';
4
+ /**
5
+ * @deprecated Use `Calendar` from `@tedi-design-system/react/tedi` instead.
6
+ */
4
7
  export interface CalendarProps {
5
8
  /**
6
9
  * Currently selected value. Accepts a dayjs date object.
@@ -86,5 +89,8 @@ export interface CalendarProps {
86
89
  */
87
90
  shouldShowStatusOnDate?: (day: CalendarValue) => CalendarStatus | undefined;
88
91
  }
92
+ /**
93
+ * @deprecated Use `Calendar` from `@tedi-design-system/react/tedi` instead.
94
+ */
89
95
  export declare const Calendar: (props: CalendarProps) => JSX.Element;
90
96
  export default Calendar;
@@ -2,6 +2,9 @@ import { DateValidationError } from '@mui/x-date-pickers/internals';
2
2
  import { Dayjs } from 'dayjs';
3
3
  import { TextFieldProps } from '../../../../../tedi/components/form/textfield/textfield';
4
4
  export type DatepickerValue = Dayjs | null;
5
+ /**
6
+ * @deprecated Use `DateField` from `@tedi-design-system/react/tedi` instead.
7
+ */
5
8
  export interface DatePickerProps extends Omit<TextFieldProps, 'defaultValue' | 'value' | 'onChange'> {
6
9
  /**
7
10
  * Datepicker initial value. Accepts a dayjs date object.
@@ -85,5 +88,8 @@ export interface DatePickerProps extends Omit<TextFieldProps, 'defaultValue' | '
85
88
  */
86
89
  onClose?: () => void;
87
90
  }
91
+ /**
92
+ * @deprecated Use `DateField` from `@tedi-design-system/react/tedi` instead.
93
+ */
88
94
  export declare const DatePicker: (props: DatePickerProps) => JSX.Element;
89
95
  export default DatePicker;
@@ -3,6 +3,9 @@ import { DateTimeValidationError } from '@mui/x-date-pickers/internals/hooks/val
3
3
  import { Dayjs } from 'dayjs';
4
4
  import { TextFieldProps } from '../../../../../tedi/components/form/textfield/textfield';
5
5
  export type DateTimepickerValue = Dayjs | null;
6
+ /**
7
+ * @deprecated Use `DateTimeField` from `@tedi-design-system/react/tedi` instead.
8
+ */
6
9
  export interface DateTimePickerProps extends Omit<TextFieldProps, 'defaultValue' | 'value' | 'onChange'> {
7
10
  /**
8
11
  * DateTimepicker initial value. Accepts a dayjs date object.
@@ -125,5 +128,8 @@ export interface DateTimePickerProps extends Omit<TextFieldProps, 'defaultValue'
125
128
  */
126
129
  onClose?: () => void;
127
130
  }
131
+ /**
132
+ * @deprecated Use `DateTimeField` from `@tedi-design-system/react/tedi` instead.
133
+ */
128
134
  export declare const DateTimePicker: (props: DateTimePickerProps) => JSX.Element;
129
135
  export default DateTimePicker;
@@ -3,6 +3,9 @@ import { TimeValidationError } from '@mui/x-date-pickers/internals/hooks/validat
3
3
  import { Dayjs } from 'dayjs';
4
4
  import { TextFieldProps } from '../../../../../tedi/components/form/textfield/textfield';
5
5
  export type TimePickerValue = Dayjs | null;
6
+ /**
7
+ * @deprecated Use `TimeField` from `@tedi-design-system/react/tedi` instead.
8
+ */
6
9
  export interface TimePickerProps extends Omit<TextFieldProps, 'defaultValue' | 'value' | 'onChange'> {
7
10
  /**
8
11
  * TimePicker initial value. Accepts a dayjs date object.
@@ -69,5 +72,8 @@ export interface TimePickerProps extends Omit<TextFieldProps, 'defaultValue' | '
69
72
  */
70
73
  onClose?: () => void;
71
74
  }
75
+ /**
76
+ * @deprecated Use `TimeField` from `@tedi-design-system/react/tedi` instead.
77
+ */
72
78
  export declare const TimePicker: (props: TimePickerProps) => JSX.Element;
73
79
  export default TimePicker;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("../../../../../external/classnames/index.cjs.js"),a=require("../../base/typography/text/text.cjs.js"),l=require("../../buttons/button/button.cjs.js"),r=require("./calendar.module.scss.cjs.js"),j=require("../../layout/grid/row.cjs.js"),h=require("../../layout/grid/col.cjs.js"),s=({headerLabel:u,prevAriaLabel:n,nextAriaLabel:c,onPrev:o,onNext:f,items:x,onSelect:p,showNavigation:d,className:_})=>e.jsxs("div",{className:t.default(r.default["tedi-calendar__picker-grid-container"],_),"data-testid":"tedi-picker-grid-container",children:[e.jsxs("div",{className:t.default(r.default["tedi-calendar__picker-grid-header"],{[r.default["tedi-calendar__picker--no-navigation"]]:!d}),children:[d&&e.jsx(l.Button,{type:"button",onClick:o,"aria-label":n,icon:"arrow_back",visualType:"neutral",children:e.jsx(a.Text,{modifiers:"capitalize-first",children:n})}),e.jsx(a.Text,{modifiers:"capitalize-first",children:u}),d&&e.jsx(l.Button,{type:"button",onClick:f,"aria-label":c,icon:"arrow_forward",visualType:"neutral",children:e.jsx(a.Text,{modifiers:"capitalize-first",children:c})})]}),e.jsx("div",{className:t.default(r.default["tedi-calendar__picker-grid"]),children:e.jsx(j.Row,{gutter:2,children:x.map(i=>e.jsx(h.Col,{width:4,children:e.jsx(l.Button,{onClick:()=>p(i.value),className:t.default(r.default["tedi-calendar__grid-button"],{[r.default["tedi-calendar__grid-button--selected"]]:i.isSelected}),"aria-pressed":i.isSelected,noStyle:!0,children:i.label})},i.key))})})]});s.displayName="CalendarGrid";exports.CalendarGrid=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("../../../../../external/classnames/index.cjs.js"),a=require("../../base/typography/text/text.cjs.js"),l=require("../../buttons/button/button.cjs.js"),r=require("./calendar.module.scss.cjs.js"),j=require("../../layout/grid/row.cjs.js"),h=require("../../layout/grid/col.cjs.js"),s=({headerLabel:u,prevAriaLabel:n,nextAriaLabel:c,onPrev:o,onNext:f,items:x,onSelect:p,showNavigation:d,className:_})=>e.jsxs("div",{className:i.default(r.default["tedi-calendar__picker-grid-container"],_),"data-testid":"tedi-picker-grid-container",children:[e.jsxs("div",{className:i.default(r.default["tedi-calendar__picker-grid-header"],{[r.default["tedi-calendar__picker--no-navigation"]]:!d}),children:[d&&e.jsx(l.Button,{type:"button",onClick:o,"aria-label":n,icon:"arrow_back",visualType:"neutral",children:e.jsx(a.Text,{modifiers:"capitalize-first",children:n})}),e.jsx(a.Text,{modifiers:"capitalize-first",children:u}),d&&e.jsx(l.Button,{type:"button",onClick:f,"aria-label":c,icon:"arrow_forward",visualType:"neutral",children:e.jsx(a.Text,{modifiers:"capitalize-first",children:c})})]}),e.jsx("div",{className:i.default(r.default["tedi-calendar__picker-grid"]),children:e.jsx(j.Row,{gutter:2,children:x.map(t=>e.jsx(h.Col,{width:4,children:e.jsx(l.Button,{onClick:()=>p(t.value),className:i.default(r.default["tedi-calendar__grid-button"],{[r.default["tedi-calendar__grid-button--selected"]]:t.isSelected}),"aria-pressed":t.isSelected,"data-testid":"tedi-calendar-grid-cell",noStyle:!0,children:t.label})},t.key))})})]});s.displayName="CalendarGrid";exports.CalendarGrid=s;
@@ -1,7 +1,7 @@
1
1
  import { jsxs as o, jsx as e } from "react/jsx-runtime";
2
2
  import a from "../../../../../external/classnames/index.es.js";
3
- import { Text as l } from "../../base/typography/text/text.es.js";
4
- import { Button as t } from "../../buttons/button/button.es.js";
3
+ import { Text as t } from "../../base/typography/text/text.es.js";
4
+ import { Button as l } from "../../buttons/button/button.es.js";
5
5
  import r from "./calendar.module.scss.es.js";
6
6
  import { Row as h } from "../../layout/grid/row.es.js";
7
7
  import { Col as k } from "../../layout/grid/col.es.js";
@@ -28,20 +28,21 @@ const y = ({
28
28
  [r["tedi-calendar__picker--no-navigation"]]: !d
29
29
  }),
30
30
  children: [
31
- d && /* @__PURE__ */ e(t, { type: "button", onClick: p, "aria-label": c, icon: "arrow_back", visualType: "neutral", children: /* @__PURE__ */ e(l, { modifiers: "capitalize-first", children: c }) }),
32
- /* @__PURE__ */ e(l, { modifiers: "capitalize-first", children: s }),
33
- d && /* @__PURE__ */ e(t, { type: "button", onClick: m, "aria-label": n, icon: "arrow_forward", visualType: "neutral", children: /* @__PURE__ */ e(l, { modifiers: "capitalize-first", children: n }) })
31
+ d && /* @__PURE__ */ e(l, { type: "button", onClick: p, "aria-label": c, icon: "arrow_back", visualType: "neutral", children: /* @__PURE__ */ e(t, { modifiers: "capitalize-first", children: c }) }),
32
+ /* @__PURE__ */ e(t, { modifiers: "capitalize-first", children: s }),
33
+ d && /* @__PURE__ */ e(l, { type: "button", onClick: m, "aria-label": n, icon: "arrow_forward", visualType: "neutral", children: /* @__PURE__ */ e(t, { modifiers: "capitalize-first", children: n }) })
34
34
  ]
35
35
  }
36
36
  ),
37
37
  /* @__PURE__ */ e("div", { className: a(r["tedi-calendar__picker-grid"]), children: /* @__PURE__ */ e(h, { gutter: 2, children: f.map((i) => /* @__PURE__ */ e(k, { width: 4, children: /* @__PURE__ */ e(
38
- t,
38
+ l,
39
39
  {
40
40
  onClick: () => _(i.value),
41
41
  className: a(r["tedi-calendar__grid-button"], {
42
42
  [r["tedi-calendar__grid-button--selected"]]: i.isSelected
43
43
  }),
44
44
  "aria-pressed": i.isSelected,
45
+ "data-testid": "tedi-calendar-grid-cell",
45
46
  noStyle: !0,
46
47
  children: i.label
47
48
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),y=require("../../../../../../../external/classnames/index.cjs.js"),x=require("react"),w=require("../../../../base/icon/icon.cjs.js"),i=require("../../../../buttons/button/button.cjs.js"),r=require("./calendar-header.module.scss.cjs.js"),T=require("../../../../../../../external/react-day-picker/dist/esm/types/deprecated.cjs.js"),I=require("../../../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs.js"),l=require("../../../../overlays/dropdown/dropdown.cjs.js"),L=require("../../../../../providers/label-provider/use-labels.cjs.js");function H({calendarMonth:S,monthYearSelectType:q="dropdown",onOpenMonthGrid:N,onOpenYearGrid:v,showNavigation:p=!0,localeCode:m,disabledMatchers:o}){const f=q==="grid",{getLabel:s}=L.useLabels(),{goToMonth:u,nextMonth:j,previousMonth:D}=T.useNavigation(),d=S.date,c=d.getFullYear(),k=d.getMonth(),C=Array.from({length:12},(n,t)=>new Date(c,t,1).toLocaleString(m,{month:"long"})),F=new Date().getFullYear(),h=Array.from({length:21},(n,t)=>F-10+t),_=x.useCallback((n,t)=>{if(!(o!=null&&o.length))return!1;const a=new Date(n);for(;a<=t;){if(!I.dateMatchModifiers(a,o))return!1;a.setDate(a.getDate()+1)}return!0},[o]),Y=x.useMemo(()=>{if(!(o!=null&&o.length))return new Set;const n=new Set;for(let t=0;t<12;t++){const a=new Date(c,t,1),g=new Date(c,t+1,0);_(a,g)&&n.add(t)}return n},[o,c,_]),B=x.useMemo(()=>{if(!(o!=null&&o.length))return new Set;const n=new Set;for(const t of h){const a=new Date(t,0,1),g=new Date(t,11,31);_(a,g)&&n.add(t)}return n},[o,h,_]);return e.jsxs("div",{className:y.default(r.default["tedi-calendar__header"],{[r.default["tedi-calendar__no-navigation"]]:!p}),children:[p&&e.jsx(i.Button,{type:"button",onClick:()=>D&&u(D),"aria-label":s("pickers.previousMonth"),icon:"arrow_back",visualType:"neutral",children:s("pickers.previousMonth")}),f?e.jsxs(e.Fragment,{children:[e.jsxs(i.Button,{noStyle:!0,className:r.default["tedi-calendar__month-year-selector"],onClick:N,children:[d.toLocaleString(m,{month:"long"}),e.jsx(w.Icon,{name:"arrow_drop_down",color:"tertiary",className:r.default["tedi-calendar__month-year-caret"]})]}),e.jsxs(i.Button,{noStyle:!0,className:r.default["tedi-calendar__month-year-selector"],onClick:v,children:[d.getFullYear(),e.jsx(w.Icon,{name:"arrow_drop_down",color:"tertiary",className:r.default["tedi-calendar__month-year-caret"]})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs(l.Dropdown,{className:y.default(r.default["tedi-calendar__month-year-dropdown"],{[r.default["tedi-calendar__picker-grid-dropdown"]]:f}),width:"auto",children:[e.jsx(l.Dropdown.Trigger,{children:e.jsxs(i.Button,{noStyle:!0,className:r.default["tedi-calendar__month-year-selector"],children:[d.toLocaleString(m,{month:"long"}),e.jsx(w.Icon,{name:"arrow_drop_down",color:"tertiary",className:r.default["tedi-calendar__month-year-caret"],"data-testid":"tedi-icon-arrow_drop_down"})]})}),e.jsx(l.Dropdown.Content,{children:C.map((n,t)=>e.jsx(l.Dropdown.Item,{index:t,active:k===t,disabled:Y.has(t),onClick:()=>u(new Date(c,t)),children:n},n))})]}),e.jsxs(l.Dropdown,{className:y.default(r.default["tedi-calendar__month-year-dropdown"],{[r.default["tedi-calendar__picker-grid-dropdown"]]:f}),width:"auto",children:[e.jsx(l.Dropdown.Trigger,{children:e.jsxs(i.Button,{noStyle:!0,className:r.default["tedi-calendar__month-year-selector"],children:[d.getFullYear(),e.jsx(w.Icon,{name:"arrow_drop_down",color:"tertiary",className:r.default["tedi-calendar__month-year-caret"],"data-testid":"tedi-icon-arrow_drop_down"})]})}),e.jsx(l.Dropdown.Content,{children:h.map((n,t)=>e.jsx(l.Dropdown.Item,{index:t,active:c===n,disabled:B.has(n),onClick:()=>u(new Date(n,k)),children:n},n))})]})]}),p&&e.jsx(i.Button,{type:"button",onClick:()=>j&&u(j),visualType:"neutral","aria-label":s("pickers.nextMonth"),icon:"arrow_forward",children:s("pickers.nextMonth")})]})}exports.CalendarHeader=H;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),y=require("../../../../../../../external/classnames/index.cjs.js"),j=require("react"),m=require("../../../../base/icon/icon.cjs.js"),c=require("../../../../buttons/button/button.cjs.js"),r=require("./calendar-header.module.scss.cjs.js"),B=require("../../../../../../../external/react-day-picker/dist/esm/types/deprecated.cjs.js"),T=require("../../../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs.js"),l=require("../../../../overlays/dropdown/dropdown.cjs.js"),L=require("../../../../../providers/label-provider/use-labels.cjs.js");function A({calendarMonth:S,monthYearSelectType:v="dropdown",onOpenMonthGrid:q,onOpenYearGrid:N,showNavigation:p=!0,localeCode:f,disabledMatchers:o}){const g=v==="grid",{getLabel:u}=L.useLabels(),{goToMonth:_,nextMonth:D,previousMonth:k}=B.useNavigation(),i=S.date,a=i.getFullYear(),h=i.getMonth(),C=Array.from({length:12},(n,t)=>new Date(a,t,1).toLocaleString(f,{month:"long"})),F=new Date().getFullYear(),s=Array.from({length:21},(n,t)=>F-10+t),w=j.useCallback((n,t)=>{if(!(o!=null&&o.length))return!1;const d=new Date(n);for(;d<=t;){if(!T.dateMatchModifiers(d,o))return!1;d.setDate(d.getDate()+1)}return!0},[o]),I=j.useMemo(()=>{if(!(o!=null&&o.length))return new Set;const n=new Set;for(let t=0;t<12;t++){const d=new Date(a,t,1),x=new Date(a,t+1,0);w(d,x)&&n.add(t)}return n},[o,a,w]),Y=j.useMemo(()=>{if(!(o!=null&&o.length))return new Set;const n=new Set;for(const t of s){const d=new Date(t,0,1),x=new Date(t,11,31);w(d,x)&&n.add(t)}return n},[o,s,w]);return e.jsxs("div",{className:y.default(r.default["tedi-calendar__header"],{[r.default["tedi-calendar__no-navigation"]]:!p}),children:[p&&e.jsx(c.Button,{type:"button",onClick:()=>k&&_(k),"aria-label":u("pickers.previousMonth"),icon:"arrow_back",visualType:"neutral",children:u("pickers.previousMonth")}),g?e.jsxs(e.Fragment,{children:[e.jsxs(c.Button,{noStyle:!0,className:r.default["tedi-calendar__month-year-selector"],onClick:q,"data-testid":"tedi-calendar-month-trigger",children:[i.toLocaleString(f,{month:"long"}),e.jsx(m.Icon,{name:"arrow_drop_down",color:"tertiary",className:r.default["tedi-calendar__month-year-caret"]})]}),e.jsxs(c.Button,{noStyle:!0,className:r.default["tedi-calendar__month-year-selector"],onClick:N,"data-testid":"tedi-calendar-year-trigger",children:[i.getFullYear(),e.jsx(m.Icon,{name:"arrow_drop_down",color:"tertiary",className:r.default["tedi-calendar__month-year-caret"]})]})]}):e.jsxs(e.Fragment,{children:[e.jsxs(l.Dropdown,{className:y.default(r.default["tedi-calendar__month-year-dropdown"],{[r.default["tedi-calendar__picker-grid-dropdown"]]:g}),width:"auto",defaultActiveIndex:h,children:[e.jsx(l.Dropdown.Trigger,{children:e.jsxs(c.Button,{noStyle:!0,className:r.default["tedi-calendar__month-year-selector"],children:[i.toLocaleString(f,{month:"long"}),e.jsx(m.Icon,{name:"arrow_drop_down",color:"tertiary",className:r.default["tedi-calendar__month-year-caret"],"data-testid":"tedi-icon-arrow_drop_down"})]})}),e.jsx(l.Dropdown.Content,{children:C.map((n,t)=>e.jsx(l.Dropdown.Item,{index:t,active:h===t,disabled:I.has(t),onClick:()=>_(new Date(a,t)),children:n},n))})]}),e.jsxs(l.Dropdown,{className:y.default(r.default["tedi-calendar__month-year-dropdown"],{[r.default["tedi-calendar__picker-grid-dropdown"]]:g}),width:"auto",defaultActiveIndex:s.indexOf(a)===-1?void 0:s.indexOf(a),children:[e.jsx(l.Dropdown.Trigger,{children:e.jsxs(c.Button,{noStyle:!0,className:r.default["tedi-calendar__month-year-selector"],children:[i.getFullYear(),e.jsx(m.Icon,{name:"arrow_drop_down",color:"tertiary",className:r.default["tedi-calendar__month-year-caret"],"data-testid":"tedi-icon-arrow_drop_down"})]})}),e.jsx(l.Dropdown.Content,{children:s.map((n,t)=>e.jsx(l.Dropdown.Item,{index:t,active:a===n,disabled:Y.has(n),onClick:()=>_(new Date(n,h)),children:n},n))})]})]}),p&&e.jsx(c.Button,{type:"button",onClick:()=>D&&_(D),visualType:"neutral","aria-label":u("pickers.nextMonth"),icon:"arrow_forward",children:u("pickers.nextMonth")})]})}exports.CalendarHeader=A;
@@ -1,159 +1,179 @@
1
- import { jsxs as a, jsx as o, Fragment as v } from "react/jsx-runtime";
2
- import k from "../../../../../../../external/classnames/index.es.js";
3
- import { useCallback as B, useMemo as C } from "react";
4
- import { Icon as u } from "../../../../base/icon/icon.es.js";
1
+ import { jsxs as a, jsx as o, Fragment as x } from "react/jsx-runtime";
2
+ import D from "../../../../../../../external/classnames/index.es.js";
3
+ import { useCallback as O, useMemo as N } from "react";
4
+ import { Icon as w } from "../../../../base/icon/icon.es.js";
5
5
  import { Button as s } from "../../../../buttons/button/button.es.js";
6
- import t from "./calendar-header.module.scss.es.js";
7
- import { useNavigation as G } from "../../../../../../../external/react-day-picker/dist/esm/types/deprecated.es.js";
8
- import { dateMatchModifiers as H } from "../../../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.es.js";
9
- import { Dropdown as l } from "../../../../overlays/dropdown/dropdown.es.js";
10
- import { useLabels as R } from "../../../../../providers/label-provider/use-labels.es.js";
6
+ import r from "./calendar-header.module.scss.es.js";
7
+ import { useNavigation as B } from "../../../../../../../external/react-day-picker/dist/esm/types/deprecated.es.js";
8
+ import { dateMatchModifiers as G } from "../../../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.es.js";
9
+ import { Dropdown as c } from "../../../../overlays/dropdown/dropdown.es.js";
10
+ import { useLabels as H } from "../../../../../providers/label-provider/use-labels.es.js";
11
11
  function W({
12
- calendarMonth: x,
12
+ calendarMonth: C,
13
13
  monthYearSelectType: Y = "dropdown",
14
14
  onOpenMonthGrid: F,
15
15
  onOpenYearGrid: T,
16
- showNavigation: w = !0,
16
+ showNavigation: g = !0,
17
17
  localeCode: h,
18
18
  disabledMatchers: n
19
19
  }) {
20
- const g = Y === "grid", { getLabel: m } = R(), { goToMonth: _, nextMonth: D, previousMonth: S } = G(), c = x.date, d = c.getFullYear(), N = c.getMonth(), L = Array.from(
20
+ const f = Y === "grid", { getLabel: _ } = H(), { goToMonth: u, nextMonth: S, previousMonth: v } = B(), d = C.date, i = d.getFullYear(), y = d.getMonth(), A = Array.from(
21
21
  { length: 12 },
22
- (r, e) => new Date(d, e, 1).toLocaleString(h, { month: "long" })
23
- ), j = (/* @__PURE__ */ new Date()).getFullYear(), y = Array.from({ length: 21 }, (r, e) => j - 10 + e), p = B(
24
- (r, e) => {
22
+ (t, e) => new Date(i, e, 1).toLocaleString(h, { month: "long" })
23
+ ), I = (/* @__PURE__ */ new Date()).getFullYear(), m = Array.from({ length: 21 }, (t, e) => I - 10 + e), p = O(
24
+ (t, e) => {
25
25
  if (!(n != null && n.length)) return !1;
26
- const i = new Date(r);
27
- for (; i <= e; ) {
28
- if (!H(i, n)) return !1;
29
- i.setDate(i.getDate() + 1);
26
+ const l = new Date(t);
27
+ for (; l <= e; ) {
28
+ if (!G(l, n)) return !1;
29
+ l.setDate(l.getDate() + 1);
30
30
  }
31
31
  return !0;
32
32
  },
33
33
  [n]
34
- ), A = C(() => {
34
+ ), L = N(() => {
35
35
  if (!(n != null && n.length)) return /* @__PURE__ */ new Set();
36
- const r = /* @__PURE__ */ new Set();
36
+ const t = /* @__PURE__ */ new Set();
37
37
  for (let e = 0; e < 12; e++) {
38
- const i = new Date(d, e, 1), f = new Date(d, e + 1, 0);
39
- p(i, f) && r.add(e);
38
+ const l = new Date(i, e, 1), k = new Date(i, e + 1, 0);
39
+ p(l, k) && t.add(e);
40
40
  }
41
- return r;
42
- }, [n, d, p]), I = C(() => {
41
+ return t;
42
+ }, [n, i, p]), j = N(() => {
43
43
  if (!(n != null && n.length)) return /* @__PURE__ */ new Set();
44
- const r = /* @__PURE__ */ new Set();
45
- for (const e of y) {
46
- const i = new Date(e, 0, 1), f = new Date(e, 11, 31);
47
- p(i, f) && r.add(e);
44
+ const t = /* @__PURE__ */ new Set();
45
+ for (const e of m) {
46
+ const l = new Date(e, 0, 1), k = new Date(e, 11, 31);
47
+ p(l, k) && t.add(e);
48
48
  }
49
- return r;
50
- }, [n, y, p]);
49
+ return t;
50
+ }, [n, m, p]);
51
51
  return /* @__PURE__ */ a(
52
52
  "div",
53
53
  {
54
- className: k(t["tedi-calendar__header"], {
55
- [t["tedi-calendar__no-navigation"]]: !w
54
+ className: D(r["tedi-calendar__header"], {
55
+ [r["tedi-calendar__no-navigation"]]: !g
56
56
  }),
57
57
  children: [
58
- w && /* @__PURE__ */ o(
58
+ g && /* @__PURE__ */ o(
59
59
  s,
60
60
  {
61
61
  type: "button",
62
- onClick: () => S && _(S),
63
- "aria-label": m("pickers.previousMonth"),
62
+ onClick: () => v && u(v),
63
+ "aria-label": _("pickers.previousMonth"),
64
64
  icon: "arrow_back",
65
65
  visualType: "neutral",
66
- children: m("pickers.previousMonth")
66
+ children: _("pickers.previousMonth")
67
67
  }
68
68
  ),
69
- g ? /* @__PURE__ */ a(v, { children: [
70
- /* @__PURE__ */ a(s, { noStyle: !0, className: t["tedi-calendar__month-year-selector"], onClick: F, children: [
71
- c.toLocaleString(h, { month: "long" }),
72
- /* @__PURE__ */ o(u, { name: "arrow_drop_down", color: "tertiary", className: t["tedi-calendar__month-year-caret"] })
73
- ] }),
74
- /* @__PURE__ */ a(s, { noStyle: !0, className: t["tedi-calendar__month-year-selector"], onClick: T, children: [
75
- c.getFullYear(),
76
- /* @__PURE__ */ o(u, { name: "arrow_drop_down", color: "tertiary", className: t["tedi-calendar__month-year-caret"] })
77
- ] })
78
- ] }) : /* @__PURE__ */ a(v, { children: [
69
+ f ? /* @__PURE__ */ a(x, { children: [
79
70
  /* @__PURE__ */ a(
80
- l,
71
+ s,
81
72
  {
82
- className: k(t["tedi-calendar__month-year-dropdown"], {
83
- [t["tedi-calendar__picker-grid-dropdown"]]: g
73
+ noStyle: !0,
74
+ className: r["tedi-calendar__month-year-selector"],
75
+ onClick: F,
76
+ "data-testid": "tedi-calendar-month-trigger",
77
+ children: [
78
+ d.toLocaleString(h, { month: "long" }),
79
+ /* @__PURE__ */ o(w, { name: "arrow_drop_down", color: "tertiary", className: r["tedi-calendar__month-year-caret"] })
80
+ ]
81
+ }
82
+ ),
83
+ /* @__PURE__ */ a(
84
+ s,
85
+ {
86
+ noStyle: !0,
87
+ className: r["tedi-calendar__month-year-selector"],
88
+ onClick: T,
89
+ "data-testid": "tedi-calendar-year-trigger",
90
+ children: [
91
+ d.getFullYear(),
92
+ /* @__PURE__ */ o(w, { name: "arrow_drop_down", color: "tertiary", className: r["tedi-calendar__month-year-caret"] })
93
+ ]
94
+ }
95
+ )
96
+ ] }) : /* @__PURE__ */ a(x, { children: [
97
+ /* @__PURE__ */ a(
98
+ c,
99
+ {
100
+ className: D(r["tedi-calendar__month-year-dropdown"], {
101
+ [r["tedi-calendar__picker-grid-dropdown"]]: f
84
102
  }),
85
103
  width: "auto",
104
+ defaultActiveIndex: y,
86
105
  children: [
87
- /* @__PURE__ */ o(l.Trigger, { children: /* @__PURE__ */ a(s, { noStyle: !0, className: t["tedi-calendar__month-year-selector"], children: [
88
- c.toLocaleString(h, { month: "long" }),
106
+ /* @__PURE__ */ o(c.Trigger, { children: /* @__PURE__ */ a(s, { noStyle: !0, className: r["tedi-calendar__month-year-selector"], children: [
107
+ d.toLocaleString(h, { month: "long" }),
89
108
  /* @__PURE__ */ o(
90
- u,
109
+ w,
91
110
  {
92
111
  name: "arrow_drop_down",
93
112
  color: "tertiary",
94
- className: t["tedi-calendar__month-year-caret"],
113
+ className: r["tedi-calendar__month-year-caret"],
95
114
  "data-testid": "tedi-icon-arrow_drop_down"
96
115
  }
97
116
  )
98
117
  ] }) }),
99
- /* @__PURE__ */ o(l.Content, { children: L.map((r, e) => /* @__PURE__ */ o(
100
- l.Item,
118
+ /* @__PURE__ */ o(c.Content, { children: A.map((t, e) => /* @__PURE__ */ o(
119
+ c.Item,
101
120
  {
102
121
  index: e,
103
- active: N === e,
104
- disabled: A.has(e),
105
- onClick: () => _(new Date(d, e)),
106
- children: r
122
+ active: y === e,
123
+ disabled: L.has(e),
124
+ onClick: () => u(new Date(i, e)),
125
+ children: t
107
126
  },
108
- r
127
+ t
109
128
  )) })
110
129
  ]
111
130
  }
112
131
  ),
113
132
  /* @__PURE__ */ a(
114
- l,
133
+ c,
115
134
  {
116
- className: k(t["tedi-calendar__month-year-dropdown"], {
117
- [t["tedi-calendar__picker-grid-dropdown"]]: g
135
+ className: D(r["tedi-calendar__month-year-dropdown"], {
136
+ [r["tedi-calendar__picker-grid-dropdown"]]: f
118
137
  }),
119
138
  width: "auto",
139
+ defaultActiveIndex: m.indexOf(i) === -1 ? void 0 : m.indexOf(i),
120
140
  children: [
121
- /* @__PURE__ */ o(l.Trigger, { children: /* @__PURE__ */ a(s, { noStyle: !0, className: t["tedi-calendar__month-year-selector"], children: [
122
- c.getFullYear(),
141
+ /* @__PURE__ */ o(c.Trigger, { children: /* @__PURE__ */ a(s, { noStyle: !0, className: r["tedi-calendar__month-year-selector"], children: [
142
+ d.getFullYear(),
123
143
  /* @__PURE__ */ o(
124
- u,
144
+ w,
125
145
  {
126
146
  name: "arrow_drop_down",
127
147
  color: "tertiary",
128
- className: t["tedi-calendar__month-year-caret"],
148
+ className: r["tedi-calendar__month-year-caret"],
129
149
  "data-testid": "tedi-icon-arrow_drop_down"
130
150
  }
131
151
  )
132
152
  ] }) }),
133
- /* @__PURE__ */ o(l.Content, { children: y.map((r, e) => /* @__PURE__ */ o(
134
- l.Item,
153
+ /* @__PURE__ */ o(c.Content, { children: m.map((t, e) => /* @__PURE__ */ o(
154
+ c.Item,
135
155
  {
136
156
  index: e,
137
- active: d === r,
138
- disabled: I.has(r),
139
- onClick: () => _(new Date(r, N)),
140
- children: r
157
+ active: i === t,
158
+ disabled: j.has(t),
159
+ onClick: () => u(new Date(t, y)),
160
+ children: t
141
161
  },
142
- r
162
+ t
143
163
  )) })
144
164
  ]
145
165
  }
146
166
  )
147
167
  ] }),
148
- w && /* @__PURE__ */ o(
168
+ g && /* @__PURE__ */ o(
149
169
  s,
150
170
  {
151
171
  type: "button",
152
- onClick: () => D && _(D),
172
+ onClick: () => S && u(S),
153
173
  visualType: "neutral",
154
- "aria-label": m("pickers.nextMonth"),
174
+ "aria-label": _("pickers.nextMonth"),
155
175
  icon: "arrow_forward",
156
- children: m("pickers.nextMonth")
176
+ children: _("pickers.nextMonth")
157
177
  }
158
178
  )
159
179
  ]
@@ -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;