@ceed/ads 1.29.0 → 1.30.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/DataTable/hooks.d.ts +2 -1
- package/dist/components/DataTable/utils.d.ts +1 -0
- 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 +197 -9
- package/dist/index.js +197 -9
- package/framer/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -2236,6 +2236,15 @@ function calculateColumnGroups(columnGroupingModel, columns, visibleFields) {
|
|
|
2236
2236
|
const correctedMaxLevel = filteredGroupsByLevel.length > 0 ? filteredGroupsByLevel.length - 1 : -1;
|
|
2237
2237
|
return { groups: filteredGroupsByLevel, maxLevel: correctedMaxLevel, fieldsInGroupingModel };
|
|
2238
2238
|
}
|
|
2239
|
+
function parsePxValue(value) {
|
|
2240
|
+
if (!value) return null;
|
|
2241
|
+
const trimmed = value.trim();
|
|
2242
|
+
if (trimmed.endsWith("px")) {
|
|
2243
|
+
const num = parseFloat(trimmed);
|
|
2244
|
+
return isNaN(num) ? null : num;
|
|
2245
|
+
}
|
|
2246
|
+
return null;
|
|
2247
|
+
}
|
|
2239
2248
|
function getTextAlign(props) {
|
|
2240
2249
|
return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
|
|
2241
2250
|
}
|
|
@@ -2548,10 +2557,47 @@ var CalendarSheet = (0, import_joy28.styled)(Sheet_default, {
|
|
|
2548
2557
|
slot: "sheet",
|
|
2549
2558
|
overridesResolver: (props, styles) => styles.root
|
|
2550
2559
|
})(({ theme }) => ({
|
|
2551
|
-
width: "264px",
|
|
2552
2560
|
boxShadow: theme.shadow.md,
|
|
2553
2561
|
borderRadius: theme.radius.md
|
|
2554
2562
|
}));
|
|
2563
|
+
var CalendarSheetContent = (0, import_joy28.styled)("div", {
|
|
2564
|
+
name: "DatePicker",
|
|
2565
|
+
slot: "sheetContent"
|
|
2566
|
+
})({
|
|
2567
|
+
display: "flex",
|
|
2568
|
+
flexDirection: "row"
|
|
2569
|
+
});
|
|
2570
|
+
var CalendarSection = (0, import_joy28.styled)("div", {
|
|
2571
|
+
name: "DatePicker",
|
|
2572
|
+
slot: "calendarSection"
|
|
2573
|
+
})({
|
|
2574
|
+
width: "264px"
|
|
2575
|
+
});
|
|
2576
|
+
var PresetPanel = (0, import_joy28.styled)("div", {
|
|
2577
|
+
name: "DatePicker",
|
|
2578
|
+
slot: "presetPanel"
|
|
2579
|
+
})(({ theme }) => ({
|
|
2580
|
+
display: "flex",
|
|
2581
|
+
flexDirection: "column",
|
|
2582
|
+
borderLeft: `1px solid ${theme.vars.palette.divider}`,
|
|
2583
|
+
padding: theme.spacing(1),
|
|
2584
|
+
minWidth: "120px",
|
|
2585
|
+
overflowY: "auto"
|
|
2586
|
+
}));
|
|
2587
|
+
var PresetItem = (0, import_joy28.styled)(Button_default, {
|
|
2588
|
+
name: "DatePicker",
|
|
2589
|
+
slot: "presetItem",
|
|
2590
|
+
shouldForwardProp: (prop) => prop !== "active"
|
|
2591
|
+
})(({ active }) => [
|
|
2592
|
+
{
|
|
2593
|
+
width: "100%",
|
|
2594
|
+
justifyContent: "flex-start",
|
|
2595
|
+
whiteSpace: "nowrap"
|
|
2596
|
+
},
|
|
2597
|
+
active && {
|
|
2598
|
+
fontWeight: "bold"
|
|
2599
|
+
}
|
|
2600
|
+
]);
|
|
2555
2601
|
var DatePickerRoot = (0, import_joy28.styled)("div", {
|
|
2556
2602
|
name: "DatePicker",
|
|
2557
2603
|
slot: "root",
|
|
@@ -2669,6 +2715,7 @@ var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
|
|
|
2669
2715
|
hideClearButton,
|
|
2670
2716
|
readOnly,
|
|
2671
2717
|
shouldDisableDate,
|
|
2718
|
+
presets,
|
|
2672
2719
|
...innerProps
|
|
2673
2720
|
} = props;
|
|
2674
2721
|
const innerRef = (0, import_react20.useRef)(null);
|
|
@@ -2750,6 +2797,35 @@ var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
|
|
|
2750
2797
|
},
|
|
2751
2798
|
[inputReadOnly, buttonRef]
|
|
2752
2799
|
);
|
|
2800
|
+
const handlePresetClick = (0, import_react20.useCallback)(
|
|
2801
|
+
(presetValue) => {
|
|
2802
|
+
handleChange({
|
|
2803
|
+
target: {
|
|
2804
|
+
name: props.name,
|
|
2805
|
+
value: presetValue
|
|
2806
|
+
}
|
|
2807
|
+
});
|
|
2808
|
+
setAnchorEl(null);
|
|
2809
|
+
},
|
|
2810
|
+
[handleChange, props.name]
|
|
2811
|
+
);
|
|
2812
|
+
const isPresetDisabled = (0, import_react20.useCallback)(
|
|
2813
|
+
(presetValue) => {
|
|
2814
|
+
try {
|
|
2815
|
+
const date = parseDate(presetValue, format);
|
|
2816
|
+
if (Number.isNaN(date.getTime())) return true;
|
|
2817
|
+
if (minDate && date < new Date(minDate)) return true;
|
|
2818
|
+
if (maxDate && date > new Date(maxDate)) return true;
|
|
2819
|
+
if (disableFuture && date > new Date((/* @__PURE__ */ new Date()).toDateString())) return true;
|
|
2820
|
+
if (disablePast && date < new Date((/* @__PURE__ */ new Date()).toDateString())) return true;
|
|
2821
|
+
if (shouldDisableDate?.(presetValue)) return true;
|
|
2822
|
+
return false;
|
|
2823
|
+
} catch {
|
|
2824
|
+
return true;
|
|
2825
|
+
}
|
|
2826
|
+
},
|
|
2827
|
+
[format, minDate, maxDate, disableFuture, disablePast, shouldDisableDate]
|
|
2828
|
+
);
|
|
2753
2829
|
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(
|
|
2754
2830
|
Input_default,
|
|
2755
2831
|
{
|
|
@@ -2815,7 +2891,7 @@ var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
|
|
|
2815
2891
|
"aria-label": "Calendar Tooltip",
|
|
2816
2892
|
"aria-expanded": open
|
|
2817
2893
|
},
|
|
2818
|
-
/* @__PURE__ */ import_react20.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react20.default.createElement(
|
|
2894
|
+
/* @__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(
|
|
2819
2895
|
Calendar_default,
|
|
2820
2896
|
{
|
|
2821
2897
|
value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
|
|
@@ -2859,7 +2935,22 @@ var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
|
|
|
2859
2935
|
},
|
|
2860
2936
|
"Clear"
|
|
2861
2937
|
)
|
|
2862
|
-
))
|
|
2938
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ import_react20.default.createElement(PresetPanel, null, presets.map((preset) => {
|
|
2939
|
+
const disabled2 = isPresetDisabled(preset.value);
|
|
2940
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
2941
|
+
PresetItem,
|
|
2942
|
+
{
|
|
2943
|
+
key: preset.label,
|
|
2944
|
+
size: "sm",
|
|
2945
|
+
variant: value === preset.value ? "soft" : "plain",
|
|
2946
|
+
color: value === preset.value ? "primary" : "neutral",
|
|
2947
|
+
active: value === preset.value,
|
|
2948
|
+
disabled: disabled2,
|
|
2949
|
+
onClick: () => handlePresetClick(preset.value)
|
|
2950
|
+
},
|
|
2951
|
+
preset.label
|
|
2952
|
+
);
|
|
2953
|
+
}))))
|
|
2863
2954
|
)))));
|
|
2864
2955
|
});
|
|
2865
2956
|
|
|
@@ -3535,7 +3626,8 @@ function useDataTableRenderer({
|
|
|
3535
3626
|
isRowSelectable,
|
|
3536
3627
|
columnGroupingModel,
|
|
3537
3628
|
columnVisibilityModel,
|
|
3538
|
-
onColumnVisibilityModelChange
|
|
3629
|
+
onColumnVisibilityModelChange,
|
|
3630
|
+
checkboxSelection
|
|
3539
3631
|
}) {
|
|
3540
3632
|
if (pinnedColumns && columnGroupingModel) {
|
|
3541
3633
|
throw new Error(
|
|
@@ -3568,6 +3660,14 @@ function useDataTableRenderer({
|
|
|
3568
3660
|
[reorderedColumns, visibilityModel]
|
|
3569
3661
|
);
|
|
3570
3662
|
const visibleFieldSet = (0, import_react25.useMemo)(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
|
|
3663
|
+
const tableMinWidth = (0, import_react25.useMemo)(() => {
|
|
3664
|
+
const DEFAULT_MIN = 50;
|
|
3665
|
+
let total = checkboxSelection ? 40 : 0;
|
|
3666
|
+
for (const col of visibleColumns) {
|
|
3667
|
+
total += parsePxValue(col.minWidth) ?? parsePxValue(col.width) ?? DEFAULT_MIN;
|
|
3668
|
+
}
|
|
3669
|
+
return total;
|
|
3670
|
+
}, [visibleColumns, checkboxSelection]);
|
|
3571
3671
|
const allColumnsByField = (0, import_react25.useMemo)(
|
|
3572
3672
|
() => reorderedColumns.reduce(
|
|
3573
3673
|
(acc, curr) => ({
|
|
@@ -3868,6 +3968,7 @@ function useDataTableRenderer({
|
|
|
3868
3968
|
]
|
|
3869
3969
|
),
|
|
3870
3970
|
columns,
|
|
3971
|
+
tableMinWidth,
|
|
3871
3972
|
processedColumnGroups,
|
|
3872
3973
|
onTotalSelect: (0, import_react25.useCallback)(() => {
|
|
3873
3974
|
const selectableRows = rows.filter((row, i) => {
|
|
@@ -4257,6 +4358,7 @@ function Component(props, apiRef) {
|
|
|
4257
4358
|
onTotalSelect,
|
|
4258
4359
|
HeadCell: HeadCell2,
|
|
4259
4360
|
BodyRow: BodyRow2,
|
|
4361
|
+
tableMinWidth,
|
|
4260
4362
|
// For keyboard selection
|
|
4261
4363
|
selectionAnchor,
|
|
4262
4364
|
setSelectionAnchor
|
|
@@ -4446,7 +4548,7 @@ function Component(props, apiRef) {
|
|
|
4446
4548
|
ref: parentRef,
|
|
4447
4549
|
...backgroundProps
|
|
4448
4550
|
},
|
|
4449
|
-
/* @__PURE__ */ import_react28.default.createElement(Table, { ...innerProps }, /* @__PURE__ */ import_react28.default.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
|
|
4551
|
+
/* @__PURE__ */ import_react28.default.createElement(Table, { ...innerProps, sx: { ...innerProps.sx, minWidth: tableMinWidth } }, /* @__PURE__ */ import_react28.default.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
|
|
4450
4552
|
"col",
|
|
4451
4553
|
{
|
|
4452
4554
|
style: {
|
|
@@ -4459,7 +4561,8 @@ function Component(props, apiRef) {
|
|
|
4459
4561
|
ref: c.tableColRef,
|
|
4460
4562
|
key: `${c.field.toString()}_${c.width}`,
|
|
4461
4563
|
style: {
|
|
4462
|
-
width: c.width
|
|
4564
|
+
width: c.width,
|
|
4565
|
+
minWidth: c.minWidth ?? "50px"
|
|
4463
4566
|
}
|
|
4464
4567
|
}
|
|
4465
4568
|
))), /* @__PURE__ */ import_react28.default.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.length > 0 && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ import_react28.default.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ import_react28.default.createElement(
|
|
@@ -4678,10 +4781,47 @@ var CalendarSheet2 = (0, import_joy36.styled)(Sheet_default, {
|
|
|
4678
4781
|
overridesResolver: (props, styles) => styles.root
|
|
4679
4782
|
})(({ theme }) => ({
|
|
4680
4783
|
zIndex: theme.zIndex.tooltip,
|
|
4681
|
-
width: "264px",
|
|
4682
4784
|
boxShadow: theme.shadow.md,
|
|
4683
4785
|
borderRadius: theme.radius.md
|
|
4684
4786
|
}));
|
|
4787
|
+
var CalendarSheetContent2 = (0, import_joy36.styled)("div", {
|
|
4788
|
+
name: "DateRangePicker",
|
|
4789
|
+
slot: "sheetContent"
|
|
4790
|
+
})({
|
|
4791
|
+
display: "flex",
|
|
4792
|
+
flexDirection: "row"
|
|
4793
|
+
});
|
|
4794
|
+
var CalendarSection2 = (0, import_joy36.styled)("div", {
|
|
4795
|
+
name: "DateRangePicker",
|
|
4796
|
+
slot: "calendarSection"
|
|
4797
|
+
})({
|
|
4798
|
+
width: "264px"
|
|
4799
|
+
});
|
|
4800
|
+
var PresetPanel2 = (0, import_joy36.styled)("div", {
|
|
4801
|
+
name: "DateRangePicker",
|
|
4802
|
+
slot: "presetPanel"
|
|
4803
|
+
})(({ theme }) => ({
|
|
4804
|
+
display: "flex",
|
|
4805
|
+
flexDirection: "column",
|
|
4806
|
+
borderLeft: `1px solid ${theme.vars.palette.divider}`,
|
|
4807
|
+
padding: theme.spacing(1),
|
|
4808
|
+
minWidth: "120px",
|
|
4809
|
+
overflowY: "auto"
|
|
4810
|
+
}));
|
|
4811
|
+
var PresetItem2 = (0, import_joy36.styled)(Button_default, {
|
|
4812
|
+
name: "DateRangePicker",
|
|
4813
|
+
slot: "presetItem",
|
|
4814
|
+
shouldForwardProp: (prop) => prop !== "active"
|
|
4815
|
+
})(({ active }) => [
|
|
4816
|
+
{
|
|
4817
|
+
width: "100%",
|
|
4818
|
+
justifyContent: "flex-start",
|
|
4819
|
+
whiteSpace: "nowrap"
|
|
4820
|
+
},
|
|
4821
|
+
active && {
|
|
4822
|
+
fontWeight: "bold"
|
|
4823
|
+
}
|
|
4824
|
+
]);
|
|
4685
4825
|
var DateRangePickerRoot = (0, import_joy36.styled)("div", {
|
|
4686
4826
|
name: "DateRangePicker",
|
|
4687
4827
|
slot: "root",
|
|
@@ -4810,6 +4950,7 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
|
4810
4950
|
inputReadOnly,
|
|
4811
4951
|
hideClearButton,
|
|
4812
4952
|
readOnly,
|
|
4953
|
+
presets,
|
|
4813
4954
|
...innerProps
|
|
4814
4955
|
} = props;
|
|
4815
4956
|
const innerRef = (0, import_react29.useRef)(null);
|
|
@@ -4909,6 +5050,38 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
|
4909
5050
|
},
|
|
4910
5051
|
[inputReadOnly, buttonRef]
|
|
4911
5052
|
);
|
|
5053
|
+
const handlePresetClick = (0, import_react29.useCallback)(
|
|
5054
|
+
(presetValue) => {
|
|
5055
|
+
if (props.value !== void 0) {
|
|
5056
|
+
onChange?.({ target: { name: props.name, value: presetValue } });
|
|
5057
|
+
} else {
|
|
5058
|
+
const dates = parseDates(presetValue, format);
|
|
5059
|
+
setDisplayValue(formatValueString2(dates, displayFormat));
|
|
5060
|
+
setValue(presetValue);
|
|
5061
|
+
}
|
|
5062
|
+
setAnchorEl(null);
|
|
5063
|
+
},
|
|
5064
|
+
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
|
|
5065
|
+
);
|
|
5066
|
+
const isPresetDisabled = (0, import_react29.useCallback)(
|
|
5067
|
+
(presetValue) => {
|
|
5068
|
+
try {
|
|
5069
|
+
const dates = parseDates(presetValue, format);
|
|
5070
|
+
if (dates.some((d) => Number.isNaN(d.getTime()))) return true;
|
|
5071
|
+
const today = new Date((/* @__PURE__ */ new Date()).toDateString());
|
|
5072
|
+
for (const date of dates) {
|
|
5073
|
+
if (minDate && date < new Date(minDate)) return true;
|
|
5074
|
+
if (maxDate && date > new Date(maxDate)) return true;
|
|
5075
|
+
if (disableFuture && date > today) return true;
|
|
5076
|
+
if (disablePast && date < today) return true;
|
|
5077
|
+
}
|
|
5078
|
+
return false;
|
|
5079
|
+
} catch {
|
|
5080
|
+
return true;
|
|
5081
|
+
}
|
|
5082
|
+
},
|
|
5083
|
+
[format, minDate, maxDate, disableFuture, disablePast]
|
|
5084
|
+
);
|
|
4912
5085
|
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(
|
|
4913
5086
|
Input_default,
|
|
4914
5087
|
{
|
|
@@ -4974,7 +5147,7 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
|
4974
5147
|
"aria-label": "Calendar Tooltip",
|
|
4975
5148
|
"aria-expanded": open
|
|
4976
5149
|
},
|
|
4977
|
-
/* @__PURE__ */ import_react29.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
5150
|
+
/* @__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(
|
|
4978
5151
|
Calendar_default,
|
|
4979
5152
|
{
|
|
4980
5153
|
rangeSelection: true,
|
|
@@ -5006,7 +5179,22 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
|
5006
5179
|
},
|
|
5007
5180
|
"Clear"
|
|
5008
5181
|
)
|
|
5009
|
-
))
|
|
5182
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ import_react29.default.createElement(PresetPanel2, null, presets.map((preset) => {
|
|
5183
|
+
const disabled2 = isPresetDisabled(preset.value);
|
|
5184
|
+
return /* @__PURE__ */ import_react29.default.createElement(
|
|
5185
|
+
PresetItem2,
|
|
5186
|
+
{
|
|
5187
|
+
key: preset.label,
|
|
5188
|
+
size: "sm",
|
|
5189
|
+
variant: value === preset.value ? "soft" : "plain",
|
|
5190
|
+
color: value === preset.value ? "primary" : "neutral",
|
|
5191
|
+
active: value === preset.value,
|
|
5192
|
+
disabled: disabled2,
|
|
5193
|
+
onClick: () => handlePresetClick(preset.value)
|
|
5194
|
+
},
|
|
5195
|
+
preset.label
|
|
5196
|
+
);
|
|
5197
|
+
}))))
|
|
5010
5198
|
)))));
|
|
5011
5199
|
});
|
|
5012
5200
|
DateRangePicker.displayName = "DateRangePicker";
|
package/dist/index.js
CHANGED
|
@@ -2102,6 +2102,15 @@ function calculateColumnGroups(columnGroupingModel, columns, visibleFields) {
|
|
|
2102
2102
|
const correctedMaxLevel = filteredGroupsByLevel.length > 0 ? filteredGroupsByLevel.length - 1 : -1;
|
|
2103
2103
|
return { groups: filteredGroupsByLevel, maxLevel: correctedMaxLevel, fieldsInGroupingModel };
|
|
2104
2104
|
}
|
|
2105
|
+
function parsePxValue(value) {
|
|
2106
|
+
if (!value) return null;
|
|
2107
|
+
const trimmed = value.trim();
|
|
2108
|
+
if (trimmed.endsWith("px")) {
|
|
2109
|
+
const num = parseFloat(trimmed);
|
|
2110
|
+
return isNaN(num) ? null : num;
|
|
2111
|
+
}
|
|
2112
|
+
return null;
|
|
2113
|
+
}
|
|
2105
2114
|
function getTextAlign(props) {
|
|
2106
2115
|
return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
|
|
2107
2116
|
}
|
|
@@ -2423,10 +2432,47 @@ var CalendarSheet = styled10(Sheet_default, {
|
|
|
2423
2432
|
slot: "sheet",
|
|
2424
2433
|
overridesResolver: (props, styles) => styles.root
|
|
2425
2434
|
})(({ theme }) => ({
|
|
2426
|
-
width: "264px",
|
|
2427
2435
|
boxShadow: theme.shadow.md,
|
|
2428
2436
|
borderRadius: theme.radius.md
|
|
2429
2437
|
}));
|
|
2438
|
+
var CalendarSheetContent = styled10("div", {
|
|
2439
|
+
name: "DatePicker",
|
|
2440
|
+
slot: "sheetContent"
|
|
2441
|
+
})({
|
|
2442
|
+
display: "flex",
|
|
2443
|
+
flexDirection: "row"
|
|
2444
|
+
});
|
|
2445
|
+
var CalendarSection = styled10("div", {
|
|
2446
|
+
name: "DatePicker",
|
|
2447
|
+
slot: "calendarSection"
|
|
2448
|
+
})({
|
|
2449
|
+
width: "264px"
|
|
2450
|
+
});
|
|
2451
|
+
var PresetPanel = styled10("div", {
|
|
2452
|
+
name: "DatePicker",
|
|
2453
|
+
slot: "presetPanel"
|
|
2454
|
+
})(({ theme }) => ({
|
|
2455
|
+
display: "flex",
|
|
2456
|
+
flexDirection: "column",
|
|
2457
|
+
borderLeft: `1px solid ${theme.vars.palette.divider}`,
|
|
2458
|
+
padding: theme.spacing(1),
|
|
2459
|
+
minWidth: "120px",
|
|
2460
|
+
overflowY: "auto"
|
|
2461
|
+
}));
|
|
2462
|
+
var PresetItem = styled10(Button_default, {
|
|
2463
|
+
name: "DatePicker",
|
|
2464
|
+
slot: "presetItem",
|
|
2465
|
+
shouldForwardProp: (prop) => prop !== "active"
|
|
2466
|
+
})(({ active }) => [
|
|
2467
|
+
{
|
|
2468
|
+
width: "100%",
|
|
2469
|
+
justifyContent: "flex-start",
|
|
2470
|
+
whiteSpace: "nowrap"
|
|
2471
|
+
},
|
|
2472
|
+
active && {
|
|
2473
|
+
fontWeight: "bold"
|
|
2474
|
+
}
|
|
2475
|
+
]);
|
|
2430
2476
|
var DatePickerRoot = styled10("div", {
|
|
2431
2477
|
name: "DatePicker",
|
|
2432
2478
|
slot: "root",
|
|
@@ -2544,6 +2590,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2544
2590
|
hideClearButton,
|
|
2545
2591
|
readOnly,
|
|
2546
2592
|
shouldDisableDate,
|
|
2593
|
+
presets,
|
|
2547
2594
|
...innerProps
|
|
2548
2595
|
} = props;
|
|
2549
2596
|
const innerRef = useRef4(null);
|
|
@@ -2625,6 +2672,35 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2625
2672
|
},
|
|
2626
2673
|
[inputReadOnly, buttonRef]
|
|
2627
2674
|
);
|
|
2675
|
+
const handlePresetClick = useCallback8(
|
|
2676
|
+
(presetValue) => {
|
|
2677
|
+
handleChange({
|
|
2678
|
+
target: {
|
|
2679
|
+
name: props.name,
|
|
2680
|
+
value: presetValue
|
|
2681
|
+
}
|
|
2682
|
+
});
|
|
2683
|
+
setAnchorEl(null);
|
|
2684
|
+
},
|
|
2685
|
+
[handleChange, props.name]
|
|
2686
|
+
);
|
|
2687
|
+
const isPresetDisabled = useCallback8(
|
|
2688
|
+
(presetValue) => {
|
|
2689
|
+
try {
|
|
2690
|
+
const date = parseDate(presetValue, format);
|
|
2691
|
+
if (Number.isNaN(date.getTime())) return true;
|
|
2692
|
+
if (minDate && date < new Date(minDate)) return true;
|
|
2693
|
+
if (maxDate && date > new Date(maxDate)) return true;
|
|
2694
|
+
if (disableFuture && date > new Date((/* @__PURE__ */ new Date()).toDateString())) return true;
|
|
2695
|
+
if (disablePast && date < new Date((/* @__PURE__ */ new Date()).toDateString())) return true;
|
|
2696
|
+
if (shouldDisableDate?.(presetValue)) return true;
|
|
2697
|
+
return false;
|
|
2698
|
+
} catch {
|
|
2699
|
+
return true;
|
|
2700
|
+
}
|
|
2701
|
+
},
|
|
2702
|
+
[format, minDate, maxDate, disableFuture, disablePast, shouldDisableDate]
|
|
2703
|
+
);
|
|
2628
2704
|
return /* @__PURE__ */ React18.createElement(DatePickerRoot, null, /* @__PURE__ */ React18.createElement(FocusTrap, { open: true }, /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(
|
|
2629
2705
|
Input_default,
|
|
2630
2706
|
{
|
|
@@ -2690,7 +2766,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2690
2766
|
"aria-label": "Calendar Tooltip",
|
|
2691
2767
|
"aria-expanded": open
|
|
2692
2768
|
},
|
|
2693
|
-
/* @__PURE__ */ React18.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React18.createElement(
|
|
2769
|
+
/* @__PURE__ */ React18.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React18.createElement(CalendarSheetContent, null, /* @__PURE__ */ React18.createElement(CalendarSection, null, /* @__PURE__ */ React18.createElement(
|
|
2694
2770
|
Calendar_default,
|
|
2695
2771
|
{
|
|
2696
2772
|
value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
|
|
@@ -2734,7 +2810,22 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2734
2810
|
},
|
|
2735
2811
|
"Clear"
|
|
2736
2812
|
)
|
|
2737
|
-
))
|
|
2813
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ React18.createElement(PresetPanel, null, presets.map((preset) => {
|
|
2814
|
+
const disabled2 = isPresetDisabled(preset.value);
|
|
2815
|
+
return /* @__PURE__ */ React18.createElement(
|
|
2816
|
+
PresetItem,
|
|
2817
|
+
{
|
|
2818
|
+
key: preset.label,
|
|
2819
|
+
size: "sm",
|
|
2820
|
+
variant: value === preset.value ? "soft" : "plain",
|
|
2821
|
+
color: value === preset.value ? "primary" : "neutral",
|
|
2822
|
+
active: value === preset.value,
|
|
2823
|
+
disabled: disabled2,
|
|
2824
|
+
onClick: () => handlePresetClick(preset.value)
|
|
2825
|
+
},
|
|
2826
|
+
preset.label
|
|
2827
|
+
);
|
|
2828
|
+
}))))
|
|
2738
2829
|
)))));
|
|
2739
2830
|
});
|
|
2740
2831
|
|
|
@@ -3410,7 +3501,8 @@ function useDataTableRenderer({
|
|
|
3410
3501
|
isRowSelectable,
|
|
3411
3502
|
columnGroupingModel,
|
|
3412
3503
|
columnVisibilityModel,
|
|
3413
|
-
onColumnVisibilityModelChange
|
|
3504
|
+
onColumnVisibilityModelChange,
|
|
3505
|
+
checkboxSelection
|
|
3414
3506
|
}) {
|
|
3415
3507
|
if (pinnedColumns && columnGroupingModel) {
|
|
3416
3508
|
throw new Error(
|
|
@@ -3443,6 +3535,14 @@ function useDataTableRenderer({
|
|
|
3443
3535
|
[reorderedColumns, visibilityModel]
|
|
3444
3536
|
);
|
|
3445
3537
|
const visibleFieldSet = useMemo9(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
|
|
3538
|
+
const tableMinWidth = useMemo9(() => {
|
|
3539
|
+
const DEFAULT_MIN = 50;
|
|
3540
|
+
let total = checkboxSelection ? 40 : 0;
|
|
3541
|
+
for (const col of visibleColumns) {
|
|
3542
|
+
total += parsePxValue(col.minWidth) ?? parsePxValue(col.width) ?? DEFAULT_MIN;
|
|
3543
|
+
}
|
|
3544
|
+
return total;
|
|
3545
|
+
}, [visibleColumns, checkboxSelection]);
|
|
3446
3546
|
const allColumnsByField = useMemo9(
|
|
3447
3547
|
() => reorderedColumns.reduce(
|
|
3448
3548
|
(acc, curr) => ({
|
|
@@ -3743,6 +3843,7 @@ function useDataTableRenderer({
|
|
|
3743
3843
|
]
|
|
3744
3844
|
),
|
|
3745
3845
|
columns,
|
|
3846
|
+
tableMinWidth,
|
|
3746
3847
|
processedColumnGroups,
|
|
3747
3848
|
onTotalSelect: useCallback10(() => {
|
|
3748
3849
|
const selectableRows = rows.filter((row, i) => {
|
|
@@ -4132,6 +4233,7 @@ function Component(props, apiRef) {
|
|
|
4132
4233
|
onTotalSelect,
|
|
4133
4234
|
HeadCell: HeadCell2,
|
|
4134
4235
|
BodyRow: BodyRow2,
|
|
4236
|
+
tableMinWidth,
|
|
4135
4237
|
// For keyboard selection
|
|
4136
4238
|
selectionAnchor,
|
|
4137
4239
|
setSelectionAnchor
|
|
@@ -4321,7 +4423,7 @@ function Component(props, apiRef) {
|
|
|
4321
4423
|
ref: parentRef,
|
|
4322
4424
|
...backgroundProps
|
|
4323
4425
|
},
|
|
4324
|
-
/* @__PURE__ */ React25.createElement(Table, { ...innerProps }, /* @__PURE__ */ React25.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ React25.createElement(
|
|
4426
|
+
/* @__PURE__ */ React25.createElement(Table, { ...innerProps, sx: { ...innerProps.sx, minWidth: tableMinWidth } }, /* @__PURE__ */ React25.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ React25.createElement(
|
|
4325
4427
|
"col",
|
|
4326
4428
|
{
|
|
4327
4429
|
style: {
|
|
@@ -4334,7 +4436,8 @@ function Component(props, apiRef) {
|
|
|
4334
4436
|
ref: c.tableColRef,
|
|
4335
4437
|
key: `${c.field.toString()}_${c.width}`,
|
|
4336
4438
|
style: {
|
|
4337
|
-
width: c.width
|
|
4439
|
+
width: c.width,
|
|
4440
|
+
minWidth: c.minWidth ?? "50px"
|
|
4338
4441
|
}
|
|
4339
4442
|
}
|
|
4340
4443
|
))), /* @__PURE__ */ React25.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.length > 0 && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ React25.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ React25.createElement(
|
|
@@ -4553,10 +4656,47 @@ var CalendarSheet2 = styled14(Sheet_default, {
|
|
|
4553
4656
|
overridesResolver: (props, styles) => styles.root
|
|
4554
4657
|
})(({ theme }) => ({
|
|
4555
4658
|
zIndex: theme.zIndex.tooltip,
|
|
4556
|
-
width: "264px",
|
|
4557
4659
|
boxShadow: theme.shadow.md,
|
|
4558
4660
|
borderRadius: theme.radius.md
|
|
4559
4661
|
}));
|
|
4662
|
+
var CalendarSheetContent2 = styled14("div", {
|
|
4663
|
+
name: "DateRangePicker",
|
|
4664
|
+
slot: "sheetContent"
|
|
4665
|
+
})({
|
|
4666
|
+
display: "flex",
|
|
4667
|
+
flexDirection: "row"
|
|
4668
|
+
});
|
|
4669
|
+
var CalendarSection2 = styled14("div", {
|
|
4670
|
+
name: "DateRangePicker",
|
|
4671
|
+
slot: "calendarSection"
|
|
4672
|
+
})({
|
|
4673
|
+
width: "264px"
|
|
4674
|
+
});
|
|
4675
|
+
var PresetPanel2 = styled14("div", {
|
|
4676
|
+
name: "DateRangePicker",
|
|
4677
|
+
slot: "presetPanel"
|
|
4678
|
+
})(({ theme }) => ({
|
|
4679
|
+
display: "flex",
|
|
4680
|
+
flexDirection: "column",
|
|
4681
|
+
borderLeft: `1px solid ${theme.vars.palette.divider}`,
|
|
4682
|
+
padding: theme.spacing(1),
|
|
4683
|
+
minWidth: "120px",
|
|
4684
|
+
overflowY: "auto"
|
|
4685
|
+
}));
|
|
4686
|
+
var PresetItem2 = styled14(Button_default, {
|
|
4687
|
+
name: "DateRangePicker",
|
|
4688
|
+
slot: "presetItem",
|
|
4689
|
+
shouldForwardProp: (prop) => prop !== "active"
|
|
4690
|
+
})(({ active }) => [
|
|
4691
|
+
{
|
|
4692
|
+
width: "100%",
|
|
4693
|
+
justifyContent: "flex-start",
|
|
4694
|
+
whiteSpace: "nowrap"
|
|
4695
|
+
},
|
|
4696
|
+
active && {
|
|
4697
|
+
fontWeight: "bold"
|
|
4698
|
+
}
|
|
4699
|
+
]);
|
|
4560
4700
|
var DateRangePickerRoot = styled14("div", {
|
|
4561
4701
|
name: "DateRangePicker",
|
|
4562
4702
|
slot: "root",
|
|
@@ -4685,6 +4825,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4685
4825
|
inputReadOnly,
|
|
4686
4826
|
hideClearButton,
|
|
4687
4827
|
readOnly,
|
|
4828
|
+
presets,
|
|
4688
4829
|
...innerProps
|
|
4689
4830
|
} = props;
|
|
4690
4831
|
const innerRef = useRef8(null);
|
|
@@ -4784,6 +4925,38 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4784
4925
|
},
|
|
4785
4926
|
[inputReadOnly, buttonRef]
|
|
4786
4927
|
);
|
|
4928
|
+
const handlePresetClick = useCallback13(
|
|
4929
|
+
(presetValue) => {
|
|
4930
|
+
if (props.value !== void 0) {
|
|
4931
|
+
onChange?.({ target: { name: props.name, value: presetValue } });
|
|
4932
|
+
} else {
|
|
4933
|
+
const dates = parseDates(presetValue, format);
|
|
4934
|
+
setDisplayValue(formatValueString2(dates, displayFormat));
|
|
4935
|
+
setValue(presetValue);
|
|
4936
|
+
}
|
|
4937
|
+
setAnchorEl(null);
|
|
4938
|
+
},
|
|
4939
|
+
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
|
|
4940
|
+
);
|
|
4941
|
+
const isPresetDisabled = useCallback13(
|
|
4942
|
+
(presetValue) => {
|
|
4943
|
+
try {
|
|
4944
|
+
const dates = parseDates(presetValue, format);
|
|
4945
|
+
if (dates.some((d) => Number.isNaN(d.getTime()))) return true;
|
|
4946
|
+
const today = new Date((/* @__PURE__ */ new Date()).toDateString());
|
|
4947
|
+
for (const date of dates) {
|
|
4948
|
+
if (minDate && date < new Date(minDate)) return true;
|
|
4949
|
+
if (maxDate && date > new Date(maxDate)) return true;
|
|
4950
|
+
if (disableFuture && date > today) return true;
|
|
4951
|
+
if (disablePast && date < today) return true;
|
|
4952
|
+
}
|
|
4953
|
+
return false;
|
|
4954
|
+
} catch {
|
|
4955
|
+
return true;
|
|
4956
|
+
}
|
|
4957
|
+
},
|
|
4958
|
+
[format, minDate, maxDate, disableFuture, disablePast]
|
|
4959
|
+
);
|
|
4787
4960
|
return /* @__PURE__ */ React26.createElement(DateRangePickerRoot, null, /* @__PURE__ */ React26.createElement(FocusTrap2, { open: true }, /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement(
|
|
4788
4961
|
Input_default,
|
|
4789
4962
|
{
|
|
@@ -4849,7 +5022,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4849
5022
|
"aria-label": "Calendar Tooltip",
|
|
4850
5023
|
"aria-expanded": open
|
|
4851
5024
|
},
|
|
4852
|
-
/* @__PURE__ */ React26.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React26.createElement(
|
|
5025
|
+
/* @__PURE__ */ React26.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React26.createElement(CalendarSheetContent2, null, /* @__PURE__ */ React26.createElement(CalendarSection2, null, /* @__PURE__ */ React26.createElement(
|
|
4853
5026
|
Calendar_default,
|
|
4854
5027
|
{
|
|
4855
5028
|
rangeSelection: true,
|
|
@@ -4881,7 +5054,22 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4881
5054
|
},
|
|
4882
5055
|
"Clear"
|
|
4883
5056
|
)
|
|
4884
|
-
))
|
|
5057
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ React26.createElement(PresetPanel2, null, presets.map((preset) => {
|
|
5058
|
+
const disabled2 = isPresetDisabled(preset.value);
|
|
5059
|
+
return /* @__PURE__ */ React26.createElement(
|
|
5060
|
+
PresetItem2,
|
|
5061
|
+
{
|
|
5062
|
+
key: preset.label,
|
|
5063
|
+
size: "sm",
|
|
5064
|
+
variant: value === preset.value ? "soft" : "plain",
|
|
5065
|
+
color: value === preset.value ? "primary" : "neutral",
|
|
5066
|
+
active: value === preset.value,
|
|
5067
|
+
disabled: disabled2,
|
|
5068
|
+
onClick: () => handlePresetClick(preset.value)
|
|
5069
|
+
},
|
|
5070
|
+
preset.label
|
|
5071
|
+
);
|
|
5072
|
+
}))))
|
|
4885
5073
|
)))));
|
|
4886
5074
|
});
|
|
4887
5075
|
DateRangePicker.displayName = "DateRangePicker";
|