@ceed/ads 1.8.0 → 1.8.2
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/DateRangePicker/DateRangePicker.d.ts +10 -0
- package/dist/components/FilterMenu/FilterMenu.d.ts +1 -0
- package/dist/components/FilterMenu/components/PercentageRange.d.ts +1 -1
- package/dist/components/FilterMenu/types.d.ts +1 -1
- package/dist/index.cjs +123 -29
- package/dist/index.js +123 -29
- package/framer/index.js +44 -44
- package/package.json +1 -1
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import Input from "../Input";
|
|
3
3
|
interface BaseDateRangePickerProps {
|
|
4
|
+
/**
|
|
5
|
+
* props.format 의 형식을 따라야 한다.
|
|
6
|
+
*/
|
|
4
7
|
value?: string;
|
|
5
8
|
defaultValue?: string;
|
|
6
9
|
onChange?: (event: {
|
|
@@ -19,7 +22,14 @@ interface BaseDateRangePickerProps {
|
|
|
19
22
|
maxDate?: string;
|
|
20
23
|
disableFuture?: boolean;
|
|
21
24
|
disablePast?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* value, onChange의 값은 해당 포맷을 따른다.
|
|
27
|
+
*/
|
|
22
28
|
format?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Input 에 표시되는 값의 포맷을 지정한다.
|
|
31
|
+
*/
|
|
32
|
+
displayFormat?: string;
|
|
23
33
|
inputReadOnly?: boolean;
|
|
24
34
|
hideClearButton?: boolean;
|
|
25
35
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { FilterPercentageRangeItem } from "../types";
|
|
3
3
|
interface PercentageRangeProps extends FilterPercentageRangeItem {
|
|
4
|
-
onChange?: (value: [number, number] | null) => void;
|
|
4
|
+
onChange?: (value: [number | null, number | null] | null) => void;
|
|
5
5
|
}
|
|
6
6
|
declare function PercentageRange(props: PercentageRangeProps): React.JSX.Element | null;
|
|
7
7
|
declare namespace PercentageRange {
|
|
@@ -24,7 +24,7 @@ export interface FilterRadioGroupItem extends FilterBaseItem<string | number> {
|
|
|
24
24
|
value: string | number;
|
|
25
25
|
}[];
|
|
26
26
|
}
|
|
27
|
-
export interface FilterDateRangeItem extends FilterBaseItem<[DateTime, DateTime]>, Pick<DateRangePickerProps, "minDate" | "maxDate" | "disableFuture" | "disablePast" | "format" | "inputReadOnly" | "hideClearButton"> {
|
|
27
|
+
export interface FilterDateRangeItem extends FilterBaseItem<[DateTime, DateTime]>, Pick<DateRangePickerProps, "minDate" | "maxDate" | "disableFuture" | "disablePast" | "format" | "displayFormat" | "inputReadOnly" | "hideClearButton"> {
|
|
28
28
|
type: "date-range";
|
|
29
29
|
}
|
|
30
30
|
export interface FilterCurrencyInputItem extends FilterBaseItem<number>, Pick<CurrencyInputProps, "max" | "placeholder" | "useMinorUnit" | "currency"> {
|
package/dist/index.cjs
CHANGED
|
@@ -3575,6 +3575,8 @@ function useDataTableRenderer({
|
|
|
3575
3575
|
isTotalSelected: _isTotalSelected,
|
|
3576
3576
|
isRowSelectable
|
|
3577
3577
|
}) {
|
|
3578
|
+
const onSelectionModelChangeRef = (0, import_react25.useRef)(onSelectionModelChange);
|
|
3579
|
+
onSelectionModelChangeRef.current = onSelectionModelChange;
|
|
3578
3580
|
const [focusedRowId, setFocusedRowId] = (0, import_react25.useState)(null);
|
|
3579
3581
|
const [sortModel, setSortModel] = useControlledState(
|
|
3580
3582
|
controlledSortModel,
|
|
@@ -3764,7 +3766,7 @@ function useDataTableRenderer({
|
|
|
3764
3766
|
}
|
|
3765
3767
|
}, [page, rowCount, pageSize, handlePageChange]);
|
|
3766
3768
|
(0, import_react25.useEffect)(() => {
|
|
3767
|
-
|
|
3769
|
+
onSelectionModelChangeRef.current?.([]);
|
|
3768
3770
|
}, [page]);
|
|
3769
3771
|
return {
|
|
3770
3772
|
rowCount,
|
|
@@ -4157,7 +4159,9 @@ var CalendarButton2 = (0, import_joy34.styled)(IconButton_default, {
|
|
|
4157
4159
|
"&:focus": {
|
|
4158
4160
|
"--Icon-color": "currentColor",
|
|
4159
4161
|
outlineOffset: `${theme.getCssVar("focus-thickness")}`,
|
|
4160
|
-
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar(
|
|
4162
|
+
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar(
|
|
4163
|
+
"palette-focusVisible"
|
|
4164
|
+
)}`
|
|
4161
4165
|
}
|
|
4162
4166
|
}));
|
|
4163
4167
|
var StyledPopper2 = (0, import_joy34.styled)(import_base3.Popper, {
|
|
@@ -4183,6 +4187,32 @@ var DateRangePickerRoot = (0, import_joy34.styled)("div", {
|
|
|
4183
4187
|
})({
|
|
4184
4188
|
width: "100%"
|
|
4185
4189
|
});
|
|
4190
|
+
var validValueFormat2 = (value, format) => {
|
|
4191
|
+
try {
|
|
4192
|
+
const [date1Str, date2Str] = value.split(" - ");
|
|
4193
|
+
if (!date1Str || !date2Str) {
|
|
4194
|
+
return false;
|
|
4195
|
+
}
|
|
4196
|
+
const parsedDate1 = parseDate2(date1Str, format);
|
|
4197
|
+
const parsedDate2 = parseDate2(date2Str, format);
|
|
4198
|
+
if (parsedDate1.toString() === "Invalid Date" || parsedDate2.toString() === "Invalid Date") {
|
|
4199
|
+
return false;
|
|
4200
|
+
}
|
|
4201
|
+
const formattedValue = formatValueString2(
|
|
4202
|
+
[parsedDate1, parsedDate2],
|
|
4203
|
+
format
|
|
4204
|
+
);
|
|
4205
|
+
if (value !== formattedValue) {
|
|
4206
|
+
return false;
|
|
4207
|
+
}
|
|
4208
|
+
const regex = new RegExp(
|
|
4209
|
+
`^${format.replace(/Y/g, "\\d").replace(/M/g, "\\d").replace(/D/g, "\\d")} - ${format.replace(/Y/g, "\\d").replace(/M/g, "\\d").replace(/D/g, "\\d")}$`
|
|
4210
|
+
);
|
|
4211
|
+
return regex.test(value);
|
|
4212
|
+
} catch (e) {
|
|
4213
|
+
return false;
|
|
4214
|
+
}
|
|
4215
|
+
};
|
|
4186
4216
|
var formatValueString2 = ([date1, date2], format) => {
|
|
4187
4217
|
const getStr = (date) => {
|
|
4188
4218
|
let day = `${date.getDate()}`;
|
|
@@ -4279,6 +4309,7 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4279
4309
|
sx,
|
|
4280
4310
|
className,
|
|
4281
4311
|
format = "YYYY/MM/DD",
|
|
4312
|
+
displayFormat = "YYYY/MM/DD",
|
|
4282
4313
|
size,
|
|
4283
4314
|
inputReadOnly,
|
|
4284
4315
|
hideClearButton,
|
|
@@ -4295,12 +4326,27 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4295
4326
|
[props.name, onChange]
|
|
4296
4327
|
)
|
|
4297
4328
|
);
|
|
4329
|
+
const [displayValue, setDisplayValue] = (0, import_react26.useState)(
|
|
4330
|
+
() => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
|
|
4331
|
+
);
|
|
4298
4332
|
const [anchorEl, setAnchorEl] = (0, import_react26.useState)(null);
|
|
4299
4333
|
const open = Boolean(anchorEl);
|
|
4300
4334
|
const calendarValue = (0, import_react26.useMemo)(
|
|
4301
4335
|
() => value ? parseDates(value, format) : void 0,
|
|
4302
4336
|
[value, format]
|
|
4303
4337
|
);
|
|
4338
|
+
(0, import_react26.useEffect)(() => {
|
|
4339
|
+
if (value) {
|
|
4340
|
+
try {
|
|
4341
|
+
const dates = parseDates(value, format);
|
|
4342
|
+
const newDisplayValue = formatValueString2(dates, displayFormat);
|
|
4343
|
+
setDisplayValue(newDisplayValue);
|
|
4344
|
+
} catch (error2) {
|
|
4345
|
+
}
|
|
4346
|
+
} else {
|
|
4347
|
+
setDisplayValue("");
|
|
4348
|
+
}
|
|
4349
|
+
}, [displayFormat, value, format]);
|
|
4304
4350
|
(0, import_react26.useEffect)(() => {
|
|
4305
4351
|
if (!anchorEl) {
|
|
4306
4352
|
innerRef.current?.blur();
|
|
@@ -4311,9 +4357,41 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4311
4357
|
]);
|
|
4312
4358
|
const handleChange = (0, import_react26.useCallback)(
|
|
4313
4359
|
(event) => {
|
|
4314
|
-
|
|
4360
|
+
const value2 = event.target.value;
|
|
4361
|
+
setDisplayValue(
|
|
4362
|
+
value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2
|
|
4363
|
+
);
|
|
4364
|
+
setValue(value2);
|
|
4315
4365
|
},
|
|
4316
|
-
[setValue]
|
|
4366
|
+
[displayFormat, format, setValue]
|
|
4367
|
+
);
|
|
4368
|
+
const handleDisplayInputChange = (0, import_react26.useCallback)(
|
|
4369
|
+
(event) => {
|
|
4370
|
+
if (event.target.value === "") {
|
|
4371
|
+
handleChange({
|
|
4372
|
+
target: {
|
|
4373
|
+
name: props.name,
|
|
4374
|
+
value: ""
|
|
4375
|
+
}
|
|
4376
|
+
});
|
|
4377
|
+
return;
|
|
4378
|
+
}
|
|
4379
|
+
const isValidDisplayValue = validValueFormat2(
|
|
4380
|
+
event.target.value,
|
|
4381
|
+
displayFormat
|
|
4382
|
+
);
|
|
4383
|
+
if (isValidDisplayValue) {
|
|
4384
|
+
const dates = parseDates(event.target.value, displayFormat);
|
|
4385
|
+
const formattedValue = formatValueString2(dates, format);
|
|
4386
|
+
handleChange({
|
|
4387
|
+
target: {
|
|
4388
|
+
name: props.name,
|
|
4389
|
+
value: formattedValue
|
|
4390
|
+
}
|
|
4391
|
+
});
|
|
4392
|
+
}
|
|
4393
|
+
},
|
|
4394
|
+
[displayFormat, format, handleChange, props.name]
|
|
4317
4395
|
);
|
|
4318
4396
|
const handleCalendarToggle = (0, import_react26.useCallback)(
|
|
4319
4397
|
(event) => {
|
|
@@ -4325,10 +4403,26 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4325
4403
|
const handleCalendarChange = (0, import_react26.useCallback)(
|
|
4326
4404
|
([date1, date2]) => {
|
|
4327
4405
|
if (!date1 || !date2) return;
|
|
4328
|
-
|
|
4406
|
+
const formattedValue = formatValueString2([date1, date2], format);
|
|
4407
|
+
if (props.value !== void 0) {
|
|
4408
|
+
onChange?.({ target: { name: props.name, value: formattedValue } });
|
|
4409
|
+
} else {
|
|
4410
|
+
setDisplayValue(
|
|
4411
|
+
formatValueString2([date1, date2], displayFormat)
|
|
4412
|
+
);
|
|
4413
|
+
setValue(formattedValue);
|
|
4414
|
+
}
|
|
4329
4415
|
setAnchorEl(null);
|
|
4330
4416
|
},
|
|
4331
|
-
[
|
|
4417
|
+
[
|
|
4418
|
+
props.value,
|
|
4419
|
+
props.name,
|
|
4420
|
+
onChange,
|
|
4421
|
+
setValue,
|
|
4422
|
+
setAnchorEl,
|
|
4423
|
+
format,
|
|
4424
|
+
displayFormat
|
|
4425
|
+
]
|
|
4332
4426
|
);
|
|
4333
4427
|
const handleInputMouseDown = (0, import_react26.useCallback)(
|
|
4334
4428
|
(event) => {
|
|
@@ -4346,17 +4440,21 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4346
4440
|
color: error ? "danger" : innerProps.color,
|
|
4347
4441
|
ref,
|
|
4348
4442
|
size,
|
|
4349
|
-
value,
|
|
4350
|
-
onChange:
|
|
4443
|
+
value: displayValue,
|
|
4444
|
+
onChange: handleDisplayInputChange,
|
|
4351
4445
|
disabled,
|
|
4352
4446
|
required,
|
|
4353
|
-
placeholder: `${
|
|
4447
|
+
placeholder: `${displayFormat} - ${displayFormat}`,
|
|
4354
4448
|
slotProps: {
|
|
4355
4449
|
input: {
|
|
4356
4450
|
component: TextMaskAdapter5,
|
|
4357
4451
|
ref: innerRef,
|
|
4358
|
-
format,
|
|
4359
|
-
sx: {
|
|
4452
|
+
format: displayFormat,
|
|
4453
|
+
sx: {
|
|
4454
|
+
"&:hover": {
|
|
4455
|
+
cursor: inputReadOnly || readOnly ? "default" : "text"
|
|
4456
|
+
}
|
|
4457
|
+
},
|
|
4360
4458
|
onMouseDown: handleInputMouseDown
|
|
4361
4459
|
}
|
|
4362
4460
|
},
|
|
@@ -4426,6 +4524,7 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4426
4524
|
color: "neutral",
|
|
4427
4525
|
onClick: () => {
|
|
4428
4526
|
setValue("");
|
|
4527
|
+
setDisplayValue("");
|
|
4429
4528
|
setAnchorEl(null);
|
|
4430
4529
|
}
|
|
4431
4530
|
},
|
|
@@ -4582,7 +4681,7 @@ function CheckboxGroup(props) {
|
|
|
4582
4681
|
{
|
|
4583
4682
|
key: `${id}-${option.value}`,
|
|
4584
4683
|
label: option.label,
|
|
4585
|
-
checked: internalValue
|
|
4684
|
+
checked: internalValue?.includes(option.value),
|
|
4586
4685
|
onChange: handleCheckboxChange(option.value)
|
|
4587
4686
|
}
|
|
4588
4687
|
)));
|
|
@@ -4666,6 +4765,7 @@ function DateRange(props) {
|
|
|
4666
4765
|
disableFuture,
|
|
4667
4766
|
disablePast,
|
|
4668
4767
|
format = "YYYY/MM/DD",
|
|
4768
|
+
displayFormat,
|
|
4669
4769
|
inputReadOnly,
|
|
4670
4770
|
hideClearButton
|
|
4671
4771
|
} = props;
|
|
@@ -4820,6 +4920,7 @@ function DateRange(props) {
|
|
|
4820
4920
|
disableFuture,
|
|
4821
4921
|
disablePast,
|
|
4822
4922
|
format,
|
|
4923
|
+
displayFormat,
|
|
4823
4924
|
inputReadOnly,
|
|
4824
4925
|
hideClearButton
|
|
4825
4926
|
}
|
|
@@ -5151,21 +5252,15 @@ function PercentageRange(props) {
|
|
|
5151
5252
|
min,
|
|
5152
5253
|
max
|
|
5153
5254
|
} = props;
|
|
5154
|
-
const [internalValue, setInternalValue] = useControlledState(
|
|
5155
|
-
value,
|
|
5156
|
-
null,
|
|
5157
|
-
onChange
|
|
5158
|
-
);
|
|
5255
|
+
const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
|
|
5159
5256
|
const minValue = internalValue?.[0];
|
|
5160
5257
|
const maxValue = internalValue?.[1];
|
|
5161
5258
|
const handleMinChange = (0, import_react37.useCallback)(
|
|
5162
5259
|
(event) => {
|
|
5163
5260
|
const newMinValue = event.target.value;
|
|
5164
5261
|
const currentMaxValue = maxValue;
|
|
5165
|
-
if (newMinValue !== void 0
|
|
5166
|
-
setInternalValue([newMinValue, currentMaxValue]);
|
|
5167
|
-
} else if (newMinValue !== void 0) {
|
|
5168
|
-
setInternalValue([newMinValue, newMinValue]);
|
|
5262
|
+
if (newMinValue !== void 0) {
|
|
5263
|
+
setInternalValue([newMinValue, currentMaxValue || null]);
|
|
5169
5264
|
} else {
|
|
5170
5265
|
setInternalValue(null);
|
|
5171
5266
|
}
|
|
@@ -5176,10 +5271,8 @@ function PercentageRange(props) {
|
|
|
5176
5271
|
(event) => {
|
|
5177
5272
|
const newMaxValue = event.target.value;
|
|
5178
5273
|
const currentMinValue = minValue;
|
|
5179
|
-
if (
|
|
5180
|
-
setInternalValue([currentMinValue, newMaxValue]);
|
|
5181
|
-
} else if (newMaxValue !== void 0) {
|
|
5182
|
-
setInternalValue([newMaxValue, newMaxValue]);
|
|
5274
|
+
if (newMaxValue !== void 0) {
|
|
5275
|
+
setInternalValue([currentMinValue || null, newMaxValue]);
|
|
5183
5276
|
} else {
|
|
5184
5277
|
setInternalValue(null);
|
|
5185
5278
|
}
|
|
@@ -5202,7 +5295,7 @@ function PercentageRange(props) {
|
|
|
5202
5295
|
PercentageInput,
|
|
5203
5296
|
{
|
|
5204
5297
|
label: "Minimum",
|
|
5205
|
-
value: minValue,
|
|
5298
|
+
value: minValue ?? void 0,
|
|
5206
5299
|
onChange: handleMinChange,
|
|
5207
5300
|
useMinorUnit,
|
|
5208
5301
|
maxDecimalScale,
|
|
@@ -5216,7 +5309,7 @@ function PercentageRange(props) {
|
|
|
5216
5309
|
PercentageInput,
|
|
5217
5310
|
{
|
|
5218
5311
|
label: "Maximum",
|
|
5219
|
-
value: maxValue,
|
|
5312
|
+
value: maxValue ?? void 0,
|
|
5220
5313
|
onChange: handleMaxChange,
|
|
5221
5314
|
useMinorUnit,
|
|
5222
5315
|
maxDecimalScale,
|
|
@@ -5295,6 +5388,7 @@ function FilterMenu(props) {
|
|
|
5295
5388
|
filters,
|
|
5296
5389
|
values,
|
|
5297
5390
|
defaultValues,
|
|
5391
|
+
resetValues = {},
|
|
5298
5392
|
onChange,
|
|
5299
5393
|
onClose,
|
|
5300
5394
|
useClear,
|
|
@@ -5320,11 +5414,11 @@ function FilterMenu(props) {
|
|
|
5320
5414
|
onClose?.();
|
|
5321
5415
|
}, [onChange, onClose, internalValues]);
|
|
5322
5416
|
const handleClear = (0, import_react39.useCallback)(() => {
|
|
5323
|
-
const clearedValues =
|
|
5417
|
+
const clearedValues = resetValues || {};
|
|
5324
5418
|
setInternalValues(clearedValues);
|
|
5325
5419
|
onChange?.(clearedValues);
|
|
5326
5420
|
onClose?.();
|
|
5327
|
-
}, [
|
|
5421
|
+
}, [resetValues, setInternalValues, onChange, onClose]);
|
|
5328
5422
|
return /* @__PURE__ */ import_react39.default.createElement(
|
|
5329
5423
|
ModalDialog,
|
|
5330
5424
|
{
|
package/dist/index.js
CHANGED
|
@@ -3531,6 +3531,8 @@ function useDataTableRenderer({
|
|
|
3531
3531
|
isTotalSelected: _isTotalSelected,
|
|
3532
3532
|
isRowSelectable
|
|
3533
3533
|
}) {
|
|
3534
|
+
const onSelectionModelChangeRef = useRef4(onSelectionModelChange);
|
|
3535
|
+
onSelectionModelChangeRef.current = onSelectionModelChange;
|
|
3534
3536
|
const [focusedRowId, setFocusedRowId] = useState6(null);
|
|
3535
3537
|
const [sortModel, setSortModel] = useControlledState(
|
|
3536
3538
|
controlledSortModel,
|
|
@@ -3720,7 +3722,7 @@ function useDataTableRenderer({
|
|
|
3720
3722
|
}
|
|
3721
3723
|
}, [page, rowCount, pageSize, handlePageChange]);
|
|
3722
3724
|
useEffect5(() => {
|
|
3723
|
-
|
|
3725
|
+
onSelectionModelChangeRef.current?.([]);
|
|
3724
3726
|
}, [page]);
|
|
3725
3727
|
return {
|
|
3726
3728
|
rowCount,
|
|
@@ -4121,7 +4123,9 @@ var CalendarButton2 = styled13(IconButton_default, {
|
|
|
4121
4123
|
"&:focus": {
|
|
4122
4124
|
"--Icon-color": "currentColor",
|
|
4123
4125
|
outlineOffset: `${theme.getCssVar("focus-thickness")}`,
|
|
4124
|
-
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar(
|
|
4126
|
+
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar(
|
|
4127
|
+
"palette-focusVisible"
|
|
4128
|
+
)}`
|
|
4125
4129
|
}
|
|
4126
4130
|
}));
|
|
4127
4131
|
var StyledPopper2 = styled13(Popper3, {
|
|
@@ -4147,6 +4151,32 @@ var DateRangePickerRoot = styled13("div", {
|
|
|
4147
4151
|
})({
|
|
4148
4152
|
width: "100%"
|
|
4149
4153
|
});
|
|
4154
|
+
var validValueFormat2 = (value, format) => {
|
|
4155
|
+
try {
|
|
4156
|
+
const [date1Str, date2Str] = value.split(" - ");
|
|
4157
|
+
if (!date1Str || !date2Str) {
|
|
4158
|
+
return false;
|
|
4159
|
+
}
|
|
4160
|
+
const parsedDate1 = parseDate2(date1Str, format);
|
|
4161
|
+
const parsedDate2 = parseDate2(date2Str, format);
|
|
4162
|
+
if (parsedDate1.toString() === "Invalid Date" || parsedDate2.toString() === "Invalid Date") {
|
|
4163
|
+
return false;
|
|
4164
|
+
}
|
|
4165
|
+
const formattedValue = formatValueString2(
|
|
4166
|
+
[parsedDate1, parsedDate2],
|
|
4167
|
+
format
|
|
4168
|
+
);
|
|
4169
|
+
if (value !== formattedValue) {
|
|
4170
|
+
return false;
|
|
4171
|
+
}
|
|
4172
|
+
const regex = new RegExp(
|
|
4173
|
+
`^${format.replace(/Y/g, "\\d").replace(/M/g, "\\d").replace(/D/g, "\\d")} - ${format.replace(/Y/g, "\\d").replace(/M/g, "\\d").replace(/D/g, "\\d")}$`
|
|
4174
|
+
);
|
|
4175
|
+
return regex.test(value);
|
|
4176
|
+
} catch (e) {
|
|
4177
|
+
return false;
|
|
4178
|
+
}
|
|
4179
|
+
};
|
|
4150
4180
|
var formatValueString2 = ([date1, date2], format) => {
|
|
4151
4181
|
const getStr = (date) => {
|
|
4152
4182
|
let day = `${date.getDate()}`;
|
|
@@ -4243,6 +4273,7 @@ var DateRangePicker = forwardRef8(
|
|
|
4243
4273
|
sx,
|
|
4244
4274
|
className,
|
|
4245
4275
|
format = "YYYY/MM/DD",
|
|
4276
|
+
displayFormat = "YYYY/MM/DD",
|
|
4246
4277
|
size,
|
|
4247
4278
|
inputReadOnly,
|
|
4248
4279
|
hideClearButton,
|
|
@@ -4259,12 +4290,27 @@ var DateRangePicker = forwardRef8(
|
|
|
4259
4290
|
[props.name, onChange]
|
|
4260
4291
|
)
|
|
4261
4292
|
);
|
|
4293
|
+
const [displayValue, setDisplayValue] = useState7(
|
|
4294
|
+
() => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
|
|
4295
|
+
);
|
|
4262
4296
|
const [anchorEl, setAnchorEl] = useState7(null);
|
|
4263
4297
|
const open = Boolean(anchorEl);
|
|
4264
4298
|
const calendarValue = useMemo9(
|
|
4265
4299
|
() => value ? parseDates(value, format) : void 0,
|
|
4266
4300
|
[value, format]
|
|
4267
4301
|
);
|
|
4302
|
+
useEffect6(() => {
|
|
4303
|
+
if (value) {
|
|
4304
|
+
try {
|
|
4305
|
+
const dates = parseDates(value, format);
|
|
4306
|
+
const newDisplayValue = formatValueString2(dates, displayFormat);
|
|
4307
|
+
setDisplayValue(newDisplayValue);
|
|
4308
|
+
} catch (error2) {
|
|
4309
|
+
}
|
|
4310
|
+
} else {
|
|
4311
|
+
setDisplayValue("");
|
|
4312
|
+
}
|
|
4313
|
+
}, [displayFormat, value, format]);
|
|
4268
4314
|
useEffect6(() => {
|
|
4269
4315
|
if (!anchorEl) {
|
|
4270
4316
|
innerRef.current?.blur();
|
|
@@ -4275,9 +4321,41 @@ var DateRangePicker = forwardRef8(
|
|
|
4275
4321
|
]);
|
|
4276
4322
|
const handleChange = useCallback10(
|
|
4277
4323
|
(event) => {
|
|
4278
|
-
|
|
4324
|
+
const value2 = event.target.value;
|
|
4325
|
+
setDisplayValue(
|
|
4326
|
+
value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2
|
|
4327
|
+
);
|
|
4328
|
+
setValue(value2);
|
|
4279
4329
|
},
|
|
4280
|
-
[setValue]
|
|
4330
|
+
[displayFormat, format, setValue]
|
|
4331
|
+
);
|
|
4332
|
+
const handleDisplayInputChange = useCallback10(
|
|
4333
|
+
(event) => {
|
|
4334
|
+
if (event.target.value === "") {
|
|
4335
|
+
handleChange({
|
|
4336
|
+
target: {
|
|
4337
|
+
name: props.name,
|
|
4338
|
+
value: ""
|
|
4339
|
+
}
|
|
4340
|
+
});
|
|
4341
|
+
return;
|
|
4342
|
+
}
|
|
4343
|
+
const isValidDisplayValue = validValueFormat2(
|
|
4344
|
+
event.target.value,
|
|
4345
|
+
displayFormat
|
|
4346
|
+
);
|
|
4347
|
+
if (isValidDisplayValue) {
|
|
4348
|
+
const dates = parseDates(event.target.value, displayFormat);
|
|
4349
|
+
const formattedValue = formatValueString2(dates, format);
|
|
4350
|
+
handleChange({
|
|
4351
|
+
target: {
|
|
4352
|
+
name: props.name,
|
|
4353
|
+
value: formattedValue
|
|
4354
|
+
}
|
|
4355
|
+
});
|
|
4356
|
+
}
|
|
4357
|
+
},
|
|
4358
|
+
[displayFormat, format, handleChange, props.name]
|
|
4281
4359
|
);
|
|
4282
4360
|
const handleCalendarToggle = useCallback10(
|
|
4283
4361
|
(event) => {
|
|
@@ -4289,10 +4367,26 @@ var DateRangePicker = forwardRef8(
|
|
|
4289
4367
|
const handleCalendarChange = useCallback10(
|
|
4290
4368
|
([date1, date2]) => {
|
|
4291
4369
|
if (!date1 || !date2) return;
|
|
4292
|
-
|
|
4370
|
+
const formattedValue = formatValueString2([date1, date2], format);
|
|
4371
|
+
if (props.value !== void 0) {
|
|
4372
|
+
onChange?.({ target: { name: props.name, value: formattedValue } });
|
|
4373
|
+
} else {
|
|
4374
|
+
setDisplayValue(
|
|
4375
|
+
formatValueString2([date1, date2], displayFormat)
|
|
4376
|
+
);
|
|
4377
|
+
setValue(formattedValue);
|
|
4378
|
+
}
|
|
4293
4379
|
setAnchorEl(null);
|
|
4294
4380
|
},
|
|
4295
|
-
[
|
|
4381
|
+
[
|
|
4382
|
+
props.value,
|
|
4383
|
+
props.name,
|
|
4384
|
+
onChange,
|
|
4385
|
+
setValue,
|
|
4386
|
+
setAnchorEl,
|
|
4387
|
+
format,
|
|
4388
|
+
displayFormat
|
|
4389
|
+
]
|
|
4296
4390
|
);
|
|
4297
4391
|
const handleInputMouseDown = useCallback10(
|
|
4298
4392
|
(event) => {
|
|
@@ -4310,17 +4404,21 @@ var DateRangePicker = forwardRef8(
|
|
|
4310
4404
|
color: error ? "danger" : innerProps.color,
|
|
4311
4405
|
ref,
|
|
4312
4406
|
size,
|
|
4313
|
-
value,
|
|
4314
|
-
onChange:
|
|
4407
|
+
value: displayValue,
|
|
4408
|
+
onChange: handleDisplayInputChange,
|
|
4315
4409
|
disabled,
|
|
4316
4410
|
required,
|
|
4317
|
-
placeholder: `${
|
|
4411
|
+
placeholder: `${displayFormat} - ${displayFormat}`,
|
|
4318
4412
|
slotProps: {
|
|
4319
4413
|
input: {
|
|
4320
4414
|
component: TextMaskAdapter5,
|
|
4321
4415
|
ref: innerRef,
|
|
4322
|
-
format,
|
|
4323
|
-
sx: {
|
|
4416
|
+
format: displayFormat,
|
|
4417
|
+
sx: {
|
|
4418
|
+
"&:hover": {
|
|
4419
|
+
cursor: inputReadOnly || readOnly ? "default" : "text"
|
|
4420
|
+
}
|
|
4421
|
+
},
|
|
4324
4422
|
onMouseDown: handleInputMouseDown
|
|
4325
4423
|
}
|
|
4326
4424
|
},
|
|
@@ -4390,6 +4488,7 @@ var DateRangePicker = forwardRef8(
|
|
|
4390
4488
|
color: "neutral",
|
|
4391
4489
|
onClick: () => {
|
|
4392
4490
|
setValue("");
|
|
4491
|
+
setDisplayValue("");
|
|
4393
4492
|
setAnchorEl(null);
|
|
4394
4493
|
}
|
|
4395
4494
|
},
|
|
@@ -4552,7 +4651,7 @@ function CheckboxGroup(props) {
|
|
|
4552
4651
|
{
|
|
4553
4652
|
key: `${id}-${option.value}`,
|
|
4554
4653
|
label: option.label,
|
|
4555
|
-
checked: internalValue
|
|
4654
|
+
checked: internalValue?.includes(option.value),
|
|
4556
4655
|
onChange: handleCheckboxChange(option.value)
|
|
4557
4656
|
}
|
|
4558
4657
|
)));
|
|
@@ -4636,6 +4735,7 @@ function DateRange(props) {
|
|
|
4636
4735
|
disableFuture,
|
|
4637
4736
|
disablePast,
|
|
4638
4737
|
format = "YYYY/MM/DD",
|
|
4738
|
+
displayFormat,
|
|
4639
4739
|
inputReadOnly,
|
|
4640
4740
|
hideClearButton
|
|
4641
4741
|
} = props;
|
|
@@ -4790,6 +4890,7 @@ function DateRange(props) {
|
|
|
4790
4890
|
disableFuture,
|
|
4791
4891
|
disablePast,
|
|
4792
4892
|
format,
|
|
4893
|
+
displayFormat,
|
|
4793
4894
|
inputReadOnly,
|
|
4794
4895
|
hideClearButton
|
|
4795
4896
|
}
|
|
@@ -5121,21 +5222,15 @@ function PercentageRange(props) {
|
|
|
5121
5222
|
min,
|
|
5122
5223
|
max
|
|
5123
5224
|
} = props;
|
|
5124
|
-
const [internalValue, setInternalValue] = useControlledState(
|
|
5125
|
-
value,
|
|
5126
|
-
null,
|
|
5127
|
-
onChange
|
|
5128
|
-
);
|
|
5225
|
+
const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
|
|
5129
5226
|
const minValue = internalValue?.[0];
|
|
5130
5227
|
const maxValue = internalValue?.[1];
|
|
5131
5228
|
const handleMinChange = useCallback17(
|
|
5132
5229
|
(event) => {
|
|
5133
5230
|
const newMinValue = event.target.value;
|
|
5134
5231
|
const currentMaxValue = maxValue;
|
|
5135
|
-
if (newMinValue !== void 0
|
|
5136
|
-
setInternalValue([newMinValue, currentMaxValue]);
|
|
5137
|
-
} else if (newMinValue !== void 0) {
|
|
5138
|
-
setInternalValue([newMinValue, newMinValue]);
|
|
5232
|
+
if (newMinValue !== void 0) {
|
|
5233
|
+
setInternalValue([newMinValue, currentMaxValue || null]);
|
|
5139
5234
|
} else {
|
|
5140
5235
|
setInternalValue(null);
|
|
5141
5236
|
}
|
|
@@ -5146,10 +5241,8 @@ function PercentageRange(props) {
|
|
|
5146
5241
|
(event) => {
|
|
5147
5242
|
const newMaxValue = event.target.value;
|
|
5148
5243
|
const currentMinValue = minValue;
|
|
5149
|
-
if (
|
|
5150
|
-
setInternalValue([currentMinValue, newMaxValue]);
|
|
5151
|
-
} else if (newMaxValue !== void 0) {
|
|
5152
|
-
setInternalValue([newMaxValue, newMaxValue]);
|
|
5244
|
+
if (newMaxValue !== void 0) {
|
|
5245
|
+
setInternalValue([currentMinValue || null, newMaxValue]);
|
|
5153
5246
|
} else {
|
|
5154
5247
|
setInternalValue(null);
|
|
5155
5248
|
}
|
|
@@ -5172,7 +5265,7 @@ function PercentageRange(props) {
|
|
|
5172
5265
|
PercentageInput,
|
|
5173
5266
|
{
|
|
5174
5267
|
label: "Minimum",
|
|
5175
|
-
value: minValue,
|
|
5268
|
+
value: minValue ?? void 0,
|
|
5176
5269
|
onChange: handleMinChange,
|
|
5177
5270
|
useMinorUnit,
|
|
5178
5271
|
maxDecimalScale,
|
|
@@ -5186,7 +5279,7 @@ function PercentageRange(props) {
|
|
|
5186
5279
|
PercentageInput,
|
|
5187
5280
|
{
|
|
5188
5281
|
label: "Maximum",
|
|
5189
|
-
value: maxValue,
|
|
5282
|
+
value: maxValue ?? void 0,
|
|
5190
5283
|
onChange: handleMaxChange,
|
|
5191
5284
|
useMinorUnit,
|
|
5192
5285
|
maxDecimalScale,
|
|
@@ -5265,6 +5358,7 @@ function FilterMenu(props) {
|
|
|
5265
5358
|
filters,
|
|
5266
5359
|
values,
|
|
5267
5360
|
defaultValues,
|
|
5361
|
+
resetValues = {},
|
|
5268
5362
|
onChange,
|
|
5269
5363
|
onClose,
|
|
5270
5364
|
useClear,
|
|
@@ -5290,11 +5384,11 @@ function FilterMenu(props) {
|
|
|
5290
5384
|
onClose?.();
|
|
5291
5385
|
}, [onChange, onClose, internalValues]);
|
|
5292
5386
|
const handleClear = useCallback19(() => {
|
|
5293
|
-
const clearedValues =
|
|
5387
|
+
const clearedValues = resetValues || {};
|
|
5294
5388
|
setInternalValues(clearedValues);
|
|
5295
5389
|
onChange?.(clearedValues);
|
|
5296
5390
|
onClose?.();
|
|
5297
|
-
}, [
|
|
5391
|
+
}, [resetValues, setInternalValues, onChange, onClose]);
|
|
5298
5392
|
return /* @__PURE__ */ React37.createElement(
|
|
5299
5393
|
ModalDialog,
|
|
5300
5394
|
{
|