@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.
- package/bundle-stats.html +1 -1
- package/index.css +1 -1
- package/package.json +1 -1
- package/src/tedi/components/content/calendar/calendar.cjs.js +1 -1
- package/src/tedi/components/content/calendar/calendar.d.ts +39 -3
- package/src/tedi/components/content/calendar/calendar.es.js +121 -101
- package/src/tedi/components/content/calendar/calendar.module.scss.cjs.js +1 -1
- package/src/tedi/components/content/calendar/calendar.module.scss.es.js +5 -2
- package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.cjs.js +1 -1
- package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.d.ts +4 -2
- package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.es.js +42 -42
- package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.module.scss.cjs.js +1 -1
- package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.module.scss.es.js +1 -0
- package/src/tedi/components/form/date-field/date-field.cjs.js +1 -1
- package/src/tedi/components/form/date-field/date-field.d.ts +10 -1
- package/src/tedi/components/form/date-field/date-field.es.js +147 -144
- package/src/tedi/components/form/date-field/date-picker-modal/date-picker-modal.cjs.js +1 -1
- package/src/tedi/components/form/date-field/date-picker-modal/date-picker-modal.d.ts +3 -0
- package/src/tedi/components/form/date-field/date-picker-modal/date-picker-modal.es.js +41 -39
- package/src/tedi/components/form/file-dropzone/file-dropzone.cjs.js +1 -1
- package/src/tedi/components/form/file-dropzone/file-dropzone.d.ts +14 -1
- package/src/tedi/components/form/file-dropzone/file-dropzone.es.js +120 -82
- package/src/tedi/components/form/file-dropzone/file-dropzone.module.scss.cjs.js +1 -1
- package/src/tedi/components/form/file-dropzone/file-dropzone.module.scss.es.js +1 -0
- package/src/tedi/components/form/file-upload/file-upload.d.ts +1 -1
- package/src/tedi/helpers/hooks/use-file-upload.d.ts +1 -1
- package/tedi.cjs.js +1 -1
- package/tedi.es.js +307 -306
package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.es.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { jsxs as a, jsx as n
|
|
2
|
-
import
|
|
3
|
-
import { useCallback as B, useMemo as
|
|
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
|
|
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:
|
|
14
|
-
monthYearSelectType:
|
|
15
|
-
onOpenMonthGrid:
|
|
16
|
-
onOpenYearGrid:
|
|
13
|
+
calendarMonth: L,
|
|
14
|
+
monthYearSelectType: D = "dropdown",
|
|
15
|
+
onOpenMonthGrid: Y,
|
|
16
|
+
onOpenYearGrid: F,
|
|
17
17
|
showNavigation: _ = !0,
|
|
18
|
-
localeCode:
|
|
18
|
+
localeCode: u,
|
|
19
19
|
disabledMatchers: o
|
|
20
20
|
}) {
|
|
21
|
-
const f =
|
|
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(
|
|
24
|
-
), I = (/* @__PURE__ */ new Date()).getFullYear(),
|
|
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 =
|
|
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 =
|
|
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
|
|
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,
|
|
51
|
+
}, [o, m, w]);
|
|
52
52
|
return /* @__PURE__ */ a(
|
|
53
53
|
"div",
|
|
54
54
|
{
|
|
55
|
-
className:
|
|
55
|
+
className: v(r["tedi-calendar__header"], {
|
|
56
56
|
[r["tedi-calendar__no-navigation"]]: !_
|
|
57
57
|
}),
|
|
58
58
|
children: [
|
|
59
59
|
_ && /* @__PURE__ */ n(
|
|
60
|
-
|
|
60
|
+
s,
|
|
61
61
|
{
|
|
62
62
|
type: "button",
|
|
63
|
-
onClick: () =>
|
|
64
|
-
"aria-label":
|
|
63
|
+
onClick: () => S && h(S),
|
|
64
|
+
"aria-label": p("pickers.previousMonth"),
|
|
65
65
|
icon: "arrow_back",
|
|
66
66
|
visualType: "neutral",
|
|
67
|
-
children:
|
|
67
|
+
children: p("pickers.previousMonth")
|
|
68
68
|
}
|
|
69
69
|
),
|
|
70
|
-
|
|
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
|
-
|
|
75
|
+
s,
|
|
73
76
|
{
|
|
74
77
|
noStyle: !0,
|
|
75
78
|
className: r["tedi-calendar__month-year-selector"],
|
|
76
|
-
onClick:
|
|
79
|
+
onClick: Y,
|
|
77
80
|
"data-testid": "tedi-calendar-month-trigger",
|
|
78
81
|
children: [
|
|
79
|
-
d.toLocaleString(
|
|
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
|
-
|
|
88
|
+
s,
|
|
86
89
|
{
|
|
87
90
|
noStyle: !0,
|
|
88
91
|
className: r["tedi-calendar__month-year-selector"],
|
|
89
|
-
onClick:
|
|
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(
|
|
100
|
+
] }) : /* @__PURE__ */ a("div", { className: r["tedi-calendar__title"], children: [
|
|
98
101
|
/* @__PURE__ */ a(
|
|
99
102
|
c,
|
|
100
103
|
{
|
|
101
|
-
className:
|
|
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(
|
|
108
|
-
d.toLocaleString(
|
|
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:
|
|
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:
|
|
143
|
+
defaultActiveIndex: m.indexOf(i) === -1 ? void 0 : m.indexOf(i),
|
|
141
144
|
children: [
|
|
142
|
-
/* @__PURE__ */ n(c.Trigger, { children: /* @__PURE__ */ a(
|
|
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:
|
|
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
|
-
|
|
173
|
+
s,
|
|
174
174
|
{
|
|
175
175
|
type: "button",
|
|
176
|
-
onClick: () =>
|
|
176
|
+
onClick: () => N && h(N),
|
|
177
177
|
visualType: "neutral",
|
|
178
|
-
"aria-label":
|
|
178
|
+
"aria-label": p("pickers.nextMonth"),
|
|
179
179
|
icon: "arrow_forward",
|
|
180
|
-
children:
|
|
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"),
|
|
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
|