react-modular-datepicker 0.0.8 → 0.0.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.
package/dist/index.js CHANGED
@@ -1,76 +1,44 @@
1
- import { n as e, r as t, t as n } from "./useDates-CjPuu-VA.js";
1
+ import { n as e, r as t, t as n } from "./useDates-BVAPuyDo.js";
2
2
  import { addMonth as r, composeEventHandlers as i, getCalendars as a, isBackDisabled as o, isForwardDisabled as s, subtractMonth as c } from "./utils.js";
3
- import { useEffect as l, useRef as u, useState as d } from "react";
4
- import { jsx as f, jsxs as p } from "react/jsx-runtime";
5
- //#region src/classNames.ts
6
- var m = {
7
- root: "w-fit flex flex-col p-4 bg-white rounded-lg shadow-lg",
8
- header: "flex items-center justify-between border-b-2 border-brand-gray-light/40 pb-2",
9
- headerMultiMonth: "border-b-0 pb-0",
10
- calendarsContainer: "flex flex-wrap gap-4",
11
- calendarContainer: "flex-1 min-w-[280px] max-w-full",
12
- navButtonSlotStart: "w-9 flex justify-start",
13
- navButtonSlotEnd: "w-9 flex justify-end",
14
- headerTitleContainer: "font-semibold text-brand-text text-center flex-1",
15
- weekdayGrid: "grid grid-cols-7 gap-1 mb-1 border-b border-brand-gray-light/40",
16
- weekday: "text-center text-xs text-gray-400 py-2",
17
- daysGrid: "grid grid-cols-7 gap-px bg-brand-gray-light/20",
18
- footer: "mt-4",
19
- navButton: "p-2 text-brand-text hover:bg-gray-100 rounded-full transition-colors cursor-pointer disabled:opacity-30 disabled:pointer-events-none",
20
- navButtonHidden: "invisible pointer-events-none",
21
- monthYearContainer: "flex gap-8",
22
- monthYearLabel: "flex gap-1 items-center font-semibold text-brand-text",
23
- monthYearButton: "hover:bg-gray-100 px-2 py-1 rounded cursor-pointer",
24
- day: {
25
- day: "rmdp-day group",
26
- selected: "rmdp-day-selected",
27
- unselected: "rmdp-day-unselected",
28
- disabled: "rmdp-day-disabled",
29
- empty: "rmdp-day-empty",
30
- rangeStart: "rmdp-day-range-start",
31
- rangeEnd: "rmdp-day-range-end",
32
- rangeBetween: "rmdp-day-range-between",
33
- rangeHovering: "rmdp-day-range-hovering"
34
- },
35
- monthsGrid: "grid grid-cols-3 gap-2 animate-slide-in-top",
36
- monthButton: "py-3 rounded-lg hover:bg-brand-gray-light transition-colors cursor-pointer disabled:opacity-30 disabled:pointer-events-none",
37
- monthButtonSelected: "bg-brand-gold text-white",
38
- monthButtonUnselected: "text-brand-text",
39
- yearsGrid: "grid grid-cols-3 gap-2 max-h-[210px] overflow-y-auto pr-2 animate-slide-in-top rmdp-scrollbar",
40
- yearButton: "py-3 rounded-lg hover:bg-brand-gray-light transition-colors cursor-pointer disabled:opacity-30 disabled:pointer-events-none",
41
- yearButtonSelected: "bg-brand-gold text-white",
42
- yearButtonUnselected: "text-brand-text"
43
- }, h = (e) => {
44
- let t = { ...m };
45
- if (!e) return t;
46
- for (let n in e) {
47
- let r = n;
48
- r === "day" && e.day ? t.day = {
49
- ...m.day,
50
- ...e.day
51
- } : e[r] && (t[r] = e[r]);
3
+ import { useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
4
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
5
+ //#region ../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
6
+ function h(e) {
7
+ var t, n, r = "";
8
+ if (typeof e == "string" || typeof e == "number") r += e;
9
+ else if (typeof e == "object") {
10
+ if (Array.isArray(e)) {
11
+ var i = e.length;
12
+ for (t = 0; t < i; t++) e[t] && (n = h(e[t])) && (r && (r += " "), r += n);
13
+ } else for (n in e) e[n] && (r && (r += " "), r += n);
52
14
  }
53
- return t;
54
- };
15
+ return r;
16
+ }
17
+ function g() {
18
+ for (var e, t, n = 0, r = "", i = arguments.length; n < i; n++) (e = arguments[n]) && (t = h(e)) && (r && (r += " "), r += t);
19
+ return r;
20
+ }
55
21
  //#endregion
56
22
  //#region src/i18n.ts
57
- function g(e = t, n) {
23
+ function _(e = t, n) {
58
24
  return {
59
25
  months: e.getMonths(n),
60
26
  weekdays: e.getWeekdays(n),
61
27
  back: "Previous month",
62
- forward: "Next month"
28
+ forward: "Next month",
29
+ selectMonth: "Select month",
30
+ selectYear: "Select year"
63
31
  };
64
32
  }
65
- function _(e = t, n, r) {
33
+ function v(e = t, n, r) {
66
34
  return {
67
- ...g(e, n),
35
+ ..._(e, n),
68
36
  ...r
69
37
  };
70
38
  }
71
39
  //#endregion
72
40
  //#region src/components/CalendarHeader.tsx
73
- var v = () => /* @__PURE__ */ f("svg", {
41
+ var y = () => /* @__PURE__ */ p("svg", {
74
42
  width: "20",
75
43
  height: "20",
76
44
  viewBox: "0 0 24 24",
@@ -79,8 +47,8 @@ var v = () => /* @__PURE__ */ f("svg", {
79
47
  strokeWidth: "2",
80
48
  strokeLinecap: "round",
81
49
  strokeLinejoin: "round",
82
- children: /* @__PURE__ */ f("polyline", { points: "15 18 9 12 15 6" })
83
- }), y = () => /* @__PURE__ */ f("svg", {
50
+ children: /* @__PURE__ */ p("polyline", { points: "15 18 9 12 15 6" })
51
+ }), b = () => /* @__PURE__ */ p("svg", {
84
52
  width: "20",
85
53
  height: "20",
86
54
  viewBox: "0 0 24 24",
@@ -89,245 +57,467 @@ var v = () => /* @__PURE__ */ f("svg", {
89
57
  strokeWidth: "2",
90
58
  strokeLinecap: "round",
91
59
  strokeLinejoin: "round",
92
- children: /* @__PURE__ */ f("polyline", { points: "9 18 15 12 9 6" })
93
- }), b = ({ calendars: e, getBackProps: t, getForwardProps: n, setView: r, monthNames: i, t: a, classNames: o, slideDirection: s, currentView: c }) => {
60
+ children: /* @__PURE__ */ p("polyline", { points: "9 18 15 12 9 6" })
61
+ }), x = ({ calendars: e, getBackProps: t, getForwardProps: n, setView: r, monthNames: i, t: a, classNames: o, slideDirection: s, currentView: c }) => {
94
62
  if (e.length > 1 && e.length < 12) return null;
95
- let l = e[0], u = e[e.length - 1], d = [o.header, e.length > 1 ? o.headerMultiMonth : ""].filter(Boolean).join(" "), m = (e) => [o.navButton, e ? o.navButtonHidden : ""].filter(Boolean).join(" "), h = !!(c && c !== "days");
96
- return /* @__PURE__ */ p("div", {
97
- className: d,
63
+ let l = e[0], u = e[e.length - 1], d = !!(c && c !== "days"), f = g("rmd-nav-button", d && "rmd-nav-button-hidden", o?.navButton, d && o?.navButtonHidden), h = g("rmd-month-year-label", s === "left" && "rmd-slide-left", s === "right" && "rmd-slide-right", o?.monthYearLabel);
64
+ return /* @__PURE__ */ m("div", {
65
+ className: g("rmd-header", e.length > 1 && "rmd-header-multi-month", o?.header, e.length > 1 && o?.headerMultiMonth),
98
66
  children: [
99
- /* @__PURE__ */ f("button", {
67
+ /* @__PURE__ */ p("button", {
100
68
  ...t({ calendars: e }),
101
- onMouseDown: (e) => e.preventDefault(),
102
- className: m(h),
69
+ className: f,
103
70
  "aria-label": a.back,
104
- children: /* @__PURE__ */ f(v, {})
71
+ children: /* @__PURE__ */ p(y, {})
105
72
  }),
106
- /* @__PURE__ */ f("div", {
107
- className: o.monthYearContainer,
108
- children: e.length === 1 ? /* @__PURE__ */ p("div", {
109
- className: `${o.monthYearLabel} ${s === "left" ? "animate-slide-in-left" : s === "right" ? "animate-slide-in-right" : ""}`,
110
- children: [/* @__PURE__ */ f("button", {
111
- onMouseDown: (e) => e.preventDefault(),
73
+ /* @__PURE__ */ p("div", {
74
+ className: g("rmd-month-year-container", o?.monthYearContainer),
75
+ children: e.length === 1 ? /* @__PURE__ */ m("div", {
76
+ className: h,
77
+ children: [/* @__PURE__ */ p("button", {
112
78
  onClick: () => r(c === "months" ? "days" : "months"),
113
- className: o.monthYearButton,
79
+ className: g("rmd-month-year-button", o?.monthYearButton),
80
+ "aria-label": `${i[e[0].month]}, ${a.selectMonth || "Select month"}`,
81
+ "aria-expanded": c === "months",
114
82
  children: i[e[0].month]
115
- }), /* @__PURE__ */ f("button", {
116
- onMouseDown: (e) => e.preventDefault(),
83
+ }), /* @__PURE__ */ p("button", {
117
84
  onClick: () => r(c === "years" ? "days" : "years"),
118
- className: o.monthYearButton,
85
+ className: g("rmd-month-year-button", o?.monthYearButton),
86
+ "aria-label": `${e[0].year}, ${a.selectYear || "Select year"}`,
87
+ "aria-expanded": c === "years",
119
88
  children: e[0].year
120
89
  })]
121
- }, `${e[0].month}-${e[0].year}`) : /* @__PURE__ */ f("div", {
122
- className: `${o.monthYearLabel} ${s === "left" ? "animate-slide-in-left" : s === "right" ? "animate-slide-in-right" : ""}`,
123
- children: /* @__PURE__ */ f("span", { children: l.year === u.year ? l.year : `${l.year} - ${u.year}` })
90
+ }, `${e[0].month}-${e[0].year}`) : /* @__PURE__ */ p("div", {
91
+ className: h,
92
+ children: /* @__PURE__ */ p("span", { children: l.year === u.year ? l.year : `${l.year} - ${u.year}` })
124
93
  })
125
94
  }),
126
- /* @__PURE__ */ f("button", {
95
+ /* @__PURE__ */ p("button", {
127
96
  ...n({ calendars: e }),
128
- onMouseDown: (e) => e.preventDefault(),
129
- className: m(h),
97
+ className: f,
130
98
  "aria-label": a.forward,
131
- children: /* @__PURE__ */ f(y, {})
99
+ children: /* @__PURE__ */ p(b, {})
132
100
  })
133
101
  ]
134
102
  });
135
- }, x = ({ dateObj: e, getDateProps: t, dayProps: n, classNames: r }) => {
136
- if (!e) return /* @__PURE__ */ f("div", { className: r.day.empty });
137
- let { date: i, selected: a, selectable: o, isRangeStart: s, isRangeEnd: c, isRangeBetween: l, isRangeHovering: u, isRangeActive: d } = e, p = r.day, m = "rounded-full";
138
- m = s && c ? `${p.selected} rounded-full` : s ? `${p.rangeStart} ${d ? "rounded-l-full rounded-r-none" : "rounded-full"}` : c ? `${p.rangeEnd} ${d ? "rounded-r-full rounded-l-none" : "rounded-full"}` : l ? p.rangeBetween || "" : u ? p.rangeHovering || "" : a ? p.selected || "" : o ? p.unselected || "" : p.disabled || "";
139
- let h = (e.modifiers || []).map((e) => p[e] || e).filter(Boolean).join(" "), g = [
140
- p.day,
141
- m,
142
- h
143
- ].filter(Boolean).join(" ");
144
- return /* @__PURE__ */ f("button", {
145
- ...t({
146
- dateObj: e,
147
- ...n
148
- }),
149
- className: g,
150
- children: i.getDate()
103
+ }, S = ({ dateObj: e, getDateProps: t, dayProps: n, classNames: r, tabIndex: i = -1, adapter: a, locale: o, onKeyDown: s, onFocus: c, buttonRef: l }) => {
104
+ if (!e) return /* @__PURE__ */ p("div", {
105
+ role: "gridcell",
106
+ "aria-hidden": "true",
107
+ className: g("rmd-day-empty", r?.day?.empty)
108
+ });
109
+ let { date: u, selected: d, selectable: f, isRangeStart: m, isRangeEnd: h, isRangeBetween: _, isRangeHovering: v, isRangeActive: y } = e, b = r?.day, x = "", S = "";
110
+ m && h ? (x = "rmd-day-selected", S = b?.selected || "") : m ? (x = g("rmd-day-range-start", y && "rmd-day-range-active"), S = b?.rangeStart || "") : h ? (x = g("rmd-day-range-end", y && "rmd-day-range-active"), S = b?.rangeEnd || "") : _ ? (x = "rmd-day-range-between", S = b?.rangeBetween || "") : v ? (x = "rmd-day-range-hovering", S = b?.rangeHovering || "") : d ? (x = "rmd-day-selected", S = b?.selected || "") : f ? (x = "rmd-day-unselected", S = b?.unselected || "") : (x = "rmd-day-disabled", S = b?.disabled || "");
111
+ let C = (e.modifiers || []).map((e) => b?.[e] || e).filter(Boolean), w = a ? a.format(a.date(u), "dddd, MMMM D, YYYY", o) : u.toDateString(), T = !!(d || m || h), E = t({
112
+ dateObj: e,
113
+ ...n
151
114
  });
152
- }, S = ({ year: e, month: t, monthNames: n, minDate: r, maxDate: i, onMonthSelect: a, classNames: o }) => {
153
- let s = (t) => !!(r && e === r.getFullYear() && t < r.getMonth() || i && e === i.getFullYear() && t > i.getMonth());
154
- return /* @__PURE__ */ f("div", {
155
- className: o.monthsGrid,
115
+ return /* @__PURE__ */ p("button", {
116
+ role: "gridcell",
117
+ "aria-selected": T,
118
+ "aria-disabled": !f,
119
+ "aria-label": w,
120
+ tabIndex: i,
121
+ ...E,
122
+ ref: l,
123
+ onKeyDown: (t) => {
124
+ E.onKeyDown?.(t), s?.(t, e);
125
+ },
126
+ onFocus: (t) => {
127
+ E.onFocus?.(t), c?.(e);
128
+ },
129
+ className: g("rmd-day", b?.day, x, S, C),
130
+ children: u.getDate()
131
+ });
132
+ }, C = ({ year: e, month: t, monthNames: n, minDate: r, maxDate: i, onMonthSelect: a, classNames: o }) => {
133
+ let [s, c] = f(t), u = d([]);
134
+ l(() => {
135
+ u.current[s]?.focus();
136
+ }, [s]);
137
+ let m = (t) => !!(r && e === r.getFullYear() && t < r.getMonth() || i && e === i.getFullYear() && t > i.getMonth()), h = (e, t) => {
138
+ let n = s;
139
+ switch (e.key) {
140
+ case "ArrowLeft":
141
+ e.preventDefault(), n = (t - 1 + 12) % 12;
142
+ break;
143
+ case "ArrowRight":
144
+ e.preventDefault(), n = (t + 1) % 12;
145
+ break;
146
+ case "ArrowUp":
147
+ e.preventDefault(), n = (t - 3 + 12) % 12;
148
+ break;
149
+ case "ArrowDown":
150
+ e.preventDefault(), n = (t + 3) % 12;
151
+ break;
152
+ case "Home":
153
+ e.preventDefault(), n = 0;
154
+ break;
155
+ case "End":
156
+ e.preventDefault(), n = 11;
157
+ break;
158
+ case "Enter":
159
+ case " ":
160
+ e.preventDefault(), m(t) || a(t);
161
+ return;
162
+ default: return;
163
+ }
164
+ c(n);
165
+ }, _ = g("rmd-months-grid", o?.monthsGrid);
166
+ return /* @__PURE__ */ p("div", {
167
+ role: "grid",
168
+ "aria-label": "Select month",
169
+ className: _,
156
170
  children: n.map((e, n) => {
157
- let r = s(n);
158
- return /* @__PURE__ */ f("button", {
159
- onMouseDown: (e) => e.preventDefault(),
171
+ let r = m(n), i = n === t, l = n === s, d = g("rmd-month-button", i ? "rmd-month-button-selected" : "rmd-month-button-unselected", o?.monthButton, i ? o?.monthButtonSelected : o?.monthButtonUnselected);
172
+ return /* @__PURE__ */ p("button", {
173
+ ref: (e) => {
174
+ u.current[n] = e;
175
+ },
176
+ role: "gridcell",
177
+ "aria-selected": i,
178
+ "aria-disabled": r,
179
+ tabIndex: l ? 0 : -1,
160
180
  onClick: () => !r && a(n),
161
- className: `${o.monthButton} ${n === t ? o.monthButtonSelected : o.monthButtonUnselected}`,
181
+ onKeyDown: (e) => h(e, n),
182
+ onFocus: () => c(n),
183
+ className: d,
162
184
  disabled: r,
163
185
  children: e
164
186
  }, e);
165
187
  })
166
188
  });
167
- }, C = ({ year: e, minDate: t, maxDate: n, adapter: r, onYearSelect: i, classNames: a }) => {
168
- let o = u(null);
189
+ }, w = ({ year: e, minDate: t, maxDate: n, adapter: r, onYearSelect: i, classNames: a }) => {
190
+ let o = d(null), [s, c] = f(e), u = d(/* @__PURE__ */ new Map()), m = t ? r.get(r.date(t), "year") : e - 50, h = n ? r.get(r.date(n), "year") : e + 50, _ = [];
191
+ for (let e = m; e <= h; e++) _.push(e);
169
192
  l(() => {
170
193
  if (o.current) {
171
- let e = o.current.querySelector("[data-selected=\"true\"]");
172
- e && e.scrollIntoView({ block: "center" });
194
+ let e = o.current, t = e.querySelector("[data-selected=\"true\"]");
195
+ if (t) {
196
+ let n = t.offsetTop - e.clientHeight / 2 + t.clientHeight / 2;
197
+ e.scrollTop = Math.max(0, n);
198
+ }
199
+ }
200
+ }, []), l(() => {
201
+ let e = u.current.get(s);
202
+ e && e.focus();
203
+ }, [s]);
204
+ let v = (e, t) => {
205
+ let n = s;
206
+ switch (e.key) {
207
+ case "ArrowLeft":
208
+ e.preventDefault(), n = Math.max(m, t - 1);
209
+ break;
210
+ case "ArrowRight":
211
+ e.preventDefault(), n = Math.min(h, t + 1);
212
+ break;
213
+ case "ArrowUp":
214
+ e.preventDefault(), n = Math.max(m, t - 3);
215
+ break;
216
+ case "ArrowDown":
217
+ e.preventDefault(), n = Math.min(h, t + 3);
218
+ break;
219
+ case "PageUp":
220
+ e.preventDefault(), n = Math.max(m, t - 10);
221
+ break;
222
+ case "PageDown":
223
+ e.preventDefault(), n = Math.min(h, t + 10);
224
+ break;
225
+ case "Home":
226
+ e.preventDefault(), n = m;
227
+ break;
228
+ case "End":
229
+ e.preventDefault(), n = h;
230
+ break;
231
+ case "Enter":
232
+ case " ":
233
+ e.preventDefault(), i(t);
234
+ return;
235
+ default: return;
173
236
  }
174
- }, []);
175
- let s = t ? r.get(r.date(t), "year") : e - 50, c = n ? r.get(r.date(n), "year") : e + 50, d = [];
176
- for (let e = s; e <= c; e++) d.push(e);
177
- return /* @__PURE__ */ f("div", {
237
+ c(n);
238
+ };
239
+ return /* @__PURE__ */ p("div", {
178
240
  ref: o,
179
- className: a.yearsGrid,
180
- children: d.map((t) => /* @__PURE__ */ f("button", {
181
- "data-selected": t === e,
182
- onMouseDown: (e) => e.preventDefault(),
183
- onClick: () => i(t),
184
- className: `${a.yearButton} ${t === e ? a.yearButtonSelected : a.yearButtonUnselected}`,
185
- children: t
186
- }, t))
241
+ role: "grid",
242
+ "aria-label": "Select year",
243
+ className: g("rmd-years-grid", a?.yearsGrid),
244
+ children: _.map((t) => {
245
+ let n = t === e, r = t === s, o = g("rmd-year-button", n ? "rmd-year-button-selected" : "rmd-year-button-unselected", a?.yearButton, n ? a?.yearButtonSelected : a?.yearButtonUnselected);
246
+ return /* @__PURE__ */ p("button", {
247
+ ref: (e) => {
248
+ e ? u.current.set(t, e) : u.current.delete(t);
249
+ },
250
+ "data-selected": n,
251
+ role: "gridcell",
252
+ "aria-selected": n,
253
+ tabIndex: r ? 0 : -1,
254
+ onClick: () => i(t),
255
+ onKeyDown: (e) => v(e, t),
256
+ onFocus: () => c(t),
257
+ className: o,
258
+ children: t
259
+ }, t);
260
+ })
187
261
  });
188
- }, w = (e) => {
189
- let { classNames: r, locale: i, translations: a, adapter: o = t, firstDayOfWeek: s = 0, header: c, footer: l, getDayProps: u, ...m } = e, g = h(r), [w, T] = d("days"), [E, D] = d(null), O = _(o, i, a), k = O.weekdays, A = O.months, { calendars: j, getBackProps: M, getForwardProps: N, getDateProps: P, setOffset: F } = n({
190
- ...m,
262
+ }, T = (e) => `${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`, E = (e) => {
263
+ let { classNames: r, locale: i, translations: a, adapter: o = t, firstDayOfWeek: s = 0, header: c, footer: h, getDayProps: _, ...E } = e, [D, O] = f("days"), [k, A] = f(null), [j, M] = f(null), [N, P] = f(null), [F, I] = f(""), L = d(null), R = d(null), z = d(/* @__PURE__ */ new Map()), B = d(!1), V = v(o, i, a), H = V.weekdays, U = V.months, { calendars: W, getBackProps: G, getForwardProps: ee, getDateProps: K, setOffset: q } = n({
264
+ ...E,
191
265
  adapter: o,
192
266
  firstDayOfWeek: s
193
- }), I = [...k.slice(s), ...k.slice(0, s)], { month: L, year: R } = j[0], z = (t) => {
194
- let n = o.set(o.set(o.date(e.date || /* @__PURE__ */ new Date()), "year", R), "month", L), r = o.set(n, "month", t), i = o.startOf(o.date(e.date || /* @__PURE__ */ new Date()), "month"), a = o.diff(r, i, "month");
195
- D(null), F(a), T("days");
196
- }, B = (t) => {
197
- let n = o.set(o.set(o.date(e.date || /* @__PURE__ */ new Date()), "year", R), "month", L), r = o.set(n, "year", t), i = o.startOf(o.date(e.date || /* @__PURE__ */ new Date()), "month"), a = o.diff(r, i, "month");
198
- D(null), F(a), T("days");
199
- }, V = m.monthsToDisplay || 1, H = (e) => {
200
- let t = M({
201
- offset: V,
267
+ });
268
+ l(() => {
269
+ if (D === "days" && L.current) {
270
+ let e = L.current, t = () => {
271
+ e.offsetHeight > 0 && M(e.offsetHeight);
272
+ };
273
+ if (t(), typeof ResizeObserver < "u") {
274
+ let n = new ResizeObserver(() => {
275
+ t();
276
+ });
277
+ return n.observe(e), () => n.disconnect();
278
+ }
279
+ }
280
+ }, [D, W]), l(() => {
281
+ D === "days" && W.length > 0 ? W.length === 1 ? I(`${U[W[0].month]} ${W[0].year}`) : I(`${U[W[0].month]} ${W[0].year} to ${U[W[W.length - 1].month]} ${W[W.length - 1].year}`) : D === "months" ? I("Month selection view") : D === "years" && I("Year selection view");
282
+ }, [
283
+ D,
284
+ W,
285
+ U
286
+ ]);
287
+ let te = u(() => {
288
+ for (let e of W) for (let t of e.weeks) for (let e of t) if (e?.selectable && e.selected) return e.date;
289
+ for (let e of W) for (let t of e.weeks) for (let e of t) if (e?.selectable && e.today) return e.date;
290
+ for (let e of W) for (let t of e.weeks) for (let e of t) if (e?.selectable && !e.prevMonth && !e.nextMonth) return e.date;
291
+ return W[0]?.weeks[0]?.find((e) => e?.selectable)?.date || /* @__PURE__ */ new Date();
292
+ }, [W]), J = N || te;
293
+ l(() => {
294
+ if (D === "days" && J && B.current) {
295
+ let e = T(J), t = z.current.get(e);
296
+ t && t.focus();
297
+ }
298
+ }, [
299
+ J,
300
+ W,
301
+ D
302
+ ]);
303
+ let ne = [...H.slice(s), ...H.slice(0, s)], { month: Y, year: X } = W[0], re = (t) => {
304
+ let n = o.set(o.set(o.date(e.date || /* @__PURE__ */ new Date()), "year", X), "month", Y), r = o.set(n, "month", t), i = o.startOf(o.date(e.date || /* @__PURE__ */ new Date()), "month"), a = o.diff(r, i, "month");
305
+ A(null), q(a), O("days");
306
+ }, ie = (t) => {
307
+ let n = o.set(o.set(o.date(e.date || /* @__PURE__ */ new Date()), "year", X), "month", Y), r = o.set(n, "year", t), i = o.startOf(o.date(e.date || /* @__PURE__ */ new Date()), "month"), a = o.diff(r, i, "month");
308
+ A(null), q(a), O("days");
309
+ }, Z = E.monthsToDisplay || 1, Q = (e) => {
310
+ let t = G({
311
+ offset: Z,
202
312
  ...e
203
313
  });
204
314
  return {
205
315
  ...t,
206
316
  onClick: (e) => {
207
- D("left"), t.onClick?.(e);
317
+ A("left"), t.onClick?.(e);
208
318
  }
209
319
  };
210
- }, U = (e) => {
211
- let t = N({
212
- offset: V,
320
+ }, $ = (e) => {
321
+ let t = ee({
322
+ offset: Z,
213
323
  ...e
214
324
  });
215
325
  return {
216
326
  ...t,
217
327
  onClick: (e) => {
218
- D("right"), t.onClick?.(e);
328
+ A("right"), t.onClick?.(e);
219
329
  }
220
330
  };
331
+ }, ae = (t, n) => {
332
+ let r = !!(R.current?.closest("[dir=\"rtl\"]") || typeof document < "u" && document.documentElement.dir === "rtl"), i = null, a = o.date(n.date);
333
+ switch (t.key) {
334
+ case "ArrowLeft":
335
+ t.preventDefault(), i = o.toDate(o.add(a, r ? 1 : -1, "day"));
336
+ break;
337
+ case "ArrowRight":
338
+ t.preventDefault(), i = o.toDate(o.add(a, r ? -1 : 1, "day"));
339
+ break;
340
+ case "ArrowUp":
341
+ t.preventDefault(), i = o.toDate(o.subtract(a, 7, "day"));
342
+ break;
343
+ case "ArrowDown":
344
+ t.preventDefault(), i = o.toDate(o.add(a, 7, "day"));
345
+ break;
346
+ case "Home": {
347
+ t.preventDefault();
348
+ let e = (o.toDate(a).getDay() - s + 7) % 7;
349
+ i = o.toDate(o.subtract(a, e, "day"));
350
+ break;
351
+ }
352
+ case "End": {
353
+ t.preventDefault();
354
+ let e = 6 - (o.toDate(a).getDay() - s + 7) % 7;
355
+ i = o.toDate(o.add(a, e, "day"));
356
+ break;
357
+ }
358
+ case "PageUp": {
359
+ t.preventDefault();
360
+ let e = t.shiftKey ? "year" : "month";
361
+ i = o.toDate(o.subtract(a, 1, e));
362
+ break;
363
+ }
364
+ case "PageDown": {
365
+ t.preventDefault();
366
+ let e = t.shiftKey ? "year" : "month";
367
+ i = o.toDate(o.add(a, 1, e));
368
+ break;
369
+ }
370
+ case "Enter":
371
+ case " ": return;
372
+ default: return;
373
+ }
374
+ if (i) {
375
+ B.current = !0, P(i);
376
+ let t = o.startOf(o.date(e.date || /* @__PURE__ */ new Date()), "month"), n = o.startOf(o.date(i), "month"), r = o.diff(n, t, "month");
377
+ q(r);
378
+ }
221
379
  };
222
- return /* @__PURE__ */ p("div", {
223
- className: `rmdp ${g.root}`,
380
+ return /* @__PURE__ */ m("div", {
381
+ ref: R,
382
+ className: g("rmd", "rmd-root", r?.root),
224
383
  children: [
384
+ /* @__PURE__ */ p("div", {
385
+ className: "rmd-sr-only",
386
+ "aria-live": "polite",
387
+ "aria-atomic": "true",
388
+ children: F
389
+ }),
225
390
  typeof c == "function" ? c({
226
- calendars: j,
227
- getBackProps: H,
228
- getForwardProps: U,
229
- setView: T,
230
- monthNames: A,
231
- t: O,
232
- slideDirection: E,
233
- currentView: w
234
- }) : c || /* @__PURE__ */ f(b, {
235
- calendars: j,
236
- getBackProps: H,
237
- getForwardProps: U,
238
- setView: T,
239
- monthNames: A,
240
- t: O,
241
- classNames: g,
242
- slideDirection: E,
243
- currentView: w
391
+ calendars: W,
392
+ getBackProps: Q,
393
+ getForwardProps: $,
394
+ setView: O,
395
+ monthNames: U,
396
+ t: V,
397
+ slideDirection: k,
398
+ currentView: D
399
+ }) : c || /* @__PURE__ */ p(x, {
400
+ calendars: W,
401
+ getBackProps: Q,
402
+ getForwardProps: $,
403
+ setView: O,
404
+ monthNames: U,
405
+ t: V,
406
+ classNames: r,
407
+ slideDirection: k,
408
+ currentView: D
244
409
  }),
245
- /* @__PURE__ */ p("div", {
246
- className: g.calendarsContainer,
410
+ /* @__PURE__ */ m("div", {
411
+ className: g("rmd-calendars-container", r?.calendarsContainer),
247
412
  children: [
248
- w === "months" && j.map((t) => /* @__PURE__ */ f("div", {
249
- className: g.calendarContainer,
250
- children: /* @__PURE__ */ f(S, {
413
+ D === "months" && W.map((t) => /* @__PURE__ */ p("div", {
414
+ className: g("rmd-calendar-container", r?.calendarContainer),
415
+ style: j ? { height: `${j}px` } : void 0,
416
+ children: /* @__PURE__ */ p(C, {
251
417
  year: t.year,
252
418
  month: t.month,
253
- monthNames: A,
419
+ monthNames: U,
254
420
  minDate: e.minDate,
255
421
  maxDate: e.maxDate,
256
- onMonthSelect: z,
257
- classNames: g
422
+ onMonthSelect: re,
423
+ classNames: r
258
424
  })
259
425
  }, `months-${t.year}`)),
260
- w === "years" && j.map((t) => /* @__PURE__ */ f("div", {
261
- className: g.calendarContainer,
262
- children: /* @__PURE__ */ f(C, {
426
+ D === "years" && W.map((t) => /* @__PURE__ */ p("div", {
427
+ className: g("rmd-calendar-container", r?.calendarContainer),
428
+ style: j ? { height: `${j}px` } : void 0,
429
+ children: /* @__PURE__ */ p(w, {
263
430
  year: t.year,
264
431
  minDate: e.minDate,
265
432
  maxDate: e.maxDate,
266
433
  adapter: o,
267
- onYearSelect: B,
268
- classNames: g
434
+ onYearSelect: ie,
435
+ classNames: r
269
436
  })
270
437
  }, `years-${t.year}`)),
271
- w === "days" && j.map((e, t) => /* @__PURE__ */ p("div", {
272
- className: g.calendarContainer,
438
+ D === "days" && W.map((e, t) => /* @__PURE__ */ m("div", {
439
+ ref: t === 0 ? L : void 0,
440
+ role: "grid",
441
+ "aria-label": `${U[e.month]} ${e.year}`,
442
+ className: g("rmd-calendar-container", r?.calendarContainer),
273
443
  children: [
274
- j.length > 1 && /* @__PURE__ */ p("div", {
275
- className: g.header,
444
+ W.length > 1 && /* @__PURE__ */ m("div", {
445
+ className: g("rmd-header", r?.header),
276
446
  children: [
277
- /* @__PURE__ */ f("div", {
278
- className: g.navButtonSlotStart,
279
- children: t === 0 && j.length < 12 && /* @__PURE__ */ f("button", {
280
- ...H({ calendars: j }),
281
- onMouseDown: (e) => e.preventDefault(),
282
- className: g.navButton,
283
- "aria-label": O.back,
284
- children: /* @__PURE__ */ f(v, {})
447
+ /* @__PURE__ */ p("div", {
448
+ className: g("rmd-nav-button-slot-start", r?.navButtonSlotStart),
449
+ children: t === 0 && W.length < 12 && /* @__PURE__ */ p("button", {
450
+ ...Q({ calendars: W }),
451
+ className: g("rmd-nav-button", r?.navButton),
452
+ "aria-label": V.back,
453
+ children: /* @__PURE__ */ p(y, {})
285
454
  })
286
455
  }),
287
- /* @__PURE__ */ p("span", {
288
- className: g.headerTitleContainer,
289
- children: [A[e.month], j.length < 12 ? ` ${e.year}` : ""]
456
+ /* @__PURE__ */ m("span", {
457
+ className: g("rmd-header-title-container", r?.headerTitleContainer),
458
+ children: [U[e.month], W.length < 12 ? ` ${e.year}` : ""]
290
459
  }),
291
- /* @__PURE__ */ f("div", {
292
- className: g.navButtonSlotEnd,
293
- children: t === j.length - 1 && j.length < 12 && /* @__PURE__ */ f("button", {
294
- ...U({ calendars: j }),
295
- onMouseDown: (e) => e.preventDefault(),
296
- className: g.navButton,
297
- "aria-label": O.forward,
298
- children: /* @__PURE__ */ f(y, {})
460
+ /* @__PURE__ */ p("div", {
461
+ className: g("rmd-nav-button-slot-end", r?.navButtonSlotEnd),
462
+ children: t === W.length - 1 && W.length < 12 && /* @__PURE__ */ p("button", {
463
+ ...$({ calendars: W }),
464
+ className: g("rmd-nav-button", r?.navButton),
465
+ "aria-label": V.forward,
466
+ children: /* @__PURE__ */ p(b, {})
299
467
  })
300
468
  })
301
469
  ]
302
470
  }),
303
- /* @__PURE__ */ f("div", {
304
- className: g.weekdayGrid,
305
- children: I.map((e) => /* @__PURE__ */ f("div", {
306
- className: g.weekday,
471
+ /* @__PURE__ */ p("div", {
472
+ role: "row",
473
+ className: g("rmd-weekday-grid", r?.weekdayGrid),
474
+ children: ne.map((e) => /* @__PURE__ */ p("div", {
475
+ role: "columnheader",
476
+ "aria-label": e,
477
+ className: g("rmd-weekday", r?.weekday),
307
478
  children: e
308
479
  }, e))
309
480
  }),
310
- /* @__PURE__ */ f("div", {
311
- className: `${g.daysGrid} ${E === "left" ? "animate-slide-in-left" : E === "right" ? "animate-slide-in-right" : ""}`,
312
- children: e.weeks.map((e, t) => e.map((e, n) => /* @__PURE__ */ f(x, {
313
- dateObj: e,
314
- getDateProps: P,
315
- dayProps: e ? u?.(e) : void 0,
316
- classNames: g
317
- }, `${t}-${n}`)))
481
+ /* @__PURE__ */ p("div", {
482
+ role: "row",
483
+ className: g("rmd-days-grid", k === "left" && "rmd-slide-left", k === "right" && "rmd-slide-right", r?.daysGrid),
484
+ children: e.weeks.map((e, t) => e.map((e, n) => {
485
+ if (!e) return /* @__PURE__ */ p(S, {
486
+ dateObj: null,
487
+ getDateProps: K,
488
+ classNames: r
489
+ }, `${t}-${n}`);
490
+ let a = T(e.date), s = o.isSame(o.date(e.date), o.date(J), "day");
491
+ return /* @__PURE__ */ p(S, {
492
+ dateObj: e,
493
+ getDateProps: K,
494
+ dayProps: _?.(e),
495
+ classNames: r,
496
+ tabIndex: s ? 0 : -1,
497
+ adapter: o,
498
+ locale: i,
499
+ onKeyDown: ae,
500
+ onFocus: (e) => {
501
+ P(e.date);
502
+ },
503
+ buttonRef: (e) => {
504
+ e ? z.current.set(a, e) : z.current.delete(a);
505
+ }
506
+ }, `${t}-${n}`);
507
+ }))
318
508
  }, `daysGrid-${e.month}-${e.year}`)
319
509
  ]
320
510
  }, `${e.month}-${e.year}`))
321
511
  ]
322
512
  }),
323
- l && /* @__PURE__ */ f("div", {
324
- className: g.footer,
325
- children: l
513
+ h && /* @__PURE__ */ p("div", {
514
+ className: g("rmd-footer", r?.footer),
515
+ children: h
326
516
  })
327
517
  ]
328
518
  });
329
519
  };
330
520
  //#endregion
331
- export { w as Calendar, b as CalendarHeader, v as ChevronLeftIcon, y as ChevronRightIcon, x as Day, e as DayjsAdapter, S as MonthSelection, C as YearSelection, r as addMonth, i as composeEventHandlers, t as defaultAdapter, m as defaultClassNames, a as getCalendars, g as getDefaults, _ as getTranslations, o as isBackDisabled, s as isForwardDisabled, h as mergeClassNames, c as subtractMonth, n as useDates };
521
+ export { E as Calendar, x as CalendarHeader, y as ChevronLeftIcon, b as ChevronRightIcon, S as Day, e as DayjsAdapter, C as MonthSelection, w as YearSelection, r as addMonth, i as composeEventHandlers, t as defaultAdapter, a as getCalendars, _ as getDefaults, v as getTranslations, o as isBackDisabled, s as isForwardDisabled, c as subtractMonth, n as useDates };
332
522
 
333
523
  //# sourceMappingURL=index.js.map