@ceed/ads 1.18.1-next.1 → 1.19.0-next.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/Autocomplete/Autocomplete.d.ts +1 -0
- package/dist/components/Select/Select.d.ts +1 -0
- package/dist/index.cjs +87 -33
- package/dist/index.js +74 -18
- package/framer/index.js +43 -43
- package/package.json +1 -1
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,34 @@ 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
|
+
};
|
|
440
446
|
var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
441
447
|
const {
|
|
442
448
|
anchorEl,
|
|
443
449
|
open,
|
|
444
450
|
modifiers,
|
|
445
451
|
children,
|
|
452
|
+
hasSecondaryText = false,
|
|
446
453
|
ownerState: { loading, size: fontSize },
|
|
447
454
|
...innerProps
|
|
448
455
|
} = props;
|
|
449
456
|
const parentRef = (0, import_react6.useRef)(null);
|
|
450
457
|
const isGrouped = children[0].every((child) => child.hasOwnProperty("group"));
|
|
451
|
-
const
|
|
458
|
+
const itemHeight = (0, import_react6.useMemo)(() => {
|
|
459
|
+
const heights = itemHeightMap[fontSize ?? "md"];
|
|
460
|
+
return hasSecondaryText ? heights.secondary : heights.default;
|
|
461
|
+
}, [fontSize, hasSecondaryText]);
|
|
462
|
+
const renderTargets = (0, import_react6.useMemo)(() => {
|
|
452
463
|
if (loading) {
|
|
453
464
|
return [children[1]];
|
|
454
465
|
}
|
|
@@ -462,10 +473,10 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
462
473
|
]);
|
|
463
474
|
}
|
|
464
475
|
return children[0];
|
|
465
|
-
})
|
|
476
|
+
}, [loading, children, isGrouped]);
|
|
466
477
|
const virtualizer = (0, import_react_virtual.useVirtualizer)({
|
|
467
478
|
count: renderTargets.length,
|
|
468
|
-
estimateSize: () =>
|
|
479
|
+
estimateSize: () => itemHeight,
|
|
469
480
|
getScrollElement: () => parentRef.current,
|
|
470
481
|
measureElement: (element) => element.clientHeight,
|
|
471
482
|
overscan: 5
|
|
@@ -476,7 +487,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
476
487
|
virtualizer.measure();
|
|
477
488
|
}
|
|
478
489
|
}, [open, virtualizer]);
|
|
479
|
-
return /* @__PURE__ */ import_react6.default.createElement(AutocompletePopper, { ref, anchorEl, open, modifiers }, /* @__PURE__ */ import_react6.default.createElement(import_joy10.AutocompleteListbox, { ...innerProps }, /* @__PURE__ */ import_react6.default.createElement("div", { ref: parentRef, style: { overflow: "auto" } }, /* @__PURE__ */ import_react6.default.createElement(
|
|
490
|
+
return /* @__PURE__ */ import_react6.default.createElement(AutocompletePopper, { ref, anchorEl, open, modifiers }, /* @__PURE__ */ import_react6.default.createElement(import_joy10.AutocompleteListbox, { ...innerProps, size: fontSize }, /* @__PURE__ */ import_react6.default.createElement("div", { ref: parentRef, style: { overflow: "auto" } }, /* @__PURE__ */ import_react6.default.createElement(
|
|
480
491
|
"div",
|
|
481
492
|
{
|
|
482
493
|
style: {
|
|
@@ -513,21 +524,32 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
513
524
|
)
|
|
514
525
|
))));
|
|
515
526
|
});
|
|
516
|
-
var
|
|
527
|
+
var autocompleteDeleteSize = {
|
|
517
528
|
sm: "20px",
|
|
518
529
|
md: "24px",
|
|
519
530
|
lg: "28px"
|
|
520
531
|
};
|
|
532
|
+
var secondaryTextLevelMap = {
|
|
533
|
+
sm: "body-xs",
|
|
534
|
+
md: "body-sm",
|
|
535
|
+
lg: "body-md"
|
|
536
|
+
};
|
|
521
537
|
var AutocompleteTagDelete = (0, import_joy10.styled)(IconButton_default, {
|
|
522
538
|
name: "Autocomplete",
|
|
523
539
|
slot: "tagDelete"
|
|
524
540
|
})(({ theme, size = "sm" }) => ({
|
|
525
|
-
width:
|
|
526
|
-
height:
|
|
527
|
-
minWidth:
|
|
528
|
-
minHeight:
|
|
541
|
+
width: autocompleteDeleteSize[size],
|
|
542
|
+
height: autocompleteDeleteSize[size],
|
|
543
|
+
minWidth: autocompleteDeleteSize[size],
|
|
544
|
+
minHeight: autocompleteDeleteSize[size],
|
|
529
545
|
borderRadius: "50%"
|
|
530
546
|
}));
|
|
547
|
+
var autocompleteFilterOptions = (0, import_base.createFilterOptions)({
|
|
548
|
+
stringify: (option) => {
|
|
549
|
+
return option.secondaryText ? `${option.label} ${option.secondaryText}` : option.label;
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
var getOptionLabel = (option) => `${option.label ?? ""}`;
|
|
531
553
|
function Autocomplete(props) {
|
|
532
554
|
const {
|
|
533
555
|
label,
|
|
@@ -603,6 +625,14 @@ function Autocomplete(props) {
|
|
|
603
625
|
() => applySize(value?.endDecorator || props.endDecorator),
|
|
604
626
|
[value, applySize, props.endDecorator]
|
|
605
627
|
);
|
|
628
|
+
const slotProps = (0, import_react6.useMemo)(
|
|
629
|
+
() => ({
|
|
630
|
+
listbox: {
|
|
631
|
+
hasSecondaryText: options.some((opt) => opt.secondaryText)
|
|
632
|
+
}
|
|
633
|
+
}),
|
|
634
|
+
[options]
|
|
635
|
+
);
|
|
606
636
|
const handleChange = (0, import_react6.useCallback)(
|
|
607
637
|
(event, value2) => {
|
|
608
638
|
const newValue = value2;
|
|
@@ -633,7 +663,7 @@ function Autocomplete(props) {
|
|
|
633
663
|
disabled,
|
|
634
664
|
startDecorator,
|
|
635
665
|
endDecorator,
|
|
636
|
-
getOptionLabel
|
|
666
|
+
getOptionLabel,
|
|
637
667
|
renderTags: (tags, getTagProps) => tags.map((tag, index) => {
|
|
638
668
|
const { onClick, ...rest } = getTagProps({ index });
|
|
639
669
|
return applySize(
|
|
@@ -645,6 +675,8 @@ function Autocomplete(props) {
|
|
|
645
675
|
slots: {
|
|
646
676
|
listbox: AutocompleteListBox
|
|
647
677
|
},
|
|
678
|
+
slotProps,
|
|
679
|
+
filterOptions: autocompleteFilterOptions,
|
|
648
680
|
renderOption: (props2, option) => /* @__PURE__ */ import_react6.default.createElement(import_joy10.AutocompleteOption, { ...props2 }, option.startDecorator && /* @__PURE__ */ import_react6.default.createElement(
|
|
649
681
|
import_joy10.ListItemDecorator,
|
|
650
682
|
{
|
|
@@ -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,28 @@ 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
|
+
};
|
|
342
350
|
var AutocompleteListBox = React5.forwardRef((props, ref) => {
|
|
343
351
|
const {
|
|
344
352
|
anchorEl,
|
|
345
353
|
open,
|
|
346
354
|
modifiers,
|
|
347
355
|
children,
|
|
356
|
+
hasSecondaryText = false,
|
|
348
357
|
ownerState: { loading, size: fontSize },
|
|
349
358
|
...innerProps
|
|
350
359
|
} = props;
|
|
351
360
|
const parentRef = useRef2(null);
|
|
352
361
|
const isGrouped = children[0].every((child) => child.hasOwnProperty("group"));
|
|
353
|
-
const
|
|
362
|
+
const itemHeight = useMemo(() => {
|
|
363
|
+
const heights = itemHeightMap[fontSize ?? "md"];
|
|
364
|
+
return hasSecondaryText ? heights.secondary : heights.default;
|
|
365
|
+
}, [fontSize, hasSecondaryText]);
|
|
366
|
+
const renderTargets = useMemo(() => {
|
|
354
367
|
if (loading) {
|
|
355
368
|
return [children[1]];
|
|
356
369
|
}
|
|
@@ -364,10 +377,10 @@ var AutocompleteListBox = React5.forwardRef((props, ref) => {
|
|
|
364
377
|
]);
|
|
365
378
|
}
|
|
366
379
|
return children[0];
|
|
367
|
-
})
|
|
380
|
+
}, [loading, children, isGrouped]);
|
|
368
381
|
const virtualizer = useVirtualizer({
|
|
369
382
|
count: renderTargets.length,
|
|
370
|
-
estimateSize: () =>
|
|
383
|
+
estimateSize: () => itemHeight,
|
|
371
384
|
getScrollElement: () => parentRef.current,
|
|
372
385
|
measureElement: (element) => element.clientHeight,
|
|
373
386
|
overscan: 5
|
|
@@ -378,7 +391,7 @@ var AutocompleteListBox = React5.forwardRef((props, ref) => {
|
|
|
378
391
|
virtualizer.measure();
|
|
379
392
|
}
|
|
380
393
|
}, [open, virtualizer]);
|
|
381
|
-
return /* @__PURE__ */ React5.createElement(AutocompletePopper, { ref, anchorEl, open, modifiers }, /* @__PURE__ */ React5.createElement(JoyAutocompleteListbox, { ...innerProps }, /* @__PURE__ */ React5.createElement("div", { ref: parentRef, style: { overflow: "auto" } }, /* @__PURE__ */ React5.createElement(
|
|
394
|
+
return /* @__PURE__ */ React5.createElement(AutocompletePopper, { ref, anchorEl, open, modifiers }, /* @__PURE__ */ React5.createElement(JoyAutocompleteListbox, { ...innerProps, size: fontSize }, /* @__PURE__ */ React5.createElement("div", { ref: parentRef, style: { overflow: "auto" } }, /* @__PURE__ */ React5.createElement(
|
|
382
395
|
"div",
|
|
383
396
|
{
|
|
384
397
|
style: {
|
|
@@ -415,21 +428,32 @@ var AutocompleteListBox = React5.forwardRef((props, ref) => {
|
|
|
415
428
|
)
|
|
416
429
|
))));
|
|
417
430
|
});
|
|
418
|
-
var
|
|
431
|
+
var autocompleteDeleteSize = {
|
|
419
432
|
sm: "20px",
|
|
420
433
|
md: "24px",
|
|
421
434
|
lg: "28px"
|
|
422
435
|
};
|
|
436
|
+
var secondaryTextLevelMap = {
|
|
437
|
+
sm: "body-xs",
|
|
438
|
+
md: "body-sm",
|
|
439
|
+
lg: "body-md"
|
|
440
|
+
};
|
|
423
441
|
var AutocompleteTagDelete = styled3(IconButton_default, {
|
|
424
442
|
name: "Autocomplete",
|
|
425
443
|
slot: "tagDelete"
|
|
426
444
|
})(({ theme, size = "sm" }) => ({
|
|
427
|
-
width:
|
|
428
|
-
height:
|
|
429
|
-
minWidth:
|
|
430
|
-
minHeight:
|
|
445
|
+
width: autocompleteDeleteSize[size],
|
|
446
|
+
height: autocompleteDeleteSize[size],
|
|
447
|
+
minWidth: autocompleteDeleteSize[size],
|
|
448
|
+
minHeight: autocompleteDeleteSize[size],
|
|
431
449
|
borderRadius: "50%"
|
|
432
450
|
}));
|
|
451
|
+
var autocompleteFilterOptions = createFilterOptions({
|
|
452
|
+
stringify: (option) => {
|
|
453
|
+
return option.secondaryText ? `${option.label} ${option.secondaryText}` : option.label;
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
var getOptionLabel = (option) => `${option.label ?? ""}`;
|
|
433
457
|
function Autocomplete(props) {
|
|
434
458
|
const {
|
|
435
459
|
label,
|
|
@@ -505,6 +529,14 @@ function Autocomplete(props) {
|
|
|
505
529
|
() => applySize(value?.endDecorator || props.endDecorator),
|
|
506
530
|
[value, applySize, props.endDecorator]
|
|
507
531
|
);
|
|
532
|
+
const slotProps = useMemo(
|
|
533
|
+
() => ({
|
|
534
|
+
listbox: {
|
|
535
|
+
hasSecondaryText: options.some((opt) => opt.secondaryText)
|
|
536
|
+
}
|
|
537
|
+
}),
|
|
538
|
+
[options]
|
|
539
|
+
);
|
|
508
540
|
const handleChange = useCallback2(
|
|
509
541
|
(event, value2) => {
|
|
510
542
|
const newValue = value2;
|
|
@@ -535,7 +567,7 @@ function Autocomplete(props) {
|
|
|
535
567
|
disabled,
|
|
536
568
|
startDecorator,
|
|
537
569
|
endDecorator,
|
|
538
|
-
getOptionLabel
|
|
570
|
+
getOptionLabel,
|
|
539
571
|
renderTags: (tags, getTagProps) => tags.map((tag, index) => {
|
|
540
572
|
const { onClick, ...rest } = getTagProps({ index });
|
|
541
573
|
return applySize(
|
|
@@ -547,6 +579,8 @@ function Autocomplete(props) {
|
|
|
547
579
|
slots: {
|
|
548
580
|
listbox: AutocompleteListBox
|
|
549
581
|
},
|
|
582
|
+
slotProps,
|
|
583
|
+
filterOptions: autocompleteFilterOptions,
|
|
550
584
|
renderOption: (props2, option) => /* @__PURE__ */ React5.createElement(JoyAutocompleteOption, { ...props2 }, option.startDecorator && /* @__PURE__ */ React5.createElement(
|
|
551
585
|
ListItemDecorator,
|
|
552
586
|
{
|
|
@@ -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,
|