@ceed/ads 1.18.0 → 1.19.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs
CHANGED
|
@@ -345,9 +345,10 @@ Alert.displayName = "Alert";
|
|
|
345
345
|
// src/components/Autocomplete/Autocomplete.tsx
|
|
346
346
|
var import_react6 = __toESM(require("react"));
|
|
347
347
|
var import_joy10 = require("@mui/joy");
|
|
348
|
+
var import_base = require("@mui/base");
|
|
348
349
|
var import_Close = __toESM(require("@mui/icons-material/Close"));
|
|
349
350
|
var import_react_virtual = require("@tanstack/react-virtual");
|
|
350
|
-
var
|
|
351
|
+
var import_base2 = require("@mui/base");
|
|
351
352
|
|
|
352
353
|
// src/components/FormControl/FormControl.tsx
|
|
353
354
|
var import_joy5 = require("@mui/joy");
|
|
@@ -431,24 +432,39 @@ function useControlledState(controlledValue, defaultValue, onChange) {
|
|
|
431
432
|
}
|
|
432
433
|
|
|
433
434
|
// src/components/Autocomplete/Autocomplete.tsx
|
|
434
|
-
var AutocompletePopper = (0, import_joy10.styled)(
|
|
435
|
+
var AutocompletePopper = (0, import_joy10.styled)(import_base2.Popper, {
|
|
435
436
|
name: "Autocomplete",
|
|
436
437
|
slot: "Popper"
|
|
437
438
|
})(({ theme }) => ({
|
|
438
439
|
zIndex: theme.zIndex.tooltip
|
|
439
440
|
}));
|
|
441
|
+
var itemHeightMap = {
|
|
442
|
+
sm: { default: 32, secondary: 47 },
|
|
443
|
+
md: { default: 36, secondary: 55 },
|
|
444
|
+
lg: { default: 44, secondary: 65 }
|
|
445
|
+
};
|
|
446
|
+
var optionPaddingMap = {
|
|
447
|
+
sm: { px: "8px", py: "3px" },
|
|
448
|
+
md: { px: "12px", py: "4px" },
|
|
449
|
+
lg: { px: "16px", py: "6px" }
|
|
450
|
+
};
|
|
440
451
|
var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
441
452
|
const {
|
|
442
453
|
anchorEl,
|
|
443
454
|
open,
|
|
444
455
|
modifiers,
|
|
445
456
|
children,
|
|
457
|
+
hasSecondaryText = false,
|
|
446
458
|
ownerState: { loading, size: fontSize },
|
|
447
459
|
...innerProps
|
|
448
460
|
} = props;
|
|
449
461
|
const parentRef = (0, import_react6.useRef)(null);
|
|
450
462
|
const isGrouped = children[0].every((child) => child.hasOwnProperty("group"));
|
|
451
|
-
const
|
|
463
|
+
const itemHeight = (0, import_react6.useMemo)(() => {
|
|
464
|
+
const heights = itemHeightMap[fontSize ?? "md"];
|
|
465
|
+
return hasSecondaryText ? heights.secondary : heights.default;
|
|
466
|
+
}, [fontSize, hasSecondaryText]);
|
|
467
|
+
const renderTargets = (0, import_react6.useMemo)(() => {
|
|
452
468
|
if (loading) {
|
|
453
469
|
return [children[1]];
|
|
454
470
|
}
|
|
@@ -462,10 +478,10 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
462
478
|
]);
|
|
463
479
|
}
|
|
464
480
|
return children[0];
|
|
465
|
-
})
|
|
481
|
+
}, [loading, children, isGrouped]);
|
|
466
482
|
const virtualizer = (0, import_react_virtual.useVirtualizer)({
|
|
467
483
|
count: renderTargets.length,
|
|
468
|
-
estimateSize: () =>
|
|
484
|
+
estimateSize: () => itemHeight,
|
|
469
485
|
getScrollElement: () => parentRef.current,
|
|
470
486
|
measureElement: (element) => element.clientHeight,
|
|
471
487
|
overscan: 5
|
|
@@ -513,19 +529,24 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
513
529
|
)
|
|
514
530
|
))));
|
|
515
531
|
});
|
|
516
|
-
var
|
|
532
|
+
var autocompleteDeleteSize = {
|
|
517
533
|
sm: "20px",
|
|
518
534
|
md: "24px",
|
|
519
535
|
lg: "28px"
|
|
520
536
|
};
|
|
537
|
+
var secondaryTextLevelMap = {
|
|
538
|
+
sm: "body-xs",
|
|
539
|
+
md: "body-sm",
|
|
540
|
+
lg: "body-md"
|
|
541
|
+
};
|
|
521
542
|
var AutocompleteTagDelete = (0, import_joy10.styled)(IconButton_default, {
|
|
522
543
|
name: "Autocomplete",
|
|
523
544
|
slot: "tagDelete"
|
|
524
545
|
})(({ theme, size = "sm" }) => ({
|
|
525
|
-
width:
|
|
526
|
-
height:
|
|
527
|
-
minWidth:
|
|
528
|
-
minHeight:
|
|
546
|
+
width: autocompleteDeleteSize[size],
|
|
547
|
+
height: autocompleteDeleteSize[size],
|
|
548
|
+
minWidth: autocompleteDeleteSize[size],
|
|
549
|
+
minHeight: autocompleteDeleteSize[size],
|
|
529
550
|
borderRadius: "50%"
|
|
530
551
|
}));
|
|
531
552
|
function Autocomplete(props) {
|
|
@@ -645,7 +666,18 @@ function Autocomplete(props) {
|
|
|
645
666
|
slots: {
|
|
646
667
|
listbox: AutocompleteListBox
|
|
647
668
|
},
|
|
648
|
-
|
|
669
|
+
slotProps: {
|
|
670
|
+
listbox: {
|
|
671
|
+
hasSecondaryText: options.some((opt) => opt.secondaryText)
|
|
672
|
+
}
|
|
673
|
+
},
|
|
674
|
+
filterOptions: (0, import_base.createFilterOptions)({
|
|
675
|
+
stringify: (option) => {
|
|
676
|
+
const opt = option;
|
|
677
|
+
return opt.secondaryText ? `${opt.label} ${opt.secondaryText}` : opt.label;
|
|
678
|
+
}
|
|
679
|
+
}),
|
|
680
|
+
renderOption: (props2, option) => /* @__PURE__ */ import_react6.default.createElement(import_joy10.AutocompleteOption, { ...props2, sx: optionPaddingMap[size ?? "md"] }, option.startDecorator && /* @__PURE__ */ import_react6.default.createElement(
|
|
649
681
|
import_joy10.ListItemDecorator,
|
|
650
682
|
{
|
|
651
683
|
sx: (theme) => ({
|
|
@@ -653,7 +685,10 @@ function Autocomplete(props) {
|
|
|
653
685
|
})
|
|
654
686
|
},
|
|
655
687
|
applySize(option.startDecorator)
|
|
656
|
-
), applySize(option.label),
|
|
688
|
+
), option.secondaryText ? /* @__PURE__ */ import_react6.default.createElement(import_joy10.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react6.default.createElement(import_joy10.Typography, { level: "inherit" }, applySize(option.label)), /* @__PURE__ */ import_react6.default.createElement(import_joy10.Typography, { level: secondaryTextLevelMap[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : (
|
|
689
|
+
// TODO: haulla에서 사용할 때, label을 ReactNode로 넘기면 에러가 발생함....
|
|
690
|
+
applySize(option.label)
|
|
691
|
+
), option.endDecorator && /* @__PURE__ */ import_react6.default.createElement(
|
|
657
692
|
import_joy10.ListItemDecorator,
|
|
658
693
|
{
|
|
659
694
|
sx: (theme) => ({
|
|
@@ -2215,7 +2250,7 @@ var import_react19 = __toESM(require("react"));
|
|
|
2215
2250
|
var import_react_imask = require("react-imask");
|
|
2216
2251
|
var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
2217
2252
|
var import_joy27 = require("@mui/joy");
|
|
2218
|
-
var
|
|
2253
|
+
var import_base3 = require("@mui/base");
|
|
2219
2254
|
|
|
2220
2255
|
// src/components/Sheet/Sheet.tsx
|
|
2221
2256
|
var import_joy25 = require("@mui/joy");
|
|
@@ -2251,7 +2286,7 @@ var CalendarButton = (0, import_joy27.styled)(IconButton_default, {
|
|
|
2251
2286
|
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
|
|
2252
2287
|
}
|
|
2253
2288
|
}));
|
|
2254
|
-
var StyledPopper = (0, import_joy27.styled)(
|
|
2289
|
+
var StyledPopper = (0, import_joy27.styled)(import_base3.Popper, {
|
|
2255
2290
|
name: "DatePicker",
|
|
2256
2291
|
slot: "popper"
|
|
2257
2292
|
})(({ theme }) => ({
|
|
@@ -2464,7 +2499,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2464
2499
|
},
|
|
2465
2500
|
[inputReadOnly, buttonRef]
|
|
2466
2501
|
);
|
|
2467
|
-
return /* @__PURE__ */ import_react19.default.createElement(DatePickerRoot, null, /* @__PURE__ */ import_react19.default.createElement(
|
|
2502
|
+
return /* @__PURE__ */ import_react19.default.createElement(DatePickerRoot, null, /* @__PURE__ */ import_react19.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(
|
|
2468
2503
|
Input_default,
|
|
2469
2504
|
{
|
|
2470
2505
|
...innerProps,
|
|
@@ -2510,7 +2545,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2510
2545
|
helperText,
|
|
2511
2546
|
readOnly: readOnly || inputReadOnly
|
|
2512
2547
|
}
|
|
2513
|
-
), open && /* @__PURE__ */ import_react19.default.createElement(
|
|
2548
|
+
), open && /* @__PURE__ */ import_react19.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react19.default.createElement(
|
|
2514
2549
|
StyledPopper,
|
|
2515
2550
|
{
|
|
2516
2551
|
id: "date-picker-popper",
|
|
@@ -2640,6 +2675,11 @@ var import_joy29 = require("@mui/joy");
|
|
|
2640
2675
|
var import_framer_motion19 = require("framer-motion");
|
|
2641
2676
|
var MotionOption = (0, import_framer_motion19.motion)(import_joy29.Option);
|
|
2642
2677
|
var Option = MotionOption;
|
|
2678
|
+
var secondaryTextLevelMap2 = {
|
|
2679
|
+
sm: "body-xs",
|
|
2680
|
+
md: "body-sm",
|
|
2681
|
+
lg: "body-md"
|
|
2682
|
+
};
|
|
2643
2683
|
Option.displayName = "Option";
|
|
2644
2684
|
function Select(props) {
|
|
2645
2685
|
const {
|
|
@@ -2681,6 +2721,13 @@ function Select(props) {
|
|
|
2681
2721
|
};
|
|
2682
2722
|
onChange?.(newEvent, newValue);
|
|
2683
2723
|
};
|
|
2724
|
+
const optionMap = (0, import_react21.useMemo)(() => {
|
|
2725
|
+
const map = /* @__PURE__ */ new Map();
|
|
2726
|
+
options.forEach((option) => {
|
|
2727
|
+
map.set(option.value, option);
|
|
2728
|
+
});
|
|
2729
|
+
return map;
|
|
2730
|
+
}, [options]);
|
|
2684
2731
|
const select = /* @__PURE__ */ import_react21.default.createElement(
|
|
2685
2732
|
import_joy29.Select,
|
|
2686
2733
|
{
|
|
@@ -2689,9 +2736,16 @@ function Select(props) {
|
|
|
2689
2736
|
disabled,
|
|
2690
2737
|
size,
|
|
2691
2738
|
color: error ? "danger" : color,
|
|
2692
|
-
onChange: handleChange
|
|
2739
|
+
onChange: handleChange,
|
|
2740
|
+
renderValue: (selected) => {
|
|
2741
|
+
if (!selected) return null;
|
|
2742
|
+
if (Array.isArray(selected)) {
|
|
2743
|
+
return selected.map((s) => optionMap.get(s.value)?.label).join(", ");
|
|
2744
|
+
}
|
|
2745
|
+
return optionMap.get(selected.value)?.label;
|
|
2746
|
+
}
|
|
2693
2747
|
},
|
|
2694
|
-
options.map((option) => /* @__PURE__ */ import_react21.default.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.label))
|
|
2748
|
+
options.map((option) => /* @__PURE__ */ import_react21.default.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ import_react21.default.createElement(import_joy29.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react21.default.createElement(import_joy29.Typography, { level: "inherit" }, option.label), /* @__PURE__ */ import_react21.default.createElement(import_joy29.Typography, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
|
|
2695
2749
|
);
|
|
2696
2750
|
return /* @__PURE__ */ import_react21.default.createElement(
|
|
2697
2751
|
FormControl_default,
|
|
@@ -4111,7 +4165,7 @@ var import_react29 = __toESM(require("react"));
|
|
|
4111
4165
|
var import_react_imask2 = require("react-imask");
|
|
4112
4166
|
var import_CalendarToday2 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
4113
4167
|
var import_joy36 = require("@mui/joy");
|
|
4114
|
-
var
|
|
4168
|
+
var import_base4 = require("@mui/base");
|
|
4115
4169
|
var CalendarButton2 = (0, import_joy36.styled)(IconButton_default, {
|
|
4116
4170
|
name: "DateRangePicker",
|
|
4117
4171
|
slot: "calendarButton"
|
|
@@ -4122,7 +4176,7 @@ var CalendarButton2 = (0, import_joy36.styled)(IconButton_default, {
|
|
|
4122
4176
|
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
|
|
4123
4177
|
}
|
|
4124
4178
|
}));
|
|
4125
|
-
var StyledPopper2 = (0, import_joy36.styled)(
|
|
4179
|
+
var StyledPopper2 = (0, import_joy36.styled)(import_base4.Popper, {
|
|
4126
4180
|
name: "DateRangePicker",
|
|
4127
4181
|
slot: "popper"
|
|
4128
4182
|
})(({ theme }) => ({
|
|
@@ -4365,7 +4419,7 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
|
4365
4419
|
},
|
|
4366
4420
|
[inputReadOnly, buttonRef]
|
|
4367
4421
|
);
|
|
4368
|
-
return /* @__PURE__ */ import_react29.default.createElement(DateRangePickerRoot, null, /* @__PURE__ */ import_react29.default.createElement(
|
|
4422
|
+
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(
|
|
4369
4423
|
Input_default,
|
|
4370
4424
|
{
|
|
4371
4425
|
...innerProps,
|
|
@@ -4411,7 +4465,7 @@ var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
|
4411
4465
|
helperText,
|
|
4412
4466
|
readOnly: readOnly || inputReadOnly
|
|
4413
4467
|
}
|
|
4414
|
-
), open && /* @__PURE__ */ import_react29.default.createElement(
|
|
4468
|
+
), open && /* @__PURE__ */ import_react29.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4415
4469
|
StyledPopper2,
|
|
4416
4470
|
{
|
|
4417
4471
|
id: "date-range-picker-popper",
|
|
@@ -5982,8 +6036,8 @@ MenuButton.displayName = "MenuButton";
|
|
|
5982
6036
|
var import_react49 = __toESM(require("react"));
|
|
5983
6037
|
var import_CalendarToday3 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
5984
6038
|
var import_joy61 = require("@mui/joy");
|
|
5985
|
-
var
|
|
5986
|
-
var StyledPopper3 = (0, import_joy61.styled)(
|
|
6039
|
+
var import_base5 = require("@mui/base");
|
|
6040
|
+
var StyledPopper3 = (0, import_joy61.styled)(import_base5.Popper, {
|
|
5987
6041
|
name: "MonthPicker",
|
|
5988
6042
|
slot: "popper"
|
|
5989
6043
|
})(({ theme }) => ({
|
|
@@ -6115,7 +6169,7 @@ var MonthPicker = (0, import_react49.forwardRef)((inProps, ref) => {
|
|
|
6115
6169
|
},
|
|
6116
6170
|
[buttonRef]
|
|
6117
6171
|
);
|
|
6118
|
-
return /* @__PURE__ */ import_react49.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react49.default.createElement(
|
|
6172
|
+
return /* @__PURE__ */ import_react49.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react49.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react49.default.createElement(import_react49.default.Fragment, null, /* @__PURE__ */ import_react49.default.createElement(
|
|
6119
6173
|
Input_default,
|
|
6120
6174
|
{
|
|
6121
6175
|
...innerProps,
|
|
@@ -6162,7 +6216,7 @@ var MonthPicker = (0, import_react49.forwardRef)((inProps, ref) => {
|
|
|
6162
6216
|
label,
|
|
6163
6217
|
helperText
|
|
6164
6218
|
}
|
|
6165
|
-
), open && /* @__PURE__ */ import_react49.default.createElement(
|
|
6219
|
+
), open && /* @__PURE__ */ import_react49.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react49.default.createElement(
|
|
6166
6220
|
StyledPopper3,
|
|
6167
6221
|
{
|
|
6168
6222
|
id: "month-picker-popper",
|
|
@@ -6236,8 +6290,8 @@ var import_react50 = __toESM(require("react"));
|
|
|
6236
6290
|
var import_react_imask3 = require("react-imask");
|
|
6237
6291
|
var import_CalendarToday4 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
6238
6292
|
var import_joy62 = require("@mui/joy");
|
|
6239
|
-
var
|
|
6240
|
-
var StyledPopper4 = (0, import_joy62.styled)(
|
|
6293
|
+
var import_base6 = require("@mui/base");
|
|
6294
|
+
var StyledPopper4 = (0, import_joy62.styled)(import_base6.Popper, {
|
|
6241
6295
|
name: "MonthRangePicker",
|
|
6242
6296
|
slot: "popper"
|
|
6243
6297
|
})(({ theme }) => ({
|
|
@@ -6376,7 +6430,7 @@ var MonthRangePicker = (0, import_react50.forwardRef)((inProps, ref) => {
|
|
|
6376
6430
|
},
|
|
6377
6431
|
[setValue, setAnchorEl, format]
|
|
6378
6432
|
);
|
|
6379
|
-
return /* @__PURE__ */ import_react50.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react50.default.createElement(
|
|
6433
|
+
return /* @__PURE__ */ import_react50.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react50.default.createElement(import_base6.FocusTrap, { open: true }, /* @__PURE__ */ import_react50.default.createElement(import_react50.default.Fragment, null, /* @__PURE__ */ import_react50.default.createElement(
|
|
6380
6434
|
Input_default,
|
|
6381
6435
|
{
|
|
6382
6436
|
...innerProps,
|
|
@@ -6413,7 +6467,7 @@ var MonthRangePicker = (0, import_react50.forwardRef)((inProps, ref) => {
|
|
|
6413
6467
|
label,
|
|
6414
6468
|
helperText
|
|
6415
6469
|
}
|
|
6416
|
-
), open && /* @__PURE__ */ import_react50.default.createElement(
|
|
6470
|
+
), open && /* @__PURE__ */ import_react50.default.createElement(import_base6.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react50.default.createElement(
|
|
6417
6471
|
StyledPopper4,
|
|
6418
6472
|
{
|
|
6419
6473
|
id: "month-range-picker-popper",
|
|
@@ -6584,7 +6638,7 @@ Navigator.displayName = "Navigator";
|
|
|
6584
6638
|
// src/components/ProfileMenu/ProfileMenu.tsx
|
|
6585
6639
|
var import_react54 = __toESM(require("react"));
|
|
6586
6640
|
var import_joy65 = require("@mui/joy");
|
|
6587
|
-
var
|
|
6641
|
+
var import_base7 = require("@mui/base");
|
|
6588
6642
|
var import_ArrowDropDown = __toESM(require("@mui/icons-material/ArrowDropDown"));
|
|
6589
6643
|
var StyledProfileCard = (0, import_joy65.styled)(import_joy3.Stack, {
|
|
6590
6644
|
name: "ProfileMenu",
|
|
@@ -6636,7 +6690,7 @@ function ProfileMenu(props) {
|
|
|
6636
6690
|
defaultOpen ?? false,
|
|
6637
6691
|
(0, import_react54.useCallback)((value) => onOpenChange?.(value), [onOpenChange])
|
|
6638
6692
|
);
|
|
6639
|
-
return /* @__PURE__ */ import_react54.default.createElement(
|
|
6693
|
+
return /* @__PURE__ */ import_react54.default.createElement(import_base7.ClickAwayListener, { onClickAway: () => setOpen(false) }, /* @__PURE__ */ import_react54.default.createElement("div", null, /* @__PURE__ */ import_react54.default.createElement(import_joy65.Dropdown, { open }, /* @__PURE__ */ import_react54.default.createElement(
|
|
6640
6694
|
ProfileMenuButton,
|
|
6641
6695
|
{
|
|
6642
6696
|
size,
|
package/dist/index.js
CHANGED
|
@@ -131,7 +131,7 @@ import {
|
|
|
131
131
|
listItemClasses,
|
|
132
132
|
ListItemButton as ListItemButton2,
|
|
133
133
|
listItemButtonClasses as listItemButtonClasses2,
|
|
134
|
-
ListItemContent,
|
|
134
|
+
ListItemContent as ListItemContent3,
|
|
135
135
|
listItemContentClasses,
|
|
136
136
|
ListItemDecorator as ListItemDecorator2,
|
|
137
137
|
listItemDecoratorClasses,
|
|
@@ -244,9 +244,12 @@ import {
|
|
|
244
244
|
ListSubheader as JoyListSubheader,
|
|
245
245
|
AutocompleteListbox as JoyAutocompleteListbox,
|
|
246
246
|
ListItemDecorator,
|
|
247
|
+
ListItemContent,
|
|
248
|
+
Typography as Typography2,
|
|
247
249
|
CircularProgress,
|
|
248
250
|
styled as styled3
|
|
249
251
|
} from "@mui/joy";
|
|
252
|
+
import { createFilterOptions } from "@mui/base";
|
|
250
253
|
import CloseIcon from "@mui/icons-material/Close";
|
|
251
254
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
252
255
|
import { Popper } from "@mui/base";
|
|
@@ -339,18 +342,33 @@ var AutocompletePopper = styled3(Popper, {
|
|
|
339
342
|
})(({ theme }) => ({
|
|
340
343
|
zIndex: theme.zIndex.tooltip
|
|
341
344
|
}));
|
|
345
|
+
var itemHeightMap = {
|
|
346
|
+
sm: { default: 32, secondary: 47 },
|
|
347
|
+
md: { default: 36, secondary: 55 },
|
|
348
|
+
lg: { default: 44, secondary: 65 }
|
|
349
|
+
};
|
|
350
|
+
var optionPaddingMap = {
|
|
351
|
+
sm: { px: "8px", py: "3px" },
|
|
352
|
+
md: { px: "12px", py: "4px" },
|
|
353
|
+
lg: { px: "16px", py: "6px" }
|
|
354
|
+
};
|
|
342
355
|
var AutocompleteListBox = React5.forwardRef((props, ref) => {
|
|
343
356
|
const {
|
|
344
357
|
anchorEl,
|
|
345
358
|
open,
|
|
346
359
|
modifiers,
|
|
347
360
|
children,
|
|
361
|
+
hasSecondaryText = false,
|
|
348
362
|
ownerState: { loading, size: fontSize },
|
|
349
363
|
...innerProps
|
|
350
364
|
} = props;
|
|
351
365
|
const parentRef = useRef2(null);
|
|
352
366
|
const isGrouped = children[0].every((child) => child.hasOwnProperty("group"));
|
|
353
|
-
const
|
|
367
|
+
const itemHeight = useMemo(() => {
|
|
368
|
+
const heights = itemHeightMap[fontSize ?? "md"];
|
|
369
|
+
return hasSecondaryText ? heights.secondary : heights.default;
|
|
370
|
+
}, [fontSize, hasSecondaryText]);
|
|
371
|
+
const renderTargets = useMemo(() => {
|
|
354
372
|
if (loading) {
|
|
355
373
|
return [children[1]];
|
|
356
374
|
}
|
|
@@ -364,10 +382,10 @@ var AutocompleteListBox = React5.forwardRef((props, ref) => {
|
|
|
364
382
|
]);
|
|
365
383
|
}
|
|
366
384
|
return children[0];
|
|
367
|
-
})
|
|
385
|
+
}, [loading, children, isGrouped]);
|
|
368
386
|
const virtualizer = useVirtualizer({
|
|
369
387
|
count: renderTargets.length,
|
|
370
|
-
estimateSize: () =>
|
|
388
|
+
estimateSize: () => itemHeight,
|
|
371
389
|
getScrollElement: () => parentRef.current,
|
|
372
390
|
measureElement: (element) => element.clientHeight,
|
|
373
391
|
overscan: 5
|
|
@@ -415,19 +433,24 @@ var AutocompleteListBox = React5.forwardRef((props, ref) => {
|
|
|
415
433
|
)
|
|
416
434
|
))));
|
|
417
435
|
});
|
|
418
|
-
var
|
|
436
|
+
var autocompleteDeleteSize = {
|
|
419
437
|
sm: "20px",
|
|
420
438
|
md: "24px",
|
|
421
439
|
lg: "28px"
|
|
422
440
|
};
|
|
441
|
+
var secondaryTextLevelMap = {
|
|
442
|
+
sm: "body-xs",
|
|
443
|
+
md: "body-sm",
|
|
444
|
+
lg: "body-md"
|
|
445
|
+
};
|
|
423
446
|
var AutocompleteTagDelete = styled3(IconButton_default, {
|
|
424
447
|
name: "Autocomplete",
|
|
425
448
|
slot: "tagDelete"
|
|
426
449
|
})(({ theme, size = "sm" }) => ({
|
|
427
|
-
width:
|
|
428
|
-
height:
|
|
429
|
-
minWidth:
|
|
430
|
-
minHeight:
|
|
450
|
+
width: autocompleteDeleteSize[size],
|
|
451
|
+
height: autocompleteDeleteSize[size],
|
|
452
|
+
minWidth: autocompleteDeleteSize[size],
|
|
453
|
+
minHeight: autocompleteDeleteSize[size],
|
|
431
454
|
borderRadius: "50%"
|
|
432
455
|
}));
|
|
433
456
|
function Autocomplete(props) {
|
|
@@ -547,7 +570,18 @@ function Autocomplete(props) {
|
|
|
547
570
|
slots: {
|
|
548
571
|
listbox: AutocompleteListBox
|
|
549
572
|
},
|
|
550
|
-
|
|
573
|
+
slotProps: {
|
|
574
|
+
listbox: {
|
|
575
|
+
hasSecondaryText: options.some((opt) => opt.secondaryText)
|
|
576
|
+
}
|
|
577
|
+
},
|
|
578
|
+
filterOptions: createFilterOptions({
|
|
579
|
+
stringify: (option) => {
|
|
580
|
+
const opt = option;
|
|
581
|
+
return opt.secondaryText ? `${opt.label} ${opt.secondaryText}` : opt.label;
|
|
582
|
+
}
|
|
583
|
+
}),
|
|
584
|
+
renderOption: (props2, option) => /* @__PURE__ */ React5.createElement(JoyAutocompleteOption, { ...props2, sx: optionPaddingMap[size ?? "md"] }, option.startDecorator && /* @__PURE__ */ React5.createElement(
|
|
551
585
|
ListItemDecorator,
|
|
552
586
|
{
|
|
553
587
|
sx: (theme) => ({
|
|
@@ -555,7 +589,10 @@ function Autocomplete(props) {
|
|
|
555
589
|
})
|
|
556
590
|
},
|
|
557
591
|
applySize(option.startDecorator)
|
|
558
|
-
), applySize(option.label),
|
|
592
|
+
), option.secondaryText ? /* @__PURE__ */ React5.createElement(ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ React5.createElement(Typography2, { level: "inherit" }, applySize(option.label)), /* @__PURE__ */ React5.createElement(Typography2, { level: secondaryTextLevelMap[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : (
|
|
593
|
+
// TODO: haulla에서 사용할 때, label을 ReactNode로 넘기면 에러가 발생함....
|
|
594
|
+
applySize(option.label)
|
|
595
|
+
), option.endDecorator && /* @__PURE__ */ React5.createElement(
|
|
559
596
|
ListItemDecorator,
|
|
560
597
|
{
|
|
561
598
|
sx: (theme) => ({
|
|
@@ -2565,10 +2602,15 @@ var Textarea_default = Textarea;
|
|
|
2565
2602
|
|
|
2566
2603
|
// src/components/Select/Select.tsx
|
|
2567
2604
|
import React19, { useMemo as useMemo7 } from "react";
|
|
2568
|
-
import { Select as JoySelect, Option as JoyOption } from "@mui/joy";
|
|
2605
|
+
import { Select as JoySelect, Option as JoyOption, ListItemContent as ListItemContent2, Typography as Typography3 } from "@mui/joy";
|
|
2569
2606
|
import { motion as motion19 } from "framer-motion";
|
|
2570
2607
|
var MotionOption = motion19(JoyOption);
|
|
2571
2608
|
var Option = MotionOption;
|
|
2609
|
+
var secondaryTextLevelMap2 = {
|
|
2610
|
+
sm: "body-xs",
|
|
2611
|
+
md: "body-sm",
|
|
2612
|
+
lg: "body-md"
|
|
2613
|
+
};
|
|
2572
2614
|
Option.displayName = "Option";
|
|
2573
2615
|
function Select(props) {
|
|
2574
2616
|
const {
|
|
@@ -2610,6 +2652,13 @@ function Select(props) {
|
|
|
2610
2652
|
};
|
|
2611
2653
|
onChange?.(newEvent, newValue);
|
|
2612
2654
|
};
|
|
2655
|
+
const optionMap = useMemo7(() => {
|
|
2656
|
+
const map = /* @__PURE__ */ new Map();
|
|
2657
|
+
options.forEach((option) => {
|
|
2658
|
+
map.set(option.value, option);
|
|
2659
|
+
});
|
|
2660
|
+
return map;
|
|
2661
|
+
}, [options]);
|
|
2613
2662
|
const select = /* @__PURE__ */ React19.createElement(
|
|
2614
2663
|
JoySelect,
|
|
2615
2664
|
{
|
|
@@ -2618,9 +2667,16 @@ function Select(props) {
|
|
|
2618
2667
|
disabled,
|
|
2619
2668
|
size,
|
|
2620
2669
|
color: error ? "danger" : color,
|
|
2621
|
-
onChange: handleChange
|
|
2670
|
+
onChange: handleChange,
|
|
2671
|
+
renderValue: (selected) => {
|
|
2672
|
+
if (!selected) return null;
|
|
2673
|
+
if (Array.isArray(selected)) {
|
|
2674
|
+
return selected.map((s) => optionMap.get(s.value)?.label).join(", ");
|
|
2675
|
+
}
|
|
2676
|
+
return optionMap.get(selected.value)?.label;
|
|
2677
|
+
}
|
|
2622
2678
|
},
|
|
2623
|
-
options.map((option) => /* @__PURE__ */ React19.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.label))
|
|
2679
|
+
options.map((option) => /* @__PURE__ */ React19.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ React19.createElement(ListItemContent2, { sx: { gap: 0.5 } }, /* @__PURE__ */ React19.createElement(Typography3, { level: "inherit" }, option.label), /* @__PURE__ */ React19.createElement(Typography3, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
|
|
2624
2680
|
);
|
|
2625
2681
|
return /* @__PURE__ */ React19.createElement(
|
|
2626
2682
|
FormControl_default,
|
|
@@ -5062,7 +5118,7 @@ CurrencyRange.displayName = "CurrencyRange";
|
|
|
5062
5118
|
|
|
5063
5119
|
// src/components/FilterMenu/components/PercentageInput.tsx
|
|
5064
5120
|
import React38 from "react";
|
|
5065
|
-
import { Stack as Stack8, Typography as
|
|
5121
|
+
import { Stack as Stack8, Typography as Typography4 } from "@mui/joy";
|
|
5066
5122
|
|
|
5067
5123
|
// src/components/PercentageInput/PercentageInput.tsx
|
|
5068
5124
|
import React37, { useCallback as useCallback20, useMemo as useMemo14, useState as useState12 } from "react";
|
|
@@ -5197,7 +5253,7 @@ var PercentageInput3 = ({
|
|
|
5197
5253
|
if (hidden) {
|
|
5198
5254
|
return null;
|
|
5199
5255
|
}
|
|
5200
|
-
return /* @__PURE__ */ React38.createElement(Stack8, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React38.createElement(
|
|
5256
|
+
return /* @__PURE__ */ React38.createElement(Stack8, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React38.createElement(Typography4, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React38.createElement(
|
|
5201
5257
|
PercentageInput,
|
|
5202
5258
|
{
|
|
5203
5259
|
value: _value,
|
|
@@ -7293,7 +7349,7 @@ export {
|
|
|
7293
7349
|
ListDivider2 as ListDivider,
|
|
7294
7350
|
ListItem,
|
|
7295
7351
|
ListItemButton2 as ListItemButton,
|
|
7296
|
-
ListItemContent,
|
|
7352
|
+
ListItemContent3 as ListItemContent,
|
|
7297
7353
|
ListItemDecorator2 as ListItemDecorator,
|
|
7298
7354
|
ListSubheader,
|
|
7299
7355
|
Markdown,
|