@bizapps/ui 1.4.0 → 1.4.1
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/main.cjs +43 -17
- package/dist/main.cjs.map +1 -1
- package/dist/main.d.cts +13 -1
- package/dist/main.d.ts +13 -1
- package/dist/main.js +43 -17
- package/dist/main.js.map +1 -1
- package/package.json +1 -1
package/dist/main.cjs
CHANGED
|
@@ -4547,22 +4547,52 @@ function DatePicker({
|
|
|
4547
4547
|
disabled = false,
|
|
4548
4548
|
className,
|
|
4549
4549
|
fromDate,
|
|
4550
|
-
toDate
|
|
4550
|
+
toDate,
|
|
4551
|
+
numberOfMonths = 1
|
|
4551
4552
|
}) {
|
|
4552
4553
|
const [open, setOpen] = react.useState(false);
|
|
4554
|
+
const [awaitingRangeEnd, setAwaitingRangeEnd] = react.useState(false);
|
|
4553
4555
|
const label = react.useMemo(() => {
|
|
4554
4556
|
if (mode === "range") {
|
|
4555
4557
|
const range = selected;
|
|
4556
|
-
if (range?.from
|
|
4557
|
-
|
|
4558
|
-
|
|
4559
|
-
return placeholder;
|
|
4558
|
+
if (!range?.from) return placeholder;
|
|
4559
|
+
if (!range.to) return `${dateFns.format(range.from, "MMM d, yyyy")} \u2013 \u2026`;
|
|
4560
|
+
return `${dateFns.format(range.from, "MMM d, yyyy")} \u2013 ${dateFns.format(range.to, "MMM d, yyyy")}`;
|
|
4560
4561
|
}
|
|
4561
4562
|
const date = selected;
|
|
4562
4563
|
return date ? dateFns.format(date, "MMM d, yyyy") : placeholder;
|
|
4563
4564
|
}, [mode, selected, placeholder]);
|
|
4565
|
+
const handleOpenChange = (nextOpen) => {
|
|
4566
|
+
setOpen(nextOpen);
|
|
4567
|
+
if (!nextOpen) setAwaitingRangeEnd(false);
|
|
4568
|
+
};
|
|
4569
|
+
const handleRangeSelect = (range, triggerDate) => {
|
|
4570
|
+
const emit = onSelect;
|
|
4571
|
+
if (!awaitingRangeEnd) {
|
|
4572
|
+
setAwaitingRangeEnd(true);
|
|
4573
|
+
emit?.({ from: triggerDate, to: void 0 });
|
|
4574
|
+
return;
|
|
4575
|
+
}
|
|
4576
|
+
emit?.(range);
|
|
4577
|
+
if (!range?.from || !range.to) {
|
|
4578
|
+
setAwaitingRangeEnd(!!range?.from);
|
|
4579
|
+
return;
|
|
4580
|
+
}
|
|
4581
|
+
setAwaitingRangeEnd(false);
|
|
4582
|
+
setOpen(false);
|
|
4583
|
+
};
|
|
4584
|
+
const dateConstraints = react.useMemo(() => {
|
|
4585
|
+
const disabledMatchers = [];
|
|
4586
|
+
if (fromDate) disabledMatchers.push({ before: fromDate });
|
|
4587
|
+
if (toDate) disabledMatchers.push({ after: toDate });
|
|
4588
|
+
return {
|
|
4589
|
+
...disabledMatchers.length > 0 && { disabled: disabledMatchers },
|
|
4590
|
+
...fromDate && { startMonth: fromDate },
|
|
4591
|
+
...toDate && { endMonth: toDate }
|
|
4592
|
+
};
|
|
4593
|
+
}, [fromDate, toDate]);
|
|
4564
4594
|
const hasValue = mode === "range" ? !!selected?.from : !!selected;
|
|
4565
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange:
|
|
4595
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Popover, { open, onOpenChange: handleOpenChange, children: [
|
|
4566
4596
|
/* @__PURE__ */ jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4567
4597
|
Button,
|
|
4568
4598
|
{
|
|
@@ -4586,14 +4616,10 @@ function DatePicker({
|
|
|
4586
4616
|
...{
|
|
4587
4617
|
mode: "range",
|
|
4588
4618
|
selected,
|
|
4589
|
-
onSelect:
|
|
4590
|
-
|
|
4591
|
-
|
|
4592
|
-
|
|
4593
|
-
fromDate,
|
|
4594
|
-
toDate,
|
|
4595
|
-
numberOfMonths: 2,
|
|
4596
|
-
initialFocus: true
|
|
4619
|
+
onSelect: handleRangeSelect,
|
|
4620
|
+
...dateConstraints,
|
|
4621
|
+
numberOfMonths,
|
|
4622
|
+
autoFocus: true
|
|
4597
4623
|
}
|
|
4598
4624
|
}
|
|
4599
4625
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4606,9 +4632,9 @@ function DatePicker({
|
|
|
4606
4632
|
onSelect?.(date);
|
|
4607
4633
|
setOpen(false);
|
|
4608
4634
|
},
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
4635
|
+
...dateConstraints,
|
|
4636
|
+
numberOfMonths,
|
|
4637
|
+
autoFocus: true
|
|
4612
4638
|
}
|
|
4613
4639
|
}
|
|
4614
4640
|
) })
|