@ceed/ads 1.8.0-next.10 → 1.8.0-next.3
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 +0 -10
- package/dist/components/FilterMenu/FilterMenu.d.ts +0 -10
- package/dist/components/FilterMenu/components/PercentageRange.d.ts +1 -1
- package/dist/components/FilterMenu/types.d.ts +2 -2
- package/dist/components/index.d.ts +0 -1
- package/dist/index.cjs +59 -210
- package/dist/index.d.ts +0 -1
- package/dist/index.js +70 -221
- package/framer/index.js +42 -42
- package/package.json +1 -1
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import Input from "../Input";
|
|
3
3
|
interface BaseDateRangePickerProps {
|
|
4
|
-
/**
|
|
5
|
-
* props.format 의 형식을 따라야 한다.
|
|
6
|
-
*/
|
|
7
4
|
value?: string;
|
|
8
5
|
defaultValue?: string;
|
|
9
6
|
onChange?: (event: {
|
|
@@ -22,14 +19,7 @@ interface BaseDateRangePickerProps {
|
|
|
22
19
|
maxDate?: string;
|
|
23
20
|
disableFuture?: boolean;
|
|
24
21
|
disablePast?: boolean;
|
|
25
|
-
/**
|
|
26
|
-
* value, onChange의 값은 해당 포맷을 따른다.
|
|
27
|
-
*/
|
|
28
22
|
format?: string;
|
|
29
|
-
/**
|
|
30
|
-
* Input 에 표시되는 값의 포맷을 지정한다.
|
|
31
|
-
*/
|
|
32
|
-
displayFormat?: string;
|
|
33
23
|
inputReadOnly?: boolean;
|
|
34
24
|
hideClearButton?: boolean;
|
|
35
25
|
}
|
|
@@ -4,18 +4,8 @@ interface FilterMenuProps {
|
|
|
4
4
|
filters?: FilterItem[];
|
|
5
5
|
values?: Record<string, any>;
|
|
6
6
|
defaultValues?: Record<string, any>;
|
|
7
|
-
resetValues?: Record<string, any>;
|
|
8
7
|
onChange?: (values: Record<string, any>) => void;
|
|
9
8
|
onClose?: () => void;
|
|
10
|
-
/**
|
|
11
|
-
* 필터에 있는 모든 옵션을 비우는 버튼을 제공하는 옵션.
|
|
12
|
-
* 일반적으로 아이콘 필터 버튼을 사용해서 필터가 모두 제공될 때 사용한다.
|
|
13
|
-
*/
|
|
14
|
-
useReset?: boolean;
|
|
15
|
-
/**
|
|
16
|
-
* 하나의 필터 항목만 값을 비우는 버튼을 제공하는 옵션. filters가 1개만 있을때 Clear 버튼을 표시하고 2개 이상이면 의미 없다.
|
|
17
|
-
*/
|
|
18
|
-
useClear?: boolean;
|
|
19
9
|
}
|
|
20
10
|
declare function FilterMenu(props: FilterMenuProps): React.JSX.Element;
|
|
21
11
|
declare namespace FilterMenu {
|
|
@@ -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
|
|
4
|
+
onChange?: (value: [number, number] | 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" | "
|
|
27
|
+
export interface FilterDateRangeItem extends FilterBaseItem<[DateTime, DateTime]>, Pick<DateRangePickerProps, "minDate" | "maxDate" | "disableFuture" | "disablePast" | "format" | "inputReadOnly" | "hideClearButton"> {
|
|
28
28
|
type: "date-range";
|
|
29
29
|
}
|
|
30
30
|
export interface FilterCurrencyInputItem extends FilterBaseItem<number>, Pick<CurrencyInputProps, "max" | "placeholder" | "useMinorUnit" | "currency"> {
|
|
@@ -39,7 +39,7 @@ export interface FilterPercentageInputItem extends FilterBaseItem<number>, Pick<
|
|
|
39
39
|
export interface FilterPercentageRangeItem extends FilterBaseItem<[number, number]>, Pick<PercentageInputProps, "useMinorUnit" | "maxDecimalScale" | "min" | "max"> {
|
|
40
40
|
type: "percentage-range";
|
|
41
41
|
}
|
|
42
|
-
export interface FilterAutocompleteItem extends FilterBaseItem<string | number>, Pick<AutocompleteProps<any, boolean>, "options" | "multiple"
|
|
42
|
+
export interface FilterAutocompleteItem extends FilterBaseItem<string | number>, Pick<AutocompleteProps<any, boolean>, "options" | "multiple"> {
|
|
43
43
|
type: "autocomplete";
|
|
44
44
|
}
|
|
45
45
|
export type FilterItem = FilterCheckboxGroupItem | FilterRadioGroupItem | FilterDateRangeItem | FilterCurrencyInputItem | FilterCurrencyRangeItem | FilterPercentageInputItem | FilterPercentageRangeItem | FilterAutocompleteItem;
|
|
@@ -23,7 +23,6 @@ export { Divider } from "./Divider";
|
|
|
23
23
|
export { InsetDrawer } from "./InsetDrawer";
|
|
24
24
|
export { Dropdown } from "./Dropdown";
|
|
25
25
|
export { FilterMenu } from "./FilterMenu";
|
|
26
|
-
export type * from "./FilterMenu";
|
|
27
26
|
export { Uploader } from "./Uploader";
|
|
28
27
|
export { FormControl } from "./FormControl";
|
|
29
28
|
export { FormHelperText } from "./FormHelperText";
|
package/dist/index.cjs
CHANGED
|
@@ -4157,9 +4157,7 @@ var CalendarButton2 = (0, import_joy34.styled)(IconButton_default, {
|
|
|
4157
4157
|
"&:focus": {
|
|
4158
4158
|
"--Icon-color": "currentColor",
|
|
4159
4159
|
outlineOffset: `${theme.getCssVar("focus-thickness")}`,
|
|
4160
|
-
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar(
|
|
4161
|
-
"palette-focusVisible"
|
|
4162
|
-
)}`
|
|
4160
|
+
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
|
|
4163
4161
|
}
|
|
4164
4162
|
}));
|
|
4165
4163
|
var StyledPopper2 = (0, import_joy34.styled)(import_base3.Popper, {
|
|
@@ -4185,32 +4183,6 @@ var DateRangePickerRoot = (0, import_joy34.styled)("div", {
|
|
|
4185
4183
|
})({
|
|
4186
4184
|
width: "100%"
|
|
4187
4185
|
});
|
|
4188
|
-
var validValueFormat2 = (value, format) => {
|
|
4189
|
-
try {
|
|
4190
|
-
const [date1Str, date2Str] = value.split(" - ");
|
|
4191
|
-
if (!date1Str || !date2Str) {
|
|
4192
|
-
return false;
|
|
4193
|
-
}
|
|
4194
|
-
const parsedDate1 = parseDate2(date1Str, format);
|
|
4195
|
-
const parsedDate2 = parseDate2(date2Str, format);
|
|
4196
|
-
if (parsedDate1.toString() === "Invalid Date" || parsedDate2.toString() === "Invalid Date") {
|
|
4197
|
-
return false;
|
|
4198
|
-
}
|
|
4199
|
-
const formattedValue = formatValueString2(
|
|
4200
|
-
[parsedDate1, parsedDate2],
|
|
4201
|
-
format
|
|
4202
|
-
);
|
|
4203
|
-
if (value !== formattedValue) {
|
|
4204
|
-
return false;
|
|
4205
|
-
}
|
|
4206
|
-
const regex = new RegExp(
|
|
4207
|
-
`^${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")}$`
|
|
4208
|
-
);
|
|
4209
|
-
return regex.test(value);
|
|
4210
|
-
} catch (e) {
|
|
4211
|
-
return false;
|
|
4212
|
-
}
|
|
4213
|
-
};
|
|
4214
4186
|
var formatValueString2 = ([date1, date2], format) => {
|
|
4215
4187
|
const getStr = (date) => {
|
|
4216
4188
|
let day = `${date.getDate()}`;
|
|
@@ -4307,7 +4279,6 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4307
4279
|
sx,
|
|
4308
4280
|
className,
|
|
4309
4281
|
format = "YYYY/MM/DD",
|
|
4310
|
-
displayFormat = "YYYY/MM/DD",
|
|
4311
4282
|
size,
|
|
4312
4283
|
inputReadOnly,
|
|
4313
4284
|
hideClearButton,
|
|
@@ -4324,27 +4295,12 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4324
4295
|
[props.name, onChange]
|
|
4325
4296
|
)
|
|
4326
4297
|
);
|
|
4327
|
-
const [displayValue, setDisplayValue] = (0, import_react26.useState)(
|
|
4328
|
-
() => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
|
|
4329
|
-
);
|
|
4330
4298
|
const [anchorEl, setAnchorEl] = (0, import_react26.useState)(null);
|
|
4331
4299
|
const open = Boolean(anchorEl);
|
|
4332
4300
|
const calendarValue = (0, import_react26.useMemo)(
|
|
4333
4301
|
() => value ? parseDates(value, format) : void 0,
|
|
4334
4302
|
[value, format]
|
|
4335
4303
|
);
|
|
4336
|
-
(0, import_react26.useEffect)(() => {
|
|
4337
|
-
if (value) {
|
|
4338
|
-
try {
|
|
4339
|
-
const dates = parseDates(value, format);
|
|
4340
|
-
const newDisplayValue = formatValueString2(dates, displayFormat);
|
|
4341
|
-
setDisplayValue(newDisplayValue);
|
|
4342
|
-
} catch (error2) {
|
|
4343
|
-
}
|
|
4344
|
-
} else {
|
|
4345
|
-
setDisplayValue("");
|
|
4346
|
-
}
|
|
4347
|
-
}, [displayFormat, value, format]);
|
|
4348
4304
|
(0, import_react26.useEffect)(() => {
|
|
4349
4305
|
if (!anchorEl) {
|
|
4350
4306
|
innerRef.current?.blur();
|
|
@@ -4355,41 +4311,9 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4355
4311
|
]);
|
|
4356
4312
|
const handleChange = (0, import_react26.useCallback)(
|
|
4357
4313
|
(event) => {
|
|
4358
|
-
|
|
4359
|
-
setDisplayValue(
|
|
4360
|
-
value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2
|
|
4361
|
-
);
|
|
4362
|
-
setValue(value2);
|
|
4363
|
-
},
|
|
4364
|
-
[displayFormat, format, setValue]
|
|
4365
|
-
);
|
|
4366
|
-
const handleDisplayInputChange = (0, import_react26.useCallback)(
|
|
4367
|
-
(event) => {
|
|
4368
|
-
if (event.target.value === "") {
|
|
4369
|
-
handleChange({
|
|
4370
|
-
target: {
|
|
4371
|
-
name: props.name,
|
|
4372
|
-
value: ""
|
|
4373
|
-
}
|
|
4374
|
-
});
|
|
4375
|
-
return;
|
|
4376
|
-
}
|
|
4377
|
-
const isValidDisplayValue = validValueFormat2(
|
|
4378
|
-
event.target.value,
|
|
4379
|
-
displayFormat
|
|
4380
|
-
);
|
|
4381
|
-
if (isValidDisplayValue) {
|
|
4382
|
-
const dates = parseDates(event.target.value, displayFormat);
|
|
4383
|
-
const formattedValue = formatValueString2(dates, format);
|
|
4384
|
-
handleChange({
|
|
4385
|
-
target: {
|
|
4386
|
-
name: props.name,
|
|
4387
|
-
value: formattedValue
|
|
4388
|
-
}
|
|
4389
|
-
});
|
|
4390
|
-
}
|
|
4314
|
+
setValue(event.target.value);
|
|
4391
4315
|
},
|
|
4392
|
-
[
|
|
4316
|
+
[setValue]
|
|
4393
4317
|
);
|
|
4394
4318
|
const handleCalendarToggle = (0, import_react26.useCallback)(
|
|
4395
4319
|
(event) => {
|
|
@@ -4401,26 +4325,10 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4401
4325
|
const handleCalendarChange = (0, import_react26.useCallback)(
|
|
4402
4326
|
([date1, date2]) => {
|
|
4403
4327
|
if (!date1 || !date2) return;
|
|
4404
|
-
|
|
4405
|
-
if (props.value !== void 0) {
|
|
4406
|
-
onChange?.({ target: { name: props.name, value: formattedValue } });
|
|
4407
|
-
} else {
|
|
4408
|
-
setDisplayValue(
|
|
4409
|
-
formatValueString2([date1, date2], displayFormat)
|
|
4410
|
-
);
|
|
4411
|
-
setValue(formattedValue);
|
|
4412
|
-
}
|
|
4328
|
+
setValue(formatValueString2([date1, date2], format));
|
|
4413
4329
|
setAnchorEl(null);
|
|
4414
4330
|
},
|
|
4415
|
-
[
|
|
4416
|
-
props.value,
|
|
4417
|
-
props.name,
|
|
4418
|
-
onChange,
|
|
4419
|
-
setValue,
|
|
4420
|
-
setAnchorEl,
|
|
4421
|
-
format,
|
|
4422
|
-
displayFormat
|
|
4423
|
-
]
|
|
4331
|
+
[setValue, setAnchorEl, format]
|
|
4424
4332
|
);
|
|
4425
4333
|
const handleInputMouseDown = (0, import_react26.useCallback)(
|
|
4426
4334
|
(event) => {
|
|
@@ -4438,21 +4346,17 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4438
4346
|
color: error ? "danger" : innerProps.color,
|
|
4439
4347
|
ref,
|
|
4440
4348
|
size,
|
|
4441
|
-
value
|
|
4442
|
-
onChange:
|
|
4349
|
+
value,
|
|
4350
|
+
onChange: handleChange,
|
|
4443
4351
|
disabled,
|
|
4444
4352
|
required,
|
|
4445
|
-
placeholder: `${
|
|
4353
|
+
placeholder: `${format} - ${format}`,
|
|
4446
4354
|
slotProps: {
|
|
4447
4355
|
input: {
|
|
4448
4356
|
component: TextMaskAdapter5,
|
|
4449
4357
|
ref: innerRef,
|
|
4450
|
-
format
|
|
4451
|
-
sx: {
|
|
4452
|
-
"&:hover": {
|
|
4453
|
-
cursor: inputReadOnly || readOnly ? "default" : "text"
|
|
4454
|
-
}
|
|
4455
|
-
},
|
|
4358
|
+
format,
|
|
4359
|
+
sx: { "&:hover": { cursor: inputReadOnly || readOnly ? "default" : "text" } },
|
|
4456
4360
|
onMouseDown: handleInputMouseDown
|
|
4457
4361
|
}
|
|
4458
4362
|
},
|
|
@@ -4522,7 +4426,6 @@ var DateRangePicker = (0, import_react26.forwardRef)(
|
|
|
4522
4426
|
color: "neutral",
|
|
4523
4427
|
onClick: () => {
|
|
4524
4428
|
setValue("");
|
|
4525
|
-
setDisplayValue("");
|
|
4526
4429
|
setAnchorEl(null);
|
|
4527
4430
|
}
|
|
4528
4431
|
},
|
|
@@ -4679,7 +4582,7 @@ function CheckboxGroup(props) {
|
|
|
4679
4582
|
{
|
|
4680
4583
|
key: `${id}-${option.value}`,
|
|
4681
4584
|
label: option.label,
|
|
4682
|
-
checked: internalValue
|
|
4585
|
+
checked: internalValue.includes(option.value),
|
|
4683
4586
|
onChange: handleCheckboxChange(option.value)
|
|
4684
4587
|
}
|
|
4685
4588
|
)));
|
|
@@ -4763,7 +4666,6 @@ function DateRange(props) {
|
|
|
4763
4666
|
disableFuture,
|
|
4764
4667
|
disablePast,
|
|
4765
4668
|
format = "YYYY/MM/DD",
|
|
4766
|
-
displayFormat,
|
|
4767
4669
|
inputReadOnly,
|
|
4768
4670
|
hideClearButton
|
|
4769
4671
|
} = props;
|
|
@@ -4788,12 +4690,6 @@ function DateRange(props) {
|
|
|
4788
4690
|
const now = /* @__PURE__ */ new Date();
|
|
4789
4691
|
const currentYear = now.getFullYear();
|
|
4790
4692
|
const currentMonth = now.getMonth();
|
|
4791
|
-
const formatDate = (date) => {
|
|
4792
|
-
const year = date.getFullYear();
|
|
4793
|
-
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
4794
|
-
const day = String(date.getDate()).padStart(2, "0");
|
|
4795
|
-
return `${year}-${month}-${day}`;
|
|
4796
|
-
};
|
|
4797
4693
|
switch (option) {
|
|
4798
4694
|
case "all-time":
|
|
4799
4695
|
return null;
|
|
@@ -4801,26 +4697,24 @@ function DateRange(props) {
|
|
|
4801
4697
|
const startOfMonth = new Date(currentYear, currentMonth, 1);
|
|
4802
4698
|
const endOfMonth = new Date(currentYear, currentMonth + 1, 0);
|
|
4803
4699
|
return [
|
|
4804
|
-
|
|
4805
|
-
|
|
4700
|
+
startOfMonth.toISOString().split("T")[0],
|
|
4701
|
+
endOfMonth.toISOString().split("T")[0]
|
|
4806
4702
|
];
|
|
4807
4703
|
}
|
|
4808
4704
|
case "this-year": {
|
|
4809
4705
|
const startOfYear = new Date(currentYear, 0, 1);
|
|
4810
4706
|
const endOfYear = new Date(currentYear, 11, 31);
|
|
4811
4707
|
return [
|
|
4812
|
-
|
|
4813
|
-
|
|
4708
|
+
startOfYear.toISOString().split("T")[0],
|
|
4709
|
+
endOfYear.toISOString().split("T")[0]
|
|
4814
4710
|
];
|
|
4815
4711
|
}
|
|
4816
4712
|
case "last-month": {
|
|
4817
|
-
const
|
|
4818
|
-
const
|
|
4819
|
-
const startOfLastMonth = new Date(lastMonthYear, lastMonth, 1);
|
|
4820
|
-
const endOfLastMonth = new Date(lastMonthYear, lastMonth + 1, 0);
|
|
4713
|
+
const startOfLastMonth = new Date(currentYear, currentMonth - 1, 1);
|
|
4714
|
+
const endOfLastMonth = new Date(currentYear, currentMonth, 0);
|
|
4821
4715
|
return [
|
|
4822
|
-
|
|
4823
|
-
|
|
4716
|
+
startOfLastMonth.toISOString().split("T")[0],
|
|
4717
|
+
endOfLastMonth.toISOString().split("T")[0]
|
|
4824
4718
|
];
|
|
4825
4719
|
}
|
|
4826
4720
|
case "custom":
|
|
@@ -4831,32 +4725,12 @@ function DateRange(props) {
|
|
|
4831
4725
|
},
|
|
4832
4726
|
[internalValue]
|
|
4833
4727
|
);
|
|
4834
|
-
const determineOptionFromValue = (0, import_react32.useCallback)(
|
|
4835
|
-
(value2) => {
|
|
4836
|
-
if (!value2) {
|
|
4837
|
-
return "all-time";
|
|
4838
|
-
}
|
|
4839
|
-
const options = ["this-month", "this-year", "last-month"];
|
|
4840
|
-
for (const option of options) {
|
|
4841
|
-
const optionRange = getDateRangeForOption(option);
|
|
4842
|
-
if (optionRange && optionRange[0] === value2[0] && optionRange[1] === value2[1]) {
|
|
4843
|
-
return option;
|
|
4844
|
-
}
|
|
4845
|
-
}
|
|
4846
|
-
return "custom";
|
|
4847
|
-
},
|
|
4848
|
-
[getDateRangeForOption]
|
|
4849
|
-
);
|
|
4850
4728
|
const customDateRangeValue = (0, import_react32.useMemo)(() => {
|
|
4851
4729
|
if (selectedOption === "custom" && internalValue) {
|
|
4852
4730
|
return `${internalValue[0]} - ${internalValue[1]}`;
|
|
4853
4731
|
}
|
|
4854
4732
|
return "";
|
|
4855
4733
|
}, [selectedOption, internalValue]);
|
|
4856
|
-
(0, import_react32.useEffect)(() => {
|
|
4857
|
-
const newOption = determineOptionFromValue(internalValue);
|
|
4858
|
-
setSelectedOption(newOption);
|
|
4859
|
-
}, [internalValue, determineOptionFromValue]);
|
|
4860
4734
|
const handleOptionChange = (0, import_react32.useCallback)(
|
|
4861
4735
|
(event) => {
|
|
4862
4736
|
const newOption = event.target.value;
|
|
@@ -4918,7 +4792,6 @@ function DateRange(props) {
|
|
|
4918
4792
|
disableFuture,
|
|
4919
4793
|
disablePast,
|
|
4920
4794
|
format,
|
|
4921
|
-
displayFormat,
|
|
4922
4795
|
inputReadOnly,
|
|
4923
4796
|
hideClearButton
|
|
4924
4797
|
}
|
|
@@ -5250,15 +5123,21 @@ function PercentageRange(props) {
|
|
|
5250
5123
|
min,
|
|
5251
5124
|
max
|
|
5252
5125
|
} = props;
|
|
5253
|
-
const [internalValue, setInternalValue] = useControlledState(
|
|
5126
|
+
const [internalValue, setInternalValue] = useControlledState(
|
|
5127
|
+
value,
|
|
5128
|
+
null,
|
|
5129
|
+
onChange
|
|
5130
|
+
);
|
|
5254
5131
|
const minValue = internalValue?.[0];
|
|
5255
5132
|
const maxValue = internalValue?.[1];
|
|
5256
5133
|
const handleMinChange = (0, import_react37.useCallback)(
|
|
5257
5134
|
(event) => {
|
|
5258
5135
|
const newMinValue = event.target.value;
|
|
5259
5136
|
const currentMaxValue = maxValue;
|
|
5260
|
-
if (newMinValue !== void 0) {
|
|
5261
|
-
setInternalValue([newMinValue, currentMaxValue
|
|
5137
|
+
if (newMinValue !== void 0 && currentMaxValue !== void 0) {
|
|
5138
|
+
setInternalValue([newMinValue, currentMaxValue]);
|
|
5139
|
+
} else if (newMinValue !== void 0) {
|
|
5140
|
+
setInternalValue([newMinValue, newMinValue]);
|
|
5262
5141
|
} else {
|
|
5263
5142
|
setInternalValue(null);
|
|
5264
5143
|
}
|
|
@@ -5269,8 +5148,10 @@ function PercentageRange(props) {
|
|
|
5269
5148
|
(event) => {
|
|
5270
5149
|
const newMaxValue = event.target.value;
|
|
5271
5150
|
const currentMinValue = minValue;
|
|
5272
|
-
if (newMaxValue !== void 0) {
|
|
5273
|
-
setInternalValue([currentMinValue
|
|
5151
|
+
if (currentMinValue !== void 0 && newMaxValue !== void 0) {
|
|
5152
|
+
setInternalValue([currentMinValue, newMaxValue]);
|
|
5153
|
+
} else if (newMaxValue !== void 0) {
|
|
5154
|
+
setInternalValue([newMaxValue, newMaxValue]);
|
|
5274
5155
|
} else {
|
|
5275
5156
|
setInternalValue(null);
|
|
5276
5157
|
}
|
|
@@ -5293,7 +5174,7 @@ function PercentageRange(props) {
|
|
|
5293
5174
|
PercentageInput,
|
|
5294
5175
|
{
|
|
5295
5176
|
label: "Minimum",
|
|
5296
|
-
value: minValue
|
|
5177
|
+
value: minValue,
|
|
5297
5178
|
onChange: handleMinChange,
|
|
5298
5179
|
useMinorUnit,
|
|
5299
5180
|
maxDecimalScale,
|
|
@@ -5307,7 +5188,7 @@ function PercentageRange(props) {
|
|
|
5307
5188
|
PercentageInput,
|
|
5308
5189
|
{
|
|
5309
5190
|
label: "Maximum",
|
|
5310
|
-
value: maxValue
|
|
5191
|
+
value: maxValue,
|
|
5311
5192
|
onChange: handleMaxChange,
|
|
5312
5193
|
useMinorUnit,
|
|
5313
5194
|
maxDecimalScale,
|
|
@@ -5325,7 +5206,15 @@ PercentageRange.displayName = "PercentageRange";
|
|
|
5325
5206
|
var import_react38 = __toESM(require("react"));
|
|
5326
5207
|
var import_joy50 = require("@mui/joy");
|
|
5327
5208
|
function Autocomplete2(props) {
|
|
5328
|
-
const {
|
|
5209
|
+
const {
|
|
5210
|
+
id,
|
|
5211
|
+
label,
|
|
5212
|
+
value,
|
|
5213
|
+
onChange,
|
|
5214
|
+
options,
|
|
5215
|
+
multiple,
|
|
5216
|
+
hidden
|
|
5217
|
+
} = props;
|
|
5329
5218
|
const [internalValue, setInternalValue] = useControlledState(
|
|
5330
5219
|
value,
|
|
5331
5220
|
void 0,
|
|
@@ -5363,7 +5252,6 @@ function Autocomplete2(props) {
|
|
|
5363
5252
|
onChange: handleChange,
|
|
5364
5253
|
options,
|
|
5365
5254
|
multiple,
|
|
5366
|
-
placeholder,
|
|
5367
5255
|
"aria-labelledby": label ? id : void 0
|
|
5368
5256
|
}
|
|
5369
5257
|
));
|
|
@@ -5382,16 +5270,7 @@ var componentMap = {
|
|
|
5382
5270
|
autocomplete: Autocomplete2
|
|
5383
5271
|
};
|
|
5384
5272
|
function FilterMenu(props) {
|
|
5385
|
-
const {
|
|
5386
|
-
filters,
|
|
5387
|
-
values,
|
|
5388
|
-
defaultValues,
|
|
5389
|
-
resetValues = {},
|
|
5390
|
-
onChange,
|
|
5391
|
-
onClose,
|
|
5392
|
-
useClear,
|
|
5393
|
-
useReset
|
|
5394
|
-
} = props;
|
|
5273
|
+
const { filters, values, defaultValues, onChange, onClose } = props;
|
|
5395
5274
|
const [internalValues, setInternalValues] = useControlledState(
|
|
5396
5275
|
values,
|
|
5397
5276
|
defaultValues || {},
|
|
@@ -5412,55 +5291,25 @@ function FilterMenu(props) {
|
|
|
5412
5291
|
onClose?.();
|
|
5413
5292
|
}, [onChange, onClose, internalValues]);
|
|
5414
5293
|
const handleClear = (0, import_react39.useCallback)(() => {
|
|
5415
|
-
const clearedValues =
|
|
5294
|
+
const clearedValues = defaultValues || {};
|
|
5416
5295
|
setInternalValues(clearedValues);
|
|
5417
5296
|
onChange?.(clearedValues);
|
|
5418
5297
|
onClose?.();
|
|
5419
|
-
}, [
|
|
5420
|
-
return /* @__PURE__ */ import_react39.default.createElement(
|
|
5421
|
-
|
|
5422
|
-
|
|
5423
|
-
|
|
5424
|
-
position: "relative",
|
|
5425
|
-
transform: "none",
|
|
5426
|
-
left: "initial",
|
|
5427
|
-
top: "initial"
|
|
5428
|
-
}
|
|
5429
|
-
},
|
|
5430
|
-
/* @__PURE__ */ import_react39.default.createElement(DialogContent, { sx: { paddingTop: 5 } }, /* @__PURE__ */ import_react39.default.createElement(import_joy51.Stack, { spacing: 6 }, filters?.map((filter) => {
|
|
5431
|
-
const FilterComponent = componentMap[filter.type];
|
|
5432
|
-
return FilterComponent ? /* @__PURE__ */ import_react39.default.createElement(
|
|
5433
|
-
FilterComponent,
|
|
5434
|
-
{
|
|
5435
|
-
key: filter.id,
|
|
5436
|
-
...filter,
|
|
5437
|
-
value: internalValues[filter.id],
|
|
5438
|
-
onChange: (value) => {
|
|
5439
|
-
handleFilterChange(filter.id, value);
|
|
5440
|
-
}
|
|
5441
|
-
}
|
|
5442
|
-
) : null;
|
|
5443
|
-
}))),
|
|
5444
|
-
/* @__PURE__ */ import_react39.default.createElement(DialogActions, { sx: { justifyContent: "space-between" } }, useClear && filters?.length === 1 && /* @__PURE__ */ import_react39.default.createElement(
|
|
5445
|
-
import_joy51.Button,
|
|
5446
|
-
{
|
|
5447
|
-
variant: "plain",
|
|
5448
|
-
color: "neutral",
|
|
5449
|
-
size: "md",
|
|
5450
|
-
onClick: handleClear
|
|
5451
|
-
},
|
|
5452
|
-
"Clear"
|
|
5453
|
-
), useReset && !useClear && /* @__PURE__ */ import_react39.default.createElement(
|
|
5454
|
-
import_joy51.Button,
|
|
5298
|
+
}, [defaultValues, setInternalValues, onChange, onClose]);
|
|
5299
|
+
return /* @__PURE__ */ import_react39.default.createElement(ModalDialog, null, /* @__PURE__ */ import_react39.default.createElement(DialogContent, { sx: { paddingTop: 5 } }, /* @__PURE__ */ import_react39.default.createElement(import_joy51.Stack, { spacing: 6 }, filters?.map((filter) => {
|
|
5300
|
+
const FilterComponent = componentMap[filter.type];
|
|
5301
|
+
return FilterComponent ? /* @__PURE__ */ import_react39.default.createElement(
|
|
5302
|
+
FilterComponent,
|
|
5455
5303
|
{
|
|
5456
|
-
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
|
|
5462
|
-
|
|
5463
|
-
|
|
5304
|
+
key: filter.id,
|
|
5305
|
+
...filter,
|
|
5306
|
+
value: internalValues[filter.id],
|
|
5307
|
+
onChange: (value) => {
|
|
5308
|
+
handleFilterChange(filter.id, value);
|
|
5309
|
+
}
|
|
5310
|
+
}
|
|
5311
|
+
) : null;
|
|
5312
|
+
}))), /* @__PURE__ */ import_react39.default.createElement(DialogActions, { sx: { justifyContent: "space-between" } }, /* @__PURE__ */ import_react39.default.createElement(import_joy51.Button, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Clear"), /* @__PURE__ */ import_react39.default.createElement(import_joy51.Button, { variant: "solid", color: "primary", size: "md", onClick: handleApply }, "Apply")));
|
|
5464
5313
|
}
|
|
5465
5314
|
FilterMenu.displayName = "FilterMenu";
|
|
5466
5315
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export { useTheme, useColorScheme, useThemeProps, ButtonGroup, alertClasses, boxClasses, buttonClasses, checkboxClasses, dividerClasses, iconButtonClasses, inputClasses, menuClasses, menuButtonClasses, menuItemClasses, optionClasses, radioClasses, radioGroupClasses, selectClasses, switchClasses, tableClasses, textareaClasses, typographyClasses, formControlClasses, formLabelClasses, formHelperTextClasses, gridClasses, stackClasses, sheetClasses, modalClasses, modalCloseClasses, modalDialogClasses, modalOverflowClasses, dialogTitleClasses, dialogContentClasses, dialogActionsClasses, tooltipClasses, tabsClasses, tabListClasses, tabPanelClasses, accordionClasses, accordionDetailsClasses, accordionGroupClasses as accordionsClasses, accordionSummaryClasses, AutocompleteListbox, AutocompleteOption, autocompleteClasses, autocompleteListboxClasses, autocompleteOptionClasses, avatarClasses, avatarGroupClasses, AspectRatio, aspectRatioClasses, Badge, badgeClasses, breadcrumbsClasses, cardClasses, cardActionsClasses, cardContentClasses, cardCoverClasses, cardOverflowClasses, chipClasses, CircularProgress, circularProgressClasses, Drawer, drawerClasses, LinearProgress, linearProgressClasses, List, listClasses, ListDivider, listDividerClasses, ListItem, listItemClasses, ListItemButton, listItemButtonClasses, ListItemContent, listItemContentClasses, ListItemDecorator, listItemDecoratorClasses, ListSubheader, listSubheaderClasses, Link, linkClasses, Slider, sliderClasses, stepClasses, StepButton, stepButtonClasses, stepperClasses, Skeleton, skeletonClasses, styled, } from "@mui/joy";
|
|
2
2
|
export type { ButtonProps, Theme } from "@mui/joy";
|
|
3
3
|
export { Accordion, Accordions, Alert, Autocomplete, AccordionDetails, AccordionSummary, Avatar, AvatarGroup, Box, Breadcrumbs, Button, Calendar, Card, CardActions, CardContent, CardCover, CardOverflow, Checkbox, Chip, Container, CssBaseline, CurrencyInput, DataTable, DatePicker, DateRangePicker, DialogActions, DialogContent, DialogTitle, DialogFrame, Divider, Dropdown, FilterMenu, extendTheme, InsetDrawer, Uploader, FormControl, FormHelperText, FormLabel, Grid, IconButton, IconMenuButton, InfoSign, Input, Markdown, Menu, MenuButton, MenuItem, Modal, ModalClose, ModalDialog, ModalOverflow, ModalFrame, MonthPicker, MonthRangePicker, PercentageInput, ProfileMenu, Pagination, NavigationGroup, NavigationItem, Navigator, Radio, RadioGroup, RadioList, Select, Option, Sheet, Stack, Step, StepIndicator, Stepper, Switch, theme, Table, TableHead, TableBody, Tabs, Tab, TabList, TabPanel, Textarea, ThemeProvider, Tooltip, Typography, } from "./components";
|
|
4
|
-
export type * from "./components";
|