@ceed/cds 1.40.3 → 1.40.4
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 +4 -4
- package/dist/components/Autocomplete/index.d.ts +2 -1
- package/dist/components/DataTable/hooks.d.ts +3 -5
- package/dist/components/DataTable/types.d.ts +1 -0
- package/dist/components/DataTable/utils.d.ts +11 -0
- package/dist/components/IconMenuButton/IconMenuButton.d.ts +9 -8
- package/dist/components/IconMenuButton/IconMenuButton.type-test.d.ts +5 -0
- package/dist/components/IconMenuButton/index.d.ts +2 -1
- package/dist/components/Modal/Modal.d.ts +1 -4
- package/dist/components/Select/Select.d.ts +7 -4
- package/dist/components/Select/index.d.ts +2 -1
- package/dist/components/Textarea/Textarea.d.ts +1 -4
- package/dist/components/Textarea/index.d.ts +2 -1
- package/dist/components/data-display/DataTable.md +25 -23
- package/dist/components/inputs/Calendar.md +17 -17
- package/dist/components/navigation/IconMenuButton.md +17 -12
- package/dist/index.browser.js +6 -6
- package/dist/index.browser.js.map +4 -4
- package/dist/index.cjs +715 -633
- package/dist/index.js +344 -262
- package/dist/libs/slot-props.d.ts +22 -0
- package/framer/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -344,7 +344,7 @@ function Alert(inProps) {
|
|
|
344
344
|
Alert.displayName = "Alert";
|
|
345
345
|
|
|
346
346
|
// src/components/Autocomplete/Autocomplete.tsx
|
|
347
|
-
var
|
|
347
|
+
var import_react7 = __toESM(require("react"));
|
|
348
348
|
var import_joy10 = require("@mui/joy");
|
|
349
349
|
var import_base = require("@mui/base");
|
|
350
350
|
var import_Close = __toESM(require("@mui/icons-material/Close"));
|
|
@@ -441,6 +441,46 @@ function useControlledState(controlledValue, defaultValue, onChange) {
|
|
|
441
441
|
return [displayValue, handleChange, isControlled];
|
|
442
442
|
}
|
|
443
443
|
|
|
444
|
+
// src/libs/slot-props.ts
|
|
445
|
+
var import_react6 = require("react");
|
|
446
|
+
function assignRef(ref, value) {
|
|
447
|
+
if (typeof ref === "function") ref(value);
|
|
448
|
+
else if (ref) ref.current = value;
|
|
449
|
+
}
|
|
450
|
+
function mergeRefs(...refs) {
|
|
451
|
+
const live = refs.filter((r) => r != null);
|
|
452
|
+
if (live.length === 0) return void 0;
|
|
453
|
+
if (live.length === 1) return live[0];
|
|
454
|
+
return (value) => live.forEach((r) => assignRef(r, value));
|
|
455
|
+
}
|
|
456
|
+
function useMergedRef(a, b) {
|
|
457
|
+
return (0, import_react6.useMemo)(() => mergeRefs(a, b), [a, b]);
|
|
458
|
+
}
|
|
459
|
+
function useSlotRef(slotProp, ref) {
|
|
460
|
+
const isFunctionForm = typeof slotProp === "function";
|
|
461
|
+
const slotRef = isFunctionForm ? void 0 : slotProp?.ref;
|
|
462
|
+
const mergedRef = useMergedRef(slotRef, ref);
|
|
463
|
+
const latestSlotRef = (0, import_react6.useRef)(null);
|
|
464
|
+
const stableMergedRef = (0, import_react6.useCallback)(
|
|
465
|
+
(value) => {
|
|
466
|
+
assignRef(latestSlotRef.current, value);
|
|
467
|
+
assignRef(ref, value);
|
|
468
|
+
},
|
|
469
|
+
[ref]
|
|
470
|
+
);
|
|
471
|
+
return (0, import_react6.useMemo)(() => {
|
|
472
|
+
if (isFunctionForm) {
|
|
473
|
+
return ((ownerState) => {
|
|
474
|
+
const resolved = slotProp(ownerState) ?? {};
|
|
475
|
+
const resolvedRef = resolved.ref;
|
|
476
|
+
latestSlotRef.current = resolvedRef ?? null;
|
|
477
|
+
return resolvedRef || ref ? { ...resolved, ref: stableMergedRef } : { ...resolved };
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
return mergedRef ? { ...slotProp, ref: mergedRef } : { ...slotProp };
|
|
481
|
+
}, [isFunctionForm, slotProp, mergedRef, ref, stableMergedRef]);
|
|
482
|
+
}
|
|
483
|
+
|
|
444
484
|
// src/components/Autocomplete/Autocomplete.tsx
|
|
445
485
|
var AutocompletePopper = (0, import_joy10.styled)(import_base2.Popper, {
|
|
446
486
|
name: "Autocomplete",
|
|
@@ -453,7 +493,7 @@ var itemHeightMap = {
|
|
|
453
493
|
md: { default: 36, secondary: 55 },
|
|
454
494
|
lg: { default: 44, secondary: 65 }
|
|
455
495
|
};
|
|
456
|
-
var AutocompleteListBox =
|
|
496
|
+
var AutocompleteListBox = import_react7.default.forwardRef((props, ref) => {
|
|
457
497
|
const {
|
|
458
498
|
anchorEl,
|
|
459
499
|
open,
|
|
@@ -463,13 +503,13 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
463
503
|
ownerState: { loading, size: fontSize = "md" },
|
|
464
504
|
...innerProps
|
|
465
505
|
} = props;
|
|
466
|
-
const parentRef = (0,
|
|
506
|
+
const parentRef = (0, import_react7.useRef)(null);
|
|
467
507
|
const isGrouped = children[0].every((child) => child.hasOwnProperty("group"));
|
|
468
|
-
const itemHeight = (0,
|
|
508
|
+
const itemHeight = (0, import_react7.useMemo)(() => {
|
|
469
509
|
const heights = itemHeightMap[fontSize ?? "md"];
|
|
470
510
|
return hasSecondaryText ? heights.secondary : heights.default;
|
|
471
511
|
}, [fontSize, hasSecondaryText]);
|
|
472
|
-
const renderTargets = (0,
|
|
512
|
+
const renderTargets = (0, import_react7.useMemo)(() => {
|
|
473
513
|
if (loading) {
|
|
474
514
|
return [children[1]];
|
|
475
515
|
}
|
|
@@ -478,7 +518,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
478
518
|
}
|
|
479
519
|
if (isGrouped) {
|
|
480
520
|
return children[0].flatMap((child) => [
|
|
481
|
-
/* @__PURE__ */
|
|
521
|
+
/* @__PURE__ */ import_react7.default.createElement(import_joy10.ListSubheader, { key: child.key, component: "li" }, child.group),
|
|
482
522
|
...child.children
|
|
483
523
|
]);
|
|
484
524
|
}
|
|
@@ -492,12 +532,12 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
492
532
|
overscan: 5
|
|
493
533
|
});
|
|
494
534
|
const items = virtualizer.getVirtualItems();
|
|
495
|
-
(0,
|
|
535
|
+
(0, import_react7.useEffect)(() => {
|
|
496
536
|
if (open) {
|
|
497
537
|
virtualizer.measure();
|
|
498
538
|
}
|
|
499
539
|
}, [open, virtualizer]);
|
|
500
|
-
return /* @__PURE__ */
|
|
540
|
+
return /* @__PURE__ */ import_react7.default.createElement(AutocompletePopper, { ref, anchorEl, open, modifiers }, /* @__PURE__ */ import_react7.default.createElement(import_joy10.AutocompleteListbox, { ...innerProps, size: fontSize }, /* @__PURE__ */ import_react7.default.createElement("div", { ref: parentRef, style: { overflow: "auto" } }, /* @__PURE__ */ import_react7.default.createElement(
|
|
501
541
|
"div",
|
|
502
542
|
{
|
|
503
543
|
style: {
|
|
@@ -506,7 +546,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
506
546
|
}
|
|
507
547
|
},
|
|
508
548
|
items.map(
|
|
509
|
-
({ index, size, start, key }) =>
|
|
549
|
+
({ index, size, start, key }) => import_react7.default.cloneElement(renderTargets[index], {
|
|
510
550
|
key,
|
|
511
551
|
style: {
|
|
512
552
|
position: "absolute",
|
|
@@ -518,7 +558,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
518
558
|
transform: `translateY(${start}px)`,
|
|
519
559
|
overflow: "visible"
|
|
520
560
|
},
|
|
521
|
-
children: /* @__PURE__ */
|
|
561
|
+
children: /* @__PURE__ */ import_react7.default.createElement(
|
|
522
562
|
"div",
|
|
523
563
|
{
|
|
524
564
|
style: {
|
|
@@ -561,7 +601,7 @@ var autocompleteFilterOptions = (0, import_base.createFilterOptions)({
|
|
|
561
601
|
}
|
|
562
602
|
});
|
|
563
603
|
var getOptionLabel = (option) => `${option.label ?? ""}`;
|
|
564
|
-
function
|
|
604
|
+
function AutocompleteInner(props, ref) {
|
|
565
605
|
const {
|
|
566
606
|
label,
|
|
567
607
|
error,
|
|
@@ -580,7 +620,7 @@ function Autocomplete(props) {
|
|
|
580
620
|
const [rawValue, setValue] = useControlledState(
|
|
581
621
|
props.value,
|
|
582
622
|
props.defaultValue ?? null,
|
|
583
|
-
(0,
|
|
623
|
+
(0, import_react7.useCallback)(
|
|
584
624
|
(value2) => onChange?.({
|
|
585
625
|
target: {
|
|
586
626
|
value: value2,
|
|
@@ -591,7 +631,7 @@ function Autocomplete(props) {
|
|
|
591
631
|
)
|
|
592
632
|
);
|
|
593
633
|
const _value = rawValue ?? (props.multiple ? EMPTY_MULTIPLE_VALUE : "");
|
|
594
|
-
const options = (0,
|
|
634
|
+
const options = (0, import_react7.useMemo)(
|
|
595
635
|
() => props.options.map((option) => {
|
|
596
636
|
if (typeof option !== "object") {
|
|
597
637
|
return {
|
|
@@ -603,19 +643,19 @@ function Autocomplete(props) {
|
|
|
603
643
|
}),
|
|
604
644
|
[props.options]
|
|
605
645
|
);
|
|
606
|
-
const optionMap = (0,
|
|
646
|
+
const optionMap = (0, import_react7.useMemo)(() => {
|
|
607
647
|
const map = /* @__PURE__ */ new Map();
|
|
608
648
|
options.forEach((option) => {
|
|
609
649
|
map.set(option.value, option);
|
|
610
650
|
});
|
|
611
651
|
return map;
|
|
612
652
|
}, [options]);
|
|
613
|
-
const value = (0,
|
|
653
|
+
const value = (0, import_react7.useMemo)(() => {
|
|
614
654
|
if (props.loading) {
|
|
615
655
|
return {
|
|
616
656
|
value: "",
|
|
617
657
|
label: "",
|
|
618
|
-
startDecorator: /* @__PURE__ */
|
|
658
|
+
startDecorator: /* @__PURE__ */ import_react7.default.createElement(import_joy10.CircularProgress, { size: "sm", color: "neutral", variant: "plain", thickness: 3 })
|
|
619
659
|
};
|
|
620
660
|
}
|
|
621
661
|
if (Array.isArray(_value)) {
|
|
@@ -623,31 +663,33 @@ function Autocomplete(props) {
|
|
|
623
663
|
}
|
|
624
664
|
return optionMap.get(_value);
|
|
625
665
|
}, [_value, optionMap, props.loading]);
|
|
626
|
-
const applySize = (0,
|
|
666
|
+
const applySize = (0, import_react7.useCallback)(
|
|
627
667
|
(node) => {
|
|
628
|
-
return
|
|
668
|
+
return import_react7.default.isValidElement(node) && !props.loading ? import_react7.default.cloneElement(node, { ...{ size } }) : node;
|
|
629
669
|
},
|
|
630
670
|
[size, props.loading]
|
|
631
671
|
);
|
|
632
|
-
const startDecorator = (0,
|
|
672
|
+
const startDecorator = (0, import_react7.useMemo)(
|
|
633
673
|
() => applySize(value?.startDecorator || props.startDecorator),
|
|
634
674
|
[value, applySize, props.startDecorator]
|
|
635
675
|
);
|
|
636
|
-
const endDecorator = (0,
|
|
676
|
+
const endDecorator = (0, import_react7.useMemo)(
|
|
637
677
|
() => applySize(value?.endDecorator || props.endDecorator),
|
|
638
678
|
[value, applySize, props.endDecorator]
|
|
639
679
|
);
|
|
640
|
-
const
|
|
680
|
+
const inputSlotProps = useSlotRef(props.slotProps?.input, ref);
|
|
681
|
+
const slotProps = (0, import_react7.useMemo)(
|
|
641
682
|
() => ({
|
|
642
683
|
...props.slotProps,
|
|
643
684
|
listbox: {
|
|
644
685
|
...props.slotProps?.listbox,
|
|
645
686
|
hasSecondaryText: options.some((opt) => opt.secondaryText)
|
|
646
|
-
}
|
|
687
|
+
},
|
|
688
|
+
input: inputSlotProps
|
|
647
689
|
}),
|
|
648
|
-
[options, props.slotProps]
|
|
690
|
+
[options, props.slotProps, inputSlotProps]
|
|
649
691
|
);
|
|
650
|
-
const handleChange = (0,
|
|
692
|
+
const handleChange = (0, import_react7.useCallback)(
|
|
651
693
|
(event, value2) => {
|
|
652
694
|
const newValue = value2;
|
|
653
695
|
const _value2 = Array.isArray(newValue) ? newValue.map((value3) => value3.value) : newValue?.value;
|
|
@@ -664,7 +706,7 @@ function Autocomplete(props) {
|
|
|
664
706
|
},
|
|
665
707
|
[onChangeComplete, setValue, optionMap]
|
|
666
708
|
);
|
|
667
|
-
const autocomplete = /* @__PURE__ */
|
|
709
|
+
const autocomplete = /* @__PURE__ */ import_react7.default.createElement(
|
|
668
710
|
import_joy10.Autocomplete,
|
|
669
711
|
{
|
|
670
712
|
...innerProps,
|
|
@@ -679,10 +721,10 @@ function Autocomplete(props) {
|
|
|
679
721
|
endDecorator,
|
|
680
722
|
getOptionLabel,
|
|
681
723
|
renderTags: (tags, getTagProps) => tags.map((tag, index) => {
|
|
682
|
-
const { onClick, ...rest } = getTagProps({ index });
|
|
724
|
+
const { onClick, key, ...rest } = getTagProps({ index });
|
|
683
725
|
return applySize(
|
|
684
|
-
/* @__PURE__ */
|
|
685
|
-
/* @__PURE__ */
|
|
726
|
+
/* @__PURE__ */ import_react7.default.createElement(Chip_default, { key, color: "primary", ...rest }, /* @__PURE__ */ import_react7.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2, py: 0.5 }, tag.value, applySize(
|
|
727
|
+
/* @__PURE__ */ import_react7.default.createElement(AutocompleteTagDelete, { color: "primary", variant: "soft", onClick }, /* @__PURE__ */ import_react7.default.createElement(import_Close.default, null))
|
|
686
728
|
)))
|
|
687
729
|
);
|
|
688
730
|
}),
|
|
@@ -691,30 +733,33 @@ function Autocomplete(props) {
|
|
|
691
733
|
},
|
|
692
734
|
slotProps,
|
|
693
735
|
filterOptions: autocompleteFilterOptions,
|
|
694
|
-
renderOption: (props2, option) =>
|
|
695
|
-
|
|
696
|
-
{
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
applySize(option.label)
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
736
|
+
renderOption: (props2, option) => {
|
|
737
|
+
const { key, ...optionProps } = props2;
|
|
738
|
+
return /* @__PURE__ */ import_react7.default.createElement(import_joy10.AutocompleteOption, { key, ...optionProps }, option.startDecorator && /* @__PURE__ */ import_react7.default.createElement(
|
|
739
|
+
import_joy10.ListItemDecorator,
|
|
740
|
+
{
|
|
741
|
+
sx: (theme) => ({
|
|
742
|
+
marginInlineEnd: `var(--Input-gap, ${theme.spacing(1)})`
|
|
743
|
+
})
|
|
744
|
+
},
|
|
745
|
+
applySize(option.startDecorator)
|
|
746
|
+
), option.secondaryText ? /* @__PURE__ */ import_react7.default.createElement(import_joy10.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react7.default.createElement(import_joy10.Typography, { level: "inherit" }, applySize(option.label)), /* @__PURE__ */ import_react7.default.createElement(import_joy10.Typography, { level: secondaryTextLevelMap[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : (
|
|
747
|
+
// TODO: haulla에서 사용할 때, label을 ReactNode로 넘기면 에러가 발생함....
|
|
748
|
+
applySize(option.label)
|
|
749
|
+
), option.endDecorator && /* @__PURE__ */ import_react7.default.createElement(
|
|
750
|
+
import_joy10.ListItemDecorator,
|
|
751
|
+
{
|
|
752
|
+
sx: (theme) => ({
|
|
753
|
+
marginInlineStart: `var(--Input-gap, ${theme.spacing(1)})`
|
|
754
|
+
})
|
|
755
|
+
},
|
|
756
|
+
applySize(option.endDecorator)
|
|
757
|
+
));
|
|
758
|
+
},
|
|
714
759
|
renderGroup: (params) => params
|
|
715
760
|
}
|
|
716
761
|
);
|
|
717
|
-
return /* @__PURE__ */
|
|
762
|
+
return /* @__PURE__ */ import_react7.default.createElement(
|
|
718
763
|
FormControl_default,
|
|
719
764
|
{
|
|
720
765
|
required,
|
|
@@ -725,18 +770,19 @@ function Autocomplete(props) {
|
|
|
725
770
|
sx,
|
|
726
771
|
className
|
|
727
772
|
},
|
|
728
|
-
label && /* @__PURE__ */
|
|
773
|
+
label && /* @__PURE__ */ import_react7.default.createElement(FormLabel_default, null, label),
|
|
729
774
|
autocomplete,
|
|
730
|
-
helperText && /* @__PURE__ */
|
|
775
|
+
helperText && /* @__PURE__ */ import_react7.default.createElement(FormHelperText_default, null, helperText)
|
|
731
776
|
);
|
|
732
777
|
}
|
|
778
|
+
var Autocomplete = import_react7.default.forwardRef(AutocompleteInner);
|
|
733
779
|
Autocomplete.displayName = "Autocomplete";
|
|
734
780
|
|
|
735
781
|
// src/components/Autocomplete/index.ts
|
|
736
782
|
var Autocomplete_default = Autocomplete;
|
|
737
783
|
|
|
738
784
|
// src/components/Avatar/Avatar.tsx
|
|
739
|
-
var
|
|
785
|
+
var import_react8 = __toESM(require("react"));
|
|
740
786
|
var import_joy11 = require("@mui/joy");
|
|
741
787
|
var StyledAvatar = (0, import_joy11.styled)(import_joy11.Avatar, {
|
|
742
788
|
name: "Avatar",
|
|
@@ -758,19 +804,19 @@ var defaultGetInitial = (name) => {
|
|
|
758
804
|
return (firstName.charAt(0) + lastName.charAt(0)).toUpperCase();
|
|
759
805
|
}
|
|
760
806
|
};
|
|
761
|
-
var Avatar = (0,
|
|
807
|
+
var Avatar = (0, import_react8.forwardRef)(function Avatar2(inProps, ref) {
|
|
762
808
|
const props = (0, import_joy11.useThemeProps)({
|
|
763
809
|
props: inProps,
|
|
764
810
|
name: "Avatar"
|
|
765
811
|
});
|
|
766
812
|
const { children, getInitial = defaultGetInitial, ...inheritProps } = props;
|
|
767
|
-
const calcChildren = (0,
|
|
813
|
+
const calcChildren = (0, import_react8.useMemo)(() => {
|
|
768
814
|
if (typeof children === "string") {
|
|
769
815
|
return getInitial?.(children) ?? "";
|
|
770
816
|
}
|
|
771
817
|
return children;
|
|
772
818
|
}, [children, getInitial]);
|
|
773
|
-
return /* @__PURE__ */
|
|
819
|
+
return /* @__PURE__ */ import_react8.default.createElement(StyledAvatar, { ...inheritProps, children: calcChildren, ref });
|
|
774
820
|
});
|
|
775
821
|
|
|
776
822
|
// src/components/Box/Box.tsx
|
|
@@ -784,16 +830,16 @@ Box.displayName = "Box";
|
|
|
784
830
|
var Box_default = Box;
|
|
785
831
|
|
|
786
832
|
// src/components/Breadcrumbs/Breadcrumbs.tsx
|
|
787
|
-
var
|
|
833
|
+
var import_react11 = __toESM(require("react"));
|
|
788
834
|
var import_joy16 = require("@mui/joy");
|
|
789
835
|
|
|
790
836
|
// src/components/Menu/Menu.tsx
|
|
791
|
-
var
|
|
837
|
+
var import_react9 = __toESM(require("react"));
|
|
792
838
|
var import_joy13 = require("@mui/joy");
|
|
793
839
|
var import_framer_motion10 = require("framer-motion");
|
|
794
840
|
var MotionMenu = (0, import_framer_motion10.motion)(import_joy13.Menu);
|
|
795
841
|
var Menu = (props) => {
|
|
796
|
-
return /* @__PURE__ */
|
|
842
|
+
return /* @__PURE__ */ import_react9.default.createElement(MotionMenu, { ...props });
|
|
797
843
|
};
|
|
798
844
|
Menu.displayName = "Menu";
|
|
799
845
|
var MenuItem = import_joy13.MenuItem;
|
|
@@ -802,22 +848,22 @@ var MenuItem = import_joy13.MenuItem;
|
|
|
802
848
|
var Menu_default = Menu;
|
|
803
849
|
|
|
804
850
|
// src/components/Dropdown/Dropdown.tsx
|
|
805
|
-
var
|
|
851
|
+
var import_react10 = __toESM(require("react"));
|
|
806
852
|
var import_joy14 = require("@mui/joy");
|
|
807
853
|
var import_joy15 = require("@mui/joy");
|
|
808
854
|
var import_useMenuButton = require("@mui/base/useMenuButton");
|
|
809
|
-
var DropdownNestedRegistryContext = (0,
|
|
855
|
+
var DropdownNestedRegistryContext = (0, import_react10.createContext)(null);
|
|
810
856
|
function Dropdown({ open: openProp, defaultOpen = false, onOpenChange, ...rest }) {
|
|
811
|
-
const [nestedCount, setNestedCount] = (0,
|
|
857
|
+
const [nestedCount, setNestedCount] = (0, import_react10.useState)(0);
|
|
812
858
|
const [open, setOpen] = useControlledState(openProp, defaultOpen);
|
|
813
|
-
const registry = (0,
|
|
859
|
+
const registry = (0, import_react10.useMemo)(
|
|
814
860
|
() => ({
|
|
815
861
|
register: () => setNestedCount((c) => c + 1),
|
|
816
862
|
unregister: () => setNestedCount((c) => Math.max(0, c - 1))
|
|
817
863
|
}),
|
|
818
864
|
[]
|
|
819
865
|
);
|
|
820
|
-
const handleOpenChange = (0,
|
|
866
|
+
const handleOpenChange = (0, import_react10.useCallback)(
|
|
821
867
|
(event, isOpen) => {
|
|
822
868
|
if (nestedCount > 0 && !isOpen && event?.type === "blur") {
|
|
823
869
|
return;
|
|
@@ -827,7 +873,7 @@ function Dropdown({ open: openProp, defaultOpen = false, onOpenChange, ...rest }
|
|
|
827
873
|
},
|
|
828
874
|
[nestedCount, setOpen, onOpenChange]
|
|
829
875
|
);
|
|
830
|
-
return /* @__PURE__ */
|
|
876
|
+
return /* @__PURE__ */ import_react10.default.createElement(DropdownNestedRegistryContext.Provider, { value: registry }, /* @__PURE__ */ import_react10.default.createElement(import_joy14.Dropdown, { open, onOpenChange: handleOpenChange, ...rest }));
|
|
831
877
|
}
|
|
832
878
|
Dropdown.displayName = "Dropdown";
|
|
833
879
|
|
|
@@ -850,29 +896,29 @@ function Breadcrumbs(props) {
|
|
|
850
896
|
} = props;
|
|
851
897
|
const Crumb = (props2) => {
|
|
852
898
|
if (props2.type === "link" && Link4) {
|
|
853
|
-
return /* @__PURE__ */
|
|
899
|
+
return /* @__PURE__ */ import_react11.default.createElement(Link4, { to: props2.linkHref, href: props2.linkHref, ...linkProps }, props2.label);
|
|
854
900
|
} else {
|
|
855
|
-
return /* @__PURE__ */
|
|
901
|
+
return /* @__PURE__ */ import_react11.default.createElement(Typography_default, null, props2.label);
|
|
856
902
|
}
|
|
857
903
|
};
|
|
858
904
|
if (!collapsed) {
|
|
859
|
-
return /* @__PURE__ */
|
|
905
|
+
return /* @__PURE__ */ import_react11.default.createElement(import_joy16.Breadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, crumbs.map((crumb, index) => /* @__PURE__ */ import_react11.default.createElement(Crumb, { key: `breadcrumb-${index}`, ...crumb })));
|
|
860
906
|
}
|
|
861
907
|
const _endCrumbCount = Math.max(1, endCrumbCount);
|
|
862
|
-
const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */
|
|
863
|
-
const backCrumbs = (startCrumbCount + _endCrumbCount > crumbs.length ? crumbs.slice(startCrumbCount) : crumbs.slice(-_endCrumbCount)).map((crumb) => /* @__PURE__ */
|
|
864
|
-
const collapsedCrumbs = crumbs.slice(startCrumbCount, -_endCrumbCount).map((crumb) => /* @__PURE__ */
|
|
865
|
-
return /* @__PURE__ */
|
|
908
|
+
const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */ import_react11.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
|
|
909
|
+
const backCrumbs = (startCrumbCount + _endCrumbCount > crumbs.length ? crumbs.slice(startCrumbCount) : crumbs.slice(-_endCrumbCount)).map((crumb) => /* @__PURE__ */ import_react11.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
|
|
910
|
+
const collapsedCrumbs = crumbs.slice(startCrumbCount, -_endCrumbCount).map((crumb) => /* @__PURE__ */ import_react11.default.createElement(MenuItem, { key: `breadcrumb-${crumb.label}` }, /* @__PURE__ */ import_react11.default.createElement(Crumb, { ...crumb })));
|
|
911
|
+
return /* @__PURE__ */ import_react11.default.createElement(import_joy16.Breadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, frontCrumbs, collapsedCrumbs.length && /* @__PURE__ */ import_react11.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react11.default.createElement(import_joy16.MenuButton, { size, variant: "plain" }, "..."), /* @__PURE__ */ import_react11.default.createElement(Menu_default, { size }, collapsedCrumbs)), backCrumbs);
|
|
866
912
|
}
|
|
867
913
|
Breadcrumbs.displayName = "Breadcrumbs";
|
|
868
914
|
|
|
869
915
|
// src/components/Button/Button.tsx
|
|
870
|
-
var
|
|
916
|
+
var import_react12 = __toESM(require("react"));
|
|
871
917
|
var import_joy17 = require("@mui/joy");
|
|
872
918
|
var import_framer_motion11 = require("framer-motion");
|
|
873
919
|
var MotionButton = (0, import_framer_motion11.motion)(import_joy17.Button);
|
|
874
|
-
var Button = (0,
|
|
875
|
-
return /* @__PURE__ */
|
|
920
|
+
var Button = (0, import_react12.forwardRef)(({ ...props }, ref) => {
|
|
921
|
+
return /* @__PURE__ */ import_react12.default.createElement(MotionButton, { ref, ...props });
|
|
876
922
|
});
|
|
877
923
|
Button.displayName = "Button";
|
|
878
924
|
|
|
@@ -880,19 +926,19 @@ Button.displayName = "Button";
|
|
|
880
926
|
var Button_default = Button;
|
|
881
927
|
|
|
882
928
|
// src/components/Calendar/Calendar.tsx
|
|
883
|
-
var
|
|
929
|
+
var import_react16 = __toESM(require("react"));
|
|
884
930
|
var import_joy20 = require("@mui/joy");
|
|
885
931
|
var import_ChevronLeft = __toESM(require("@mui/icons-material/ChevronLeft"));
|
|
886
932
|
var import_ChevronRight = __toESM(require("@mui/icons-material/ChevronRight"));
|
|
887
933
|
var import_framer_motion13 = require("framer-motion");
|
|
888
934
|
|
|
889
935
|
// src/components/Tooltip/Tooltip.tsx
|
|
890
|
-
var
|
|
936
|
+
var import_react13 = __toESM(require("react"));
|
|
891
937
|
var import_joy18 = require("@mui/joy");
|
|
892
938
|
var import_framer_motion12 = require("framer-motion");
|
|
893
939
|
var MotionTooltip = (0, import_framer_motion12.motion)(import_joy18.Tooltip);
|
|
894
940
|
var Tooltip = (props) => {
|
|
895
|
-
return /* @__PURE__ */
|
|
941
|
+
return /* @__PURE__ */ import_react13.default.createElement(MotionTooltip, { ...props });
|
|
896
942
|
};
|
|
897
943
|
Tooltip.displayName = "Tooltip";
|
|
898
944
|
|
|
@@ -974,43 +1020,43 @@ var isSameMonth = (date1, date2) => {
|
|
|
974
1020
|
};
|
|
975
1021
|
|
|
976
1022
|
// src/components/Calendar/hooks/use-calendar-props.ts
|
|
977
|
-
var
|
|
1023
|
+
var import_react14 = require("react");
|
|
978
1024
|
var import_joy19 = require("@mui/joy");
|
|
979
1025
|
var resolveView = (view, views) => {
|
|
980
1026
|
return views.includes(view) ? view : views[0];
|
|
981
1027
|
};
|
|
982
1028
|
var useCalendarProps = (inProps) => {
|
|
983
|
-
const [uncontrolledView, setUncontrolledView] = (0,
|
|
1029
|
+
const [uncontrolledView, setUncontrolledView] = (0, import_react14.useState)(
|
|
984
1030
|
() => resolveView(inProps.view || "day", inProps.views || ["day", "month"])
|
|
985
1031
|
);
|
|
986
|
-
const [uncontrolledValue, setUncontrolledValue] = (0,
|
|
1032
|
+
const [uncontrolledValue, setUncontrolledValue] = (0, import_react14.useState)(
|
|
987
1033
|
inProps.defaultValue
|
|
988
1034
|
);
|
|
989
|
-
const [viewMonth, setViewMonth] = (0,
|
|
1035
|
+
const [viewMonth, setViewMonth] = (0, import_react14.useState)(() => {
|
|
990
1036
|
const today = /* @__PURE__ */ new Date();
|
|
991
1037
|
today.setDate(1);
|
|
992
1038
|
today.setHours(0, 0, 0, 0);
|
|
993
1039
|
return inProps.value?.[0] || inProps.defaultValue?.[0] || today;
|
|
994
1040
|
});
|
|
995
|
-
const [[page, direction], setPage] = (0,
|
|
1041
|
+
const [[page, direction], setPage] = (0, import_react14.useState)([0, 0]);
|
|
996
1042
|
const resolvedView = inProps.view ?? uncontrolledView;
|
|
997
|
-
const resolvedMinDate = (0,
|
|
1043
|
+
const resolvedMinDate = (0, import_react14.useMemo)(() => {
|
|
998
1044
|
const minDate = inProps.minDate || /* @__PURE__ */ new Date(0);
|
|
999
1045
|
minDate.setHours(0, 0, 0, 0);
|
|
1000
1046
|
return minDate;
|
|
1001
1047
|
}, [inProps.minDate]);
|
|
1002
|
-
const resolvedMaxDate = (0,
|
|
1048
|
+
const resolvedMaxDate = (0, import_react14.useMemo)(() => {
|
|
1003
1049
|
const maxDate = inProps.maxDate || /* @__PURE__ */ new Date(864e13);
|
|
1004
1050
|
maxDate.setHours(0, 0, 0, 0);
|
|
1005
1051
|
return maxDate;
|
|
1006
1052
|
}, [inProps.maxDate]);
|
|
1007
|
-
const paginate = (0,
|
|
1053
|
+
const paginate = (0, import_react14.useCallback)(
|
|
1008
1054
|
(newDirection) => {
|
|
1009
1055
|
setPage([page + newDirection, newDirection]);
|
|
1010
1056
|
},
|
|
1011
1057
|
[page]
|
|
1012
1058
|
);
|
|
1013
|
-
const handleViewMonthChange = (0,
|
|
1059
|
+
const handleViewMonthChange = (0, import_react14.useCallback)(
|
|
1014
1060
|
(newMonth) => {
|
|
1015
1061
|
setViewMonth(newMonth);
|
|
1016
1062
|
if (resolvedView === "month") {
|
|
@@ -1058,22 +1104,22 @@ var useCalendarProps = (inProps) => {
|
|
|
1058
1104
|
},
|
|
1059
1105
|
name: "Calendar"
|
|
1060
1106
|
});
|
|
1061
|
-
const ownerState = (0,
|
|
1107
|
+
const ownerState = (0, import_react14.useMemo)(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
|
|
1062
1108
|
return [props, ownerState];
|
|
1063
1109
|
};
|
|
1064
1110
|
|
|
1065
1111
|
// src/components/Calendar/hooks/use-calendar.ts
|
|
1066
|
-
var
|
|
1112
|
+
var import_react15 = require("react");
|
|
1067
1113
|
var useCalendar = (ownerState) => {
|
|
1068
|
-
const [localHoverDay, setLocalHoverDay] = (0,
|
|
1069
|
-
const [localHoverMonth, setLocalHoverMonth] = (0,
|
|
1114
|
+
const [localHoverDay, setLocalHoverDay] = (0, import_react15.useState)(null);
|
|
1115
|
+
const [localHoverMonth, setLocalHoverMonth] = (0, import_react15.useState)(null);
|
|
1070
1116
|
const hoverDay = ownerState.hoverDay !== void 0 ? ownerState.hoverDay : localHoverDay;
|
|
1071
1117
|
const setHoverDay = ownerState.onHoverDayChange ?? setLocalHoverDay;
|
|
1072
1118
|
const hoverMonth = ownerState.hoverMonth !== void 0 ? ownerState.hoverMonth : localHoverMonth;
|
|
1073
1119
|
const setHoverMonth = ownerState.onHoverMonthChange ?? setLocalHoverMonth;
|
|
1074
1120
|
return {
|
|
1075
1121
|
calendarTitle: ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default"),
|
|
1076
|
-
onPrev: (0,
|
|
1122
|
+
onPrev: (0, import_react15.useCallback)(() => {
|
|
1077
1123
|
if (ownerState.view === "day") {
|
|
1078
1124
|
const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1079
1125
|
const currentYear = currentDate.getFullYear();
|
|
@@ -1090,7 +1136,7 @@ var useCalendar = (ownerState) => {
|
|
|
1090
1136
|
ownerState.onMonthChange?.(prevYear);
|
|
1091
1137
|
}
|
|
1092
1138
|
}, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
|
|
1093
|
-
onNext: (0,
|
|
1139
|
+
onNext: (0, import_react15.useCallback)(() => {
|
|
1094
1140
|
if (ownerState.view === "day") {
|
|
1095
1141
|
const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1096
1142
|
const currentYear = currentDate.getFullYear();
|
|
@@ -1107,7 +1153,7 @@ var useCalendar = (ownerState) => {
|
|
|
1107
1153
|
ownerState.onMonthChange?.(nextYear);
|
|
1108
1154
|
}
|
|
1109
1155
|
}, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
|
|
1110
|
-
getDayCellProps: (0,
|
|
1156
|
+
getDayCellProps: (0, import_react15.useCallback)(
|
|
1111
1157
|
(day) => {
|
|
1112
1158
|
const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1113
1159
|
thisDay.setHours(0, 0, 0, 0);
|
|
@@ -1122,7 +1168,7 @@ var useCalendar = (ownerState) => {
|
|
|
1122
1168
|
},
|
|
1123
1169
|
[ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverDay]
|
|
1124
1170
|
),
|
|
1125
|
-
getMonthCellProps: (0,
|
|
1171
|
+
getMonthCellProps: (0, import_react15.useCallback)(
|
|
1126
1172
|
(monthIndex) => {
|
|
1127
1173
|
const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1128
1174
|
thisMonth.setDate(1);
|
|
@@ -1139,7 +1185,7 @@ var useCalendar = (ownerState) => {
|
|
|
1139
1185
|
},
|
|
1140
1186
|
[ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverMonth]
|
|
1141
1187
|
),
|
|
1142
|
-
getPickerDayProps: (0,
|
|
1188
|
+
getPickerDayProps: (0, import_react15.useCallback)(
|
|
1143
1189
|
(day) => {
|
|
1144
1190
|
const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1145
1191
|
thisDay.setHours(0, 0, 0, 0);
|
|
@@ -1193,7 +1239,7 @@ var useCalendar = (ownerState) => {
|
|
|
1193
1239
|
hoverDay
|
|
1194
1240
|
]
|
|
1195
1241
|
),
|
|
1196
|
-
getPickerMonthProps: (0,
|
|
1242
|
+
getPickerMonthProps: (0, import_react15.useCallback)(
|
|
1197
1243
|
(monthIndex) => {
|
|
1198
1244
|
const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1199
1245
|
thisMonth.setDate(1);
|
|
@@ -1490,9 +1536,9 @@ var swipePower = (offset, velocity) => {
|
|
|
1490
1536
|
var PickerDays = (props) => {
|
|
1491
1537
|
const { ownerState } = props;
|
|
1492
1538
|
const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
|
|
1493
|
-
const calendarDates = (0,
|
|
1494
|
-
const weekdayNames = (0,
|
|
1495
|
-
return /* @__PURE__ */
|
|
1539
|
+
const calendarDates = (0, import_react16.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
|
|
1540
|
+
const weekdayNames = (0, import_react16.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
|
|
1541
|
+
return /* @__PURE__ */ import_react16.default.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ import_react16.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react16.default.createElement(
|
|
1496
1542
|
CalendarViewTable,
|
|
1497
1543
|
{
|
|
1498
1544
|
key: `${ownerState.viewMonth.toString()}_${ownerState.direction}`,
|
|
@@ -1521,10 +1567,10 @@ var PickerDays = (props) => {
|
|
|
1521
1567
|
}
|
|
1522
1568
|
}
|
|
1523
1569
|
},
|
|
1524
|
-
/* @__PURE__ */
|
|
1525
|
-
/* @__PURE__ */
|
|
1526
|
-
(date, i) => date ? /* @__PURE__ */
|
|
1527
|
-
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */
|
|
1570
|
+
/* @__PURE__ */ import_react16.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("th", null, /* @__PURE__ */ import_react16.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
|
|
1571
|
+
/* @__PURE__ */ import_react16.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekDates.map(
|
|
1572
|
+
(date, i) => date ? /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react16.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react16.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
|
|
1573
|
+
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react16.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react16.default.createElement("td", { colSpan: 13, style: { height: 4 } })))))
|
|
1528
1574
|
)));
|
|
1529
1575
|
};
|
|
1530
1576
|
var PickerMonths = (props) => {
|
|
@@ -1541,7 +1587,7 @@ var PickerMonths = (props) => {
|
|
|
1541
1587
|
[[]]
|
|
1542
1588
|
);
|
|
1543
1589
|
const isMonthPicker = !ownerState.views?.find((view) => view === "day");
|
|
1544
|
-
return /* @__PURE__ */
|
|
1590
|
+
return /* @__PURE__ */ import_react16.default.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ import_react16.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react16.default.createElement(
|
|
1545
1591
|
CalendarViewTable,
|
|
1546
1592
|
{
|
|
1547
1593
|
key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
|
|
@@ -1570,16 +1616,16 @@ var PickerMonths = (props) => {
|
|
|
1570
1616
|
}
|
|
1571
1617
|
}
|
|
1572
1618
|
},
|
|
1573
|
-
/* @__PURE__ */
|
|
1619
|
+
/* @__PURE__ */ import_react16.default.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: months.join("_") }, /* @__PURE__ */ import_react16.default.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: monthIndex }, /* @__PURE__ */ import_react16.default.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ import_react16.default.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ import_react16.default.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ import_react16.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react16.default.createElement("td", { colSpan: 7, style: { height: 4 } })))))
|
|
1574
1620
|
)));
|
|
1575
1621
|
};
|
|
1576
1622
|
var PlainPickerDays = ({ ownerState }) => {
|
|
1577
1623
|
const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
|
|
1578
|
-
const calendarDates = (0,
|
|
1579
|
-
const weekdayNames = (0,
|
|
1580
|
-
return /* @__PURE__ */
|
|
1581
|
-
(date, i) => date ? /* @__PURE__ */
|
|
1582
|
-
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */
|
|
1624
|
+
const calendarDates = (0, import_react16.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
|
|
1625
|
+
const weekdayNames = (0, import_react16.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
|
|
1626
|
+
return /* @__PURE__ */ import_react16.default.createElement(StaticCalendarViewTable, null, /* @__PURE__ */ import_react16.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("th", null, /* @__PURE__ */ import_react16.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))), /* @__PURE__ */ import_react16.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekDates.map(
|
|
1627
|
+
(date, i) => date ? /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react16.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react16.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
|
|
1628
|
+
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react16.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react16.default.createElement("td", { colSpan: 13, style: { height: 4 } }))))));
|
|
1583
1629
|
};
|
|
1584
1630
|
var MultiMonthPickerDays = ({
|
|
1585
1631
|
panels,
|
|
@@ -1598,7 +1644,7 @@ var MultiMonthPickerDays = ({
|
|
|
1598
1644
|
})
|
|
1599
1645
|
};
|
|
1600
1646
|
const key = `${panels[0].viewMonth.toISOString()}_${direction}`;
|
|
1601
|
-
return /* @__PURE__ */
|
|
1647
|
+
return /* @__PURE__ */ import_react16.default.createElement("div", { style: { position: "relative", overflow: "hidden", minHeight: "250px" } }, /* @__PURE__ */ import_react16.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: direction }, /* @__PURE__ */ import_react16.default.createElement(
|
|
1602
1648
|
import_framer_motion13.motion.div,
|
|
1603
1649
|
{
|
|
1604
1650
|
key,
|
|
@@ -1628,7 +1674,7 @@ var MultiMonthPickerDays = ({
|
|
|
1628
1674
|
},
|
|
1629
1675
|
style: { display: "flex", gap: `${CALENDAR_PANEL_GAP}px`, top: 0, left: 0, width: "100%" }
|
|
1630
1676
|
},
|
|
1631
|
-
panels.map((panelOwnerState) => /* @__PURE__ */
|
|
1677
|
+
panels.map((panelOwnerState) => /* @__PURE__ */ import_react16.default.createElement(
|
|
1632
1678
|
"div",
|
|
1633
1679
|
{
|
|
1634
1680
|
key: panelOwnerState.viewMonth.toISOString(),
|
|
@@ -1640,7 +1686,7 @@ var MultiMonthPickerDays = ({
|
|
|
1640
1686
|
boxSizing: "border-box"
|
|
1641
1687
|
}
|
|
1642
1688
|
},
|
|
1643
|
-
/* @__PURE__ */
|
|
1689
|
+
/* @__PURE__ */ import_react16.default.createElement(PlainPickerDays, { ownerState: panelOwnerState })
|
|
1644
1690
|
))
|
|
1645
1691
|
)));
|
|
1646
1692
|
};
|
|
@@ -1657,7 +1703,7 @@ var CalendarPanel = ({
|
|
|
1657
1703
|
const showPrev = panelIndex === 0;
|
|
1658
1704
|
const showNext = panelIndex === totalPanels - 1;
|
|
1659
1705
|
const title = ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default");
|
|
1660
|
-
return /* @__PURE__ */
|
|
1706
|
+
return /* @__PURE__ */ import_react16.default.createElement("div", { style: { flex: 1, maxWidth: `${CALENDAR_PANEL_WIDTH}px` } }, /* @__PURE__ */ import_react16.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react16.default.createElement(
|
|
1661
1707
|
IconButton_default,
|
|
1662
1708
|
{
|
|
1663
1709
|
size: "sm",
|
|
@@ -1665,8 +1711,8 @@ var CalendarPanel = ({
|
|
|
1665
1711
|
"aria-label": `Previous ${ownerState.view === "day" ? "Month" : "Year"}`,
|
|
1666
1712
|
style: { visibility: showPrev ? "visible" : "hidden" }
|
|
1667
1713
|
},
|
|
1668
|
-
/* @__PURE__ */
|
|
1669
|
-
), /* @__PURE__ */
|
|
1714
|
+
/* @__PURE__ */ import_react16.default.createElement(import_ChevronLeft.default, null)
|
|
1715
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
1670
1716
|
Tooltip_default,
|
|
1671
1717
|
{
|
|
1672
1718
|
title: monthViewHintMessage,
|
|
@@ -1678,7 +1724,7 @@ var CalendarPanel = ({
|
|
|
1678
1724
|
disableTouchListener: true,
|
|
1679
1725
|
variant: "solid"
|
|
1680
1726
|
},
|
|
1681
|
-
/* @__PURE__ */
|
|
1727
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
1682
1728
|
CalendarSwitchViewButton,
|
|
1683
1729
|
{
|
|
1684
1730
|
ownerState,
|
|
@@ -1689,7 +1735,7 @@ var CalendarPanel = ({
|
|
|
1689
1735
|
},
|
|
1690
1736
|
title
|
|
1691
1737
|
)
|
|
1692
|
-
), /* @__PURE__ */
|
|
1738
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
1693
1739
|
IconButton_default,
|
|
1694
1740
|
{
|
|
1695
1741
|
size: "sm",
|
|
@@ -1697,10 +1743,10 @@ var CalendarPanel = ({
|
|
|
1697
1743
|
"aria-label": `Next ${ownerState.view === "day" ? "Month" : "Year"}`,
|
|
1698
1744
|
style: { visibility: showNext ? "visible" : "hidden" }
|
|
1699
1745
|
},
|
|
1700
|
-
/* @__PURE__ */
|
|
1746
|
+
/* @__PURE__ */ import_react16.default.createElement(import_ChevronRight.default, null)
|
|
1701
1747
|
)));
|
|
1702
1748
|
};
|
|
1703
|
-
var Calendar = (0,
|
|
1749
|
+
var Calendar = (0, import_react16.forwardRef)((inProps, ref) => {
|
|
1704
1750
|
const [props, ownerState] = useCalendarProps(inProps);
|
|
1705
1751
|
const {
|
|
1706
1752
|
value,
|
|
@@ -1716,42 +1762,44 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1716
1762
|
maxDate,
|
|
1717
1763
|
disableFuture,
|
|
1718
1764
|
disablePast,
|
|
1765
|
+
shouldDisableDate,
|
|
1766
|
+
slots,
|
|
1719
1767
|
numberOfMonths,
|
|
1720
1768
|
...others
|
|
1721
1769
|
} = props;
|
|
1722
1770
|
const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
|
|
1723
|
-
const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = (0,
|
|
1724
|
-
const monthNavClickTimestampsRef = (0,
|
|
1725
|
-
const monthViewAssistHintShownInSessionRef = (0,
|
|
1726
|
-
const monthViewAssistHintTimeoutRef = (0,
|
|
1727
|
-
const [hoverDay, setHoverDay] = (0,
|
|
1728
|
-
const [hoverMonth, setHoverMonth] = (0,
|
|
1771
|
+
const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = (0, import_react16.useState)(false);
|
|
1772
|
+
const monthNavClickTimestampsRef = (0, import_react16.useRef)([]);
|
|
1773
|
+
const monthViewAssistHintShownInSessionRef = (0, import_react16.useRef)(false);
|
|
1774
|
+
const monthViewAssistHintTimeoutRef = (0, import_react16.useRef)(null);
|
|
1775
|
+
const [hoverDay, setHoverDay] = (0, import_react16.useState)(null);
|
|
1776
|
+
const [hoverMonth, setHoverMonth] = (0, import_react16.useState)(null);
|
|
1729
1777
|
const resolvedNumberOfMonths = numberOfMonths ?? 1;
|
|
1730
1778
|
const hasEndDate = Boolean(value?.[1]);
|
|
1731
1779
|
const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
|
|
1732
1780
|
const isHintEligible = Boolean(view === "day" && (!rangeSelection || isRangeHintEligible));
|
|
1733
1781
|
const monthViewHintMessage = MONTH_VIEW_HINT_MESSAGE;
|
|
1734
|
-
(0,
|
|
1782
|
+
(0, import_react16.useEffect)(() => {
|
|
1735
1783
|
if (!isHintEligible) {
|
|
1736
1784
|
monthNavClickTimestampsRef.current = [];
|
|
1737
1785
|
setIsMonthViewAssistHintOpen(false);
|
|
1738
1786
|
}
|
|
1739
1787
|
}, [isHintEligible]);
|
|
1740
|
-
(0,
|
|
1788
|
+
(0, import_react16.useEffect)(() => {
|
|
1741
1789
|
return () => {
|
|
1742
1790
|
if (monthViewAssistHintTimeoutRef.current) {
|
|
1743
1791
|
clearTimeout(monthViewAssistHintTimeoutRef.current);
|
|
1744
1792
|
}
|
|
1745
1793
|
};
|
|
1746
1794
|
}, []);
|
|
1747
|
-
const closeMonthViewAssistHint = (0,
|
|
1795
|
+
const closeMonthViewAssistHint = (0, import_react16.useCallback)(() => {
|
|
1748
1796
|
if (monthViewAssistHintTimeoutRef.current) {
|
|
1749
1797
|
clearTimeout(monthViewAssistHintTimeoutRef.current);
|
|
1750
1798
|
monthViewAssistHintTimeoutRef.current = null;
|
|
1751
1799
|
}
|
|
1752
1800
|
setIsMonthViewAssistHintOpen(false);
|
|
1753
1801
|
}, []);
|
|
1754
|
-
const showMonthViewAssistHint = (0,
|
|
1802
|
+
const showMonthViewAssistHint = (0, import_react16.useCallback)(() => {
|
|
1755
1803
|
const now = Date.now();
|
|
1756
1804
|
if (monthViewAssistHintShownInSessionRef.current) return;
|
|
1757
1805
|
if (now - lastMonthViewAssistHintShownAt < MONTH_VIEW_HINT_COOLDOWN_MS) return;
|
|
@@ -1766,7 +1814,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1766
1814
|
monthViewAssistHintTimeoutRef.current = null;
|
|
1767
1815
|
}, MONTH_VIEW_HINT_DURATION_MS);
|
|
1768
1816
|
}, []);
|
|
1769
|
-
const trackFastMonthNavigation = (0,
|
|
1817
|
+
const trackFastMonthNavigation = (0, import_react16.useCallback)(() => {
|
|
1770
1818
|
if (!isHintEligible) return;
|
|
1771
1819
|
const now = Date.now();
|
|
1772
1820
|
monthNavClickTimestampsRef.current = [
|
|
@@ -1777,15 +1825,15 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1777
1825
|
showMonthViewAssistHint();
|
|
1778
1826
|
}
|
|
1779
1827
|
}, [isHintEligible, showMonthViewAssistHint]);
|
|
1780
|
-
const handlePrevClick = (0,
|
|
1828
|
+
const handlePrevClick = (0, import_react16.useCallback)(() => {
|
|
1781
1829
|
onPrev();
|
|
1782
1830
|
trackFastMonthNavigation();
|
|
1783
1831
|
}, [onPrev, trackFastMonthNavigation]);
|
|
1784
|
-
const handleNextClick = (0,
|
|
1832
|
+
const handleNextClick = (0, import_react16.useCallback)(() => {
|
|
1785
1833
|
onNext();
|
|
1786
1834
|
trackFastMonthNavigation();
|
|
1787
1835
|
}, [onNext, trackFastMonthNavigation]);
|
|
1788
|
-
const handleSwitchViewClick = (0,
|
|
1836
|
+
const handleSwitchViewClick = (0, import_react16.useCallback)(() => {
|
|
1789
1837
|
closeMonthViewAssistHint();
|
|
1790
1838
|
onViewChange?.();
|
|
1791
1839
|
}, [closeMonthViewAssistHint, onViewChange]);
|
|
@@ -1805,9 +1853,9 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1805
1853
|
onHoverMonthChange: setHoverMonth
|
|
1806
1854
|
};
|
|
1807
1855
|
});
|
|
1808
|
-
return /* @__PURE__ */
|
|
1856
|
+
return /* @__PURE__ */ import_react16.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, view === "month" ? (
|
|
1809
1857
|
// Month view: single header + single month grid (consistent with single-month path)
|
|
1810
|
-
/* @__PURE__ */
|
|
1858
|
+
/* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": "Previous Year" }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react16.default.createElement(
|
|
1811
1859
|
Tooltip_default,
|
|
1812
1860
|
{
|
|
1813
1861
|
title: monthViewHintMessage,
|
|
@@ -1819,7 +1867,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1819
1867
|
disableTouchListener: true,
|
|
1820
1868
|
variant: "solid"
|
|
1821
1869
|
},
|
|
1822
|
-
/* @__PURE__ */
|
|
1870
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
1823
1871
|
CalendarSwitchViewButton,
|
|
1824
1872
|
{
|
|
1825
1873
|
ownerState,
|
|
@@ -1830,8 +1878,8 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1830
1878
|
},
|
|
1831
1879
|
calendarTitle
|
|
1832
1880
|
)
|
|
1833
|
-
), /* @__PURE__ */
|
|
1834
|
-
) : /* @__PURE__ */
|
|
1881
|
+
), /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": "Next Year" }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronRight.default, null))), /* @__PURE__ */ import_react16.default.createElement(PickerMonths, { ownerState }))
|
|
1882
|
+
) : /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(CalendarMultiContainer, null, panels.map((panelOwnerState, i) => /* @__PURE__ */ import_react16.default.createElement(
|
|
1835
1883
|
CalendarPanel,
|
|
1836
1884
|
{
|
|
1837
1885
|
key: panelOwnerState.viewMonth.toISOString(),
|
|
@@ -1844,7 +1892,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1844
1892
|
isMonthViewAssistHintOpen,
|
|
1845
1893
|
monthViewHintMessage
|
|
1846
1894
|
}
|
|
1847
|
-
))), /* @__PURE__ */
|
|
1895
|
+
))), /* @__PURE__ */ import_react16.default.createElement(
|
|
1848
1896
|
MultiMonthPickerDays,
|
|
1849
1897
|
{
|
|
1850
1898
|
panels,
|
|
@@ -1853,7 +1901,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1853
1901
|
}
|
|
1854
1902
|
)));
|
|
1855
1903
|
}
|
|
1856
|
-
return /* @__PURE__ */
|
|
1904
|
+
return /* @__PURE__ */ import_react16.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, /* @__PURE__ */ import_react16.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react16.default.createElement(
|
|
1857
1905
|
Tooltip_default,
|
|
1858
1906
|
{
|
|
1859
1907
|
title: monthViewHintMessage,
|
|
@@ -1865,7 +1913,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1865
1913
|
disableTouchListener: true,
|
|
1866
1914
|
variant: "solid"
|
|
1867
1915
|
},
|
|
1868
|
-
/* @__PURE__ */
|
|
1916
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
1869
1917
|
CalendarSwitchViewButton,
|
|
1870
1918
|
{
|
|
1871
1919
|
ownerState,
|
|
@@ -1876,7 +1924,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1876
1924
|
},
|
|
1877
1925
|
calendarTitle
|
|
1878
1926
|
)
|
|
1879
|
-
), /* @__PURE__ */
|
|
1927
|
+
), /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronRight.default, null))), view === "day" && /* @__PURE__ */ import_react16.default.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ import_react16.default.createElement(PickerMonths, { ownerState }));
|
|
1880
1928
|
});
|
|
1881
1929
|
Calendar.displayName = "Calendar";
|
|
1882
1930
|
|
|
@@ -1903,12 +1951,12 @@ var CardOverflow = MotionCardOverflow;
|
|
|
1903
1951
|
CardOverflow.displayName = "CardOverflow";
|
|
1904
1952
|
|
|
1905
1953
|
// src/components/Checkbox/Checkbox.tsx
|
|
1906
|
-
var
|
|
1954
|
+
var import_react17 = __toESM(require("react"));
|
|
1907
1955
|
var import_joy22 = require("@mui/joy");
|
|
1908
1956
|
var import_framer_motion15 = require("framer-motion");
|
|
1909
1957
|
var MotionCheckbox = (0, import_framer_motion15.motion)(import_joy22.Checkbox);
|
|
1910
1958
|
var Checkbox = (props) => {
|
|
1911
|
-
return /* @__PURE__ */
|
|
1959
|
+
return /* @__PURE__ */ import_react17.default.createElement(MotionCheckbox, { ...props });
|
|
1912
1960
|
};
|
|
1913
1961
|
Checkbox.displayName = "Checkbox";
|
|
1914
1962
|
|
|
@@ -1917,7 +1965,7 @@ var Checkbox_default = Checkbox;
|
|
|
1917
1965
|
|
|
1918
1966
|
// src/components/Container/Container.tsx
|
|
1919
1967
|
var import_joy23 = require("@mui/joy");
|
|
1920
|
-
var
|
|
1968
|
+
var import_react18 = __toESM(require("react"));
|
|
1921
1969
|
var ContainerRoot = (0, import_joy23.styled)("div", {
|
|
1922
1970
|
name: "Container",
|
|
1923
1971
|
slot: "root",
|
|
@@ -1943,24 +1991,24 @@ var ContainerRoot = (0, import_joy23.styled)("div", {
|
|
|
1943
1991
|
paddingRight: theme.breakpoints.values[overrideBreakpoint] >= theme.breakpoints.values.lg ? theme.spacing(8) : theme.spacing(4)
|
|
1944
1992
|
} : null
|
|
1945
1993
|
]);
|
|
1946
|
-
var Container = (0,
|
|
1947
|
-
return /* @__PURE__ */
|
|
1994
|
+
var Container = (0, import_react18.forwardRef)(function Container2(props, ref) {
|
|
1995
|
+
return /* @__PURE__ */ import_react18.default.createElement(ContainerRoot, { ref, ...props });
|
|
1948
1996
|
});
|
|
1949
1997
|
Container.displayName = "Container";
|
|
1950
1998
|
|
|
1951
1999
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
1952
|
-
var
|
|
2000
|
+
var import_react20 = __toESM(require("react"));
|
|
1953
2001
|
var import_react_number_format = require("react-number-format");
|
|
1954
2002
|
|
|
1955
2003
|
// src/components/Input/Input.tsx
|
|
1956
|
-
var
|
|
2004
|
+
var import_react19 = __toESM(require("react"));
|
|
1957
2005
|
var import_joy24 = require("@mui/joy");
|
|
1958
2006
|
var import_framer_motion16 = require("framer-motion");
|
|
1959
2007
|
var import_Close2 = __toESM(require("@mui/icons-material/Close"));
|
|
1960
2008
|
var import_Visibility = __toESM(require("@mui/icons-material/Visibility"));
|
|
1961
2009
|
var import_VisibilityOff = __toESM(require("@mui/icons-material/VisibilityOff"));
|
|
1962
2010
|
var MotionInput = (0, import_framer_motion16.motion)(import_joy24.Input);
|
|
1963
|
-
var Input =
|
|
2011
|
+
var Input = import_react19.default.forwardRef((props, ref) => {
|
|
1964
2012
|
const {
|
|
1965
2013
|
label,
|
|
1966
2014
|
helperText,
|
|
@@ -1987,11 +2035,11 @@ var Input = import_react18.default.forwardRef((props, ref) => {
|
|
|
1987
2035
|
if (type === "password" && innerProps.endDecorator) {
|
|
1988
2036
|
console.warn('Input: endDecorator is not supported when type="password"');
|
|
1989
2037
|
}
|
|
1990
|
-
const [passwordVisible, setPasswordVisible] = (0,
|
|
2038
|
+
const [passwordVisible, setPasswordVisible] = (0, import_react19.useState)(false);
|
|
1991
2039
|
const [value, setValue] = useControlledState(
|
|
1992
2040
|
valueProp,
|
|
1993
2041
|
defaultValueProp ?? null,
|
|
1994
|
-
(0,
|
|
2042
|
+
(0, import_react19.useCallback)(
|
|
1995
2043
|
(value2) => {
|
|
1996
2044
|
onChange?.({
|
|
1997
2045
|
/**
|
|
@@ -2018,7 +2066,7 @@ var Input = import_react18.default.forwardRef((props, ref) => {
|
|
|
2018
2066
|
const actualType = type === "password" && passwordVisible ? "text" : type;
|
|
2019
2067
|
const isPasswordType = type === "password";
|
|
2020
2068
|
const showPasswordToggle = isPasswordType && !disableTogglePasswordButton;
|
|
2021
|
-
const input = /* @__PURE__ */
|
|
2069
|
+
const input = /* @__PURE__ */ import_react19.default.createElement(
|
|
2022
2070
|
MotionInput,
|
|
2023
2071
|
{
|
|
2024
2072
|
value: displayValue ?? "",
|
|
@@ -2033,7 +2081,7 @@ var Input = import_react18.default.forwardRef((props, ref) => {
|
|
|
2033
2081
|
...innerProps.slotProps
|
|
2034
2082
|
},
|
|
2035
2083
|
...innerProps,
|
|
2036
|
-
endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */
|
|
2084
|
+
endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ import_react19.default.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ import_react19.default.createElement(
|
|
2037
2085
|
IconButton_default,
|
|
2038
2086
|
{
|
|
2039
2087
|
onMouseDown: (e) => e.preventDefault(),
|
|
@@ -2041,19 +2089,19 @@ var Input = import_react18.default.forwardRef((props, ref) => {
|
|
|
2041
2089
|
disabled,
|
|
2042
2090
|
"aria-label": passwordVisible ? "Hide password" : "Show password"
|
|
2043
2091
|
},
|
|
2044
|
-
passwordVisible ? /* @__PURE__ */
|
|
2045
|
-
)) : null : enableClearable ? /* @__PURE__ */
|
|
2092
|
+
passwordVisible ? /* @__PURE__ */ import_react19.default.createElement(import_VisibilityOff.default, null) : /* @__PURE__ */ import_react19.default.createElement(import_Visibility.default, null)
|
|
2093
|
+
)) : null : enableClearable ? /* @__PURE__ */ import_react19.default.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, displayValue && /* @__PURE__ */ import_react19.default.createElement(
|
|
2046
2094
|
IconButton_default,
|
|
2047
2095
|
{
|
|
2048
2096
|
onMouseDown: (e) => e.preventDefault(),
|
|
2049
2097
|
onClick: handleClear,
|
|
2050
2098
|
"aria-label": "Clear"
|
|
2051
2099
|
},
|
|
2052
|
-
/* @__PURE__ */
|
|
2100
|
+
/* @__PURE__ */ import_react19.default.createElement(import_Close2.default, null)
|
|
2053
2101
|
)) : innerProps.endDecorator
|
|
2054
2102
|
}
|
|
2055
2103
|
);
|
|
2056
|
-
return /* @__PURE__ */
|
|
2104
|
+
return /* @__PURE__ */ import_react19.default.createElement(
|
|
2057
2105
|
FormControl_default,
|
|
2058
2106
|
{
|
|
2059
2107
|
required,
|
|
@@ -2064,9 +2112,9 @@ var Input = import_react18.default.forwardRef((props, ref) => {
|
|
|
2064
2112
|
sx,
|
|
2065
2113
|
className
|
|
2066
2114
|
},
|
|
2067
|
-
label && /* @__PURE__ */
|
|
2115
|
+
label && /* @__PURE__ */ import_react19.default.createElement(FormLabel_default, null, label),
|
|
2068
2116
|
input,
|
|
2069
|
-
helperText && /* @__PURE__ */
|
|
2117
|
+
helperText && /* @__PURE__ */ import_react19.default.createElement(FormHelperText_default, null, helperText)
|
|
2070
2118
|
);
|
|
2071
2119
|
});
|
|
2072
2120
|
Input.displayName = "Input";
|
|
@@ -2238,9 +2286,9 @@ var useCurrencySetting = (props) => {
|
|
|
2238
2286
|
};
|
|
2239
2287
|
|
|
2240
2288
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
2241
|
-
var TextMaskAdapter =
|
|
2289
|
+
var TextMaskAdapter = import_react20.default.forwardRef(function TextMaskAdapter2(props, ref) {
|
|
2242
2290
|
const { onChange, ...innerProps } = props;
|
|
2243
|
-
return /* @__PURE__ */
|
|
2291
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
2244
2292
|
import_react_number_format.NumericFormat,
|
|
2245
2293
|
{
|
|
2246
2294
|
...innerProps,
|
|
@@ -2260,7 +2308,7 @@ var CurrencyInputRoot = (0, import_joy25.styled)(Input_default, {
|
|
|
2260
2308
|
slot: "root",
|
|
2261
2309
|
overridesResolver: (props, styles) => styles.root
|
|
2262
2310
|
})({});
|
|
2263
|
-
var CurrencyInput =
|
|
2311
|
+
var CurrencyInput = import_react20.default.forwardRef(function CurrencyInput2(inProps, ref) {
|
|
2264
2312
|
const props = (0, import_joy25.useThemeProps)({ props: inProps, name: "CurrencyInput" });
|
|
2265
2313
|
const {
|
|
2266
2314
|
currency = "USD",
|
|
@@ -2281,22 +2329,22 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
|
|
|
2281
2329
|
const [_value, setValue] = useControlledState(
|
|
2282
2330
|
props.value,
|
|
2283
2331
|
props.defaultValue ?? null,
|
|
2284
|
-
(0,
|
|
2332
|
+
(0, import_react20.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
2285
2333
|
);
|
|
2286
|
-
const value = (0,
|
|
2334
|
+
const value = (0, import_react20.useMemo)(() => {
|
|
2287
2335
|
if (_value && useMinorUnit) {
|
|
2288
2336
|
return _value / Math.pow(10, decimalScale);
|
|
2289
2337
|
}
|
|
2290
2338
|
return _value;
|
|
2291
2339
|
}, [_value, useMinorUnit, decimalScale]);
|
|
2292
|
-
const max = (0,
|
|
2340
|
+
const max = (0, import_react20.useMemo)(() => {
|
|
2293
2341
|
if (props.max && useMinorUnit) {
|
|
2294
2342
|
return props.max / Math.pow(10, decimalScale);
|
|
2295
2343
|
}
|
|
2296
2344
|
return props.max;
|
|
2297
2345
|
}, [props.max, useMinorUnit, decimalScale]);
|
|
2298
|
-
const isOverLimit = (0,
|
|
2299
|
-
const handleChange = (0,
|
|
2346
|
+
const isOverLimit = (0, import_react20.useMemo)(() => max != null && value != null && value > max, [max, value]);
|
|
2347
|
+
const handleChange = (0, import_react20.useCallback)(
|
|
2300
2348
|
(event) => {
|
|
2301
2349
|
if (event.target.value === "") {
|
|
2302
2350
|
setValue(null);
|
|
@@ -2307,7 +2355,7 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
|
|
|
2307
2355
|
},
|
|
2308
2356
|
[decimalSeparator, useMinorUnit, setValue]
|
|
2309
2357
|
);
|
|
2310
|
-
return /* @__PURE__ */
|
|
2358
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
2311
2359
|
CurrencyInputRoot,
|
|
2312
2360
|
{
|
|
2313
2361
|
...innerProps,
|
|
@@ -2344,7 +2392,7 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
|
|
|
2344
2392
|
var CurrencyInput_default = CurrencyInput;
|
|
2345
2393
|
|
|
2346
2394
|
// src/components/DataTable/DataTable.tsx
|
|
2347
|
-
var
|
|
2395
|
+
var import_react30 = __toESM(require("react"));
|
|
2348
2396
|
var import_react_virtual2 = require("@tanstack/react-virtual");
|
|
2349
2397
|
|
|
2350
2398
|
// src/libs/text-measurer.ts
|
|
@@ -2572,9 +2620,15 @@ function computeAutoFitWidth(params) {
|
|
|
2572
2620
|
if (!isNaN(maxPx) && maxPx > 0) finalWidth = Math.min(finalWidth, maxPx);
|
|
2573
2621
|
return finalWidth;
|
|
2574
2622
|
}
|
|
2623
|
+
function getHeaderCellId(tableId, field) {
|
|
2624
|
+
return `${tableId}_header_${sanitizeColumnId(field)}`;
|
|
2625
|
+
}
|
|
2626
|
+
function sanitizeColumnId(field) {
|
|
2627
|
+
return String(field).trim().replace(/\s+/g, "_");
|
|
2628
|
+
}
|
|
2575
2629
|
|
|
2576
2630
|
// src/components/DataTable/styled.tsx
|
|
2577
|
-
var
|
|
2631
|
+
var import_react21 = __toESM(require("react"));
|
|
2578
2632
|
var import_joy26 = require("@mui/joy");
|
|
2579
2633
|
var import_framer_motion17 = require("framer-motion");
|
|
2580
2634
|
var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
|
|
@@ -2680,9 +2734,9 @@ var StyledTd = (0, import_joy26.styled)("td")(({ theme }) => ({
|
|
|
2680
2734
|
}
|
|
2681
2735
|
}));
|
|
2682
2736
|
var MotionSortIcon = (0, import_framer_motion17.motion)(import_ArrowUpwardRounded.default);
|
|
2683
|
-
var DefaultLoadingOverlay = () => /* @__PURE__ */
|
|
2684
|
-
var DefaultNoRowsOverlay = () => /* @__PURE__ */
|
|
2685
|
-
var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PURE__ */
|
|
2737
|
+
var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react21.default.createElement(import_joy26.LinearProgress, { value: 8, variant: "plain" });
|
|
2738
|
+
var DefaultNoRowsOverlay = () => /* @__PURE__ */ import_react21.default.createElement(import_joy26.Typography, { level: "body-sm", textColor: "text.tertiary" }, "No rows");
|
|
2739
|
+
var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PURE__ */ import_react21.default.createElement(
|
|
2686
2740
|
Box_default,
|
|
2687
2741
|
{
|
|
2688
2742
|
sx: {
|
|
@@ -2759,12 +2813,12 @@ var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PU
|
|
|
2759
2813
|
);
|
|
2760
2814
|
|
|
2761
2815
|
// src/components/DataTable/components.tsx
|
|
2762
|
-
var
|
|
2816
|
+
var import_react26 = __toESM(require("react"));
|
|
2763
2817
|
var import_joy33 = require("@mui/joy");
|
|
2764
2818
|
var import_framer_motion21 = require("framer-motion");
|
|
2765
2819
|
|
|
2766
2820
|
// src/components/DatePicker/DatePicker.tsx
|
|
2767
|
-
var
|
|
2821
|
+
var import_react22 = __toESM(require("react"));
|
|
2768
2822
|
var import_react_imask = require("react-imask");
|
|
2769
2823
|
var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
2770
2824
|
var import_joy29 = require("@mui/joy");
|
|
@@ -2917,9 +2971,9 @@ function parseDate(dateString, format) {
|
|
|
2917
2971
|
var formatToPattern = (format) => {
|
|
2918
2972
|
return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
2919
2973
|
};
|
|
2920
|
-
var TextMaskAdapter3 =
|
|
2974
|
+
var TextMaskAdapter3 = import_react22.default.forwardRef(function TextMaskAdapter4(props, ref) {
|
|
2921
2975
|
const { onChange, format, ...other } = props;
|
|
2922
|
-
return /* @__PURE__ */
|
|
2976
|
+
return /* @__PURE__ */ import_react22.default.createElement(
|
|
2923
2977
|
import_react_imask.IMaskInput,
|
|
2924
2978
|
{
|
|
2925
2979
|
...other,
|
|
@@ -2954,7 +3008,7 @@ var TextMaskAdapter3 = import_react21.default.forwardRef(function TextMaskAdapte
|
|
|
2954
3008
|
}
|
|
2955
3009
|
);
|
|
2956
3010
|
});
|
|
2957
|
-
var DatePicker = (0,
|
|
3011
|
+
var DatePicker = (0, import_react22.forwardRef)((inProps, ref) => {
|
|
2958
3012
|
const props = (0, import_joy29.useThemeProps)({ props: inProps, name: "DatePicker" });
|
|
2959
3013
|
const {
|
|
2960
3014
|
onChange,
|
|
@@ -2981,29 +3035,29 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
2981
3035
|
presets,
|
|
2982
3036
|
...innerProps
|
|
2983
3037
|
} = props;
|
|
2984
|
-
const innerRef = (0,
|
|
2985
|
-
const buttonRef = (0,
|
|
3038
|
+
const innerRef = (0, import_react22.useRef)(null);
|
|
3039
|
+
const buttonRef = (0, import_react22.useRef)(null);
|
|
2986
3040
|
const [rawValue, setValue] = useControlledState(
|
|
2987
3041
|
props.value,
|
|
2988
3042
|
props.defaultValue ?? null,
|
|
2989
|
-
(0,
|
|
3043
|
+
(0, import_react22.useCallback)(
|
|
2990
3044
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
2991
3045
|
[props.name, onChange]
|
|
2992
3046
|
)
|
|
2993
3047
|
);
|
|
2994
3048
|
const value = rawValue ?? "";
|
|
2995
3049
|
const isAlphabeticDisplay = hasAlphabeticMonth(displayFormat);
|
|
2996
|
-
const [displayValue, setDisplayValue] = (0,
|
|
3050
|
+
const [displayValue, setDisplayValue] = (0, import_react22.useState)(
|
|
2997
3051
|
() => value ? formatValueString(parseDate(value, format), displayFormat, locale) : ""
|
|
2998
3052
|
);
|
|
2999
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
3053
|
+
const [anchorEl, setAnchorEl] = (0, import_react22.useState)(null);
|
|
3000
3054
|
const open = Boolean(anchorEl);
|
|
3001
|
-
(0,
|
|
3055
|
+
(0, import_react22.useEffect)(() => {
|
|
3002
3056
|
if (!anchorEl) {
|
|
3003
3057
|
innerRef.current?.blur();
|
|
3004
3058
|
}
|
|
3005
3059
|
}, [anchorEl, innerRef]);
|
|
3006
|
-
(0,
|
|
3060
|
+
(0, import_react22.useEffect)(() => {
|
|
3007
3061
|
if (value === "") {
|
|
3008
3062
|
setDisplayValue("");
|
|
3009
3063
|
return;
|
|
@@ -3013,8 +3067,8 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3013
3067
|
setDisplayValue(formattedValue);
|
|
3014
3068
|
}
|
|
3015
3069
|
}, [displayFormat, displayValue, format, locale, value]);
|
|
3016
|
-
(0,
|
|
3017
|
-
const handleChange = (0,
|
|
3070
|
+
(0, import_react22.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
3071
|
+
const handleChange = (0, import_react22.useCallback)(
|
|
3018
3072
|
(event) => {
|
|
3019
3073
|
const value2 = event.target.value;
|
|
3020
3074
|
setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat, locale) : value2);
|
|
@@ -3022,7 +3076,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3022
3076
|
},
|
|
3023
3077
|
[displayFormat, format, locale, setValue]
|
|
3024
3078
|
);
|
|
3025
|
-
const handleDisplayInputChange = (0,
|
|
3079
|
+
const handleDisplayInputChange = (0, import_react22.useCallback)(
|
|
3026
3080
|
(event) => {
|
|
3027
3081
|
if (event.target.value === "") {
|
|
3028
3082
|
handleChange({
|
|
@@ -3047,7 +3101,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3047
3101
|
},
|
|
3048
3102
|
[displayFormat, format, handleChange, props.name]
|
|
3049
3103
|
);
|
|
3050
|
-
const handleCalendarToggle = (0,
|
|
3104
|
+
const handleCalendarToggle = (0, import_react22.useCallback)(
|
|
3051
3105
|
(event) => {
|
|
3052
3106
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
3053
3107
|
setTimeout(() => {
|
|
@@ -3056,7 +3110,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3056
3110
|
},
|
|
3057
3111
|
[anchorEl, setAnchorEl, innerRef]
|
|
3058
3112
|
);
|
|
3059
|
-
const handleInputMouseDown = (0,
|
|
3113
|
+
const handleInputMouseDown = (0, import_react22.useCallback)(
|
|
3060
3114
|
(event) => {
|
|
3061
3115
|
if (inputReadOnly || isAlphabeticDisplay) {
|
|
3062
3116
|
event.preventDefault();
|
|
@@ -3065,7 +3119,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3065
3119
|
},
|
|
3066
3120
|
[inputReadOnly, isAlphabeticDisplay, buttonRef]
|
|
3067
3121
|
);
|
|
3068
|
-
const handleInputClick = (0,
|
|
3122
|
+
const handleInputClick = (0, import_react22.useCallback)(
|
|
3069
3123
|
(event) => {
|
|
3070
3124
|
if (inputReadOnly && !readOnly) {
|
|
3071
3125
|
handleCalendarToggle(event);
|
|
@@ -3073,7 +3127,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3073
3127
|
},
|
|
3074
3128
|
[inputReadOnly, readOnly, handleCalendarToggle]
|
|
3075
3129
|
);
|
|
3076
|
-
const handlePresetClick = (0,
|
|
3130
|
+
const handlePresetClick = (0, import_react22.useCallback)(
|
|
3077
3131
|
(presetValue) => {
|
|
3078
3132
|
handleChange({
|
|
3079
3133
|
target: {
|
|
@@ -3085,7 +3139,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3085
3139
|
},
|
|
3086
3140
|
[handleChange, props.name]
|
|
3087
3141
|
);
|
|
3088
|
-
const isPresetDisabled = (0,
|
|
3142
|
+
const isPresetDisabled = (0, import_react22.useCallback)(
|
|
3089
3143
|
(presetValue) => {
|
|
3090
3144
|
try {
|
|
3091
3145
|
const date = parseDate(presetValue, format);
|
|
@@ -3102,7 +3156,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3102
3156
|
},
|
|
3103
3157
|
[format, minDate, maxDate, disableFuture, disablePast, shouldDisableDate]
|
|
3104
3158
|
);
|
|
3105
|
-
return /* @__PURE__ */
|
|
3159
|
+
return /* @__PURE__ */ import_react22.default.createElement(DatePickerRoot, { sx, className }, /* @__PURE__ */ import_react22.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(
|
|
3106
3160
|
Input_default,
|
|
3107
3161
|
{
|
|
3108
3162
|
...innerProps,
|
|
@@ -3129,7 +3183,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3129
3183
|
}
|
|
3130
3184
|
},
|
|
3131
3185
|
sx: { width: "100%" },
|
|
3132
|
-
endDecorator: /* @__PURE__ */
|
|
3186
|
+
endDecorator: /* @__PURE__ */ import_react22.default.createElement(
|
|
3133
3187
|
CalendarButton,
|
|
3134
3188
|
{
|
|
3135
3189
|
ref: buttonRef,
|
|
@@ -3141,13 +3195,13 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3141
3195
|
"aria-expanded": open,
|
|
3142
3196
|
disabled
|
|
3143
3197
|
},
|
|
3144
|
-
/* @__PURE__ */
|
|
3198
|
+
/* @__PURE__ */ import_react22.default.createElement(import_CalendarToday.default, null)
|
|
3145
3199
|
),
|
|
3146
3200
|
label,
|
|
3147
3201
|
helperText,
|
|
3148
3202
|
readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
|
|
3149
3203
|
}
|
|
3150
|
-
), open && /* @__PURE__ */
|
|
3204
|
+
), open && /* @__PURE__ */ import_react22.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react22.default.createElement(
|
|
3151
3205
|
StyledPopper,
|
|
3152
3206
|
{
|
|
3153
3207
|
id: "date-picker-popper",
|
|
@@ -3166,7 +3220,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3166
3220
|
"aria-label": "Calendar Tooltip",
|
|
3167
3221
|
"aria-expanded": open
|
|
3168
3222
|
},
|
|
3169
|
-
/* @__PURE__ */
|
|
3223
|
+
/* @__PURE__ */ import_react22.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react22.default.createElement(CalendarSheetContent, null, /* @__PURE__ */ import_react22.default.createElement(CalendarSection, null, /* @__PURE__ */ import_react22.default.createElement(
|
|
3170
3224
|
Calendar_default,
|
|
3171
3225
|
{
|
|
3172
3226
|
value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
|
|
@@ -3186,14 +3240,14 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3186
3240
|
shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0,
|
|
3187
3241
|
locale
|
|
3188
3242
|
}
|
|
3189
|
-
), !hideClearButton && /* @__PURE__ */
|
|
3243
|
+
), !hideClearButton && /* @__PURE__ */ import_react22.default.createElement(
|
|
3190
3244
|
DialogActions_default,
|
|
3191
3245
|
{
|
|
3192
3246
|
sx: {
|
|
3193
3247
|
p: 1
|
|
3194
3248
|
}
|
|
3195
3249
|
},
|
|
3196
|
-
/* @__PURE__ */
|
|
3250
|
+
/* @__PURE__ */ import_react22.default.createElement(
|
|
3197
3251
|
Button_default,
|
|
3198
3252
|
{
|
|
3199
3253
|
size,
|
|
@@ -3211,9 +3265,9 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3211
3265
|
},
|
|
3212
3266
|
"Clear"
|
|
3213
3267
|
)
|
|
3214
|
-
)), presets && presets.length > 0 && /* @__PURE__ */
|
|
3268
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ import_react22.default.createElement(PresetPanel, null, presets.map((preset) => {
|
|
3215
3269
|
const disabled2 = isPresetDisabled(preset.value);
|
|
3216
|
-
return /* @__PURE__ */
|
|
3270
|
+
return /* @__PURE__ */ import_react22.default.createElement(
|
|
3217
3271
|
PresetItem,
|
|
3218
3272
|
{
|
|
3219
3273
|
key: preset.label,
|
|
@@ -3234,11 +3288,11 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3234
3288
|
var DatePicker_default = DatePicker;
|
|
3235
3289
|
|
|
3236
3290
|
// src/components/Textarea/Textarea.tsx
|
|
3237
|
-
var
|
|
3291
|
+
var import_react23 = __toESM(require("react"));
|
|
3238
3292
|
var import_joy30 = require("@mui/joy");
|
|
3239
3293
|
var import_framer_motion19 = require("framer-motion");
|
|
3240
3294
|
var MotionTextarea = (0, import_framer_motion19.motion)(import_joy30.Textarea);
|
|
3241
|
-
var
|
|
3295
|
+
var TextareaBase = (props) => {
|
|
3242
3296
|
const {
|
|
3243
3297
|
label,
|
|
3244
3298
|
error,
|
|
@@ -3254,7 +3308,7 @@ var Textarea = (props) => {
|
|
|
3254
3308
|
className,
|
|
3255
3309
|
...innerProps
|
|
3256
3310
|
} = props;
|
|
3257
|
-
const textarea = /* @__PURE__ */
|
|
3311
|
+
const textarea = /* @__PURE__ */ import_react23.default.createElement(
|
|
3258
3312
|
MotionTextarea,
|
|
3259
3313
|
{
|
|
3260
3314
|
required,
|
|
@@ -3266,7 +3320,7 @@ var Textarea = (props) => {
|
|
|
3266
3320
|
...innerProps
|
|
3267
3321
|
}
|
|
3268
3322
|
);
|
|
3269
|
-
return /* @__PURE__ */
|
|
3323
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
3270
3324
|
FormControl_default,
|
|
3271
3325
|
{
|
|
3272
3326
|
required,
|
|
@@ -3277,18 +3331,22 @@ var Textarea = (props) => {
|
|
|
3277
3331
|
sx,
|
|
3278
3332
|
className
|
|
3279
3333
|
},
|
|
3280
|
-
label && /* @__PURE__ */
|
|
3334
|
+
label && /* @__PURE__ */ import_react23.default.createElement(FormLabel_default, null, label),
|
|
3281
3335
|
textarea,
|
|
3282
|
-
helperText && /* @__PURE__ */
|
|
3336
|
+
helperText && /* @__PURE__ */ import_react23.default.createElement(FormHelperText_default, null, helperText)
|
|
3283
3337
|
);
|
|
3284
3338
|
};
|
|
3339
|
+
var Textarea = import_react23.default.forwardRef((props, ref) => {
|
|
3340
|
+
const textareaSlotProps = useSlotRef(props.slotProps?.textarea, ref);
|
|
3341
|
+
return /* @__PURE__ */ import_react23.default.createElement(TextareaBase, { ...props, slotProps: { ...props.slotProps, textarea: textareaSlotProps } });
|
|
3342
|
+
});
|
|
3285
3343
|
Textarea.displayName = "Textarea";
|
|
3286
3344
|
|
|
3287
3345
|
// src/components/Textarea/index.ts
|
|
3288
3346
|
var Textarea_default = Textarea;
|
|
3289
3347
|
|
|
3290
3348
|
// src/components/Select/Select.tsx
|
|
3291
|
-
var
|
|
3349
|
+
var import_react24 = __toESM(require("react"));
|
|
3292
3350
|
var import_joy31 = require("@mui/joy");
|
|
3293
3351
|
var import_framer_motion20 = require("framer-motion");
|
|
3294
3352
|
var MotionOption = (0, import_framer_motion20.motion)(import_joy31.Option);
|
|
@@ -3299,7 +3357,7 @@ var secondaryTextLevelMap2 = {
|
|
|
3299
3357
|
lg: "body-md"
|
|
3300
3358
|
};
|
|
3301
3359
|
Option.displayName = "Option";
|
|
3302
|
-
function
|
|
3360
|
+
function SelectInner(props, ref) {
|
|
3303
3361
|
const {
|
|
3304
3362
|
label,
|
|
3305
3363
|
helperText,
|
|
@@ -3325,7 +3383,7 @@ function Select(props) {
|
|
|
3325
3383
|
formHelperText: formHelperTextProps,
|
|
3326
3384
|
...joySlotProps
|
|
3327
3385
|
} = slotProps ?? {};
|
|
3328
|
-
const options = (0,
|
|
3386
|
+
const options = (0, import_react24.useMemo)(
|
|
3329
3387
|
() => props.options.map((option) => {
|
|
3330
3388
|
if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
|
|
3331
3389
|
return option;
|
|
@@ -3350,14 +3408,15 @@ function Select(props) {
|
|
|
3350
3408
|
};
|
|
3351
3409
|
onChange?.(newEvent, newValue);
|
|
3352
3410
|
};
|
|
3353
|
-
const optionMap = (0,
|
|
3411
|
+
const optionMap = (0, import_react24.useMemo)(() => {
|
|
3354
3412
|
const map = /* @__PURE__ */ new Map();
|
|
3355
3413
|
options.forEach((option) => {
|
|
3356
3414
|
map.set(option.value, option);
|
|
3357
3415
|
});
|
|
3358
3416
|
return map;
|
|
3359
3417
|
}, [options]);
|
|
3360
|
-
const
|
|
3418
|
+
const buttonSlotProps = useSlotRef(joySlotProps.button, ref);
|
|
3419
|
+
const select = /* @__PURE__ */ import_react24.default.createElement(
|
|
3361
3420
|
import_joy31.Select,
|
|
3362
3421
|
{
|
|
3363
3422
|
...innerProps,
|
|
@@ -3365,7 +3424,7 @@ function Select(props) {
|
|
|
3365
3424
|
disabled,
|
|
3366
3425
|
size,
|
|
3367
3426
|
color: error ? "danger" : color,
|
|
3368
|
-
slotProps: joySlotProps,
|
|
3427
|
+
slotProps: { ...joySlotProps, button: buttonSlotProps },
|
|
3369
3428
|
onChange: handleChange,
|
|
3370
3429
|
renderValue: (selected) => {
|
|
3371
3430
|
if (!selected) return null;
|
|
@@ -3375,9 +3434,9 @@ function Select(props) {
|
|
|
3375
3434
|
return optionMap.get(selected.value)?.label;
|
|
3376
3435
|
}
|
|
3377
3436
|
},
|
|
3378
|
-
options.map((option) => /* @__PURE__ */
|
|
3437
|
+
options.map((option) => /* @__PURE__ */ import_react24.default.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ import_react24.default.createElement(import_joy31.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react24.default.createElement(import_joy31.Typography, { level: "inherit" }, option.label), /* @__PURE__ */ import_react24.default.createElement(import_joy31.Typography, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
|
|
3379
3438
|
);
|
|
3380
|
-
return /* @__PURE__ */
|
|
3439
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
3381
3440
|
FormControl_default,
|
|
3382
3441
|
{
|
|
3383
3442
|
required,
|
|
@@ -3390,11 +3449,12 @@ function Select(props) {
|
|
|
3390
3449
|
className,
|
|
3391
3450
|
...formControlProps
|
|
3392
3451
|
},
|
|
3393
|
-
label && /* @__PURE__ */
|
|
3452
|
+
label && /* @__PURE__ */ import_react24.default.createElement(FormLabel_default, { ...formLabelProps }, label),
|
|
3394
3453
|
select,
|
|
3395
|
-
helperText && /* @__PURE__ */
|
|
3454
|
+
helperText && /* @__PURE__ */ import_react24.default.createElement(FormHelperText_default, { ...formHelperTextProps }, helperText)
|
|
3396
3455
|
);
|
|
3397
3456
|
}
|
|
3457
|
+
var Select = import_react24.default.forwardRef(SelectInner);
|
|
3398
3458
|
Select.displayName = "Select";
|
|
3399
3459
|
|
|
3400
3460
|
// src/components/Select/index.ts
|
|
@@ -3404,7 +3464,7 @@ var Select_default = Select;
|
|
|
3404
3464
|
var import_joy34 = require("@mui/joy");
|
|
3405
3465
|
|
|
3406
3466
|
// src/components/InfoSign/InfoSign.tsx
|
|
3407
|
-
var
|
|
3467
|
+
var import_react25 = __toESM(require("react"));
|
|
3408
3468
|
var import_joy32 = require("@mui/joy");
|
|
3409
3469
|
var import_Info = __toESM(require("@mui/icons-material/Info"));
|
|
3410
3470
|
var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
|
|
@@ -3417,7 +3477,7 @@ var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
|
|
|
3417
3477
|
}));
|
|
3418
3478
|
function InfoSign(props) {
|
|
3419
3479
|
const { message, placement } = props;
|
|
3420
|
-
return /* @__PURE__ */
|
|
3480
|
+
return /* @__PURE__ */ import_react25.default.createElement(
|
|
3421
3481
|
Tooltip_default,
|
|
3422
3482
|
{
|
|
3423
3483
|
arrow: true,
|
|
@@ -3427,9 +3487,9 @@ function InfoSign(props) {
|
|
|
3427
3487
|
maxWidth: "320px"
|
|
3428
3488
|
}
|
|
3429
3489
|
},
|
|
3430
|
-
title: message?.split("\n").map((line, i) => /* @__PURE__ */
|
|
3490
|
+
title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: `info-sign-${i}` }, line))
|
|
3431
3491
|
},
|
|
3432
|
-
/* @__PURE__ */
|
|
3492
|
+
/* @__PURE__ */ import_react25.default.createElement(InfoIcon, null)
|
|
3433
3493
|
);
|
|
3434
3494
|
}
|
|
3435
3495
|
|
|
@@ -3442,9 +3502,9 @@ var TextEllipsis = ({
|
|
|
3442
3502
|
lineClamp,
|
|
3443
3503
|
...rest
|
|
3444
3504
|
}) => {
|
|
3445
|
-
const textRef = (0,
|
|
3446
|
-
const [showTooltip, setShowTooltip] = (0,
|
|
3447
|
-
(0,
|
|
3505
|
+
const textRef = (0, import_react26.useRef)(null);
|
|
3506
|
+
const [showTooltip, setShowTooltip] = (0, import_react26.useState)(false);
|
|
3507
|
+
(0, import_react26.useLayoutEffect)(() => {
|
|
3448
3508
|
const element = textRef.current;
|
|
3449
3509
|
if (!element) return;
|
|
3450
3510
|
const checkTruncation = () => {
|
|
@@ -3456,21 +3516,21 @@ var TextEllipsis = ({
|
|
|
3456
3516
|
ro.observe(element);
|
|
3457
3517
|
return () => ro.disconnect();
|
|
3458
3518
|
}, [children, lineClamp]);
|
|
3459
|
-
return /* @__PURE__ */
|
|
3519
|
+
return /* @__PURE__ */ import_react26.default.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top" }, /* @__PURE__ */ import_react26.default.createElement(EllipsisDiv, { ref: textRef, lineClamp, ...rest }, children));
|
|
3460
3520
|
};
|
|
3461
3521
|
var CellTextEllipsis = ({ children }) => {
|
|
3462
|
-
const textRef = (0,
|
|
3463
|
-
const [showTooltip, setShowTooltip] = (0,
|
|
3464
|
-
(0,
|
|
3522
|
+
const textRef = (0, import_react26.useRef)(null);
|
|
3523
|
+
const [showTooltip, setShowTooltip] = (0, import_react26.useState)(false);
|
|
3524
|
+
(0, import_react26.useLayoutEffect)(() => {
|
|
3465
3525
|
const element = textRef.current;
|
|
3466
3526
|
if (element) {
|
|
3467
3527
|
const isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
3468
3528
|
setShowTooltip(isTextTruncated);
|
|
3469
3529
|
}
|
|
3470
3530
|
}, [children]);
|
|
3471
|
-
const content = /* @__PURE__ */
|
|
3531
|
+
const content = /* @__PURE__ */ import_react26.default.createElement(EllipsisDiv, { ref: textRef }, children);
|
|
3472
3532
|
if (showTooltip) {
|
|
3473
|
-
return /* @__PURE__ */
|
|
3533
|
+
return /* @__PURE__ */ import_react26.default.createElement(
|
|
3474
3534
|
Tooltip_default,
|
|
3475
3535
|
{
|
|
3476
3536
|
title: children,
|
|
@@ -3514,18 +3574,15 @@ var HeadCell = (props) => {
|
|
|
3514
3574
|
const theme = (0, import_joy33.useTheme)();
|
|
3515
3575
|
const ref = headerRef;
|
|
3516
3576
|
const colRef = tableColRef;
|
|
3517
|
-
const localRef = (0,
|
|
3518
|
-
(0,
|
|
3577
|
+
const localRef = (0, import_react26.useRef)(null);
|
|
3578
|
+
(0, import_react26.useLayoutEffect)(() => {
|
|
3519
3579
|
ref.current = localRef.current;
|
|
3520
3580
|
}, [ref]);
|
|
3521
|
-
const [isHovered, setIsHovered] = (0,
|
|
3581
|
+
const [isHovered, setIsHovered] = (0, import_react26.useState)(false);
|
|
3522
3582
|
const sortable = type === "actions" ? false : _sortable;
|
|
3523
|
-
const headId = (0,
|
|
3524
|
-
|
|
3525
|
-
|
|
3526
|
-
);
|
|
3527
|
-
const isResizingRef = (0, import_react25.useRef)(false);
|
|
3528
|
-
const resizer = (0, import_react25.useMemo)(
|
|
3583
|
+
const headId = (0, import_react26.useMemo)(() => getHeaderCellId(tableId, field), [tableId, field]);
|
|
3584
|
+
const isResizingRef = (0, import_react26.useRef)(false);
|
|
3585
|
+
const resizer = (0, import_react26.useMemo)(
|
|
3529
3586
|
() => resizable ?? true ? Resizer(
|
|
3530
3587
|
ref,
|
|
3531
3588
|
colRef,
|
|
@@ -3536,7 +3593,7 @@ var HeadCell = (props) => {
|
|
|
3536
3593
|
) : null,
|
|
3537
3594
|
[resizable, ref, colRef, onAutoFit, field]
|
|
3538
3595
|
);
|
|
3539
|
-
const style = (0,
|
|
3596
|
+
const style = (0, import_react26.useMemo)(
|
|
3540
3597
|
() => ({
|
|
3541
3598
|
width,
|
|
3542
3599
|
minWidth: minWidth ?? "50px",
|
|
@@ -3554,10 +3611,10 @@ var HeadCell = (props) => {
|
|
|
3554
3611
|
);
|
|
3555
3612
|
const textAlign = getTextAlign(props);
|
|
3556
3613
|
const initialSort = sortOrder[0];
|
|
3557
|
-
const sortIcon = (0,
|
|
3614
|
+
const sortIcon = (0, import_react26.useMemo)(() => {
|
|
3558
3615
|
const isSorted = !!sort;
|
|
3559
3616
|
const isVisible = sortable && (isSorted || isHovered);
|
|
3560
|
-
return /* @__PURE__ */
|
|
3617
|
+
return /* @__PURE__ */ import_react26.default.createElement(import_framer_motion21.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react26.default.createElement(
|
|
3561
3618
|
MotionSortIcon,
|
|
3562
3619
|
{
|
|
3563
3620
|
key: "sort-icon",
|
|
@@ -3585,21 +3642,21 @@ var HeadCell = (props) => {
|
|
|
3585
3642
|
}
|
|
3586
3643
|
));
|
|
3587
3644
|
}, [headId, initialSort, sort, sortable, isHovered]);
|
|
3588
|
-
const infoSign = (0,
|
|
3589
|
-
() => description ? /* @__PURE__ */
|
|
3645
|
+
const infoSign = (0, import_react26.useMemo)(
|
|
3646
|
+
() => description ? /* @__PURE__ */ import_react26.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
|
|
3590
3647
|
[description]
|
|
3591
3648
|
);
|
|
3592
|
-
const params = (0,
|
|
3649
|
+
const params = (0, import_react26.useMemo)(
|
|
3593
3650
|
() => ({
|
|
3594
3651
|
field
|
|
3595
3652
|
}),
|
|
3596
3653
|
[field]
|
|
3597
3654
|
);
|
|
3598
|
-
const computedHeaderClassName = (0,
|
|
3655
|
+
const computedHeaderClassName = (0, import_react26.useMemo)(
|
|
3599
3656
|
() => (typeof headerClassName === "function" ? headerClassName(params) : headerClassName) || void 0,
|
|
3600
3657
|
[headerClassName, params]
|
|
3601
3658
|
);
|
|
3602
|
-
return /* @__PURE__ */
|
|
3659
|
+
return /* @__PURE__ */ import_react26.default.createElement(
|
|
3603
3660
|
StyledTh,
|
|
3604
3661
|
{
|
|
3605
3662
|
id: headId,
|
|
@@ -3608,7 +3665,7 @@ var HeadCell = (props) => {
|
|
|
3608
3665
|
ref: localRef,
|
|
3609
3666
|
key: field,
|
|
3610
3667
|
style,
|
|
3611
|
-
onClick: (0,
|
|
3668
|
+
onClick: (0, import_react26.useCallback)(
|
|
3612
3669
|
(e) => {
|
|
3613
3670
|
if (isResizingRef.current) return;
|
|
3614
3671
|
if (!(e.target instanceof Element) || !e.currentTarget.contains(e.target)) return;
|
|
@@ -3622,7 +3679,7 @@ var HeadCell = (props) => {
|
|
|
3622
3679
|
initial: "initial",
|
|
3623
3680
|
className: computedHeaderClassName
|
|
3624
3681
|
},
|
|
3625
|
-
/* @__PURE__ */
|
|
3682
|
+
/* @__PURE__ */ import_react26.default.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center", sx: { minWidth: 0 } }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ import_react26.default.createElement(TextEllipsis, { lineClamp: headerLineClamp, "data-slot": "header-text" }, headerName ?? field, editMode && required && /* @__PURE__ */ import_react26.default.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
|
|
3626
3683
|
resizer
|
|
3627
3684
|
);
|
|
3628
3685
|
};
|
|
@@ -3647,9 +3704,9 @@ var BodyCell = (props) => {
|
|
|
3647
3704
|
onCellEditStop
|
|
3648
3705
|
} = props;
|
|
3649
3706
|
const theme = (0, import_joy33.useTheme)();
|
|
3650
|
-
const [value, setValue] = (0,
|
|
3651
|
-
const cellRef = (0,
|
|
3652
|
-
const params = (0,
|
|
3707
|
+
const [value, setValue] = (0, import_react26.useState)(row[field]);
|
|
3708
|
+
const cellRef = (0, import_react26.useRef)(null);
|
|
3709
|
+
const params = (0, import_react26.useMemo)(
|
|
3653
3710
|
() => ({
|
|
3654
3711
|
row,
|
|
3655
3712
|
value,
|
|
@@ -3658,20 +3715,20 @@ var BodyCell = (props) => {
|
|
|
3658
3715
|
}),
|
|
3659
3716
|
[row, rowId, value, field]
|
|
3660
3717
|
);
|
|
3661
|
-
const editMode = (0,
|
|
3718
|
+
const editMode = (0, import_react26.useMemo)(
|
|
3662
3719
|
() => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
|
|
3663
3720
|
[props.editMode, isCellEditable, params]
|
|
3664
3721
|
);
|
|
3665
3722
|
const propsComponentProps = "componentProps" in props ? props.componentProps : null;
|
|
3666
3723
|
const hasComponentProps = "componentProps" in props;
|
|
3667
|
-
const componentProps = (0,
|
|
3724
|
+
const componentProps = (0, import_react26.useMemo)(
|
|
3668
3725
|
() => ({
|
|
3669
3726
|
...hasComponentProps && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
|
|
3670
3727
|
size: "sm"
|
|
3671
3728
|
}),
|
|
3672
3729
|
[hasComponentProps, propsComponentProps, params]
|
|
3673
3730
|
);
|
|
3674
|
-
const editModeComponentProps = (0,
|
|
3731
|
+
const editModeComponentProps = (0, import_react26.useMemo)(
|
|
3675
3732
|
() => ({
|
|
3676
3733
|
...componentProps,
|
|
3677
3734
|
onChange: (e) => {
|
|
@@ -3733,25 +3790,25 @@ var BodyCell = (props) => {
|
|
|
3733
3790
|
}),
|
|
3734
3791
|
[params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
|
|
3735
3792
|
);
|
|
3736
|
-
const MemoizedRenderEditCell = (0,
|
|
3737
|
-
const MemoizedRenderCell = (0,
|
|
3738
|
-
const EditModeComponent = (0,
|
|
3793
|
+
const MemoizedRenderEditCell = (0, import_react26.useMemo)(() => renderEditCell ? (0, import_react26.memo)(renderEditCell) : null, [renderEditCell]);
|
|
3794
|
+
const MemoizedRenderCell = (0, import_react26.useMemo)(() => renderCell ? (0, import_react26.memo)(renderCell) : null, [renderCell]);
|
|
3795
|
+
const EditModeComponent = (0, import_react26.useMemo)(() => {
|
|
3739
3796
|
if (MemoizedRenderEditCell) {
|
|
3740
|
-
return (0,
|
|
3797
|
+
return (0, import_react26.createElement)(MemoizedRenderEditCell, params);
|
|
3741
3798
|
}
|
|
3742
3799
|
return {
|
|
3743
|
-
date: /* @__PURE__ */
|
|
3744
|
-
currency: /* @__PURE__ */
|
|
3800
|
+
date: /* @__PURE__ */ import_react26.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
|
|
3801
|
+
currency: /* @__PURE__ */ import_react26.default.createElement(
|
|
3745
3802
|
CurrencyInput_default,
|
|
3746
3803
|
{
|
|
3747
3804
|
value,
|
|
3748
3805
|
...editModeComponentProps
|
|
3749
3806
|
}
|
|
3750
3807
|
),
|
|
3751
|
-
number: /* @__PURE__ */
|
|
3752
|
-
text: /* @__PURE__ */
|
|
3753
|
-
longText: /* @__PURE__ */
|
|
3754
|
-
autocomplete: /* @__PURE__ */
|
|
3808
|
+
number: /* @__PURE__ */ import_react26.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
|
|
3809
|
+
text: /* @__PURE__ */ import_react26.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
|
|
3810
|
+
longText: /* @__PURE__ */ import_react26.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
|
|
3811
|
+
autocomplete: /* @__PURE__ */ import_react26.default.createElement(
|
|
3755
3812
|
Autocomplete_default,
|
|
3756
3813
|
{
|
|
3757
3814
|
value,
|
|
@@ -3759,7 +3816,7 @@ var BodyCell = (props) => {
|
|
|
3759
3816
|
...editModeComponentProps
|
|
3760
3817
|
}
|
|
3761
3818
|
),
|
|
3762
|
-
select: /* @__PURE__ */
|
|
3819
|
+
select: /* @__PURE__ */ import_react26.default.createElement(
|
|
3763
3820
|
Select_default,
|
|
3764
3821
|
{
|
|
3765
3822
|
value,
|
|
@@ -3770,13 +3827,13 @@ var BodyCell = (props) => {
|
|
|
3770
3827
|
}[type || "text"];
|
|
3771
3828
|
}, [value, editModeComponentProps, type, MemoizedRenderEditCell, params]);
|
|
3772
3829
|
const linkComponentFromProps = props.component;
|
|
3773
|
-
const ReadModeComponent = (0,
|
|
3830
|
+
const ReadModeComponent = (0, import_react26.useMemo)(() => {
|
|
3774
3831
|
if (MemoizedRenderCell) {
|
|
3775
|
-
return (0,
|
|
3832
|
+
return (0, import_react26.createElement)(MemoizedRenderCell, params);
|
|
3776
3833
|
}
|
|
3777
3834
|
const innerText = value;
|
|
3778
3835
|
const typedComponent = {
|
|
3779
|
-
link:
|
|
3836
|
+
link: import_react26.default.createElement(linkComponentFromProps || import_joy34.Link, {
|
|
3780
3837
|
children: innerText,
|
|
3781
3838
|
...componentProps
|
|
3782
3839
|
})
|
|
@@ -3784,27 +3841,27 @@ var BodyCell = (props) => {
|
|
|
3784
3841
|
return typedComponent || innerText;
|
|
3785
3842
|
}, [value, MemoizedRenderCell, params, type, componentProps, linkComponentFromProps]);
|
|
3786
3843
|
const getActions = props.getActions;
|
|
3787
|
-
const CellComponent = (0,
|
|
3844
|
+
const CellComponent = (0, import_react26.useMemo)(() => {
|
|
3788
3845
|
if (type === "actions") {
|
|
3789
|
-
return /* @__PURE__ */
|
|
3846
|
+
return /* @__PURE__ */ import_react26.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
|
|
3790
3847
|
}
|
|
3791
3848
|
return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
|
|
3792
3849
|
}, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
|
|
3793
|
-
const showTooltip = (0,
|
|
3850
|
+
const showTooltip = (0, import_react26.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
|
|
3794
3851
|
const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
|
|
3795
|
-
const computedCellClassName = (0,
|
|
3852
|
+
const computedCellClassName = (0, import_react26.useMemo)(
|
|
3796
3853
|
() => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
|
|
3797
3854
|
[cellClassName, params]
|
|
3798
3855
|
);
|
|
3799
|
-
(0,
|
|
3856
|
+
(0, import_react26.useEffect)(() => {
|
|
3800
3857
|
setValue(row[field]);
|
|
3801
3858
|
}, [row, field]);
|
|
3802
|
-
return /* @__PURE__ */
|
|
3859
|
+
return /* @__PURE__ */ import_react26.default.createElement(
|
|
3803
3860
|
StyledTd,
|
|
3804
3861
|
{
|
|
3805
3862
|
ref: cellRef,
|
|
3806
3863
|
key: field,
|
|
3807
|
-
headers:
|
|
3864
|
+
headers: getHeaderCellId(tableId, field),
|
|
3808
3865
|
sx: {
|
|
3809
3866
|
textAlign: getTextAlign({ type }),
|
|
3810
3867
|
verticalAlign: editMode ? "top" : "middle",
|
|
@@ -3816,16 +3873,16 @@ var BodyCell = (props) => {
|
|
|
3816
3873
|
},
|
|
3817
3874
|
className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
|
|
3818
3875
|
},
|
|
3819
|
-
(0,
|
|
3820
|
-
() => showTooltip ? /* @__PURE__ */
|
|
3876
|
+
(0, import_react26.useMemo)(
|
|
3877
|
+
() => showTooltip ? /* @__PURE__ */ import_react26.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
|
|
3821
3878
|
[CellComponent, showTooltip]
|
|
3822
3879
|
)
|
|
3823
3880
|
);
|
|
3824
3881
|
};
|
|
3825
|
-
var BodyRow = (0,
|
|
3882
|
+
var BodyRow = (0, import_react26.memo)(
|
|
3826
3883
|
(props) => {
|
|
3827
3884
|
const { tableId, columns, rowId, editMode, noWrap, row } = props;
|
|
3828
|
-
return /* @__PURE__ */
|
|
3885
|
+
return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react26.default.createElement(
|
|
3829
3886
|
BodyCell,
|
|
3830
3887
|
{
|
|
3831
3888
|
key: `${rowId}_${column.field.toString()}_${i}`,
|
|
@@ -3858,7 +3915,7 @@ var StyledTableRow2 = (0, import_joy33.styled)("tr", {
|
|
|
3858
3915
|
}
|
|
3859
3916
|
}
|
|
3860
3917
|
}));
|
|
3861
|
-
var VirtualizedTableRow = (0,
|
|
3918
|
+
var VirtualizedTableRow = (0, import_react26.memo)(StyledTableRow2, (prevProps, nextProps) => {
|
|
3862
3919
|
return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
|
|
3863
3920
|
prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
|
|
3864
3921
|
prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Track column structure changes (e.g. isCellEditable toggled, columns added/removed)
|
|
@@ -3869,19 +3926,20 @@ var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow2, (prevProps,
|
|
|
3869
3926
|
});
|
|
3870
3927
|
|
|
3871
3928
|
// src/components/DataTable/hooks.ts
|
|
3872
|
-
var
|
|
3929
|
+
var import_react27 = require("react");
|
|
3873
3930
|
function useColumnWidths(columnsByField) {
|
|
3874
|
-
const [widths, setWidths] = (0,
|
|
3875
|
-
const roRef = (0,
|
|
3876
|
-
(0,
|
|
3931
|
+
const [widths, setWidths] = (0, import_react27.useState)({});
|
|
3932
|
+
const roRef = (0, import_react27.useRef)();
|
|
3933
|
+
(0, import_react27.useLayoutEffect)(() => {
|
|
3877
3934
|
if (roRef.current) roRef.current.disconnect();
|
|
3878
3935
|
roRef.current = new ResizeObserver((entries) => {
|
|
3879
|
-
let changed = false;
|
|
3880
3936
|
setWidths((prev) => {
|
|
3937
|
+
let changed = false;
|
|
3881
3938
|
const next = { ...prev };
|
|
3882
3939
|
entries.forEach((entry) => {
|
|
3883
3940
|
const field = entry.target.dataset.field;
|
|
3884
3941
|
const w = Math.round(entry.target.getBoundingClientRect().width);
|
|
3942
|
+
if (w === 0) return;
|
|
3885
3943
|
if (next[field] !== w) {
|
|
3886
3944
|
next[field] = w;
|
|
3887
3945
|
changed = true;
|
|
@@ -3890,13 +3948,21 @@ function useColumnWidths(columnsByField) {
|
|
|
3890
3948
|
return changed ? next : prev;
|
|
3891
3949
|
});
|
|
3892
3950
|
});
|
|
3951
|
+
const measured = {};
|
|
3893
3952
|
Object.entries(columnsByField).forEach(([field, def]) => {
|
|
3894
3953
|
const el = def.headerRef.current;
|
|
3895
3954
|
if (el) {
|
|
3896
3955
|
el.dataset.field = field;
|
|
3956
|
+
const w = Math.round(el.getBoundingClientRect().width);
|
|
3957
|
+
if (w > 0) measured[field] = w;
|
|
3897
3958
|
roRef.current.observe(el);
|
|
3898
3959
|
}
|
|
3899
3960
|
});
|
|
3961
|
+
setWidths((prev) => {
|
|
3962
|
+
const keys = Object.keys(measured);
|
|
3963
|
+
const same = keys.every((key) => prev[key] === measured[key]);
|
|
3964
|
+
return same ? prev : { ...prev, ...measured };
|
|
3965
|
+
});
|
|
3900
3966
|
return () => roRef.current?.disconnect();
|
|
3901
3967
|
}, [columnsByField]);
|
|
3902
3968
|
return widths;
|
|
@@ -3930,33 +3996,40 @@ function useDataTableRenderer({
|
|
|
3930
3996
|
"You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
|
|
3931
3997
|
);
|
|
3932
3998
|
}
|
|
3933
|
-
const
|
|
3999
|
+
const duplicatedField = (0, import_react27.useMemo)(() => {
|
|
4000
|
+
const ids = columnsProp.map((column) => sanitizeColumnId(column.field));
|
|
4001
|
+
const index = ids.findIndex((id, i) => ids.indexOf(id) !== i);
|
|
4002
|
+
return index === -1 ? void 0 : columnsProp[index].field;
|
|
4003
|
+
}, [columnsProp]);
|
|
4004
|
+
if (duplicatedField !== void 0)
|
|
4005
|
+
throw new Error(`DataTable: column \`field\` must be unique. Duplicated: "${String(duplicatedField)}"`);
|
|
4006
|
+
const onSelectionModelChangeRef = (0, import_react27.useRef)(onSelectionModelChange);
|
|
3934
4007
|
onSelectionModelChangeRef.current = onSelectionModelChange;
|
|
3935
|
-
const [focusedRowId, setFocusedRowId] = (0,
|
|
3936
|
-
const [selectionAnchor, setSelectionAnchor] = (0,
|
|
4008
|
+
const [focusedRowId, setFocusedRowId] = (0, import_react27.useState)(null);
|
|
4009
|
+
const [selectionAnchor, setSelectionAnchor] = (0, import_react27.useState)(null);
|
|
3937
4010
|
const [sortModel, setSortModel] = useControlledState(
|
|
3938
4011
|
controlledSortModel,
|
|
3939
4012
|
initialState?.sorting?.sortModel ?? [],
|
|
3940
|
-
(0,
|
|
4013
|
+
(0, import_react27.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
|
|
3941
4014
|
);
|
|
3942
4015
|
const [visibilityModel] = useControlledState(
|
|
3943
4016
|
columnVisibilityModel,
|
|
3944
4017
|
initialState?.columns?.columnVisibilityModel ?? {},
|
|
3945
|
-
(0,
|
|
4018
|
+
(0, import_react27.useCallback)(
|
|
3946
4019
|
(model) => onColumnVisibilityModelChange?.(model),
|
|
3947
4020
|
[onColumnVisibilityModelChange]
|
|
3948
4021
|
)
|
|
3949
4022
|
);
|
|
3950
|
-
const reorderedColumns = (0,
|
|
4023
|
+
const reorderedColumns = (0, import_react27.useMemo)(() => {
|
|
3951
4024
|
if (!columnGroupingModel) return columnsProp;
|
|
3952
4025
|
return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
|
|
3953
4026
|
}, [columnsProp, columnGroupingModel]);
|
|
3954
|
-
const visibleColumns = (0,
|
|
4027
|
+
const visibleColumns = (0, import_react27.useMemo)(
|
|
3955
4028
|
() => reorderedColumns.filter((col) => visibilityModel[col.field] !== false),
|
|
3956
4029
|
[reorderedColumns, visibilityModel]
|
|
3957
4030
|
);
|
|
3958
|
-
const visibleFieldSet = (0,
|
|
3959
|
-
const tableMinWidth = (0,
|
|
4031
|
+
const visibleFieldSet = (0, import_react27.useMemo)(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
|
|
4032
|
+
const tableMinWidth = (0, import_react27.useMemo)(() => {
|
|
3960
4033
|
const DEFAULT_MIN = 50;
|
|
3961
4034
|
let total = checkboxSelection ? 40 : 0;
|
|
3962
4035
|
for (const col of visibleColumns) {
|
|
@@ -3964,7 +4037,7 @@ function useDataTableRenderer({
|
|
|
3964
4037
|
}
|
|
3965
4038
|
return total;
|
|
3966
4039
|
}, [visibleColumns, checkboxSelection]);
|
|
3967
|
-
const allColumnsByField = (0,
|
|
4040
|
+
const allColumnsByField = (0, import_react27.useMemo)(
|
|
3968
4041
|
() => reorderedColumns.reduce(
|
|
3969
4042
|
(acc, curr) => ({
|
|
3970
4043
|
...acc,
|
|
@@ -3974,21 +4047,20 @@ function useDataTableRenderer({
|
|
|
3974
4047
|
),
|
|
3975
4048
|
[reorderedColumns]
|
|
3976
4049
|
);
|
|
3977
|
-
const visibleColumnsByField = (0,
|
|
3978
|
-
() =>
|
|
3979
|
-
(
|
|
3980
|
-
|
|
3981
|
-
|
|
3982
|
-
...
|
|
3983
|
-
headerRef: (0,
|
|
3984
|
-
tableColRef: (0,
|
|
4050
|
+
const visibleColumnsByField = (0, import_react27.useMemo)(
|
|
4051
|
+
() => Object.fromEntries(
|
|
4052
|
+
visibleColumns.map((column) => [
|
|
4053
|
+
column.field,
|
|
4054
|
+
{
|
|
4055
|
+
...column,
|
|
4056
|
+
headerRef: (0, import_react27.createRef)(),
|
|
4057
|
+
tableColRef: (0, import_react27.createRef)()
|
|
3985
4058
|
}
|
|
3986
|
-
|
|
3987
|
-
{}
|
|
4059
|
+
])
|
|
3988
4060
|
),
|
|
3989
4061
|
[visibleColumns]
|
|
3990
4062
|
);
|
|
3991
|
-
const sortComparator = (0,
|
|
4063
|
+
const sortComparator = (0, import_react27.useCallback)(
|
|
3992
4064
|
(rowA, rowB) => {
|
|
3993
4065
|
for (const sort of sortModel) {
|
|
3994
4066
|
const { field, sort: direction } = sort;
|
|
@@ -4017,33 +4089,33 @@ function useDataTableRenderer({
|
|
|
4017
4089
|
},
|
|
4018
4090
|
[sortModel, allColumnsByField]
|
|
4019
4091
|
);
|
|
4020
|
-
const rows = (0,
|
|
4092
|
+
const rows = (0, import_react27.useMemo)(
|
|
4021
4093
|
() => sortModel.length ? [..._rows].sort(sortComparator) : _rows,
|
|
4022
4094
|
[_rows, sortModel, sortComparator]
|
|
4023
4095
|
);
|
|
4024
|
-
const sortOrder = (0,
|
|
4096
|
+
const sortOrder = (0, import_react27.useMemo)(
|
|
4025
4097
|
() => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
|
|
4026
4098
|
[_sortOrder]
|
|
4027
4099
|
);
|
|
4028
|
-
const [page, setPage] = (0,
|
|
4100
|
+
const [page, setPage] = (0, import_react27.useState)(paginationModel?.page || 1);
|
|
4029
4101
|
const pageSize = paginationModel?.pageSize || 20;
|
|
4030
|
-
const getId = (0,
|
|
4102
|
+
const getId = (0, import_react27.useCallback)(
|
|
4031
4103
|
(row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
|
|
4032
4104
|
[_getId, page, pageSize]
|
|
4033
4105
|
);
|
|
4034
|
-
const selectedModelSet = (0,
|
|
4035
|
-
const dataInPage = (0,
|
|
4106
|
+
const selectedModelSet = (0, import_react27.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
|
|
4107
|
+
const dataInPage = (0, import_react27.useMemo)(
|
|
4036
4108
|
() => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
|
|
4037
4109
|
[rows, page, pageSize, paginationMode, pagination]
|
|
4038
4110
|
);
|
|
4039
|
-
const selectableDataInPage = (0,
|
|
4111
|
+
const selectableDataInPage = (0, import_react27.useMemo)(
|
|
4040
4112
|
() => dataInPage.filter((row, i) => {
|
|
4041
4113
|
if (!isRowSelectable) return true;
|
|
4042
4114
|
return isRowSelectable({ row, id: getId(row, i) });
|
|
4043
4115
|
}),
|
|
4044
4116
|
[dataInPage, isRowSelectable, getId]
|
|
4045
4117
|
);
|
|
4046
|
-
const handleRangeSelection = (0,
|
|
4118
|
+
const handleRangeSelection = (0, import_react27.useCallback)(
|
|
4047
4119
|
(anchor, targetIndex) => {
|
|
4048
4120
|
const startIndex = Math.min(anchor.rowIndex, targetIndex);
|
|
4049
4121
|
const endIndex = Math.max(anchor.rowIndex, targetIndex);
|
|
@@ -4066,40 +4138,41 @@ function useDataTableRenderer({
|
|
|
4066
4138
|
},
|
|
4067
4139
|
[dataInPage, getId, isRowSelectable, selectionModel, onSelectionModelChange]
|
|
4068
4140
|
);
|
|
4069
|
-
const isAllSelected = (0,
|
|
4141
|
+
const isAllSelected = (0, import_react27.useMemo)(
|
|
4070
4142
|
() => selectableDataInPage.length > 0 && selectableDataInPage.every((row, i) => selectedModelSet.has(getId(row, i))),
|
|
4071
4143
|
[selectableDataInPage, selectedModelSet, getId]
|
|
4072
4144
|
);
|
|
4073
4145
|
const rowCount = totalRowsProp || rows.length;
|
|
4074
|
-
const selectableRowCount = (0,
|
|
4146
|
+
const selectableRowCount = (0, import_react27.useMemo)(() => {
|
|
4075
4147
|
if (!isRowSelectable) return rowCount;
|
|
4076
4148
|
return rows.filter((row, i) => isRowSelectable({ row, id: getId(row, i) })).length;
|
|
4077
4149
|
}, [rows, isRowSelectable, getId, rowCount]);
|
|
4078
|
-
const isTotalSelected = (0,
|
|
4150
|
+
const isTotalSelected = (0, import_react27.useMemo)(
|
|
4079
4151
|
() => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
|
|
4080
4152
|
[_isTotalSelected, selectionModel, selectableRowCount]
|
|
4081
4153
|
);
|
|
4082
4154
|
const columnWidths = useColumnWidths(visibleColumnsByField);
|
|
4083
|
-
const getWidth = (0,
|
|
4084
|
-
|
|
4085
|
-
allColumnsByField[f]?.
|
|
4155
|
+
const getWidth = (0, import_react27.useCallback)(
|
|
4156
|
+
// 반환값은 pinned offset으로 더해지므로 반드시 숫자여야 한다. width/minWidth는 '500px' 같은 문자열.
|
|
4157
|
+
(f) => columnWidths[f] ?? parsePxValue(allColumnsByField[f]?.width) ?? // Column prop 으로 지정된 width
|
|
4158
|
+
parsePxValue(allColumnsByField[f]?.minWidth) ?? 0,
|
|
4086
4159
|
[columnWidths, allColumnsByField]
|
|
4087
4160
|
);
|
|
4088
|
-
const processedColumnGroups = (0,
|
|
4161
|
+
const processedColumnGroups = (0, import_react27.useMemo)(() => {
|
|
4089
4162
|
if (!columnGroupingModel) return null;
|
|
4090
4163
|
return calculateColumnGroups(columnGroupingModel, visibleColumns, visibleFieldSet);
|
|
4091
4164
|
}, [columnGroupingModel, visibleColumns, visibleFieldSet]);
|
|
4092
|
-
const effectivePinnedLeft = (0,
|
|
4165
|
+
const effectivePinnedLeft = (0, import_react27.useMemo)(
|
|
4093
4166
|
() => pinnedColumns?.left?.filter((f) => visibleFieldSet.has(f)),
|
|
4094
4167
|
[pinnedColumns?.left, visibleFieldSet]
|
|
4095
4168
|
);
|
|
4096
|
-
const effectivePinnedRight = (0,
|
|
4169
|
+
const effectivePinnedRight = (0, import_react27.useMemo)(
|
|
4097
4170
|
() => pinnedColumns?.right?.filter((f) => visibleFieldSet.has(f)),
|
|
4098
4171
|
[pinnedColumns?.right, visibleFieldSet]
|
|
4099
4172
|
);
|
|
4100
4173
|
const inferredFieldsKey = JSON.stringify(Object.keys(rows[0] || {}));
|
|
4101
|
-
const inferredFields = (0,
|
|
4102
|
-
const columns = (0,
|
|
4174
|
+
const inferredFields = (0, import_react27.useMemo)(() => JSON.parse(inferredFieldsKey), [inferredFieldsKey]);
|
|
4175
|
+
const columns = (0, import_react27.useMemo)(() => {
|
|
4103
4176
|
const baseColumns = visibleColumns.length > 0 ? visibleColumns : reorderedColumns.length > 0 ? [] : inferredFields.map((key) => ({
|
|
4104
4177
|
field: key
|
|
4105
4178
|
}));
|
|
@@ -4134,14 +4207,14 @@ function useDataTableRenderer({
|
|
|
4134
4207
|
sortOrder,
|
|
4135
4208
|
getWidth
|
|
4136
4209
|
]);
|
|
4137
|
-
const handlePageChange = (0,
|
|
4210
|
+
const handlePageChange = (0, import_react27.useCallback)(
|
|
4138
4211
|
(newPage) => {
|
|
4139
4212
|
setPage(newPage);
|
|
4140
4213
|
onPaginationModelChange?.({ page: newPage, pageSize });
|
|
4141
4214
|
},
|
|
4142
4215
|
[onPaginationModelChange, pageSize]
|
|
4143
4216
|
);
|
|
4144
|
-
const handleSortChange = (0,
|
|
4217
|
+
const handleSortChange = (0, import_react27.useCallback)(
|
|
4145
4218
|
(props) => {
|
|
4146
4219
|
const { field, currentSort, multiple } = props;
|
|
4147
4220
|
const column = allColumnsByField[field];
|
|
@@ -4164,38 +4237,37 @@ function useDataTableRenderer({
|
|
|
4164
4237
|
},
|
|
4165
4238
|
[sortOrder, allColumnsByField, sortModel, setSortModel]
|
|
4166
4239
|
);
|
|
4167
|
-
(0,
|
|
4240
|
+
(0, import_react27.useEffect)(() => {
|
|
4168
4241
|
if (!paginationModel) {
|
|
4169
4242
|
handlePageChange(1);
|
|
4170
4243
|
}
|
|
4171
4244
|
}, [rowCount, handlePageChange, paginationModel]);
|
|
4172
|
-
(0,
|
|
4245
|
+
(0, import_react27.useEffect)(() => {
|
|
4173
4246
|
const lastPage = Math.max(1, Math.ceil(rowCount / pageSize));
|
|
4174
4247
|
if (page > lastPage) {
|
|
4175
4248
|
handlePageChange(lastPage);
|
|
4176
4249
|
}
|
|
4177
4250
|
}, [page, rowCount, pageSize, handlePageChange]);
|
|
4178
|
-
(0,
|
|
4251
|
+
(0, import_react27.useEffect)(() => {
|
|
4179
4252
|
onSelectionModelChangeRef.current?.([]);
|
|
4180
4253
|
setSelectionAnchor(null);
|
|
4181
4254
|
}, [page]);
|
|
4182
|
-
const prevRowsRef = (0,
|
|
4183
|
-
(0,
|
|
4255
|
+
const prevRowsRef = (0, import_react27.useRef)(_rows);
|
|
4256
|
+
(0, import_react27.useEffect)(() => {
|
|
4184
4257
|
if (prevRowsRef.current !== _rows) {
|
|
4185
4258
|
setSelectionAnchor(null);
|
|
4186
4259
|
prevRowsRef.current = _rows;
|
|
4187
4260
|
}
|
|
4188
4261
|
}, [_rows]);
|
|
4189
|
-
const handleAutoFit = (0,
|
|
4262
|
+
const handleAutoFit = (0, import_react27.useCallback)(
|
|
4190
4263
|
(field) => {
|
|
4191
4264
|
const colDef = visibleColumnsByField[field];
|
|
4192
4265
|
if (!colDef?.headerRef.current) return;
|
|
4193
|
-
const
|
|
4194
|
-
const columnType = column && "type" in column ? column.type : void 0;
|
|
4266
|
+
const columnType = "type" in colDef ? colDef.type : void 0;
|
|
4195
4267
|
if (columnType === "actions") return;
|
|
4196
4268
|
const optimalWidth = computeAutoFitWidth({
|
|
4197
4269
|
headerEl: colDef.headerRef.current,
|
|
4198
|
-
field,
|
|
4270
|
+
field: colDef.field,
|
|
4199
4271
|
dataInPage
|
|
4200
4272
|
});
|
|
4201
4273
|
if (optimalWidth == null) return;
|
|
@@ -4203,7 +4275,7 @@ function useDataTableRenderer({
|
|
|
4203
4275
|
colDef.headerRef.current.style.width = widthPx;
|
|
4204
4276
|
if (colDef.tableColRef.current) colDef.tableColRef.current.style.width = widthPx;
|
|
4205
4277
|
},
|
|
4206
|
-
[visibleColumnsByField,
|
|
4278
|
+
[visibleColumnsByField, dataInPage]
|
|
4207
4279
|
);
|
|
4208
4280
|
return {
|
|
4209
4281
|
rowCount,
|
|
@@ -4219,8 +4291,8 @@ function useDataTableRenderer({
|
|
|
4219
4291
|
handleAutoFit,
|
|
4220
4292
|
isAllSelected,
|
|
4221
4293
|
isTotalSelected,
|
|
4222
|
-
isSelectedRow: (0,
|
|
4223
|
-
isRowSelectable: (0,
|
|
4294
|
+
isSelectedRow: (0, import_react27.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
|
|
4295
|
+
isRowSelectable: (0, import_react27.useCallback)(
|
|
4224
4296
|
(rowId, row) => {
|
|
4225
4297
|
if (!isRowSelectable) return true;
|
|
4226
4298
|
return isRowSelectable({ row, id: rowId });
|
|
@@ -4228,13 +4300,13 @@ function useDataTableRenderer({
|
|
|
4228
4300
|
[isRowSelectable]
|
|
4229
4301
|
),
|
|
4230
4302
|
focusedRowId,
|
|
4231
|
-
onRowFocus: (0,
|
|
4303
|
+
onRowFocus: (0, import_react27.useCallback)((rowId) => {
|
|
4232
4304
|
setFocusedRowId(rowId);
|
|
4233
4305
|
}, []),
|
|
4234
|
-
onAllCheckboxChange: (0,
|
|
4306
|
+
onAllCheckboxChange: (0, import_react27.useCallback)(() => {
|
|
4235
4307
|
onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
|
|
4236
4308
|
}, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
|
|
4237
|
-
onCheckboxChange: (0,
|
|
4309
|
+
onCheckboxChange: (0, import_react27.useCallback)(
|
|
4238
4310
|
(event, selectedModel) => {
|
|
4239
4311
|
const isShiftClick = "shiftKey" in event && event.shiftKey;
|
|
4240
4312
|
const rowIndex = dataInPage.findIndex((row, i) => getId(row, i) === selectedModel);
|
|
@@ -4268,7 +4340,7 @@ function useDataTableRenderer({
|
|
|
4268
4340
|
columns,
|
|
4269
4341
|
tableMinWidth,
|
|
4270
4342
|
processedColumnGroups,
|
|
4271
|
-
onTotalSelect: (0,
|
|
4343
|
+
onTotalSelect: (0, import_react27.useCallback)(() => {
|
|
4272
4344
|
const selectableRows = rows.filter((row, i) => {
|
|
4273
4345
|
if (!isRowSelectable) return true;
|
|
4274
4346
|
return isRowSelectable({ row, id: getId(row, i) });
|
|
@@ -4282,11 +4354,11 @@ function useDataTableRenderer({
|
|
|
4282
4354
|
}
|
|
4283
4355
|
|
|
4284
4356
|
// src/components/Table/Table.tsx
|
|
4285
|
-
var
|
|
4357
|
+
var import_react28 = __toESM(require("react"));
|
|
4286
4358
|
var import_joy35 = require("@mui/joy");
|
|
4287
4359
|
var Table = (props) => {
|
|
4288
4360
|
const { children, ...inheritProps } = props;
|
|
4289
|
-
return /* @__PURE__ */
|
|
4361
|
+
return /* @__PURE__ */ import_react28.default.createElement(import_joy35.Table, { ...inheritProps }, children);
|
|
4290
4362
|
};
|
|
4291
4363
|
Table.displayName = "Table";
|
|
4292
4364
|
function TableHead(props) {
|
|
@@ -4297,7 +4369,7 @@ function TableHead(props) {
|
|
|
4297
4369
|
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
4298
4370
|
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
4299
4371
|
} = props;
|
|
4300
|
-
return /* @__PURE__ */
|
|
4372
|
+
return /* @__PURE__ */ import_react28.default.createElement("thead", null, /* @__PURE__ */ import_react28.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react28.default.createElement(
|
|
4301
4373
|
"th",
|
|
4302
4374
|
{
|
|
4303
4375
|
style: {
|
|
@@ -4305,8 +4377,8 @@ function TableHead(props) {
|
|
|
4305
4377
|
textAlign: "center"
|
|
4306
4378
|
}
|
|
4307
4379
|
},
|
|
4308
|
-
/* @__PURE__ */
|
|
4309
|
-
), headCells.map((headCell) => /* @__PURE__ */
|
|
4380
|
+
/* @__PURE__ */ import_react28.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
|
|
4381
|
+
), headCells.map((headCell) => /* @__PURE__ */ import_react28.default.createElement(
|
|
4310
4382
|
"th",
|
|
4311
4383
|
{
|
|
4312
4384
|
key: headCell.label,
|
|
@@ -4331,15 +4403,15 @@ function TableBody(props) {
|
|
|
4331
4403
|
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
4332
4404
|
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
4333
4405
|
} = props;
|
|
4334
|
-
return /* @__PURE__ */
|
|
4406
|
+
return /* @__PURE__ */ import_react28.default.createElement("tbody", null, rows.map((row, rowIndex) => /* @__PURE__ */ import_react28.default.createElement("tr", { key: `table-row-${rowIndex}` }, showCheckbox && /* @__PURE__ */ import_react28.default.createElement(
|
|
4335
4407
|
"td",
|
|
4336
4408
|
{
|
|
4337
4409
|
style: {
|
|
4338
4410
|
textAlign: "center"
|
|
4339
4411
|
}
|
|
4340
4412
|
},
|
|
4341
|
-
/* @__PURE__ */
|
|
4342
|
-
), cellOrder.map((cellKey) => /* @__PURE__ */
|
|
4413
|
+
/* @__PURE__ */ import_react28.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
|
|
4414
|
+
), cellOrder.map((cellKey) => /* @__PURE__ */ import_react28.default.createElement(
|
|
4343
4415
|
"td",
|
|
4344
4416
|
{
|
|
4345
4417
|
key: cellKey,
|
|
@@ -4353,7 +4425,7 @@ function TableBody(props) {
|
|
|
4353
4425
|
TableBody.displayName = "TableBody";
|
|
4354
4426
|
|
|
4355
4427
|
// src/components/Pagination/Pagination.tsx
|
|
4356
|
-
var
|
|
4428
|
+
var import_react29 = __toESM(require("react"));
|
|
4357
4429
|
var import_ChevronLeftRounded = __toESM(require("@mui/icons-material/ChevronLeftRounded"));
|
|
4358
4430
|
var import_ChevronRightRounded = __toESM(require("@mui/icons-material/ChevronRightRounded"));
|
|
4359
4431
|
var import_FirstPageRounded = __toESM(require("@mui/icons-material/FirstPageRounded"));
|
|
@@ -4423,7 +4495,7 @@ function Pagination(inProps) {
|
|
|
4423
4495
|
const [paginationModel, setPaginationModel] = useControlledState(
|
|
4424
4496
|
_paginationModel,
|
|
4425
4497
|
defaultPaginationModel,
|
|
4426
|
-
(0,
|
|
4498
|
+
(0, import_react29.useCallback)(
|
|
4427
4499
|
(newPage) => {
|
|
4428
4500
|
onPageChange(newPage.page);
|
|
4429
4501
|
},
|
|
@@ -4439,7 +4511,7 @@ function Pagination(inProps) {
|
|
|
4439
4511
|
const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
|
|
4440
4512
|
const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
|
|
4441
4513
|
const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
|
|
4442
|
-
(0,
|
|
4514
|
+
(0, import_react29.useEffect)(() => {
|
|
4443
4515
|
if (paginationModel.page > lastPage) {
|
|
4444
4516
|
setPaginationModel({ ...paginationModel, page: lastPage });
|
|
4445
4517
|
}
|
|
@@ -4449,7 +4521,7 @@ function Pagination(inProps) {
|
|
|
4449
4521
|
value: `${i + 1}`
|
|
4450
4522
|
}));
|
|
4451
4523
|
if (variant === "compact") {
|
|
4452
|
-
return /* @__PURE__ */
|
|
4524
|
+
return /* @__PURE__ */ import_react29.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react29.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react29.default.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4453
4525
|
PaginationIconButton,
|
|
4454
4526
|
{
|
|
4455
4527
|
size,
|
|
@@ -4459,8 +4531,8 @@ function Pagination(inProps) {
|
|
|
4459
4531
|
disabled: paginationModel.page === firstPage,
|
|
4460
4532
|
"aria-label": "First page"
|
|
4461
4533
|
},
|
|
4462
|
-
/* @__PURE__ */
|
|
4463
|
-
), /* @__PURE__ */
|
|
4534
|
+
/* @__PURE__ */ import_react29.default.createElement(import_FirstPageRounded.default, null)
|
|
4535
|
+
), /* @__PURE__ */ import_react29.default.createElement(
|
|
4464
4536
|
PaginationIconButton,
|
|
4465
4537
|
{
|
|
4466
4538
|
size,
|
|
@@ -4470,8 +4542,8 @@ function Pagination(inProps) {
|
|
|
4470
4542
|
disabled: paginationModel.page === firstPage,
|
|
4471
4543
|
"aria-label": "Previous page"
|
|
4472
4544
|
},
|
|
4473
|
-
/* @__PURE__ */
|
|
4474
|
-
)), /* @__PURE__ */
|
|
4545
|
+
/* @__PURE__ */ import_react29.default.createElement(import_ChevronLeftRounded.default, null)
|
|
4546
|
+
)), /* @__PURE__ */ import_react29.default.createElement(
|
|
4475
4547
|
Autocomplete_default,
|
|
4476
4548
|
{
|
|
4477
4549
|
size,
|
|
@@ -4490,7 +4562,7 @@ function Pagination(inProps) {
|
|
|
4490
4562
|
}[size]
|
|
4491
4563
|
}
|
|
4492
4564
|
}
|
|
4493
|
-
), /* @__PURE__ */
|
|
4565
|
+
), /* @__PURE__ */ import_react29.default.createElement(
|
|
4494
4566
|
Typography_default,
|
|
4495
4567
|
{
|
|
4496
4568
|
level: `body-${size}`,
|
|
@@ -4501,7 +4573,7 @@ function Pagination(inProps) {
|
|
|
4501
4573
|
},
|
|
4502
4574
|
"/ ",
|
|
4503
4575
|
lastPage
|
|
4504
|
-
), /* @__PURE__ */
|
|
4576
|
+
), /* @__PURE__ */ import_react29.default.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4505
4577
|
PaginationIconButton,
|
|
4506
4578
|
{
|
|
4507
4579
|
size,
|
|
@@ -4511,8 +4583,8 @@ function Pagination(inProps) {
|
|
|
4511
4583
|
disabled: paginationModel.page === lastPage,
|
|
4512
4584
|
"aria-label": "Next page"
|
|
4513
4585
|
},
|
|
4514
|
-
/* @__PURE__ */
|
|
4515
|
-
), /* @__PURE__ */
|
|
4586
|
+
/* @__PURE__ */ import_react29.default.createElement(import_ChevronRightRounded.default, null)
|
|
4587
|
+
), /* @__PURE__ */ import_react29.default.createElement(
|
|
4516
4588
|
PaginationIconButton,
|
|
4517
4589
|
{
|
|
4518
4590
|
size,
|
|
@@ -4522,10 +4594,10 @@ function Pagination(inProps) {
|
|
|
4522
4594
|
disabled: paginationModel.page === lastPage,
|
|
4523
4595
|
"aria-label": "Last page"
|
|
4524
4596
|
},
|
|
4525
|
-
/* @__PURE__ */
|
|
4597
|
+
/* @__PURE__ */ import_react29.default.createElement(import_LastPageRounded.default, null)
|
|
4526
4598
|
))));
|
|
4527
4599
|
}
|
|
4528
|
-
return /* @__PURE__ */
|
|
4600
|
+
return /* @__PURE__ */ import_react29.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react29.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4529
4601
|
PaginationIconButton,
|
|
4530
4602
|
{
|
|
4531
4603
|
size,
|
|
@@ -4535,8 +4607,8 @@ function Pagination(inProps) {
|
|
|
4535
4607
|
disabled: paginationModel.page === firstPage,
|
|
4536
4608
|
"aria-label": "Previous page"
|
|
4537
4609
|
},
|
|
4538
|
-
/* @__PURE__ */
|
|
4539
|
-
), paginationModel.page !== firstPage && /* @__PURE__ */
|
|
4610
|
+
/* @__PURE__ */ import_react29.default.createElement(import_ChevronLeftRounded.default, null)
|
|
4611
|
+
), paginationModel.page !== firstPage && /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react29.default.createElement(
|
|
4540
4612
|
PaginationButton,
|
|
4541
4613
|
{
|
|
4542
4614
|
size,
|
|
@@ -4546,7 +4618,7 @@ function Pagination(inProps) {
|
|
|
4546
4618
|
"aria-label": "More previous pages"
|
|
4547
4619
|
},
|
|
4548
4620
|
"..."
|
|
4549
|
-
), beforePages.map((p) => /* @__PURE__ */
|
|
4621
|
+
), beforePages.map((p) => /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { active: "active", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ import_react29.default.createElement(
|
|
4550
4622
|
PaginationButton,
|
|
4551
4623
|
{
|
|
4552
4624
|
size,
|
|
@@ -4556,7 +4628,7 @@ function Pagination(inProps) {
|
|
|
4556
4628
|
onClick: () => handlePageChange(paginationModel.page + 3)
|
|
4557
4629
|
},
|
|
4558
4630
|
"..."
|
|
4559
|
-
), paginationModel.page !== lastPage && /* @__PURE__ */
|
|
4631
|
+
), paginationModel.page !== lastPage && /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react29.default.createElement(
|
|
4560
4632
|
PaginationIconButton,
|
|
4561
4633
|
{
|
|
4562
4634
|
size,
|
|
@@ -4566,7 +4638,7 @@ function Pagination(inProps) {
|
|
|
4566
4638
|
disabled: paginationModel.page === lastPage,
|
|
4567
4639
|
"aria-label": "Next page"
|
|
4568
4640
|
},
|
|
4569
|
-
/* @__PURE__ */
|
|
4641
|
+
/* @__PURE__ */ import_react29.default.createElement(import_ChevronRightRounded.default, null)
|
|
4570
4642
|
)));
|
|
4571
4643
|
}
|
|
4572
4644
|
Pagination.displayName = "Pagination";
|
|
@@ -4640,9 +4712,9 @@ function Component(props, apiRef) {
|
|
|
4640
4712
|
isTotalSelected: ___________,
|
|
4641
4713
|
...innerProps
|
|
4642
4714
|
} = props;
|
|
4643
|
-
const tableId = (0,
|
|
4644
|
-
const parentRef = (0,
|
|
4645
|
-
const tableBodyRef = (0,
|
|
4715
|
+
const tableId = (0, import_react30.useId)();
|
|
4716
|
+
const parentRef = (0, import_react30.useRef)(null);
|
|
4717
|
+
const tableBodyRef = (0, import_react30.useRef)(null);
|
|
4646
4718
|
const {
|
|
4647
4719
|
columns,
|
|
4648
4720
|
processedColumnGroups,
|
|
@@ -4678,10 +4750,10 @@ function Component(props, apiRef) {
|
|
|
4678
4750
|
measureElement: (element) => element.clientHeight,
|
|
4679
4751
|
overscan: 10
|
|
4680
4752
|
});
|
|
4681
|
-
const paginationModel = (0,
|
|
4753
|
+
const paginationModel = (0, import_react30.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
|
|
4682
4754
|
const columnsKey = getObjectVersion(columns);
|
|
4683
|
-
const headerCheckboxElement = (0,
|
|
4684
|
-
() => /* @__PURE__ */
|
|
4755
|
+
const headerCheckboxElement = (0, import_react30.useMemo)(
|
|
4756
|
+
() => /* @__PURE__ */ import_react30.default.createElement(
|
|
4685
4757
|
RenderCheckbox,
|
|
4686
4758
|
{
|
|
4687
4759
|
onChange: onAllCheckboxChange,
|
|
@@ -4706,20 +4778,20 @@ function Component(props, apiRef) {
|
|
|
4706
4778
|
const showNoRowsOverlay = !loading && rowCount === 0;
|
|
4707
4779
|
const showFillerColumn = columns.length > 0 && columns.every((c) => !!c.width);
|
|
4708
4780
|
const totalColCount = Math.max(1, columns.length + (checkboxSelection ? 1 : 0) + (showFillerColumn ? 1 : 0));
|
|
4709
|
-
const getRowClickHandler = (0,
|
|
4781
|
+
const getRowClickHandler = (0, import_react30.useCallback)(
|
|
4710
4782
|
(row, rowId) => (e) => {
|
|
4711
4783
|
onRowClick?.({ row, rowId }, e);
|
|
4712
4784
|
checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
|
|
4713
4785
|
},
|
|
4714
4786
|
[onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
|
|
4715
4787
|
);
|
|
4716
|
-
const getRowFocusHandler = (0,
|
|
4788
|
+
const getRowFocusHandler = (0, import_react30.useCallback)(
|
|
4717
4789
|
(rowId) => () => {
|
|
4718
4790
|
onRowFocus(rowId);
|
|
4719
4791
|
},
|
|
4720
4792
|
[onRowFocus]
|
|
4721
4793
|
);
|
|
4722
|
-
const getCheckboxClickHandler = (0,
|
|
4794
|
+
const getCheckboxClickHandler = (0, import_react30.useCallback)(
|
|
4723
4795
|
(rowId, row) => (e) => {
|
|
4724
4796
|
e.stopPropagation();
|
|
4725
4797
|
if (isRowSelectableCheck(rowId, row)) {
|
|
@@ -4729,7 +4801,7 @@ function Component(props, apiRef) {
|
|
|
4729
4801
|
},
|
|
4730
4802
|
[onCheckboxChange, isRowSelectableCheck, onRowFocus]
|
|
4731
4803
|
);
|
|
4732
|
-
const handleTableKeyDown = (0,
|
|
4804
|
+
const handleTableKeyDown = (0, import_react30.useCallback)(
|
|
4733
4805
|
(e) => {
|
|
4734
4806
|
const supportedKeys = ["ArrowUp", "ArrowDown", " ", "Home", "End", "PageUp", "PageDown"];
|
|
4735
4807
|
if (!supportedKeys.includes(e.key)) return;
|
|
@@ -4819,7 +4891,7 @@ function Component(props, apiRef) {
|
|
|
4819
4891
|
virtualizer
|
|
4820
4892
|
]
|
|
4821
4893
|
);
|
|
4822
|
-
(0,
|
|
4894
|
+
(0, import_react30.useImperativeHandle)(apiRef, () => ({
|
|
4823
4895
|
getRowIndexRelativeToVisibleRows(rowId) {
|
|
4824
4896
|
return dataInPage.findIndex((row) => String(getId(row)) === rowId);
|
|
4825
4897
|
},
|
|
@@ -4835,7 +4907,7 @@ function Component(props, apiRef) {
|
|
|
4835
4907
|
});
|
|
4836
4908
|
}
|
|
4837
4909
|
}));
|
|
4838
|
-
return /* @__PURE__ */
|
|
4910
|
+
return /* @__PURE__ */ import_react30.default.createElement(
|
|
4839
4911
|
Box_default,
|
|
4840
4912
|
{
|
|
4841
4913
|
sx: {
|
|
@@ -4845,7 +4917,7 @@ function Component(props, apiRef) {
|
|
|
4845
4917
|
flexDirection: "column"
|
|
4846
4918
|
}
|
|
4847
4919
|
},
|
|
4848
|
-
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */
|
|
4920
|
+
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react30.default.createElement(
|
|
4849
4921
|
Stack_default,
|
|
4850
4922
|
{
|
|
4851
4923
|
direction: "row",
|
|
@@ -4855,10 +4927,10 @@ function Component(props, apiRef) {
|
|
|
4855
4927
|
justifyContent: "space-between",
|
|
4856
4928
|
alignItems: "center"
|
|
4857
4929
|
},
|
|
4858
|
-
!!checkboxSelection && /* @__PURE__ */
|
|
4859
|
-
Toolbar && /* @__PURE__ */
|
|
4930
|
+
!!checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react30.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react30.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react30.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react30.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ import_react30.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react30.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ import_react30.default.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
|
|
4931
|
+
Toolbar && /* @__PURE__ */ import_react30.default.createElement(Toolbar, { ...toolbarProps || {} })
|
|
4860
4932
|
),
|
|
4861
|
-
/* @__PURE__ */
|
|
4933
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
4862
4934
|
Sheet_default,
|
|
4863
4935
|
{
|
|
4864
4936
|
variant: "outlined",
|
|
@@ -4879,24 +4951,24 @@ function Component(props, apiRef) {
|
|
|
4879
4951
|
ref: parentRef,
|
|
4880
4952
|
...backgroundProps
|
|
4881
4953
|
},
|
|
4882
|
-
/* @__PURE__ */
|
|
4954
|
+
/* @__PURE__ */ import_react30.default.createElement(Table, { ...innerProps, sx: { ...innerProps.sx, minWidth: tableMinWidth } }, /* @__PURE__ */ import_react30.default.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
|
|
4883
4955
|
"col",
|
|
4884
4956
|
{
|
|
4885
4957
|
style: {
|
|
4886
4958
|
width: "40px"
|
|
4887
4959
|
}
|
|
4888
4960
|
}
|
|
4889
|
-
), columns.map((c) => /* @__PURE__ */
|
|
4961
|
+
), columns.map((c) => /* @__PURE__ */ import_react30.default.createElement(
|
|
4890
4962
|
"col",
|
|
4891
4963
|
{
|
|
4892
4964
|
ref: c.tableColRef,
|
|
4893
|
-
key:
|
|
4965
|
+
key: c.field.toString(),
|
|
4894
4966
|
style: {
|
|
4895
4967
|
width: c.width,
|
|
4896
4968
|
minWidth: c.minWidth ?? "50px"
|
|
4897
4969
|
}
|
|
4898
4970
|
}
|
|
4899
|
-
)), showFillerColumn && /* @__PURE__ */
|
|
4971
|
+
)), showFillerColumn && /* @__PURE__ */ import_react30.default.createElement("col", { style: { minWidth: 0 } })), /* @__PURE__ */ import_react30.default.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.length > 0 && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ import_react30.default.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ import_react30.default.createElement(
|
|
4900
4972
|
"th",
|
|
4901
4973
|
{
|
|
4902
4974
|
rowSpan: processedColumnGroups.maxLevel + 2,
|
|
@@ -4907,12 +4979,12 @@ function Component(props, apiRef) {
|
|
|
4907
4979
|
}
|
|
4908
4980
|
},
|
|
4909
4981
|
headerCheckboxElement
|
|
4910
|
-
), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */
|
|
4982
|
+
), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ import_react30.default.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.filter((g) => g.colspan > 0).map((group, groupIndex) => {
|
|
4911
4983
|
const nextGroup = levelGroups[groupIndex + 1];
|
|
4912
4984
|
const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
|
|
4913
4985
|
const params = { groupId: group.groupId };
|
|
4914
4986
|
const computedHeaderClassName = group.headerClassName ? typeof group.headerClassName === "function" ? group.headerClassName(params) : group.headerClassName : void 0;
|
|
4915
|
-
return /* @__PURE__ */
|
|
4987
|
+
return /* @__PURE__ */ import_react30.default.createElement(import_react30.Fragment, { key: group.groupId }, /* @__PURE__ */ import_react30.default.createElement(
|
|
4916
4988
|
"th",
|
|
4917
4989
|
{
|
|
4918
4990
|
colSpan: group.colspan,
|
|
@@ -4924,14 +4996,14 @@ function Component(props, apiRef) {
|
|
|
4924
4996
|
className: computedHeaderClassName
|
|
4925
4997
|
},
|
|
4926
4998
|
group.headerName ?? group.groupId
|
|
4927
|
-
), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */
|
|
4928
|
-
}), showFillerColumn && level === 0 && /* @__PURE__ */
|
|
4999
|
+
), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react30.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
|
|
5000
|
+
}), showFillerColumn && level === 0 && /* @__PURE__ */ import_react30.default.createElement(
|
|
4929
5001
|
"th",
|
|
4930
5002
|
{
|
|
4931
5003
|
"aria-hidden": "true",
|
|
4932
5004
|
rowSpan: processedColumnGroups.maxLevel + 2
|
|
4933
5005
|
}
|
|
4934
|
-
))), /* @__PURE__ */
|
|
5006
|
+
))), /* @__PURE__ */ import_react30.default.createElement("tr", null, (!processedColumnGroups || processedColumnGroups.groups.length === 0) && checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
|
|
4935
5007
|
"th",
|
|
4936
5008
|
{
|
|
4937
5009
|
style: {
|
|
@@ -4940,13 +5012,13 @@ function Component(props, apiRef) {
|
|
|
4940
5012
|
}
|
|
4941
5013
|
},
|
|
4942
5014
|
headerCheckboxElement
|
|
4943
|
-
), columns.map((c
|
|
5015
|
+
), columns.map((c) => (
|
|
4944
5016
|
// @ts-ignore
|
|
4945
|
-
/* @__PURE__ */
|
|
5017
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
4946
5018
|
HeadCell2,
|
|
4947
5019
|
{
|
|
4948
5020
|
tableId,
|
|
4949
|
-
key:
|
|
5021
|
+
key: c.field.toString(),
|
|
4950
5022
|
stickyHeader: props.stickyHeader,
|
|
4951
5023
|
editMode: !!c.isCellEditable,
|
|
4952
5024
|
onSortChange: handleSortChange,
|
|
@@ -4954,7 +5026,7 @@ function Component(props, apiRef) {
|
|
|
4954
5026
|
...c
|
|
4955
5027
|
}
|
|
4956
5028
|
)
|
|
4957
|
-
)), showFillerColumn && (!processedColumnGroups || processedColumnGroups.groups.length === 0) && /* @__PURE__ */
|
|
5029
|
+
)), showFillerColumn && (!processedColumnGroups || processedColumnGroups.groups.length === 0) && /* @__PURE__ */ import_react30.default.createElement("th", { "aria-hidden": "true" }))), /* @__PURE__ */ import_react30.default.createElement(
|
|
4958
5030
|
VirtualizedTableBody,
|
|
4959
5031
|
{
|
|
4960
5032
|
ref: tableBodyRef,
|
|
@@ -4965,7 +5037,7 @@ function Component(props, apiRef) {
|
|
|
4965
5037
|
role: "rowgroup",
|
|
4966
5038
|
"aria-label": "DataTableBody"
|
|
4967
5039
|
},
|
|
4968
|
-
!!loading && /* @__PURE__ */
|
|
5040
|
+
!!loading && /* @__PURE__ */ import_react30.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react30.default.createElement(
|
|
4969
5041
|
"td",
|
|
4970
5042
|
{
|
|
4971
5043
|
style: {
|
|
@@ -4974,7 +5046,7 @@ function Component(props, apiRef) {
|
|
|
4974
5046
|
overflow: "visible"
|
|
4975
5047
|
}
|
|
4976
5048
|
},
|
|
4977
|
-
/* @__PURE__ */
|
|
5049
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
4978
5050
|
Box_default,
|
|
4979
5051
|
{
|
|
4980
5052
|
sx: {
|
|
@@ -4984,10 +5056,10 @@ function Component(props, apiRef) {
|
|
|
4984
5056
|
right: 0
|
|
4985
5057
|
}
|
|
4986
5058
|
},
|
|
4987
|
-
/* @__PURE__ */
|
|
5059
|
+
/* @__PURE__ */ import_react30.default.createElement(LoadingOverlay, null)
|
|
4988
5060
|
)
|
|
4989
5061
|
)),
|
|
4990
|
-
showNoRowsOverlay && /* @__PURE__ */
|
|
5062
|
+
showNoRowsOverlay && /* @__PURE__ */ import_react30.default.createElement("tr", null, /* @__PURE__ */ import_react30.default.createElement("td", { colSpan: totalColCount, style: { border: "none" } }, /* @__PURE__ */ import_react30.default.createElement(
|
|
4991
5063
|
Box_default,
|
|
4992
5064
|
{
|
|
4993
5065
|
sx: {
|
|
@@ -4997,14 +5069,14 @@ function Component(props, apiRef) {
|
|
|
4997
5069
|
minHeight: "150px"
|
|
4998
5070
|
}
|
|
4999
5071
|
},
|
|
5000
|
-
/* @__PURE__ */
|
|
5072
|
+
/* @__PURE__ */ import_react30.default.createElement(NoRowsOverlay, { ...noRowsOverlayProps })
|
|
5001
5073
|
))),
|
|
5002
5074
|
virtualizedItems.map((virtualizedRow, index) => {
|
|
5003
5075
|
const rowIndex = virtualizedRow.index;
|
|
5004
5076
|
const row = dataInPage[rowIndex];
|
|
5005
5077
|
const rowId = getId(row, rowIndex);
|
|
5006
5078
|
const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
|
|
5007
|
-
return /* @__PURE__ */
|
|
5079
|
+
return /* @__PURE__ */ import_react30.default.createElement(
|
|
5008
5080
|
VirtualizedTableRow,
|
|
5009
5081
|
{
|
|
5010
5082
|
key: virtualizedRow.key,
|
|
@@ -5024,7 +5096,7 @@ function Component(props, apiRef) {
|
|
|
5024
5096
|
transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
|
|
5025
5097
|
}
|
|
5026
5098
|
},
|
|
5027
|
-
checkboxSelection && /* @__PURE__ */
|
|
5099
|
+
checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
|
|
5028
5100
|
"th",
|
|
5029
5101
|
{
|
|
5030
5102
|
scope: "row",
|
|
@@ -5032,7 +5104,7 @@ function Component(props, apiRef) {
|
|
|
5032
5104
|
textAlign: "center"
|
|
5033
5105
|
}
|
|
5034
5106
|
},
|
|
5035
|
-
/* @__PURE__ */
|
|
5107
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
5036
5108
|
RenderCheckbox,
|
|
5037
5109
|
{
|
|
5038
5110
|
onClick: getCheckboxClickHandler(rowId, row),
|
|
@@ -5043,7 +5115,7 @@ function Component(props, apiRef) {
|
|
|
5043
5115
|
}
|
|
5044
5116
|
)
|
|
5045
5117
|
),
|
|
5046
|
-
/* @__PURE__ */
|
|
5118
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
5047
5119
|
BodyRow2,
|
|
5048
5120
|
{
|
|
5049
5121
|
tableId,
|
|
@@ -5054,12 +5126,12 @@ function Component(props, apiRef) {
|
|
|
5054
5126
|
noWrap: props.noWrap
|
|
5055
5127
|
}
|
|
5056
5128
|
),
|
|
5057
|
-
showFillerColumn && /* @__PURE__ */
|
|
5129
|
+
showFillerColumn && /* @__PURE__ */ import_react30.default.createElement("td", { "aria-hidden": "true" })
|
|
5058
5130
|
);
|
|
5059
5131
|
})
|
|
5060
|
-
), Footer && /* @__PURE__ */
|
|
5132
|
+
), Footer && /* @__PURE__ */ import_react30.default.createElement(Footer, null))
|
|
5061
5133
|
),
|
|
5062
|
-
pagination && /* @__PURE__ */
|
|
5134
|
+
pagination && /* @__PURE__ */ import_react30.default.createElement(
|
|
5063
5135
|
Pagination_default,
|
|
5064
5136
|
{
|
|
5065
5137
|
pt: 2,
|
|
@@ -5072,11 +5144,11 @@ function Component(props, apiRef) {
|
|
|
5072
5144
|
)
|
|
5073
5145
|
);
|
|
5074
5146
|
}
|
|
5075
|
-
var DataTable = (0,
|
|
5147
|
+
var DataTable = (0, import_react30.forwardRef)(Component);
|
|
5076
5148
|
DataTable.displayName = "DataTable";
|
|
5077
5149
|
|
|
5078
5150
|
// src/components/DateRangePicker/DateRangePicker.tsx
|
|
5079
|
-
var
|
|
5151
|
+
var import_react31 = __toESM(require("react"));
|
|
5080
5152
|
var import_react_imask2 = require("react-imask");
|
|
5081
5153
|
var import_CalendarToday2 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
5082
5154
|
var import_joy37 = require("@mui/joy");
|
|
@@ -5218,9 +5290,9 @@ var parseDates = (str, format) => {
|
|
|
5218
5290
|
var formatToPattern2 = (format) => {
|
|
5219
5291
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
5220
5292
|
};
|
|
5221
|
-
var TextMaskAdapter5 =
|
|
5293
|
+
var TextMaskAdapter5 = import_react31.default.forwardRef(function TextMaskAdapter6(props, ref) {
|
|
5222
5294
|
const { onChange, format, ...other } = props;
|
|
5223
|
-
return /* @__PURE__ */
|
|
5295
|
+
return /* @__PURE__ */ import_react31.default.createElement(
|
|
5224
5296
|
import_react_imask2.IMaskInput,
|
|
5225
5297
|
{
|
|
5226
5298
|
...other,
|
|
@@ -5254,7 +5326,7 @@ var TextMaskAdapter5 = import_react30.default.forwardRef(function TextMaskAdapte
|
|
|
5254
5326
|
}
|
|
5255
5327
|
);
|
|
5256
5328
|
});
|
|
5257
|
-
var DateRangePicker = (0,
|
|
5329
|
+
var DateRangePicker = (0, import_react31.forwardRef)((inProps, ref) => {
|
|
5258
5330
|
const props = (0, import_joy37.useThemeProps)({ props: inProps, name: "DateRangePicker" });
|
|
5259
5331
|
const {
|
|
5260
5332
|
onChange,
|
|
@@ -5281,28 +5353,28 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5281
5353
|
numberOfMonths,
|
|
5282
5354
|
...innerProps
|
|
5283
5355
|
} = props;
|
|
5284
|
-
const innerRef = (0,
|
|
5285
|
-
const buttonRef = (0,
|
|
5356
|
+
const innerRef = (0, import_react31.useRef)(null);
|
|
5357
|
+
const buttonRef = (0, import_react31.useRef)(null);
|
|
5286
5358
|
const [rawValue, setValue] = useControlledState(
|
|
5287
5359
|
props.value,
|
|
5288
5360
|
props.defaultValue ?? null,
|
|
5289
|
-
(0,
|
|
5361
|
+
(0, import_react31.useCallback)(
|
|
5290
5362
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
5291
5363
|
[props.name, onChange]
|
|
5292
5364
|
)
|
|
5293
5365
|
);
|
|
5294
5366
|
const value = rawValue ?? "";
|
|
5295
5367
|
const isAlphabeticDisplay = hasAlphabeticMonth2(displayFormat);
|
|
5296
|
-
const [displayValue, setDisplayValue] = (0,
|
|
5368
|
+
const [displayValue, setDisplayValue] = (0, import_react31.useState)(
|
|
5297
5369
|
() => value ? formatValueString2(parseDates(value, format), displayFormat, locale) : ""
|
|
5298
5370
|
);
|
|
5299
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
5371
|
+
const [anchorEl, setAnchorEl] = (0, import_react31.useState)(null);
|
|
5300
5372
|
const open = Boolean(anchorEl);
|
|
5301
|
-
const calendarValue = (0,
|
|
5373
|
+
const calendarValue = (0, import_react31.useMemo)(
|
|
5302
5374
|
() => value ? parseDates(value, format) : void 0,
|
|
5303
5375
|
[value, format]
|
|
5304
5376
|
);
|
|
5305
|
-
(0,
|
|
5377
|
+
(0, import_react31.useEffect)(() => {
|
|
5306
5378
|
if (value) {
|
|
5307
5379
|
try {
|
|
5308
5380
|
const dates = parseDates(value, format);
|
|
@@ -5314,13 +5386,13 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5314
5386
|
setDisplayValue("");
|
|
5315
5387
|
}
|
|
5316
5388
|
}, [displayFormat, locale, value, format]);
|
|
5317
|
-
(0,
|
|
5389
|
+
(0, import_react31.useEffect)(() => {
|
|
5318
5390
|
if (!anchorEl) {
|
|
5319
5391
|
innerRef.current?.blur();
|
|
5320
5392
|
}
|
|
5321
5393
|
}, [anchorEl, innerRef]);
|
|
5322
|
-
(0,
|
|
5323
|
-
const handleChange = (0,
|
|
5394
|
+
(0, import_react31.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
5395
|
+
const handleChange = (0, import_react31.useCallback)(
|
|
5324
5396
|
(event) => {
|
|
5325
5397
|
const value2 = event.target.value;
|
|
5326
5398
|
setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat, locale) : value2);
|
|
@@ -5328,7 +5400,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5328
5400
|
},
|
|
5329
5401
|
[displayFormat, format, locale, setValue]
|
|
5330
5402
|
);
|
|
5331
|
-
const handleDisplayInputChange = (0,
|
|
5403
|
+
const handleDisplayInputChange = (0, import_react31.useCallback)(
|
|
5332
5404
|
(event) => {
|
|
5333
5405
|
if (event.target.value === "") {
|
|
5334
5406
|
handleChange({
|
|
@@ -5353,14 +5425,14 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5353
5425
|
},
|
|
5354
5426
|
[displayFormat, format, handleChange, props.name]
|
|
5355
5427
|
);
|
|
5356
|
-
const handleCalendarToggle = (0,
|
|
5428
|
+
const handleCalendarToggle = (0, import_react31.useCallback)(
|
|
5357
5429
|
(event) => {
|
|
5358
5430
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
5359
5431
|
innerRef.current?.focus();
|
|
5360
5432
|
},
|
|
5361
5433
|
[anchorEl, setAnchorEl, innerRef]
|
|
5362
5434
|
);
|
|
5363
|
-
const handleCalendarChange = (0,
|
|
5435
|
+
const handleCalendarChange = (0, import_react31.useCallback)(
|
|
5364
5436
|
([date1, date2]) => {
|
|
5365
5437
|
if (!date1 || !date2) return;
|
|
5366
5438
|
const formattedValue = formatValueString2([date1, date2], format);
|
|
@@ -5374,7 +5446,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5374
5446
|
},
|
|
5375
5447
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
|
|
5376
5448
|
);
|
|
5377
|
-
const handleInputMouseDown = (0,
|
|
5449
|
+
const handleInputMouseDown = (0, import_react31.useCallback)(
|
|
5378
5450
|
(event) => {
|
|
5379
5451
|
if (inputReadOnly || isAlphabeticDisplay) {
|
|
5380
5452
|
event.preventDefault();
|
|
@@ -5383,7 +5455,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5383
5455
|
},
|
|
5384
5456
|
[inputReadOnly, isAlphabeticDisplay, buttonRef]
|
|
5385
5457
|
);
|
|
5386
|
-
const handleInputClick = (0,
|
|
5458
|
+
const handleInputClick = (0, import_react31.useCallback)(
|
|
5387
5459
|
(event) => {
|
|
5388
5460
|
if (inputReadOnly && !readOnly) {
|
|
5389
5461
|
handleCalendarToggle(event);
|
|
@@ -5391,7 +5463,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5391
5463
|
},
|
|
5392
5464
|
[inputReadOnly, readOnly, handleCalendarToggle]
|
|
5393
5465
|
);
|
|
5394
|
-
const handlePresetClick = (0,
|
|
5466
|
+
const handlePresetClick = (0, import_react31.useCallback)(
|
|
5395
5467
|
(presetValue) => {
|
|
5396
5468
|
if (props.value !== void 0) {
|
|
5397
5469
|
onChange?.({ target: { name: props.name, value: presetValue } });
|
|
@@ -5404,7 +5476,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5404
5476
|
},
|
|
5405
5477
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
|
|
5406
5478
|
);
|
|
5407
|
-
const isPresetDisabled = (0,
|
|
5479
|
+
const isPresetDisabled = (0, import_react31.useCallback)(
|
|
5408
5480
|
(presetValue) => {
|
|
5409
5481
|
try {
|
|
5410
5482
|
const dates = parseDates(presetValue, format);
|
|
@@ -5423,7 +5495,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5423
5495
|
},
|
|
5424
5496
|
[format, minDate, maxDate, disableFuture, disablePast]
|
|
5425
5497
|
);
|
|
5426
|
-
return /* @__PURE__ */
|
|
5498
|
+
return /* @__PURE__ */ import_react31.default.createElement(DateRangePickerRoot, { sx, className }, /* @__PURE__ */ import_react31.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, /* @__PURE__ */ import_react31.default.createElement(
|
|
5427
5499
|
Input_default,
|
|
5428
5500
|
{
|
|
5429
5501
|
...innerProps,
|
|
@@ -5450,7 +5522,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5450
5522
|
},
|
|
5451
5523
|
error,
|
|
5452
5524
|
sx: { width: "100%" },
|
|
5453
|
-
endDecorator: /* @__PURE__ */
|
|
5525
|
+
endDecorator: /* @__PURE__ */ import_react31.default.createElement(
|
|
5454
5526
|
CalendarButton2,
|
|
5455
5527
|
{
|
|
5456
5528
|
ref: buttonRef,
|
|
@@ -5462,13 +5534,13 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5462
5534
|
"aria-expanded": open,
|
|
5463
5535
|
disabled
|
|
5464
5536
|
},
|
|
5465
|
-
/* @__PURE__ */
|
|
5537
|
+
/* @__PURE__ */ import_react31.default.createElement(import_CalendarToday2.default, null)
|
|
5466
5538
|
),
|
|
5467
5539
|
label,
|
|
5468
5540
|
helperText,
|
|
5469
5541
|
readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
|
|
5470
5542
|
}
|
|
5471
|
-
), open && /* @__PURE__ */
|
|
5543
|
+
), open && /* @__PURE__ */ import_react31.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react31.default.createElement(
|
|
5472
5544
|
StyledPopper2,
|
|
5473
5545
|
{
|
|
5474
5546
|
id: "date-range-picker-popper",
|
|
@@ -5487,7 +5559,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5487
5559
|
"aria-label": "Calendar Tooltip",
|
|
5488
5560
|
"aria-expanded": open
|
|
5489
5561
|
},
|
|
5490
|
-
/* @__PURE__ */
|
|
5562
|
+
/* @__PURE__ */ import_react31.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react31.default.createElement(CalendarSheetContent2, null, /* @__PURE__ */ import_react31.default.createElement(CalendarSection2, { style: { width: "auto" } }, /* @__PURE__ */ import_react31.default.createElement(
|
|
5491
5563
|
Calendar_default,
|
|
5492
5564
|
{
|
|
5493
5565
|
rangeSelection: true,
|
|
@@ -5500,14 +5572,14 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5500
5572
|
locale,
|
|
5501
5573
|
numberOfMonths
|
|
5502
5574
|
}
|
|
5503
|
-
), !hideClearButton && /* @__PURE__ */
|
|
5575
|
+
), !hideClearButton && /* @__PURE__ */ import_react31.default.createElement(
|
|
5504
5576
|
DialogActions_default,
|
|
5505
5577
|
{
|
|
5506
5578
|
sx: {
|
|
5507
5579
|
p: 1
|
|
5508
5580
|
}
|
|
5509
5581
|
},
|
|
5510
|
-
/* @__PURE__ */
|
|
5582
|
+
/* @__PURE__ */ import_react31.default.createElement(
|
|
5511
5583
|
Button_default,
|
|
5512
5584
|
{
|
|
5513
5585
|
size,
|
|
@@ -5521,9 +5593,9 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5521
5593
|
},
|
|
5522
5594
|
"Clear"
|
|
5523
5595
|
)
|
|
5524
|
-
)), presets && presets.length > 0 && /* @__PURE__ */
|
|
5596
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ import_react31.default.createElement(PresetPanel2, null, presets.map((preset) => {
|
|
5525
5597
|
const disabled2 = isPresetDisabled(preset.value);
|
|
5526
|
-
return /* @__PURE__ */
|
|
5598
|
+
return /* @__PURE__ */ import_react31.default.createElement(
|
|
5527
5599
|
PresetItem2,
|
|
5528
5600
|
{
|
|
5529
5601
|
key: preset.label,
|
|
@@ -5542,7 +5614,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5542
5614
|
DateRangePicker.displayName = "DateRangePicker";
|
|
5543
5615
|
|
|
5544
5616
|
// src/components/Drawer/Drawer.tsx
|
|
5545
|
-
var
|
|
5617
|
+
var import_react32 = __toESM(require("react"));
|
|
5546
5618
|
var import_joy38 = require("@mui/joy");
|
|
5547
5619
|
var import_framer_motion22 = require("framer-motion");
|
|
5548
5620
|
var MotionDrawer = (0, import_framer_motion22.motion)(import_joy38.Drawer);
|
|
@@ -5560,7 +5632,7 @@ var StyledDrawer = (0, import_joy38.styled)(MotionDrawer)(({ theme, size = "md"
|
|
|
5560
5632
|
}));
|
|
5561
5633
|
var Drawer = (props) => {
|
|
5562
5634
|
const { children, ...innerProps } = props;
|
|
5563
|
-
return /* @__PURE__ */
|
|
5635
|
+
return /* @__PURE__ */ import_react32.default.createElement(StyledDrawer, { ...innerProps }, children);
|
|
5564
5636
|
};
|
|
5565
5637
|
Drawer.displayName = "Drawer";
|
|
5566
5638
|
|
|
@@ -5591,10 +5663,10 @@ DialogTitle.displayName = "DialogTitle";
|
|
|
5591
5663
|
var DialogTitle_default = DialogTitle;
|
|
5592
5664
|
|
|
5593
5665
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
5594
|
-
var
|
|
5666
|
+
var import_react34 = __toESM(require("react"));
|
|
5595
5667
|
|
|
5596
5668
|
// src/components/Modal/Modal.tsx
|
|
5597
|
-
var
|
|
5669
|
+
var import_react33 = __toESM(require("react"));
|
|
5598
5670
|
var import_joy41 = require("@mui/joy");
|
|
5599
5671
|
var import_framer_motion25 = require("framer-motion");
|
|
5600
5672
|
var MotionModal = (0, import_framer_motion25.motion)(import_joy41.Modal);
|
|
@@ -5609,10 +5681,10 @@ var ModalClose = import_joy41.ModalClose;
|
|
|
5609
5681
|
var MotionModalOverflow = (0, import_framer_motion25.motion)(import_joy41.ModalOverflow);
|
|
5610
5682
|
var ModalOverflow = MotionModalOverflow;
|
|
5611
5683
|
ModalOverflow.displayName = "ModalOverflow";
|
|
5612
|
-
|
|
5684
|
+
var ModalFrame = import_react33.default.forwardRef((props, ref) => {
|
|
5613
5685
|
const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
|
|
5614
|
-
return /* @__PURE__ */
|
|
5615
|
-
}
|
|
5686
|
+
return /* @__PURE__ */ import_react33.default.createElement(StyledModalDialog, { ...innerProps, ref }, /* @__PURE__ */ import_react33.default.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ import_react33.default.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ import_react33.default.createElement(DialogContent_default, null, children));
|
|
5687
|
+
});
|
|
5616
5688
|
ModalFrame.displayName = "ModalFrame";
|
|
5617
5689
|
|
|
5618
5690
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
@@ -5623,20 +5695,20 @@ var StyledDialogFrame = (0, import_joy42.styled)(ModalDialog, {
|
|
|
5623
5695
|
})({
|
|
5624
5696
|
padding: 0
|
|
5625
5697
|
});
|
|
5626
|
-
var DialogFrame =
|
|
5698
|
+
var DialogFrame = import_react34.default.forwardRef((props, ref) => {
|
|
5627
5699
|
const { title, children, actions, fullscreen, onSubmit, ...innerProps } = props;
|
|
5628
5700
|
const formProps = onSubmit ? { component: "form", onSubmit } : void 0;
|
|
5629
|
-
return /* @__PURE__ */
|
|
5701
|
+
return /* @__PURE__ */ import_react34.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...formProps, ...innerProps }, /* @__PURE__ */ import_react34.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react34.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react34.default.createElement(DialogActions_default, null, actions));
|
|
5630
5702
|
});
|
|
5631
5703
|
DialogFrame.displayName = "DialogFrame";
|
|
5632
5704
|
|
|
5633
5705
|
// src/components/Divider/Divider.tsx
|
|
5634
|
-
var
|
|
5706
|
+
var import_react35 = __toESM(require("react"));
|
|
5635
5707
|
var import_joy43 = require("@mui/joy");
|
|
5636
5708
|
var import_framer_motion26 = require("framer-motion");
|
|
5637
5709
|
var MotionDivider = (0, import_framer_motion26.motion)(import_joy43.Divider);
|
|
5638
5710
|
var Divider = (props) => {
|
|
5639
|
-
return /* @__PURE__ */
|
|
5711
|
+
return /* @__PURE__ */ import_react35.default.createElement(MotionDivider, { ...props });
|
|
5640
5712
|
};
|
|
5641
5713
|
Divider.displayName = "Divider";
|
|
5642
5714
|
|
|
@@ -5657,16 +5729,16 @@ var InsetDrawer = (0, import_joy44.styled)(import_joy44.Drawer)(({ theme }) => (
|
|
|
5657
5729
|
}));
|
|
5658
5730
|
|
|
5659
5731
|
// src/components/FilterableCheckboxGroup/FilterableCheckboxGroup.tsx
|
|
5660
|
-
var
|
|
5732
|
+
var import_react36 = __toESM(require("react"));
|
|
5661
5733
|
var import_Search = __toESM(require("@mui/icons-material/Search"));
|
|
5662
5734
|
var import_joy45 = require("@mui/joy");
|
|
5663
5735
|
var import_react_virtual3 = require("@tanstack/react-virtual");
|
|
5664
5736
|
var EMPTY_VALUE = [];
|
|
5665
5737
|
function LabelWithTooltip(props) {
|
|
5666
5738
|
const { label, size } = props;
|
|
5667
|
-
const labelContentRef = (0,
|
|
5668
|
-
const [isOverflowing, setIsOverflowing] = (0,
|
|
5669
|
-
const labelContent = /* @__PURE__ */
|
|
5739
|
+
const labelContentRef = (0, import_react36.useRef)(null);
|
|
5740
|
+
const [isOverflowing, setIsOverflowing] = (0, import_react36.useState)(false);
|
|
5741
|
+
const labelContent = /* @__PURE__ */ import_react36.default.createElement(
|
|
5670
5742
|
"span",
|
|
5671
5743
|
{
|
|
5672
5744
|
ref: labelContentRef,
|
|
@@ -5682,14 +5754,14 @@ function LabelWithTooltip(props) {
|
|
|
5682
5754
|
},
|
|
5683
5755
|
label
|
|
5684
5756
|
);
|
|
5685
|
-
(0,
|
|
5757
|
+
(0, import_react36.useEffect)(() => {
|
|
5686
5758
|
const element = labelContentRef.current;
|
|
5687
5759
|
if (element) {
|
|
5688
5760
|
setIsOverflowing(element.scrollWidth > element.clientWidth);
|
|
5689
5761
|
}
|
|
5690
5762
|
}, [label]);
|
|
5691
5763
|
if (isOverflowing) {
|
|
5692
|
-
return /* @__PURE__ */
|
|
5764
|
+
return /* @__PURE__ */ import_react36.default.createElement(Tooltip_default, { variant: "solid", size, title: label, placement: "bottom-start" }, labelContent);
|
|
5693
5765
|
}
|
|
5694
5766
|
return labelContent;
|
|
5695
5767
|
}
|
|
@@ -5707,22 +5779,22 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5707
5779
|
maxHeight = 300,
|
|
5708
5780
|
disabled
|
|
5709
5781
|
} = props;
|
|
5710
|
-
const [searchTerm, setSearchTerm] = (0,
|
|
5711
|
-
const [sortedOptions, setSortedOptions] = (0,
|
|
5782
|
+
const [searchTerm, setSearchTerm] = (0, import_react36.useState)("");
|
|
5783
|
+
const [sortedOptions, setSortedOptions] = (0, import_react36.useState)(options);
|
|
5712
5784
|
const [rawValue, setInternalValue] = useControlledState(
|
|
5713
5785
|
value,
|
|
5714
5786
|
value ?? EMPTY_VALUE,
|
|
5715
|
-
(0,
|
|
5787
|
+
(0, import_react36.useCallback)((newValue) => onChange?.(newValue ?? []), [onChange])
|
|
5716
5788
|
);
|
|
5717
5789
|
const internalValue = rawValue ?? EMPTY_VALUE;
|
|
5718
|
-
const parentRef = (0,
|
|
5719
|
-
const isInitialSortRef = (0,
|
|
5720
|
-
const prevOptionsRef = (0,
|
|
5721
|
-
const filteredOptions = (0,
|
|
5790
|
+
const parentRef = (0, import_react36.useRef)(null);
|
|
5791
|
+
const isInitialSortRef = (0, import_react36.useRef)(false);
|
|
5792
|
+
const prevOptionsRef = (0, import_react36.useRef)([...options]);
|
|
5793
|
+
const filteredOptions = (0, import_react36.useMemo)(() => {
|
|
5722
5794
|
if (!searchTerm) return sortedOptions;
|
|
5723
5795
|
return sortedOptions.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
|
|
5724
5796
|
}, [sortedOptions, searchTerm]);
|
|
5725
|
-
const itemSize = (0,
|
|
5797
|
+
const itemSize = (0, import_react36.useMemo)(() => {
|
|
5726
5798
|
switch (size) {
|
|
5727
5799
|
case "sm":
|
|
5728
5800
|
return 28;
|
|
@@ -5740,7 +5812,7 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5740
5812
|
overscan: 5
|
|
5741
5813
|
});
|
|
5742
5814
|
const items = virtualizer.getVirtualItems();
|
|
5743
|
-
(0,
|
|
5815
|
+
(0, import_react36.useEffect)(() => {
|
|
5744
5816
|
const optionsChanged = prevOptionsRef.current.length !== options.length || prevOptionsRef.current.some(
|
|
5745
5817
|
(prevOption, index) => prevOption.value !== options[index]?.value || prevOption.label !== options[index]?.label || prevOption.disabled !== options[index]?.disabled
|
|
5746
5818
|
);
|
|
@@ -5766,13 +5838,13 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5766
5838
|
}
|
|
5767
5839
|
}
|
|
5768
5840
|
}, [options, value]);
|
|
5769
|
-
(0,
|
|
5841
|
+
(0, import_react36.useEffect)(() => {
|
|
5770
5842
|
virtualizer.measure();
|
|
5771
5843
|
}, [virtualizer, filteredOptions, size]);
|
|
5772
|
-
const handleSearchChange = (0,
|
|
5844
|
+
const handleSearchChange = (0, import_react36.useCallback)((event) => {
|
|
5773
5845
|
setSearchTerm(event.target.value);
|
|
5774
5846
|
}, []);
|
|
5775
|
-
const handleCheckboxChange = (0,
|
|
5847
|
+
const handleCheckboxChange = (0, import_react36.useCallback)(
|
|
5776
5848
|
(optionValue) => (event) => {
|
|
5777
5849
|
const checked = event.target.checked;
|
|
5778
5850
|
const newValue = checked ? [...internalValue, optionValue] : internalValue.filter((v) => v !== optionValue);
|
|
@@ -5780,7 +5852,7 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5780
5852
|
},
|
|
5781
5853
|
[internalValue, setInternalValue]
|
|
5782
5854
|
);
|
|
5783
|
-
const handleSelectAll = (0,
|
|
5855
|
+
const handleSelectAll = (0, import_react36.useCallback)(
|
|
5784
5856
|
(event) => {
|
|
5785
5857
|
const checked = event.target.checked;
|
|
5786
5858
|
const enabledOptions = filteredOptions.filter((option) => !option.disabled);
|
|
@@ -5796,10 +5868,10 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5796
5868
|
},
|
|
5797
5869
|
[filteredOptions, internalValue, setInternalValue]
|
|
5798
5870
|
);
|
|
5799
|
-
const enabledFilteredOptions = (0,
|
|
5871
|
+
const enabledFilteredOptions = (0, import_react36.useMemo)(() => filteredOptions.filter((option) => !option.disabled), [filteredOptions]);
|
|
5800
5872
|
const isAllSelected = enabledFilteredOptions.length > 0 && enabledFilteredOptions.every((option) => internalValue.includes(option.value));
|
|
5801
5873
|
const isIndeterminate = !isAllSelected && enabledFilteredOptions.some((option) => internalValue.includes(option.value));
|
|
5802
|
-
return /* @__PURE__ */
|
|
5874
|
+
return /* @__PURE__ */ import_react36.default.createElement("div", { style: { width: "100%" } }, /* @__PURE__ */ import_react36.default.createElement(
|
|
5803
5875
|
Input_default,
|
|
5804
5876
|
{
|
|
5805
5877
|
label,
|
|
@@ -5812,9 +5884,9 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5812
5884
|
onChange: handleSearchChange,
|
|
5813
5885
|
size,
|
|
5814
5886
|
disabled,
|
|
5815
|
-
endDecorator: /* @__PURE__ */
|
|
5887
|
+
endDecorator: /* @__PURE__ */ import_react36.default.createElement(import_Search.default, null)
|
|
5816
5888
|
}
|
|
5817
|
-
), filteredOptions.length === 0 ? /* @__PURE__ */
|
|
5889
|
+
), filteredOptions.length === 0 ? /* @__PURE__ */ import_react36.default.createElement(Typography_default, { level: `body-${size}`, textColor: "neutral.softDisabledColor", padding: "20px 12px", textAlign: "center" }, "No options found.") : /* @__PURE__ */ import_react36.default.createElement(
|
|
5818
5890
|
"div",
|
|
5819
5891
|
{
|
|
5820
5892
|
ref: parentRef,
|
|
@@ -5825,7 +5897,7 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5825
5897
|
marginTop: "8px"
|
|
5826
5898
|
}
|
|
5827
5899
|
},
|
|
5828
|
-
!searchTerm && /* @__PURE__ */
|
|
5900
|
+
!searchTerm && /* @__PURE__ */ import_react36.default.createElement(
|
|
5829
5901
|
Checkbox_default,
|
|
5830
5902
|
{
|
|
5831
5903
|
label: "Select all",
|
|
@@ -5842,7 +5914,7 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5842
5914
|
sx: { width: "100%", height: itemSize }
|
|
5843
5915
|
}
|
|
5844
5916
|
),
|
|
5845
|
-
/* @__PURE__ */
|
|
5917
|
+
/* @__PURE__ */ import_react36.default.createElement(
|
|
5846
5918
|
Stack_default,
|
|
5847
5919
|
{
|
|
5848
5920
|
sx: {
|
|
@@ -5852,11 +5924,11 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5852
5924
|
},
|
|
5853
5925
|
items.map((virtualRow) => {
|
|
5854
5926
|
const option = filteredOptions[virtualRow.index];
|
|
5855
|
-
return /* @__PURE__ */
|
|
5927
|
+
return /* @__PURE__ */ import_react36.default.createElement(
|
|
5856
5928
|
Checkbox_default,
|
|
5857
5929
|
{
|
|
5858
5930
|
key: virtualRow.key,
|
|
5859
|
-
label: /* @__PURE__ */
|
|
5931
|
+
label: /* @__PURE__ */ import_react36.default.createElement(LabelWithTooltip, { label: option.label, size }),
|
|
5860
5932
|
checked: internalValue.includes(option.value),
|
|
5861
5933
|
onChange: handleCheckboxChange(option.value),
|
|
5862
5934
|
size,
|
|
@@ -5887,9 +5959,12 @@ FilterableCheckboxGroup.displayName = "FilterableCheckboxGroup";
|
|
|
5887
5959
|
var import_joy46 = require("@mui/joy");
|
|
5888
5960
|
|
|
5889
5961
|
// src/components/IconMenuButton/IconMenuButton.tsx
|
|
5890
|
-
var
|
|
5962
|
+
var import_react37 = __toESM(require("react"));
|
|
5891
5963
|
var import_joy47 = require("@mui/joy");
|
|
5892
|
-
function
|
|
5964
|
+
var MenuButtonRootSlot = import_react37.default.forwardRef(function MenuButtonRootSlot2({ as, ownerState: _ownerState, ...rest }, ref) {
|
|
5965
|
+
return /* @__PURE__ */ import_react37.default.createElement(import_joy47.IconButton, { ...rest, component: as ?? "button", ref });
|
|
5966
|
+
});
|
|
5967
|
+
function IconMenuButtonInner(props, ref) {
|
|
5893
5968
|
const {
|
|
5894
5969
|
size,
|
|
5895
5970
|
icon,
|
|
@@ -5900,8 +5975,10 @@ function IconMenuButton(props) {
|
|
|
5900
5975
|
variant = "plain",
|
|
5901
5976
|
placement = "bottom"
|
|
5902
5977
|
} = props;
|
|
5978
|
+
const { ref: buttonComponentRef, ...buttonComponentProps } = props.buttonComponentProps ?? {};
|
|
5979
|
+
const mergedButtonRef = useMergedRef(buttonComponentRef, ref);
|
|
5903
5980
|
if (!items.length) {
|
|
5904
|
-
return /* @__PURE__ */
|
|
5981
|
+
return /* @__PURE__ */ import_react37.default.createElement(
|
|
5905
5982
|
import_joy47.IconButton,
|
|
5906
5983
|
{
|
|
5907
5984
|
component: props.buttonComponent ?? "button",
|
|
@@ -5910,41 +5987,46 @@ function IconMenuButton(props) {
|
|
|
5910
5987
|
color,
|
|
5911
5988
|
disabled,
|
|
5912
5989
|
loading,
|
|
5913
|
-
...
|
|
5990
|
+
...buttonComponentProps,
|
|
5991
|
+
ref: mergedButtonRef
|
|
5914
5992
|
},
|
|
5915
5993
|
icon
|
|
5916
5994
|
);
|
|
5917
5995
|
}
|
|
5918
|
-
return /* @__PURE__ */
|
|
5996
|
+
return /* @__PURE__ */ import_react37.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react37.default.createElement(
|
|
5919
5997
|
import_joy47.MenuButton,
|
|
5920
5998
|
{
|
|
5921
|
-
slots: { root:
|
|
5999
|
+
slots: { root: MenuButtonRootSlot },
|
|
5922
6000
|
slotProps: {
|
|
5923
6001
|
root: {
|
|
5924
|
-
|
|
6002
|
+
// 기본값 'button'은 MenuButtonRootSlot 한 곳에만 둔다.
|
|
6003
|
+
component: props.buttonComponent,
|
|
5925
6004
|
size,
|
|
5926
6005
|
variant,
|
|
5927
6006
|
color,
|
|
5928
6007
|
disabled,
|
|
5929
6008
|
loading,
|
|
5930
|
-
...
|
|
6009
|
+
...buttonComponentProps,
|
|
6010
|
+
// Joy의 useSlot이 내부 ref와 이 ref를 합쳐준다. 위 no-items 분기와 같은 경로로 ref를 넘긴다.
|
|
6011
|
+
ref: mergedButtonRef
|
|
5931
6012
|
}
|
|
5932
6013
|
}
|
|
5933
6014
|
},
|
|
5934
6015
|
icon
|
|
5935
|
-
), /* @__PURE__ */
|
|
6016
|
+
), /* @__PURE__ */ import_react37.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react37.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
|
|
5936
6017
|
}
|
|
6018
|
+
var IconMenuButton = import_react37.default.forwardRef(IconMenuButtonInner);
|
|
5937
6019
|
IconMenuButton.displayName = "IconMenuButton";
|
|
5938
6020
|
|
|
5939
6021
|
// src/components/Markdown/Markdown.tsx
|
|
5940
|
-
var
|
|
6022
|
+
var import_react38 = __toESM(require("react"));
|
|
5941
6023
|
var import_joy48 = require("@mui/joy");
|
|
5942
6024
|
var import_joy49 = require("@mui/joy");
|
|
5943
6025
|
var import_remark_gfm = __toESM(require("remark-gfm"));
|
|
5944
|
-
var LazyReactMarkdown = (0,
|
|
6026
|
+
var LazyReactMarkdown = (0, import_react38.lazy)(() => import("react-markdown"));
|
|
5945
6027
|
var Markdown = (props) => {
|
|
5946
|
-
const [rehypeAccent2, setRehypeAccent] = (0,
|
|
5947
|
-
(0,
|
|
6028
|
+
const [rehypeAccent2, setRehypeAccent] = (0, import_react38.useState)(null);
|
|
6029
|
+
(0, import_react38.useEffect)(() => {
|
|
5948
6030
|
const loadRehypeAccent = async () => {
|
|
5949
6031
|
const module2 = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
|
|
5950
6032
|
setRehypeAccent(() => module2.rehypeAccent);
|
|
@@ -5966,8 +6048,8 @@ var Markdown = (props) => {
|
|
|
5966
6048
|
if (!rehypeAccent2) {
|
|
5967
6049
|
return null;
|
|
5968
6050
|
}
|
|
5969
|
-
return /* @__PURE__ */
|
|
5970
|
-
|
|
6051
|
+
return /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react38.default.createElement(
|
|
6052
|
+
import_react38.Suspense,
|
|
5971
6053
|
{
|
|
5972
6054
|
fallback: (
|
|
5973
6055
|
// While in the fallback state, prevent browser auto-translation (e.g. Chrome/Google Translate)
|
|
@@ -5975,10 +6057,10 @@ var Markdown = (props) => {
|
|
|
5975
6057
|
// swaps the fallback for the real content via insertBefore; if the browser has mutated the DOM
|
|
5976
6058
|
// in the meantime, the reference node's parent changes and React throws a DOMException
|
|
5977
6059
|
// ("Failed to execute 'insertBefore' on 'Node'"), crashing the subtree. (cf. facebook/react#11538)
|
|
5978
|
-
fallback || /* @__PURE__ */
|
|
6060
|
+
fallback || /* @__PURE__ */ import_react38.default.createElement(Typography, { translate: "no", className: "notranslate" }, /* @__PURE__ */ import_react38.default.createElement(import_joy48.Skeleton, null, content || ""))
|
|
5979
6061
|
)
|
|
5980
6062
|
},
|
|
5981
|
-
/* @__PURE__ */
|
|
6063
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
5982
6064
|
LazyReactMarkdown,
|
|
5983
6065
|
{
|
|
5984
6066
|
...markdownOptions,
|
|
@@ -5986,17 +6068,17 @@ var Markdown = (props) => {
|
|
|
5986
6068
|
rehypePlugins: [[rehypeAccent2, { accentColor }]],
|
|
5987
6069
|
remarkPlugins: [import_remark_gfm.default],
|
|
5988
6070
|
components: {
|
|
5989
|
-
a: ({ children, href }) => /* @__PURE__ */
|
|
5990
|
-
hr: () => /* @__PURE__ */
|
|
5991
|
-
b: ({ children }) => /* @__PURE__ */
|
|
5992
|
-
strong: ({ children }) => /* @__PURE__ */
|
|
6071
|
+
a: ({ children, href }) => /* @__PURE__ */ import_react38.default.createElement(import_joy49.Link, { href, target: defaultLinkAction }, children),
|
|
6072
|
+
hr: () => /* @__PURE__ */ import_react38.default.createElement(Divider, { sx: { display: "block" } }),
|
|
6073
|
+
b: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
|
|
6074
|
+
strong: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
|
|
5993
6075
|
// Table components
|
|
5994
|
-
table: ({ children }) => /* @__PURE__ */
|
|
6076
|
+
table: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(Sheet, { variant: "outlined", sx: { display: "block", borderRadius: "sm", overflow: "auto" } }, /* @__PURE__ */ import_react38.default.createElement(Table, { size: "sm" }, children)),
|
|
5995
6077
|
// Code components
|
|
5996
6078
|
code: ({ children, className }) => {
|
|
5997
6079
|
const isBlock = className?.startsWith("language-");
|
|
5998
6080
|
if (isBlock) {
|
|
5999
|
-
return /* @__PURE__ */
|
|
6081
|
+
return /* @__PURE__ */ import_react38.default.createElement(
|
|
6000
6082
|
Typography,
|
|
6001
6083
|
{
|
|
6002
6084
|
component: "code",
|
|
@@ -6010,7 +6092,7 @@ var Markdown = (props) => {
|
|
|
6010
6092
|
children
|
|
6011
6093
|
);
|
|
6012
6094
|
}
|
|
6013
|
-
return /* @__PURE__ */
|
|
6095
|
+
return /* @__PURE__ */ import_react38.default.createElement(
|
|
6014
6096
|
Typography,
|
|
6015
6097
|
{
|
|
6016
6098
|
component: "code",
|
|
@@ -6025,7 +6107,7 @@ var Markdown = (props) => {
|
|
|
6025
6107
|
children
|
|
6026
6108
|
);
|
|
6027
6109
|
},
|
|
6028
|
-
pre: ({ children }) => /* @__PURE__ */
|
|
6110
|
+
pre: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(
|
|
6029
6111
|
Sheet,
|
|
6030
6112
|
{
|
|
6031
6113
|
variant: "soft",
|
|
@@ -6043,12 +6125,12 @@ var Markdown = (props) => {
|
|
|
6043
6125
|
// Task list checkbox
|
|
6044
6126
|
input: ({ checked, type }) => {
|
|
6045
6127
|
if (type === "checkbox") {
|
|
6046
|
-
return /* @__PURE__ */
|
|
6128
|
+
return /* @__PURE__ */ import_react38.default.createElement(Checkbox, { checked, disabled: true, size: "sm", sx: { mr: 1 } });
|
|
6047
6129
|
}
|
|
6048
|
-
return /* @__PURE__ */
|
|
6130
|
+
return /* @__PURE__ */ import_react38.default.createElement("input", { checked, type });
|
|
6049
6131
|
},
|
|
6050
6132
|
// Blockquote
|
|
6051
|
-
blockquote: ({ children }) => /* @__PURE__ */
|
|
6133
|
+
blockquote: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(
|
|
6052
6134
|
Sheet,
|
|
6053
6135
|
{
|
|
6054
6136
|
variant: "soft",
|
|
@@ -6057,12 +6139,12 @@ var Markdown = (props) => {
|
|
|
6057
6139
|
children
|
|
6058
6140
|
),
|
|
6059
6141
|
// Image
|
|
6060
|
-
img: ({ src, alt }) => /* @__PURE__ */
|
|
6142
|
+
img: ({ src, alt }) => /* @__PURE__ */ import_react38.default.createElement("img", { src, alt, style: { maxWidth: "100%", borderRadius: "4px" } }),
|
|
6061
6143
|
// Text style components
|
|
6062
|
-
em: ({ children }) => /* @__PURE__ */
|
|
6063
|
-
del: ({ children }) => /* @__PURE__ */
|
|
6144
|
+
em: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "em", sx: { fontStyle: "italic" } }, children),
|
|
6145
|
+
del: ({ children }) => /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "del", sx: { textDecoration: "line-through" } }, children),
|
|
6064
6146
|
// Span for accent color (from rehype-accent plugin)
|
|
6065
|
-
span: ({ children, node }) => /* @__PURE__ */
|
|
6147
|
+
span: ({ children, node }) => /* @__PURE__ */ import_react38.default.createElement(Typography, { component: "span", textColor: node?.properties?.textColor }, children),
|
|
6066
6148
|
...markdownOptions?.components
|
|
6067
6149
|
}
|
|
6068
6150
|
}
|
|
@@ -6072,7 +6154,7 @@ var Markdown = (props) => {
|
|
|
6072
6154
|
Markdown.displayName = "Markdown";
|
|
6073
6155
|
|
|
6074
6156
|
// src/components/MenuButton/MenuButton.tsx
|
|
6075
|
-
var
|
|
6157
|
+
var import_react39 = __toESM(require("react"));
|
|
6076
6158
|
var import_joy50 = require("@mui/joy");
|
|
6077
6159
|
var import_ExpandMore = __toESM(require("@mui/icons-material/ExpandMore"));
|
|
6078
6160
|
function MenuButton2(props) {
|
|
@@ -6090,7 +6172,7 @@ function MenuButton2(props) {
|
|
|
6090
6172
|
placement = "bottom"
|
|
6091
6173
|
} = props;
|
|
6092
6174
|
if (!items.length) {
|
|
6093
|
-
return /* @__PURE__ */
|
|
6175
|
+
return /* @__PURE__ */ import_react39.default.createElement(
|
|
6094
6176
|
import_joy50.Button,
|
|
6095
6177
|
{
|
|
6096
6178
|
component: props.buttonComponent ?? "button",
|
|
@@ -6101,12 +6183,12 @@ function MenuButton2(props) {
|
|
|
6101
6183
|
loading,
|
|
6102
6184
|
startDecorator,
|
|
6103
6185
|
...props.buttonComponentProps ?? {},
|
|
6104
|
-
endDecorator: showIcon ? /* @__PURE__ */
|
|
6186
|
+
endDecorator: showIcon ? /* @__PURE__ */ import_react39.default.createElement(import_react39.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react39.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react39.default.createElement(import_react39.default.Fragment, null, endDecorator)
|
|
6105
6187
|
},
|
|
6106
6188
|
buttonText
|
|
6107
6189
|
);
|
|
6108
6190
|
}
|
|
6109
|
-
return /* @__PURE__ */
|
|
6191
|
+
return /* @__PURE__ */ import_react39.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react39.default.createElement(
|
|
6110
6192
|
import_joy50.MenuButton,
|
|
6111
6193
|
{
|
|
6112
6194
|
component: props.buttonComponent ?? "button",
|
|
@@ -6117,15 +6199,15 @@ function MenuButton2(props) {
|
|
|
6117
6199
|
loading,
|
|
6118
6200
|
startDecorator,
|
|
6119
6201
|
...props.buttonComponentProps ?? {},
|
|
6120
|
-
endDecorator: showIcon ? /* @__PURE__ */
|
|
6202
|
+
endDecorator: showIcon ? /* @__PURE__ */ import_react39.default.createElement(import_react39.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react39.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react39.default.createElement(import_react39.default.Fragment, null, endDecorator)
|
|
6121
6203
|
},
|
|
6122
6204
|
buttonText
|
|
6123
|
-
), /* @__PURE__ */
|
|
6205
|
+
), /* @__PURE__ */ import_react39.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react39.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
|
|
6124
6206
|
}
|
|
6125
6207
|
MenuButton2.displayName = "MenuButton";
|
|
6126
6208
|
|
|
6127
6209
|
// src/components/MonthPicker/MonthPicker.tsx
|
|
6128
|
-
var
|
|
6210
|
+
var import_react40 = __toESM(require("react"));
|
|
6129
6211
|
var import_CalendarToday3 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
6130
6212
|
var import_joy51 = require("@mui/joy");
|
|
6131
6213
|
var import_base5 = require("@mui/base");
|
|
@@ -6181,7 +6263,7 @@ function parseDate3(dateString, format) {
|
|
|
6181
6263
|
const result = new Date(year, month, day);
|
|
6182
6264
|
return result;
|
|
6183
6265
|
}
|
|
6184
|
-
var MonthPicker = (0,
|
|
6266
|
+
var MonthPicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
6185
6267
|
const props = (0, import_joy51.useThemeProps)({ props: inProps, name: "MonthPicker" });
|
|
6186
6268
|
const {
|
|
6187
6269
|
onChange,
|
|
@@ -6208,18 +6290,18 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6208
6290
|
locale,
|
|
6209
6291
|
...innerProps
|
|
6210
6292
|
} = props;
|
|
6211
|
-
const innerRef = (0,
|
|
6212
|
-
const buttonRef = (0,
|
|
6293
|
+
const innerRef = (0, import_react40.useRef)(null);
|
|
6294
|
+
const buttonRef = (0, import_react40.useRef)(null);
|
|
6213
6295
|
const [rawValue, setValue, isControlled] = useControlledState(
|
|
6214
6296
|
props.value,
|
|
6215
6297
|
props.defaultValue ?? null,
|
|
6216
|
-
(0,
|
|
6298
|
+
(0, import_react40.useCallback)(
|
|
6217
6299
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
6218
6300
|
[props.name, onChange]
|
|
6219
6301
|
)
|
|
6220
6302
|
);
|
|
6221
6303
|
const value = rawValue ?? "";
|
|
6222
|
-
const getFormattedDisplayValue = (0,
|
|
6304
|
+
const getFormattedDisplayValue = (0, import_react40.useCallback)(
|
|
6223
6305
|
(inputValue) => {
|
|
6224
6306
|
if (!inputValue) return "";
|
|
6225
6307
|
try {
|
|
@@ -6230,19 +6312,19 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6230
6312
|
},
|
|
6231
6313
|
[format, displayFormat, locale]
|
|
6232
6314
|
);
|
|
6233
|
-
const [displayValue, setDisplayValue] = (0,
|
|
6234
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
6315
|
+
const [displayValue, setDisplayValue] = (0, import_react40.useState)(() => getFormattedDisplayValue(value));
|
|
6316
|
+
const [anchorEl, setAnchorEl] = (0, import_react40.useState)(null);
|
|
6235
6317
|
const open = Boolean(anchorEl);
|
|
6236
|
-
(0,
|
|
6318
|
+
(0, import_react40.useEffect)(() => {
|
|
6237
6319
|
if (!anchorEl) {
|
|
6238
6320
|
innerRef.current?.blur();
|
|
6239
6321
|
}
|
|
6240
6322
|
}, [anchorEl, innerRef]);
|
|
6241
|
-
(0,
|
|
6242
|
-
(0,
|
|
6323
|
+
(0, import_react40.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
6324
|
+
(0, import_react40.useEffect)(() => {
|
|
6243
6325
|
setDisplayValue(getFormattedDisplayValue(value));
|
|
6244
6326
|
}, [value, getFormattedDisplayValue]);
|
|
6245
|
-
const handleChange = (0,
|
|
6327
|
+
const handleChange = (0, import_react40.useCallback)(
|
|
6246
6328
|
(event) => {
|
|
6247
6329
|
const newValue = event.target.value;
|
|
6248
6330
|
setValue(newValue);
|
|
@@ -6252,21 +6334,21 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6252
6334
|
},
|
|
6253
6335
|
[setValue, getFormattedDisplayValue, isControlled]
|
|
6254
6336
|
);
|
|
6255
|
-
const handleCalendarToggle = (0,
|
|
6337
|
+
const handleCalendarToggle = (0, import_react40.useCallback)(
|
|
6256
6338
|
(event) => {
|
|
6257
6339
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
6258
6340
|
innerRef.current?.focus();
|
|
6259
6341
|
},
|
|
6260
6342
|
[anchorEl, setAnchorEl, innerRef]
|
|
6261
6343
|
);
|
|
6262
|
-
const handleInputMouseDown = (0,
|
|
6344
|
+
const handleInputMouseDown = (0, import_react40.useCallback)(
|
|
6263
6345
|
(event) => {
|
|
6264
6346
|
event.preventDefault();
|
|
6265
6347
|
buttonRef.current?.focus();
|
|
6266
6348
|
},
|
|
6267
6349
|
[buttonRef]
|
|
6268
6350
|
);
|
|
6269
|
-
return /* @__PURE__ */
|
|
6351
|
+
return /* @__PURE__ */ import_react40.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react40.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react40.default.createElement(import_react40.default.Fragment, null, /* @__PURE__ */ import_react40.default.createElement(
|
|
6270
6352
|
Input_default,
|
|
6271
6353
|
{
|
|
6272
6354
|
...innerProps,
|
|
@@ -6296,7 +6378,7 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6296
6378
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
6297
6379
|
fontFamily: "monospace"
|
|
6298
6380
|
},
|
|
6299
|
-
endDecorator: /* @__PURE__ */
|
|
6381
|
+
endDecorator: /* @__PURE__ */ import_react40.default.createElement(
|
|
6300
6382
|
IconButton_default,
|
|
6301
6383
|
{
|
|
6302
6384
|
ref: buttonRef,
|
|
@@ -6308,12 +6390,12 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6308
6390
|
"aria-expanded": open,
|
|
6309
6391
|
disabled
|
|
6310
6392
|
},
|
|
6311
|
-
/* @__PURE__ */
|
|
6393
|
+
/* @__PURE__ */ import_react40.default.createElement(import_CalendarToday3.default, null)
|
|
6312
6394
|
),
|
|
6313
6395
|
label,
|
|
6314
6396
|
helperText
|
|
6315
6397
|
}
|
|
6316
|
-
), open && /* @__PURE__ */
|
|
6398
|
+
), open && /* @__PURE__ */ import_react40.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react40.default.createElement(
|
|
6317
6399
|
StyledPopper3,
|
|
6318
6400
|
{
|
|
6319
6401
|
id: "month-picker-popper",
|
|
@@ -6332,7 +6414,7 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6332
6414
|
"aria-label": "Calendar Tooltip",
|
|
6333
6415
|
"aria-expanded": open
|
|
6334
6416
|
},
|
|
6335
|
-
/* @__PURE__ */
|
|
6417
|
+
/* @__PURE__ */ import_react40.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react40.default.createElement(
|
|
6336
6418
|
Calendar_default,
|
|
6337
6419
|
{
|
|
6338
6420
|
view: "month",
|
|
@@ -6353,14 +6435,14 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6353
6435
|
disablePast,
|
|
6354
6436
|
locale
|
|
6355
6437
|
}
|
|
6356
|
-
), /* @__PURE__ */
|
|
6438
|
+
), /* @__PURE__ */ import_react40.default.createElement(
|
|
6357
6439
|
DialogActions_default,
|
|
6358
6440
|
{
|
|
6359
6441
|
sx: {
|
|
6360
6442
|
p: 1
|
|
6361
6443
|
}
|
|
6362
6444
|
},
|
|
6363
|
-
/* @__PURE__ */
|
|
6445
|
+
/* @__PURE__ */ import_react40.default.createElement(
|
|
6364
6446
|
Button_default,
|
|
6365
6447
|
{
|
|
6366
6448
|
size,
|
|
@@ -6383,7 +6465,7 @@ var MonthPicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6383
6465
|
});
|
|
6384
6466
|
|
|
6385
6467
|
// src/components/MonthRangePicker/MonthRangePicker.tsx
|
|
6386
|
-
var
|
|
6468
|
+
var import_react41 = __toESM(require("react"));
|
|
6387
6469
|
var import_react_imask3 = require("react-imask");
|
|
6388
6470
|
var import_CalendarToday4 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
6389
6471
|
var import_joy52 = require("@mui/joy");
|
|
@@ -6444,9 +6526,9 @@ var parseDates2 = (str) => {
|
|
|
6444
6526
|
var formatToPattern3 = (format) => {
|
|
6445
6527
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
|
|
6446
6528
|
};
|
|
6447
|
-
var TextMaskAdapter7 =
|
|
6529
|
+
var TextMaskAdapter7 = import_react41.default.forwardRef(function TextMaskAdapter8(props, ref) {
|
|
6448
6530
|
const { onChange, format, ...other } = props;
|
|
6449
|
-
return /* @__PURE__ */
|
|
6531
|
+
return /* @__PURE__ */ import_react41.default.createElement(
|
|
6450
6532
|
import_react_imask3.IMaskInput,
|
|
6451
6533
|
{
|
|
6452
6534
|
...other,
|
|
@@ -6474,7 +6556,7 @@ var TextMaskAdapter7 = import_react40.default.forwardRef(function TextMaskAdapte
|
|
|
6474
6556
|
}
|
|
6475
6557
|
);
|
|
6476
6558
|
});
|
|
6477
|
-
var MonthRangePicker = (0,
|
|
6559
|
+
var MonthRangePicker = (0, import_react41.forwardRef)((inProps, ref) => {
|
|
6478
6560
|
const props = (0, import_joy52.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
|
|
6479
6561
|
const {
|
|
6480
6562
|
onChange,
|
|
@@ -6498,24 +6580,24 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
|
6498
6580
|
} = props;
|
|
6499
6581
|
const displayFormat = displayFormatProp ?? format;
|
|
6500
6582
|
const isAlphabeticDisplay = hasAlphabeticMonth3(displayFormat);
|
|
6501
|
-
const innerRef = (0,
|
|
6502
|
-
const buttonRef = (0,
|
|
6583
|
+
const innerRef = (0, import_react41.useRef)(null);
|
|
6584
|
+
const buttonRef = (0, import_react41.useRef)(null);
|
|
6503
6585
|
const [rawValue, setValue] = useControlledState(
|
|
6504
6586
|
props.value,
|
|
6505
6587
|
props.defaultValue ?? null,
|
|
6506
|
-
(0,
|
|
6588
|
+
(0, import_react41.useCallback)(
|
|
6507
6589
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
6508
6590
|
[props.name, onChange]
|
|
6509
6591
|
)
|
|
6510
6592
|
);
|
|
6511
6593
|
const value = rawValue ?? "";
|
|
6512
|
-
const [displayValue, setDisplayValue] = (0,
|
|
6594
|
+
const [displayValue, setDisplayValue] = (0, import_react41.useState)(
|
|
6513
6595
|
() => value ? formatValueString4(parseDates2(value), displayFormat, locale) : ""
|
|
6514
6596
|
);
|
|
6515
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
6597
|
+
const [anchorEl, setAnchorEl] = (0, import_react41.useState)(null);
|
|
6516
6598
|
const open = Boolean(anchorEl);
|
|
6517
|
-
const calendarValue = (0,
|
|
6518
|
-
(0,
|
|
6599
|
+
const calendarValue = (0, import_react41.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
|
|
6600
|
+
(0, import_react41.useEffect)(() => {
|
|
6519
6601
|
if (value) {
|
|
6520
6602
|
try {
|
|
6521
6603
|
const dates = parseDates2(value);
|
|
@@ -6527,13 +6609,13 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
|
6527
6609
|
setDisplayValue("");
|
|
6528
6610
|
}
|
|
6529
6611
|
}, [displayFormat, locale, value]);
|
|
6530
|
-
(0,
|
|
6612
|
+
(0, import_react41.useEffect)(() => {
|
|
6531
6613
|
if (!anchorEl) {
|
|
6532
6614
|
innerRef.current?.blur();
|
|
6533
6615
|
}
|
|
6534
6616
|
}, [anchorEl, innerRef]);
|
|
6535
|
-
(0,
|
|
6536
|
-
const handleChange = (0,
|
|
6617
|
+
(0, import_react41.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
6618
|
+
const handleChange = (0, import_react41.useCallback)(
|
|
6537
6619
|
(event) => {
|
|
6538
6620
|
setDisplayValue(
|
|
6539
6621
|
event.target.value ? formatValueString4(parseDates2(event.target.value), displayFormat, locale) : ""
|
|
@@ -6542,7 +6624,7 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
|
6542
6624
|
},
|
|
6543
6625
|
[displayFormat, locale, setValue]
|
|
6544
6626
|
);
|
|
6545
|
-
const handleInputMouseDown = (0,
|
|
6627
|
+
const handleInputMouseDown = (0, import_react41.useCallback)(
|
|
6546
6628
|
(event) => {
|
|
6547
6629
|
if (isAlphabeticDisplay) {
|
|
6548
6630
|
event.preventDefault();
|
|
@@ -6551,14 +6633,14 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
|
6551
6633
|
},
|
|
6552
6634
|
[isAlphabeticDisplay, buttonRef]
|
|
6553
6635
|
);
|
|
6554
|
-
const handleCalendarToggle = (0,
|
|
6636
|
+
const handleCalendarToggle = (0, import_react41.useCallback)(
|
|
6555
6637
|
(event) => {
|
|
6556
6638
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
6557
6639
|
innerRef.current?.focus();
|
|
6558
6640
|
},
|
|
6559
6641
|
[anchorEl, setAnchorEl, innerRef]
|
|
6560
6642
|
);
|
|
6561
|
-
const handleCalendarChange = (0,
|
|
6643
|
+
const handleCalendarChange = (0, import_react41.useCallback)(
|
|
6562
6644
|
([date1, date2]) => {
|
|
6563
6645
|
if (!date1 || !date2) return;
|
|
6564
6646
|
const formattedValue = formatValueString4([date1, date2], format);
|
|
@@ -6568,7 +6650,7 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
|
6568
6650
|
},
|
|
6569
6651
|
[setValue, setAnchorEl, format, displayFormat, locale]
|
|
6570
6652
|
);
|
|
6571
|
-
return /* @__PURE__ */
|
|
6653
|
+
return /* @__PURE__ */ import_react41.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react41.default.createElement(import_base6.FocusTrap, { open: true }, /* @__PURE__ */ import_react41.default.createElement(import_react41.default.Fragment, null, /* @__PURE__ */ import_react41.default.createElement(
|
|
6572
6654
|
Input_default,
|
|
6573
6655
|
{
|
|
6574
6656
|
...innerProps,
|
|
@@ -6598,7 +6680,7 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
|
6598
6680
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
6599
6681
|
fontFamily: "monospace"
|
|
6600
6682
|
},
|
|
6601
|
-
endDecorator: /* @__PURE__ */
|
|
6683
|
+
endDecorator: /* @__PURE__ */ import_react41.default.createElement(
|
|
6602
6684
|
IconButton_default,
|
|
6603
6685
|
{
|
|
6604
6686
|
ref: buttonRef,
|
|
@@ -6609,12 +6691,12 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
|
6609
6691
|
"aria-haspopup": "dialog",
|
|
6610
6692
|
"aria-expanded": open
|
|
6611
6693
|
},
|
|
6612
|
-
/* @__PURE__ */
|
|
6694
|
+
/* @__PURE__ */ import_react41.default.createElement(import_CalendarToday4.default, null)
|
|
6613
6695
|
),
|
|
6614
6696
|
label,
|
|
6615
6697
|
helperText
|
|
6616
6698
|
}
|
|
6617
|
-
), open && /* @__PURE__ */
|
|
6699
|
+
), open && /* @__PURE__ */ import_react41.default.createElement(import_base6.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react41.default.createElement(
|
|
6618
6700
|
StyledPopper4,
|
|
6619
6701
|
{
|
|
6620
6702
|
id: "month-range-picker-popper",
|
|
@@ -6633,7 +6715,7 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
|
6633
6715
|
"aria-label": "Calendar Tooltip",
|
|
6634
6716
|
"aria-expanded": open
|
|
6635
6717
|
},
|
|
6636
|
-
/* @__PURE__ */
|
|
6718
|
+
/* @__PURE__ */ import_react41.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react41.default.createElement(
|
|
6637
6719
|
Calendar_default,
|
|
6638
6720
|
{
|
|
6639
6721
|
view: "month",
|
|
@@ -6647,14 +6729,14 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
|
6647
6729
|
disablePast,
|
|
6648
6730
|
locale
|
|
6649
6731
|
}
|
|
6650
|
-
), /* @__PURE__ */
|
|
6732
|
+
), /* @__PURE__ */ import_react41.default.createElement(
|
|
6651
6733
|
DialogActions_default,
|
|
6652
6734
|
{
|
|
6653
6735
|
sx: {
|
|
6654
6736
|
p: 1
|
|
6655
6737
|
}
|
|
6656
6738
|
},
|
|
6657
|
-
/* @__PURE__ */
|
|
6739
|
+
/* @__PURE__ */ import_react41.default.createElement(
|
|
6658
6740
|
Button_default,
|
|
6659
6741
|
{
|
|
6660
6742
|
size,
|
|
@@ -6673,7 +6755,7 @@ var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
|
6673
6755
|
MonthRangePicker.displayName = "MonthRangePicker";
|
|
6674
6756
|
|
|
6675
6757
|
// src/components/NavigationGroup/NavigationGroup.tsx
|
|
6676
|
-
var
|
|
6758
|
+
var import_react42 = __toESM(require("react"));
|
|
6677
6759
|
var import_joy53 = require("@mui/joy");
|
|
6678
6760
|
var AccordionSummary2 = (0, import_joy53.styled)(import_joy53.AccordionSummary, {
|
|
6679
6761
|
name: "NavigationGroup",
|
|
@@ -6697,11 +6779,11 @@ var AccordionDetails2 = (0, import_joy53.styled)(import_joy53.AccordionDetails,
|
|
|
6697
6779
|
}));
|
|
6698
6780
|
function NavigationGroup(props) {
|
|
6699
6781
|
const { title, children, startDecorator, level, ...rest } = props;
|
|
6700
|
-
return /* @__PURE__ */
|
|
6782
|
+
return /* @__PURE__ */ import_react42.default.createElement(import_joy53.Accordion, { ...rest }, /* @__PURE__ */ import_react42.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react42.default.createElement(import_joy53.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react42.default.createElement(AccordionDetails2, null, children));
|
|
6701
6783
|
}
|
|
6702
6784
|
|
|
6703
6785
|
// src/components/NavigationItem/NavigationItem.tsx
|
|
6704
|
-
var
|
|
6786
|
+
var import_react43 = __toESM(require("react"));
|
|
6705
6787
|
var import_joy54 = require("@mui/joy");
|
|
6706
6788
|
var ListItemButton = (0, import_joy54.styled)(import_joy54.ListItemButton, {
|
|
6707
6789
|
name: "NavigationItem",
|
|
@@ -6730,7 +6812,7 @@ function NavigationItem(props) {
|
|
|
6730
6812
|
const handleClick = () => {
|
|
6731
6813
|
onClick?.(id);
|
|
6732
6814
|
};
|
|
6733
|
-
return /* @__PURE__ */
|
|
6815
|
+
return /* @__PURE__ */ import_react43.default.createElement(import_joy54.ListItem, { ...rest }, /* @__PURE__ */ import_react43.default.createElement(
|
|
6734
6816
|
ListItemButton,
|
|
6735
6817
|
{
|
|
6736
6818
|
level,
|
|
@@ -6739,21 +6821,21 @@ function NavigationItem(props) {
|
|
|
6739
6821
|
"aria-current": selected,
|
|
6740
6822
|
onClick: handleClick
|
|
6741
6823
|
},
|
|
6742
|
-
startDecorator && /* @__PURE__ */
|
|
6824
|
+
startDecorator && /* @__PURE__ */ import_react43.default.createElement(import_joy54.ListItemDecorator, null, startDecorator),
|
|
6743
6825
|
children
|
|
6744
6826
|
));
|
|
6745
6827
|
}
|
|
6746
6828
|
|
|
6747
6829
|
// src/components/Navigator/Navigator.tsx
|
|
6748
|
-
var
|
|
6830
|
+
var import_react44 = __toESM(require("react"));
|
|
6749
6831
|
function Navigator(props) {
|
|
6750
6832
|
const { items, level = 0, onSelect } = props;
|
|
6751
6833
|
const handleItemClick = (id) => {
|
|
6752
6834
|
onSelect?.(id);
|
|
6753
6835
|
};
|
|
6754
|
-
return /* @__PURE__ */
|
|
6836
|
+
return /* @__PURE__ */ import_react44.default.createElement("div", null, items.map((item, index) => {
|
|
6755
6837
|
if (item.type === "item") {
|
|
6756
|
-
return /* @__PURE__ */
|
|
6838
|
+
return /* @__PURE__ */ import_react44.default.createElement(
|
|
6757
6839
|
NavigationItem,
|
|
6758
6840
|
{
|
|
6759
6841
|
key: item.id,
|
|
@@ -6766,7 +6848,7 @@ function Navigator(props) {
|
|
|
6766
6848
|
item.title
|
|
6767
6849
|
);
|
|
6768
6850
|
} else if (item.type === "group") {
|
|
6769
|
-
return /* @__PURE__ */
|
|
6851
|
+
return /* @__PURE__ */ import_react44.default.createElement(
|
|
6770
6852
|
NavigationGroup,
|
|
6771
6853
|
{
|
|
6772
6854
|
key: `${item.title}-${index}`,
|
|
@@ -6784,16 +6866,16 @@ function Navigator(props) {
|
|
|
6784
6866
|
Navigator.displayName = "Navigator";
|
|
6785
6867
|
|
|
6786
6868
|
// src/components/PercentageInput/PercentageInput.tsx
|
|
6787
|
-
var
|
|
6869
|
+
var import_react45 = __toESM(require("react"));
|
|
6788
6870
|
var import_react_number_format2 = require("react-number-format");
|
|
6789
6871
|
var import_joy55 = require("@mui/joy");
|
|
6790
6872
|
var padDecimal = (value, decimalScale) => {
|
|
6791
6873
|
const [integer, decimal = ""] = `${value}`.split(".");
|
|
6792
6874
|
return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
|
|
6793
6875
|
};
|
|
6794
|
-
var TextMaskAdapter9 =
|
|
6876
|
+
var TextMaskAdapter9 = import_react45.default.forwardRef(function TextMaskAdapter10(props, ref) {
|
|
6795
6877
|
const { onChange, min, max, ...innerProps } = props;
|
|
6796
|
-
return /* @__PURE__ */
|
|
6878
|
+
return /* @__PURE__ */ import_react45.default.createElement(
|
|
6797
6879
|
import_react_number_format2.NumericFormat,
|
|
6798
6880
|
{
|
|
6799
6881
|
...innerProps,
|
|
@@ -6818,7 +6900,7 @@ var PercentageInputRoot = (0, import_joy55.styled)(Input_default, {
|
|
|
6818
6900
|
slot: "Root",
|
|
6819
6901
|
overridesResolver: (props, styles) => styles.root
|
|
6820
6902
|
})({});
|
|
6821
|
-
var PercentageInput =
|
|
6903
|
+
var PercentageInput = import_react45.default.forwardRef(
|
|
6822
6904
|
function PercentageInput2(inProps, ref) {
|
|
6823
6905
|
const props = (0, import_joy55.useThemeProps)({ props: inProps, name: "PercentageInput" });
|
|
6824
6906
|
const {
|
|
@@ -6841,19 +6923,19 @@ var PercentageInput = import_react44.default.forwardRef(
|
|
|
6841
6923
|
const [_value, setValue] = useControlledState(
|
|
6842
6924
|
props.value,
|
|
6843
6925
|
props.defaultValue ?? null,
|
|
6844
|
-
(0,
|
|
6926
|
+
(0, import_react45.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
6845
6927
|
);
|
|
6846
|
-
const value = (0,
|
|
6928
|
+
const value = (0, import_react45.useMemo)(() => {
|
|
6847
6929
|
if (_value && useMinorUnit) {
|
|
6848
6930
|
return _value / Math.pow(10, maxDecimalScale);
|
|
6849
6931
|
}
|
|
6850
6932
|
return _value;
|
|
6851
6933
|
}, [_value, useMinorUnit, maxDecimalScale]);
|
|
6852
|
-
const internalError = (0,
|
|
6934
|
+
const internalError = (0, import_react45.useMemo)(
|
|
6853
6935
|
() => value != null && (max != null && value > max || min != null && value < min),
|
|
6854
6936
|
[max, min, value]
|
|
6855
6937
|
);
|
|
6856
|
-
const handleChange = (0,
|
|
6938
|
+
const handleChange = (0, import_react45.useCallback)(
|
|
6857
6939
|
(event) => {
|
|
6858
6940
|
if (event.target.value === "") {
|
|
6859
6941
|
setValue(null);
|
|
@@ -6865,7 +6947,7 @@ var PercentageInput = import_react44.default.forwardRef(
|
|
|
6865
6947
|
},
|
|
6866
6948
|
[setValue, useMinorUnit, maxDecimalScale]
|
|
6867
6949
|
);
|
|
6868
|
-
return /* @__PURE__ */
|
|
6950
|
+
return /* @__PURE__ */ import_react45.default.createElement(
|
|
6869
6951
|
PercentageInputRoot,
|
|
6870
6952
|
{
|
|
6871
6953
|
...innerProps,
|
|
@@ -6906,7 +6988,7 @@ var RadioGroup = MotionRadioGroup;
|
|
|
6906
6988
|
RadioGroup.displayName = "RadioGroup";
|
|
6907
6989
|
|
|
6908
6990
|
// src/components/RadioTileGroup/RadioTileGroup.tsx
|
|
6909
|
-
var
|
|
6991
|
+
var import_react46 = __toESM(require("react"));
|
|
6910
6992
|
var import_joy57 = require("@mui/joy");
|
|
6911
6993
|
var RadioTileGroupRoot = (0, import_joy57.styled)(RadioGroup, {
|
|
6912
6994
|
name: "RadioTileGroup",
|
|
@@ -6994,7 +7076,7 @@ function RadioTileGroup(props) {
|
|
|
6994
7076
|
error,
|
|
6995
7077
|
required
|
|
6996
7078
|
} = props;
|
|
6997
|
-
const radioGroup = /* @__PURE__ */
|
|
7079
|
+
const radioGroup = /* @__PURE__ */ import_react46.default.createElement(
|
|
6998
7080
|
RadioTileGroupRoot,
|
|
6999
7081
|
{
|
|
7000
7082
|
overlay: true,
|
|
@@ -7005,7 +7087,7 @@ function RadioTileGroup(props) {
|
|
|
7005
7087
|
flex,
|
|
7006
7088
|
columns
|
|
7007
7089
|
},
|
|
7008
|
-
options.map((option) => /* @__PURE__ */
|
|
7090
|
+
options.map((option) => /* @__PURE__ */ import_react46.default.createElement(
|
|
7009
7091
|
RadioTileSheet,
|
|
7010
7092
|
{
|
|
7011
7093
|
key: option.value,
|
|
@@ -7015,7 +7097,7 @@ function RadioTileGroup(props) {
|
|
|
7015
7097
|
flex,
|
|
7016
7098
|
textAlign
|
|
7017
7099
|
},
|
|
7018
|
-
/* @__PURE__ */
|
|
7100
|
+
/* @__PURE__ */ import_react46.default.createElement(
|
|
7019
7101
|
Radio,
|
|
7020
7102
|
{
|
|
7021
7103
|
id: `${option.value}`,
|
|
@@ -7044,7 +7126,7 @@ function RadioTileGroup(props) {
|
|
|
7044
7126
|
}
|
|
7045
7127
|
}
|
|
7046
7128
|
),
|
|
7047
|
-
option.startDecorator && /* @__PURE__ */
|
|
7129
|
+
option.startDecorator && /* @__PURE__ */ import_react46.default.createElement(
|
|
7048
7130
|
Box_default,
|
|
7049
7131
|
{
|
|
7050
7132
|
sx: {
|
|
@@ -7065,15 +7147,15 @@ function RadioTileGroup(props) {
|
|
|
7065
7147
|
)
|
|
7066
7148
|
))
|
|
7067
7149
|
);
|
|
7068
|
-
return /* @__PURE__ */
|
|
7150
|
+
return /* @__PURE__ */ import_react46.default.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ import_react46.default.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ import_react46.default.createElement(FormHelperText_default, null, helperText));
|
|
7069
7151
|
}
|
|
7070
7152
|
RadioTileGroup.displayName = "RadioTileGroup";
|
|
7071
7153
|
|
|
7072
7154
|
// src/components/RadioList/RadioList.tsx
|
|
7073
|
-
var
|
|
7155
|
+
var import_react47 = __toESM(require("react"));
|
|
7074
7156
|
function RadioList(props) {
|
|
7075
7157
|
const { items, ...innerProps } = props;
|
|
7076
|
-
return /* @__PURE__ */
|
|
7158
|
+
return /* @__PURE__ */ import_react47.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react47.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
|
|
7077
7159
|
}
|
|
7078
7160
|
RadioList.displayName = "RadioList";
|
|
7079
7161
|
|
|
@@ -7164,7 +7246,7 @@ var SearchBar = React44.forwardRef(function SearchBar2(inProps, ref) {
|
|
|
7164
7246
|
SearchBar.displayName = "SearchBar";
|
|
7165
7247
|
|
|
7166
7248
|
// src/components/Stepper/Stepper.tsx
|
|
7167
|
-
var
|
|
7249
|
+
var import_react48 = __toESM(require("react"));
|
|
7168
7250
|
var import_joy58 = require("@mui/joy");
|
|
7169
7251
|
var import_Check = __toESM(require("@mui/icons-material/Check"));
|
|
7170
7252
|
var import_framer_motion28 = require("framer-motion");
|
|
@@ -7193,7 +7275,7 @@ function Stepper(props) {
|
|
|
7193
7275
|
stepOrientation = "horizontal"
|
|
7194
7276
|
} = props;
|
|
7195
7277
|
const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
|
|
7196
|
-
return /* @__PURE__ */
|
|
7278
|
+
return /* @__PURE__ */ import_react48.default.createElement(
|
|
7197
7279
|
MotionStepper,
|
|
7198
7280
|
{
|
|
7199
7281
|
orientation,
|
|
@@ -7232,23 +7314,23 @@ function Stepper(props) {
|
|
|
7232
7314
|
const completed = activeStep > i + 1;
|
|
7233
7315
|
const disabled = activeStep < i + 1;
|
|
7234
7316
|
const hasContent = step.label || step.extraContent;
|
|
7235
|
-
return /* @__PURE__ */
|
|
7317
|
+
return /* @__PURE__ */ import_react48.default.createElement(
|
|
7236
7318
|
Step,
|
|
7237
7319
|
{
|
|
7238
7320
|
key: `step-${i}`,
|
|
7239
|
-
indicator: /* @__PURE__ */
|
|
7321
|
+
indicator: /* @__PURE__ */ import_react48.default.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ import_react48.default.createElement(import_Check.default, null) : step.indicatorContent),
|
|
7240
7322
|
active,
|
|
7241
7323
|
completed,
|
|
7242
7324
|
disabled,
|
|
7243
7325
|
orientation: effectiveStepOrientation
|
|
7244
7326
|
},
|
|
7245
|
-
hasContent && /* @__PURE__ */
|
|
7327
|
+
hasContent && /* @__PURE__ */ import_react48.default.createElement(
|
|
7246
7328
|
Stack_default,
|
|
7247
7329
|
{
|
|
7248
7330
|
sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
|
|
7249
7331
|
},
|
|
7250
|
-
step.label && /* @__PURE__ */
|
|
7251
|
-
step.extraContent && /* @__PURE__ */
|
|
7332
|
+
step.label && /* @__PURE__ */ import_react48.default.createElement(Typography_default, { level: "title-sm" }, step.label),
|
|
7333
|
+
step.extraContent && /* @__PURE__ */ import_react48.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
|
|
7252
7334
|
)
|
|
7253
7335
|
);
|
|
7254
7336
|
})
|
|
@@ -7257,7 +7339,7 @@ function Stepper(props) {
|
|
|
7257
7339
|
Stepper.displayName = "Stepper";
|
|
7258
7340
|
|
|
7259
7341
|
// src/components/Switch/Switch.tsx
|
|
7260
|
-
var
|
|
7342
|
+
var import_react49 = __toESM(require("react"));
|
|
7261
7343
|
var import_joy59 = require("@mui/joy");
|
|
7262
7344
|
var import_framer_motion29 = require("framer-motion");
|
|
7263
7345
|
var MotionSwitch = (0, import_framer_motion29.motion)(import_joy59.Switch);
|
|
@@ -7279,14 +7361,14 @@ var StyledThumb = (0, import_joy59.styled)(import_framer_motion29.motion.div)({
|
|
|
7279
7361
|
right: "var(--Switch-thumbOffset)"
|
|
7280
7362
|
}
|
|
7281
7363
|
});
|
|
7282
|
-
var Thumb = (props) => /* @__PURE__ */
|
|
7364
|
+
var Thumb = (props) => /* @__PURE__ */ import_react49.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
|
|
7283
7365
|
var spring = {
|
|
7284
7366
|
type: "spring",
|
|
7285
7367
|
stiffness: 700,
|
|
7286
7368
|
damping: 30
|
|
7287
7369
|
};
|
|
7288
7370
|
var Switch = (props) => {
|
|
7289
|
-
return /* @__PURE__ */
|
|
7371
|
+
return /* @__PURE__ */ import_react49.default.createElement(
|
|
7290
7372
|
MotionSwitch,
|
|
7291
7373
|
{
|
|
7292
7374
|
...props,
|
|
@@ -7300,7 +7382,7 @@ var Switch = (props) => {
|
|
|
7300
7382
|
Switch.displayName = "Switch";
|
|
7301
7383
|
|
|
7302
7384
|
// src/components/Tabs/Tabs.tsx
|
|
7303
|
-
var
|
|
7385
|
+
var import_react50 = __toESM(require("react"));
|
|
7304
7386
|
var import_joy60 = require("@mui/joy");
|
|
7305
7387
|
var StyledTabs = (0, import_joy60.styled)(import_joy60.Tabs)(({ theme }) => ({
|
|
7306
7388
|
backgroundColor: theme.palette.background.body
|
|
@@ -7316,15 +7398,15 @@ var StyledTab = (0, import_joy60.styled)(import_joy60.Tab)(({ theme }) => ({
|
|
|
7316
7398
|
backgroundColor: theme.palette.background.body
|
|
7317
7399
|
}
|
|
7318
7400
|
}));
|
|
7319
|
-
var Tab = (0,
|
|
7320
|
-
return /* @__PURE__ */
|
|
7401
|
+
var Tab = (0, import_react50.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
|
|
7402
|
+
return /* @__PURE__ */ import_react50.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
|
|
7321
7403
|
});
|
|
7322
7404
|
Tab.displayName = "Tab";
|
|
7323
7405
|
var TabList = import_joy60.TabList;
|
|
7324
7406
|
var TabPanel = import_joy60.TabPanel;
|
|
7325
7407
|
|
|
7326
7408
|
// src/components/ThemeProvider/ThemeProvider.tsx
|
|
7327
|
-
var
|
|
7409
|
+
var import_react51 = __toESM(require("react"));
|
|
7328
7410
|
var import_joy61 = require("@mui/joy");
|
|
7329
7411
|
var colorScheme = {
|
|
7330
7412
|
palette: {
|
|
@@ -7590,12 +7672,12 @@ var defaultTheme = (0, import_joy61.extendTheme)({
|
|
|
7590
7672
|
});
|
|
7591
7673
|
function ThemeProvider(props) {
|
|
7592
7674
|
const theme = props.theme || defaultTheme;
|
|
7593
|
-
return /* @__PURE__ */
|
|
7675
|
+
return /* @__PURE__ */ import_react51.default.createElement(import_react51.default.Fragment, null, /* @__PURE__ */ import_react51.default.createElement(import_joy61.CssVarsProvider, { theme }, /* @__PURE__ */ import_react51.default.createElement(import_joy61.CssBaseline, null), props.children));
|
|
7594
7676
|
}
|
|
7595
7677
|
ThemeProvider.displayName = "ThemeProvider";
|
|
7596
7678
|
|
|
7597
7679
|
// src/components/Uploader/Uploader.tsx
|
|
7598
|
-
var
|
|
7680
|
+
var import_react52 = __toESM(require("react"));
|
|
7599
7681
|
var import_joy62 = require("@mui/joy");
|
|
7600
7682
|
var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
|
|
7601
7683
|
var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
|
|
@@ -7658,7 +7740,7 @@ var getFileSize = (n) => {
|
|
|
7658
7740
|
};
|
|
7659
7741
|
var Preview = (props) => {
|
|
7660
7742
|
const { files, uploaded, onDelete } = props;
|
|
7661
|
-
return /* @__PURE__ */
|
|
7743
|
+
return /* @__PURE__ */ import_react52.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react52.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react52.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react52.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react52.default.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ import_react52.default.createElement(
|
|
7662
7744
|
Typography_default,
|
|
7663
7745
|
{
|
|
7664
7746
|
level: "body-sm",
|
|
@@ -7670,7 +7752,7 @@ var Preview = (props) => {
|
|
|
7670
7752
|
}
|
|
7671
7753
|
},
|
|
7672
7754
|
file.name
|
|
7673
|
-
), !!file.size && /* @__PURE__ */
|
|
7755
|
+
), !!file.size && /* @__PURE__ */ import_react52.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react52.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react52.default.createElement(ClearIcon2, null))))));
|
|
7674
7756
|
};
|
|
7675
7757
|
var UploaderRoot = (0, import_joy62.styled)(Stack_default, {
|
|
7676
7758
|
name: "Uploader",
|
|
@@ -7713,7 +7795,7 @@ var UploaderIcon = (0, import_joy62.styled)(import_CloudUploadRounded.default, {
|
|
|
7713
7795
|
}
|
|
7714
7796
|
})
|
|
7715
7797
|
);
|
|
7716
|
-
var Uploader =
|
|
7798
|
+
var Uploader = import_react52.default.memo((props) => {
|
|
7717
7799
|
const {
|
|
7718
7800
|
accept,
|
|
7719
7801
|
minCount,
|
|
@@ -7729,14 +7811,14 @@ var Uploader = import_react51.default.memo((props) => {
|
|
|
7729
7811
|
error: errorProp,
|
|
7730
7812
|
helperText: helperTextProp
|
|
7731
7813
|
} = props;
|
|
7732
|
-
const dropZoneRef = (0,
|
|
7733
|
-
const inputRef = (0,
|
|
7734
|
-
const [errorText, setErrorText] = (0,
|
|
7735
|
-
const [files, setFiles] = (0,
|
|
7736
|
-
const [uploaded, setUploaded] = (0,
|
|
7737
|
-
const [previewState, setPreviewState] = (0,
|
|
7738
|
-
const accepts = (0,
|
|
7739
|
-
const parsedAccepts = (0,
|
|
7814
|
+
const dropZoneRef = (0, import_react52.useRef)(null);
|
|
7815
|
+
const inputRef = (0, import_react52.useRef)(null);
|
|
7816
|
+
const [errorText, setErrorText] = (0, import_react52.useState)();
|
|
7817
|
+
const [files, setFiles] = (0, import_react52.useState)([]);
|
|
7818
|
+
const [uploaded, setUploaded] = (0, import_react52.useState)(props.uploaded || []);
|
|
7819
|
+
const [previewState, setPreviewState] = (0, import_react52.useState)("idle");
|
|
7820
|
+
const accepts = (0, import_react52.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
|
|
7821
|
+
const parsedAccepts = (0, import_react52.useMemo)(
|
|
7740
7822
|
() => accepts.flatMap((type) => {
|
|
7741
7823
|
if (["image/*", "video/*", "audio/*"].includes(type)) {
|
|
7742
7824
|
return ALL_EXTENSIONS_BY_TYPE[type];
|
|
@@ -7745,7 +7827,7 @@ var Uploader = import_react51.default.memo((props) => {
|
|
|
7745
7827
|
}),
|
|
7746
7828
|
[accepts]
|
|
7747
7829
|
);
|
|
7748
|
-
const helperText = (0,
|
|
7830
|
+
const helperText = (0, import_react52.useMemo)(() => {
|
|
7749
7831
|
if (helperTextProp) {
|
|
7750
7832
|
return helperTextProp;
|
|
7751
7833
|
}
|
|
@@ -7775,12 +7857,12 @@ var Uploader = import_react51.default.memo((props) => {
|
|
|
7775
7857
|
}
|
|
7776
7858
|
return helperTexts.join(", ");
|
|
7777
7859
|
}, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
|
|
7778
|
-
const error = (0,
|
|
7779
|
-
const showDropZone = (0,
|
|
7860
|
+
const error = (0, import_react52.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
|
|
7861
|
+
const showDropZone = (0, import_react52.useMemo)(
|
|
7780
7862
|
() => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
|
|
7781
7863
|
[files, maxCount, uploaded]
|
|
7782
7864
|
);
|
|
7783
|
-
const addFiles = (0,
|
|
7865
|
+
const addFiles = (0, import_react52.useCallback)(
|
|
7784
7866
|
(uploads) => {
|
|
7785
7867
|
try {
|
|
7786
7868
|
const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
|
|
@@ -7825,7 +7907,7 @@ var Uploader = import_react51.default.memo((props) => {
|
|
|
7825
7907
|
},
|
|
7826
7908
|
[files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
|
|
7827
7909
|
);
|
|
7828
|
-
(0,
|
|
7910
|
+
(0, import_react52.useEffect)(() => {
|
|
7829
7911
|
if (!dropZoneRef.current || disabled) {
|
|
7830
7912
|
return;
|
|
7831
7913
|
}
|
|
@@ -7853,7 +7935,7 @@ var Uploader = import_react51.default.memo((props) => {
|
|
|
7853
7935
|
})
|
|
7854
7936
|
);
|
|
7855
7937
|
}, [disabled, addFiles]);
|
|
7856
|
-
(0,
|
|
7938
|
+
(0, import_react52.useEffect)(() => {
|
|
7857
7939
|
if (inputRef.current && minCount) {
|
|
7858
7940
|
if (files.length < minCount) {
|
|
7859
7941
|
inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
|
|
@@ -7862,14 +7944,14 @@ var Uploader = import_react51.default.memo((props) => {
|
|
|
7862
7944
|
}
|
|
7863
7945
|
}
|
|
7864
7946
|
}, [inputRef, files, minCount]);
|
|
7865
|
-
const handleFileChanged = (0,
|
|
7947
|
+
const handleFileChanged = (0, import_react52.useCallback)(
|
|
7866
7948
|
(event) => {
|
|
7867
7949
|
const files2 = Array.from(event.target.files || []);
|
|
7868
7950
|
addFiles(files2);
|
|
7869
7951
|
},
|
|
7870
7952
|
[addFiles]
|
|
7871
7953
|
);
|
|
7872
|
-
const handleDeleteFile = (0,
|
|
7954
|
+
const handleDeleteFile = (0, import_react52.useCallback)(
|
|
7873
7955
|
(deletedFile) => {
|
|
7874
7956
|
if (deletedFile instanceof File) {
|
|
7875
7957
|
setFiles((current) => {
|
|
@@ -7889,10 +7971,10 @@ var Uploader = import_react51.default.memo((props) => {
|
|
|
7889
7971
|
},
|
|
7890
7972
|
[name, onChange, onDelete]
|
|
7891
7973
|
);
|
|
7892
|
-
const handleUploaderButtonClick = (0,
|
|
7974
|
+
const handleUploaderButtonClick = (0, import_react52.useCallback)(() => {
|
|
7893
7975
|
inputRef.current?.click();
|
|
7894
7976
|
}, []);
|
|
7895
|
-
const uploader = /* @__PURE__ */
|
|
7977
|
+
const uploader = /* @__PURE__ */ import_react52.default.createElement(
|
|
7896
7978
|
FileDropZone,
|
|
7897
7979
|
{
|
|
7898
7980
|
state: previewState,
|
|
@@ -7901,8 +7983,8 @@ var Uploader = import_react51.default.memo((props) => {
|
|
|
7901
7983
|
ref: dropZoneRef,
|
|
7902
7984
|
onClick: handleUploaderButtonClick
|
|
7903
7985
|
},
|
|
7904
|
-
/* @__PURE__ */
|
|
7905
|
-
/* @__PURE__ */
|
|
7986
|
+
/* @__PURE__ */ import_react52.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react52.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
|
|
7987
|
+
/* @__PURE__ */ import_react52.default.createElement(
|
|
7906
7988
|
VisuallyHiddenInput,
|
|
7907
7989
|
{
|
|
7908
7990
|
disabled,
|
|
@@ -7925,6 +8007,6 @@ var Uploader = import_react51.default.memo((props) => {
|
|
|
7925
8007
|
}
|
|
7926
8008
|
)
|
|
7927
8009
|
);
|
|
7928
|
-
return /* @__PURE__ */
|
|
8010
|
+
return /* @__PURE__ */ import_react52.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react52.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react52.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react52.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react52.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react52.default.createElement("div", null, errorText), /* @__PURE__ */ import_react52.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react52.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
|
|
7929
8011
|
});
|
|
7930
8012
|
Uploader.displayName = "Uploader";
|