@ceed/cds 1.34.1 → 1.36.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Accordions/Accordions.d.ts +1 -0
- package/dist/components/Alert/Alert.d.ts +5 -5
- package/dist/components/Autocomplete/Autocomplete.d.ts +2 -2
- package/dist/components/Avatar/Avatar.d.ts +7 -17
- package/dist/components/Box/Box.d.ts +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +6 -5
- package/dist/components/Button/Button.d.ts +3 -2
- package/dist/components/Calendar/Calendar.d.ts +1 -0
- package/dist/components/Card/Card.d.ts +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +1 -0
- package/dist/components/Chip/Chip.d.ts +1 -0
- package/dist/components/Container/Container.d.ts +6 -1
- package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
- package/dist/components/DialogActions/DialogActions.d.ts +1 -0
- package/dist/components/DialogContent/DialogContent.d.ts +1 -0
- package/dist/components/DialogFrame/DialogFrame.d.ts +1 -1
- package/dist/components/DialogTitle/DialogTitle.d.ts +1 -0
- package/dist/components/Divider/Divider.d.ts +1 -0
- package/dist/components/Drawer/Drawer.d.ts +1 -0
- package/dist/components/Dropdown/Dropdown.d.ts +28 -1
- package/dist/components/FilterableCheckboxGroup/FilterableCheckboxGroup.d.ts +1 -1
- package/dist/components/FormControl/FormControl.d.ts +1 -0
- package/dist/components/FormHelperText/FormHelperText.d.ts +1 -0
- package/dist/components/FormLabel/FormLabel.d.ts +1 -0
- package/dist/components/Grid/Grid.d.ts +1 -0
- package/dist/components/IconButton/IconButton.d.ts +3 -2
- package/dist/components/IconMenuButton/IconMenuButton.d.ts +7 -6
- package/dist/components/InfoSign/InfoSign.d.ts +3 -2
- package/dist/components/Input/Input.d.ts +8 -22
- package/dist/components/InsetDrawer/InsetDrawer.d.ts +1 -0
- package/dist/components/Markdown/Markdown.d.ts +9 -24
- package/dist/components/Menu/Menu.d.ts +2 -1
- package/dist/components/MenuButton/MenuButton.d.ts +10 -8
- package/dist/components/Modal/Modal.d.ts +4 -2
- package/dist/components/NavigationGroup/NavigationGroup.d.ts +3 -2
- package/dist/components/NavigationItem/NavigationItem.d.ts +3 -2
- package/dist/components/Navigator/Navigator.d.ts +5 -4
- package/dist/components/Pagination/Pagination.d.ts +2 -2
- package/dist/components/Radio/Radio.d.ts +1 -0
- package/dist/components/RadioList/RadioList.d.ts +3 -2
- package/dist/components/Select/Select.d.ts +12 -10
- package/dist/components/Sheet/Sheet.d.ts +1 -0
- package/dist/components/Stack/Stack.d.ts +1 -0
- package/dist/components/Stepper/Stepper.d.ts +2 -1
- package/dist/components/Switch/Switch.d.ts +1 -0
- package/dist/components/Table/Table.d.ts +7 -5
- package/dist/components/Tabs/Tabs.d.ts +1 -0
- package/dist/components/Textarea/Textarea.d.ts +8 -20
- package/dist/components/ThemeProvider/ThemeProvider.d.ts +15 -0
- package/dist/components/Tooltip/Tooltip.d.ts +1 -0
- package/dist/components/Typography/Typography.d.ts +1 -0
- package/dist/components/Uploader/Uploader.d.ts +18 -17
- package/dist/components/data-display/Avatar.md +60 -72
- package/dist/components/data-display/Badge.md +197 -181
- package/dist/components/data-display/Chip.md +164 -142
- package/dist/components/data-display/DataTable.md +843 -338
- package/dist/components/data-display/InfoSign.md +1 -3
- package/dist/components/data-display/Markdown.md +93 -125
- package/dist/components/data-display/Table.md +1453 -1007
- package/dist/components/data-display/Typography.md +113 -116
- package/dist/components/feedback/Alert.md +80 -86
- package/dist/components/feedback/CircularProgress.md +32 -36
- package/dist/components/feedback/Dialog.md +25 -17
- package/dist/components/feedback/Modal.md +296 -264
- package/dist/components/feedback/Skeleton.md +125 -89
- package/dist/components/index.d.ts +62 -2
- package/dist/components/inputs/Autocomplete.md +191 -95
- package/dist/components/inputs/Button.md +83 -83
- package/dist/components/inputs/ButtonGroup.md +195 -185
- package/dist/components/inputs/Calendar.md +25 -28
- package/dist/components/inputs/Checkbox.md +11 -29
- package/dist/components/inputs/CurrencyInput.md +4 -4
- package/dist/components/inputs/DatePicker.md +229 -110
- package/dist/components/inputs/DateRangePicker.md +248 -137
- package/dist/components/inputs/FilterableCheckboxGroup.md +115 -55
- package/dist/components/inputs/FormControl.md +75 -69
- package/dist/components/inputs/IconButton.md +229 -205
- package/dist/components/inputs/Input.md +131 -98
- package/dist/components/inputs/MonthPicker.md +186 -84
- package/dist/components/inputs/MonthRangePicker.md +73 -49
- package/dist/components/inputs/PercentageInput.md +15 -31
- package/dist/components/inputs/RadioButton.md +320 -256
- package/dist/components/inputs/RadioList.md +66 -50
- package/dist/components/inputs/RadioTileGroup.md +287 -170
- package/dist/components/inputs/SearchBar.md +82 -60
- package/dist/components/inputs/Select.md +106 -95
- package/dist/components/inputs/Slider.md +153 -102
- package/dist/components/inputs/Switch.md +193 -138
- package/dist/components/inputs/Textarea.md +15 -20
- package/dist/components/inputs/Uploader/Uploader.md +68 -39
- package/dist/components/layout/Box.md +841 -662
- package/dist/components/layout/Container.md +3 -11
- package/dist/components/layout/Grid.md +480 -394
- package/dist/components/layout/Stack.md +739 -566
- package/dist/components/navigation/Breadcrumbs.md +4 -4
- package/dist/components/navigation/Drawer.md +34 -25
- package/dist/components/navigation/Dropdown.md +745 -408
- package/dist/components/navigation/IconMenuButton.md +14 -6
- package/dist/components/navigation/InsetDrawer.md +8 -13
- package/dist/components/navigation/Link.md +1 -2
- package/dist/components/navigation/Menu.md +623 -502
- package/dist/components/navigation/MenuButton.md +18 -10
- package/dist/components/navigation/NavigationGroup.md +19 -50
- package/dist/components/navigation/NavigationItem.md +6 -6
- package/dist/components/navigation/Navigator.md +26 -28
- package/dist/components/navigation/Pagination.md +86 -75
- package/dist/components/navigation/Stepper.md +2 -12
- package/dist/components/navigation/Tabs.md +48 -36
- package/dist/components/surfaces/Accordions.md +89 -172
- package/dist/components/surfaces/Card.md +1094 -709
- package/dist/components/surfaces/Divider.md +562 -412
- package/dist/components/surfaces/Sheet.md +700 -518
- package/dist/guides/ThemeProvider.md +8 -8
- package/dist/index.browser.js +5 -5
- package/dist/index.browser.js.map +4 -4
- package/dist/index.cjs +1082 -1036
- package/dist/index.d.ts +2 -1
- package/dist/index.js +749 -695
- package/framer/index.js +1 -1
- package/package.json +34 -36
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
useTheme as useTheme2,
|
|
4
4
|
useColorScheme,
|
|
5
|
-
useThemeProps as
|
|
5
|
+
useThemeProps as useThemeProps13,
|
|
6
6
|
ButtonGroup,
|
|
7
7
|
alertClasses,
|
|
8
8
|
boxClasses,
|
|
@@ -141,7 +141,7 @@ Accordions.displayName = "Accordions";
|
|
|
141
141
|
|
|
142
142
|
// src/components/Alert/Alert.tsx
|
|
143
143
|
import React3 from "react";
|
|
144
|
-
import { Alert as JoyAlert, styled } from "@mui/joy";
|
|
144
|
+
import { Alert as JoyAlert, styled, useThemeProps } from "@mui/joy";
|
|
145
145
|
import { motion as motion3 } from "framer-motion";
|
|
146
146
|
|
|
147
147
|
// src/components/Typography/Typography.tsx
|
|
@@ -178,7 +178,8 @@ var contentLevelMapping = {
|
|
|
178
178
|
md: "body-sm",
|
|
179
179
|
lg: "body-md"
|
|
180
180
|
};
|
|
181
|
-
function Alert(
|
|
181
|
+
function Alert(inProps) {
|
|
182
|
+
const props = useThemeProps({ props: inProps, name: "Alert" });
|
|
182
183
|
const { title, content, actions, color = "primary", size = "md", ...innerProps } = props;
|
|
183
184
|
const invertedColors = props.invertedColors || props.variant === "solid";
|
|
184
185
|
return /* @__PURE__ */ React3.createElement(MotionAlert, { ...innerProps, color, endDecorator: actions, invertedColors, size }, /* @__PURE__ */ React3.createElement(Stack_default, null, title && /* @__PURE__ */ React3.createElement(Typography_default, { level: titleLevelMapping[size], fontWeight: "bold", color }, title), /* @__PURE__ */ React3.createElement(Typography_default, { level: contentLevelMapping[size], fontWeight: 500, color }, content)));
|
|
@@ -583,7 +584,7 @@ var Autocomplete_default = Autocomplete;
|
|
|
583
584
|
|
|
584
585
|
// src/components/Avatar/Avatar.tsx
|
|
585
586
|
import React6, { forwardRef as forwardRef2, useMemo as useMemo2 } from "react";
|
|
586
|
-
import { Avatar as JoyAvatar, AvatarGroup, styled as styled4, useThemeProps } from "@mui/joy";
|
|
587
|
+
import { Avatar as JoyAvatar, AvatarGroup, styled as styled4, useThemeProps as useThemeProps2 } from "@mui/joy";
|
|
587
588
|
var StyledAvatar = styled4(JoyAvatar, {
|
|
588
589
|
name: "Avatar",
|
|
589
590
|
slot: "Root",
|
|
@@ -605,7 +606,7 @@ var defaultGetInitial = (name) => {
|
|
|
605
606
|
}
|
|
606
607
|
};
|
|
607
608
|
var Avatar = forwardRef2(function Avatar2(inProps, ref) {
|
|
608
|
-
const props =
|
|
609
|
+
const props = useThemeProps2({
|
|
609
610
|
props: inProps,
|
|
610
611
|
name: "Avatar"
|
|
611
612
|
});
|
|
@@ -630,7 +631,7 @@ Box.displayName = "Box";
|
|
|
630
631
|
var Box_default = Box;
|
|
631
632
|
|
|
632
633
|
// src/components/Breadcrumbs/Breadcrumbs.tsx
|
|
633
|
-
import
|
|
634
|
+
import React9 from "react";
|
|
634
635
|
import {
|
|
635
636
|
Breadcrumbs as JoyBreadcrumbs,
|
|
636
637
|
Link as JoyLink,
|
|
@@ -652,7 +653,34 @@ var MenuItem = JoyMenuItem;
|
|
|
652
653
|
var Menu_default = Menu;
|
|
653
654
|
|
|
654
655
|
// src/components/Dropdown/Dropdown.tsx
|
|
655
|
-
import {
|
|
656
|
+
import React8, { createContext, useCallback as useCallback3, useMemo as useMemo3, useState as useState2 } from "react";
|
|
657
|
+
import { Dropdown as JoyDropdown } from "@mui/joy";
|
|
658
|
+
import { MenuButton } from "@mui/joy";
|
|
659
|
+
import { useMenuButton } from "@mui/base/useMenuButton";
|
|
660
|
+
var DropdownNestedRegistryContext = createContext(null);
|
|
661
|
+
function Dropdown({ open: openProp, defaultOpen = false, onOpenChange, ...rest }) {
|
|
662
|
+
const [nestedCount, setNestedCount] = useState2(0);
|
|
663
|
+
const [open, setOpen] = useControlledState(openProp, defaultOpen);
|
|
664
|
+
const registry = useMemo3(
|
|
665
|
+
() => ({
|
|
666
|
+
register: () => setNestedCount((c) => c + 1),
|
|
667
|
+
unregister: () => setNestedCount((c) => Math.max(0, c - 1))
|
|
668
|
+
}),
|
|
669
|
+
[]
|
|
670
|
+
);
|
|
671
|
+
const handleOpenChange = useCallback3(
|
|
672
|
+
(event, isOpen) => {
|
|
673
|
+
if (nestedCount > 0 && !isOpen && event?.type === "blur") {
|
|
674
|
+
return;
|
|
675
|
+
}
|
|
676
|
+
setOpen(isOpen);
|
|
677
|
+
onOpenChange?.(event, isOpen);
|
|
678
|
+
},
|
|
679
|
+
[nestedCount, setOpen, onOpenChange]
|
|
680
|
+
);
|
|
681
|
+
return /* @__PURE__ */ React8.createElement(DropdownNestedRegistryContext.Provider, { value: registry }, /* @__PURE__ */ React8.createElement(JoyDropdown, { open, onOpenChange: handleOpenChange, ...rest }));
|
|
682
|
+
}
|
|
683
|
+
Dropdown.displayName = "Dropdown";
|
|
656
684
|
|
|
657
685
|
// src/components/Dropdown/index.ts
|
|
658
686
|
var Dropdown_default = Dropdown;
|
|
@@ -673,29 +701,29 @@ function Breadcrumbs(props) {
|
|
|
673
701
|
} = props;
|
|
674
702
|
const Crumb = (props2) => {
|
|
675
703
|
if (props2.type === "link" && Link4) {
|
|
676
|
-
return /* @__PURE__ */
|
|
704
|
+
return /* @__PURE__ */ React9.createElement(Link4, { to: props2.linkHref, href: props2.linkHref, ...linkProps }, props2.label);
|
|
677
705
|
} else {
|
|
678
|
-
return /* @__PURE__ */
|
|
706
|
+
return /* @__PURE__ */ React9.createElement(Typography_default, null, props2.label);
|
|
679
707
|
}
|
|
680
708
|
};
|
|
681
709
|
if (!collapsed) {
|
|
682
|
-
return /* @__PURE__ */
|
|
710
|
+
return /* @__PURE__ */ React9.createElement(JoyBreadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, crumbs.map((crumb, index) => /* @__PURE__ */ React9.createElement(Crumb, { key: `breadcrumb-${index}`, ...crumb })));
|
|
683
711
|
}
|
|
684
712
|
const _endCrumbCount = Math.max(1, endCrumbCount);
|
|
685
|
-
const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */
|
|
686
|
-
const backCrumbs = (startCrumbCount + _endCrumbCount > crumbs.length ? crumbs.slice(startCrumbCount) : crumbs.slice(-_endCrumbCount)).map((crumb) => /* @__PURE__ */
|
|
687
|
-
const collapsedCrumbs = crumbs.slice(startCrumbCount, -_endCrumbCount).map((crumb) => /* @__PURE__ */
|
|
688
|
-
return /* @__PURE__ */
|
|
713
|
+
const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */ React9.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
|
|
714
|
+
const backCrumbs = (startCrumbCount + _endCrumbCount > crumbs.length ? crumbs.slice(startCrumbCount) : crumbs.slice(-_endCrumbCount)).map((crumb) => /* @__PURE__ */ React9.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
|
|
715
|
+
const collapsedCrumbs = crumbs.slice(startCrumbCount, -_endCrumbCount).map((crumb) => /* @__PURE__ */ React9.createElement(MenuItem, { key: `breadcrumb-${crumb.label}` }, /* @__PURE__ */ React9.createElement(Crumb, { ...crumb })));
|
|
716
|
+
return /* @__PURE__ */ React9.createElement(JoyBreadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, frontCrumbs, collapsedCrumbs.length && /* @__PURE__ */ React9.createElement(Dropdown_default, null, /* @__PURE__ */ React9.createElement(JoyMenuButton, { size, variant: "plain" }, "..."), /* @__PURE__ */ React9.createElement(Menu_default, { size }, collapsedCrumbs)), backCrumbs);
|
|
689
717
|
}
|
|
690
718
|
Breadcrumbs.displayName = "Breadcrumbs";
|
|
691
719
|
|
|
692
720
|
// src/components/Button/Button.tsx
|
|
693
|
-
import
|
|
721
|
+
import React10, { forwardRef as forwardRef3 } from "react";
|
|
694
722
|
import { Button as JoyButton } from "@mui/joy";
|
|
695
723
|
import { motion as motion11 } from "framer-motion";
|
|
696
724
|
var MotionButton = motion11(JoyButton);
|
|
697
725
|
var Button = forwardRef3(({ ...props }, ref) => {
|
|
698
|
-
return /* @__PURE__ */
|
|
726
|
+
return /* @__PURE__ */ React10.createElement(MotionButton, { ref, ...props });
|
|
699
727
|
});
|
|
700
728
|
Button.displayName = "Button";
|
|
701
729
|
|
|
@@ -703,19 +731,19 @@ Button.displayName = "Button";
|
|
|
703
731
|
var Button_default = Button;
|
|
704
732
|
|
|
705
733
|
// src/components/Calendar/Calendar.tsx
|
|
706
|
-
import
|
|
734
|
+
import React13, { Fragment, forwardRef as forwardRef4, useCallback as useCallback6, useEffect as useEffect3, useMemo as useMemo5, useRef as useRef3, useState as useState5 } from "react";
|
|
707
735
|
import { styled as styled5 } from "@mui/joy";
|
|
708
736
|
import ChevronLeftIcon from "@mui/icons-material/ChevronLeft";
|
|
709
737
|
import ChevronRightIcon from "@mui/icons-material/ChevronRight";
|
|
710
738
|
import { AnimatePresence, motion as motion13 } from "framer-motion";
|
|
711
739
|
|
|
712
740
|
// src/components/Tooltip/Tooltip.tsx
|
|
713
|
-
import
|
|
741
|
+
import React11 from "react";
|
|
714
742
|
import { Tooltip as JoyTooltip } from "@mui/joy";
|
|
715
743
|
import { motion as motion12 } from "framer-motion";
|
|
716
744
|
var MotionTooltip = motion12(JoyTooltip);
|
|
717
745
|
var Tooltip = (props) => {
|
|
718
|
-
return /* @__PURE__ */
|
|
746
|
+
return /* @__PURE__ */ React11.createElement(MotionTooltip, { ...props });
|
|
719
747
|
};
|
|
720
748
|
Tooltip.displayName = "Tooltip";
|
|
721
749
|
|
|
@@ -797,43 +825,43 @@ var isSameMonth = (date1, date2) => {
|
|
|
797
825
|
};
|
|
798
826
|
|
|
799
827
|
// src/components/Calendar/hooks/use-calendar-props.ts
|
|
800
|
-
import { useCallback as
|
|
801
|
-
import { useThemeProps as
|
|
828
|
+
import { useCallback as useCallback4, useMemo as useMemo4, useState as useState3 } from "react";
|
|
829
|
+
import { useThemeProps as useThemeProps3 } from "@mui/joy";
|
|
802
830
|
var resolveView = (view, views) => {
|
|
803
831
|
return views.includes(view) ? view : views[0];
|
|
804
832
|
};
|
|
805
833
|
var useCalendarProps = (inProps) => {
|
|
806
|
-
const [uncontrolledView, setUncontrolledView] =
|
|
834
|
+
const [uncontrolledView, setUncontrolledView] = useState3(
|
|
807
835
|
() => resolveView(inProps.view || "day", inProps.views || ["day", "month"])
|
|
808
836
|
);
|
|
809
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
837
|
+
const [uncontrolledValue, setUncontrolledValue] = useState3(
|
|
810
838
|
inProps.defaultValue
|
|
811
839
|
);
|
|
812
|
-
const [viewMonth, setViewMonth] =
|
|
840
|
+
const [viewMonth, setViewMonth] = useState3(() => {
|
|
813
841
|
const today = /* @__PURE__ */ new Date();
|
|
814
842
|
today.setDate(1);
|
|
815
843
|
today.setHours(0, 0, 0, 0);
|
|
816
844
|
return inProps.value?.[0] || inProps.defaultValue?.[0] || today;
|
|
817
845
|
});
|
|
818
|
-
const [[page, direction], setPage] =
|
|
846
|
+
const [[page, direction], setPage] = useState3([0, 0]);
|
|
819
847
|
const resolvedView = inProps.view ?? uncontrolledView;
|
|
820
|
-
const resolvedMinDate =
|
|
848
|
+
const resolvedMinDate = useMemo4(() => {
|
|
821
849
|
const minDate = inProps.minDate || /* @__PURE__ */ new Date(0);
|
|
822
850
|
minDate.setHours(0, 0, 0, 0);
|
|
823
851
|
return minDate;
|
|
824
852
|
}, [inProps.minDate]);
|
|
825
|
-
const resolvedMaxDate =
|
|
853
|
+
const resolvedMaxDate = useMemo4(() => {
|
|
826
854
|
const maxDate = inProps.maxDate || /* @__PURE__ */ new Date(864e13);
|
|
827
855
|
maxDate.setHours(0, 0, 0, 0);
|
|
828
856
|
return maxDate;
|
|
829
857
|
}, [inProps.maxDate]);
|
|
830
|
-
const paginate =
|
|
858
|
+
const paginate = useCallback4(
|
|
831
859
|
(newDirection) => {
|
|
832
860
|
setPage([page + newDirection, newDirection]);
|
|
833
861
|
},
|
|
834
862
|
[page]
|
|
835
863
|
);
|
|
836
|
-
const handleViewMonthChange =
|
|
864
|
+
const handleViewMonthChange = useCallback4(
|
|
837
865
|
(newMonth) => {
|
|
838
866
|
setViewMonth(newMonth);
|
|
839
867
|
if (resolvedView === "month") {
|
|
@@ -847,7 +875,7 @@ var useCalendarProps = (inProps) => {
|
|
|
847
875
|
},
|
|
848
876
|
[resolvedView, inProps, viewMonth, paginate]
|
|
849
877
|
);
|
|
850
|
-
const props =
|
|
878
|
+
const props = useThemeProps3({
|
|
851
879
|
props: {
|
|
852
880
|
locale: "default",
|
|
853
881
|
views: ["day", "month"],
|
|
@@ -881,22 +909,22 @@ var useCalendarProps = (inProps) => {
|
|
|
881
909
|
},
|
|
882
910
|
name: "Calendar"
|
|
883
911
|
});
|
|
884
|
-
const ownerState =
|
|
912
|
+
const ownerState = useMemo4(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
|
|
885
913
|
return [props, ownerState];
|
|
886
914
|
};
|
|
887
915
|
|
|
888
916
|
// src/components/Calendar/hooks/use-calendar.ts
|
|
889
|
-
import { useCallback as
|
|
917
|
+
import { useCallback as useCallback5, useState as useState4 } from "react";
|
|
890
918
|
var useCalendar = (ownerState) => {
|
|
891
|
-
const [localHoverDay, setLocalHoverDay] =
|
|
892
|
-
const [localHoverMonth, setLocalHoverMonth] =
|
|
919
|
+
const [localHoverDay, setLocalHoverDay] = useState4(null);
|
|
920
|
+
const [localHoverMonth, setLocalHoverMonth] = useState4(null);
|
|
893
921
|
const hoverDay = ownerState.hoverDay !== void 0 ? ownerState.hoverDay : localHoverDay;
|
|
894
922
|
const setHoverDay = ownerState.onHoverDayChange ?? setLocalHoverDay;
|
|
895
923
|
const hoverMonth = ownerState.hoverMonth !== void 0 ? ownerState.hoverMonth : localHoverMonth;
|
|
896
924
|
const setHoverMonth = ownerState.onHoverMonthChange ?? setLocalHoverMonth;
|
|
897
925
|
return {
|
|
898
926
|
calendarTitle: ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default"),
|
|
899
|
-
onPrev:
|
|
927
|
+
onPrev: useCallback5(() => {
|
|
900
928
|
if (ownerState.view === "day") {
|
|
901
929
|
const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
902
930
|
const currentYear = currentDate.getFullYear();
|
|
@@ -913,7 +941,7 @@ var useCalendar = (ownerState) => {
|
|
|
913
941
|
ownerState.onMonthChange?.(prevYear);
|
|
914
942
|
}
|
|
915
943
|
}, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
|
|
916
|
-
onNext:
|
|
944
|
+
onNext: useCallback5(() => {
|
|
917
945
|
if (ownerState.view === "day") {
|
|
918
946
|
const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
919
947
|
const currentYear = currentDate.getFullYear();
|
|
@@ -930,7 +958,7 @@ var useCalendar = (ownerState) => {
|
|
|
930
958
|
ownerState.onMonthChange?.(nextYear);
|
|
931
959
|
}
|
|
932
960
|
}, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
|
|
933
|
-
getDayCellProps:
|
|
961
|
+
getDayCellProps: useCallback5(
|
|
934
962
|
(day) => {
|
|
935
963
|
const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
936
964
|
thisDay.setHours(0, 0, 0, 0);
|
|
@@ -945,7 +973,7 @@ var useCalendar = (ownerState) => {
|
|
|
945
973
|
},
|
|
946
974
|
[ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverDay]
|
|
947
975
|
),
|
|
948
|
-
getMonthCellProps:
|
|
976
|
+
getMonthCellProps: useCallback5(
|
|
949
977
|
(monthIndex) => {
|
|
950
978
|
const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
951
979
|
thisMonth.setDate(1);
|
|
@@ -962,7 +990,7 @@ var useCalendar = (ownerState) => {
|
|
|
962
990
|
},
|
|
963
991
|
[ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverMonth]
|
|
964
992
|
),
|
|
965
|
-
getPickerDayProps:
|
|
993
|
+
getPickerDayProps: useCallback5(
|
|
966
994
|
(day) => {
|
|
967
995
|
const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
968
996
|
thisDay.setHours(0, 0, 0, 0);
|
|
@@ -1016,7 +1044,7 @@ var useCalendar = (ownerState) => {
|
|
|
1016
1044
|
hoverDay
|
|
1017
1045
|
]
|
|
1018
1046
|
),
|
|
1019
|
-
getPickerMonthProps:
|
|
1047
|
+
getPickerMonthProps: useCallback5(
|
|
1020
1048
|
(monthIndex) => {
|
|
1021
1049
|
const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1022
1050
|
thisMonth.setDate(1);
|
|
@@ -1313,9 +1341,9 @@ var swipePower = (offset, velocity) => {
|
|
|
1313
1341
|
var PickerDays = (props) => {
|
|
1314
1342
|
const { ownerState } = props;
|
|
1315
1343
|
const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
|
|
1316
|
-
const calendarDates =
|
|
1317
|
-
const weekdayNames =
|
|
1318
|
-
return /* @__PURE__ */
|
|
1344
|
+
const calendarDates = useMemo5(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
|
|
1345
|
+
const weekdayNames = useMemo5(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
|
|
1346
|
+
return /* @__PURE__ */ React13.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ React13.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React13.createElement(
|
|
1319
1347
|
CalendarViewTable,
|
|
1320
1348
|
{
|
|
1321
1349
|
key: `${ownerState.viewMonth.toString()}_${ownerState.direction}`,
|
|
@@ -1344,10 +1372,10 @@ var PickerDays = (props) => {
|
|
|
1344
1372
|
}
|
|
1345
1373
|
}
|
|
1346
1374
|
},
|
|
1347
|
-
/* @__PURE__ */
|
|
1348
|
-
/* @__PURE__ */
|
|
1349
|
-
(date, i) => date ? /* @__PURE__ */
|
|
1350
|
-
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */
|
|
1375
|
+
/* @__PURE__ */ React13.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ React13.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ React13.createElement(Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ React13.createElement("th", null, /* @__PURE__ */ React13.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ React13.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
|
|
1376
|
+
/* @__PURE__ */ React13.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ React13.createElement(Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ React13.createElement("tr", null, weekDates.map(
|
|
1377
|
+
(date, i) => date ? /* @__PURE__ */ React13.createElement(Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ React13.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ React13.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ React13.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ React13.createElement(Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ React13.createElement("td", null), i < 6 && /* @__PURE__ */ React13.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
|
|
1378
|
+
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ React13.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React13.createElement("td", { colSpan: 13, style: { height: 4 } })))))
|
|
1351
1379
|
)));
|
|
1352
1380
|
};
|
|
1353
1381
|
var PickerMonths = (props) => {
|
|
@@ -1364,7 +1392,7 @@ var PickerMonths = (props) => {
|
|
|
1364
1392
|
[[]]
|
|
1365
1393
|
);
|
|
1366
1394
|
const isMonthPicker = !ownerState.views?.find((view) => view === "day");
|
|
1367
|
-
return /* @__PURE__ */
|
|
1395
|
+
return /* @__PURE__ */ React13.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ React13.createElement(AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ React13.createElement(
|
|
1368
1396
|
CalendarViewTable,
|
|
1369
1397
|
{
|
|
1370
1398
|
key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
|
|
@@ -1393,16 +1421,16 @@ var PickerMonths = (props) => {
|
|
|
1393
1421
|
}
|
|
1394
1422
|
}
|
|
1395
1423
|
},
|
|
1396
|
-
/* @__PURE__ */
|
|
1424
|
+
/* @__PURE__ */ React13.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ React13.createElement(Fragment, { key: months.join("_") }, /* @__PURE__ */ React13.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ React13.createElement(Fragment, { key: monthIndex }, /* @__PURE__ */ React13.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ React13.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ React13.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ React13.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React13.createElement("td", { colSpan: 7, style: { height: 4 } })))))
|
|
1397
1425
|
)));
|
|
1398
1426
|
};
|
|
1399
1427
|
var PlainPickerDays = ({ ownerState }) => {
|
|
1400
1428
|
const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
|
|
1401
|
-
const calendarDates =
|
|
1402
|
-
const weekdayNames =
|
|
1403
|
-
return /* @__PURE__ */
|
|
1404
|
-
(date, i) => date ? /* @__PURE__ */
|
|
1405
|
-
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */
|
|
1429
|
+
const calendarDates = useMemo5(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
|
|
1430
|
+
const weekdayNames = useMemo5(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
|
|
1431
|
+
return /* @__PURE__ */ React13.createElement(StaticCalendarViewTable, null, /* @__PURE__ */ React13.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ React13.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ React13.createElement(Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ React13.createElement("th", null, /* @__PURE__ */ React13.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ React13.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))), /* @__PURE__ */ React13.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ React13.createElement(Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ React13.createElement("tr", null, weekDates.map(
|
|
1432
|
+
(date, i) => date ? /* @__PURE__ */ React13.createElement(Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ React13.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ React13.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ React13.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ React13.createElement(Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ React13.createElement("td", null), i < 6 && /* @__PURE__ */ React13.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
|
|
1433
|
+
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ React13.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ React13.createElement("td", { colSpan: 13, style: { height: 4 } }))))));
|
|
1406
1434
|
};
|
|
1407
1435
|
var MultiMonthPickerDays = ({
|
|
1408
1436
|
panels,
|
|
@@ -1421,7 +1449,7 @@ var MultiMonthPickerDays = ({
|
|
|
1421
1449
|
})
|
|
1422
1450
|
};
|
|
1423
1451
|
const key = `${panels[0].viewMonth.toISOString()}_${direction}`;
|
|
1424
|
-
return /* @__PURE__ */
|
|
1452
|
+
return /* @__PURE__ */ React13.createElement("div", { style: { position: "relative", overflow: "hidden", minHeight: "250px" } }, /* @__PURE__ */ React13.createElement(AnimatePresence, { initial: false, custom: direction }, /* @__PURE__ */ React13.createElement(
|
|
1425
1453
|
motion13.div,
|
|
1426
1454
|
{
|
|
1427
1455
|
key,
|
|
@@ -1451,7 +1479,7 @@ var MultiMonthPickerDays = ({
|
|
|
1451
1479
|
},
|
|
1452
1480
|
style: { display: "flex", gap: `${CALENDAR_PANEL_GAP}px`, top: 0, left: 0, width: "100%" }
|
|
1453
1481
|
},
|
|
1454
|
-
panels.map((panelOwnerState) => /* @__PURE__ */
|
|
1482
|
+
panels.map((panelOwnerState) => /* @__PURE__ */ React13.createElement(
|
|
1455
1483
|
"div",
|
|
1456
1484
|
{
|
|
1457
1485
|
key: panelOwnerState.viewMonth.toISOString(),
|
|
@@ -1463,7 +1491,7 @@ var MultiMonthPickerDays = ({
|
|
|
1463
1491
|
boxSizing: "border-box"
|
|
1464
1492
|
}
|
|
1465
1493
|
},
|
|
1466
|
-
/* @__PURE__ */
|
|
1494
|
+
/* @__PURE__ */ React13.createElement(PlainPickerDays, { ownerState: panelOwnerState })
|
|
1467
1495
|
))
|
|
1468
1496
|
)));
|
|
1469
1497
|
};
|
|
@@ -1480,7 +1508,7 @@ var CalendarPanel = ({
|
|
|
1480
1508
|
const showPrev = panelIndex === 0;
|
|
1481
1509
|
const showNext = panelIndex === totalPanels - 1;
|
|
1482
1510
|
const title = ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default");
|
|
1483
|
-
return /* @__PURE__ */
|
|
1511
|
+
return /* @__PURE__ */ React13.createElement("div", { style: { flex: 1, maxWidth: `${CALENDAR_PANEL_WIDTH}px` } }, /* @__PURE__ */ React13.createElement(CalendarHeader, null, /* @__PURE__ */ React13.createElement(
|
|
1484
1512
|
IconButton_default,
|
|
1485
1513
|
{
|
|
1486
1514
|
size: "sm",
|
|
@@ -1488,8 +1516,8 @@ var CalendarPanel = ({
|
|
|
1488
1516
|
"aria-label": `Previous ${ownerState.view === "day" ? "Month" : "Year"}`,
|
|
1489
1517
|
style: { visibility: showPrev ? "visible" : "hidden" }
|
|
1490
1518
|
},
|
|
1491
|
-
/* @__PURE__ */
|
|
1492
|
-
), /* @__PURE__ */
|
|
1519
|
+
/* @__PURE__ */ React13.createElement(ChevronLeftIcon, null)
|
|
1520
|
+
), /* @__PURE__ */ React13.createElement(
|
|
1493
1521
|
Tooltip_default,
|
|
1494
1522
|
{
|
|
1495
1523
|
title: monthViewHintMessage,
|
|
@@ -1501,7 +1529,7 @@ var CalendarPanel = ({
|
|
|
1501
1529
|
disableTouchListener: true,
|
|
1502
1530
|
variant: "solid"
|
|
1503
1531
|
},
|
|
1504
|
-
/* @__PURE__ */
|
|
1532
|
+
/* @__PURE__ */ React13.createElement(
|
|
1505
1533
|
CalendarSwitchViewButton,
|
|
1506
1534
|
{
|
|
1507
1535
|
ownerState,
|
|
@@ -1512,7 +1540,7 @@ var CalendarPanel = ({
|
|
|
1512
1540
|
},
|
|
1513
1541
|
title
|
|
1514
1542
|
)
|
|
1515
|
-
), /* @__PURE__ */
|
|
1543
|
+
), /* @__PURE__ */ React13.createElement(
|
|
1516
1544
|
IconButton_default,
|
|
1517
1545
|
{
|
|
1518
1546
|
size: "sm",
|
|
@@ -1520,7 +1548,7 @@ var CalendarPanel = ({
|
|
|
1520
1548
|
"aria-label": `Next ${ownerState.view === "day" ? "Month" : "Year"}`,
|
|
1521
1549
|
style: { visibility: showNext ? "visible" : "hidden" }
|
|
1522
1550
|
},
|
|
1523
|
-
/* @__PURE__ */
|
|
1551
|
+
/* @__PURE__ */ React13.createElement(ChevronRightIcon, null)
|
|
1524
1552
|
)));
|
|
1525
1553
|
};
|
|
1526
1554
|
var Calendar = forwardRef4((inProps, ref) => {
|
|
@@ -1543,12 +1571,12 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1543
1571
|
...others
|
|
1544
1572
|
} = props;
|
|
1545
1573
|
const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
|
|
1546
|
-
const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] =
|
|
1574
|
+
const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = useState5(false);
|
|
1547
1575
|
const monthNavClickTimestampsRef = useRef3([]);
|
|
1548
1576
|
const monthViewAssistHintShownInSessionRef = useRef3(false);
|
|
1549
1577
|
const monthViewAssistHintTimeoutRef = useRef3(null);
|
|
1550
|
-
const [hoverDay, setHoverDay] =
|
|
1551
|
-
const [hoverMonth, setHoverMonth] =
|
|
1578
|
+
const [hoverDay, setHoverDay] = useState5(null);
|
|
1579
|
+
const [hoverMonth, setHoverMonth] = useState5(null);
|
|
1552
1580
|
const resolvedNumberOfMonths = numberOfMonths ?? 1;
|
|
1553
1581
|
const hasEndDate = Boolean(value?.[1]);
|
|
1554
1582
|
const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
|
|
@@ -1567,14 +1595,14 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1567
1595
|
}
|
|
1568
1596
|
};
|
|
1569
1597
|
}, []);
|
|
1570
|
-
const closeMonthViewAssistHint =
|
|
1598
|
+
const closeMonthViewAssistHint = useCallback6(() => {
|
|
1571
1599
|
if (monthViewAssistHintTimeoutRef.current) {
|
|
1572
1600
|
clearTimeout(monthViewAssistHintTimeoutRef.current);
|
|
1573
1601
|
monthViewAssistHintTimeoutRef.current = null;
|
|
1574
1602
|
}
|
|
1575
1603
|
setIsMonthViewAssistHintOpen(false);
|
|
1576
1604
|
}, []);
|
|
1577
|
-
const showMonthViewAssistHint =
|
|
1605
|
+
const showMonthViewAssistHint = useCallback6(() => {
|
|
1578
1606
|
const now = Date.now();
|
|
1579
1607
|
if (monthViewAssistHintShownInSessionRef.current) return;
|
|
1580
1608
|
if (now - lastMonthViewAssistHintShownAt < MONTH_VIEW_HINT_COOLDOWN_MS) return;
|
|
@@ -1589,7 +1617,7 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1589
1617
|
monthViewAssistHintTimeoutRef.current = null;
|
|
1590
1618
|
}, MONTH_VIEW_HINT_DURATION_MS);
|
|
1591
1619
|
}, []);
|
|
1592
|
-
const trackFastMonthNavigation =
|
|
1620
|
+
const trackFastMonthNavigation = useCallback6(() => {
|
|
1593
1621
|
if (!isHintEligible) return;
|
|
1594
1622
|
const now = Date.now();
|
|
1595
1623
|
monthNavClickTimestampsRef.current = [
|
|
@@ -1600,15 +1628,15 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1600
1628
|
showMonthViewAssistHint();
|
|
1601
1629
|
}
|
|
1602
1630
|
}, [isHintEligible, showMonthViewAssistHint]);
|
|
1603
|
-
const handlePrevClick =
|
|
1631
|
+
const handlePrevClick = useCallback6(() => {
|
|
1604
1632
|
onPrev();
|
|
1605
1633
|
trackFastMonthNavigation();
|
|
1606
1634
|
}, [onPrev, trackFastMonthNavigation]);
|
|
1607
|
-
const handleNextClick =
|
|
1635
|
+
const handleNextClick = useCallback6(() => {
|
|
1608
1636
|
onNext();
|
|
1609
1637
|
trackFastMonthNavigation();
|
|
1610
1638
|
}, [onNext, trackFastMonthNavigation]);
|
|
1611
|
-
const handleSwitchViewClick =
|
|
1639
|
+
const handleSwitchViewClick = useCallback6(() => {
|
|
1612
1640
|
closeMonthViewAssistHint();
|
|
1613
1641
|
onViewChange?.();
|
|
1614
1642
|
}, [closeMonthViewAssistHint, onViewChange]);
|
|
@@ -1628,9 +1656,9 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1628
1656
|
onHoverMonthChange: setHoverMonth
|
|
1629
1657
|
};
|
|
1630
1658
|
});
|
|
1631
|
-
return /* @__PURE__ */
|
|
1659
|
+
return /* @__PURE__ */ React13.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, view === "month" ? (
|
|
1632
1660
|
// Month view: single header + single month grid (consistent with single-month path)
|
|
1633
|
-
/* @__PURE__ */
|
|
1661
|
+
/* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement(CalendarHeader, null, /* @__PURE__ */ React13.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": "Previous Year" }, /* @__PURE__ */ React13.createElement(ChevronLeftIcon, null)), /* @__PURE__ */ React13.createElement(
|
|
1634
1662
|
Tooltip_default,
|
|
1635
1663
|
{
|
|
1636
1664
|
title: monthViewHintMessage,
|
|
@@ -1642,7 +1670,7 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1642
1670
|
disableTouchListener: true,
|
|
1643
1671
|
variant: "solid"
|
|
1644
1672
|
},
|
|
1645
|
-
/* @__PURE__ */
|
|
1673
|
+
/* @__PURE__ */ React13.createElement(
|
|
1646
1674
|
CalendarSwitchViewButton,
|
|
1647
1675
|
{
|
|
1648
1676
|
ownerState,
|
|
@@ -1653,8 +1681,8 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1653
1681
|
},
|
|
1654
1682
|
calendarTitle
|
|
1655
1683
|
)
|
|
1656
|
-
), /* @__PURE__ */
|
|
1657
|
-
) : /* @__PURE__ */
|
|
1684
|
+
), /* @__PURE__ */ React13.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": "Next Year" }, /* @__PURE__ */ React13.createElement(ChevronRightIcon, null))), /* @__PURE__ */ React13.createElement(PickerMonths, { ownerState }))
|
|
1685
|
+
) : /* @__PURE__ */ React13.createElement(React13.Fragment, null, /* @__PURE__ */ React13.createElement(CalendarMultiContainer, null, panels.map((panelOwnerState, i) => /* @__PURE__ */ React13.createElement(
|
|
1658
1686
|
CalendarPanel,
|
|
1659
1687
|
{
|
|
1660
1688
|
key: panelOwnerState.viewMonth.toISOString(),
|
|
@@ -1667,7 +1695,7 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1667
1695
|
isMonthViewAssistHintOpen,
|
|
1668
1696
|
monthViewHintMessage
|
|
1669
1697
|
}
|
|
1670
|
-
))), /* @__PURE__ */
|
|
1698
|
+
))), /* @__PURE__ */ React13.createElement(
|
|
1671
1699
|
MultiMonthPickerDays,
|
|
1672
1700
|
{
|
|
1673
1701
|
panels,
|
|
@@ -1676,7 +1704,7 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1676
1704
|
}
|
|
1677
1705
|
)));
|
|
1678
1706
|
}
|
|
1679
|
-
return /* @__PURE__ */
|
|
1707
|
+
return /* @__PURE__ */ React13.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, /* @__PURE__ */ React13.createElement(CalendarHeader, null, /* @__PURE__ */ React13.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ React13.createElement(ChevronLeftIcon, null)), /* @__PURE__ */ React13.createElement(
|
|
1680
1708
|
Tooltip_default,
|
|
1681
1709
|
{
|
|
1682
1710
|
title: monthViewHintMessage,
|
|
@@ -1688,7 +1716,7 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1688
1716
|
disableTouchListener: true,
|
|
1689
1717
|
variant: "solid"
|
|
1690
1718
|
},
|
|
1691
|
-
/* @__PURE__ */
|
|
1719
|
+
/* @__PURE__ */ React13.createElement(
|
|
1692
1720
|
CalendarSwitchViewButton,
|
|
1693
1721
|
{
|
|
1694
1722
|
ownerState,
|
|
@@ -1699,7 +1727,7 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1699
1727
|
},
|
|
1700
1728
|
calendarTitle
|
|
1701
1729
|
)
|
|
1702
|
-
), /* @__PURE__ */
|
|
1730
|
+
), /* @__PURE__ */ React13.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ React13.createElement(ChevronRightIcon, null))), view === "day" && /* @__PURE__ */ React13.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ React13.createElement(PickerMonths, { ownerState }));
|
|
1703
1731
|
});
|
|
1704
1732
|
Calendar.displayName = "Calendar";
|
|
1705
1733
|
|
|
@@ -1732,12 +1760,12 @@ var CardOverflow = MotionCardOverflow;
|
|
|
1732
1760
|
CardOverflow.displayName = "CardOverflow";
|
|
1733
1761
|
|
|
1734
1762
|
// src/components/Checkbox/Checkbox.tsx
|
|
1735
|
-
import
|
|
1763
|
+
import React14 from "react";
|
|
1736
1764
|
import { Checkbox as JoyCheckbox } from "@mui/joy";
|
|
1737
1765
|
import { motion as motion15 } from "framer-motion";
|
|
1738
1766
|
var MotionCheckbox = motion15(JoyCheckbox);
|
|
1739
1767
|
var Checkbox = (props) => {
|
|
1740
|
-
return /* @__PURE__ */
|
|
1768
|
+
return /* @__PURE__ */ React14.createElement(MotionCheckbox, { ...props });
|
|
1741
1769
|
};
|
|
1742
1770
|
Checkbox.displayName = "Checkbox";
|
|
1743
1771
|
|
|
@@ -1746,7 +1774,7 @@ var Checkbox_default = Checkbox;
|
|
|
1746
1774
|
|
|
1747
1775
|
// src/components/Container/Container.tsx
|
|
1748
1776
|
import { styled as styled6 } from "@mui/joy";
|
|
1749
|
-
import
|
|
1777
|
+
import React15, { forwardRef as forwardRef5 } from "react";
|
|
1750
1778
|
var ContainerRoot = styled6("div", {
|
|
1751
1779
|
name: "Container",
|
|
1752
1780
|
slot: "root",
|
|
@@ -1773,23 +1801,23 @@ var ContainerRoot = styled6("div", {
|
|
|
1773
1801
|
} : null
|
|
1774
1802
|
]);
|
|
1775
1803
|
var Container = forwardRef5(function Container2(props, ref) {
|
|
1776
|
-
return /* @__PURE__ */
|
|
1804
|
+
return /* @__PURE__ */ React15.createElement(ContainerRoot, { ref, ...props });
|
|
1777
1805
|
});
|
|
1778
1806
|
Container.displayName = "Container";
|
|
1779
1807
|
|
|
1780
1808
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
1781
|
-
import
|
|
1809
|
+
import React17, { useCallback as useCallback8, useMemo as useMemo6, useState as useState7 } from "react";
|
|
1782
1810
|
import { NumericFormat } from "react-number-format";
|
|
1783
1811
|
|
|
1784
1812
|
// src/components/Input/Input.tsx
|
|
1785
|
-
import
|
|
1813
|
+
import React16, { useCallback as useCallback7, useState as useState6 } from "react";
|
|
1786
1814
|
import { Input as JoyInput } from "@mui/joy";
|
|
1787
1815
|
import { motion as motion16 } from "framer-motion";
|
|
1788
1816
|
import ClearIcon from "@mui/icons-material/Close";
|
|
1789
1817
|
import VisibilityIcon from "@mui/icons-material/Visibility";
|
|
1790
1818
|
import VisibilityOffIcon from "@mui/icons-material/VisibilityOff";
|
|
1791
1819
|
var MotionInput = motion16(JoyInput);
|
|
1792
|
-
var Input =
|
|
1820
|
+
var Input = React16.forwardRef((props, ref) => {
|
|
1793
1821
|
const {
|
|
1794
1822
|
label,
|
|
1795
1823
|
helperText,
|
|
@@ -1812,11 +1840,11 @@ var Input = React15.forwardRef((props, ref) => {
|
|
|
1812
1840
|
if (type === "password" && innerProps.endDecorator) {
|
|
1813
1841
|
console.warn('Input: endDecorator is not supported when type="password"');
|
|
1814
1842
|
}
|
|
1815
|
-
const [passwordVisible, setPasswordVisible] =
|
|
1843
|
+
const [passwordVisible, setPasswordVisible] = useState6(false);
|
|
1816
1844
|
const [value, setValue] = useControlledState(
|
|
1817
1845
|
props.value,
|
|
1818
1846
|
props.defaultValue,
|
|
1819
|
-
|
|
1847
|
+
useCallback7(
|
|
1820
1848
|
(value2) => {
|
|
1821
1849
|
onChange?.({
|
|
1822
1850
|
/**
|
|
@@ -1842,7 +1870,7 @@ var Input = React15.forwardRef((props, ref) => {
|
|
|
1842
1870
|
const actualType = type === "password" && passwordVisible ? "text" : type;
|
|
1843
1871
|
const isPasswordType = type === "password";
|
|
1844
1872
|
const showPasswordToggle = isPasswordType && !disableTogglePasswordButton;
|
|
1845
|
-
const input = /* @__PURE__ */
|
|
1873
|
+
const input = /* @__PURE__ */ React16.createElement(
|
|
1846
1874
|
MotionInput,
|
|
1847
1875
|
{
|
|
1848
1876
|
value,
|
|
@@ -1857,7 +1885,7 @@ var Input = React15.forwardRef((props, ref) => {
|
|
|
1857
1885
|
...innerProps.slotProps
|
|
1858
1886
|
},
|
|
1859
1887
|
...innerProps,
|
|
1860
|
-
endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */
|
|
1888
|
+
endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ React16.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ React16.createElement(
|
|
1861
1889
|
IconButton_default,
|
|
1862
1890
|
{
|
|
1863
1891
|
onMouseDown: (e) => e.preventDefault(),
|
|
@@ -1865,19 +1893,19 @@ var Input = React15.forwardRef((props, ref) => {
|
|
|
1865
1893
|
disabled,
|
|
1866
1894
|
"aria-label": passwordVisible ? "Hide password" : "Show password"
|
|
1867
1895
|
},
|
|
1868
|
-
passwordVisible ? /* @__PURE__ */
|
|
1869
|
-
)) : null : enableClearable ? /* @__PURE__ */
|
|
1896
|
+
passwordVisible ? /* @__PURE__ */ React16.createElement(VisibilityOffIcon, null) : /* @__PURE__ */ React16.createElement(VisibilityIcon, null)
|
|
1897
|
+
)) : null : enableClearable ? /* @__PURE__ */ React16.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, value && /* @__PURE__ */ React16.createElement(
|
|
1870
1898
|
IconButton_default,
|
|
1871
1899
|
{
|
|
1872
1900
|
onMouseDown: (e) => e.preventDefault(),
|
|
1873
1901
|
onClick: handleClear,
|
|
1874
1902
|
"aria-label": "Clear"
|
|
1875
1903
|
},
|
|
1876
|
-
/* @__PURE__ */
|
|
1904
|
+
/* @__PURE__ */ React16.createElement(ClearIcon, null)
|
|
1877
1905
|
)) : innerProps.endDecorator
|
|
1878
1906
|
}
|
|
1879
1907
|
);
|
|
1880
|
-
return /* @__PURE__ */
|
|
1908
|
+
return /* @__PURE__ */ React16.createElement(
|
|
1881
1909
|
FormControl_default,
|
|
1882
1910
|
{
|
|
1883
1911
|
required,
|
|
@@ -1888,9 +1916,9 @@ var Input = React15.forwardRef((props, ref) => {
|
|
|
1888
1916
|
sx,
|
|
1889
1917
|
className
|
|
1890
1918
|
},
|
|
1891
|
-
label && /* @__PURE__ */
|
|
1919
|
+
label && /* @__PURE__ */ React16.createElement(FormLabel_default, null, label),
|
|
1892
1920
|
input,
|
|
1893
|
-
helperText && /* @__PURE__ */
|
|
1921
|
+
helperText && /* @__PURE__ */ React16.createElement(FormHelperText_default, null, helperText)
|
|
1894
1922
|
);
|
|
1895
1923
|
});
|
|
1896
1924
|
Input.displayName = "Input";
|
|
@@ -1899,7 +1927,7 @@ Input.displayName = "Input";
|
|
|
1899
1927
|
var Input_default = Input;
|
|
1900
1928
|
|
|
1901
1929
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
1902
|
-
import { styled as styled7, useThemeProps as
|
|
1930
|
+
import { styled as styled7, useThemeProps as useThemeProps4 } from "@mui/joy";
|
|
1903
1931
|
|
|
1904
1932
|
// src/components/CurrencyInput/hooks/use-currency-setting.ts
|
|
1905
1933
|
var CURRENCY_DECIMAL_MAP = {
|
|
@@ -2062,9 +2090,9 @@ var useCurrencySetting = (props) => {
|
|
|
2062
2090
|
};
|
|
2063
2091
|
|
|
2064
2092
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
2065
|
-
var TextMaskAdapter =
|
|
2093
|
+
var TextMaskAdapter = React17.forwardRef(function TextMaskAdapter2(props, ref) {
|
|
2066
2094
|
const { onChange, ...innerProps } = props;
|
|
2067
|
-
return /* @__PURE__ */
|
|
2095
|
+
return /* @__PURE__ */ React17.createElement(
|
|
2068
2096
|
NumericFormat,
|
|
2069
2097
|
{
|
|
2070
2098
|
...innerProps,
|
|
@@ -2084,8 +2112,8 @@ var CurrencyInputRoot = styled7(Input_default, {
|
|
|
2084
2112
|
slot: "root",
|
|
2085
2113
|
overridesResolver: (props, styles) => styles.root
|
|
2086
2114
|
})({});
|
|
2087
|
-
var CurrencyInput =
|
|
2088
|
-
const props =
|
|
2115
|
+
var CurrencyInput = React17.forwardRef(function CurrencyInput2(inProps, ref) {
|
|
2116
|
+
const props = useThemeProps4({ props: inProps, name: "CurrencyInput" });
|
|
2089
2117
|
const {
|
|
2090
2118
|
currency = "USD",
|
|
2091
2119
|
name,
|
|
@@ -2105,22 +2133,22 @@ var CurrencyInput = React16.forwardRef(function CurrencyInput2(inProps, ref) {
|
|
|
2105
2133
|
const [_value, setValue] = useControlledState(
|
|
2106
2134
|
props.value,
|
|
2107
2135
|
props.defaultValue,
|
|
2108
|
-
|
|
2136
|
+
useCallback8((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
2109
2137
|
);
|
|
2110
|
-
const value =
|
|
2138
|
+
const value = useMemo6(() => {
|
|
2111
2139
|
if (_value && useMinorUnit) {
|
|
2112
2140
|
return _value / Math.pow(10, decimalScale);
|
|
2113
2141
|
}
|
|
2114
2142
|
return _value;
|
|
2115
2143
|
}, [_value, useMinorUnit, decimalScale]);
|
|
2116
|
-
const max =
|
|
2144
|
+
const max = useMemo6(() => {
|
|
2117
2145
|
if (props.max && useMinorUnit) {
|
|
2118
2146
|
return props.max / Math.pow(10, decimalScale);
|
|
2119
2147
|
}
|
|
2120
2148
|
return props.max;
|
|
2121
2149
|
}, [props.max, useMinorUnit, decimalScale]);
|
|
2122
|
-
const [isOverLimit, setIsOverLimit] =
|
|
2123
|
-
const handleChange =
|
|
2150
|
+
const [isOverLimit, setIsOverLimit] = useState7(!!max && !!value && value > max);
|
|
2151
|
+
const handleChange = useCallback8(
|
|
2124
2152
|
(event) => {
|
|
2125
2153
|
if (event.target.value === "") {
|
|
2126
2154
|
setValue(void 0);
|
|
@@ -2136,7 +2164,7 @@ var CurrencyInput = React16.forwardRef(function CurrencyInput2(inProps, ref) {
|
|
|
2136
2164
|
},
|
|
2137
2165
|
[decimalSeparator, max, useMinorUnit, setValue]
|
|
2138
2166
|
);
|
|
2139
|
-
return /* @__PURE__ */
|
|
2167
|
+
return /* @__PURE__ */ React17.createElement(
|
|
2140
2168
|
CurrencyInputRoot,
|
|
2141
2169
|
{
|
|
2142
2170
|
...innerProps,
|
|
@@ -2173,9 +2201,9 @@ var CurrencyInput = React16.forwardRef(function CurrencyInput2(inProps, ref) {
|
|
|
2173
2201
|
var CurrencyInput_default = CurrencyInput;
|
|
2174
2202
|
|
|
2175
2203
|
// src/components/DataTable/DataTable.tsx
|
|
2176
|
-
import
|
|
2177
|
-
useCallback as
|
|
2178
|
-
useMemo as
|
|
2204
|
+
import React26, {
|
|
2205
|
+
useCallback as useCallback13,
|
|
2206
|
+
useMemo as useMemo11,
|
|
2179
2207
|
useRef as useRef7,
|
|
2180
2208
|
useId,
|
|
2181
2209
|
forwardRef as forwardRef7,
|
|
@@ -2411,7 +2439,7 @@ function computeAutoFitWidth(params) {
|
|
|
2411
2439
|
}
|
|
2412
2440
|
|
|
2413
2441
|
// src/components/DataTable/styled.tsx
|
|
2414
|
-
import
|
|
2442
|
+
import React18 from "react";
|
|
2415
2443
|
import { styled as styled8, LinearProgress, buttonClasses, iconButtonClasses, Typography as Typography3 } from "@mui/joy";
|
|
2416
2444
|
import { motion as motion17 } from "framer-motion";
|
|
2417
2445
|
import SortIcon from "@mui/icons-material/ArrowUpwardRounded";
|
|
@@ -2517,9 +2545,9 @@ var StyledTd = styled8("td")(({ theme }) => ({
|
|
|
2517
2545
|
}
|
|
2518
2546
|
}));
|
|
2519
2547
|
var MotionSortIcon = motion17(SortIcon);
|
|
2520
|
-
var DefaultLoadingOverlay = () => /* @__PURE__ */
|
|
2521
|
-
var DefaultNoRowsOverlay = () => /* @__PURE__ */
|
|
2522
|
-
var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PURE__ */
|
|
2548
|
+
var DefaultLoadingOverlay = () => /* @__PURE__ */ React18.createElement(LinearProgress, { value: 8, variant: "plain" });
|
|
2549
|
+
var DefaultNoRowsOverlay = () => /* @__PURE__ */ React18.createElement(Typography3, { level: "body-sm", textColor: "text.tertiary" }, "No rows");
|
|
2550
|
+
var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PURE__ */ React18.createElement(
|
|
2523
2551
|
Box_default,
|
|
2524
2552
|
{
|
|
2525
2553
|
sx: {
|
|
@@ -2596,12 +2624,12 @@ var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PU
|
|
|
2596
2624
|
);
|
|
2597
2625
|
|
|
2598
2626
|
// src/components/DataTable/components.tsx
|
|
2599
|
-
import
|
|
2627
|
+
import React23, {
|
|
2600
2628
|
useRef as useRef5,
|
|
2601
|
-
useState as
|
|
2629
|
+
useState as useState9,
|
|
2602
2630
|
useLayoutEffect,
|
|
2603
|
-
useMemo as
|
|
2604
|
-
useCallback as
|
|
2631
|
+
useMemo as useMemo9,
|
|
2632
|
+
useCallback as useCallback10,
|
|
2605
2633
|
useEffect as useEffect5,
|
|
2606
2634
|
memo,
|
|
2607
2635
|
createElement
|
|
@@ -2610,10 +2638,10 @@ import { styled as styled12, useTheme } from "@mui/joy";
|
|
|
2610
2638
|
import { AnimatePresence as AnimatePresence2 } from "framer-motion";
|
|
2611
2639
|
|
|
2612
2640
|
// src/components/DatePicker/DatePicker.tsx
|
|
2613
|
-
import
|
|
2641
|
+
import React19, { forwardRef as forwardRef6, useCallback as useCallback9, useEffect as useEffect4, useImperativeHandle, useRef as useRef4, useState as useState8 } from "react";
|
|
2614
2642
|
import { IMaskInput, IMask } from "react-imask";
|
|
2615
2643
|
import CalendarTodayIcon from "@mui/icons-material/CalendarToday";
|
|
2616
|
-
import { styled as styled10, useThemeProps as
|
|
2644
|
+
import { styled as styled10, useThemeProps as useThemeProps5 } from "@mui/joy";
|
|
2617
2645
|
import { FocusTrap, ClickAwayListener, Popper as Popper2 } from "@mui/base";
|
|
2618
2646
|
|
|
2619
2647
|
// src/components/Sheet/Sheet.tsx
|
|
@@ -2763,9 +2791,9 @@ function parseDate(dateString, format) {
|
|
|
2763
2791
|
var formatToPattern = (format) => {
|
|
2764
2792
|
return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
2765
2793
|
};
|
|
2766
|
-
var TextMaskAdapter3 =
|
|
2794
|
+
var TextMaskAdapter3 = React19.forwardRef(function TextMaskAdapter4(props, ref) {
|
|
2767
2795
|
const { onChange, format, ...other } = props;
|
|
2768
|
-
return /* @__PURE__ */
|
|
2796
|
+
return /* @__PURE__ */ React19.createElement(
|
|
2769
2797
|
IMaskInput,
|
|
2770
2798
|
{
|
|
2771
2799
|
...other,
|
|
@@ -2801,7 +2829,7 @@ var TextMaskAdapter3 = React18.forwardRef(function TextMaskAdapter4(props, ref)
|
|
|
2801
2829
|
);
|
|
2802
2830
|
});
|
|
2803
2831
|
var DatePicker = forwardRef6((inProps, ref) => {
|
|
2804
|
-
const props =
|
|
2832
|
+
const props = useThemeProps5({ props: inProps, name: "DatePicker" });
|
|
2805
2833
|
const {
|
|
2806
2834
|
onChange,
|
|
2807
2835
|
disabled,
|
|
@@ -2832,13 +2860,13 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2832
2860
|
const [value, setValue] = useControlledState(
|
|
2833
2861
|
props.value,
|
|
2834
2862
|
props.defaultValue || "",
|
|
2835
|
-
|
|
2863
|
+
useCallback9((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
2836
2864
|
);
|
|
2837
2865
|
const isAlphabeticDisplay = hasAlphabeticMonth(displayFormat);
|
|
2838
|
-
const [displayValue, setDisplayValue] =
|
|
2866
|
+
const [displayValue, setDisplayValue] = useState8(
|
|
2839
2867
|
() => value ? formatValueString(parseDate(value, format), displayFormat, locale) : ""
|
|
2840
2868
|
);
|
|
2841
|
-
const [anchorEl, setAnchorEl] =
|
|
2869
|
+
const [anchorEl, setAnchorEl] = useState8(null);
|
|
2842
2870
|
const open = Boolean(anchorEl);
|
|
2843
2871
|
useEffect4(() => {
|
|
2844
2872
|
if (!anchorEl) {
|
|
@@ -2856,7 +2884,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2856
2884
|
}
|
|
2857
2885
|
}, [displayFormat, displayValue, format, locale, value]);
|
|
2858
2886
|
useImperativeHandle(ref, () => innerRef.current, [innerRef]);
|
|
2859
|
-
const handleChange =
|
|
2887
|
+
const handleChange = useCallback9(
|
|
2860
2888
|
(event) => {
|
|
2861
2889
|
const value2 = event.target.value;
|
|
2862
2890
|
setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat, locale) : value2);
|
|
@@ -2864,7 +2892,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2864
2892
|
},
|
|
2865
2893
|
[displayFormat, format, locale, setValue]
|
|
2866
2894
|
);
|
|
2867
|
-
const handleDisplayInputChange =
|
|
2895
|
+
const handleDisplayInputChange = useCallback9(
|
|
2868
2896
|
(event) => {
|
|
2869
2897
|
if (event.target.value === "") {
|
|
2870
2898
|
handleChange({
|
|
@@ -2889,7 +2917,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2889
2917
|
},
|
|
2890
2918
|
[displayFormat, format, handleChange, props.name]
|
|
2891
2919
|
);
|
|
2892
|
-
const handleCalendarToggle =
|
|
2920
|
+
const handleCalendarToggle = useCallback9(
|
|
2893
2921
|
(event) => {
|
|
2894
2922
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
2895
2923
|
setTimeout(() => {
|
|
@@ -2898,7 +2926,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2898
2926
|
},
|
|
2899
2927
|
[anchorEl, setAnchorEl, innerRef]
|
|
2900
2928
|
);
|
|
2901
|
-
const handleInputMouseDown =
|
|
2929
|
+
const handleInputMouseDown = useCallback9(
|
|
2902
2930
|
(event) => {
|
|
2903
2931
|
if (inputReadOnly || isAlphabeticDisplay) {
|
|
2904
2932
|
event.preventDefault();
|
|
@@ -2907,7 +2935,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2907
2935
|
},
|
|
2908
2936
|
[inputReadOnly, isAlphabeticDisplay, buttonRef]
|
|
2909
2937
|
);
|
|
2910
|
-
const handlePresetClick =
|
|
2938
|
+
const handlePresetClick = useCallback9(
|
|
2911
2939
|
(presetValue) => {
|
|
2912
2940
|
handleChange({
|
|
2913
2941
|
target: {
|
|
@@ -2919,7 +2947,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2919
2947
|
},
|
|
2920
2948
|
[handleChange, props.name]
|
|
2921
2949
|
);
|
|
2922
|
-
const isPresetDisabled =
|
|
2950
|
+
const isPresetDisabled = useCallback9(
|
|
2923
2951
|
(presetValue) => {
|
|
2924
2952
|
try {
|
|
2925
2953
|
const date = parseDate(presetValue, format);
|
|
@@ -2936,7 +2964,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2936
2964
|
},
|
|
2937
2965
|
[format, minDate, maxDate, disableFuture, disablePast, shouldDisableDate]
|
|
2938
2966
|
);
|
|
2939
|
-
return /* @__PURE__ */
|
|
2967
|
+
return /* @__PURE__ */ React19.createElement(DatePickerRoot, null, /* @__PURE__ */ React19.createElement(FocusTrap, { open: true }, /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
|
|
2940
2968
|
Input_default,
|
|
2941
2969
|
{
|
|
2942
2970
|
...innerProps,
|
|
@@ -2963,7 +2991,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2963
2991
|
},
|
|
2964
2992
|
className,
|
|
2965
2993
|
sx,
|
|
2966
|
-
endDecorator: /* @__PURE__ */
|
|
2994
|
+
endDecorator: /* @__PURE__ */ React19.createElement(
|
|
2967
2995
|
CalendarButton,
|
|
2968
2996
|
{
|
|
2969
2997
|
ref: buttonRef,
|
|
@@ -2975,13 +3003,13 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2975
3003
|
"aria-expanded": open,
|
|
2976
3004
|
disabled
|
|
2977
3005
|
},
|
|
2978
|
-
/* @__PURE__ */
|
|
3006
|
+
/* @__PURE__ */ React19.createElement(CalendarTodayIcon, null)
|
|
2979
3007
|
),
|
|
2980
3008
|
label,
|
|
2981
3009
|
helperText,
|
|
2982
3010
|
readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
|
|
2983
3011
|
}
|
|
2984
|
-
), open && /* @__PURE__ */
|
|
3012
|
+
), open && /* @__PURE__ */ React19.createElement(ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React19.createElement(
|
|
2985
3013
|
StyledPopper,
|
|
2986
3014
|
{
|
|
2987
3015
|
id: "date-picker-popper",
|
|
@@ -3000,7 +3028,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
3000
3028
|
"aria-label": "Calendar Tooltip",
|
|
3001
3029
|
"aria-expanded": open
|
|
3002
3030
|
},
|
|
3003
|
-
/* @__PURE__ */
|
|
3031
|
+
/* @__PURE__ */ React19.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React19.createElement(CalendarSheetContent, null, /* @__PURE__ */ React19.createElement(CalendarSection, null, /* @__PURE__ */ React19.createElement(
|
|
3004
3032
|
Calendar_default,
|
|
3005
3033
|
{
|
|
3006
3034
|
value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
|
|
@@ -3020,14 +3048,14 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
3020
3048
|
shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0,
|
|
3021
3049
|
locale
|
|
3022
3050
|
}
|
|
3023
|
-
), !hideClearButton && /* @__PURE__ */
|
|
3051
|
+
), !hideClearButton && /* @__PURE__ */ React19.createElement(
|
|
3024
3052
|
DialogActions_default,
|
|
3025
3053
|
{
|
|
3026
3054
|
sx: {
|
|
3027
3055
|
p: 1
|
|
3028
3056
|
}
|
|
3029
3057
|
},
|
|
3030
|
-
/* @__PURE__ */
|
|
3058
|
+
/* @__PURE__ */ React19.createElement(
|
|
3031
3059
|
Button_default,
|
|
3032
3060
|
{
|
|
3033
3061
|
size,
|
|
@@ -3045,9 +3073,9 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
3045
3073
|
},
|
|
3046
3074
|
"Clear"
|
|
3047
3075
|
)
|
|
3048
|
-
)), presets && presets.length > 0 && /* @__PURE__ */
|
|
3076
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ React19.createElement(PresetPanel, null, presets.map((preset) => {
|
|
3049
3077
|
const disabled2 = isPresetDisabled(preset.value);
|
|
3050
|
-
return /* @__PURE__ */
|
|
3078
|
+
return /* @__PURE__ */ React19.createElement(
|
|
3051
3079
|
PresetItem,
|
|
3052
3080
|
{
|
|
3053
3081
|
key: preset.label,
|
|
@@ -3068,7 +3096,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
3068
3096
|
var DatePicker_default = DatePicker;
|
|
3069
3097
|
|
|
3070
3098
|
// src/components/Textarea/Textarea.tsx
|
|
3071
|
-
import
|
|
3099
|
+
import React20 from "react";
|
|
3072
3100
|
import { Textarea as JoyTextarea } from "@mui/joy";
|
|
3073
3101
|
import { motion as motion19 } from "framer-motion";
|
|
3074
3102
|
var MotionTextarea = motion19(JoyTextarea);
|
|
@@ -3088,7 +3116,7 @@ var Textarea = (props) => {
|
|
|
3088
3116
|
className,
|
|
3089
3117
|
...innerProps
|
|
3090
3118
|
} = props;
|
|
3091
|
-
const textarea = /* @__PURE__ */
|
|
3119
|
+
const textarea = /* @__PURE__ */ React20.createElement(
|
|
3092
3120
|
MotionTextarea,
|
|
3093
3121
|
{
|
|
3094
3122
|
required,
|
|
@@ -3100,7 +3128,7 @@ var Textarea = (props) => {
|
|
|
3100
3128
|
...innerProps
|
|
3101
3129
|
}
|
|
3102
3130
|
);
|
|
3103
|
-
return /* @__PURE__ */
|
|
3131
|
+
return /* @__PURE__ */ React20.createElement(
|
|
3104
3132
|
FormControl_default,
|
|
3105
3133
|
{
|
|
3106
3134
|
required,
|
|
@@ -3111,9 +3139,9 @@ var Textarea = (props) => {
|
|
|
3111
3139
|
sx,
|
|
3112
3140
|
className
|
|
3113
3141
|
},
|
|
3114
|
-
label && /* @__PURE__ */
|
|
3142
|
+
label && /* @__PURE__ */ React20.createElement(FormLabel_default, null, label),
|
|
3115
3143
|
textarea,
|
|
3116
|
-
helperText && /* @__PURE__ */
|
|
3144
|
+
helperText && /* @__PURE__ */ React20.createElement(FormHelperText_default, null, helperText)
|
|
3117
3145
|
);
|
|
3118
3146
|
};
|
|
3119
3147
|
Textarea.displayName = "Textarea";
|
|
@@ -3122,8 +3150,13 @@ Textarea.displayName = "Textarea";
|
|
|
3122
3150
|
var Textarea_default = Textarea;
|
|
3123
3151
|
|
|
3124
3152
|
// src/components/Select/Select.tsx
|
|
3125
|
-
import
|
|
3126
|
-
import {
|
|
3153
|
+
import React21, { useMemo as useMemo8 } from "react";
|
|
3154
|
+
import {
|
|
3155
|
+
Select as JoySelect,
|
|
3156
|
+
Option as JoyOption,
|
|
3157
|
+
ListItemContent as ListItemContent2,
|
|
3158
|
+
Typography as Typography4
|
|
3159
|
+
} from "@mui/joy";
|
|
3127
3160
|
import { motion as motion20 } from "framer-motion";
|
|
3128
3161
|
var MotionOption = motion20(JoyOption);
|
|
3129
3162
|
var Option = MotionOption;
|
|
@@ -3148,7 +3181,7 @@ function Select(props) {
|
|
|
3148
3181
|
className,
|
|
3149
3182
|
...innerProps
|
|
3150
3183
|
} = props;
|
|
3151
|
-
const options =
|
|
3184
|
+
const options = useMemo8(
|
|
3152
3185
|
() => props.options.map((option) => {
|
|
3153
3186
|
if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
|
|
3154
3187
|
return option;
|
|
@@ -3173,14 +3206,14 @@ function Select(props) {
|
|
|
3173
3206
|
};
|
|
3174
3207
|
onChange?.(newEvent, newValue);
|
|
3175
3208
|
};
|
|
3176
|
-
const optionMap =
|
|
3209
|
+
const optionMap = useMemo8(() => {
|
|
3177
3210
|
const map = /* @__PURE__ */ new Map();
|
|
3178
3211
|
options.forEach((option) => {
|
|
3179
3212
|
map.set(option.value, option);
|
|
3180
3213
|
});
|
|
3181
3214
|
return map;
|
|
3182
3215
|
}, [options]);
|
|
3183
|
-
const select = /* @__PURE__ */
|
|
3216
|
+
const select = /* @__PURE__ */ React21.createElement(
|
|
3184
3217
|
JoySelect,
|
|
3185
3218
|
{
|
|
3186
3219
|
...innerProps,
|
|
@@ -3197,9 +3230,9 @@ function Select(props) {
|
|
|
3197
3230
|
return optionMap.get(selected.value)?.label;
|
|
3198
3231
|
}
|
|
3199
3232
|
},
|
|
3200
|
-
options.map((option) => /* @__PURE__ */
|
|
3233
|
+
options.map((option) => /* @__PURE__ */ React21.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ React21.createElement(ListItemContent2, { sx: { gap: 0.5 } }, /* @__PURE__ */ React21.createElement(Typography4, { level: "inherit" }, option.label), /* @__PURE__ */ React21.createElement(Typography4, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
|
|
3201
3234
|
);
|
|
3202
|
-
return /* @__PURE__ */
|
|
3235
|
+
return /* @__PURE__ */ React21.createElement(
|
|
3203
3236
|
FormControl_default,
|
|
3204
3237
|
{
|
|
3205
3238
|
required,
|
|
@@ -3210,9 +3243,9 @@ function Select(props) {
|
|
|
3210
3243
|
sx,
|
|
3211
3244
|
className
|
|
3212
3245
|
},
|
|
3213
|
-
label && /* @__PURE__ */
|
|
3246
|
+
label && /* @__PURE__ */ React21.createElement(FormLabel_default, null, label),
|
|
3214
3247
|
select,
|
|
3215
|
-
helperText && /* @__PURE__ */
|
|
3248
|
+
helperText && /* @__PURE__ */ React21.createElement(FormHelperText_default, null, helperText)
|
|
3216
3249
|
);
|
|
3217
3250
|
}
|
|
3218
3251
|
Select.displayName = "Select";
|
|
@@ -3224,7 +3257,7 @@ var Select_default = Select;
|
|
|
3224
3257
|
import { Link } from "@mui/joy";
|
|
3225
3258
|
|
|
3226
3259
|
// src/components/InfoSign/InfoSign.tsx
|
|
3227
|
-
import
|
|
3260
|
+
import React22 from "react";
|
|
3228
3261
|
import { styled as styled11, tooltipClasses } from "@mui/joy";
|
|
3229
3262
|
import MuiInfoIcon from "@mui/icons-material/Info";
|
|
3230
3263
|
var InfoIcon = styled11(MuiInfoIcon, {
|
|
@@ -3237,7 +3270,7 @@ var InfoIcon = styled11(MuiInfoIcon, {
|
|
|
3237
3270
|
}));
|
|
3238
3271
|
function InfoSign(props) {
|
|
3239
3272
|
const { message, placement } = props;
|
|
3240
|
-
return /* @__PURE__ */
|
|
3273
|
+
return /* @__PURE__ */ React22.createElement(
|
|
3241
3274
|
Tooltip_default,
|
|
3242
3275
|
{
|
|
3243
3276
|
arrow: true,
|
|
@@ -3247,9 +3280,9 @@ function InfoSign(props) {
|
|
|
3247
3280
|
maxWidth: "320px"
|
|
3248
3281
|
}
|
|
3249
3282
|
},
|
|
3250
|
-
title: message?.split("\n").map((line, i) => /* @__PURE__ */
|
|
3283
|
+
title: message?.split("\n").map((line, i) => /* @__PURE__ */ React22.createElement("div", { key: `info-sign-${i}` }, line))
|
|
3251
3284
|
},
|
|
3252
|
-
/* @__PURE__ */
|
|
3285
|
+
/* @__PURE__ */ React22.createElement(InfoIcon, null)
|
|
3253
3286
|
);
|
|
3254
3287
|
}
|
|
3255
3288
|
|
|
@@ -3263,7 +3296,7 @@ var TextEllipsis = ({
|
|
|
3263
3296
|
...rest
|
|
3264
3297
|
}) => {
|
|
3265
3298
|
const textRef = useRef5(null);
|
|
3266
|
-
const [showTooltip, setShowTooltip] =
|
|
3299
|
+
const [showTooltip, setShowTooltip] = useState9(false);
|
|
3267
3300
|
useLayoutEffect(() => {
|
|
3268
3301
|
const element = textRef.current;
|
|
3269
3302
|
if (!element) return;
|
|
@@ -3276,11 +3309,11 @@ var TextEllipsis = ({
|
|
|
3276
3309
|
ro.observe(element);
|
|
3277
3310
|
return () => ro.disconnect();
|
|
3278
3311
|
}, [children, lineClamp]);
|
|
3279
|
-
return /* @__PURE__ */
|
|
3312
|
+
return /* @__PURE__ */ React23.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top" }, /* @__PURE__ */ React23.createElement(EllipsisDiv, { ref: textRef, lineClamp, ...rest }, children));
|
|
3280
3313
|
};
|
|
3281
3314
|
var CellTextEllipsis = ({ children }) => {
|
|
3282
3315
|
const textRef = useRef5(null);
|
|
3283
|
-
const [showTooltip, setShowTooltip] =
|
|
3316
|
+
const [showTooltip, setShowTooltip] = useState9(false);
|
|
3284
3317
|
useLayoutEffect(() => {
|
|
3285
3318
|
const element = textRef.current;
|
|
3286
3319
|
if (element) {
|
|
@@ -3288,9 +3321,9 @@ var CellTextEllipsis = ({ children }) => {
|
|
|
3288
3321
|
setShowTooltip(isTextTruncated);
|
|
3289
3322
|
}
|
|
3290
3323
|
}, [children]);
|
|
3291
|
-
const content = /* @__PURE__ */
|
|
3324
|
+
const content = /* @__PURE__ */ React23.createElement(EllipsisDiv, { ref: textRef }, children);
|
|
3292
3325
|
if (showTooltip) {
|
|
3293
|
-
return /* @__PURE__ */
|
|
3326
|
+
return /* @__PURE__ */ React23.createElement(
|
|
3294
3327
|
Tooltip_default,
|
|
3295
3328
|
{
|
|
3296
3329
|
title: children,
|
|
@@ -3338,14 +3371,14 @@ var HeadCell = (props) => {
|
|
|
3338
3371
|
useLayoutEffect(() => {
|
|
3339
3372
|
ref.current = localRef.current;
|
|
3340
3373
|
}, [ref]);
|
|
3341
|
-
const [isHovered, setIsHovered] =
|
|
3374
|
+
const [isHovered, setIsHovered] = useState9(false);
|
|
3342
3375
|
const sortable = type === "actions" ? false : _sortable;
|
|
3343
|
-
const headId =
|
|
3376
|
+
const headId = useMemo9(
|
|
3344
3377
|
() => `${tableId}_header_${headerName ?? field}`.trim(),
|
|
3345
3378
|
[tableId, headerName, field]
|
|
3346
3379
|
);
|
|
3347
3380
|
const isResizingRef = useRef5(false);
|
|
3348
|
-
const resizer =
|
|
3381
|
+
const resizer = useMemo9(
|
|
3349
3382
|
() => resizable ?? true ? Resizer(
|
|
3350
3383
|
ref,
|
|
3351
3384
|
colRef,
|
|
@@ -3356,7 +3389,7 @@ var HeadCell = (props) => {
|
|
|
3356
3389
|
) : null,
|
|
3357
3390
|
[resizable, ref, colRef, onAutoFit, field]
|
|
3358
3391
|
);
|
|
3359
|
-
const style =
|
|
3392
|
+
const style = useMemo9(
|
|
3360
3393
|
() => ({
|
|
3361
3394
|
width,
|
|
3362
3395
|
minWidth: minWidth ?? "50px",
|
|
@@ -3374,10 +3407,10 @@ var HeadCell = (props) => {
|
|
|
3374
3407
|
);
|
|
3375
3408
|
const textAlign = getTextAlign(props);
|
|
3376
3409
|
const initialSort = sortOrder[0];
|
|
3377
|
-
const sortIcon =
|
|
3410
|
+
const sortIcon = useMemo9(() => {
|
|
3378
3411
|
const isSorted = !!sort;
|
|
3379
3412
|
const isVisible = sortable && (isSorted || isHovered);
|
|
3380
|
-
return /* @__PURE__ */
|
|
3413
|
+
return /* @__PURE__ */ React23.createElement(AnimatePresence2, { mode: "wait" }, isVisible && /* @__PURE__ */ React23.createElement(
|
|
3381
3414
|
MotionSortIcon,
|
|
3382
3415
|
{
|
|
3383
3416
|
key: "sort-icon",
|
|
@@ -3405,21 +3438,21 @@ var HeadCell = (props) => {
|
|
|
3405
3438
|
}
|
|
3406
3439
|
));
|
|
3407
3440
|
}, [headId, initialSort, sort, sortable, isHovered]);
|
|
3408
|
-
const infoSign =
|
|
3409
|
-
() => description ? /* @__PURE__ */
|
|
3441
|
+
const infoSign = useMemo9(
|
|
3442
|
+
() => description ? /* @__PURE__ */ React23.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
|
|
3410
3443
|
[description]
|
|
3411
3444
|
);
|
|
3412
|
-
const params =
|
|
3445
|
+
const params = useMemo9(
|
|
3413
3446
|
() => ({
|
|
3414
3447
|
field
|
|
3415
3448
|
}),
|
|
3416
3449
|
[field]
|
|
3417
3450
|
);
|
|
3418
|
-
const computedHeaderClassName =
|
|
3451
|
+
const computedHeaderClassName = useMemo9(
|
|
3419
3452
|
() => (typeof headerClassName === "function" ? headerClassName(params) : headerClassName) || void 0,
|
|
3420
3453
|
[headerClassName, params]
|
|
3421
3454
|
);
|
|
3422
|
-
return /* @__PURE__ */
|
|
3455
|
+
return /* @__PURE__ */ React23.createElement(
|
|
3423
3456
|
StyledTh,
|
|
3424
3457
|
{
|
|
3425
3458
|
id: headId,
|
|
@@ -3428,7 +3461,7 @@ var HeadCell = (props) => {
|
|
|
3428
3461
|
ref: localRef,
|
|
3429
3462
|
key: field,
|
|
3430
3463
|
style,
|
|
3431
|
-
onClick:
|
|
3464
|
+
onClick: useCallback10(
|
|
3432
3465
|
(e) => {
|
|
3433
3466
|
if (isResizingRef.current) return;
|
|
3434
3467
|
if (!(e.target instanceof Element) || !e.currentTarget.contains(e.target)) return;
|
|
@@ -3442,7 +3475,7 @@ var HeadCell = (props) => {
|
|
|
3442
3475
|
initial: "initial",
|
|
3443
3476
|
className: computedHeaderClassName
|
|
3444
3477
|
},
|
|
3445
|
-
/* @__PURE__ */
|
|
3478
|
+
/* @__PURE__ */ React23.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center", sx: { minWidth: 0 } }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ React23.createElement(TextEllipsis, { lineClamp: headerLineClamp, "data-slot": "header-text" }, headerName ?? field, editMode && required && /* @__PURE__ */ React23.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
|
|
3446
3479
|
resizer
|
|
3447
3480
|
);
|
|
3448
3481
|
};
|
|
@@ -3467,9 +3500,9 @@ var BodyCell = (props) => {
|
|
|
3467
3500
|
onCellEditStop
|
|
3468
3501
|
} = props;
|
|
3469
3502
|
const theme = useTheme();
|
|
3470
|
-
const [value, setValue] =
|
|
3503
|
+
const [value, setValue] = useState9(row[field]);
|
|
3471
3504
|
const cellRef = useRef5(null);
|
|
3472
|
-
const params =
|
|
3505
|
+
const params = useMemo9(
|
|
3473
3506
|
() => ({
|
|
3474
3507
|
row,
|
|
3475
3508
|
value,
|
|
@@ -3478,20 +3511,20 @@ var BodyCell = (props) => {
|
|
|
3478
3511
|
}),
|
|
3479
3512
|
[row, rowId, value, field]
|
|
3480
3513
|
);
|
|
3481
|
-
const editMode =
|
|
3514
|
+
const editMode = useMemo9(
|
|
3482
3515
|
() => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
|
|
3483
3516
|
[props.editMode, isCellEditable, params]
|
|
3484
3517
|
);
|
|
3485
3518
|
const propsComponentProps = "componentProps" in props ? props.componentProps : null;
|
|
3486
3519
|
const hasComponentProps = "componentProps" in props;
|
|
3487
|
-
const componentProps =
|
|
3520
|
+
const componentProps = useMemo9(
|
|
3488
3521
|
() => ({
|
|
3489
3522
|
...hasComponentProps && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
|
|
3490
3523
|
size: "sm"
|
|
3491
3524
|
}),
|
|
3492
3525
|
[hasComponentProps, propsComponentProps, params]
|
|
3493
3526
|
);
|
|
3494
|
-
const editModeComponentProps =
|
|
3527
|
+
const editModeComponentProps = useMemo9(
|
|
3495
3528
|
() => ({
|
|
3496
3529
|
...componentProps,
|
|
3497
3530
|
onChange: (e) => {
|
|
@@ -3553,25 +3586,25 @@ var BodyCell = (props) => {
|
|
|
3553
3586
|
}),
|
|
3554
3587
|
[params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
|
|
3555
3588
|
);
|
|
3556
|
-
const MemoizedRenderEditCell =
|
|
3557
|
-
const MemoizedRenderCell =
|
|
3558
|
-
const EditModeComponent =
|
|
3589
|
+
const MemoizedRenderEditCell = useMemo9(() => renderEditCell ? memo(renderEditCell) : null, [renderEditCell]);
|
|
3590
|
+
const MemoizedRenderCell = useMemo9(() => renderCell ? memo(renderCell) : null, [renderCell]);
|
|
3591
|
+
const EditModeComponent = useMemo9(() => {
|
|
3559
3592
|
if (MemoizedRenderEditCell) {
|
|
3560
3593
|
return createElement(MemoizedRenderEditCell, params);
|
|
3561
3594
|
}
|
|
3562
3595
|
return {
|
|
3563
|
-
date: /* @__PURE__ */
|
|
3564
|
-
currency: /* @__PURE__ */
|
|
3596
|
+
date: /* @__PURE__ */ React23.createElement(DatePicker_default, { value, ...editModeComponentProps }),
|
|
3597
|
+
currency: /* @__PURE__ */ React23.createElement(
|
|
3565
3598
|
CurrencyInput_default,
|
|
3566
3599
|
{
|
|
3567
3600
|
value,
|
|
3568
3601
|
...editModeComponentProps
|
|
3569
3602
|
}
|
|
3570
3603
|
),
|
|
3571
|
-
number: /* @__PURE__ */
|
|
3572
|
-
text: /* @__PURE__ */
|
|
3573
|
-
longText: /* @__PURE__ */
|
|
3574
|
-
autocomplete: /* @__PURE__ */
|
|
3604
|
+
number: /* @__PURE__ */ React23.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
|
|
3605
|
+
text: /* @__PURE__ */ React23.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
|
|
3606
|
+
longText: /* @__PURE__ */ React23.createElement(Textarea_default, { value, ...editModeComponentProps }),
|
|
3607
|
+
autocomplete: /* @__PURE__ */ React23.createElement(
|
|
3575
3608
|
Autocomplete_default,
|
|
3576
3609
|
{
|
|
3577
3610
|
value,
|
|
@@ -3579,7 +3612,7 @@ var BodyCell = (props) => {
|
|
|
3579
3612
|
...editModeComponentProps
|
|
3580
3613
|
}
|
|
3581
3614
|
),
|
|
3582
|
-
select: /* @__PURE__ */
|
|
3615
|
+
select: /* @__PURE__ */ React23.createElement(
|
|
3583
3616
|
Select_default,
|
|
3584
3617
|
{
|
|
3585
3618
|
value,
|
|
@@ -3590,13 +3623,13 @@ var BodyCell = (props) => {
|
|
|
3590
3623
|
}[type || "text"];
|
|
3591
3624
|
}, [value, editModeComponentProps, type, MemoizedRenderEditCell, params]);
|
|
3592
3625
|
const linkComponentFromProps = props.component;
|
|
3593
|
-
const ReadModeComponent =
|
|
3626
|
+
const ReadModeComponent = useMemo9(() => {
|
|
3594
3627
|
if (MemoizedRenderCell) {
|
|
3595
3628
|
return createElement(MemoizedRenderCell, params);
|
|
3596
3629
|
}
|
|
3597
3630
|
const innerText = value;
|
|
3598
3631
|
const typedComponent = {
|
|
3599
|
-
link:
|
|
3632
|
+
link: React23.createElement(linkComponentFromProps || Link, {
|
|
3600
3633
|
children: innerText,
|
|
3601
3634
|
...componentProps
|
|
3602
3635
|
})
|
|
@@ -3604,22 +3637,22 @@ var BodyCell = (props) => {
|
|
|
3604
3637
|
return typedComponent || innerText;
|
|
3605
3638
|
}, [value, MemoizedRenderCell, params, type, componentProps, linkComponentFromProps]);
|
|
3606
3639
|
const getActions = props.getActions;
|
|
3607
|
-
const CellComponent =
|
|
3640
|
+
const CellComponent = useMemo9(() => {
|
|
3608
3641
|
if (type === "actions") {
|
|
3609
|
-
return /* @__PURE__ */
|
|
3642
|
+
return /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
|
|
3610
3643
|
}
|
|
3611
3644
|
return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
|
|
3612
3645
|
}, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
|
|
3613
|
-
const showTooltip =
|
|
3646
|
+
const showTooltip = useMemo9(() => noWrap && type === "longText", [noWrap, type]);
|
|
3614
3647
|
const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
|
|
3615
|
-
const computedCellClassName =
|
|
3648
|
+
const computedCellClassName = useMemo9(
|
|
3616
3649
|
() => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
|
|
3617
3650
|
[cellClassName, params]
|
|
3618
3651
|
);
|
|
3619
3652
|
useEffect5(() => {
|
|
3620
3653
|
setValue(row[field]);
|
|
3621
3654
|
}, [row, field]);
|
|
3622
|
-
return /* @__PURE__ */
|
|
3655
|
+
return /* @__PURE__ */ React23.createElement(
|
|
3623
3656
|
StyledTd,
|
|
3624
3657
|
{
|
|
3625
3658
|
ref: cellRef,
|
|
@@ -3636,8 +3669,8 @@ var BodyCell = (props) => {
|
|
|
3636
3669
|
},
|
|
3637
3670
|
className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
|
|
3638
3671
|
},
|
|
3639
|
-
|
|
3640
|
-
() => showTooltip ? /* @__PURE__ */
|
|
3672
|
+
useMemo9(
|
|
3673
|
+
() => showTooltip ? /* @__PURE__ */ React23.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
|
|
3641
3674
|
[CellComponent, showTooltip]
|
|
3642
3675
|
)
|
|
3643
3676
|
);
|
|
@@ -3645,7 +3678,7 @@ var BodyCell = (props) => {
|
|
|
3645
3678
|
var BodyRow = memo(
|
|
3646
3679
|
(props) => {
|
|
3647
3680
|
const { tableId, columns, rowId, editMode, noWrap, row } = props;
|
|
3648
|
-
return /* @__PURE__ */
|
|
3681
|
+
return /* @__PURE__ */ React23.createElement(React23.Fragment, null, columns.map((column, i) => /* @__PURE__ */ React23.createElement(
|
|
3649
3682
|
BodyCell,
|
|
3650
3683
|
{
|
|
3651
3684
|
key: `${rowId}_${column.field.toString()}_${i}`,
|
|
@@ -3689,9 +3722,9 @@ var VirtualizedTableRow = memo(StyledTableRow2, (prevProps, nextProps) => {
|
|
|
3689
3722
|
});
|
|
3690
3723
|
|
|
3691
3724
|
// src/components/DataTable/hooks.ts
|
|
3692
|
-
import { useState as
|
|
3725
|
+
import { useState as useState10, useLayoutEffect as useLayoutEffect2, useRef as useRef6, useMemo as useMemo10, useCallback as useCallback11, useEffect as useEffect6, createRef } from "react";
|
|
3693
3726
|
function useColumnWidths(columnsByField) {
|
|
3694
|
-
const [widths, setWidths] =
|
|
3727
|
+
const [widths, setWidths] = useState10({});
|
|
3695
3728
|
const roRef = useRef6();
|
|
3696
3729
|
useLayoutEffect2(() => {
|
|
3697
3730
|
if (roRef.current) roRef.current.disconnect();
|
|
@@ -3752,31 +3785,31 @@ function useDataTableRenderer({
|
|
|
3752
3785
|
}
|
|
3753
3786
|
const onSelectionModelChangeRef = useRef6(onSelectionModelChange);
|
|
3754
3787
|
onSelectionModelChangeRef.current = onSelectionModelChange;
|
|
3755
|
-
const [focusedRowId, setFocusedRowId] =
|
|
3756
|
-
const [selectionAnchor, setSelectionAnchor] =
|
|
3788
|
+
const [focusedRowId, setFocusedRowId] = useState10(null);
|
|
3789
|
+
const [selectionAnchor, setSelectionAnchor] = useState10(null);
|
|
3757
3790
|
const [sortModel, setSortModel] = useControlledState(
|
|
3758
3791
|
controlledSortModel,
|
|
3759
3792
|
initialState?.sorting?.sortModel ?? [],
|
|
3760
|
-
|
|
3793
|
+
useCallback11((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
|
|
3761
3794
|
);
|
|
3762
3795
|
const [visibilityModel] = useControlledState(
|
|
3763
3796
|
columnVisibilityModel,
|
|
3764
3797
|
initialState?.columns?.columnVisibilityModel ?? {},
|
|
3765
|
-
|
|
3798
|
+
useCallback11(
|
|
3766
3799
|
(model) => onColumnVisibilityModelChange?.(model),
|
|
3767
3800
|
[onColumnVisibilityModelChange]
|
|
3768
3801
|
)
|
|
3769
3802
|
);
|
|
3770
|
-
const reorderedColumns =
|
|
3803
|
+
const reorderedColumns = useMemo10(() => {
|
|
3771
3804
|
if (!columnGroupingModel) return columnsProp;
|
|
3772
3805
|
return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
|
|
3773
3806
|
}, [columnsProp, columnGroupingModel]);
|
|
3774
|
-
const visibleColumns =
|
|
3807
|
+
const visibleColumns = useMemo10(
|
|
3775
3808
|
() => reorderedColumns.filter((col) => visibilityModel[col.field] !== false),
|
|
3776
3809
|
[reorderedColumns, visibilityModel]
|
|
3777
3810
|
);
|
|
3778
|
-
const visibleFieldSet =
|
|
3779
|
-
const tableMinWidth =
|
|
3811
|
+
const visibleFieldSet = useMemo10(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
|
|
3812
|
+
const tableMinWidth = useMemo10(() => {
|
|
3780
3813
|
const DEFAULT_MIN = 50;
|
|
3781
3814
|
let total = checkboxSelection ? 40 : 0;
|
|
3782
3815
|
for (const col of visibleColumns) {
|
|
@@ -3784,7 +3817,7 @@ function useDataTableRenderer({
|
|
|
3784
3817
|
}
|
|
3785
3818
|
return total;
|
|
3786
3819
|
}, [visibleColumns, checkboxSelection]);
|
|
3787
|
-
const allColumnsByField =
|
|
3820
|
+
const allColumnsByField = useMemo10(
|
|
3788
3821
|
() => reorderedColumns.reduce(
|
|
3789
3822
|
(acc, curr) => ({
|
|
3790
3823
|
...acc,
|
|
@@ -3794,7 +3827,7 @@ function useDataTableRenderer({
|
|
|
3794
3827
|
),
|
|
3795
3828
|
[reorderedColumns]
|
|
3796
3829
|
);
|
|
3797
|
-
const visibleColumnsByField =
|
|
3830
|
+
const visibleColumnsByField = useMemo10(
|
|
3798
3831
|
() => visibleColumns.reduce(
|
|
3799
3832
|
(acc, curr) => ({
|
|
3800
3833
|
...acc,
|
|
@@ -3808,7 +3841,7 @@ function useDataTableRenderer({
|
|
|
3808
3841
|
),
|
|
3809
3842
|
[visibleColumns]
|
|
3810
3843
|
);
|
|
3811
|
-
const sortComparator =
|
|
3844
|
+
const sortComparator = useCallback11(
|
|
3812
3845
|
(rowA, rowB) => {
|
|
3813
3846
|
for (const sort of sortModel) {
|
|
3814
3847
|
const { field, sort: direction } = sort;
|
|
@@ -3837,33 +3870,33 @@ function useDataTableRenderer({
|
|
|
3837
3870
|
},
|
|
3838
3871
|
[sortModel, allColumnsByField]
|
|
3839
3872
|
);
|
|
3840
|
-
const rows =
|
|
3873
|
+
const rows = useMemo10(
|
|
3841
3874
|
() => sortModel.length ? [..._rows].sort(sortComparator) : _rows,
|
|
3842
3875
|
[_rows, sortModel, sortComparator]
|
|
3843
3876
|
);
|
|
3844
|
-
const sortOrder =
|
|
3877
|
+
const sortOrder = useMemo10(
|
|
3845
3878
|
() => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
|
|
3846
3879
|
[_sortOrder]
|
|
3847
3880
|
);
|
|
3848
|
-
const [page, setPage] =
|
|
3881
|
+
const [page, setPage] = useState10(paginationModel?.page || 1);
|
|
3849
3882
|
const pageSize = paginationModel?.pageSize || 20;
|
|
3850
|
-
const getId =
|
|
3883
|
+
const getId = useCallback11(
|
|
3851
3884
|
(row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
|
|
3852
3885
|
[_getId, page, pageSize]
|
|
3853
3886
|
);
|
|
3854
|
-
const selectedModelSet =
|
|
3855
|
-
const dataInPage =
|
|
3887
|
+
const selectedModelSet = useMemo10(() => new Set(selectionModel || []), [selectionModel]);
|
|
3888
|
+
const dataInPage = useMemo10(
|
|
3856
3889
|
() => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
|
|
3857
3890
|
[rows, page, pageSize, paginationMode, pagination]
|
|
3858
3891
|
);
|
|
3859
|
-
const selectableDataInPage =
|
|
3892
|
+
const selectableDataInPage = useMemo10(
|
|
3860
3893
|
() => dataInPage.filter((row, i) => {
|
|
3861
3894
|
if (!isRowSelectable) return true;
|
|
3862
3895
|
return isRowSelectable({ row, id: getId(row, i) });
|
|
3863
3896
|
}),
|
|
3864
3897
|
[dataInPage, isRowSelectable, getId]
|
|
3865
3898
|
);
|
|
3866
|
-
const handleRangeSelection =
|
|
3899
|
+
const handleRangeSelection = useCallback11(
|
|
3867
3900
|
(anchor, targetIndex) => {
|
|
3868
3901
|
const startIndex = Math.min(anchor.rowIndex, targetIndex);
|
|
3869
3902
|
const endIndex = Math.max(anchor.rowIndex, targetIndex);
|
|
@@ -3886,38 +3919,38 @@ function useDataTableRenderer({
|
|
|
3886
3919
|
},
|
|
3887
3920
|
[dataInPage, getId, isRowSelectable, selectionModel, onSelectionModelChange]
|
|
3888
3921
|
);
|
|
3889
|
-
const isAllSelected =
|
|
3922
|
+
const isAllSelected = useMemo10(
|
|
3890
3923
|
() => selectableDataInPage.length > 0 && selectableDataInPage.every((row, i) => selectedModelSet.has(getId(row, i))),
|
|
3891
3924
|
[selectableDataInPage, selectedModelSet, getId]
|
|
3892
3925
|
);
|
|
3893
3926
|
const rowCount = totalRowsProp || rows.length;
|
|
3894
|
-
const selectableRowCount =
|
|
3927
|
+
const selectableRowCount = useMemo10(() => {
|
|
3895
3928
|
if (!isRowSelectable) return rowCount;
|
|
3896
3929
|
return rows.filter((row, i) => isRowSelectable({ row, id: getId(row, i) })).length;
|
|
3897
3930
|
}, [rows, isRowSelectable, getId, rowCount]);
|
|
3898
|
-
const isTotalSelected =
|
|
3931
|
+
const isTotalSelected = useMemo10(
|
|
3899
3932
|
() => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
|
|
3900
3933
|
[_isTotalSelected, selectionModel, selectableRowCount]
|
|
3901
3934
|
);
|
|
3902
3935
|
const columnWidths = useColumnWidths(visibleColumnsByField);
|
|
3903
|
-
const getWidth =
|
|
3936
|
+
const getWidth = useCallback11(
|
|
3904
3937
|
(f) => columnWidths[f] ?? allColumnsByField[f]?.width ?? // Column prop 으로 지정된 width
|
|
3905
3938
|
allColumnsByField[f]?.minWidth ?? 0,
|
|
3906
3939
|
[columnWidths, allColumnsByField]
|
|
3907
3940
|
);
|
|
3908
|
-
const processedColumnGroups =
|
|
3941
|
+
const processedColumnGroups = useMemo10(() => {
|
|
3909
3942
|
if (!columnGroupingModel) return null;
|
|
3910
3943
|
return calculateColumnGroups(columnGroupingModel, visibleColumns, visibleFieldSet);
|
|
3911
3944
|
}, [columnGroupingModel, visibleColumns, visibleFieldSet]);
|
|
3912
|
-
const effectivePinnedLeft =
|
|
3945
|
+
const effectivePinnedLeft = useMemo10(
|
|
3913
3946
|
() => pinnedColumns?.left?.filter((f) => visibleFieldSet.has(f)),
|
|
3914
3947
|
[pinnedColumns?.left, visibleFieldSet]
|
|
3915
3948
|
);
|
|
3916
|
-
const effectivePinnedRight =
|
|
3949
|
+
const effectivePinnedRight = useMemo10(
|
|
3917
3950
|
() => pinnedColumns?.right?.filter((f) => visibleFieldSet.has(f)),
|
|
3918
3951
|
[pinnedColumns?.right, visibleFieldSet]
|
|
3919
3952
|
);
|
|
3920
|
-
const columns =
|
|
3953
|
+
const columns = useMemo10(() => {
|
|
3921
3954
|
const baseColumns = visibleColumns.length > 0 ? visibleColumns : reorderedColumns.length > 0 ? [] : Object.keys(rows[0] || {}).map((key) => ({
|
|
3922
3955
|
field: key
|
|
3923
3956
|
}));
|
|
@@ -3952,14 +3985,14 @@ function useDataTableRenderer({
|
|
|
3952
3985
|
sortOrder,
|
|
3953
3986
|
getWidth
|
|
3954
3987
|
]);
|
|
3955
|
-
const handlePageChange =
|
|
3988
|
+
const handlePageChange = useCallback11(
|
|
3956
3989
|
(newPage) => {
|
|
3957
3990
|
setPage(newPage);
|
|
3958
3991
|
onPaginationModelChange?.({ page: newPage, pageSize });
|
|
3959
3992
|
},
|
|
3960
3993
|
[onPaginationModelChange, pageSize]
|
|
3961
3994
|
);
|
|
3962
|
-
const handleSortChange =
|
|
3995
|
+
const handleSortChange = useCallback11(
|
|
3963
3996
|
(props) => {
|
|
3964
3997
|
const { field, currentSort, multiple } = props;
|
|
3965
3998
|
const column = allColumnsByField[field];
|
|
@@ -4004,7 +4037,7 @@ function useDataTableRenderer({
|
|
|
4004
4037
|
prevRowsRef.current = _rows;
|
|
4005
4038
|
}
|
|
4006
4039
|
}, [_rows]);
|
|
4007
|
-
const handleAutoFit =
|
|
4040
|
+
const handleAutoFit = useCallback11(
|
|
4008
4041
|
(field) => {
|
|
4009
4042
|
const colDef = visibleColumnsByField[field];
|
|
4010
4043
|
if (!colDef?.headerRef.current) return;
|
|
@@ -4037,8 +4070,8 @@ function useDataTableRenderer({
|
|
|
4037
4070
|
handleAutoFit,
|
|
4038
4071
|
isAllSelected,
|
|
4039
4072
|
isTotalSelected,
|
|
4040
|
-
isSelectedRow:
|
|
4041
|
-
isRowSelectable:
|
|
4073
|
+
isSelectedRow: useCallback11((model) => selectedModelSet.has(model), [selectedModelSet]),
|
|
4074
|
+
isRowSelectable: useCallback11(
|
|
4042
4075
|
(rowId, row) => {
|
|
4043
4076
|
if (!isRowSelectable) return true;
|
|
4044
4077
|
return isRowSelectable({ row, id: rowId });
|
|
@@ -4046,13 +4079,13 @@ function useDataTableRenderer({
|
|
|
4046
4079
|
[isRowSelectable]
|
|
4047
4080
|
),
|
|
4048
4081
|
focusedRowId,
|
|
4049
|
-
onRowFocus:
|
|
4082
|
+
onRowFocus: useCallback11((rowId) => {
|
|
4050
4083
|
setFocusedRowId(rowId);
|
|
4051
4084
|
}, []),
|
|
4052
|
-
onAllCheckboxChange:
|
|
4085
|
+
onAllCheckboxChange: useCallback11(() => {
|
|
4053
4086
|
onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
|
|
4054
4087
|
}, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
|
|
4055
|
-
onCheckboxChange:
|
|
4088
|
+
onCheckboxChange: useCallback11(
|
|
4056
4089
|
(event, selectedModel) => {
|
|
4057
4090
|
const isShiftClick = "shiftKey" in event && event.shiftKey;
|
|
4058
4091
|
const rowIndex = dataInPage.findIndex((row, i) => getId(row, i) === selectedModel);
|
|
@@ -4086,7 +4119,7 @@ function useDataTableRenderer({
|
|
|
4086
4119
|
columns,
|
|
4087
4120
|
tableMinWidth,
|
|
4088
4121
|
processedColumnGroups,
|
|
4089
|
-
onTotalSelect:
|
|
4122
|
+
onTotalSelect: useCallback11(() => {
|
|
4090
4123
|
const selectableRows = rows.filter((row, i) => {
|
|
4091
4124
|
if (!isRowSelectable) return true;
|
|
4092
4125
|
return isRowSelectable({ row, id: getId(row, i) });
|
|
@@ -4100,11 +4133,11 @@ function useDataTableRenderer({
|
|
|
4100
4133
|
}
|
|
4101
4134
|
|
|
4102
4135
|
// src/components/Table/Table.tsx
|
|
4103
|
-
import
|
|
4136
|
+
import React24 from "react";
|
|
4104
4137
|
import { Table as JoyTable } from "@mui/joy";
|
|
4105
4138
|
var Table = (props) => {
|
|
4106
4139
|
const { children, ...inheritProps } = props;
|
|
4107
|
-
return /* @__PURE__ */
|
|
4140
|
+
return /* @__PURE__ */ React24.createElement(JoyTable, { ...inheritProps }, children);
|
|
4108
4141
|
};
|
|
4109
4142
|
Table.displayName = "Table";
|
|
4110
4143
|
function TableHead(props) {
|
|
@@ -4115,7 +4148,7 @@ function TableHead(props) {
|
|
|
4115
4148
|
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
4116
4149
|
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
4117
4150
|
} = props;
|
|
4118
|
-
return /* @__PURE__ */
|
|
4151
|
+
return /* @__PURE__ */ React24.createElement("thead", null, /* @__PURE__ */ React24.createElement("tr", null, showCheckbox && /* @__PURE__ */ React24.createElement(
|
|
4119
4152
|
"th",
|
|
4120
4153
|
{
|
|
4121
4154
|
style: {
|
|
@@ -4123,8 +4156,8 @@ function TableHead(props) {
|
|
|
4123
4156
|
textAlign: "center"
|
|
4124
4157
|
}
|
|
4125
4158
|
},
|
|
4126
|
-
/* @__PURE__ */
|
|
4127
|
-
), headCells.map((headCell) => /* @__PURE__ */
|
|
4159
|
+
/* @__PURE__ */ React24.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
|
|
4160
|
+
), headCells.map((headCell) => /* @__PURE__ */ React24.createElement(
|
|
4128
4161
|
"th",
|
|
4129
4162
|
{
|
|
4130
4163
|
key: headCell.label,
|
|
@@ -4149,15 +4182,15 @@ function TableBody(props) {
|
|
|
4149
4182
|
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
4150
4183
|
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
4151
4184
|
} = props;
|
|
4152
|
-
return /* @__PURE__ */
|
|
4185
|
+
return /* @__PURE__ */ React24.createElement("tbody", null, rows.map((row, rowIndex) => /* @__PURE__ */ React24.createElement("tr", { key: `table-row-${rowIndex}` }, showCheckbox && /* @__PURE__ */ React24.createElement(
|
|
4153
4186
|
"td",
|
|
4154
4187
|
{
|
|
4155
4188
|
style: {
|
|
4156
4189
|
textAlign: "center"
|
|
4157
4190
|
}
|
|
4158
4191
|
},
|
|
4159
|
-
/* @__PURE__ */
|
|
4160
|
-
), cellOrder.map((cellKey) => /* @__PURE__ */
|
|
4192
|
+
/* @__PURE__ */ React24.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
|
|
4193
|
+
), cellOrder.map((cellKey) => /* @__PURE__ */ React24.createElement(
|
|
4161
4194
|
"td",
|
|
4162
4195
|
{
|
|
4163
4196
|
key: cellKey,
|
|
@@ -4171,12 +4204,12 @@ function TableBody(props) {
|
|
|
4171
4204
|
TableBody.displayName = "TableBody";
|
|
4172
4205
|
|
|
4173
4206
|
// src/components/Pagination/Pagination.tsx
|
|
4174
|
-
import
|
|
4207
|
+
import React25, { useCallback as useCallback12, useEffect as useEffect7 } from "react";
|
|
4175
4208
|
import PreviousIcon from "@mui/icons-material/ChevronLeftRounded";
|
|
4176
4209
|
import NextIcon from "@mui/icons-material/ChevronRightRounded";
|
|
4177
4210
|
import FirstPageIcon from "@mui/icons-material/FirstPageRounded";
|
|
4178
4211
|
import LastPageIcon from "@mui/icons-material/LastPageRounded";
|
|
4179
|
-
import { styled as styled13 } from "@mui/joy";
|
|
4212
|
+
import { styled as styled13, useThemeProps as useThemeProps6 } from "@mui/joy";
|
|
4180
4213
|
var PaginationButton = styled13(Button_default, {
|
|
4181
4214
|
name: "Pagination",
|
|
4182
4215
|
slot: "button"
|
|
@@ -4227,7 +4260,8 @@ var PaginationContainer = styled13(Stack_default, {
|
|
|
4227
4260
|
lg: theme.spacing(2)
|
|
4228
4261
|
}[size]
|
|
4229
4262
|
}));
|
|
4230
|
-
function Pagination(
|
|
4263
|
+
function Pagination(inProps) {
|
|
4264
|
+
const props = useThemeProps6({ props: inProps, name: "Pagination" });
|
|
4231
4265
|
const {
|
|
4232
4266
|
paginationModel: _paginationModel,
|
|
4233
4267
|
defaultPaginationModel = { page: 1, pageSize: 25 },
|
|
@@ -4240,7 +4274,7 @@ function Pagination(props) {
|
|
|
4240
4274
|
const [paginationModel, setPaginationModel] = useControlledState(
|
|
4241
4275
|
_paginationModel,
|
|
4242
4276
|
defaultPaginationModel,
|
|
4243
|
-
|
|
4277
|
+
useCallback12(
|
|
4244
4278
|
(newPage) => {
|
|
4245
4279
|
onPageChange(newPage.page);
|
|
4246
4280
|
},
|
|
@@ -4266,7 +4300,7 @@ function Pagination(props) {
|
|
|
4266
4300
|
value: `${i + 1}`
|
|
4267
4301
|
}));
|
|
4268
4302
|
if (variant === "compact") {
|
|
4269
|
-
return /* @__PURE__ */
|
|
4303
|
+
return /* @__PURE__ */ React25.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ React25.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ React25.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ React25.createElement(
|
|
4270
4304
|
PaginationIconButton,
|
|
4271
4305
|
{
|
|
4272
4306
|
size,
|
|
@@ -4276,8 +4310,8 @@ function Pagination(props) {
|
|
|
4276
4310
|
disabled: paginationModel.page === firstPage,
|
|
4277
4311
|
"aria-label": "First page"
|
|
4278
4312
|
},
|
|
4279
|
-
/* @__PURE__ */
|
|
4280
|
-
), /* @__PURE__ */
|
|
4313
|
+
/* @__PURE__ */ React25.createElement(FirstPageIcon, null)
|
|
4314
|
+
), /* @__PURE__ */ React25.createElement(
|
|
4281
4315
|
PaginationIconButton,
|
|
4282
4316
|
{
|
|
4283
4317
|
size,
|
|
@@ -4287,8 +4321,8 @@ function Pagination(props) {
|
|
|
4287
4321
|
disabled: paginationModel.page === firstPage,
|
|
4288
4322
|
"aria-label": "Previous page"
|
|
4289
4323
|
},
|
|
4290
|
-
/* @__PURE__ */
|
|
4291
|
-
)), /* @__PURE__ */
|
|
4324
|
+
/* @__PURE__ */ React25.createElement(PreviousIcon, null)
|
|
4325
|
+
)), /* @__PURE__ */ React25.createElement(
|
|
4292
4326
|
Autocomplete_default,
|
|
4293
4327
|
{
|
|
4294
4328
|
size,
|
|
@@ -4307,7 +4341,7 @@ function Pagination(props) {
|
|
|
4307
4341
|
}[size]
|
|
4308
4342
|
}
|
|
4309
4343
|
}
|
|
4310
|
-
), /* @__PURE__ */
|
|
4344
|
+
), /* @__PURE__ */ React25.createElement(
|
|
4311
4345
|
Typography_default,
|
|
4312
4346
|
{
|
|
4313
4347
|
level: `body-${size}`,
|
|
@@ -4318,7 +4352,7 @@ function Pagination(props) {
|
|
|
4318
4352
|
},
|
|
4319
4353
|
"/ ",
|
|
4320
4354
|
lastPage
|
|
4321
|
-
), /* @__PURE__ */
|
|
4355
|
+
), /* @__PURE__ */ React25.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ React25.createElement(
|
|
4322
4356
|
PaginationIconButton,
|
|
4323
4357
|
{
|
|
4324
4358
|
size,
|
|
@@ -4328,8 +4362,8 @@ function Pagination(props) {
|
|
|
4328
4362
|
disabled: paginationModel.page === lastPage,
|
|
4329
4363
|
"aria-label": "Next page"
|
|
4330
4364
|
},
|
|
4331
|
-
/* @__PURE__ */
|
|
4332
|
-
), /* @__PURE__ */
|
|
4365
|
+
/* @__PURE__ */ React25.createElement(NextIcon, null)
|
|
4366
|
+
), /* @__PURE__ */ React25.createElement(
|
|
4333
4367
|
PaginationIconButton,
|
|
4334
4368
|
{
|
|
4335
4369
|
size,
|
|
@@ -4339,10 +4373,10 @@ function Pagination(props) {
|
|
|
4339
4373
|
disabled: paginationModel.page === lastPage,
|
|
4340
4374
|
"aria-label": "Last page"
|
|
4341
4375
|
},
|
|
4342
|
-
/* @__PURE__ */
|
|
4376
|
+
/* @__PURE__ */ React25.createElement(LastPageIcon, null)
|
|
4343
4377
|
))));
|
|
4344
4378
|
}
|
|
4345
|
-
return /* @__PURE__ */
|
|
4379
|
+
return /* @__PURE__ */ React25.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ React25.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ React25.createElement(
|
|
4346
4380
|
PaginationIconButton,
|
|
4347
4381
|
{
|
|
4348
4382
|
size,
|
|
@@ -4352,8 +4386,8 @@ function Pagination(props) {
|
|
|
4352
4386
|
disabled: paginationModel.page === firstPage,
|
|
4353
4387
|
"aria-label": "Previous page"
|
|
4354
4388
|
},
|
|
4355
|
-
/* @__PURE__ */
|
|
4356
|
-
), paginationModel.page !== firstPage && /* @__PURE__ */
|
|
4389
|
+
/* @__PURE__ */ React25.createElement(PreviousIcon, null)
|
|
4390
|
+
), paginationModel.page !== firstPage && /* @__PURE__ */ React25.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ React25.createElement(
|
|
4357
4391
|
PaginationButton,
|
|
4358
4392
|
{
|
|
4359
4393
|
size,
|
|
@@ -4363,7 +4397,7 @@ function Pagination(props) {
|
|
|
4363
4397
|
"aria-label": "More previous pages"
|
|
4364
4398
|
},
|
|
4365
4399
|
"..."
|
|
4366
|
-
), beforePages.map((p) => /* @__PURE__ */
|
|
4400
|
+
), beforePages.map((p) => /* @__PURE__ */ React25.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ React25.createElement(PaginationButton, { active: "active", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ React25.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ React25.createElement(
|
|
4367
4401
|
PaginationButton,
|
|
4368
4402
|
{
|
|
4369
4403
|
size,
|
|
@@ -4373,7 +4407,7 @@ function Pagination(props) {
|
|
|
4373
4407
|
onClick: () => handlePageChange(paginationModel.page + 3)
|
|
4374
4408
|
},
|
|
4375
4409
|
"..."
|
|
4376
|
-
), paginationModel.page !== lastPage && /* @__PURE__ */
|
|
4410
|
+
), paginationModel.page !== lastPage && /* @__PURE__ */ React25.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ React25.createElement(
|
|
4377
4411
|
PaginationIconButton,
|
|
4378
4412
|
{
|
|
4379
4413
|
size,
|
|
@@ -4383,7 +4417,7 @@ function Pagination(props) {
|
|
|
4383
4417
|
disabled: paginationModel.page === lastPage,
|
|
4384
4418
|
"aria-label": "Next page"
|
|
4385
4419
|
},
|
|
4386
|
-
/* @__PURE__ */
|
|
4420
|
+
/* @__PURE__ */ React25.createElement(NextIcon, null)
|
|
4387
4421
|
)));
|
|
4388
4422
|
}
|
|
4389
4423
|
Pagination.displayName = "Pagination";
|
|
@@ -4495,10 +4529,10 @@ function Component(props, apiRef) {
|
|
|
4495
4529
|
measureElement: (element) => element.clientHeight,
|
|
4496
4530
|
overscan: 10
|
|
4497
4531
|
});
|
|
4498
|
-
const paginationModel =
|
|
4532
|
+
const paginationModel = useMemo11(() => ({ page, pageSize }), [page, pageSize]);
|
|
4499
4533
|
const columnsKey = getObjectVersion(columns);
|
|
4500
|
-
const headerCheckboxElement =
|
|
4501
|
-
() => /* @__PURE__ */
|
|
4534
|
+
const headerCheckboxElement = useMemo11(
|
|
4535
|
+
() => /* @__PURE__ */ React26.createElement(
|
|
4502
4536
|
RenderCheckbox,
|
|
4503
4537
|
{
|
|
4504
4538
|
onChange: onAllCheckboxChange,
|
|
@@ -4522,20 +4556,20 @@ function Component(props, apiRef) {
|
|
|
4522
4556
|
const virtualizedItems = virtualizer.getVirtualItems();
|
|
4523
4557
|
const showNoRowsOverlay = !loading && rowCount === 0;
|
|
4524
4558
|
const totalColCount = Math.max(1, columns.length + (checkboxSelection ? 1 : 0));
|
|
4525
|
-
const getRowClickHandler =
|
|
4559
|
+
const getRowClickHandler = useCallback13(
|
|
4526
4560
|
(row, rowId) => (e) => {
|
|
4527
4561
|
onRowClick?.({ row, rowId }, e);
|
|
4528
4562
|
checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
|
|
4529
4563
|
},
|
|
4530
4564
|
[onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
|
|
4531
4565
|
);
|
|
4532
|
-
const getRowFocusHandler =
|
|
4566
|
+
const getRowFocusHandler = useCallback13(
|
|
4533
4567
|
(rowId) => () => {
|
|
4534
4568
|
onRowFocus(rowId);
|
|
4535
4569
|
},
|
|
4536
4570
|
[onRowFocus]
|
|
4537
4571
|
);
|
|
4538
|
-
const getCheckboxClickHandler =
|
|
4572
|
+
const getCheckboxClickHandler = useCallback13(
|
|
4539
4573
|
(rowId, row) => (e) => {
|
|
4540
4574
|
e.stopPropagation();
|
|
4541
4575
|
if (isRowSelectableCheck(rowId, row)) {
|
|
@@ -4545,7 +4579,7 @@ function Component(props, apiRef) {
|
|
|
4545
4579
|
},
|
|
4546
4580
|
[onCheckboxChange, isRowSelectableCheck, onRowFocus]
|
|
4547
4581
|
);
|
|
4548
|
-
const handleTableKeyDown =
|
|
4582
|
+
const handleTableKeyDown = useCallback13(
|
|
4549
4583
|
(e) => {
|
|
4550
4584
|
const supportedKeys = ["ArrowUp", "ArrowDown", " ", "Home", "End", "PageUp", "PageDown"];
|
|
4551
4585
|
if (!supportedKeys.includes(e.key)) return;
|
|
@@ -4651,7 +4685,7 @@ function Component(props, apiRef) {
|
|
|
4651
4685
|
});
|
|
4652
4686
|
}
|
|
4653
4687
|
}));
|
|
4654
|
-
return /* @__PURE__ */
|
|
4688
|
+
return /* @__PURE__ */ React26.createElement(
|
|
4655
4689
|
Box_default,
|
|
4656
4690
|
{
|
|
4657
4691
|
sx: {
|
|
@@ -4661,7 +4695,7 @@ function Component(props, apiRef) {
|
|
|
4661
4695
|
flexDirection: "column"
|
|
4662
4696
|
}
|
|
4663
4697
|
},
|
|
4664
|
-
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */
|
|
4698
|
+
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ React26.createElement(
|
|
4665
4699
|
Stack_default,
|
|
4666
4700
|
{
|
|
4667
4701
|
direction: "row",
|
|
@@ -4671,10 +4705,10 @@ function Component(props, apiRef) {
|
|
|
4671
4705
|
justifyContent: "space-between",
|
|
4672
4706
|
alignItems: "center"
|
|
4673
4707
|
},
|
|
4674
|
-
!!checkboxSelection && /* @__PURE__ */
|
|
4675
|
-
Toolbar && /* @__PURE__ */
|
|
4708
|
+
!!checkboxSelection && /* @__PURE__ */ React26.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ React26.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ React26.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ React26.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ React26.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React26.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ React26.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
|
|
4709
|
+
Toolbar && /* @__PURE__ */ React26.createElement(Toolbar, { ...toolbarProps || {} })
|
|
4676
4710
|
),
|
|
4677
|
-
/* @__PURE__ */
|
|
4711
|
+
/* @__PURE__ */ React26.createElement(
|
|
4678
4712
|
Sheet_default,
|
|
4679
4713
|
{
|
|
4680
4714
|
variant: "outlined",
|
|
@@ -4695,14 +4729,14 @@ function Component(props, apiRef) {
|
|
|
4695
4729
|
ref: parentRef,
|
|
4696
4730
|
...backgroundProps
|
|
4697
4731
|
},
|
|
4698
|
-
/* @__PURE__ */
|
|
4732
|
+
/* @__PURE__ */ React26.createElement(Table, { ...innerProps, sx: { ...innerProps.sx, minWidth: tableMinWidth } }, /* @__PURE__ */ React26.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ React26.createElement(
|
|
4699
4733
|
"col",
|
|
4700
4734
|
{
|
|
4701
4735
|
style: {
|
|
4702
4736
|
width: "40px"
|
|
4703
4737
|
}
|
|
4704
4738
|
}
|
|
4705
|
-
), columns.map((c) => /* @__PURE__ */
|
|
4739
|
+
), columns.map((c) => /* @__PURE__ */ React26.createElement(
|
|
4706
4740
|
"col",
|
|
4707
4741
|
{
|
|
4708
4742
|
ref: c.tableColRef,
|
|
@@ -4712,7 +4746,7 @@ function Component(props, apiRef) {
|
|
|
4712
4746
|
minWidth: c.minWidth ?? "50px"
|
|
4713
4747
|
}
|
|
4714
4748
|
}
|
|
4715
|
-
))), /* @__PURE__ */
|
|
4749
|
+
))), /* @__PURE__ */ React26.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.length > 0 && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ React26.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ React26.createElement(
|
|
4716
4750
|
"th",
|
|
4717
4751
|
{
|
|
4718
4752
|
rowSpan: processedColumnGroups.maxLevel + 2,
|
|
@@ -4723,12 +4757,12 @@ function Component(props, apiRef) {
|
|
|
4723
4757
|
}
|
|
4724
4758
|
},
|
|
4725
4759
|
headerCheckboxElement
|
|
4726
|
-
), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */
|
|
4760
|
+
), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ React26.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.filter((g) => g.colspan > 0).map((group, groupIndex) => {
|
|
4727
4761
|
const nextGroup = levelGroups[groupIndex + 1];
|
|
4728
4762
|
const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
|
|
4729
4763
|
const params = { groupId: group.groupId };
|
|
4730
4764
|
const computedHeaderClassName = group.headerClassName ? typeof group.headerClassName === "function" ? group.headerClassName(params) : group.headerClassName : void 0;
|
|
4731
|
-
return /* @__PURE__ */
|
|
4765
|
+
return /* @__PURE__ */ React26.createElement(Fragment2, { key: group.groupId }, /* @__PURE__ */ React26.createElement(
|
|
4732
4766
|
"th",
|
|
4733
4767
|
{
|
|
4734
4768
|
colSpan: group.colspan,
|
|
@@ -4740,8 +4774,8 @@ function Component(props, apiRef) {
|
|
|
4740
4774
|
className: computedHeaderClassName
|
|
4741
4775
|
},
|
|
4742
4776
|
group.headerName ?? group.groupId
|
|
4743
|
-
), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */
|
|
4744
|
-
}))), /* @__PURE__ */
|
|
4777
|
+
), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ React26.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
|
|
4778
|
+
}))), /* @__PURE__ */ React26.createElement("tr", null, (!processedColumnGroups || processedColumnGroups.groups.length === 0) && checkboxSelection && /* @__PURE__ */ React26.createElement(
|
|
4745
4779
|
"th",
|
|
4746
4780
|
{
|
|
4747
4781
|
style: {
|
|
@@ -4752,7 +4786,7 @@ function Component(props, apiRef) {
|
|
|
4752
4786
|
headerCheckboxElement
|
|
4753
4787
|
), columns.map((c, i) => (
|
|
4754
4788
|
// @ts-ignore
|
|
4755
|
-
/* @__PURE__ */
|
|
4789
|
+
/* @__PURE__ */ React26.createElement(
|
|
4756
4790
|
HeadCell2,
|
|
4757
4791
|
{
|
|
4758
4792
|
tableId,
|
|
@@ -4764,7 +4798,7 @@ function Component(props, apiRef) {
|
|
|
4764
4798
|
...c
|
|
4765
4799
|
}
|
|
4766
4800
|
)
|
|
4767
|
-
)))), /* @__PURE__ */
|
|
4801
|
+
)))), /* @__PURE__ */ React26.createElement(
|
|
4768
4802
|
VirtualizedTableBody,
|
|
4769
4803
|
{
|
|
4770
4804
|
ref: tableBodyRef,
|
|
@@ -4775,7 +4809,7 @@ function Component(props, apiRef) {
|
|
|
4775
4809
|
role: "rowgroup",
|
|
4776
4810
|
"aria-label": "DataTableBody"
|
|
4777
4811
|
},
|
|
4778
|
-
!!loading && /* @__PURE__ */
|
|
4812
|
+
!!loading && /* @__PURE__ */ React26.createElement(OverlayWrapper, null, /* @__PURE__ */ React26.createElement(
|
|
4779
4813
|
"td",
|
|
4780
4814
|
{
|
|
4781
4815
|
style: {
|
|
@@ -4784,7 +4818,7 @@ function Component(props, apiRef) {
|
|
|
4784
4818
|
overflow: "visible"
|
|
4785
4819
|
}
|
|
4786
4820
|
},
|
|
4787
|
-
/* @__PURE__ */
|
|
4821
|
+
/* @__PURE__ */ React26.createElement(
|
|
4788
4822
|
Box_default,
|
|
4789
4823
|
{
|
|
4790
4824
|
sx: {
|
|
@@ -4794,10 +4828,10 @@ function Component(props, apiRef) {
|
|
|
4794
4828
|
right: 0
|
|
4795
4829
|
}
|
|
4796
4830
|
},
|
|
4797
|
-
/* @__PURE__ */
|
|
4831
|
+
/* @__PURE__ */ React26.createElement(LoadingOverlay, null)
|
|
4798
4832
|
)
|
|
4799
4833
|
)),
|
|
4800
|
-
showNoRowsOverlay && /* @__PURE__ */
|
|
4834
|
+
showNoRowsOverlay && /* @__PURE__ */ React26.createElement("tr", null, /* @__PURE__ */ React26.createElement("td", { colSpan: totalColCount, style: { border: "none" } }, /* @__PURE__ */ React26.createElement(
|
|
4801
4835
|
Box_default,
|
|
4802
4836
|
{
|
|
4803
4837
|
sx: {
|
|
@@ -4807,14 +4841,14 @@ function Component(props, apiRef) {
|
|
|
4807
4841
|
minHeight: "150px"
|
|
4808
4842
|
}
|
|
4809
4843
|
},
|
|
4810
|
-
/* @__PURE__ */
|
|
4844
|
+
/* @__PURE__ */ React26.createElement(NoRowsOverlay, { ...noRowsOverlayProps })
|
|
4811
4845
|
))),
|
|
4812
4846
|
virtualizedItems.map((virtualizedRow, index) => {
|
|
4813
4847
|
const rowIndex = virtualizedRow.index;
|
|
4814
4848
|
const row = dataInPage[rowIndex];
|
|
4815
4849
|
const rowId = getId(row, rowIndex);
|
|
4816
4850
|
const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
|
|
4817
|
-
return /* @__PURE__ */
|
|
4851
|
+
return /* @__PURE__ */ React26.createElement(
|
|
4818
4852
|
VirtualizedTableRow,
|
|
4819
4853
|
{
|
|
4820
4854
|
key: virtualizedRow.key,
|
|
@@ -4834,7 +4868,7 @@ function Component(props, apiRef) {
|
|
|
4834
4868
|
transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
|
|
4835
4869
|
}
|
|
4836
4870
|
},
|
|
4837
|
-
checkboxSelection && /* @__PURE__ */
|
|
4871
|
+
checkboxSelection && /* @__PURE__ */ React26.createElement(
|
|
4838
4872
|
"th",
|
|
4839
4873
|
{
|
|
4840
4874
|
scope: "row",
|
|
@@ -4842,7 +4876,7 @@ function Component(props, apiRef) {
|
|
|
4842
4876
|
textAlign: "center"
|
|
4843
4877
|
}
|
|
4844
4878
|
},
|
|
4845
|
-
/* @__PURE__ */
|
|
4879
|
+
/* @__PURE__ */ React26.createElement(
|
|
4846
4880
|
RenderCheckbox,
|
|
4847
4881
|
{
|
|
4848
4882
|
onClick: getCheckboxClickHandler(rowId, row),
|
|
@@ -4853,7 +4887,7 @@ function Component(props, apiRef) {
|
|
|
4853
4887
|
}
|
|
4854
4888
|
)
|
|
4855
4889
|
),
|
|
4856
|
-
/* @__PURE__ */
|
|
4890
|
+
/* @__PURE__ */ React26.createElement(
|
|
4857
4891
|
BodyRow2,
|
|
4858
4892
|
{
|
|
4859
4893
|
tableId,
|
|
@@ -4866,9 +4900,9 @@ function Component(props, apiRef) {
|
|
|
4866
4900
|
)
|
|
4867
4901
|
);
|
|
4868
4902
|
})
|
|
4869
|
-
), Footer && /* @__PURE__ */
|
|
4903
|
+
), Footer && /* @__PURE__ */ React26.createElement(Footer, null))
|
|
4870
4904
|
),
|
|
4871
|
-
pagination && /* @__PURE__ */
|
|
4905
|
+
pagination && /* @__PURE__ */ React26.createElement(
|
|
4872
4906
|
Pagination_default,
|
|
4873
4907
|
{
|
|
4874
4908
|
pt: 2,
|
|
@@ -4885,10 +4919,10 @@ var DataTable = forwardRef7(Component);
|
|
|
4885
4919
|
DataTable.displayName = "DataTable";
|
|
4886
4920
|
|
|
4887
4921
|
// src/components/DateRangePicker/DateRangePicker.tsx
|
|
4888
|
-
import
|
|
4922
|
+
import React27, { forwardRef as forwardRef8, useCallback as useCallback14, useEffect as useEffect8, useImperativeHandle as useImperativeHandle3, useMemo as useMemo12, useRef as useRef8, useState as useState11 } from "react";
|
|
4889
4923
|
import { IMaskInput as IMaskInput2, IMask as IMask2 } from "react-imask";
|
|
4890
4924
|
import CalendarTodayIcon2 from "@mui/icons-material/CalendarToday";
|
|
4891
|
-
import { styled as styled14, useThemeProps as
|
|
4925
|
+
import { styled as styled14, useThemeProps as useThemeProps7 } from "@mui/joy";
|
|
4892
4926
|
import { FocusTrap as FocusTrap2, ClickAwayListener as ClickAwayListener2, Popper as Popper3 } from "@mui/base";
|
|
4893
4927
|
var hasAlphabeticMonth2 = (format) => /MMMM|MMM/.test(format);
|
|
4894
4928
|
var CalendarButton2 = styled14(IconButton_default, {
|
|
@@ -5027,9 +5061,9 @@ var parseDates = (str, format) => {
|
|
|
5027
5061
|
var formatToPattern2 = (format) => {
|
|
5028
5062
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
5029
5063
|
};
|
|
5030
|
-
var TextMaskAdapter5 =
|
|
5064
|
+
var TextMaskAdapter5 = React27.forwardRef(function TextMaskAdapter6(props, ref) {
|
|
5031
5065
|
const { onChange, format, ...other } = props;
|
|
5032
|
-
return /* @__PURE__ */
|
|
5066
|
+
return /* @__PURE__ */ React27.createElement(
|
|
5033
5067
|
IMaskInput2,
|
|
5034
5068
|
{
|
|
5035
5069
|
...other,
|
|
@@ -5064,7 +5098,7 @@ var TextMaskAdapter5 = React26.forwardRef(function TextMaskAdapter6(props, ref)
|
|
|
5064
5098
|
);
|
|
5065
5099
|
});
|
|
5066
5100
|
var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
5067
|
-
const props =
|
|
5101
|
+
const props = useThemeProps7({ props: inProps, name: "DateRangePicker" });
|
|
5068
5102
|
const {
|
|
5069
5103
|
onChange,
|
|
5070
5104
|
disabled,
|
|
@@ -5095,15 +5129,15 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5095
5129
|
const [value, setValue] = useControlledState(
|
|
5096
5130
|
props.value,
|
|
5097
5131
|
props.defaultValue || "",
|
|
5098
|
-
|
|
5132
|
+
useCallback14((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
5099
5133
|
);
|
|
5100
5134
|
const isAlphabeticDisplay = hasAlphabeticMonth2(displayFormat);
|
|
5101
|
-
const [displayValue, setDisplayValue] =
|
|
5135
|
+
const [displayValue, setDisplayValue] = useState11(
|
|
5102
5136
|
() => value ? formatValueString2(parseDates(value, format), displayFormat, locale) : ""
|
|
5103
5137
|
);
|
|
5104
|
-
const [anchorEl, setAnchorEl] =
|
|
5138
|
+
const [anchorEl, setAnchorEl] = useState11(null);
|
|
5105
5139
|
const open = Boolean(anchorEl);
|
|
5106
|
-
const calendarValue =
|
|
5140
|
+
const calendarValue = useMemo12(
|
|
5107
5141
|
() => value ? parseDates(value, format) : void 0,
|
|
5108
5142
|
[value, format]
|
|
5109
5143
|
);
|
|
@@ -5125,7 +5159,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5125
5159
|
}
|
|
5126
5160
|
}, [anchorEl, innerRef]);
|
|
5127
5161
|
useImperativeHandle3(ref, () => innerRef.current, [innerRef]);
|
|
5128
|
-
const handleChange =
|
|
5162
|
+
const handleChange = useCallback14(
|
|
5129
5163
|
(event) => {
|
|
5130
5164
|
const value2 = event.target.value;
|
|
5131
5165
|
setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat, locale) : value2);
|
|
@@ -5133,7 +5167,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5133
5167
|
},
|
|
5134
5168
|
[displayFormat, format, locale, setValue]
|
|
5135
5169
|
);
|
|
5136
|
-
const handleDisplayInputChange =
|
|
5170
|
+
const handleDisplayInputChange = useCallback14(
|
|
5137
5171
|
(event) => {
|
|
5138
5172
|
if (event.target.value === "") {
|
|
5139
5173
|
handleChange({
|
|
@@ -5158,14 +5192,14 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5158
5192
|
},
|
|
5159
5193
|
[displayFormat, format, handleChange, props.name]
|
|
5160
5194
|
);
|
|
5161
|
-
const handleCalendarToggle =
|
|
5195
|
+
const handleCalendarToggle = useCallback14(
|
|
5162
5196
|
(event) => {
|
|
5163
5197
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
5164
5198
|
innerRef.current?.focus();
|
|
5165
5199
|
},
|
|
5166
5200
|
[anchorEl, setAnchorEl, innerRef]
|
|
5167
5201
|
);
|
|
5168
|
-
const handleCalendarChange =
|
|
5202
|
+
const handleCalendarChange = useCallback14(
|
|
5169
5203
|
([date1, date2]) => {
|
|
5170
5204
|
if (!date1 || !date2) return;
|
|
5171
5205
|
const formattedValue = formatValueString2([date1, date2], format);
|
|
@@ -5179,7 +5213,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5179
5213
|
},
|
|
5180
5214
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
|
|
5181
5215
|
);
|
|
5182
|
-
const handleInputMouseDown =
|
|
5216
|
+
const handleInputMouseDown = useCallback14(
|
|
5183
5217
|
(event) => {
|
|
5184
5218
|
if (inputReadOnly || isAlphabeticDisplay) {
|
|
5185
5219
|
event.preventDefault();
|
|
@@ -5188,7 +5222,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5188
5222
|
},
|
|
5189
5223
|
[inputReadOnly, isAlphabeticDisplay, buttonRef]
|
|
5190
5224
|
);
|
|
5191
|
-
const handlePresetClick =
|
|
5225
|
+
const handlePresetClick = useCallback14(
|
|
5192
5226
|
(presetValue) => {
|
|
5193
5227
|
if (props.value !== void 0) {
|
|
5194
5228
|
onChange?.({ target: { name: props.name, value: presetValue } });
|
|
@@ -5201,7 +5235,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5201
5235
|
},
|
|
5202
5236
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
|
|
5203
5237
|
);
|
|
5204
|
-
const isPresetDisabled =
|
|
5238
|
+
const isPresetDisabled = useCallback14(
|
|
5205
5239
|
(presetValue) => {
|
|
5206
5240
|
try {
|
|
5207
5241
|
const dates = parseDates(presetValue, format);
|
|
@@ -5220,7 +5254,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5220
5254
|
},
|
|
5221
5255
|
[format, minDate, maxDate, disableFuture, disablePast]
|
|
5222
5256
|
);
|
|
5223
|
-
return /* @__PURE__ */
|
|
5257
|
+
return /* @__PURE__ */ React27.createElement(DateRangePickerRoot, null, /* @__PURE__ */ React27.createElement(FocusTrap2, { open: true }, /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(
|
|
5224
5258
|
Input_default,
|
|
5225
5259
|
{
|
|
5226
5260
|
...innerProps,
|
|
@@ -5247,7 +5281,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5247
5281
|
error,
|
|
5248
5282
|
className,
|
|
5249
5283
|
sx,
|
|
5250
|
-
endDecorator: /* @__PURE__ */
|
|
5284
|
+
endDecorator: /* @__PURE__ */ React27.createElement(
|
|
5251
5285
|
CalendarButton2,
|
|
5252
5286
|
{
|
|
5253
5287
|
ref: buttonRef,
|
|
@@ -5259,13 +5293,13 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5259
5293
|
"aria-expanded": open,
|
|
5260
5294
|
disabled
|
|
5261
5295
|
},
|
|
5262
|
-
/* @__PURE__ */
|
|
5296
|
+
/* @__PURE__ */ React27.createElement(CalendarTodayIcon2, null)
|
|
5263
5297
|
),
|
|
5264
5298
|
label,
|
|
5265
5299
|
helperText,
|
|
5266
5300
|
readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
|
|
5267
5301
|
}
|
|
5268
|
-
), open && /* @__PURE__ */
|
|
5302
|
+
), open && /* @__PURE__ */ React27.createElement(ClickAwayListener2, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React27.createElement(
|
|
5269
5303
|
StyledPopper2,
|
|
5270
5304
|
{
|
|
5271
5305
|
id: "date-range-picker-popper",
|
|
@@ -5284,7 +5318,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5284
5318
|
"aria-label": "Calendar Tooltip",
|
|
5285
5319
|
"aria-expanded": open
|
|
5286
5320
|
},
|
|
5287
|
-
/* @__PURE__ */
|
|
5321
|
+
/* @__PURE__ */ React27.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React27.createElement(CalendarSheetContent2, null, /* @__PURE__ */ React27.createElement(CalendarSection2, { style: { width: "auto" } }, /* @__PURE__ */ React27.createElement(
|
|
5288
5322
|
Calendar_default,
|
|
5289
5323
|
{
|
|
5290
5324
|
rangeSelection: true,
|
|
@@ -5297,14 +5331,14 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5297
5331
|
locale,
|
|
5298
5332
|
numberOfMonths
|
|
5299
5333
|
}
|
|
5300
|
-
), !hideClearButton && /* @__PURE__ */
|
|
5334
|
+
), !hideClearButton && /* @__PURE__ */ React27.createElement(
|
|
5301
5335
|
DialogActions_default,
|
|
5302
5336
|
{
|
|
5303
5337
|
sx: {
|
|
5304
5338
|
p: 1
|
|
5305
5339
|
}
|
|
5306
5340
|
},
|
|
5307
|
-
/* @__PURE__ */
|
|
5341
|
+
/* @__PURE__ */ React27.createElement(
|
|
5308
5342
|
Button_default,
|
|
5309
5343
|
{
|
|
5310
5344
|
size,
|
|
@@ -5318,9 +5352,9 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5318
5352
|
},
|
|
5319
5353
|
"Clear"
|
|
5320
5354
|
)
|
|
5321
|
-
)), presets && presets.length > 0 && /* @__PURE__ */
|
|
5355
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ React27.createElement(PresetPanel2, null, presets.map((preset) => {
|
|
5322
5356
|
const disabled2 = isPresetDisabled(preset.value);
|
|
5323
|
-
return /* @__PURE__ */
|
|
5357
|
+
return /* @__PURE__ */ React27.createElement(
|
|
5324
5358
|
PresetItem2,
|
|
5325
5359
|
{
|
|
5326
5360
|
key: preset.label,
|
|
@@ -5339,7 +5373,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5339
5373
|
DateRangePicker.displayName = "DateRangePicker";
|
|
5340
5374
|
|
|
5341
5375
|
// src/components/Drawer/Drawer.tsx
|
|
5342
|
-
import
|
|
5376
|
+
import React28 from "react";
|
|
5343
5377
|
import { Drawer as JoyDrawer, styled as styled15, drawerClasses } from "@mui/joy";
|
|
5344
5378
|
import { motion as motion21 } from "framer-motion";
|
|
5345
5379
|
var MotionDrawer = motion21(JoyDrawer);
|
|
@@ -5357,7 +5391,7 @@ var StyledDrawer = styled15(MotionDrawer)(({ theme, size = "md" }) => ({
|
|
|
5357
5391
|
}));
|
|
5358
5392
|
var Drawer = (props) => {
|
|
5359
5393
|
const { children, ...innerProps } = props;
|
|
5360
|
-
return /* @__PURE__ */
|
|
5394
|
+
return /* @__PURE__ */ React28.createElement(StyledDrawer, { ...innerProps }, children);
|
|
5361
5395
|
};
|
|
5362
5396
|
Drawer.displayName = "Drawer";
|
|
5363
5397
|
|
|
@@ -5388,10 +5422,10 @@ DialogTitle.displayName = "DialogTitle";
|
|
|
5388
5422
|
var DialogTitle_default = DialogTitle;
|
|
5389
5423
|
|
|
5390
5424
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
5391
|
-
import
|
|
5425
|
+
import React30 from "react";
|
|
5392
5426
|
|
|
5393
5427
|
// src/components/Modal/Modal.tsx
|
|
5394
|
-
import
|
|
5428
|
+
import React29 from "react";
|
|
5395
5429
|
import {
|
|
5396
5430
|
Modal as JoyModal,
|
|
5397
5431
|
ModalDialog as JoyModalDialog,
|
|
@@ -5414,7 +5448,7 @@ var ModalOverflow = MotionModalOverflow;
|
|
|
5414
5448
|
ModalOverflow.displayName = "ModalOverflow";
|
|
5415
5449
|
function ModalFrame(props) {
|
|
5416
5450
|
const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
|
|
5417
|
-
return /* @__PURE__ */
|
|
5451
|
+
return /* @__PURE__ */ React29.createElement(StyledModalDialog, { ...innerProps }, /* @__PURE__ */ React29.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ React29.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ React29.createElement(DialogContent_default, null, children));
|
|
5418
5452
|
}
|
|
5419
5453
|
ModalFrame.displayName = "ModalFrame";
|
|
5420
5454
|
|
|
@@ -5426,19 +5460,19 @@ var StyledDialogFrame = styled19(ModalDialog, {
|
|
|
5426
5460
|
})({
|
|
5427
5461
|
padding: 0
|
|
5428
5462
|
});
|
|
5429
|
-
var DialogFrame =
|
|
5463
|
+
var DialogFrame = React30.forwardRef((props, ref) => {
|
|
5430
5464
|
const { title, children, actions, fullscreen, ...innerProps } = props;
|
|
5431
|
-
return /* @__PURE__ */
|
|
5465
|
+
return /* @__PURE__ */ React30.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...innerProps }, /* @__PURE__ */ React30.createElement(DialogTitle_default, null, title), /* @__PURE__ */ React30.createElement(DialogContent_default, null, children), /* @__PURE__ */ React30.createElement(DialogActions_default, null, actions));
|
|
5432
5466
|
});
|
|
5433
5467
|
DialogFrame.displayName = "DialogFrame";
|
|
5434
5468
|
|
|
5435
5469
|
// src/components/Divider/Divider.tsx
|
|
5436
|
-
import
|
|
5470
|
+
import React31 from "react";
|
|
5437
5471
|
import { Divider as JoyDivider } from "@mui/joy";
|
|
5438
5472
|
import { motion as motion25 } from "framer-motion";
|
|
5439
5473
|
var MotionDivider = motion25(JoyDivider);
|
|
5440
5474
|
var Divider = (props) => {
|
|
5441
|
-
return /* @__PURE__ */
|
|
5475
|
+
return /* @__PURE__ */ React31.createElement(MotionDivider, { ...props });
|
|
5442
5476
|
};
|
|
5443
5477
|
Divider.displayName = "Divider";
|
|
5444
5478
|
|
|
@@ -5459,14 +5493,15 @@ var InsetDrawer = styled20(JoyDrawer2)(({ theme }) => ({
|
|
|
5459
5493
|
}));
|
|
5460
5494
|
|
|
5461
5495
|
// src/components/FilterableCheckboxGroup/FilterableCheckboxGroup.tsx
|
|
5462
|
-
import
|
|
5496
|
+
import React32, { useCallback as useCallback15, useEffect as useEffect9, useMemo as useMemo13, useRef as useRef9, useState as useState12 } from "react";
|
|
5463
5497
|
import SearchIcon from "@mui/icons-material/Search";
|
|
5498
|
+
import { useThemeProps as useThemeProps8 } from "@mui/joy";
|
|
5464
5499
|
import { useVirtualizer as useVirtualizer3 } from "@tanstack/react-virtual";
|
|
5465
5500
|
function LabelWithTooltip(props) {
|
|
5466
5501
|
const { label, size } = props;
|
|
5467
5502
|
const labelContentRef = useRef9(null);
|
|
5468
|
-
const [isOverflowing, setIsOverflowing] =
|
|
5469
|
-
const labelContent = /* @__PURE__ */
|
|
5503
|
+
const [isOverflowing, setIsOverflowing] = useState12(false);
|
|
5504
|
+
const labelContent = /* @__PURE__ */ React32.createElement(
|
|
5470
5505
|
"span",
|
|
5471
5506
|
{
|
|
5472
5507
|
ref: labelContentRef,
|
|
@@ -5489,11 +5524,12 @@ function LabelWithTooltip(props) {
|
|
|
5489
5524
|
}
|
|
5490
5525
|
}, [label]);
|
|
5491
5526
|
if (isOverflowing) {
|
|
5492
|
-
return /* @__PURE__ */
|
|
5527
|
+
return /* @__PURE__ */ React32.createElement(Tooltip_default, { variant: "solid", size, title: label, placement: "bottom-start" }, labelContent);
|
|
5493
5528
|
}
|
|
5494
5529
|
return labelContent;
|
|
5495
5530
|
}
|
|
5496
|
-
function FilterableCheckboxGroup(
|
|
5531
|
+
function FilterableCheckboxGroup(inProps) {
|
|
5532
|
+
const props = useThemeProps8({ props: inProps, name: "FilterableCheckboxGroup" });
|
|
5497
5533
|
const {
|
|
5498
5534
|
value,
|
|
5499
5535
|
options,
|
|
@@ -5506,21 +5542,21 @@ function FilterableCheckboxGroup(props) {
|
|
|
5506
5542
|
maxHeight = 300,
|
|
5507
5543
|
disabled
|
|
5508
5544
|
} = props;
|
|
5509
|
-
const [searchTerm, setSearchTerm] =
|
|
5510
|
-
const [sortedOptions, setSortedOptions] =
|
|
5545
|
+
const [searchTerm, setSearchTerm] = useState12("");
|
|
5546
|
+
const [sortedOptions, setSortedOptions] = useState12(options);
|
|
5511
5547
|
const [internalValue, setInternalValue] = useControlledState(
|
|
5512
5548
|
value,
|
|
5513
5549
|
value ?? [],
|
|
5514
|
-
|
|
5550
|
+
useCallback15((newValue) => onChange?.(newValue), [onChange])
|
|
5515
5551
|
);
|
|
5516
5552
|
const parentRef = useRef9(null);
|
|
5517
5553
|
const isInitialSortRef = useRef9(false);
|
|
5518
5554
|
const prevOptionsRef = useRef9([...options]);
|
|
5519
|
-
const filteredOptions =
|
|
5555
|
+
const filteredOptions = useMemo13(() => {
|
|
5520
5556
|
if (!searchTerm) return sortedOptions;
|
|
5521
5557
|
return sortedOptions.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
|
|
5522
5558
|
}, [sortedOptions, searchTerm]);
|
|
5523
|
-
const itemSize =
|
|
5559
|
+
const itemSize = useMemo13(() => {
|
|
5524
5560
|
switch (size) {
|
|
5525
5561
|
case "sm":
|
|
5526
5562
|
return 28;
|
|
@@ -5567,10 +5603,10 @@ function FilterableCheckboxGroup(props) {
|
|
|
5567
5603
|
useEffect9(() => {
|
|
5568
5604
|
virtualizer.measure();
|
|
5569
5605
|
}, [virtualizer, filteredOptions, size]);
|
|
5570
|
-
const handleSearchChange =
|
|
5606
|
+
const handleSearchChange = useCallback15((event) => {
|
|
5571
5607
|
setSearchTerm(event.target.value);
|
|
5572
5608
|
}, []);
|
|
5573
|
-
const handleCheckboxChange =
|
|
5609
|
+
const handleCheckboxChange = useCallback15(
|
|
5574
5610
|
(optionValue) => (event) => {
|
|
5575
5611
|
const checked = event.target.checked;
|
|
5576
5612
|
const newValue = checked ? [...internalValue, optionValue] : internalValue.filter((v) => v !== optionValue);
|
|
@@ -5578,7 +5614,7 @@ function FilterableCheckboxGroup(props) {
|
|
|
5578
5614
|
},
|
|
5579
5615
|
[internalValue, setInternalValue]
|
|
5580
5616
|
);
|
|
5581
|
-
const handleSelectAll =
|
|
5617
|
+
const handleSelectAll = useCallback15(
|
|
5582
5618
|
(event) => {
|
|
5583
5619
|
const checked = event.target.checked;
|
|
5584
5620
|
const enabledOptions = filteredOptions.filter((option) => !option.disabled);
|
|
@@ -5594,10 +5630,10 @@ function FilterableCheckboxGroup(props) {
|
|
|
5594
5630
|
},
|
|
5595
5631
|
[filteredOptions, internalValue, setInternalValue]
|
|
5596
5632
|
);
|
|
5597
|
-
const enabledFilteredOptions =
|
|
5633
|
+
const enabledFilteredOptions = useMemo13(() => filteredOptions.filter((option) => !option.disabled), [filteredOptions]);
|
|
5598
5634
|
const isAllSelected = enabledFilteredOptions.length > 0 && enabledFilteredOptions.every((option) => internalValue.includes(option.value));
|
|
5599
5635
|
const isIndeterminate = !isAllSelected && enabledFilteredOptions.some((option) => internalValue.includes(option.value));
|
|
5600
|
-
return /* @__PURE__ */
|
|
5636
|
+
return /* @__PURE__ */ React32.createElement("div", { style: { width: "100%" } }, /* @__PURE__ */ React32.createElement(
|
|
5601
5637
|
Input_default,
|
|
5602
5638
|
{
|
|
5603
5639
|
label,
|
|
@@ -5610,9 +5646,9 @@ function FilterableCheckboxGroup(props) {
|
|
|
5610
5646
|
onChange: handleSearchChange,
|
|
5611
5647
|
size,
|
|
5612
5648
|
disabled,
|
|
5613
|
-
endDecorator: /* @__PURE__ */
|
|
5649
|
+
endDecorator: /* @__PURE__ */ React32.createElement(SearchIcon, null)
|
|
5614
5650
|
}
|
|
5615
|
-
), filteredOptions.length === 0 ? /* @__PURE__ */
|
|
5651
|
+
), filteredOptions.length === 0 ? /* @__PURE__ */ React32.createElement(Typography_default, { level: `body-${size}`, textColor: "neutral.softDisabledColor", padding: "20px 12px", textAlign: "center" }, "No options found.") : /* @__PURE__ */ React32.createElement(
|
|
5616
5652
|
"div",
|
|
5617
5653
|
{
|
|
5618
5654
|
ref: parentRef,
|
|
@@ -5623,7 +5659,7 @@ function FilterableCheckboxGroup(props) {
|
|
|
5623
5659
|
marginTop: "8px"
|
|
5624
5660
|
}
|
|
5625
5661
|
},
|
|
5626
|
-
!searchTerm && /* @__PURE__ */
|
|
5662
|
+
!searchTerm && /* @__PURE__ */ React32.createElement(
|
|
5627
5663
|
Checkbox_default,
|
|
5628
5664
|
{
|
|
5629
5665
|
label: "Select all",
|
|
@@ -5640,7 +5676,7 @@ function FilterableCheckboxGroup(props) {
|
|
|
5640
5676
|
sx: { width: "100%", height: itemSize }
|
|
5641
5677
|
}
|
|
5642
5678
|
),
|
|
5643
|
-
/* @__PURE__ */
|
|
5679
|
+
/* @__PURE__ */ React32.createElement(
|
|
5644
5680
|
Stack_default,
|
|
5645
5681
|
{
|
|
5646
5682
|
sx: {
|
|
@@ -5650,11 +5686,11 @@ function FilterableCheckboxGroup(props) {
|
|
|
5650
5686
|
},
|
|
5651
5687
|
items.map((virtualRow) => {
|
|
5652
5688
|
const option = filteredOptions[virtualRow.index];
|
|
5653
|
-
return /* @__PURE__ */
|
|
5689
|
+
return /* @__PURE__ */ React32.createElement(
|
|
5654
5690
|
Checkbox_default,
|
|
5655
5691
|
{
|
|
5656
5692
|
key: virtualRow.key,
|
|
5657
|
-
label: /* @__PURE__ */
|
|
5693
|
+
label: /* @__PURE__ */ React32.createElement(LabelWithTooltip, { label: option.label, size }),
|
|
5658
5694
|
checked: internalValue.includes(option.value),
|
|
5659
5695
|
onChange: handleCheckboxChange(option.value),
|
|
5660
5696
|
size,
|
|
@@ -5685,8 +5721,11 @@ FilterableCheckboxGroup.displayName = "FilterableCheckboxGroup";
|
|
|
5685
5721
|
import { Grid } from "@mui/joy";
|
|
5686
5722
|
|
|
5687
5723
|
// src/components/IconMenuButton/IconMenuButton.tsx
|
|
5688
|
-
import
|
|
5689
|
-
import {
|
|
5724
|
+
import React33 from "react";
|
|
5725
|
+
import {
|
|
5726
|
+
MenuButton as JoyMenuButton2,
|
|
5727
|
+
IconButton as JoyIconButton2
|
|
5728
|
+
} from "@mui/joy";
|
|
5690
5729
|
function IconMenuButton(props) {
|
|
5691
5730
|
const {
|
|
5692
5731
|
size,
|
|
@@ -5699,7 +5738,7 @@ function IconMenuButton(props) {
|
|
|
5699
5738
|
placement = "bottom"
|
|
5700
5739
|
} = props;
|
|
5701
5740
|
if (!items.length) {
|
|
5702
|
-
return /* @__PURE__ */
|
|
5741
|
+
return /* @__PURE__ */ React33.createElement(
|
|
5703
5742
|
JoyIconButton2,
|
|
5704
5743
|
{
|
|
5705
5744
|
component: props.buttonComponent ?? "button",
|
|
@@ -5713,7 +5752,7 @@ function IconMenuButton(props) {
|
|
|
5713
5752
|
icon
|
|
5714
5753
|
);
|
|
5715
5754
|
}
|
|
5716
|
-
return /* @__PURE__ */
|
|
5755
|
+
return /* @__PURE__ */ React33.createElement(Dropdown_default, null, /* @__PURE__ */ React33.createElement(
|
|
5717
5756
|
JoyMenuButton2,
|
|
5718
5757
|
{
|
|
5719
5758
|
slots: { root: JoyIconButton2 },
|
|
@@ -5730,18 +5769,18 @@ function IconMenuButton(props) {
|
|
|
5730
5769
|
}
|
|
5731
5770
|
},
|
|
5732
5771
|
icon
|
|
5733
|
-
), /* @__PURE__ */
|
|
5772
|
+
), /* @__PURE__ */ React33.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React33.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
|
|
5734
5773
|
}
|
|
5735
5774
|
IconMenuButton.displayName = "IconMenuButton";
|
|
5736
5775
|
|
|
5737
5776
|
// src/components/Markdown/Markdown.tsx
|
|
5738
|
-
import
|
|
5777
|
+
import React34, { lazy, Suspense, useEffect as useEffect10, useState as useState13 } from "react";
|
|
5739
5778
|
import { Skeleton } from "@mui/joy";
|
|
5740
5779
|
import { Link as Link2 } from "@mui/joy";
|
|
5741
5780
|
import remarkGfm from "remark-gfm";
|
|
5742
5781
|
var LazyReactMarkdown = lazy(() => import("react-markdown"));
|
|
5743
5782
|
var Markdown = (props) => {
|
|
5744
|
-
const [rehypeAccent, setRehypeAccent] =
|
|
5783
|
+
const [rehypeAccent, setRehypeAccent] = useState13(null);
|
|
5745
5784
|
useEffect10(() => {
|
|
5746
5785
|
const loadRehypeAccent = async () => {
|
|
5747
5786
|
const module = await import("./chunks/rehype-accent-FZRUD7VI.js");
|
|
@@ -5764,12 +5803,12 @@ var Markdown = (props) => {
|
|
|
5764
5803
|
if (!rehypeAccent) {
|
|
5765
5804
|
return null;
|
|
5766
5805
|
}
|
|
5767
|
-
return /* @__PURE__ */
|
|
5806
|
+
return /* @__PURE__ */ React34.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ React34.createElement(
|
|
5768
5807
|
Suspense,
|
|
5769
5808
|
{
|
|
5770
|
-
fallback: fallback || /* @__PURE__ */
|
|
5809
|
+
fallback: fallback || /* @__PURE__ */ React34.createElement(Typography, null, /* @__PURE__ */ React34.createElement(Skeleton, null, content || ""))
|
|
5771
5810
|
},
|
|
5772
|
-
/* @__PURE__ */
|
|
5811
|
+
/* @__PURE__ */ React34.createElement(
|
|
5773
5812
|
LazyReactMarkdown,
|
|
5774
5813
|
{
|
|
5775
5814
|
...markdownOptions,
|
|
@@ -5777,17 +5816,17 @@ var Markdown = (props) => {
|
|
|
5777
5816
|
rehypePlugins: [[rehypeAccent, { accentColor }]],
|
|
5778
5817
|
remarkPlugins: [remarkGfm],
|
|
5779
5818
|
components: {
|
|
5780
|
-
a: ({ children, href }) => /* @__PURE__ */
|
|
5781
|
-
hr: () => /* @__PURE__ */
|
|
5782
|
-
b: ({ children }) => /* @__PURE__ */
|
|
5783
|
-
strong: ({ children }) => /* @__PURE__ */
|
|
5819
|
+
a: ({ children, href }) => /* @__PURE__ */ React34.createElement(Link2, { href, target: defaultLinkAction }, children),
|
|
5820
|
+
hr: () => /* @__PURE__ */ React34.createElement(Divider, { sx: { display: "block" } }),
|
|
5821
|
+
b: ({ children }) => /* @__PURE__ */ React34.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
|
|
5822
|
+
strong: ({ children }) => /* @__PURE__ */ React34.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
|
|
5784
5823
|
// Table components
|
|
5785
|
-
table: ({ children }) => /* @__PURE__ */
|
|
5824
|
+
table: ({ children }) => /* @__PURE__ */ React34.createElement(Sheet, { variant: "outlined", sx: { display: "block", borderRadius: "sm", overflow: "auto" } }, /* @__PURE__ */ React34.createElement(Table, { size: "sm" }, children)),
|
|
5786
5825
|
// Code components
|
|
5787
5826
|
code: ({ children, className }) => {
|
|
5788
5827
|
const isBlock = className?.startsWith("language-");
|
|
5789
5828
|
if (isBlock) {
|
|
5790
|
-
return /* @__PURE__ */
|
|
5829
|
+
return /* @__PURE__ */ React34.createElement(
|
|
5791
5830
|
Typography,
|
|
5792
5831
|
{
|
|
5793
5832
|
component: "code",
|
|
@@ -5801,7 +5840,7 @@ var Markdown = (props) => {
|
|
|
5801
5840
|
children
|
|
5802
5841
|
);
|
|
5803
5842
|
}
|
|
5804
|
-
return /* @__PURE__ */
|
|
5843
|
+
return /* @__PURE__ */ React34.createElement(
|
|
5805
5844
|
Typography,
|
|
5806
5845
|
{
|
|
5807
5846
|
component: "code",
|
|
@@ -5816,7 +5855,7 @@ var Markdown = (props) => {
|
|
|
5816
5855
|
children
|
|
5817
5856
|
);
|
|
5818
5857
|
},
|
|
5819
|
-
pre: ({ children }) => /* @__PURE__ */
|
|
5858
|
+
pre: ({ children }) => /* @__PURE__ */ React34.createElement(
|
|
5820
5859
|
Sheet,
|
|
5821
5860
|
{
|
|
5822
5861
|
variant: "soft",
|
|
@@ -5834,12 +5873,12 @@ var Markdown = (props) => {
|
|
|
5834
5873
|
// Task list checkbox
|
|
5835
5874
|
input: ({ checked, type }) => {
|
|
5836
5875
|
if (type === "checkbox") {
|
|
5837
|
-
return /* @__PURE__ */
|
|
5876
|
+
return /* @__PURE__ */ React34.createElement(Checkbox, { checked, disabled: true, size: "sm", sx: { mr: 1 } });
|
|
5838
5877
|
}
|
|
5839
|
-
return /* @__PURE__ */
|
|
5878
|
+
return /* @__PURE__ */ React34.createElement("input", { checked, type });
|
|
5840
5879
|
},
|
|
5841
5880
|
// Blockquote
|
|
5842
|
-
blockquote: ({ children }) => /* @__PURE__ */
|
|
5881
|
+
blockquote: ({ children }) => /* @__PURE__ */ React34.createElement(
|
|
5843
5882
|
Sheet,
|
|
5844
5883
|
{
|
|
5845
5884
|
variant: "soft",
|
|
@@ -5848,12 +5887,12 @@ var Markdown = (props) => {
|
|
|
5848
5887
|
children
|
|
5849
5888
|
),
|
|
5850
5889
|
// Image
|
|
5851
|
-
img: ({ src, alt }) => /* @__PURE__ */
|
|
5890
|
+
img: ({ src, alt }) => /* @__PURE__ */ React34.createElement("img", { src, alt, style: { maxWidth: "100%", borderRadius: "4px" } }),
|
|
5852
5891
|
// Text style components
|
|
5853
|
-
em: ({ children }) => /* @__PURE__ */
|
|
5854
|
-
del: ({ children }) => /* @__PURE__ */
|
|
5892
|
+
em: ({ children }) => /* @__PURE__ */ React34.createElement(Typography, { component: "em", sx: { fontStyle: "italic" } }, children),
|
|
5893
|
+
del: ({ children }) => /* @__PURE__ */ React34.createElement(Typography, { component: "del", sx: { textDecoration: "line-through" } }, children),
|
|
5855
5894
|
// Span for accent color (from rehype-accent plugin)
|
|
5856
|
-
span: ({ children, node }) => /* @__PURE__ */
|
|
5895
|
+
span: ({ children, node }) => /* @__PURE__ */ React34.createElement(Typography, { component: "span", textColor: node?.properties?.textColor }, children),
|
|
5857
5896
|
...markdownOptions?.components
|
|
5858
5897
|
}
|
|
5859
5898
|
}
|
|
@@ -5863,10 +5902,10 @@ var Markdown = (props) => {
|
|
|
5863
5902
|
Markdown.displayName = "Markdown";
|
|
5864
5903
|
|
|
5865
5904
|
// src/components/MenuButton/MenuButton.tsx
|
|
5866
|
-
import
|
|
5905
|
+
import React35 from "react";
|
|
5867
5906
|
import { MenuButton as JoyMenuButton3, Button as JoyButton2 } from "@mui/joy";
|
|
5868
5907
|
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
|
|
5869
|
-
function
|
|
5908
|
+
function MenuButton2(props) {
|
|
5870
5909
|
const {
|
|
5871
5910
|
size,
|
|
5872
5911
|
buttonText,
|
|
@@ -5881,7 +5920,7 @@ function MenuButton(props) {
|
|
|
5881
5920
|
placement = "bottom"
|
|
5882
5921
|
} = props;
|
|
5883
5922
|
if (!items.length) {
|
|
5884
|
-
return /* @__PURE__ */
|
|
5923
|
+
return /* @__PURE__ */ React35.createElement(
|
|
5885
5924
|
JoyButton2,
|
|
5886
5925
|
{
|
|
5887
5926
|
component: props.buttonComponent ?? "button",
|
|
@@ -5892,12 +5931,12 @@ function MenuButton(props) {
|
|
|
5892
5931
|
loading,
|
|
5893
5932
|
startDecorator,
|
|
5894
5933
|
...props.buttonComponentProps ?? {},
|
|
5895
|
-
endDecorator: showIcon ? /* @__PURE__ */
|
|
5934
|
+
endDecorator: showIcon ? /* @__PURE__ */ React35.createElement(React35.Fragment, null, endDecorator, /* @__PURE__ */ React35.createElement(ExpandMoreIcon, null)) : /* @__PURE__ */ React35.createElement(React35.Fragment, null, endDecorator)
|
|
5896
5935
|
},
|
|
5897
5936
|
buttonText
|
|
5898
5937
|
);
|
|
5899
5938
|
}
|
|
5900
|
-
return /* @__PURE__ */
|
|
5939
|
+
return /* @__PURE__ */ React35.createElement(Dropdown_default, null, /* @__PURE__ */ React35.createElement(
|
|
5901
5940
|
JoyMenuButton3,
|
|
5902
5941
|
{
|
|
5903
5942
|
component: props.buttonComponent ?? "button",
|
|
@@ -5908,17 +5947,17 @@ function MenuButton(props) {
|
|
|
5908
5947
|
loading,
|
|
5909
5948
|
startDecorator,
|
|
5910
5949
|
...props.buttonComponentProps ?? {},
|
|
5911
|
-
endDecorator: showIcon ? /* @__PURE__ */
|
|
5950
|
+
endDecorator: showIcon ? /* @__PURE__ */ React35.createElement(React35.Fragment, null, endDecorator, /* @__PURE__ */ React35.createElement(ExpandMoreIcon, null)) : /* @__PURE__ */ React35.createElement(React35.Fragment, null, endDecorator)
|
|
5912
5951
|
},
|
|
5913
5952
|
buttonText
|
|
5914
|
-
), /* @__PURE__ */
|
|
5953
|
+
), /* @__PURE__ */ React35.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React35.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
|
|
5915
5954
|
}
|
|
5916
|
-
|
|
5955
|
+
MenuButton2.displayName = "MenuButton";
|
|
5917
5956
|
|
|
5918
5957
|
// src/components/MonthPicker/MonthPicker.tsx
|
|
5919
|
-
import
|
|
5958
|
+
import React36, { forwardRef as forwardRef9, useCallback as useCallback16, useEffect as useEffect11, useImperativeHandle as useImperativeHandle4, useRef as useRef10, useState as useState14 } from "react";
|
|
5920
5959
|
import CalendarTodayIcon3 from "@mui/icons-material/CalendarToday";
|
|
5921
|
-
import { styled as styled21, useThemeProps as
|
|
5960
|
+
import { styled as styled21, useThemeProps as useThemeProps9 } from "@mui/joy";
|
|
5922
5961
|
import { FocusTrap as FocusTrap3, ClickAwayListener as ClickAwayListener3, Popper as Popper4 } from "@mui/base";
|
|
5923
5962
|
var StyledPopper3 = styled21(Popper4, {
|
|
5924
5963
|
name: "MonthPicker",
|
|
@@ -5973,7 +6012,7 @@ function parseDate3(dateString, format) {
|
|
|
5973
6012
|
return result;
|
|
5974
6013
|
}
|
|
5975
6014
|
var MonthPicker = forwardRef9((inProps, ref) => {
|
|
5976
|
-
const props =
|
|
6015
|
+
const props = useThemeProps9({ props: inProps, name: "MonthPicker" });
|
|
5977
6016
|
const {
|
|
5978
6017
|
onChange,
|
|
5979
6018
|
disabled,
|
|
@@ -6004,9 +6043,9 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6004
6043
|
const [value, setValue, isControlled] = useControlledState(
|
|
6005
6044
|
props.value,
|
|
6006
6045
|
props.defaultValue || "",
|
|
6007
|
-
|
|
6046
|
+
useCallback16((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
6008
6047
|
);
|
|
6009
|
-
const getFormattedDisplayValue =
|
|
6048
|
+
const getFormattedDisplayValue = useCallback16(
|
|
6010
6049
|
(inputValue) => {
|
|
6011
6050
|
if (!inputValue) return "";
|
|
6012
6051
|
try {
|
|
@@ -6017,8 +6056,8 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6017
6056
|
},
|
|
6018
6057
|
[format, displayFormat, locale]
|
|
6019
6058
|
);
|
|
6020
|
-
const [displayValue, setDisplayValue] =
|
|
6021
|
-
const [anchorEl, setAnchorEl] =
|
|
6059
|
+
const [displayValue, setDisplayValue] = useState14(() => getFormattedDisplayValue(value));
|
|
6060
|
+
const [anchorEl, setAnchorEl] = useState14(null);
|
|
6022
6061
|
const open = Boolean(anchorEl);
|
|
6023
6062
|
useEffect11(() => {
|
|
6024
6063
|
if (!anchorEl) {
|
|
@@ -6029,7 +6068,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6029
6068
|
useEffect11(() => {
|
|
6030
6069
|
setDisplayValue(getFormattedDisplayValue(value));
|
|
6031
6070
|
}, [value, getFormattedDisplayValue]);
|
|
6032
|
-
const handleChange =
|
|
6071
|
+
const handleChange = useCallback16(
|
|
6033
6072
|
(event) => {
|
|
6034
6073
|
const newValue = event.target.value;
|
|
6035
6074
|
setValue(newValue);
|
|
@@ -6039,21 +6078,21 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6039
6078
|
},
|
|
6040
6079
|
[setValue, getFormattedDisplayValue, isControlled]
|
|
6041
6080
|
);
|
|
6042
|
-
const handleCalendarToggle =
|
|
6081
|
+
const handleCalendarToggle = useCallback16(
|
|
6043
6082
|
(event) => {
|
|
6044
6083
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
6045
6084
|
innerRef.current?.focus();
|
|
6046
6085
|
},
|
|
6047
6086
|
[anchorEl, setAnchorEl, innerRef]
|
|
6048
6087
|
);
|
|
6049
|
-
const handleInputMouseDown =
|
|
6088
|
+
const handleInputMouseDown = useCallback16(
|
|
6050
6089
|
(event) => {
|
|
6051
6090
|
event.preventDefault();
|
|
6052
6091
|
buttonRef.current?.focus();
|
|
6053
6092
|
},
|
|
6054
6093
|
[buttonRef]
|
|
6055
6094
|
);
|
|
6056
|
-
return /* @__PURE__ */
|
|
6095
|
+
return /* @__PURE__ */ React36.createElement(MonthPickerRoot, null, /* @__PURE__ */ React36.createElement(FocusTrap3, { open: true }, /* @__PURE__ */ React36.createElement(React36.Fragment, null, /* @__PURE__ */ React36.createElement(
|
|
6057
6096
|
Input_default,
|
|
6058
6097
|
{
|
|
6059
6098
|
...innerProps,
|
|
@@ -6083,7 +6122,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6083
6122
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
6084
6123
|
fontFamily: "monospace"
|
|
6085
6124
|
},
|
|
6086
|
-
endDecorator: /* @__PURE__ */
|
|
6125
|
+
endDecorator: /* @__PURE__ */ React36.createElement(
|
|
6087
6126
|
IconButton_default,
|
|
6088
6127
|
{
|
|
6089
6128
|
ref: buttonRef,
|
|
@@ -6095,12 +6134,12 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6095
6134
|
"aria-expanded": open,
|
|
6096
6135
|
disabled
|
|
6097
6136
|
},
|
|
6098
|
-
/* @__PURE__ */
|
|
6137
|
+
/* @__PURE__ */ React36.createElement(CalendarTodayIcon3, null)
|
|
6099
6138
|
),
|
|
6100
6139
|
label,
|
|
6101
6140
|
helperText
|
|
6102
6141
|
}
|
|
6103
|
-
), open && /* @__PURE__ */
|
|
6142
|
+
), open && /* @__PURE__ */ React36.createElement(ClickAwayListener3, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React36.createElement(
|
|
6104
6143
|
StyledPopper3,
|
|
6105
6144
|
{
|
|
6106
6145
|
id: "month-picker-popper",
|
|
@@ -6119,7 +6158,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6119
6158
|
"aria-label": "Calendar Tooltip",
|
|
6120
6159
|
"aria-expanded": open
|
|
6121
6160
|
},
|
|
6122
|
-
/* @__PURE__ */
|
|
6161
|
+
/* @__PURE__ */ React36.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React36.createElement(
|
|
6123
6162
|
Calendar_default,
|
|
6124
6163
|
{
|
|
6125
6164
|
view: "month",
|
|
@@ -6140,14 +6179,14 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6140
6179
|
disablePast,
|
|
6141
6180
|
locale
|
|
6142
6181
|
}
|
|
6143
|
-
), /* @__PURE__ */
|
|
6182
|
+
), /* @__PURE__ */ React36.createElement(
|
|
6144
6183
|
DialogActions_default,
|
|
6145
6184
|
{
|
|
6146
6185
|
sx: {
|
|
6147
6186
|
p: 1
|
|
6148
6187
|
}
|
|
6149
6188
|
},
|
|
6150
|
-
/* @__PURE__ */
|
|
6189
|
+
/* @__PURE__ */ React36.createElement(
|
|
6151
6190
|
Button_default,
|
|
6152
6191
|
{
|
|
6153
6192
|
size,
|
|
@@ -6170,10 +6209,10 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6170
6209
|
});
|
|
6171
6210
|
|
|
6172
6211
|
// src/components/MonthRangePicker/MonthRangePicker.tsx
|
|
6173
|
-
import
|
|
6212
|
+
import React37, { forwardRef as forwardRef10, useCallback as useCallback17, useEffect as useEffect12, useImperativeHandle as useImperativeHandle5, useMemo as useMemo14, useRef as useRef11, useState as useState15 } from "react";
|
|
6174
6213
|
import { IMaskInput as IMaskInput3, IMask as IMask3 } from "react-imask";
|
|
6175
6214
|
import CalendarTodayIcon4 from "@mui/icons-material/CalendarToday";
|
|
6176
|
-
import { styled as styled22, useThemeProps as
|
|
6215
|
+
import { styled as styled22, useThemeProps as useThemeProps10 } from "@mui/joy";
|
|
6177
6216
|
import { FocusTrap as FocusTrap4, ClickAwayListener as ClickAwayListener4, Popper as Popper5 } from "@mui/base";
|
|
6178
6217
|
var hasAlphabeticMonth3 = (format) => /MMMM|MMM/.test(format);
|
|
6179
6218
|
var StyledPopper4 = styled22(Popper5, {
|
|
@@ -6231,9 +6270,9 @@ var parseDates2 = (str) => {
|
|
|
6231
6270
|
var formatToPattern3 = (format) => {
|
|
6232
6271
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
|
|
6233
6272
|
};
|
|
6234
|
-
var TextMaskAdapter7 =
|
|
6273
|
+
var TextMaskAdapter7 = React37.forwardRef(function TextMaskAdapter8(props, ref) {
|
|
6235
6274
|
const { onChange, format, ...other } = props;
|
|
6236
|
-
return /* @__PURE__ */
|
|
6275
|
+
return /* @__PURE__ */ React37.createElement(
|
|
6237
6276
|
IMaskInput3,
|
|
6238
6277
|
{
|
|
6239
6278
|
...other,
|
|
@@ -6262,7 +6301,7 @@ var TextMaskAdapter7 = React36.forwardRef(function TextMaskAdapter8(props, ref)
|
|
|
6262
6301
|
);
|
|
6263
6302
|
});
|
|
6264
6303
|
var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
6265
|
-
const props =
|
|
6304
|
+
const props = useThemeProps10({ props: inProps, name: "MonthRangePicker" });
|
|
6266
6305
|
const {
|
|
6267
6306
|
onChange,
|
|
6268
6307
|
disabled,
|
|
@@ -6290,14 +6329,14 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6290
6329
|
const [value, setValue] = useControlledState(
|
|
6291
6330
|
props.value,
|
|
6292
6331
|
props.defaultValue || "",
|
|
6293
|
-
|
|
6332
|
+
useCallback17((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
6294
6333
|
);
|
|
6295
|
-
const [displayValue, setDisplayValue] =
|
|
6334
|
+
const [displayValue, setDisplayValue] = useState15(
|
|
6296
6335
|
() => value ? formatValueString4(parseDates2(value), displayFormat, locale) : ""
|
|
6297
6336
|
);
|
|
6298
|
-
const [anchorEl, setAnchorEl] =
|
|
6337
|
+
const [anchorEl, setAnchorEl] = useState15(null);
|
|
6299
6338
|
const open = Boolean(anchorEl);
|
|
6300
|
-
const calendarValue =
|
|
6339
|
+
const calendarValue = useMemo14(() => value ? parseDates2(value) : void 0, [value]);
|
|
6301
6340
|
useEffect12(() => {
|
|
6302
6341
|
if (value) {
|
|
6303
6342
|
try {
|
|
@@ -6316,7 +6355,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6316
6355
|
}
|
|
6317
6356
|
}, [anchorEl, innerRef]);
|
|
6318
6357
|
useImperativeHandle5(ref, () => innerRef.current, [innerRef]);
|
|
6319
|
-
const handleChange =
|
|
6358
|
+
const handleChange = useCallback17(
|
|
6320
6359
|
(event) => {
|
|
6321
6360
|
setDisplayValue(
|
|
6322
6361
|
event.target.value ? formatValueString4(parseDates2(event.target.value), displayFormat, locale) : ""
|
|
@@ -6325,7 +6364,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6325
6364
|
},
|
|
6326
6365
|
[displayFormat, locale, setValue]
|
|
6327
6366
|
);
|
|
6328
|
-
const handleInputMouseDown =
|
|
6367
|
+
const handleInputMouseDown = useCallback17(
|
|
6329
6368
|
(event) => {
|
|
6330
6369
|
if (isAlphabeticDisplay) {
|
|
6331
6370
|
event.preventDefault();
|
|
@@ -6334,14 +6373,14 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6334
6373
|
},
|
|
6335
6374
|
[isAlphabeticDisplay, buttonRef]
|
|
6336
6375
|
);
|
|
6337
|
-
const handleCalendarToggle =
|
|
6376
|
+
const handleCalendarToggle = useCallback17(
|
|
6338
6377
|
(event) => {
|
|
6339
6378
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
6340
6379
|
innerRef.current?.focus();
|
|
6341
6380
|
},
|
|
6342
6381
|
[anchorEl, setAnchorEl, innerRef]
|
|
6343
6382
|
);
|
|
6344
|
-
const handleCalendarChange =
|
|
6383
|
+
const handleCalendarChange = useCallback17(
|
|
6345
6384
|
([date1, date2]) => {
|
|
6346
6385
|
if (!date1 || !date2) return;
|
|
6347
6386
|
const formattedValue = formatValueString4([date1, date2], format);
|
|
@@ -6351,7 +6390,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6351
6390
|
},
|
|
6352
6391
|
[setValue, setAnchorEl, format, displayFormat, locale]
|
|
6353
6392
|
);
|
|
6354
|
-
return /* @__PURE__ */
|
|
6393
|
+
return /* @__PURE__ */ React37.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ React37.createElement(FocusTrap4, { open: true }, /* @__PURE__ */ React37.createElement(React37.Fragment, null, /* @__PURE__ */ React37.createElement(
|
|
6355
6394
|
Input_default,
|
|
6356
6395
|
{
|
|
6357
6396
|
...innerProps,
|
|
@@ -6381,7 +6420,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6381
6420
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
6382
6421
|
fontFamily: "monospace"
|
|
6383
6422
|
},
|
|
6384
|
-
endDecorator: /* @__PURE__ */
|
|
6423
|
+
endDecorator: /* @__PURE__ */ React37.createElement(
|
|
6385
6424
|
IconButton_default,
|
|
6386
6425
|
{
|
|
6387
6426
|
ref: buttonRef,
|
|
@@ -6392,12 +6431,12 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6392
6431
|
"aria-haspopup": "dialog",
|
|
6393
6432
|
"aria-expanded": open
|
|
6394
6433
|
},
|
|
6395
|
-
/* @__PURE__ */
|
|
6434
|
+
/* @__PURE__ */ React37.createElement(CalendarTodayIcon4, null)
|
|
6396
6435
|
),
|
|
6397
6436
|
label,
|
|
6398
6437
|
helperText
|
|
6399
6438
|
}
|
|
6400
|
-
), open && /* @__PURE__ */
|
|
6439
|
+
), open && /* @__PURE__ */ React37.createElement(ClickAwayListener4, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React37.createElement(
|
|
6401
6440
|
StyledPopper4,
|
|
6402
6441
|
{
|
|
6403
6442
|
id: "month-range-picker-popper",
|
|
@@ -6416,7 +6455,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6416
6455
|
"aria-label": "Calendar Tooltip",
|
|
6417
6456
|
"aria-expanded": open
|
|
6418
6457
|
},
|
|
6419
|
-
/* @__PURE__ */
|
|
6458
|
+
/* @__PURE__ */ React37.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React37.createElement(
|
|
6420
6459
|
Calendar_default,
|
|
6421
6460
|
{
|
|
6422
6461
|
view: "month",
|
|
@@ -6430,14 +6469,14 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6430
6469
|
disablePast,
|
|
6431
6470
|
locale
|
|
6432
6471
|
}
|
|
6433
|
-
), /* @__PURE__ */
|
|
6472
|
+
), /* @__PURE__ */ React37.createElement(
|
|
6434
6473
|
DialogActions_default,
|
|
6435
6474
|
{
|
|
6436
6475
|
sx: {
|
|
6437
6476
|
p: 1
|
|
6438
6477
|
}
|
|
6439
6478
|
},
|
|
6440
|
-
/* @__PURE__ */
|
|
6479
|
+
/* @__PURE__ */ React37.createElement(
|
|
6441
6480
|
Button_default,
|
|
6442
6481
|
{
|
|
6443
6482
|
size,
|
|
@@ -6456,7 +6495,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6456
6495
|
MonthRangePicker.displayName = "MonthRangePicker";
|
|
6457
6496
|
|
|
6458
6497
|
// src/components/NavigationGroup/NavigationGroup.tsx
|
|
6459
|
-
import
|
|
6498
|
+
import React38 from "react";
|
|
6460
6499
|
import {
|
|
6461
6500
|
Accordion as JoyAccordion2,
|
|
6462
6501
|
AccordionSummary as JoyAccordionSummary2,
|
|
@@ -6487,11 +6526,11 @@ var AccordionDetails2 = styled23(JoyAccordionDetails2, {
|
|
|
6487
6526
|
}));
|
|
6488
6527
|
function NavigationGroup(props) {
|
|
6489
6528
|
const { title, children, startDecorator, level, ...rest } = props;
|
|
6490
|
-
return /* @__PURE__ */
|
|
6529
|
+
return /* @__PURE__ */ React38.createElement(JoyAccordion2, { ...rest }, /* @__PURE__ */ React38.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ React38.createElement(Stack2, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ React38.createElement(AccordionDetails2, null, children));
|
|
6491
6530
|
}
|
|
6492
6531
|
|
|
6493
6532
|
// src/components/NavigationItem/NavigationItem.tsx
|
|
6494
|
-
import
|
|
6533
|
+
import React39 from "react";
|
|
6495
6534
|
import {
|
|
6496
6535
|
ListItem as JoyListItem,
|
|
6497
6536
|
ListItemButton as JoyListItemButton,
|
|
@@ -6526,7 +6565,7 @@ function NavigationItem(props) {
|
|
|
6526
6565
|
const handleClick = () => {
|
|
6527
6566
|
onClick?.(id);
|
|
6528
6567
|
};
|
|
6529
|
-
return /* @__PURE__ */
|
|
6568
|
+
return /* @__PURE__ */ React39.createElement(JoyListItem, { ...rest }, /* @__PURE__ */ React39.createElement(
|
|
6530
6569
|
ListItemButton,
|
|
6531
6570
|
{
|
|
6532
6571
|
level,
|
|
@@ -6535,21 +6574,21 @@ function NavigationItem(props) {
|
|
|
6535
6574
|
"aria-current": selected,
|
|
6536
6575
|
onClick: handleClick
|
|
6537
6576
|
},
|
|
6538
|
-
startDecorator && /* @__PURE__ */
|
|
6577
|
+
startDecorator && /* @__PURE__ */ React39.createElement(JoyListItemDecorator, null, startDecorator),
|
|
6539
6578
|
children
|
|
6540
6579
|
));
|
|
6541
6580
|
}
|
|
6542
6581
|
|
|
6543
6582
|
// src/components/Navigator/Navigator.tsx
|
|
6544
|
-
import
|
|
6583
|
+
import React40 from "react";
|
|
6545
6584
|
function Navigator(props) {
|
|
6546
6585
|
const { items, level = 0, onSelect } = props;
|
|
6547
6586
|
const handleItemClick = (id) => {
|
|
6548
6587
|
onSelect?.(id);
|
|
6549
6588
|
};
|
|
6550
|
-
return /* @__PURE__ */
|
|
6589
|
+
return /* @__PURE__ */ React40.createElement("div", null, items.map((item, index) => {
|
|
6551
6590
|
if (item.type === "item") {
|
|
6552
|
-
return /* @__PURE__ */
|
|
6591
|
+
return /* @__PURE__ */ React40.createElement(
|
|
6553
6592
|
NavigationItem,
|
|
6554
6593
|
{
|
|
6555
6594
|
key: item.id,
|
|
@@ -6562,7 +6601,7 @@ function Navigator(props) {
|
|
|
6562
6601
|
item.title
|
|
6563
6602
|
);
|
|
6564
6603
|
} else if (item.type === "group") {
|
|
6565
|
-
return /* @__PURE__ */
|
|
6604
|
+
return /* @__PURE__ */ React40.createElement(
|
|
6566
6605
|
NavigationGroup,
|
|
6567
6606
|
{
|
|
6568
6607
|
key: `${item.title}-${index}`,
|
|
@@ -6580,16 +6619,16 @@ function Navigator(props) {
|
|
|
6580
6619
|
Navigator.displayName = "Navigator";
|
|
6581
6620
|
|
|
6582
6621
|
// src/components/PercentageInput/PercentageInput.tsx
|
|
6583
|
-
import
|
|
6622
|
+
import React41, { useCallback as useCallback18, useMemo as useMemo15, useState as useState16 } from "react";
|
|
6584
6623
|
import { NumericFormat as NumericFormat2 } from "react-number-format";
|
|
6585
|
-
import { styled as styled25, useThemeProps as
|
|
6624
|
+
import { styled as styled25, useThemeProps as useThemeProps11 } from "@mui/joy";
|
|
6586
6625
|
var padDecimal = (value, decimalScale) => {
|
|
6587
6626
|
const [integer, decimal = ""] = `${value}`.split(".");
|
|
6588
6627
|
return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
|
|
6589
6628
|
};
|
|
6590
|
-
var TextMaskAdapter9 =
|
|
6629
|
+
var TextMaskAdapter9 = React41.forwardRef(function TextMaskAdapter10(props, ref) {
|
|
6591
6630
|
const { onChange, min, max, ...innerProps } = props;
|
|
6592
|
-
return /* @__PURE__ */
|
|
6631
|
+
return /* @__PURE__ */ React41.createElement(
|
|
6593
6632
|
NumericFormat2,
|
|
6594
6633
|
{
|
|
6595
6634
|
...innerProps,
|
|
@@ -6614,9 +6653,9 @@ var PercentageInputRoot = styled25(Input_default, {
|
|
|
6614
6653
|
slot: "Root",
|
|
6615
6654
|
overridesResolver: (props, styles) => styles.root
|
|
6616
6655
|
})({});
|
|
6617
|
-
var PercentageInput =
|
|
6656
|
+
var PercentageInput = React41.forwardRef(
|
|
6618
6657
|
function PercentageInput2(inProps, ref) {
|
|
6619
|
-
const props =
|
|
6658
|
+
const props = useThemeProps11({ props: inProps, name: "PercentageInput" });
|
|
6620
6659
|
const {
|
|
6621
6660
|
name,
|
|
6622
6661
|
onChange,
|
|
@@ -6637,18 +6676,18 @@ var PercentageInput = React40.forwardRef(
|
|
|
6637
6676
|
const [_value, setValue] = useControlledState(
|
|
6638
6677
|
props.value,
|
|
6639
6678
|
props.defaultValue,
|
|
6640
|
-
|
|
6679
|
+
useCallback18((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
6641
6680
|
);
|
|
6642
|
-
const [internalError, setInternalError] =
|
|
6681
|
+
const [internalError, setInternalError] = useState16(
|
|
6643
6682
|
max && _value && _value > max || min && _value && _value < min
|
|
6644
6683
|
);
|
|
6645
|
-
const value =
|
|
6684
|
+
const value = useMemo15(() => {
|
|
6646
6685
|
if (_value && useMinorUnit) {
|
|
6647
6686
|
return _value / Math.pow(10, maxDecimalScale);
|
|
6648
6687
|
}
|
|
6649
6688
|
return _value;
|
|
6650
6689
|
}, [_value, useMinorUnit, maxDecimalScale]);
|
|
6651
|
-
const handleChange =
|
|
6690
|
+
const handleChange = useCallback18(
|
|
6652
6691
|
(event) => {
|
|
6653
6692
|
if (event.target.value === "") {
|
|
6654
6693
|
setValue(void 0);
|
|
@@ -6665,7 +6704,7 @@ var PercentageInput = React40.forwardRef(
|
|
|
6665
6704
|
},
|
|
6666
6705
|
[setValue, useMinorUnit, maxDecimalScale, min, max]
|
|
6667
6706
|
);
|
|
6668
|
-
return /* @__PURE__ */
|
|
6707
|
+
return /* @__PURE__ */ React41.createElement(
|
|
6669
6708
|
PercentageInputRoot,
|
|
6670
6709
|
{
|
|
6671
6710
|
...innerProps,
|
|
@@ -6706,7 +6745,7 @@ var RadioGroup = MotionRadioGroup;
|
|
|
6706
6745
|
RadioGroup.displayName = "RadioGroup";
|
|
6707
6746
|
|
|
6708
6747
|
// src/components/RadioTileGroup/RadioTileGroup.tsx
|
|
6709
|
-
import
|
|
6748
|
+
import React42 from "react";
|
|
6710
6749
|
import { styled as styled26, radioClasses, sheetClasses } from "@mui/joy";
|
|
6711
6750
|
var RadioTileGroupRoot = styled26(RadioGroup, {
|
|
6712
6751
|
name: "RadioTileGroup",
|
|
@@ -6794,7 +6833,7 @@ function RadioTileGroup(props) {
|
|
|
6794
6833
|
error,
|
|
6795
6834
|
required
|
|
6796
6835
|
} = props;
|
|
6797
|
-
const radioGroup = /* @__PURE__ */
|
|
6836
|
+
const radioGroup = /* @__PURE__ */ React42.createElement(
|
|
6798
6837
|
RadioTileGroupRoot,
|
|
6799
6838
|
{
|
|
6800
6839
|
overlay: true,
|
|
@@ -6805,7 +6844,7 @@ function RadioTileGroup(props) {
|
|
|
6805
6844
|
flex,
|
|
6806
6845
|
columns
|
|
6807
6846
|
},
|
|
6808
|
-
options.map((option) => /* @__PURE__ */
|
|
6847
|
+
options.map((option) => /* @__PURE__ */ React42.createElement(
|
|
6809
6848
|
RadioTileSheet,
|
|
6810
6849
|
{
|
|
6811
6850
|
key: option.value,
|
|
@@ -6815,7 +6854,7 @@ function RadioTileGroup(props) {
|
|
|
6815
6854
|
flex,
|
|
6816
6855
|
textAlign
|
|
6817
6856
|
},
|
|
6818
|
-
/* @__PURE__ */
|
|
6857
|
+
/* @__PURE__ */ React42.createElement(
|
|
6819
6858
|
Radio,
|
|
6820
6859
|
{
|
|
6821
6860
|
id: `${option.value}`,
|
|
@@ -6843,7 +6882,7 @@ function RadioTileGroup(props) {
|
|
|
6843
6882
|
}
|
|
6844
6883
|
}
|
|
6845
6884
|
),
|
|
6846
|
-
option.startDecorator && /* @__PURE__ */
|
|
6885
|
+
option.startDecorator && /* @__PURE__ */ React42.createElement(
|
|
6847
6886
|
Box_default,
|
|
6848
6887
|
{
|
|
6849
6888
|
sx: {
|
|
@@ -6864,21 +6903,21 @@ function RadioTileGroup(props) {
|
|
|
6864
6903
|
)
|
|
6865
6904
|
))
|
|
6866
6905
|
);
|
|
6867
|
-
return /* @__PURE__ */
|
|
6906
|
+
return /* @__PURE__ */ React42.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ React42.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ React42.createElement(FormHelperText_default, null, helperText));
|
|
6868
6907
|
}
|
|
6869
6908
|
RadioTileGroup.displayName = "RadioTileGroup";
|
|
6870
6909
|
|
|
6871
6910
|
// src/components/RadioList/RadioList.tsx
|
|
6872
|
-
import
|
|
6911
|
+
import React43 from "react";
|
|
6873
6912
|
function RadioList(props) {
|
|
6874
6913
|
const { items, ...innerProps } = props;
|
|
6875
|
-
return /* @__PURE__ */
|
|
6914
|
+
return /* @__PURE__ */ React43.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ React43.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
|
|
6876
6915
|
}
|
|
6877
6916
|
RadioList.displayName = "RadioList";
|
|
6878
6917
|
|
|
6879
6918
|
// src/components/SearchBar/SearchBar.tsx
|
|
6880
|
-
import * as
|
|
6881
|
-
import { styled as styled27, useThemeProps as
|
|
6919
|
+
import * as React44 from "react";
|
|
6920
|
+
import { styled as styled27, useThemeProps as useThemeProps12 } from "@mui/joy/styles";
|
|
6882
6921
|
import Box2 from "@mui/joy/Box";
|
|
6883
6922
|
import SearchRoundedIcon from "@mui/icons-material/SearchRounded";
|
|
6884
6923
|
import CloseRoundedIcon from "@mui/icons-material/CloseRounded";
|
|
@@ -6897,11 +6936,11 @@ var SearchBarRoot = styled27(Box2, {
|
|
|
6897
6936
|
overflow: "hidden",
|
|
6898
6937
|
flexShrink: 0
|
|
6899
6938
|
}));
|
|
6900
|
-
var SearchBar =
|
|
6901
|
-
const props =
|
|
6939
|
+
var SearchBar = React44.forwardRef(function SearchBar2(inProps, ref) {
|
|
6940
|
+
const props = useThemeProps12({ props: inProps, name: "SearchBar" });
|
|
6902
6941
|
const { showSelect = false, options, placeholder: placeholderProp, value, onChange, onSearch, ...other } = props;
|
|
6903
|
-
const [selectVal, setSelectVal] =
|
|
6904
|
-
const [isHovered, setIsHovered] =
|
|
6942
|
+
const [selectVal, setSelectVal] = React44.useState(options?.[0]?.value ?? "");
|
|
6943
|
+
const [isHovered, setIsHovered] = React44.useState(false);
|
|
6905
6944
|
const ownerState = { showSelect };
|
|
6906
6945
|
const selectedOption = options?.find((o) => o.value === selectVal);
|
|
6907
6946
|
const placeholder = placeholderProp ?? selectedOption?.placeholder ?? "";
|
|
@@ -6916,7 +6955,7 @@ var SearchBar = React43.forwardRef(function SearchBar2(inProps, ref) {
|
|
|
6916
6955
|
handleSearch();
|
|
6917
6956
|
}
|
|
6918
6957
|
};
|
|
6919
|
-
return /* @__PURE__ */
|
|
6958
|
+
return /* @__PURE__ */ React44.createElement(SearchBarRoot, { ref, ownerState, ...other }, showSelect && options && /* @__PURE__ */ React44.createElement(React44.Fragment, null, /* @__PURE__ */ React44.createElement(
|
|
6920
6959
|
Select,
|
|
6921
6960
|
{
|
|
6922
6961
|
variant: "plain",
|
|
@@ -6932,7 +6971,7 @@ var SearchBar = React43.forwardRef(function SearchBar2(inProps, ref) {
|
|
|
6932
6971
|
}
|
|
6933
6972
|
}
|
|
6934
6973
|
}
|
|
6935
|
-
), /* @__PURE__ */
|
|
6974
|
+
), /* @__PURE__ */ React44.createElement(Divider, { orientation: "vertical", sx: { height: (theme) => theme.spacing(4), alignSelf: "center" } })), /* @__PURE__ */ React44.createElement(
|
|
6936
6975
|
Input,
|
|
6937
6976
|
{
|
|
6938
6977
|
variant: "plain",
|
|
@@ -6945,7 +6984,7 @@ var SearchBar = React43.forwardRef(function SearchBar2(inProps, ref) {
|
|
|
6945
6984
|
sx: { flex: 1, minWidth: 0 },
|
|
6946
6985
|
onMouseEnter: () => setIsHovered(true),
|
|
6947
6986
|
onMouseLeave: () => setIsHovered(false),
|
|
6948
|
-
endDecorator: isHovered && value ? /* @__PURE__ */
|
|
6987
|
+
endDecorator: isHovered && value ? /* @__PURE__ */ React44.createElement(
|
|
6949
6988
|
IconButton,
|
|
6950
6989
|
{
|
|
6951
6990
|
variant: "plain",
|
|
@@ -6955,15 +6994,15 @@ var SearchBar = React43.forwardRef(function SearchBar2(inProps, ref) {
|
|
|
6955
6994
|
onClick: handleClear,
|
|
6956
6995
|
"aria-label": "Clear"
|
|
6957
6996
|
},
|
|
6958
|
-
/* @__PURE__ */
|
|
6997
|
+
/* @__PURE__ */ React44.createElement(CloseRoundedIcon, null)
|
|
6959
6998
|
) : void 0
|
|
6960
6999
|
}
|
|
6961
|
-
), /* @__PURE__ */
|
|
7000
|
+
), /* @__PURE__ */ React44.createElement(IconButton, { variant: "plain", size: "sm", color: "neutral", onClick: handleSearch, "aria-label": "Search" }, /* @__PURE__ */ React44.createElement(SearchRoundedIcon, null)));
|
|
6962
7001
|
});
|
|
6963
7002
|
SearchBar.displayName = "SearchBar";
|
|
6964
7003
|
|
|
6965
7004
|
// src/components/Stepper/Stepper.tsx
|
|
6966
|
-
import
|
|
7005
|
+
import React45 from "react";
|
|
6967
7006
|
import {
|
|
6968
7007
|
Stepper as JoyStepper,
|
|
6969
7008
|
Step as JoyStep,
|
|
@@ -6999,7 +7038,7 @@ function Stepper(props) {
|
|
|
6999
7038
|
stepOrientation = "horizontal"
|
|
7000
7039
|
} = props;
|
|
7001
7040
|
const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
|
|
7002
|
-
return /* @__PURE__ */
|
|
7041
|
+
return /* @__PURE__ */ React45.createElement(
|
|
7003
7042
|
MotionStepper,
|
|
7004
7043
|
{
|
|
7005
7044
|
orientation,
|
|
@@ -7038,23 +7077,23 @@ function Stepper(props) {
|
|
|
7038
7077
|
const completed = activeStep > i + 1;
|
|
7039
7078
|
const disabled = activeStep < i + 1;
|
|
7040
7079
|
const hasContent = step.label || step.extraContent;
|
|
7041
|
-
return /* @__PURE__ */
|
|
7080
|
+
return /* @__PURE__ */ React45.createElement(
|
|
7042
7081
|
Step,
|
|
7043
7082
|
{
|
|
7044
7083
|
key: `step-${i}`,
|
|
7045
|
-
indicator: /* @__PURE__ */
|
|
7084
|
+
indicator: /* @__PURE__ */ React45.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ React45.createElement(CheckIcon, null) : step.indicatorContent),
|
|
7046
7085
|
active,
|
|
7047
7086
|
completed,
|
|
7048
7087
|
disabled,
|
|
7049
7088
|
orientation: effectiveStepOrientation
|
|
7050
7089
|
},
|
|
7051
|
-
hasContent && /* @__PURE__ */
|
|
7090
|
+
hasContent && /* @__PURE__ */ React45.createElement(
|
|
7052
7091
|
Stack_default,
|
|
7053
7092
|
{
|
|
7054
7093
|
sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
|
|
7055
7094
|
},
|
|
7056
|
-
step.label && /* @__PURE__ */
|
|
7057
|
-
step.extraContent && /* @__PURE__ */
|
|
7095
|
+
step.label && /* @__PURE__ */ React45.createElement(Typography_default, { level: "title-sm" }, step.label),
|
|
7096
|
+
step.extraContent && /* @__PURE__ */ React45.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
|
|
7058
7097
|
)
|
|
7059
7098
|
);
|
|
7060
7099
|
})
|
|
@@ -7063,7 +7102,7 @@ function Stepper(props) {
|
|
|
7063
7102
|
Stepper.displayName = "Stepper";
|
|
7064
7103
|
|
|
7065
7104
|
// src/components/Switch/Switch.tsx
|
|
7066
|
-
import
|
|
7105
|
+
import React46 from "react";
|
|
7067
7106
|
import { Switch as JoySwitch, styled as styled29, switchClasses } from "@mui/joy";
|
|
7068
7107
|
import { motion as motion28 } from "framer-motion";
|
|
7069
7108
|
var MotionSwitch = motion28(JoySwitch);
|
|
@@ -7085,14 +7124,14 @@ var StyledThumb = styled29(motion28.div)({
|
|
|
7085
7124
|
right: "var(--Switch-thumbOffset)"
|
|
7086
7125
|
}
|
|
7087
7126
|
});
|
|
7088
|
-
var Thumb = (props) => /* @__PURE__ */
|
|
7127
|
+
var Thumb = (props) => /* @__PURE__ */ React46.createElement(StyledThumb, { ...props, layout: true, transition: spring });
|
|
7089
7128
|
var spring = {
|
|
7090
7129
|
type: "spring",
|
|
7091
7130
|
stiffness: 700,
|
|
7092
7131
|
damping: 30
|
|
7093
7132
|
};
|
|
7094
7133
|
var Switch = (props) => {
|
|
7095
|
-
return /* @__PURE__ */
|
|
7134
|
+
return /* @__PURE__ */ React46.createElement(
|
|
7096
7135
|
MotionSwitch,
|
|
7097
7136
|
{
|
|
7098
7137
|
...props,
|
|
@@ -7106,7 +7145,7 @@ var Switch = (props) => {
|
|
|
7106
7145
|
Switch.displayName = "Switch";
|
|
7107
7146
|
|
|
7108
7147
|
// src/components/Tabs/Tabs.tsx
|
|
7109
|
-
import
|
|
7148
|
+
import React47, { forwardRef as forwardRef12 } from "react";
|
|
7110
7149
|
import {
|
|
7111
7150
|
Tabs as JoyTabs,
|
|
7112
7151
|
Tab as JoyTab,
|
|
@@ -7130,14 +7169,14 @@ var StyledTab = styled30(JoyTab)(({ theme }) => ({
|
|
|
7130
7169
|
}
|
|
7131
7170
|
}));
|
|
7132
7171
|
var Tab = forwardRef12(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
|
|
7133
|
-
return /* @__PURE__ */
|
|
7172
|
+
return /* @__PURE__ */ React47.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
|
|
7134
7173
|
});
|
|
7135
7174
|
Tab.displayName = "Tab";
|
|
7136
7175
|
var TabList = JoyTabList;
|
|
7137
7176
|
var TabPanel = JoyTabPanel;
|
|
7138
7177
|
|
|
7139
7178
|
// src/components/ThemeProvider/ThemeProvider.tsx
|
|
7140
|
-
import
|
|
7179
|
+
import React48 from "react";
|
|
7141
7180
|
import {
|
|
7142
7181
|
CssBaseline,
|
|
7143
7182
|
CssVarsProvider,
|
|
@@ -7389,17 +7428,32 @@ var defaultTheme = extendTheme({
|
|
|
7389
7428
|
fontWeight: "var(--ceed-fontWeight-xl, 700)"
|
|
7390
7429
|
}
|
|
7391
7430
|
}
|
|
7431
|
+
},
|
|
7432
|
+
Alert: {
|
|
7433
|
+
defaultProps: {
|
|
7434
|
+
size: "md"
|
|
7435
|
+
}
|
|
7436
|
+
},
|
|
7437
|
+
Pagination: {
|
|
7438
|
+
defaultProps: {
|
|
7439
|
+
size: "md"
|
|
7440
|
+
}
|
|
7441
|
+
},
|
|
7442
|
+
FilterableCheckboxGroup: {
|
|
7443
|
+
defaultProps: {
|
|
7444
|
+
size: "md"
|
|
7445
|
+
}
|
|
7392
7446
|
}
|
|
7393
7447
|
}
|
|
7394
7448
|
});
|
|
7395
7449
|
function ThemeProvider(props) {
|
|
7396
7450
|
const theme = props.theme || defaultTheme;
|
|
7397
|
-
return /* @__PURE__ */
|
|
7451
|
+
return /* @__PURE__ */ React48.createElement(React48.Fragment, null, /* @__PURE__ */ React48.createElement(CssVarsProvider, { theme }, /* @__PURE__ */ React48.createElement(CssBaseline, null), props.children));
|
|
7398
7452
|
}
|
|
7399
7453
|
ThemeProvider.displayName = "ThemeProvider";
|
|
7400
7454
|
|
|
7401
7455
|
// src/components/Uploader/Uploader.tsx
|
|
7402
|
-
import
|
|
7456
|
+
import React49, { useCallback as useCallback19, useEffect as useEffect13, useMemo as useMemo16, useRef as useRef12, useState as useState18 } from "react";
|
|
7403
7457
|
import { styled as styled31, Input as Input2 } from "@mui/joy";
|
|
7404
7458
|
import MuiFileUploadIcon from "@mui/icons-material/CloudUploadRounded";
|
|
7405
7459
|
import MuiUploadFileIcon from "@mui/icons-material/UploadFileRounded";
|
|
@@ -7476,7 +7530,7 @@ var getFileSize = (n) => {
|
|
|
7476
7530
|
};
|
|
7477
7531
|
var Preview = (props) => {
|
|
7478
7532
|
const { files, uploaded, onDelete } = props;
|
|
7479
|
-
return /* @__PURE__ */
|
|
7533
|
+
return /* @__PURE__ */ React49.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ React49.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ React49.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ React49.createElement(UploadFileIcon, null), /* @__PURE__ */ React49.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ React49.createElement(
|
|
7480
7534
|
Typography_default,
|
|
7481
7535
|
{
|
|
7482
7536
|
level: "body-sm",
|
|
@@ -7488,7 +7542,7 @@ var Preview = (props) => {
|
|
|
7488
7542
|
}
|
|
7489
7543
|
},
|
|
7490
7544
|
file.name
|
|
7491
|
-
), !!file.size && /* @__PURE__ */
|
|
7545
|
+
), !!file.size && /* @__PURE__ */ React49.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ React49.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ React49.createElement(ClearIcon2, null))))));
|
|
7492
7546
|
};
|
|
7493
7547
|
var UploaderRoot = styled31(Stack_default, {
|
|
7494
7548
|
name: "Uploader",
|
|
@@ -7531,232 +7585,230 @@ var UploaderIcon = styled31(MuiFileUploadIcon, {
|
|
|
7531
7585
|
}
|
|
7532
7586
|
})
|
|
7533
7587
|
);
|
|
7534
|
-
var Uploader =
|
|
7535
|
-
|
|
7536
|
-
|
|
7537
|
-
|
|
7538
|
-
|
|
7539
|
-
|
|
7540
|
-
|
|
7541
|
-
|
|
7542
|
-
|
|
7543
|
-
|
|
7544
|
-
|
|
7545
|
-
|
|
7546
|
-
|
|
7547
|
-
|
|
7548
|
-
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
|
|
7555
|
-
|
|
7556
|
-
|
|
7557
|
-
|
|
7558
|
-
|
|
7559
|
-
(
|
|
7560
|
-
|
|
7561
|
-
return ALL_EXTENSIONS_BY_TYPE[type];
|
|
7562
|
-
}
|
|
7563
|
-
return type;
|
|
7564
|
-
}),
|
|
7565
|
-
[accepts]
|
|
7566
|
-
);
|
|
7567
|
-
const helperText = useMemo15(() => {
|
|
7568
|
-
if (helperTextProp) {
|
|
7569
|
-
return helperTextProp;
|
|
7588
|
+
var Uploader = React49.memo((props) => {
|
|
7589
|
+
const {
|
|
7590
|
+
accept,
|
|
7591
|
+
minCount,
|
|
7592
|
+
maxCount,
|
|
7593
|
+
name,
|
|
7594
|
+
size,
|
|
7595
|
+
maxFileSize,
|
|
7596
|
+
maxFileTotalSize,
|
|
7597
|
+
onChange,
|
|
7598
|
+
label,
|
|
7599
|
+
disabled,
|
|
7600
|
+
onDelete,
|
|
7601
|
+
error: errorProp,
|
|
7602
|
+
helperText: helperTextProp
|
|
7603
|
+
} = props;
|
|
7604
|
+
const dropZoneRef = useRef12(null);
|
|
7605
|
+
const inputRef = useRef12(null);
|
|
7606
|
+
const [errorText, setErrorText] = useState18();
|
|
7607
|
+
const [files, setFiles] = useState18([]);
|
|
7608
|
+
const [uploaded, setUploaded] = useState18(props.uploaded || []);
|
|
7609
|
+
const [previewState, setPreviewState] = useState18("idle");
|
|
7610
|
+
const accepts = useMemo16(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
|
|
7611
|
+
const parsedAccepts = useMemo16(
|
|
7612
|
+
() => accepts.flatMap((type) => {
|
|
7613
|
+
if (["image/*", "video/*", "audio/*"].includes(type)) {
|
|
7614
|
+
return ALL_EXTENSIONS_BY_TYPE[type];
|
|
7570
7615
|
}
|
|
7571
|
-
|
|
7572
|
-
|
|
7573
|
-
|
|
7574
|
-
|
|
7575
|
-
|
|
7576
|
-
|
|
7577
|
-
|
|
7578
|
-
|
|
7579
|
-
|
|
7616
|
+
return type;
|
|
7617
|
+
}),
|
|
7618
|
+
[accepts]
|
|
7619
|
+
);
|
|
7620
|
+
const helperText = useMemo16(() => {
|
|
7621
|
+
if (helperTextProp) {
|
|
7622
|
+
return helperTextProp;
|
|
7623
|
+
}
|
|
7624
|
+
const [allAcceptedTypes, acceptedTypes] = [
|
|
7625
|
+
accepts.filter((accept2) => ["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
|
|
7626
|
+
const [type] = accept2.split("/");
|
|
7627
|
+
return type.toLowerCase();
|
|
7628
|
+
}),
|
|
7629
|
+
accepts.filter((accept2) => !["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
|
|
7630
|
+
const [extensionOrType, subType] = accept2.split("/");
|
|
7631
|
+
if (!subType) {
|
|
7632
|
+
return extensionOrType.toUpperCase().replace(".", "");
|
|
7633
|
+
}
|
|
7634
|
+
return subType.toUpperCase();
|
|
7635
|
+
})
|
|
7636
|
+
];
|
|
7637
|
+
const helperTexts = [];
|
|
7638
|
+
if (allAcceptedTypes.length > 0) {
|
|
7639
|
+
helperTexts.push(`Any ${allAcceptedTypes.join(", ")} file`);
|
|
7640
|
+
}
|
|
7641
|
+
if (acceptedTypes.length > 0) {
|
|
7642
|
+
helperTexts.push(acceptedTypes.join(", "));
|
|
7643
|
+
}
|
|
7644
|
+
helperTexts.push(`Maximum ${getFileSize(maxFileTotalSize)}`);
|
|
7645
|
+
if (maxCount) {
|
|
7646
|
+
helperTexts.push(`Up to ${maxCount} ${maxCount === 1 ? "file" : "files"}`);
|
|
7647
|
+
}
|
|
7648
|
+
return helperTexts.join(", ");
|
|
7649
|
+
}, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
|
|
7650
|
+
const error = useMemo16(() => !!errorText || errorProp, [errorProp, errorText]);
|
|
7651
|
+
const showDropZone = useMemo16(
|
|
7652
|
+
() => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
|
|
7653
|
+
[files, maxCount, uploaded]
|
|
7654
|
+
);
|
|
7655
|
+
const addFiles = useCallback19(
|
|
7656
|
+
(uploads) => {
|
|
7657
|
+
try {
|
|
7658
|
+
const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
|
|
7659
|
+
const fileExtension = new RegExp(`${types.join("|")}`);
|
|
7660
|
+
uploads.forEach((file) => {
|
|
7661
|
+
const ext = file.name.split(".").pop() || "";
|
|
7662
|
+
if (!fileExtension.test(ext)) {
|
|
7663
|
+
throw new Error("Please upload the correct file type.");
|
|
7580
7664
|
}
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
];
|
|
7584
|
-
const helperTexts = [];
|
|
7585
|
-
if (allAcceptedTypes.length > 0) {
|
|
7586
|
-
helperTexts.push(`Any ${allAcceptedTypes.join(", ")} file`);
|
|
7587
|
-
}
|
|
7588
|
-
if (acceptedTypes.length > 0) {
|
|
7589
|
-
helperTexts.push(acceptedTypes.join(", "));
|
|
7590
|
-
}
|
|
7591
|
-
helperTexts.push(`Maximum ${getFileSize(maxFileTotalSize)}`);
|
|
7592
|
-
if (maxCount) {
|
|
7593
|
-
helperTexts.push(`Up to ${maxCount} ${maxCount === 1 ? "file" : "files"}`);
|
|
7594
|
-
}
|
|
7595
|
-
return helperTexts.join(", ");
|
|
7596
|
-
}, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
|
|
7597
|
-
const error = useMemo15(() => !!errorText || errorProp, [errorProp, errorText]);
|
|
7598
|
-
const showDropZone = useMemo15(
|
|
7599
|
-
() => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
|
|
7600
|
-
[files, maxCount, uploaded]
|
|
7601
|
-
);
|
|
7602
|
-
const addFiles = useCallback18(
|
|
7603
|
-
(uploads) => {
|
|
7604
|
-
try {
|
|
7605
|
-
const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
|
|
7606
|
-
const fileExtension = new RegExp(`${types.join("|")}`);
|
|
7665
|
+
});
|
|
7666
|
+
if (maxFileSize) {
|
|
7607
7667
|
uploads.forEach((file) => {
|
|
7608
|
-
|
|
7609
|
-
|
|
7610
|
-
|
|
7668
|
+
if (file.size > maxFileSize) {
|
|
7669
|
+
throw new Error(
|
|
7670
|
+
`One or more files exceeded the maximum file size. Each file size must be ${getFileSize(
|
|
7671
|
+
maxFileSize
|
|
7672
|
+
)} or less.`
|
|
7673
|
+
);
|
|
7611
7674
|
}
|
|
7612
7675
|
});
|
|
7613
|
-
|
|
7614
|
-
|
|
7615
|
-
|
|
7616
|
-
|
|
7617
|
-
|
|
7618
|
-
|
|
7619
|
-
|
|
7620
|
-
|
|
7621
|
-
|
|
7622
|
-
|
|
7623
|
-
|
|
7624
|
-
|
|
7625
|
-
|
|
7626
|
-
throw new Error(`The total file size exceeds the maximum limit.`);
|
|
7627
|
-
}
|
|
7628
|
-
const newFiles = [...files, ...uploads];
|
|
7629
|
-
if (maxCount && [...uploaded, ...newFiles].length > maxCount) {
|
|
7630
|
-
throw new Error(`Exceeded the maximum number of files.`);
|
|
7676
|
+
}
|
|
7677
|
+
const totalFileSize = [...files, ...uploads].reduce((acc, file) => acc + file.size, 0);
|
|
7678
|
+
if (totalFileSize > maxFileTotalSize) {
|
|
7679
|
+
throw new Error(`The total file size exceeds the maximum limit.`);
|
|
7680
|
+
}
|
|
7681
|
+
const newFiles = [...files, ...uploads];
|
|
7682
|
+
if (maxCount && [...uploaded, ...newFiles].length > maxCount) {
|
|
7683
|
+
throw new Error(`Exceeded the maximum number of files.`);
|
|
7684
|
+
}
|
|
7685
|
+
onChange?.({
|
|
7686
|
+
target: {
|
|
7687
|
+
name,
|
|
7688
|
+
value: newFiles
|
|
7631
7689
|
}
|
|
7690
|
+
});
|
|
7691
|
+
setFiles(newFiles);
|
|
7692
|
+
setErrorText(void 0);
|
|
7693
|
+
} catch (error2) {
|
|
7694
|
+
const err = error2;
|
|
7695
|
+
setErrorText(err.message);
|
|
7696
|
+
}
|
|
7697
|
+
},
|
|
7698
|
+
[files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
|
|
7699
|
+
);
|
|
7700
|
+
useEffect13(() => {
|
|
7701
|
+
if (!dropZoneRef.current || disabled) {
|
|
7702
|
+
return;
|
|
7703
|
+
}
|
|
7704
|
+
let cleanup;
|
|
7705
|
+
Promise.all([esmFiles.combine, esmFiles.adapter, esmFiles.file, esmFiles.preventUnhandled]).then(
|
|
7706
|
+
([combineModule, adapterModule, fileModule, preventUnhandledModule]) => {
|
|
7707
|
+
const { combine } = combineModule;
|
|
7708
|
+
const { dropTargetForExternal, monitorForExternal } = adapterModule;
|
|
7709
|
+
const { containsFiles, getFiles } = fileModule;
|
|
7710
|
+
const { preventUnhandled } = preventUnhandledModule;
|
|
7711
|
+
cleanup = combine(
|
|
7712
|
+
dropTargetForExternal({
|
|
7713
|
+
element: dropZoneRef.current,
|
|
7714
|
+
canDrop: containsFiles,
|
|
7715
|
+
onDragEnter: () => setPreviewState("over"),
|
|
7716
|
+
onDragLeave: () => setPreviewState("potential"),
|
|
7717
|
+
onDrop: async ({ source }) => {
|
|
7718
|
+
const files2 = await getFiles({ source });
|
|
7719
|
+
addFiles(files2);
|
|
7720
|
+
}
|
|
7721
|
+
}),
|
|
7722
|
+
monitorForExternal({
|
|
7723
|
+
canMonitor: containsFiles,
|
|
7724
|
+
onDragStart: () => {
|
|
7725
|
+
setPreviewState("potential");
|
|
7726
|
+
preventUnhandled.start();
|
|
7727
|
+
},
|
|
7728
|
+
onDrop: () => {
|
|
7729
|
+
setPreviewState("idle");
|
|
7730
|
+
preventUnhandled.stop();
|
|
7731
|
+
}
|
|
7732
|
+
})
|
|
7733
|
+
);
|
|
7734
|
+
}
|
|
7735
|
+
);
|
|
7736
|
+
return () => cleanup?.();
|
|
7737
|
+
}, [disabled, addFiles]);
|
|
7738
|
+
useEffect13(() => {
|
|
7739
|
+
if (inputRef.current && minCount) {
|
|
7740
|
+
if (files.length < minCount) {
|
|
7741
|
+
inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
|
|
7742
|
+
} else {
|
|
7743
|
+
inputRef.current.setCustomValidity("");
|
|
7744
|
+
}
|
|
7745
|
+
}
|
|
7746
|
+
}, [inputRef, files, minCount]);
|
|
7747
|
+
const handleFileChanged = useCallback19(
|
|
7748
|
+
(event) => {
|
|
7749
|
+
const files2 = Array.from(event.target.files || []);
|
|
7750
|
+
addFiles(files2);
|
|
7751
|
+
},
|
|
7752
|
+
[addFiles]
|
|
7753
|
+
);
|
|
7754
|
+
const handleDeleteFile = useCallback19(
|
|
7755
|
+
(deletedFile) => {
|
|
7756
|
+
if (deletedFile instanceof File) {
|
|
7757
|
+
setFiles((current) => {
|
|
7632
7758
|
onChange?.({
|
|
7633
7759
|
target: {
|
|
7634
7760
|
name,
|
|
7635
|
-
value:
|
|
7761
|
+
value: current.filter((file) => file !== deletedFile)
|
|
7636
7762
|
}
|
|
7637
7763
|
});
|
|
7638
|
-
|
|
7639
|
-
|
|
7640
|
-
|
|
7641
|
-
|
|
7642
|
-
|
|
7643
|
-
}
|
|
7644
|
-
},
|
|
7645
|
-
[files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
|
|
7646
|
-
);
|
|
7647
|
-
useEffect13(() => {
|
|
7648
|
-
if (!dropZoneRef.current || disabled) {
|
|
7649
|
-
return;
|
|
7650
|
-
}
|
|
7651
|
-
let cleanup;
|
|
7652
|
-
Promise.all([esmFiles.combine, esmFiles.adapter, esmFiles.file, esmFiles.preventUnhandled]).then(
|
|
7653
|
-
([combineModule, adapterModule, fileModule, preventUnhandledModule]) => {
|
|
7654
|
-
const { combine } = combineModule;
|
|
7655
|
-
const { dropTargetForExternal, monitorForExternal } = adapterModule;
|
|
7656
|
-
const { containsFiles, getFiles } = fileModule;
|
|
7657
|
-
const { preventUnhandled } = preventUnhandledModule;
|
|
7658
|
-
cleanup = combine(
|
|
7659
|
-
dropTargetForExternal({
|
|
7660
|
-
element: dropZoneRef.current,
|
|
7661
|
-
canDrop: containsFiles,
|
|
7662
|
-
onDragEnter: () => setPreviewState("over"),
|
|
7663
|
-
onDragLeave: () => setPreviewState("potential"),
|
|
7664
|
-
onDrop: async ({ source }) => {
|
|
7665
|
-
const files2 = await getFiles({ source });
|
|
7666
|
-
addFiles(files2);
|
|
7667
|
-
}
|
|
7668
|
-
}),
|
|
7669
|
-
monitorForExternal({
|
|
7670
|
-
canMonitor: containsFiles,
|
|
7671
|
-
onDragStart: () => {
|
|
7672
|
-
setPreviewState("potential");
|
|
7673
|
-
preventUnhandled.start();
|
|
7674
|
-
},
|
|
7675
|
-
onDrop: () => {
|
|
7676
|
-
setPreviewState("idle");
|
|
7677
|
-
preventUnhandled.stop();
|
|
7678
|
-
}
|
|
7679
|
-
})
|
|
7680
|
-
);
|
|
7681
|
-
}
|
|
7682
|
-
);
|
|
7683
|
-
return () => cleanup?.();
|
|
7684
|
-
}, [disabled, addFiles]);
|
|
7685
|
-
useEffect13(() => {
|
|
7686
|
-
if (inputRef.current && minCount) {
|
|
7687
|
-
if (files.length < minCount) {
|
|
7688
|
-
inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
|
|
7689
|
-
} else {
|
|
7690
|
-
inputRef.current.setCustomValidity("");
|
|
7691
|
-
}
|
|
7764
|
+
return current.filter((file) => file !== deletedFile);
|
|
7765
|
+
});
|
|
7766
|
+
} else {
|
|
7767
|
+
setUploaded((uploaded2) => uploaded2.filter((file) => file.id !== deletedFile.id));
|
|
7768
|
+
onDelete?.(deletedFile);
|
|
7692
7769
|
}
|
|
7693
|
-
|
|
7694
|
-
|
|
7695
|
-
|
|
7696
|
-
|
|
7697
|
-
|
|
7698
|
-
|
|
7699
|
-
|
|
7700
|
-
|
|
7701
|
-
|
|
7702
|
-
|
|
7703
|
-
|
|
7704
|
-
|
|
7705
|
-
|
|
7706
|
-
|
|
7707
|
-
|
|
7708
|
-
|
|
7709
|
-
|
|
7710
|
-
|
|
7711
|
-
|
|
7712
|
-
});
|
|
7713
|
-
} else {
|
|
7714
|
-
setUploaded((uploaded2) => uploaded2.filter((file) => file.id !== deletedFile.id));
|
|
7715
|
-
onDelete?.(deletedFile);
|
|
7716
|
-
}
|
|
7717
|
-
setErrorText(void 0);
|
|
7718
|
-
},
|
|
7719
|
-
[name, onChange, onDelete]
|
|
7720
|
-
);
|
|
7721
|
-
const handleUploaderButtonClick = useCallback18(() => {
|
|
7722
|
-
inputRef.current?.click();
|
|
7723
|
-
}, []);
|
|
7724
|
-
const uploader = /* @__PURE__ */ React48.createElement(
|
|
7725
|
-
FileDropZone,
|
|
7770
|
+
setErrorText(void 0);
|
|
7771
|
+
},
|
|
7772
|
+
[name, onChange, onDelete]
|
|
7773
|
+
);
|
|
7774
|
+
const handleUploaderButtonClick = useCallback19(() => {
|
|
7775
|
+
inputRef.current?.click();
|
|
7776
|
+
}, []);
|
|
7777
|
+
const uploader = /* @__PURE__ */ React49.createElement(
|
|
7778
|
+
FileDropZone,
|
|
7779
|
+
{
|
|
7780
|
+
state: previewState,
|
|
7781
|
+
error: !!(error || errorText),
|
|
7782
|
+
disabled,
|
|
7783
|
+
ref: dropZoneRef,
|
|
7784
|
+
onClick: handleUploaderButtonClick
|
|
7785
|
+
},
|
|
7786
|
+
/* @__PURE__ */ React49.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React49.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
|
|
7787
|
+
/* @__PURE__ */ React49.createElement(
|
|
7788
|
+
VisuallyHiddenInput,
|
|
7726
7789
|
{
|
|
7727
|
-
state: previewState,
|
|
7728
|
-
error: !!(error || errorText),
|
|
7729
7790
|
disabled,
|
|
7730
|
-
|
|
7731
|
-
|
|
7732
|
-
|
|
7733
|
-
|
|
7734
|
-
|
|
7735
|
-
|
|
7736
|
-
{
|
|
7737
|
-
|
|
7738
|
-
|
|
7739
|
-
|
|
7740
|
-
|
|
7741
|
-
|
|
7742
|
-
|
|
7743
|
-
|
|
7744
|
-
slotProps: {
|
|
7745
|
-
input: {
|
|
7746
|
-
multiple: true,
|
|
7747
|
-
accept: parsedAccepts.join(","),
|
|
7748
|
-
type: "file",
|
|
7749
|
-
ref: inputRef,
|
|
7750
|
-
role: "button",
|
|
7751
|
-
onChange: handleFileChanged
|
|
7752
|
-
}
|
|
7791
|
+
required: !!minCount,
|
|
7792
|
+
onInvalid: (e) => {
|
|
7793
|
+
if (minCount && files.length < minCount) {
|
|
7794
|
+
setErrorText(`Please choose ${minCount} ${minCount === 1 ? "file" : "files"} to upload.`);
|
|
7795
|
+
}
|
|
7796
|
+
},
|
|
7797
|
+
slotProps: {
|
|
7798
|
+
input: {
|
|
7799
|
+
multiple: true,
|
|
7800
|
+
accept: parsedAccepts.join(","),
|
|
7801
|
+
type: "file",
|
|
7802
|
+
ref: inputRef,
|
|
7803
|
+
role: "button",
|
|
7804
|
+
onChange: handleFileChanged
|
|
7753
7805
|
}
|
|
7754
7806
|
}
|
|
7755
|
-
|
|
7756
|
-
)
|
|
7757
|
-
|
|
7758
|
-
}
|
|
7759
|
-
);
|
|
7807
|
+
}
|
|
7808
|
+
)
|
|
7809
|
+
);
|
|
7810
|
+
return /* @__PURE__ */ React49.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ React49.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ React49.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ React49.createElement(FormHelperText_default, null, /* @__PURE__ */ React49.createElement(Stack_default, null, errorText && /* @__PURE__ */ React49.createElement("div", null, errorText), /* @__PURE__ */ React49.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ React49.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
|
|
7811
|
+
});
|
|
7760
7812
|
Uploader.displayName = "Uploader";
|
|
7761
7813
|
export {
|
|
7762
7814
|
Accordion,
|
|
@@ -7817,7 +7869,8 @@ export {
|
|
|
7817
7869
|
ListSubheader,
|
|
7818
7870
|
Markdown,
|
|
7819
7871
|
Menu,
|
|
7820
|
-
MenuButton,
|
|
7872
|
+
MenuButton2 as MenuButton,
|
|
7873
|
+
MenuButton as MenuButtonTrigger,
|
|
7821
7874
|
MenuItem,
|
|
7822
7875
|
Modal,
|
|
7823
7876
|
ModalClose,
|
|
@@ -7932,6 +7985,7 @@ export {
|
|
|
7932
7985
|
tooltipClasses2 as tooltipClasses,
|
|
7933
7986
|
typographyClasses,
|
|
7934
7987
|
useColorScheme,
|
|
7988
|
+
useMenuButton,
|
|
7935
7989
|
useTheme2 as useTheme,
|
|
7936
|
-
|
|
7990
|
+
useThemeProps13 as useThemeProps
|
|
7937
7991
|
};
|