UNPKG

@konstructio/ui

Version:

A set of reusable and customizable React components built for konstruct.io

120 lines (119 loc) 3.6 kB
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 };