@tedi-design-system/react 18.2.0-rc.1 → 18.2.0-rc.3

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 (28) hide show
  1. package/bundle-stats.html +1 -1
  2. package/index.css +1 -1
  3. package/package.json +1 -1
  4. package/src/tedi/components/content/calendar/calendar.cjs.js +1 -1
  5. package/src/tedi/components/content/calendar/calendar.d.ts +39 -3
  6. package/src/tedi/components/content/calendar/calendar.es.js +121 -101
  7. package/src/tedi/components/content/calendar/calendar.module.scss.cjs.js +1 -1
  8. package/src/tedi/components/content/calendar/calendar.module.scss.es.js +5 -2
  9. package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.cjs.js +1 -1
  10. package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.d.ts +4 -2
  11. package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.es.js +42 -42
  12. package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.module.scss.cjs.js +1 -1
  13. package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.module.scss.es.js +1 -0
  14. package/src/tedi/components/form/date-field/date-field.cjs.js +1 -1
  15. package/src/tedi/components/form/date-field/date-field.d.ts +10 -1
  16. package/src/tedi/components/form/date-field/date-field.es.js +147 -144
  17. package/src/tedi/components/form/date-field/date-picker-modal/date-picker-modal.cjs.js +1 -1
  18. package/src/tedi/components/form/date-field/date-picker-modal/date-picker-modal.d.ts +3 -0
  19. package/src/tedi/components/form/date-field/date-picker-modal/date-picker-modal.es.js +41 -39
  20. package/src/tedi/components/form/file-dropzone/file-dropzone.cjs.js +1 -1
  21. package/src/tedi/components/form/file-dropzone/file-dropzone.d.ts +14 -1
  22. package/src/tedi/components/form/file-dropzone/file-dropzone.es.js +120 -82
  23. package/src/tedi/components/form/file-dropzone/file-dropzone.module.scss.cjs.js +1 -1
  24. package/src/tedi/components/form/file-dropzone/file-dropzone.module.scss.es.js +1 -0
  25. package/src/tedi/components/form/file-upload/file-upload.d.ts +1 -1
  26. package/src/tedi/helpers/hooks/use-file-upload.d.ts +1 -1
  27. package/tedi.cjs.js +1 -1
  28. package/tedi.es.js +307 -306
@@ -1,27 +1,27 @@
1
- import { jsxs as a, jsx as n, Fragment as v } from "react/jsx-runtime";
2
- import D from "../../../../../../../external/classnames/index.es.js";
3
- import { useCallback as B, useMemo as N } from "react";
1
+ import { jsxs as a, jsx as n } from "react/jsx-runtime";
2
+ import v from "../../../../../../../external/classnames/index.es.js";
3
+ import { useCallback as B, useMemo as x } from "react";
4
4
  import { Icon as g } from "../../../../base/icon/icon.es.js";
5
5
  import { Text as C } from "../../../../base/typography/text/text.es.js";
6
- import { Button as m } from "../../../../buttons/button/button.es.js";
6
+ import { Button as s } from "../../../../buttons/button/button.es.js";
7
7
  import r from "./calendar-header.module.scss.es.js";
8
8
  import { useLabels as G } from "../../../../../providers/label-provider/use-labels.es.js";
9
9
  import { useNavigation as H } from "../../../../../../../external/react-day-picker/dist/esm/types/deprecated.es.js";
10
10
  import { dateMatchModifiers as R } from "../../../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.es.js";
11
11
  import { Dropdown as c } from "../../../../overlays/dropdown/dropdown.es.js";
12
12
  function Z({
13
- calendarMonth: Y,
14
- monthYearSelectType: F = "dropdown",
15
- onOpenMonthGrid: T,
16
- onOpenYearGrid: L,
13
+ calendarMonth: L,
14
+ monthYearSelectType: D = "dropdown",
15
+ onOpenMonthGrid: Y,
16
+ onOpenYearGrid: F,
17
17
  showNavigation: _ = !0,
18
- localeCode: p,
18
+ localeCode: u,
19
19
  disabledMatchers: o
20
20
  }) {
21
- const f = F === "grid", { getLabel: u } = G(), { goToMonth: h, nextMonth: S, previousMonth: x } = H(), d = Y.date, i = d.getFullYear(), y = d.getMonth(), A = Array.from(
21
+ const f = D === "grid", T = D === "static" || !_, { getLabel: p } = G(), { goToMonth: h, nextMonth: N, previousMonth: S } = H(), d = L.date, i = d.getFullYear(), y = d.getMonth(), A = Array.from(
22
22
  { length: 12 },
23
- (t, e) => new Date(i, e, 1).toLocaleString(p, { month: "long" })
24
- ), I = (/* @__PURE__ */ new Date()).getFullYear(), s = Array.from({ length: 21 }, (t, e) => I - 10 + e), w = B(
23
+ (t, e) => new Date(i, e, 1).toLocaleString(u, { month: "long" })
24
+ ), I = (/* @__PURE__ */ new Date()).getFullYear(), m = Array.from({ length: 21 }, (t, e) => I - 10 + e), w = B(
25
25
  (t, e) => {
26
26
  if (!(o != null && o.length)) return !1;
27
27
  const l = new Date(t);
@@ -32,7 +32,7 @@ function Z({
32
32
  return !0;
33
33
  },
34
34
  [o]
35
- ), j = N(() => {
35
+ ), j = x(() => {
36
36
  if (!(o != null && o.length)) return /* @__PURE__ */ new Set();
37
37
  const t = /* @__PURE__ */ new Set();
38
38
  for (let e = 0; e < 12; e++) {
@@ -40,53 +40,56 @@ function Z({
40
40
  w(l, k) && t.add(e);
41
41
  }
42
42
  return t;
43
- }, [o, i, w]), O = N(() => {
43
+ }, [o, i, w]), O = x(() => {
44
44
  if (!(o != null && o.length)) return /* @__PURE__ */ new Set();
45
45
  const t = /* @__PURE__ */ new Set();
46
- for (const e of s) {
46
+ for (const e of m) {
47
47
  const l = new Date(e, 0, 1), k = new Date(e, 11, 31);
48
48
  w(l, k) && t.add(e);
49
49
  }
50
50
  return t;
51
- }, [o, s, w]);
51
+ }, [o, m, w]);
52
52
  return /* @__PURE__ */ a(
53
53
  "div",
54
54
  {
55
- className: D(r["tedi-calendar__header"], {
55
+ className: v(r["tedi-calendar__header"], {
56
56
  [r["tedi-calendar__no-navigation"]]: !_
57
57
  }),
58
58
  children: [
59
59
  _ && /* @__PURE__ */ n(
60
- m,
60
+ s,
61
61
  {
62
62
  type: "button",
63
- onClick: () => x && h(x),
64
- "aria-label": u("pickers.previousMonth"),
63
+ onClick: () => S && h(S),
64
+ "aria-label": p("pickers.previousMonth"),
65
65
  icon: "arrow_back",
66
66
  visualType: "neutral",
67
- children: u("pickers.previousMonth")
67
+ children: p("pickers.previousMonth")
68
68
  }
69
69
  ),
70
- _ ? f ? /* @__PURE__ */ a(v, { children: [
70
+ T ? /* @__PURE__ */ a("div", { className: r["tedi-calendar__month-year-label"], children: [
71
+ /* @__PURE__ */ n(C, { children: d.toLocaleString(u, { month: "long" }) }),
72
+ /* @__PURE__ */ n(C, { children: i })
73
+ ] }) : f ? /* @__PURE__ */ a("div", { className: r["tedi-calendar__title"], children: [
71
74
  /* @__PURE__ */ a(
72
- m,
75
+ s,
73
76
  {
74
77
  noStyle: !0,
75
78
  className: r["tedi-calendar__month-year-selector"],
76
- onClick: T,
79
+ onClick: Y,
77
80
  "data-testid": "tedi-calendar-month-trigger",
78
81
  children: [
79
- d.toLocaleString(p, { month: "long" }),
82
+ d.toLocaleString(u, { month: "long" }),
80
83
  /* @__PURE__ */ n(g, { name: "arrow_drop_down", color: "tertiary", className: r["tedi-calendar__month-year-caret"] })
81
84
  ]
82
85
  }
83
86
  ),
84
87
  /* @__PURE__ */ a(
85
- m,
88
+ s,
86
89
  {
87
90
  noStyle: !0,
88
91
  className: r["tedi-calendar__month-year-selector"],
89
- onClick: L,
92
+ onClick: F,
90
93
  "data-testid": "tedi-calendar-year-trigger",
91
94
  children: [
92
95
  d.getFullYear(),
@@ -94,18 +97,18 @@ function Z({
94
97
  ]
95
98
  }
96
99
  )
97
- ] }) : /* @__PURE__ */ a(v, { children: [
100
+ ] }) : /* @__PURE__ */ a("div", { className: r["tedi-calendar__title"], children: [
98
101
  /* @__PURE__ */ a(
99
102
  c,
100
103
  {
101
- className: D(r["tedi-calendar__month-year-dropdown"], {
104
+ className: v(r["tedi-calendar__month-year-dropdown"], {
102
105
  [r["tedi-calendar__picker-grid-dropdown"]]: f
103
106
  }),
104
107
  width: "auto",
105
108
  defaultActiveIndex: y,
106
109
  children: [
107
- /* @__PURE__ */ n(c.Trigger, { children: /* @__PURE__ */ a(m, { noStyle: !0, className: r["tedi-calendar__month-year-selector"], children: [
108
- d.toLocaleString(p, { month: "long" }),
110
+ /* @__PURE__ */ n(c.Trigger, { children: /* @__PURE__ */ a(s, { noStyle: !0, className: r["tedi-calendar__month-year-selector"], children: [
111
+ d.toLocaleString(u, { month: "long" }),
109
112
  /* @__PURE__ */ n(
110
113
  g,
111
114
  {
@@ -133,13 +136,13 @@ function Z({
133
136
  /* @__PURE__ */ a(
134
137
  c,
135
138
  {
136
- className: D(r["tedi-calendar__month-year-dropdown"], {
139
+ className: v(r["tedi-calendar__month-year-dropdown"], {
137
140
  [r["tedi-calendar__picker-grid-dropdown"]]: f
138
141
  }),
139
142
  width: "auto",
140
- defaultActiveIndex: s.indexOf(i) === -1 ? void 0 : s.indexOf(i),
143
+ defaultActiveIndex: m.indexOf(i) === -1 ? void 0 : m.indexOf(i),
141
144
  children: [
142
- /* @__PURE__ */ n(c.Trigger, { children: /* @__PURE__ */ a(m, { noStyle: !0, className: r["tedi-calendar__month-year-selector"], children: [
145
+ /* @__PURE__ */ n(c.Trigger, { children: /* @__PURE__ */ a(s, { noStyle: !0, className: r["tedi-calendar__month-year-selector"], children: [
143
146
  d.getFullYear(),
144
147
  /* @__PURE__ */ n(
145
148
  g,
@@ -151,7 +154,7 @@ function Z({
151
154
  }
152
155
  )
153
156
  ] }) }),
154
- /* @__PURE__ */ n(c.Content, { children: s.map((t, e) => /* @__PURE__ */ n(
157
+ /* @__PURE__ */ n(c.Content, { children: m.map((t, e) => /* @__PURE__ */ n(
155
158
  c.Item,
156
159
  {
157
160
  index: e,
@@ -165,19 +168,16 @@ function Z({
165
168
  ]
166
169
  }
167
170
  )
168
- ] }) : /* @__PURE__ */ a("div", { className: r["tedi-calendar__month-year-label"], children: [
169
- /* @__PURE__ */ n(C, { children: d.toLocaleString(p, { month: "long" }) }),
170
- /* @__PURE__ */ n(C, { children: i })
171
171
  ] }),
172
172
  _ && /* @__PURE__ */ n(
173
- m,
173
+ s,
174
174
  {
175
175
  type: "button",
176
- onClick: () => S && h(S),
176
+ onClick: () => N && h(N),
177
177
  visualType: "neutral",
178
- "aria-label": u("pickers.nextMonth"),
178
+ "aria-label": p("pickers.nextMonth"),
179
179
  icon: "arrow_forward",
180
- children: u("pickers.nextMonth")
180
+ children: p("pickers.nextMonth")
181
181
  }
182
182
  )
183
183
  ]
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-calendar__header":"tedi-calendar__header-b917e6c6","tedi-calendar__no-navigation":"tedi-calendar__no-navigation-6ed593b5","tedi-calendar__month-year-dropdown":"tedi-calendar__month-year-dropdown-87f6e081","tedi-calendar__month-year-selector":"tedi-calendar__month-year-selector-8fbb2727","tedi-calendar__month-year-caret":"tedi-calendar__month-year-caret-a08a1e16","tedi-calendar__month-year-label":"tedi-calendar__month-year-label-d3cf51de"};exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-calendar__header":"tedi-calendar__header-b917e6c6","tedi-calendar__no-navigation":"tedi-calendar__no-navigation-6ed593b5","tedi-calendar__title":"tedi-calendar__title-bb2ef90a","tedi-calendar__month-year-dropdown":"tedi-calendar__month-year-dropdown-87f6e081","tedi-calendar__month-year-selector":"tedi-calendar__month-year-selector-8fbb2727","tedi-calendar__month-year-caret":"tedi-calendar__month-year-caret-a08a1e16","tedi-calendar__month-year-label":"tedi-calendar__month-year-label-d3cf51de"};exports.default=e;
@@ -1,6 +1,7 @@
1
1
  const e = {
2
2
  "tedi-calendar__header": "tedi-calendar__header-b917e6c6",
3
3
  "tedi-calendar__no-navigation": "tedi-calendar__no-navigation-6ed593b5",
4
+ "tedi-calendar__title": "tedi-calendar__title-bb2ef90a",
4
5
  "tedi-calendar__month-year-dropdown": "tedi-calendar__month-year-dropdown-87f6e081",
5
6
  "tedi-calendar__month-year-selector": "tedi-calendar__month-year-selector-8fbb2727",
6
7
  "tedi-calendar__month-year-caret": "tedi-calendar__month-year-caret-a08a1e16",
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react/jsx-runtime"),A=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),I=require("../../../../../external/classnames/index.cjs.js"),a=require("react"),_t=require("../../content/calendar/calendar.cjs.js"),xt=require("../multi-value-field/multi-value-field.cjs.js"),Mt=require("../textfield/textfield.cjs.js"),y=require("./date-field.module.scss.cjs.js"),P=require("./date-field-helpers.cjs.js"),Ct=require("./date-picker-modal/date-picker-modal.cjs.js"),At=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),Ft=require("../../../providers/label-provider/use-labels.cjs.js"),kt=require("../../../../../external/react-day-picker/dist/esm/locale/et.cjs.js"),me=require("../../../helpers/hooks/use-breakpoint.cjs.js"),Pt=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),G=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),vt=require("../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs.js"),Te=a.forwardRef((T,v)=>{const{getCurrentBreakpointProps:je}=At.useBreakpointProps(T.defaultServerBreakpoint),{getLabel:z}=Ft.useLabels(),{useNativePicker:Se=!1,enableCalendar:h=!0,calendarTrigger:j="button",numberOfMonths:X}=je(T),{id:pe,mode:l="single",label:he,selected:w,onSelect:i,disabled:N,disabledMatchers:E,placeholder:Le,className:$e,formatDate:u,required:S,showOutsideDays:ge=!0,parseDate:He,monthYearSelectType:be,tagsDirection:Ue,showNavigation:ye=!0,selectionLevel:O="days",initialView:L,locale:De=kt.et,localeCode:$="et-EE",initialMonth:H,closeOnSelect:We,footer:_e,defaultValue:U,minDate:J,maxDate:K,disablePast:xe,disableFuture:Me,shouldDisableMonth:Q,shouldDisableYear:Z,readOnly:R,availableDays:Ce,inputProps:n,modal:ee=!1,modalProps:Ye,modalTitle:Ge,disabledDateErrorMessage:ze=z("dateField.disabledDateError"),invalidDateErrorMessage:Xe=z("dateField.invalidDateError"),useNativePicker:wt,enableCalendar:Nt,calendarTrigger:Et,numberOfMonths:Ot,defaultServerBreakpoint:Rt,sm:Vt,md:qt,lg:Bt,xl:It,xxl:Tt,...Ae}=T,f=Se&&l==="single",Fe=me.default(T.defaultServerBreakpoint),F=me.isBreakpointBelow(Fe,"md"),[Je,D]=a.useState(w??U),[g,V]=a.useState(!1),[te,ke]=a.useState(!1),[Ke,Pe]=a.useState(L??O),[re,_]=a.useState(""),[ve,m]=a.useState(!1),[we,ae]=a.useState(!1),b=h&&!f&&!R&&(ee===!0||typeof ee=="string"&&me.isBreakpointBelow(Fe,ee)),Ne=F&&!b&&typeof X=="number"&&X>1?1:X,c=w!==void 0,o=c?w:Je,ie=a.useRef(null),Ee=a.useRef(null),Qe=a.useCallback(e=>{ie.current=e,typeof v=="function"?v(e):v&&(v.current=e)},[v]),Ze=e=>{if(!e)return"";const t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${s}`},et=f&&o instanceof Date?Ze(o):"",ne=a.useCallback((e,t)=>e instanceof Date?e:Array.isArray(e)&&e.length>0?[...e].sort((r,s)=>r.getTime()-s.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,[]),[tt,se]=a.useState(()=>ne(o,H));a.useEffect(()=>{g||se(ne(o,H))},[o,H,g,ne]),a.useEffect(()=>{g&&Pe(L??O)},[g,O,L]),a.useEffect(()=>{c&&D(w)},[w,c]);const x=a.useMemo(()=>new Intl.DateTimeFormat($,{day:"2-digit",month:"2-digit",year:"numeric"}),[$]),M=a.useCallback(e=>{if(!e)return"";if(e instanceof Date)return x.format(e);if(Array.isArray(e))return e.map(t=>x.format(t)).join(", ");if(e.from){const t=x.format(e.from);return e.to?`${t} – ${x.format(e.to)}`:t}return""},[x]),oe=We??l==="single",Oe=l==="multiple"&&Array.isArray(o)?o.map((e,t)=>({id:t,label:u?u(e):M(e),date:e})):[],W=a.useMemo(()=>{const e=[];return N&&(Array.isArray(N)?e.push(...N):e.push(N)),E&&(Array.isArray(E)?e.push(...E):e.push(E)),J&&e.push({before:J}),K&&e.push({after:K}),xe&&e.push({before:new Date}),Me&&e.push({after:new Date}),Q&&e.push(t=>Q(t)),Z&&e.push(t=>Z(t)),e},[N,E,J,K,xe,Me,Q,Z]),k=a.useCallback(e=>vt.dateMatchModifiers(e,W),[W]),rt=(e,t,r,s)=>{const d=l==="range"?P.resolveRangeSelection(e,o,t):e;if(m(!1),c||D(d),i==null||i(d,t,r,s),d){const C=u?u(d):M(d);_(C)}else _("");oe&&V(!1)},at=e=>{if(k(e))return;const t=l==="range"?{from:e,to:void 0}:l==="multiple"?[...Array.isArray(o)?o:[],e]:e;m(!1),c||D(t),i==null||i(t,e,{},{});const r=u?u(t):M(t);_(r),oe&&V(!1)},it=a.useMemo(()=>{const e=P.getLocaleDateParts(x),t=new RegExp(`^${P.buildDateRegexSource(e)}$`),{fieldOrder:r}=e;return s=>{const d=s.match(t);if(!d)return;const C={};r.forEach((yt,Dt)=>{C[yt]=Number(d[Dt+1])});const{day:ue,month:ce,year:fe}=C;if(ue===void 0||ce===void 0||fe===void 0)return;const B=new Date(fe,ce-1,ue);if(!(isNaN(B.getTime())||B.getFullYear()!==fe||B.getMonth()!==ce-1||B.getDate()!==ue))return B}},[x]),Re=e=>(He??(l==="single"?it:()=>{}))(e),Ve=e=>l==="single"&&e instanceof Date||l==="multiple"&&Array.isArray(e)||l==="range"&&!!e&&!Array.isArray(e)&&"from"in e,nt=e=>{if(_(e),ae(!1),e.trim()===""){m(!1);return}const t=Re(e);if(!Ve(t)){m(!1);return}const s=t&&!Array.isArray(t)&&"from"in t?t:null;if(t instanceof Date&&k(t)||Array.isArray(t)&&t.some(C=>C instanceof Date&&k(C))||!!s&&(s.from&&k(s.from)||s.to&&k(s.to))){m(!0);return}m(!1),c||D(t),i==null||i(t,t,{},{}),t instanceof Date&&se(t),oe&&V(!1)},st=()=>{if(re.trim()===""){ae(!1);return}ae(!Ve(Re(re)))};a.useEffect(()=>{if(c){const e=u?u(o):M(o);_(e)}},[o,c,u,M]),a.useEffect(()=>{if(!c&&U){const e=u?u(U):M(U);_(e)}},[]);const ot=A.useFloating({open:g,onOpenChange:V,placement:j==="input"?"bottom-start":"bottom-end",middleware:[G.offset(P.CALENDAR_POPOVER_OFFSET),G.flip(),G.shift({padding:P.CALENDAR_POPOVER_PADDING}),G.size({padding:P.CALENDAR_POPOVER_PADDING,apply({availableWidth:e,elements:t}){const r=t.floating;if(r.style.width="",r.style.maxWidth="",r.style.overflowX="",F)return;r.style.width="max-content",r.getBoundingClientRect().width>e&&(r.style.width="min-content",r.style.maxWidth=`${e}px`)}})],whileElementsMounted:Pt.autoUpdate}),{refs:q,context:Y,x:lt,y:dt,strategy:ut}=ot,ct=A.useClick(Y),qe=A.useInteractions([...h&&!f&&j==="input"&&!b?[ct]:[],A.useDismiss(Y,{outsidePress:e=>{const t=e.target;return!(t!=null&&t.closest('[role="menu"], [role="listbox"]'))}}),A.useRole(Y,{role:"dialog"})]);a.useEffect(()=>{var t,r;const e=l==="multiple"?((t=Ee.current)==null?void 0:t.wrapper)??null:((r=ie.current)==null?void 0:r.input)??null;q.setPositionReference(e??q.reference.current)},[l,g,q]);const ft=()=>{var t;const e=(t=ie.current)==null?void 0:t.input;if(e){if(typeof e.showPicker=="function")try{e.showPicker();return}catch{}e.focus()}},le=()=>{!h||R||(f?ft():b?ke(!0):V(e=>!e))},mt=e=>{if(m(!1),c||D(e),i==null||i(e,e,{},{}),e){const t=u?u(e):M(e);_(t)}else _("")},pt=e=>{if(!e){m(!1),c||D(void 0),i==null||i(void 0,void 0,{},{});return}const[t,r,s]=e.split("-").map(Number);if(!t||!r||!s)return;const d=new Date(t,r-1,s);if(!Number.isNaN(d.getTime())){if(k(d)){m(!0);return}m(!1),c||D(d),i==null||i(d,d,{},{})}},ht=qe.getReferenceProps(b&&j==="input"?{onClick:()=>le()}:void 0),{role:jt,"aria-expanded":St,"aria-haspopup":Lt,"aria-controls":gt,...bt}=ht,Be=b?void 0:gt,de=z("dateField.openCalendar"),Ie={"aria-label":de,"aria-expanded":b?te:g,"aria-haspopup":"dialog","aria-controls":Be};return p.jsxs(p.Fragment,{children:[p.jsx("div",{className:I.default(y.default["tedi-date-field__container"],$e),...bt,ref:q.setReference,children:l==="multiple"?p.jsx(xt.MultiValueField,{...n,ref:Ee,id:pe,label:he,tagsDirection:Ue,values:Oe.map(e=>e.label),icon:"calendar_today",onIconClick:le,iconButtonProps:h?Ie:{"aria-label":de},isClearable:!0,required:S,onChange:e=>{if(!Array.isArray(o))return;const t=Oe.filter(r=>e.includes(r.label)).map(r=>r.date);c||D(t),i==null||i(t,{},{},{})},className:I.default(y.default["tedi-date-field__textfield"],{[y.default["tedi-date-field__icon--disabled"]]:!h||R})}):p.jsx(Mt.TextField,{...n,ref:Qe,id:pe,label:he,readOnly:R,value:f?et:re,placeholder:Le,icon:"calendar_today",isClearable:!0,onIconClick:le,iconButtonProps:h&&!f?Ie:{"aria-label":de},onChange:e=>f?pt(e):nt(e),onBlur:e=>{var t;f||st(),(t=n==null?void 0:n.onBlur)==null||t.call(n,e)},required:S,invalid:ve||we||(n==null?void 0:n.invalid),helper:(()=>{const e=n==null?void 0:n.helper,t=ve?ze:we?Xe:null,r=t?{text:t,type:"error"}:null;return r?e?Array.isArray(e)?[...e,r]:[e,r]:r:e})(),className:I.default(y.default["tedi-date-field__textfield"],{[y.default["tedi-date-field__textfield--disabled"]]:n==null?void 0:n.disabled,[y.default["tedi-date-field__icon--disabled"]]:!h||R}),input:{...n==null?void 0:n.input,...f&&{type:"date"},...h&&!f&&j==="input"?{role:"combobox","aria-haspopup":"dialog","aria-expanded":b?te:g,"aria-controls":Be}:{}}})}),b&&p.jsx(Ct.DatePickerModal,{open:te,onOpenChange:ke,value:o,onConfirm:mt,mode:l,numberOfMonths:Ne,locale:De,localeCode:$,showOutsideDays:ge,disabledMatchers:W,required:S,availableDays:Ce,footer:_e,monthYearSelectType:be,showNavigation:ye,selectionLevel:O,initialView:L,initialMonth:H,modalProps:Ye,...Ae,title:Ge}),h&&!f&&!b&&p.jsx(A.FloatingPortal,{children:g&&p.jsx(A.FloatingFocusManager,{context:Y,modal:!1,initialFocus:-1,children:p.jsx("div",{ref:q.setFloating,className:I.default({[y.default["tedi-date-field__calendar-popover--fullwidth"]]:F}),...qe.getFloatingProps({style:{position:ut,top:dt??0,left:F?0:lt??0,right:F?0:void 0}}),children:p.jsx(_t.Calendar,{...Ae,numberOfMonths:Ne,view:Ke,selectionLevel:O,currentMonth:tt,setCurrentMonth:se,setView:Pe,mode:l,value:o,locale:De,localeCode:$,showOutsideDays:ge,disabledMatchers:W,required:S,availableDays:Ce,footer:_e,monthYearSelectType:be,showNavigation:ye,handleSelect:rt,applyValue:at,className:I.default(y.default["tedi-date-field__calendar"],{[y.default["tedi-date-field__calendar--fullwidth"]]:F})})})})})]})});Te.displayName="DateField";exports.DateField=Te;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react/jsx-runtime"),A=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),I=require("../../../../../external/classnames/index.cjs.js"),a=require("react"),xt=require("../../content/calendar/calendar.cjs.js"),Mt=require("../multi-value-field/multi-value-field.cjs.js"),Ct=require("../textfield/textfield.cjs.js"),y=require("./date-field.module.scss.cjs.js"),P=require("./date-field-helpers.cjs.js"),At=require("./date-picker-modal/date-picker-modal.cjs.js"),Ft=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),kt=require("../../../providers/label-provider/use-labels.cjs.js"),Pt=require("../../../../../external/react-day-picker/dist/esm/locale/et.cjs.js"),me=require("../../../helpers/hooks/use-breakpoint.cjs.js"),vt=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),G=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),wt=require("../../../../../external/react-day-picker/dist/esm/utils/dateMatchModifiers.cjs.js"),je=a.forwardRef((T,v)=>{const{getCurrentBreakpointProps:Se}=Ft.useBreakpointProps(T.defaultServerBreakpoint),{getLabel:z}=kt.useLabels(),{useNativePicker:Le=!1,enableCalendar:h=!0,calendarTrigger:j="button",numberOfMonths:X}=Se(T),{id:pe,mode:l="single",label:he,selected:w,onSelect:i,disabled:N,disabledMatchers:E,placeholder:$e,className:He,formatDate:u,required:S,showOutsideDays:ge=!0,parseDate:Ue,monthYearSelectType:be,dayStatus:ye,tagsDirection:We,showNavigation:De=!0,selectionLevel:O="days",initialView:L,locale:_e=Pt.et,localeCode:$="et-EE",initialMonth:H,closeOnSelect:Ye,footer:xe,defaultValue:U,minDate:J,maxDate:K,disablePast:Me,disableFuture:Ce,shouldDisableMonth:Q,shouldDisableYear:Z,readOnly:R,availableDays:Ae,inputProps:n,modal:ee=!1,modalProps:Ge,modalTitle:ze,disabledDateErrorMessage:Xe=z("dateField.disabledDateError"),invalidDateErrorMessage:Je=z("dateField.invalidDateError"),useNativePicker:Nt,enableCalendar:Et,calendarTrigger:Ot,numberOfMonths:Rt,defaultServerBreakpoint:Vt,sm:qt,md:Bt,lg:It,xl:Tt,xxl:jt,...Fe}=T,f=Le&&l==="single",ke=me.default(T.defaultServerBreakpoint),F=me.isBreakpointBelow(ke,"md"),[Ke,D]=a.useState(w??U),[g,V]=a.useState(!1),[te,Pe]=a.useState(!1),[Qe,ve]=a.useState(L??O),[re,_]=a.useState(""),[we,m]=a.useState(!1),[Ne,ae]=a.useState(!1),b=h&&!f&&!R&&(ee===!0||typeof ee=="string"&&me.isBreakpointBelow(ke,ee)),Ee=F&&!b&&typeof X=="number"&&X>1?1:X,c=w!==void 0,o=c?w:Ke,ie=a.useRef(null),Oe=a.useRef(null),Ze=a.useCallback(e=>{ie.current=e,typeof v=="function"?v(e):v&&(v.current=e)},[v]),et=e=>{if(!e)return"";const t=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${t}-${r}-${s}`},tt=f&&o instanceof Date?et(o):"",ne=a.useCallback((e,t)=>e instanceof Date?e:Array.isArray(e)&&e.length>0?[...e].sort((r,s)=>r.getTime()-s.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,[]),[rt,se]=a.useState(()=>ne(o,H));a.useEffect(()=>{g||se(ne(o,H))},[o,H,g,ne]),a.useEffect(()=>{g&&ve(L??O)},[g,O,L]),a.useEffect(()=>{c&&D(w)},[w,c]);const x=a.useMemo(()=>new Intl.DateTimeFormat($,{day:"2-digit",month:"2-digit",year:"numeric"}),[$]),M=a.useCallback(e=>{if(!e)return"";if(e instanceof Date)return x.format(e);if(Array.isArray(e))return e.map(t=>x.format(t)).join(", ");if(e.from){const t=x.format(e.from);return e.to?`${t} – ${x.format(e.to)}`:t}return""},[x]),oe=Ye??l==="single",Re=l==="multiple"&&Array.isArray(o)?o.map((e,t)=>({id:t,label:u?u(e):M(e),date:e})):[],W=a.useMemo(()=>{const e=[];return N&&(Array.isArray(N)?e.push(...N):e.push(N)),E&&(Array.isArray(E)?e.push(...E):e.push(E)),J&&e.push({before:J}),K&&e.push({after:K}),Me&&e.push({before:new Date}),Ce&&e.push({after:new Date}),Q&&e.push(t=>Q(t)),Z&&e.push(t=>Z(t)),e},[N,E,J,K,Me,Ce,Q,Z]),k=a.useCallback(e=>wt.dateMatchModifiers(e,W),[W]),at=(e,t,r,s)=>{const d=l==="range"?P.resolveRangeSelection(e,o,t):e;if(m(!1),c||D(d),i==null||i(d,t,r,s),d){const C=u?u(d):M(d);_(C)}else _("");oe&&V(!1)},it=e=>{if(k(e))return;const t=l==="range"?{from:e,to:void 0}:l==="multiple"?[...Array.isArray(o)?o:[],e]:e;m(!1),c||D(t),i==null||i(t,e,{},{});const r=u?u(t):M(t);_(r),oe&&V(!1)},nt=a.useMemo(()=>{const e=P.getLocaleDateParts(x),t=new RegExp(`^${P.buildDateRegexSource(e)}$`),{fieldOrder:r}=e;return s=>{const d=s.match(t);if(!d)return;const C={};r.forEach((Dt,_t)=>{C[Dt]=Number(d[_t+1])});const{day:ue,month:ce,year:fe}=C;if(ue===void 0||ce===void 0||fe===void 0)return;const B=new Date(fe,ce-1,ue);if(!(isNaN(B.getTime())||B.getFullYear()!==fe||B.getMonth()!==ce-1||B.getDate()!==ue))return B}},[x]),Ve=e=>(Ue??(l==="single"?nt:()=>{}))(e),qe=e=>l==="single"&&e instanceof Date||l==="multiple"&&Array.isArray(e)||l==="range"&&!!e&&!Array.isArray(e)&&"from"in e,st=e=>{if(_(e),ae(!1),e.trim()===""){m(!1);return}const t=Ve(e);if(!qe(t)){m(!1);return}const s=t&&!Array.isArray(t)&&"from"in t?t:null;if(t instanceof Date&&k(t)||Array.isArray(t)&&t.some(C=>C instanceof Date&&k(C))||!!s&&(s.from&&k(s.from)||s.to&&k(s.to))){m(!0);return}m(!1),c||D(t),i==null||i(t,t,{},{}),t instanceof Date&&se(t),oe&&V(!1)},ot=()=>{if(re.trim()===""){ae(!1);return}ae(!qe(Ve(re)))};a.useEffect(()=>{if(c){const e=u?u(o):M(o);_(e)}},[o,c,u,M]),a.useEffect(()=>{if(!c&&U){const e=u?u(U):M(U);_(e)}},[]);const lt=A.useFloating({open:g,onOpenChange:V,placement:j==="input"?"bottom-start":"bottom-end",middleware:[G.offset(P.CALENDAR_POPOVER_OFFSET),G.flip(),G.shift({padding:P.CALENDAR_POPOVER_PADDING}),G.size({padding:P.CALENDAR_POPOVER_PADDING,apply({availableWidth:e,elements:t}){const r=t.floating;if(r.style.width="",r.style.maxWidth="",r.style.overflowX="",F)return;r.style.width="max-content",r.getBoundingClientRect().width>e&&(r.style.width="min-content",r.style.maxWidth=`${e}px`)}})],whileElementsMounted:vt.autoUpdate}),{refs:q,context:Y,x:dt,y:ut,strategy:ct}=lt,ft=A.useClick(Y),Be=A.useInteractions([...h&&!f&&j==="input"&&!b?[ft]:[],A.useDismiss(Y,{outsidePress:e=>{const t=e.target;return!(t!=null&&t.closest('[role="menu"], [role="listbox"]'))}}),A.useRole(Y,{role:"dialog"})]);a.useEffect(()=>{var t,r;const e=l==="multiple"?((t=Oe.current)==null?void 0:t.wrapper)??null:((r=ie.current)==null?void 0:r.input)??null;q.setPositionReference(e??q.reference.current)},[l,g,q]);const mt=()=>{var t;const e=(t=ie.current)==null?void 0:t.input;if(e){if(typeof e.showPicker=="function")try{e.showPicker();return}catch{}e.focus()}},le=()=>{!h||R||(f?mt():b?Pe(!0):V(e=>!e))},pt=e=>{if(m(!1),c||D(e),i==null||i(e,e,{},{}),e){const t=u?u(e):M(e);_(t)}else _("")},ht=e=>{if(!e){m(!1),c||D(void 0),i==null||i(void 0,void 0,{},{});return}const[t,r,s]=e.split("-").map(Number);if(!t||!r||!s)return;const d=new Date(t,r-1,s);if(!Number.isNaN(d.getTime())){if(k(d)){m(!0);return}m(!1),c||D(d),i==null||i(d,d,{},{})}},gt=Be.getReferenceProps(b&&j==="input"?{onClick:()=>le()}:void 0),{role:St,"aria-expanded":Lt,"aria-haspopup":$t,"aria-controls":bt,...yt}=gt,Ie=b?void 0:bt,de=z("dateField.openCalendar"),Te={"aria-label":de,"aria-expanded":b?te:g,"aria-haspopup":"dialog","aria-controls":Ie};return p.jsxs(p.Fragment,{children:[p.jsx("div",{className:I.default(y.default["tedi-date-field__container"],He),...yt,ref:q.setReference,children:l==="multiple"?p.jsx(Mt.MultiValueField,{...n,ref:Oe,id:pe,label:he,tagsDirection:We,values:Re.map(e=>e.label),icon:"calendar_today",onIconClick:le,iconButtonProps:h?Te:{"aria-label":de},isClearable:!0,required:S,onChange:e=>{if(!Array.isArray(o))return;const t=Re.filter(r=>e.includes(r.label)).map(r=>r.date);c||D(t),i==null||i(t,{},{},{})},className:I.default(y.default["tedi-date-field__textfield"],{[y.default["tedi-date-field__icon--disabled"]]:!h||R})}):p.jsx(Ct.TextField,{...n,ref:Ze,id:pe,label:he,readOnly:R,value:f?tt:re,placeholder:$e,icon:"calendar_today",isClearable:!0,onIconClick:le,iconButtonProps:h&&!f?Te:{"aria-label":de},onChange:e=>f?ht(e):st(e),onBlur:e=>{var t;f||ot(),(t=n==null?void 0:n.onBlur)==null||t.call(n,e)},required:S,invalid:we||Ne||(n==null?void 0:n.invalid),helper:(()=>{const e=n==null?void 0:n.helper,t=we?Xe:Ne?Je:null,r=t?{text:t,type:"error"}:null;return r?e?Array.isArray(e)?[...e,r]:[e,r]:r:e})(),className:I.default(y.default["tedi-date-field__textfield"],{[y.default["tedi-date-field__textfield--disabled"]]:n==null?void 0:n.disabled,[y.default["tedi-date-field__icon--disabled"]]:!h||R}),input:{...n==null?void 0:n.input,...f&&{type:"date"},...h&&!f&&j==="input"?{role:"combobox","aria-haspopup":"dialog","aria-expanded":b?te:g,"aria-controls":Ie}:{}}})}),b&&p.jsx(At.DatePickerModal,{open:te,onOpenChange:Pe,value:o,onConfirm:pt,mode:l,numberOfMonths:Ee,locale:_e,localeCode:$,showOutsideDays:ge,disabledMatchers:W,required:S,availableDays:Ae,footer:xe,monthYearSelectType:be,dayStatus:ye,showNavigation:De,selectionLevel:O,initialView:L,initialMonth:H,modalProps:Ge,...Fe,title:ze}),h&&!f&&!b&&p.jsx(A.FloatingPortal,{children:g&&p.jsx(A.FloatingFocusManager,{context:Y,modal:!1,initialFocus:-1,children:p.jsx("div",{ref:q.setFloating,className:I.default({[y.default["tedi-date-field__calendar-popover--fullwidth"]]:F}),...Be.getFloatingProps({style:{position:ct,top:ut??0,left:F?0:dt??0,right:F?0:void 0}}),children:p.jsx(xt.Calendar,{...Fe,numberOfMonths:Ee,view:Qe,selectionLevel:O,currentMonth:rt,setCurrentMonth:se,setView:ve,mode:l,value:o,locale:_e,localeCode:$,showOutsideDays:ge,disabledMatchers:W,required:S,availableDays:Ae,footer:xe,monthYearSelectType:be,dayStatus:ye,showNavigation:De,handleSelect:at,applyValue:it,className:I.default(y.default["tedi-date-field__calendar"],{[y.default["tedi-date-field__calendar--fullwidth"]]:F})})})})})]})});je.displayName="DateField";exports.DateField=je;
@@ -1,6 +1,7 @@
1
1
  import { default as React } from 'react';
2
2
  import { DateRange, DayPickerProps, Locale, Matcher, OnSelectHandler } from 'react-day-picker';
3
3
  import { Breakpoint, BreakpointSupport } from '../../../helpers';
4
+ import { DayStatusFn } from '../../content/calendar/calendar';
4
5
  import { ModalContentProps } from '../../overlays/modal/modal-content/modal-content';
5
6
  import { MultiValueFieldProps } from '../multi-value-field/multi-value-field';
6
7
  import { TextFieldForwardRef, TextFieldProps } from '../textfield/textfield';
@@ -127,9 +128,17 @@ export interface DateFieldProps extends BreakpointSupport<DateFieldBreakpointPro
127
128
  * Forwarded to the internal `Calendar` / `CalendarHeader`.
128
129
  * - `'dropdown'` (default) — each picker is a `<Select>` dropdown.
129
130
  * - `'grid'` — each picker opens a full grid of options.
131
+ * - `'static'` — the month/year is a plain, non-clickable label; only the
132
+ * prev/next navigation buttons can change the month (disables month/year selection).
130
133
  * @default dropdown
131
134
  */
132
- monthYearSelectType?: 'dropdown' | 'grid';
135
+ monthYearSelectType?: 'dropdown' | 'grid' | 'static';
136
+ /**
137
+ * Optional per-day status forwarded to the calendar. Return a `{ type, label }`
138
+ * to overlay a `StatusIndicator` dot on that day (the `label` is folded into the
139
+ * day's `aria-label`), or `null` / `undefined` for no status.
140
+ */
141
+ dayStatus?: DayStatusFn;
133
142
  /**
134
143
  * Show or hide the calendar header's previous/next navigation. When hidden, the month/year header
135
144
  * also becomes a static, non-interactive label (no dropdown / grid jumping) — so the calendar is