@ceed/cds 1.28.1 → 1.29.0
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/components/DatePicker/DatePicker.d.ts +10 -0
- package/dist/components/DateRangePicker/DateRangePicker.d.ts +10 -0
- package/dist/components/inputs/DatePicker.md +48 -0
- package/dist/components/inputs/DateRangePicker.md +62 -0
- package/dist/index.browser.js +2 -2
- package/dist/index.browser.js.map +3 -3
- package/dist/index.cjs +173 -6
- package/dist/index.js +173 -6
- package/framer/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2559,10 +2559,47 @@ var CalendarSheet = (0, import_joy28.styled)(Sheet_default, {
|
|
|
2559
2559
|
slot: "sheet",
|
|
2560
2560
|
overridesResolver: (props, styles) => styles.root
|
|
2561
2561
|
})(({ theme }) => ({
|
|
2562
|
-
width: "264px",
|
|
2563
2562
|
boxShadow: theme.shadow.md,
|
|
2564
2563
|
borderRadius: theme.radius.md
|
|
2565
2564
|
}));
|
|
2565
|
+
var CalendarSheetContent = (0, import_joy28.styled)("div", {
|
|
2566
|
+
name: "DatePicker",
|
|
2567
|
+
slot: "sheetContent"
|
|
2568
|
+
})({
|
|
2569
|
+
display: "flex",
|
|
2570
|
+
flexDirection: "row"
|
|
2571
|
+
});
|
|
2572
|
+
var CalendarSection = (0, import_joy28.styled)("div", {
|
|
2573
|
+
name: "DatePicker",
|
|
2574
|
+
slot: "calendarSection"
|
|
2575
|
+
})({
|
|
2576
|
+
width: "264px"
|
|
2577
|
+
});
|
|
2578
|
+
var PresetPanel = (0, import_joy28.styled)("div", {
|
|
2579
|
+
name: "DatePicker",
|
|
2580
|
+
slot: "presetPanel"
|
|
2581
|
+
})(({ theme }) => ({
|
|
2582
|
+
display: "flex",
|
|
2583
|
+
flexDirection: "column",
|
|
2584
|
+
borderLeft: `1px solid ${theme.vars.palette.divider}`,
|
|
2585
|
+
padding: theme.spacing(1),
|
|
2586
|
+
minWidth: "120px",
|
|
2587
|
+
overflowY: "auto"
|
|
2588
|
+
}));
|
|
2589
|
+
var PresetItem = (0, import_joy28.styled)(Button_default, {
|
|
2590
|
+
name: "DatePicker",
|
|
2591
|
+
slot: "presetItem",
|
|
2592
|
+
shouldForwardProp: (prop) => prop !== "active"
|
|
2593
|
+
})(({ active }) => [
|
|
2594
|
+
{
|
|
2595
|
+
width: "100%",
|
|
2596
|
+
justifyContent: "flex-start",
|
|
2597
|
+
whiteSpace: "nowrap"
|
|
2598
|
+
},
|
|
2599
|
+
active && {
|
|
2600
|
+
fontWeight: "bold"
|
|
2601
|
+
}
|
|
2602
|
+
]);
|
|
2566
2603
|
var DatePickerRoot = (0, import_joy28.styled)("div", {
|
|
2567
2604
|
name: "DatePicker",
|
|
2568
2605
|
slot: "root",
|
|
@@ -2680,6 +2717,7 @@ var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
|
|
|
2680
2717
|
hideClearButton,
|
|
2681
2718
|
readOnly,
|
|
2682
2719
|
shouldDisableDate,
|
|
2720
|
+
presets,
|
|
2683
2721
|
...innerProps
|
|
2684
2722
|
} = props;
|
|
2685
2723
|
const innerRef = (0, import_react20.useRef)(null);
|
|
@@ -2761,6 +2799,35 @@ var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
|
|
|
2761
2799
|
},
|
|
2762
2800
|
[inputReadOnly, buttonRef]
|
|
2763
2801
|
);
|
|
2802
|
+
const handlePresetClick = (0, import_react20.useCallback)(
|
|
2803
|
+
(presetValue) => {
|
|
2804
|
+
handleChange({
|
|
2805
|
+
target: {
|
|
2806
|
+
name: props.name,
|
|
2807
|
+
value: presetValue
|
|
2808
|
+
}
|
|
2809
|
+
});
|
|
2810
|
+
setAnchorEl(null);
|
|
2811
|
+
},
|
|
2812
|
+
[handleChange, props.name]
|
|
2813
|
+
);
|
|
2814
|
+
const isPresetDisabled = (0, import_react20.useCallback)(
|
|
2815
|
+
(presetValue) => {
|
|
2816
|
+
try {
|
|
2817
|
+
const date = parseDate(presetValue, format);
|
|
2818
|
+
if (Number.isNaN(date.getTime())) return true;
|
|
2819
|
+
if (minDate && date < new Date(minDate)) return true;
|
|
2820
|
+
if (maxDate && date > new Date(maxDate)) return true;
|
|
2821
|
+
if (disableFuture && date > new Date((/* @__PURE__ */ new Date()).toDateString())) return true;
|
|
2822
|
+
if (disablePast && date < new Date((/* @__PURE__ */ new Date()).toDateString())) return true;
|
|
2823
|
+
if (shouldDisableDate?.(presetValue)) return true;
|
|
2824
|
+
return false;
|
|
2825
|
+
} catch {
|
|
2826
|
+
return true;
|
|
2827
|
+
}
|
|
2828
|
+
},
|
|
2829
|
+
[format, minDate, maxDate, disableFuture, disablePast, shouldDisableDate]
|
|
2830
|
+
);
|
|
2764
2831
|
return /* @__PURE__ */ import_react20.default.createElement(DatePickerRoot, null, /* @__PURE__ */ import_react20.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement(
|
|
2765
2832
|
Input_default,
|
|
2766
2833
|
{
|
|
@@ -2826,7 +2893,7 @@ var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
|
|
|
2826
2893
|
"aria-label": "Calendar Tooltip",
|
|
2827
2894
|
"aria-expanded": open
|
|
2828
2895
|
},
|
|
2829
|
-
/* @__PURE__ */ import_react20.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react20.default.createElement(
|
|
2896
|
+
/* @__PURE__ */ import_react20.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react20.default.createElement(CalendarSheetContent, null, /* @__PURE__ */ import_react20.default.createElement(CalendarSection, null, /* @__PURE__ */ import_react20.default.createElement(
|
|
2830
2897
|
Calendar_default,
|
|
2831
2898
|
{
|
|
2832
2899
|
value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
|
|
@@ -2870,7 +2937,22 @@ var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
|
|
|
2870
2937
|
},
|
|
2871
2938
|
"Clear"
|
|
2872
2939
|
)
|
|
2873
|
-
))
|
|
2940
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ import_react20.default.createElement(PresetPanel, null, presets.map((preset) => {
|
|
2941
|
+
const disabled2 = isPresetDisabled(preset.value);
|
|
2942
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
2943
|
+
PresetItem,
|
|
2944
|
+
{
|
|
2945
|
+
key: preset.label,
|
|
2946
|
+
size: "sm",
|
|
2947
|
+
variant: value === preset.value ? "soft" : "plain",
|
|
2948
|
+
color: value === preset.value ? "primary" : "neutral",
|
|
2949
|
+
active: value === preset.value,
|
|
2950
|
+
disabled: disabled2,
|
|
2951
|
+
onClick: () => handlePresetClick(preset.value)
|
|
2952
|
+
},
|
|
2953
|
+
preset.label
|
|
2954
|
+
);
|
|
2955
|
+
}))))
|
|
2874
2956
|
)))));
|
|
2875
2957
|
});
|
|
2876
2958
|
|
|
@@ -4701,10 +4783,47 @@ var CalendarSheet2 = (0, import_joy36.styled)(Sheet_default, {
|
|
|
4701
4783
|
overridesResolver: (props, styles) => styles.root
|
|
4702
4784
|
})(({ theme }) => ({
|
|
4703
4785
|
zIndex: theme.zIndex.tooltip,
|
|
4704
|
-
width: "264px",
|
|
4705
4786
|
boxShadow: theme.shadow.md,
|
|
4706
4787
|
borderRadius: theme.radius.md
|
|
4707
4788
|
}));
|
|
4789
|
+
var CalendarSheetContent2 = (0, import_joy36.styled)("div", {
|
|
4790
|
+
name: "DateRangePicker",
|
|
4791
|
+
slot: "sheetContent"
|
|
4792
|
+
})({
|
|
4793
|
+
display: "flex",
|
|
4794
|
+
flexDirection: "row"
|
|
4795
|
+
});
|
|
4796
|
+
var CalendarSection2 = (0, import_joy36.styled)("div", {
|
|
4797
|
+
name: "DateRangePicker",
|
|
4798
|
+
slot: "calendarSection"
|
|
4799
|
+
})({
|
|
4800
|
+
width: "264px"
|
|
4801
|
+
});
|
|
4802
|
+
var PresetPanel2 = (0, import_joy36.styled)("div", {
|
|
4803
|
+
name: "DateRangePicker",
|
|
4804
|
+
slot: "presetPanel"
|
|
4805
|
+
})(({ theme }) => ({
|
|
4806
|
+
display: "flex",
|
|
4807
|
+
flexDirection: "column",
|
|
4808
|
+
borderLeft: `1px solid ${theme.vars.palette.divider}`,
|
|
4809
|
+
padding: theme.spacing(1),
|
|
4810
|
+
minWidth: "120px",
|
|
4811
|
+
overflowY: "auto"
|
|
4812
|
+
}));
|
|
4813
|
+
var PresetItem2 = (0, import_joy36.styled)(Button_default, {
|
|
4814
|
+
name: "DateRangePicker",
|
|
4815
|
+
slot: "presetItem",
|
|
4816
|
+
shouldForwardProp: (prop) => prop !== "active"
|
|
4817
|
+
})(({ active }) => [
|
|
4818
|
+
{
|
|
4819
|
+
width: "100%",
|
|
4820
|
+
justifyContent: "flex-start",
|
|
4821
|
+
whiteSpace: "nowrap"
|
|
4822
|
+
},
|
|
4823
|
+
active && {
|
|
4824
|
+
fontWeight: "bold"
|
|
4825
|
+
}
|
|
4826
|
+
]);
|
|
4708
4827
|
var DateRangePickerRoot = (0, import_joy36.styled)("div", {
|
|
4709
4828
|
name: "DateRangePicker",
|
|
4710
4829
|
slot: "root",
|
|
@@ -4833,6 +4952,7 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
|
4833
4952
|
inputReadOnly,
|
|
4834
4953
|
hideClearButton,
|
|
4835
4954
|
readOnly,
|
|
4955
|
+
presets,
|
|
4836
4956
|
...innerProps
|
|
4837
4957
|
} = props;
|
|
4838
4958
|
const innerRef = (0, import_react29.useRef)(null);
|
|
@@ -4932,6 +5052,38 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
|
4932
5052
|
},
|
|
4933
5053
|
[inputReadOnly, buttonRef]
|
|
4934
5054
|
);
|
|
5055
|
+
const handlePresetClick = (0, import_react29.useCallback)(
|
|
5056
|
+
(presetValue) => {
|
|
5057
|
+
if (props.value !== void 0) {
|
|
5058
|
+
onChange?.({ target: { name: props.name, value: presetValue } });
|
|
5059
|
+
} else {
|
|
5060
|
+
const dates = parseDates(presetValue, format);
|
|
5061
|
+
setDisplayValue(formatValueString2(dates, displayFormat));
|
|
5062
|
+
setValue(presetValue);
|
|
5063
|
+
}
|
|
5064
|
+
setAnchorEl(null);
|
|
5065
|
+
},
|
|
5066
|
+
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
|
|
5067
|
+
);
|
|
5068
|
+
const isPresetDisabled = (0, import_react29.useCallback)(
|
|
5069
|
+
(presetValue) => {
|
|
5070
|
+
try {
|
|
5071
|
+
const dates = parseDates(presetValue, format);
|
|
5072
|
+
if (dates.some((d) => Number.isNaN(d.getTime()))) return true;
|
|
5073
|
+
const today = new Date((/* @__PURE__ */ new Date()).toDateString());
|
|
5074
|
+
for (const date of dates) {
|
|
5075
|
+
if (minDate && date < new Date(minDate)) return true;
|
|
5076
|
+
if (maxDate && date > new Date(maxDate)) return true;
|
|
5077
|
+
if (disableFuture && date > today) return true;
|
|
5078
|
+
if (disablePast && date < today) return true;
|
|
5079
|
+
}
|
|
5080
|
+
return false;
|
|
5081
|
+
} catch {
|
|
5082
|
+
return true;
|
|
5083
|
+
}
|
|
5084
|
+
},
|
|
5085
|
+
[format, minDate, maxDate, disableFuture, disablePast]
|
|
5086
|
+
);
|
|
4935
5087
|
return /* @__PURE__ */ import_react29.default.createElement(DateRangePickerRoot, null, /* @__PURE__ */ import_react29.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, /* @__PURE__ */ import_react29.default.createElement(
|
|
4936
5088
|
Input_default,
|
|
4937
5089
|
{
|
|
@@ -4997,7 +5149,7 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
|
4997
5149
|
"aria-label": "Calendar Tooltip",
|
|
4998
5150
|
"aria-expanded": open
|
|
4999
5151
|
},
|
|
5000
|
-
/* @__PURE__ */ import_react29.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
5152
|
+
/* @__PURE__ */ import_react29.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react29.default.createElement(CalendarSheetContent2, null, /* @__PURE__ */ import_react29.default.createElement(CalendarSection2, null, /* @__PURE__ */ import_react29.default.createElement(
|
|
5001
5153
|
Calendar_default,
|
|
5002
5154
|
{
|
|
5003
5155
|
rangeSelection: true,
|
|
@@ -5029,7 +5181,22 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
|
5029
5181
|
},
|
|
5030
5182
|
"Clear"
|
|
5031
5183
|
)
|
|
5032
|
-
))
|
|
5184
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ import_react29.default.createElement(PresetPanel2, null, presets.map((preset) => {
|
|
5185
|
+
const disabled2 = isPresetDisabled(preset.value);
|
|
5186
|
+
return /* @__PURE__ */ import_react29.default.createElement(
|
|
5187
|
+
PresetItem2,
|
|
5188
|
+
{
|
|
5189
|
+
key: preset.label,
|
|
5190
|
+
size: "sm",
|
|
5191
|
+
variant: value === preset.value ? "soft" : "plain",
|
|
5192
|
+
color: value === preset.value ? "primary" : "neutral",
|
|
5193
|
+
active: value === preset.value,
|
|
5194
|
+
disabled: disabled2,
|
|
5195
|
+
onClick: () => handlePresetClick(preset.value)
|
|
5196
|
+
},
|
|
5197
|
+
preset.label
|
|
5198
|
+
);
|
|
5199
|
+
}))))
|
|
5033
5200
|
)))));
|
|
5034
5201
|
});
|
|
5035
5202
|
DateRangePicker.displayName = "DateRangePicker";
|
package/dist/index.js
CHANGED
|
@@ -2442,10 +2442,47 @@ var CalendarSheet = styled10(Sheet_default, {
|
|
|
2442
2442
|
slot: "sheet",
|
|
2443
2443
|
overridesResolver: (props, styles) => styles.root
|
|
2444
2444
|
})(({ theme }) => ({
|
|
2445
|
-
width: "264px",
|
|
2446
2445
|
boxShadow: theme.shadow.md,
|
|
2447
2446
|
borderRadius: theme.radius.md
|
|
2448
2447
|
}));
|
|
2448
|
+
var CalendarSheetContent = styled10("div", {
|
|
2449
|
+
name: "DatePicker",
|
|
2450
|
+
slot: "sheetContent"
|
|
2451
|
+
})({
|
|
2452
|
+
display: "flex",
|
|
2453
|
+
flexDirection: "row"
|
|
2454
|
+
});
|
|
2455
|
+
var CalendarSection = styled10("div", {
|
|
2456
|
+
name: "DatePicker",
|
|
2457
|
+
slot: "calendarSection"
|
|
2458
|
+
})({
|
|
2459
|
+
width: "264px"
|
|
2460
|
+
});
|
|
2461
|
+
var PresetPanel = styled10("div", {
|
|
2462
|
+
name: "DatePicker",
|
|
2463
|
+
slot: "presetPanel"
|
|
2464
|
+
})(({ theme }) => ({
|
|
2465
|
+
display: "flex",
|
|
2466
|
+
flexDirection: "column",
|
|
2467
|
+
borderLeft: `1px solid ${theme.vars.palette.divider}`,
|
|
2468
|
+
padding: theme.spacing(1),
|
|
2469
|
+
minWidth: "120px",
|
|
2470
|
+
overflowY: "auto"
|
|
2471
|
+
}));
|
|
2472
|
+
var PresetItem = styled10(Button_default, {
|
|
2473
|
+
name: "DatePicker",
|
|
2474
|
+
slot: "presetItem",
|
|
2475
|
+
shouldForwardProp: (prop) => prop !== "active"
|
|
2476
|
+
})(({ active }) => [
|
|
2477
|
+
{
|
|
2478
|
+
width: "100%",
|
|
2479
|
+
justifyContent: "flex-start",
|
|
2480
|
+
whiteSpace: "nowrap"
|
|
2481
|
+
},
|
|
2482
|
+
active && {
|
|
2483
|
+
fontWeight: "bold"
|
|
2484
|
+
}
|
|
2485
|
+
]);
|
|
2449
2486
|
var DatePickerRoot = styled10("div", {
|
|
2450
2487
|
name: "DatePicker",
|
|
2451
2488
|
slot: "root",
|
|
@@ -2563,6 +2600,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2563
2600
|
hideClearButton,
|
|
2564
2601
|
readOnly,
|
|
2565
2602
|
shouldDisableDate,
|
|
2603
|
+
presets,
|
|
2566
2604
|
...innerProps
|
|
2567
2605
|
} = props;
|
|
2568
2606
|
const innerRef = useRef4(null);
|
|
@@ -2644,6 +2682,35 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2644
2682
|
},
|
|
2645
2683
|
[inputReadOnly, buttonRef]
|
|
2646
2684
|
);
|
|
2685
|
+
const handlePresetClick = useCallback8(
|
|
2686
|
+
(presetValue) => {
|
|
2687
|
+
handleChange({
|
|
2688
|
+
target: {
|
|
2689
|
+
name: props.name,
|
|
2690
|
+
value: presetValue
|
|
2691
|
+
}
|
|
2692
|
+
});
|
|
2693
|
+
setAnchorEl(null);
|
|
2694
|
+
},
|
|
2695
|
+
[handleChange, props.name]
|
|
2696
|
+
);
|
|
2697
|
+
const isPresetDisabled = useCallback8(
|
|
2698
|
+
(presetValue) => {
|
|
2699
|
+
try {
|
|
2700
|
+
const date = parseDate(presetValue, format);
|
|
2701
|
+
if (Number.isNaN(date.getTime())) return true;
|
|
2702
|
+
if (minDate && date < new Date(minDate)) return true;
|
|
2703
|
+
if (maxDate && date > new Date(maxDate)) return true;
|
|
2704
|
+
if (disableFuture && date > new Date((/* @__PURE__ */ new Date()).toDateString())) return true;
|
|
2705
|
+
if (disablePast && date < new Date((/* @__PURE__ */ new Date()).toDateString())) return true;
|
|
2706
|
+
if (shouldDisableDate?.(presetValue)) return true;
|
|
2707
|
+
return false;
|
|
2708
|
+
} catch {
|
|
2709
|
+
return true;
|
|
2710
|
+
}
|
|
2711
|
+
},
|
|
2712
|
+
[format, minDate, maxDate, disableFuture, disablePast, shouldDisableDate]
|
|
2713
|
+
);
|
|
2647
2714
|
return /* @__PURE__ */ React18.createElement(DatePickerRoot, null, /* @__PURE__ */ React18.createElement(FocusTrap, { open: true }, /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
|
|
2648
2715
|
Input_default,
|
|
2649
2716
|
{
|
|
@@ -2709,7 +2776,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2709
2776
|
"aria-label": "Calendar Tooltip",
|
|
2710
2777
|
"aria-expanded": open
|
|
2711
2778
|
},
|
|
2712
|
-
/* @__PURE__ */ React18.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React18.createElement(
|
|
2779
|
+
/* @__PURE__ */ React18.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React18.createElement(CalendarSheetContent, null, /* @__PURE__ */ React18.createElement(CalendarSection, null, /* @__PURE__ */ React18.createElement(
|
|
2713
2780
|
Calendar_default,
|
|
2714
2781
|
{
|
|
2715
2782
|
value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
|
|
@@ -2753,7 +2820,22 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2753
2820
|
},
|
|
2754
2821
|
"Clear"
|
|
2755
2822
|
)
|
|
2756
|
-
))
|
|
2823
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ React18.createElement(PresetPanel, null, presets.map((preset) => {
|
|
2824
|
+
const disabled2 = isPresetDisabled(preset.value);
|
|
2825
|
+
return /* @__PURE__ */ React18.createElement(
|
|
2826
|
+
PresetItem,
|
|
2827
|
+
{
|
|
2828
|
+
key: preset.label,
|
|
2829
|
+
size: "sm",
|
|
2830
|
+
variant: value === preset.value ? "soft" : "plain",
|
|
2831
|
+
color: value === preset.value ? "primary" : "neutral",
|
|
2832
|
+
active: value === preset.value,
|
|
2833
|
+
disabled: disabled2,
|
|
2834
|
+
onClick: () => handlePresetClick(preset.value)
|
|
2835
|
+
},
|
|
2836
|
+
preset.label
|
|
2837
|
+
);
|
|
2838
|
+
}))))
|
|
2757
2839
|
)))));
|
|
2758
2840
|
});
|
|
2759
2841
|
|
|
@@ -4584,10 +4666,47 @@ var CalendarSheet2 = styled14(Sheet_default, {
|
|
|
4584
4666
|
overridesResolver: (props, styles) => styles.root
|
|
4585
4667
|
})(({ theme }) => ({
|
|
4586
4668
|
zIndex: theme.zIndex.tooltip,
|
|
4587
|
-
width: "264px",
|
|
4588
4669
|
boxShadow: theme.shadow.md,
|
|
4589
4670
|
borderRadius: theme.radius.md
|
|
4590
4671
|
}));
|
|
4672
|
+
var CalendarSheetContent2 = styled14("div", {
|
|
4673
|
+
name: "DateRangePicker",
|
|
4674
|
+
slot: "sheetContent"
|
|
4675
|
+
})({
|
|
4676
|
+
display: "flex",
|
|
4677
|
+
flexDirection: "row"
|
|
4678
|
+
});
|
|
4679
|
+
var CalendarSection2 = styled14("div", {
|
|
4680
|
+
name: "DateRangePicker",
|
|
4681
|
+
slot: "calendarSection"
|
|
4682
|
+
})({
|
|
4683
|
+
width: "264px"
|
|
4684
|
+
});
|
|
4685
|
+
var PresetPanel2 = styled14("div", {
|
|
4686
|
+
name: "DateRangePicker",
|
|
4687
|
+
slot: "presetPanel"
|
|
4688
|
+
})(({ theme }) => ({
|
|
4689
|
+
display: "flex",
|
|
4690
|
+
flexDirection: "column",
|
|
4691
|
+
borderLeft: `1px solid ${theme.vars.palette.divider}`,
|
|
4692
|
+
padding: theme.spacing(1),
|
|
4693
|
+
minWidth: "120px",
|
|
4694
|
+
overflowY: "auto"
|
|
4695
|
+
}));
|
|
4696
|
+
var PresetItem2 = styled14(Button_default, {
|
|
4697
|
+
name: "DateRangePicker",
|
|
4698
|
+
slot: "presetItem",
|
|
4699
|
+
shouldForwardProp: (prop) => prop !== "active"
|
|
4700
|
+
})(({ active }) => [
|
|
4701
|
+
{
|
|
4702
|
+
width: "100%",
|
|
4703
|
+
justifyContent: "flex-start",
|
|
4704
|
+
whiteSpace: "nowrap"
|
|
4705
|
+
},
|
|
4706
|
+
active && {
|
|
4707
|
+
fontWeight: "bold"
|
|
4708
|
+
}
|
|
4709
|
+
]);
|
|
4591
4710
|
var DateRangePickerRoot = styled14("div", {
|
|
4592
4711
|
name: "DateRangePicker",
|
|
4593
4712
|
slot: "root",
|
|
@@ -4716,6 +4835,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4716
4835
|
inputReadOnly,
|
|
4717
4836
|
hideClearButton,
|
|
4718
4837
|
readOnly,
|
|
4838
|
+
presets,
|
|
4719
4839
|
...innerProps
|
|
4720
4840
|
} = props;
|
|
4721
4841
|
const innerRef = useRef8(null);
|
|
@@ -4815,6 +4935,38 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4815
4935
|
},
|
|
4816
4936
|
[inputReadOnly, buttonRef]
|
|
4817
4937
|
);
|
|
4938
|
+
const handlePresetClick = useCallback13(
|
|
4939
|
+
(presetValue) => {
|
|
4940
|
+
if (props.value !== void 0) {
|
|
4941
|
+
onChange?.({ target: { name: props.name, value: presetValue } });
|
|
4942
|
+
} else {
|
|
4943
|
+
const dates = parseDates(presetValue, format);
|
|
4944
|
+
setDisplayValue(formatValueString2(dates, displayFormat));
|
|
4945
|
+
setValue(presetValue);
|
|
4946
|
+
}
|
|
4947
|
+
setAnchorEl(null);
|
|
4948
|
+
},
|
|
4949
|
+
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
|
|
4950
|
+
);
|
|
4951
|
+
const isPresetDisabled = useCallback13(
|
|
4952
|
+
(presetValue) => {
|
|
4953
|
+
try {
|
|
4954
|
+
const dates = parseDates(presetValue, format);
|
|
4955
|
+
if (dates.some((d) => Number.isNaN(d.getTime()))) return true;
|
|
4956
|
+
const today = new Date((/* @__PURE__ */ new Date()).toDateString());
|
|
4957
|
+
for (const date of dates) {
|
|
4958
|
+
if (minDate && date < new Date(minDate)) return true;
|
|
4959
|
+
if (maxDate && date > new Date(maxDate)) return true;
|
|
4960
|
+
if (disableFuture && date > today) return true;
|
|
4961
|
+
if (disablePast && date < today) return true;
|
|
4962
|
+
}
|
|
4963
|
+
return false;
|
|
4964
|
+
} catch {
|
|
4965
|
+
return true;
|
|
4966
|
+
}
|
|
4967
|
+
},
|
|
4968
|
+
[format, minDate, maxDate, disableFuture, disablePast]
|
|
4969
|
+
);
|
|
4818
4970
|
return /* @__PURE__ */ React26.createElement(DateRangePickerRoot, null, /* @__PURE__ */ React26.createElement(FocusTrap2, { open: true }, /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement(
|
|
4819
4971
|
Input_default,
|
|
4820
4972
|
{
|
|
@@ -4880,7 +5032,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4880
5032
|
"aria-label": "Calendar Tooltip",
|
|
4881
5033
|
"aria-expanded": open
|
|
4882
5034
|
},
|
|
4883
|
-
/* @__PURE__ */ React26.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React26.createElement(
|
|
5035
|
+
/* @__PURE__ */ React26.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React26.createElement(CalendarSheetContent2, null, /* @__PURE__ */ React26.createElement(CalendarSection2, null, /* @__PURE__ */ React26.createElement(
|
|
4884
5036
|
Calendar_default,
|
|
4885
5037
|
{
|
|
4886
5038
|
rangeSelection: true,
|
|
@@ -4912,7 +5064,22 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4912
5064
|
},
|
|
4913
5065
|
"Clear"
|
|
4914
5066
|
)
|
|
4915
|
-
))
|
|
5067
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ React26.createElement(PresetPanel2, null, presets.map((preset) => {
|
|
5068
|
+
const disabled2 = isPresetDisabled(preset.value);
|
|
5069
|
+
return /* @__PURE__ */ React26.createElement(
|
|
5070
|
+
PresetItem2,
|
|
5071
|
+
{
|
|
5072
|
+
key: preset.label,
|
|
5073
|
+
size: "sm",
|
|
5074
|
+
variant: value === preset.value ? "soft" : "plain",
|
|
5075
|
+
color: value === preset.value ? "primary" : "neutral",
|
|
5076
|
+
active: value === preset.value,
|
|
5077
|
+
disabled: disabled2,
|
|
5078
|
+
onClick: () => handlePresetClick(preset.value)
|
|
5079
|
+
},
|
|
5080
|
+
preset.label
|
|
5081
|
+
);
|
|
5082
|
+
}))))
|
|
4916
5083
|
)))));
|
|
4917
5084
|
});
|
|
4918
5085
|
DateRangePicker.displayName = "DateRangePicker";
|