@konstructio/ui
Version:
A set of reusable and customizable React components built for konstruct.io
120 lines (119 loc) • 3.6 kB
JavaScript
import { DateRangePickerContext as _ } from "./date-range-picker.context.js";
import { calculatePresetRange as w } from "../utils/presets.js";
import { canNavigateToNextMonth as q, canNavigateToPrevMonth as z } from "../utils/disabled-dates.js";
import { useCallback as n, useMemo as a, useState as p } from "react";
import { jsx as $ } from "react/jsx-runtime";
var nt = ({ children: A, defaultRange: l, defaultTime: B, defaultPreset: i = "custom", timeFormat: E = "24", showTime: G = !0, name: H, disabled: I = !1, animationDuration: J = 500, blockedDays: K = [], blockedMonths: O = [], minDate: u, maxDate: g, hideDisabledNavigation: Q = !1, showOutsideDays: U = !1, navigationMode: W = "together", onRangeChange: s, onDateChange: v }) => {
const [M, P] = p(() => l || (i !== "custom" ? w(i) : {})), [c, X] = p(() => B ?? {}), [T, x] = p(i), [r, o] = p(() => {
let t = {};
l ? t = l : i !== "custom" && (t = w(i));
const e = t?.from ?? t?.to ?? /* @__PURE__ */ new Date();
return [new Date(e.getFullYear(), e.getMonth(), 1), new Date(e.getFullYear(), e.getMonth() + 1, 1)];
}), D = n((t) => {
P(t), x("custom"), s?.({
...t,
...c
}), v?.(t);
}, [
c,
s,
v
]), L = n((t) => {
X(t), s?.({
...M,
...t
});
}, [M, s]), S = n((t) => {
if (x(t), t !== "custom") {
const e = w(t);
P(e), s?.({
...e,
...c
}), v?.(e);
}
}, [
c,
s,
v
]), h = a(() => z(r[0], u), [r, u]), f = a(() => q(r[1], g), [r, g]), k = n(() => {
h && o(([t, e]) => [new Date(t.getFullYear(), t.getMonth() - 1, 1), new Date(e.getFullYear(), e.getMonth() - 1, 1)]);
}, [h]), y = n(() => {
f && o(([t, e]) => [new Date(t.getFullYear(), t.getMonth() + 1, 1), new Date(e.getFullYear(), e.getMonth() + 1, 1)]);
}, [f]), m = a(() => z(r[0], u), [r, u]), N = a(() => {
const t = r[0], e = r[1];
return new Date(t.getFullYear(), t.getMonth() + 1, 1).getTime() < e.getTime();
}, [r]), F = a(() => {
const t = r[0], e = r[1];
return new Date(e.getFullYear(), e.getMonth() - 1, 1).getTime() > t.getTime();
}, [r]), Y = a(() => q(r[1], g), [r, g]), b = n(() => {
m && o(([t, e]) => [new Date(t.getFullYear(), t.getMonth() - 1, 1), e]);
}, [m]), j = n(() => {
N && o(([t, e]) => [new Date(t.getFullYear(), t.getMonth() + 1, 1), e]);
}, [N]), R = n(() => {
F && o(([t, e]) => [t, new Date(e.getFullYear(), e.getMonth() - 1, 1)]);
}, [F]), V = n(() => {
Y && o(([t, e]) => [t, new Date(e.getFullYear(), e.getMonth() + 1, 1)]);
}, [Y]), Z = a(() => ({
range: M,
time: c,
preset: T,
displayedMonths: r,
canNavigatePrev: h,
canNavigateNext: f,
canLeftNavigatePrev: m,
canLeftNavigateNext: N,
canRightNavigatePrev: F,
canRightNavigateNext: Y,
setRange: D,
setTime: L,
setPreset: S,
navigatePrevMonth: k,
navigateNextMonth: y,
navigateLeftPrev: b,
navigateLeftNext: j,
navigateRightPrev: R,
navigateRightNext: V,
setDisplayedMonths: o
}), [
M,
c,
T,
r,
h,
f,
m,
N,
F,
Y,
D,
L,
S,
k,
y,
b,
j,
R,
V
]);
return /* @__PURE__ */ $(_.Provider, {
value: {
...Z,
timeFormat: E,
showTime: G,
name: H,
disabled: I,
animationDuration: J,
blockedDays: K,
blockedMonths: O,
minDate: u,
maxDate: g,
hideDisabledNavigation: Q,
showOutsideDays: U,
navigationMode: W
},
children: A
});
};
export {
nt as DateRangePickerProvider
};