@ceed/cds 1.40.3-next.6 → 1.40.3-next.8
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/DataTable/components.d.ts +5 -5
- package/dist/components/DataTable/hooks.d.ts +7 -8
- package/dist/components/DataTable/types.d.ts +1 -9
- package/dist/components/DataTable/utils.d.ts +8 -2
- package/dist/components/data-display/DataTable.md +25 -27
- package/dist/index.browser.js +6 -6
- package/dist/index.browser.js.map +3 -3
- package/dist/index.cjs +58 -76
- package/dist/index.js +186 -204
- package/dist/libs/slot-props.d.ts +2 -2
- package/framer/index.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -187,7 +187,7 @@ function Alert(inProps) {
|
|
|
187
187
|
Alert.displayName = "Alert";
|
|
188
188
|
|
|
189
189
|
// src/components/Autocomplete/Autocomplete.tsx
|
|
190
|
-
import React5, { useCallback as
|
|
190
|
+
import React5, { useCallback as useCallback3, useEffect as useEffect2, useMemo as useMemo2, useRef as useRef3 } from "react";
|
|
191
191
|
import {
|
|
192
192
|
Autocomplete as JoyAutocomplete,
|
|
193
193
|
AutocompleteOption as JoyAutocompleteOption,
|
|
@@ -295,7 +295,7 @@ function useControlledState(controlledValue, defaultValue, onChange) {
|
|
|
295
295
|
}
|
|
296
296
|
|
|
297
297
|
// src/libs/slot-props.ts
|
|
298
|
-
import { useMemo } from "react";
|
|
298
|
+
import { useCallback as useCallback2, useMemo, useRef as useRef2 } from "react";
|
|
299
299
|
function assignRef(ref, value) {
|
|
300
300
|
if (typeof ref === "function") ref(value);
|
|
301
301
|
else if (ref) ref.current = value;
|
|
@@ -313,16 +313,25 @@ function useSlotRef(slotProp, ref) {
|
|
|
313
313
|
const isFunctionForm = typeof slotProp === "function";
|
|
314
314
|
const slotRef = isFunctionForm ? void 0 : slotProp?.ref;
|
|
315
315
|
const mergedRef = useMergedRef(slotRef, ref);
|
|
316
|
+
const latestSlotRef = useRef2(null);
|
|
317
|
+
const stableMergedRef = useCallback2(
|
|
318
|
+
(value) => {
|
|
319
|
+
assignRef(latestSlotRef.current, value);
|
|
320
|
+
assignRef(ref, value);
|
|
321
|
+
},
|
|
322
|
+
[ref]
|
|
323
|
+
);
|
|
316
324
|
return useMemo(() => {
|
|
317
325
|
if (isFunctionForm) {
|
|
318
326
|
return ((ownerState) => {
|
|
319
327
|
const resolved = slotProp(ownerState) ?? {};
|
|
320
|
-
const
|
|
321
|
-
|
|
328
|
+
const resolvedRef = resolved.ref;
|
|
329
|
+
latestSlotRef.current = resolvedRef ?? null;
|
|
330
|
+
return resolvedRef || ref ? { ...resolved, ref: stableMergedRef } : { ...resolved };
|
|
322
331
|
});
|
|
323
332
|
}
|
|
324
333
|
return mergedRef ? { ...slotProp, ref: mergedRef } : { ...slotProp };
|
|
325
|
-
}, [isFunctionForm, slotProp, mergedRef, ref]);
|
|
334
|
+
}, [isFunctionForm, slotProp, mergedRef, ref, stableMergedRef]);
|
|
326
335
|
}
|
|
327
336
|
|
|
328
337
|
// src/components/Autocomplete/Autocomplete.tsx
|
|
@@ -347,7 +356,7 @@ var AutocompleteListBox = React5.forwardRef((props, ref) => {
|
|
|
347
356
|
ownerState: { loading, size: fontSize = "md" },
|
|
348
357
|
...innerProps
|
|
349
358
|
} = props;
|
|
350
|
-
const parentRef =
|
|
359
|
+
const parentRef = useRef3(null);
|
|
351
360
|
const isGrouped = children[0].every((child) => child.hasOwnProperty("group"));
|
|
352
361
|
const itemHeight = useMemo2(() => {
|
|
353
362
|
const heights = itemHeightMap[fontSize ?? "md"];
|
|
@@ -464,7 +473,7 @@ function AutocompleteInner(props, ref) {
|
|
|
464
473
|
const [rawValue, setValue] = useControlledState(
|
|
465
474
|
props.value,
|
|
466
475
|
props.defaultValue ?? null,
|
|
467
|
-
|
|
476
|
+
useCallback3(
|
|
468
477
|
(value2) => onChange?.({
|
|
469
478
|
target: {
|
|
470
479
|
value: value2,
|
|
@@ -507,7 +516,7 @@ function AutocompleteInner(props, ref) {
|
|
|
507
516
|
}
|
|
508
517
|
return optionMap.get(_value);
|
|
509
518
|
}, [_value, optionMap, props.loading]);
|
|
510
|
-
const applySize =
|
|
519
|
+
const applySize = useCallback3(
|
|
511
520
|
(node) => {
|
|
512
521
|
return React5.isValidElement(node) && !props.loading ? React5.cloneElement(node, { ...{ size } }) : node;
|
|
513
522
|
},
|
|
@@ -533,7 +542,7 @@ function AutocompleteInner(props, ref) {
|
|
|
533
542
|
}),
|
|
534
543
|
[options, props.slotProps, inputSlotProps]
|
|
535
544
|
);
|
|
536
|
-
const handleChange =
|
|
545
|
+
const handleChange = useCallback3(
|
|
537
546
|
(event, value2) => {
|
|
538
547
|
const newValue = value2;
|
|
539
548
|
const _value2 = Array.isArray(newValue) ? newValue.map((value3) => value3.value) : newValue?.value;
|
|
@@ -696,7 +705,7 @@ var MenuItem = JoyMenuItem;
|
|
|
696
705
|
var Menu_default = Menu;
|
|
697
706
|
|
|
698
707
|
// src/components/Dropdown/Dropdown.tsx
|
|
699
|
-
import React8, { createContext, useCallback as
|
|
708
|
+
import React8, { createContext, useCallback as useCallback4, useMemo as useMemo4, useState as useState2 } from "react";
|
|
700
709
|
import { Dropdown as JoyDropdown } from "@mui/joy";
|
|
701
710
|
import { MenuButton } from "@mui/joy";
|
|
702
711
|
import { useMenuButton } from "@mui/base/useMenuButton";
|
|
@@ -711,7 +720,7 @@ function Dropdown({ open: openProp, defaultOpen = false, onOpenChange, ...rest }
|
|
|
711
720
|
}),
|
|
712
721
|
[]
|
|
713
722
|
);
|
|
714
|
-
const handleOpenChange =
|
|
723
|
+
const handleOpenChange = useCallback4(
|
|
715
724
|
(event, isOpen) => {
|
|
716
725
|
if (nestedCount > 0 && !isOpen && event?.type === "blur") {
|
|
717
726
|
return;
|
|
@@ -774,7 +783,7 @@ Button.displayName = "Button";
|
|
|
774
783
|
var Button_default = Button;
|
|
775
784
|
|
|
776
785
|
// src/components/Calendar/Calendar.tsx
|
|
777
|
-
import React13, { Fragment, forwardRef as forwardRef4, useCallback as
|
|
786
|
+
import React13, { Fragment, forwardRef as forwardRef4, useCallback as useCallback7, useEffect as useEffect3, useMemo as useMemo6, useRef as useRef4, useState as useState5 } from "react";
|
|
778
787
|
import { styled as styled5 } from "@mui/joy";
|
|
779
788
|
import ChevronLeftIcon from "@mui/icons-material/ChevronLeft";
|
|
780
789
|
import ChevronRightIcon from "@mui/icons-material/ChevronRight";
|
|
@@ -868,7 +877,7 @@ var isSameMonth = (date1, date2) => {
|
|
|
868
877
|
};
|
|
869
878
|
|
|
870
879
|
// src/components/Calendar/hooks/use-calendar-props.ts
|
|
871
|
-
import { useCallback as
|
|
880
|
+
import { useCallback as useCallback5, useMemo as useMemo5, useState as useState3 } from "react";
|
|
872
881
|
import { useThemeProps as useThemeProps3 } from "@mui/joy";
|
|
873
882
|
var resolveView = (view, views) => {
|
|
874
883
|
return views.includes(view) ? view : views[0];
|
|
@@ -898,13 +907,13 @@ var useCalendarProps = (inProps) => {
|
|
|
898
907
|
maxDate.setHours(0, 0, 0, 0);
|
|
899
908
|
return maxDate;
|
|
900
909
|
}, [inProps.maxDate]);
|
|
901
|
-
const paginate =
|
|
910
|
+
const paginate = useCallback5(
|
|
902
911
|
(newDirection) => {
|
|
903
912
|
setPage([page + newDirection, newDirection]);
|
|
904
913
|
},
|
|
905
914
|
[page]
|
|
906
915
|
);
|
|
907
|
-
const handleViewMonthChange =
|
|
916
|
+
const handleViewMonthChange = useCallback5(
|
|
908
917
|
(newMonth) => {
|
|
909
918
|
setViewMonth(newMonth);
|
|
910
919
|
if (resolvedView === "month") {
|
|
@@ -957,7 +966,7 @@ var useCalendarProps = (inProps) => {
|
|
|
957
966
|
};
|
|
958
967
|
|
|
959
968
|
// src/components/Calendar/hooks/use-calendar.ts
|
|
960
|
-
import { useCallback as
|
|
969
|
+
import { useCallback as useCallback6, useState as useState4 } from "react";
|
|
961
970
|
var useCalendar = (ownerState) => {
|
|
962
971
|
const [localHoverDay, setLocalHoverDay] = useState4(null);
|
|
963
972
|
const [localHoverMonth, setLocalHoverMonth] = useState4(null);
|
|
@@ -967,7 +976,7 @@ var useCalendar = (ownerState) => {
|
|
|
967
976
|
const setHoverMonth = ownerState.onHoverMonthChange ?? setLocalHoverMonth;
|
|
968
977
|
return {
|
|
969
978
|
calendarTitle: ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default"),
|
|
970
|
-
onPrev:
|
|
979
|
+
onPrev: useCallback6(() => {
|
|
971
980
|
if (ownerState.view === "day") {
|
|
972
981
|
const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
973
982
|
const currentYear = currentDate.getFullYear();
|
|
@@ -984,7 +993,7 @@ var useCalendar = (ownerState) => {
|
|
|
984
993
|
ownerState.onMonthChange?.(prevYear);
|
|
985
994
|
}
|
|
986
995
|
}, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
|
|
987
|
-
onNext:
|
|
996
|
+
onNext: useCallback6(() => {
|
|
988
997
|
if (ownerState.view === "day") {
|
|
989
998
|
const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
990
999
|
const currentYear = currentDate.getFullYear();
|
|
@@ -1001,7 +1010,7 @@ var useCalendar = (ownerState) => {
|
|
|
1001
1010
|
ownerState.onMonthChange?.(nextYear);
|
|
1002
1011
|
}
|
|
1003
1012
|
}, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
|
|
1004
|
-
getDayCellProps:
|
|
1013
|
+
getDayCellProps: useCallback6(
|
|
1005
1014
|
(day) => {
|
|
1006
1015
|
const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1007
1016
|
thisDay.setHours(0, 0, 0, 0);
|
|
@@ -1016,7 +1025,7 @@ var useCalendar = (ownerState) => {
|
|
|
1016
1025
|
},
|
|
1017
1026
|
[ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverDay]
|
|
1018
1027
|
),
|
|
1019
|
-
getMonthCellProps:
|
|
1028
|
+
getMonthCellProps: useCallback6(
|
|
1020
1029
|
(monthIndex) => {
|
|
1021
1030
|
const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1022
1031
|
thisMonth.setDate(1);
|
|
@@ -1033,7 +1042,7 @@ var useCalendar = (ownerState) => {
|
|
|
1033
1042
|
},
|
|
1034
1043
|
[ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverMonth]
|
|
1035
1044
|
),
|
|
1036
|
-
getPickerDayProps:
|
|
1045
|
+
getPickerDayProps: useCallback6(
|
|
1037
1046
|
(day) => {
|
|
1038
1047
|
const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1039
1048
|
thisDay.setHours(0, 0, 0, 0);
|
|
@@ -1087,7 +1096,7 @@ var useCalendar = (ownerState) => {
|
|
|
1087
1096
|
hoverDay
|
|
1088
1097
|
]
|
|
1089
1098
|
),
|
|
1090
|
-
getPickerMonthProps:
|
|
1099
|
+
getPickerMonthProps: useCallback6(
|
|
1091
1100
|
(monthIndex) => {
|
|
1092
1101
|
const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1093
1102
|
thisMonth.setDate(1);
|
|
@@ -1617,9 +1626,9 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1617
1626
|
} = props;
|
|
1618
1627
|
const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
|
|
1619
1628
|
const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = useState5(false);
|
|
1620
|
-
const monthNavClickTimestampsRef =
|
|
1621
|
-
const monthViewAssistHintShownInSessionRef =
|
|
1622
|
-
const monthViewAssistHintTimeoutRef =
|
|
1629
|
+
const monthNavClickTimestampsRef = useRef4([]);
|
|
1630
|
+
const monthViewAssistHintShownInSessionRef = useRef4(false);
|
|
1631
|
+
const monthViewAssistHintTimeoutRef = useRef4(null);
|
|
1623
1632
|
const [hoverDay, setHoverDay] = useState5(null);
|
|
1624
1633
|
const [hoverMonth, setHoverMonth] = useState5(null);
|
|
1625
1634
|
const resolvedNumberOfMonths = numberOfMonths ?? 1;
|
|
@@ -1640,14 +1649,14 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1640
1649
|
}
|
|
1641
1650
|
};
|
|
1642
1651
|
}, []);
|
|
1643
|
-
const closeMonthViewAssistHint =
|
|
1652
|
+
const closeMonthViewAssistHint = useCallback7(() => {
|
|
1644
1653
|
if (monthViewAssistHintTimeoutRef.current) {
|
|
1645
1654
|
clearTimeout(monthViewAssistHintTimeoutRef.current);
|
|
1646
1655
|
monthViewAssistHintTimeoutRef.current = null;
|
|
1647
1656
|
}
|
|
1648
1657
|
setIsMonthViewAssistHintOpen(false);
|
|
1649
1658
|
}, []);
|
|
1650
|
-
const showMonthViewAssistHint =
|
|
1659
|
+
const showMonthViewAssistHint = useCallback7(() => {
|
|
1651
1660
|
const now = Date.now();
|
|
1652
1661
|
if (monthViewAssistHintShownInSessionRef.current) return;
|
|
1653
1662
|
if (now - lastMonthViewAssistHintShownAt < MONTH_VIEW_HINT_COOLDOWN_MS) return;
|
|
@@ -1662,7 +1671,7 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1662
1671
|
monthViewAssistHintTimeoutRef.current = null;
|
|
1663
1672
|
}, MONTH_VIEW_HINT_DURATION_MS);
|
|
1664
1673
|
}, []);
|
|
1665
|
-
const trackFastMonthNavigation =
|
|
1674
|
+
const trackFastMonthNavigation = useCallback7(() => {
|
|
1666
1675
|
if (!isHintEligible) return;
|
|
1667
1676
|
const now = Date.now();
|
|
1668
1677
|
monthNavClickTimestampsRef.current = [
|
|
@@ -1673,15 +1682,15 @@ var Calendar = forwardRef4((inProps, ref) => {
|
|
|
1673
1682
|
showMonthViewAssistHint();
|
|
1674
1683
|
}
|
|
1675
1684
|
}, [isHintEligible, showMonthViewAssistHint]);
|
|
1676
|
-
const handlePrevClick =
|
|
1685
|
+
const handlePrevClick = useCallback7(() => {
|
|
1677
1686
|
onPrev();
|
|
1678
1687
|
trackFastMonthNavigation();
|
|
1679
1688
|
}, [onPrev, trackFastMonthNavigation]);
|
|
1680
|
-
const handleNextClick =
|
|
1689
|
+
const handleNextClick = useCallback7(() => {
|
|
1681
1690
|
onNext();
|
|
1682
1691
|
trackFastMonthNavigation();
|
|
1683
1692
|
}, [onNext, trackFastMonthNavigation]);
|
|
1684
|
-
const handleSwitchViewClick =
|
|
1693
|
+
const handleSwitchViewClick = useCallback7(() => {
|
|
1685
1694
|
closeMonthViewAssistHint();
|
|
1686
1695
|
onViewChange?.();
|
|
1687
1696
|
}, [closeMonthViewAssistHint, onViewChange]);
|
|
@@ -1851,11 +1860,11 @@ var Container = forwardRef5(function Container2(props, ref) {
|
|
|
1851
1860
|
Container.displayName = "Container";
|
|
1852
1861
|
|
|
1853
1862
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
1854
|
-
import React17, { useCallback as
|
|
1863
|
+
import React17, { useCallback as useCallback9, useMemo as useMemo7 } from "react";
|
|
1855
1864
|
import { NumericFormat } from "react-number-format";
|
|
1856
1865
|
|
|
1857
1866
|
// src/components/Input/Input.tsx
|
|
1858
|
-
import React16, { useCallback as
|
|
1867
|
+
import React16, { useCallback as useCallback8, useState as useState6 } from "react";
|
|
1859
1868
|
import { Input as JoyInput } from "@mui/joy";
|
|
1860
1869
|
import { motion as motion16 } from "framer-motion";
|
|
1861
1870
|
import ClearIcon from "@mui/icons-material/Close";
|
|
@@ -1893,7 +1902,7 @@ var Input = React16.forwardRef((props, ref) => {
|
|
|
1893
1902
|
const [value, setValue] = useControlledState(
|
|
1894
1903
|
valueProp,
|
|
1895
1904
|
defaultValueProp ?? null,
|
|
1896
|
-
|
|
1905
|
+
useCallback8(
|
|
1897
1906
|
(value2) => {
|
|
1898
1907
|
onChange?.({
|
|
1899
1908
|
/**
|
|
@@ -2183,7 +2192,7 @@ var CurrencyInput = React17.forwardRef(function CurrencyInput2(inProps, ref) {
|
|
|
2183
2192
|
const [_value, setValue] = useControlledState(
|
|
2184
2193
|
props.value,
|
|
2185
2194
|
props.defaultValue ?? null,
|
|
2186
|
-
|
|
2195
|
+
useCallback9((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
2187
2196
|
);
|
|
2188
2197
|
const value = useMemo7(() => {
|
|
2189
2198
|
if (_value && useMinorUnit) {
|
|
@@ -2198,7 +2207,7 @@ var CurrencyInput = React17.forwardRef(function CurrencyInput2(inProps, ref) {
|
|
|
2198
2207
|
return props.max;
|
|
2199
2208
|
}, [props.max, useMinorUnit, decimalScale]);
|
|
2200
2209
|
const isOverLimit = useMemo7(() => max != null && value != null && value > max, [max, value]);
|
|
2201
|
-
const handleChange =
|
|
2210
|
+
const handleChange = useCallback9(
|
|
2202
2211
|
(event) => {
|
|
2203
2212
|
if (event.target.value === "") {
|
|
2204
2213
|
setValue(null);
|
|
@@ -2247,9 +2256,9 @@ var CurrencyInput_default = CurrencyInput;
|
|
|
2247
2256
|
|
|
2248
2257
|
// src/components/DataTable/DataTable.tsx
|
|
2249
2258
|
import React26, {
|
|
2250
|
-
useCallback as
|
|
2259
|
+
useCallback as useCallback14,
|
|
2251
2260
|
useMemo as useMemo12,
|
|
2252
|
-
useRef as
|
|
2261
|
+
useRef as useRef8,
|
|
2253
2262
|
useId,
|
|
2254
2263
|
forwardRef as forwardRef7,
|
|
2255
2264
|
useImperativeHandle as useImperativeHandle2,
|
|
@@ -2482,8 +2491,11 @@ function computeAutoFitWidth(params) {
|
|
|
2482
2491
|
if (!isNaN(maxPx) && maxPx > 0) finalWidth = Math.min(finalWidth, maxPx);
|
|
2483
2492
|
return finalWidth;
|
|
2484
2493
|
}
|
|
2485
|
-
function getHeaderCellId(tableId,
|
|
2486
|
-
return `${tableId}_header_${
|
|
2494
|
+
function getHeaderCellId(tableId, field) {
|
|
2495
|
+
return `${tableId}_header_${sanitizeColumnId(field)}`;
|
|
2496
|
+
}
|
|
2497
|
+
function sanitizeColumnId(field) {
|
|
2498
|
+
return String(field).trim().replace(/\s+/g, "_");
|
|
2487
2499
|
}
|
|
2488
2500
|
|
|
2489
2501
|
// src/components/DataTable/styled.tsx
|
|
@@ -2673,11 +2685,11 @@ var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PU
|
|
|
2673
2685
|
|
|
2674
2686
|
// src/components/DataTable/components.tsx
|
|
2675
2687
|
import React23, {
|
|
2676
|
-
useRef as
|
|
2688
|
+
useRef as useRef6,
|
|
2677
2689
|
useState as useState8,
|
|
2678
2690
|
useLayoutEffect,
|
|
2679
2691
|
useMemo as useMemo10,
|
|
2680
|
-
useCallback as
|
|
2692
|
+
useCallback as useCallback11,
|
|
2681
2693
|
useEffect as useEffect5,
|
|
2682
2694
|
memo,
|
|
2683
2695
|
createElement
|
|
@@ -2686,7 +2698,7 @@ import { styled as styled12, useTheme } from "@mui/joy";
|
|
|
2686
2698
|
import { AnimatePresence as AnimatePresence2 } from "framer-motion";
|
|
2687
2699
|
|
|
2688
2700
|
// src/components/DatePicker/DatePicker.tsx
|
|
2689
|
-
import React19, { forwardRef as forwardRef6, useCallback as
|
|
2701
|
+
import React19, { forwardRef as forwardRef6, useCallback as useCallback10, useEffect as useEffect4, useImperativeHandle, useRef as useRef5, useState as useState7 } from "react";
|
|
2690
2702
|
import { IMaskInput, IMask } from "react-imask";
|
|
2691
2703
|
import CalendarTodayIcon from "@mui/icons-material/CalendarToday";
|
|
2692
2704
|
import { styled as styled10, useThemeProps as useThemeProps5 } from "@mui/joy";
|
|
@@ -2903,12 +2915,12 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2903
2915
|
presets,
|
|
2904
2916
|
...innerProps
|
|
2905
2917
|
} = props;
|
|
2906
|
-
const innerRef =
|
|
2907
|
-
const buttonRef =
|
|
2918
|
+
const innerRef = useRef5(null);
|
|
2919
|
+
const buttonRef = useRef5(null);
|
|
2908
2920
|
const [rawValue, setValue] = useControlledState(
|
|
2909
2921
|
props.value,
|
|
2910
2922
|
props.defaultValue ?? null,
|
|
2911
|
-
|
|
2923
|
+
useCallback10(
|
|
2912
2924
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
2913
2925
|
[props.name, onChange]
|
|
2914
2926
|
)
|
|
@@ -2936,7 +2948,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2936
2948
|
}
|
|
2937
2949
|
}, [displayFormat, displayValue, format, locale, value]);
|
|
2938
2950
|
useImperativeHandle(ref, () => innerRef.current, [innerRef]);
|
|
2939
|
-
const handleChange =
|
|
2951
|
+
const handleChange = useCallback10(
|
|
2940
2952
|
(event) => {
|
|
2941
2953
|
const value2 = event.target.value;
|
|
2942
2954
|
setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat, locale) : value2);
|
|
@@ -2944,7 +2956,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2944
2956
|
},
|
|
2945
2957
|
[displayFormat, format, locale, setValue]
|
|
2946
2958
|
);
|
|
2947
|
-
const handleDisplayInputChange =
|
|
2959
|
+
const handleDisplayInputChange = useCallback10(
|
|
2948
2960
|
(event) => {
|
|
2949
2961
|
if (event.target.value === "") {
|
|
2950
2962
|
handleChange({
|
|
@@ -2969,7 +2981,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2969
2981
|
},
|
|
2970
2982
|
[displayFormat, format, handleChange, props.name]
|
|
2971
2983
|
);
|
|
2972
|
-
const handleCalendarToggle =
|
|
2984
|
+
const handleCalendarToggle = useCallback10(
|
|
2973
2985
|
(event) => {
|
|
2974
2986
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
2975
2987
|
setTimeout(() => {
|
|
@@ -2978,7 +2990,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2978
2990
|
},
|
|
2979
2991
|
[anchorEl, setAnchorEl, innerRef]
|
|
2980
2992
|
);
|
|
2981
|
-
const handleInputMouseDown =
|
|
2993
|
+
const handleInputMouseDown = useCallback10(
|
|
2982
2994
|
(event) => {
|
|
2983
2995
|
if (inputReadOnly || isAlphabeticDisplay) {
|
|
2984
2996
|
event.preventDefault();
|
|
@@ -2987,7 +2999,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2987
2999
|
},
|
|
2988
3000
|
[inputReadOnly, isAlphabeticDisplay, buttonRef]
|
|
2989
3001
|
);
|
|
2990
|
-
const handleInputClick =
|
|
3002
|
+
const handleInputClick = useCallback10(
|
|
2991
3003
|
(event) => {
|
|
2992
3004
|
if (inputReadOnly && !readOnly) {
|
|
2993
3005
|
handleCalendarToggle(event);
|
|
@@ -2995,7 +3007,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
2995
3007
|
},
|
|
2996
3008
|
[inputReadOnly, readOnly, handleCalendarToggle]
|
|
2997
3009
|
);
|
|
2998
|
-
const handlePresetClick =
|
|
3010
|
+
const handlePresetClick = useCallback10(
|
|
2999
3011
|
(presetValue) => {
|
|
3000
3012
|
handleChange({
|
|
3001
3013
|
target: {
|
|
@@ -3007,7 +3019,7 @@ var DatePicker = forwardRef6((inProps, ref) => {
|
|
|
3007
3019
|
},
|
|
3008
3020
|
[handleChange, props.name]
|
|
3009
3021
|
);
|
|
3010
|
-
const isPresetDisabled =
|
|
3022
|
+
const isPresetDisabled = useCallback10(
|
|
3011
3023
|
(presetValue) => {
|
|
3012
3024
|
try {
|
|
3013
3025
|
const date = parseDate(presetValue, format);
|
|
@@ -3375,7 +3387,7 @@ var TextEllipsis = ({
|
|
|
3375
3387
|
lineClamp,
|
|
3376
3388
|
...rest
|
|
3377
3389
|
}) => {
|
|
3378
|
-
const textRef =
|
|
3390
|
+
const textRef = useRef6(null);
|
|
3379
3391
|
const [showTooltip, setShowTooltip] = useState8(false);
|
|
3380
3392
|
useLayoutEffect(() => {
|
|
3381
3393
|
const element = textRef.current;
|
|
@@ -3392,7 +3404,7 @@ var TextEllipsis = ({
|
|
|
3392
3404
|
return /* @__PURE__ */ React23.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top" }, /* @__PURE__ */ React23.createElement(EllipsisDiv, { ref: textRef, lineClamp, ...rest }, children));
|
|
3393
3405
|
};
|
|
3394
3406
|
var CellTextEllipsis = ({ children }) => {
|
|
3395
|
-
const textRef =
|
|
3407
|
+
const textRef = useRef6(null);
|
|
3396
3408
|
const [showTooltip, setShowTooltip] = useState8(false);
|
|
3397
3409
|
useLayoutEffect(() => {
|
|
3398
3410
|
const element = textRef.current;
|
|
@@ -3442,20 +3454,19 @@ var HeadCell = (props) => {
|
|
|
3442
3454
|
tableColRef,
|
|
3443
3455
|
headerClassName,
|
|
3444
3456
|
headerLineClamp,
|
|
3445
|
-
onAutoFit
|
|
3446
|
-
columnId
|
|
3457
|
+
onAutoFit
|
|
3447
3458
|
} = props;
|
|
3448
3459
|
const theme = useTheme();
|
|
3449
3460
|
const ref = headerRef;
|
|
3450
3461
|
const colRef = tableColRef;
|
|
3451
|
-
const localRef =
|
|
3462
|
+
const localRef = useRef6(null);
|
|
3452
3463
|
useLayoutEffect(() => {
|
|
3453
3464
|
ref.current = localRef.current;
|
|
3454
3465
|
}, [ref]);
|
|
3455
3466
|
const [isHovered, setIsHovered] = useState8(false);
|
|
3456
3467
|
const sortable = type === "actions" ? false : _sortable;
|
|
3457
|
-
const headId = useMemo10(() => getHeaderCellId(tableId,
|
|
3458
|
-
const isResizingRef =
|
|
3468
|
+
const headId = useMemo10(() => getHeaderCellId(tableId, field), [tableId, field]);
|
|
3469
|
+
const isResizingRef = useRef6(false);
|
|
3459
3470
|
const resizer = useMemo10(
|
|
3460
3471
|
() => resizable ?? true ? Resizer(
|
|
3461
3472
|
ref,
|
|
@@ -3463,9 +3474,9 @@ var HeadCell = (props) => {
|
|
|
3463
3474
|
(isResizing) => {
|
|
3464
3475
|
isResizingRef.current = isResizing;
|
|
3465
3476
|
},
|
|
3466
|
-
onAutoFit ? () => onAutoFit(
|
|
3477
|
+
onAutoFit ? () => onAutoFit(field) : void 0
|
|
3467
3478
|
) : null,
|
|
3468
|
-
[resizable, ref, colRef, onAutoFit,
|
|
3479
|
+
[resizable, ref, colRef, onAutoFit, field]
|
|
3469
3480
|
);
|
|
3470
3481
|
const style = useMemo10(
|
|
3471
3482
|
() => ({
|
|
@@ -3539,7 +3550,7 @@ var HeadCell = (props) => {
|
|
|
3539
3550
|
ref: localRef,
|
|
3540
3551
|
key: field,
|
|
3541
3552
|
style,
|
|
3542
|
-
onClick:
|
|
3553
|
+
onClick: useCallback11(
|
|
3543
3554
|
(e) => {
|
|
3544
3555
|
if (isResizingRef.current) return;
|
|
3545
3556
|
if (!(e.target instanceof Element) || !e.currentTarget.contains(e.target)) return;
|
|
@@ -3579,7 +3590,7 @@ var BodyCell = (props) => {
|
|
|
3579
3590
|
} = props;
|
|
3580
3591
|
const theme = useTheme();
|
|
3581
3592
|
const [value, setValue] = useState8(row[field]);
|
|
3582
|
-
const cellRef =
|
|
3593
|
+
const cellRef = useRef6(null);
|
|
3583
3594
|
const params = useMemo10(
|
|
3584
3595
|
() => ({
|
|
3585
3596
|
row,
|
|
@@ -3735,7 +3746,7 @@ var BodyCell = (props) => {
|
|
|
3735
3746
|
{
|
|
3736
3747
|
ref: cellRef,
|
|
3737
3748
|
key: field,
|
|
3738
|
-
headers: getHeaderCellId(tableId,
|
|
3749
|
+
headers: getHeaderCellId(tableId, field),
|
|
3739
3750
|
sx: {
|
|
3740
3751
|
textAlign: getTextAlign({ type }),
|
|
3741
3752
|
verticalAlign: editMode ? "top" : "middle",
|
|
@@ -3800,10 +3811,10 @@ var VirtualizedTableRow = memo(StyledTableRow2, (prevProps, nextProps) => {
|
|
|
3800
3811
|
});
|
|
3801
3812
|
|
|
3802
3813
|
// src/components/DataTable/hooks.ts
|
|
3803
|
-
import { useState as useState9, useLayoutEffect as useLayoutEffect2, useRef as
|
|
3804
|
-
function useColumnWidths(
|
|
3814
|
+
import { useState as useState9, useLayoutEffect as useLayoutEffect2, useRef as useRef7, useMemo as useMemo11, useCallback as useCallback12, useEffect as useEffect6, createRef } from "react";
|
|
3815
|
+
function useColumnWidths(columnsByField) {
|
|
3805
3816
|
const [widths, setWidths] = useState9({});
|
|
3806
|
-
const roRef =
|
|
3817
|
+
const roRef = useRef7();
|
|
3807
3818
|
useLayoutEffect2(() => {
|
|
3808
3819
|
if (roRef.current) roRef.current.disconnect();
|
|
3809
3820
|
roRef.current = new ResizeObserver((entries) => {
|
|
@@ -3811,11 +3822,11 @@ function useColumnWidths(columnsById) {
|
|
|
3811
3822
|
let changed = false;
|
|
3812
3823
|
const next = { ...prev };
|
|
3813
3824
|
entries.forEach((entry) => {
|
|
3814
|
-
const
|
|
3825
|
+
const field = entry.target.dataset.field;
|
|
3815
3826
|
const w = Math.round(entry.target.getBoundingClientRect().width);
|
|
3816
3827
|
if (w === 0) return;
|
|
3817
|
-
if (next[
|
|
3818
|
-
next[
|
|
3828
|
+
if (next[field] !== w) {
|
|
3829
|
+
next[field] = w;
|
|
3819
3830
|
changed = true;
|
|
3820
3831
|
}
|
|
3821
3832
|
});
|
|
@@ -3823,23 +3834,22 @@ function useColumnWidths(columnsById) {
|
|
|
3823
3834
|
});
|
|
3824
3835
|
});
|
|
3825
3836
|
const measured = {};
|
|
3826
|
-
Object.entries(
|
|
3837
|
+
Object.entries(columnsByField).forEach(([field, def]) => {
|
|
3827
3838
|
const el = def.headerRef.current;
|
|
3828
3839
|
if (el) {
|
|
3829
|
-
el.dataset.
|
|
3830
|
-
el.dataset.field = String(def.field);
|
|
3840
|
+
el.dataset.field = field;
|
|
3831
3841
|
const w = Math.round(el.getBoundingClientRect().width);
|
|
3832
|
-
if (w > 0) measured[
|
|
3842
|
+
if (w > 0) measured[field] = w;
|
|
3833
3843
|
roRef.current.observe(el);
|
|
3834
3844
|
}
|
|
3835
3845
|
});
|
|
3836
3846
|
setWidths((prev) => {
|
|
3837
3847
|
const keys = Object.keys(measured);
|
|
3838
|
-
const same = keys.
|
|
3839
|
-
return same ? prev : measured;
|
|
3848
|
+
const same = keys.every((key) => prev[key] === measured[key]);
|
|
3849
|
+
return same ? prev : { ...prev, ...measured };
|
|
3840
3850
|
});
|
|
3841
3851
|
return () => roRef.current?.disconnect();
|
|
3842
|
-
}, [
|
|
3852
|
+
}, [columnsByField]);
|
|
3843
3853
|
return widths;
|
|
3844
3854
|
}
|
|
3845
3855
|
function useDataTableRenderer({
|
|
@@ -3871,19 +3881,26 @@ function useDataTableRenderer({
|
|
|
3871
3881
|
"You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
|
|
3872
3882
|
);
|
|
3873
3883
|
}
|
|
3874
|
-
const
|
|
3884
|
+
const duplicatedField = useMemo11(() => {
|
|
3885
|
+
const ids = columnsProp.map((column) => sanitizeColumnId(column.field));
|
|
3886
|
+
const index = ids.findIndex((id, i) => ids.indexOf(id) !== i);
|
|
3887
|
+
return index === -1 ? void 0 : columnsProp[index].field;
|
|
3888
|
+
}, [columnsProp]);
|
|
3889
|
+
if (duplicatedField !== void 0)
|
|
3890
|
+
throw new Error(`DataTable: column \`field\` must be unique. Duplicated: "${String(duplicatedField)}"`);
|
|
3891
|
+
const onSelectionModelChangeRef = useRef7(onSelectionModelChange);
|
|
3875
3892
|
onSelectionModelChangeRef.current = onSelectionModelChange;
|
|
3876
3893
|
const [focusedRowId, setFocusedRowId] = useState9(null);
|
|
3877
3894
|
const [selectionAnchor, setSelectionAnchor] = useState9(null);
|
|
3878
3895
|
const [sortModel, setSortModel] = useControlledState(
|
|
3879
3896
|
controlledSortModel,
|
|
3880
3897
|
initialState?.sorting?.sortModel ?? [],
|
|
3881
|
-
|
|
3898
|
+
useCallback12((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
|
|
3882
3899
|
);
|
|
3883
3900
|
const [visibilityModel] = useControlledState(
|
|
3884
3901
|
columnVisibilityModel,
|
|
3885
3902
|
initialState?.columns?.columnVisibilityModel ?? {},
|
|
3886
|
-
|
|
3903
|
+
useCallback12(
|
|
3887
3904
|
(model) => onColumnVisibilityModelChange?.(model),
|
|
3888
3905
|
[onColumnVisibilityModelChange]
|
|
3889
3906
|
)
|
|
@@ -3892,16 +3909,9 @@ function useDataTableRenderer({
|
|
|
3892
3909
|
if (!columnGroupingModel) return columnsProp;
|
|
3893
3910
|
return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
|
|
3894
3911
|
}, [columnsProp, columnGroupingModel]);
|
|
3895
|
-
const visibleColumnIndexes = useMemo11(
|
|
3896
|
-
() => reorderedColumns.reduce((acc, col, index) => {
|
|
3897
|
-
if (visibilityModel[col.field] !== false) acc.push(index);
|
|
3898
|
-
return acc;
|
|
3899
|
-
}, []),
|
|
3900
|
-
[reorderedColumns, visibilityModel]
|
|
3901
|
-
);
|
|
3902
3912
|
const visibleColumns = useMemo11(
|
|
3903
|
-
() =>
|
|
3904
|
-
[
|
|
3913
|
+
() => reorderedColumns.filter((col) => visibilityModel[col.field] !== false),
|
|
3914
|
+
[reorderedColumns, visibilityModel]
|
|
3905
3915
|
);
|
|
3906
3916
|
const visibleFieldSet = useMemo11(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
|
|
3907
3917
|
const tableMinWidth = useMemo11(() => {
|
|
@@ -3922,29 +3932,10 @@ function useDataTableRenderer({
|
|
|
3922
3932
|
),
|
|
3923
3933
|
[reorderedColumns]
|
|
3924
3934
|
);
|
|
3925
|
-
const
|
|
3926
|
-
const taken = new Set(reorderedColumns.map((column) => String(column.field)));
|
|
3927
|
-
const assigned = /* @__PURE__ */ new Set();
|
|
3928
|
-
return reorderedColumns.map((column) => {
|
|
3929
|
-
const field = String(column.field);
|
|
3930
|
-
if (!assigned.has(field)) {
|
|
3931
|
-
assigned.add(field);
|
|
3932
|
-
return field;
|
|
3933
|
-
}
|
|
3934
|
-
let n = 2;
|
|
3935
|
-
while (taken.has(`${field}__${n}`)) n += 1;
|
|
3936
|
-
taken.add(`${field}__${n}`);
|
|
3937
|
-
return `${field}__${n}`;
|
|
3938
|
-
});
|
|
3939
|
-
}, [reorderedColumns]);
|
|
3940
|
-
const columnIds = useMemo11(
|
|
3941
|
-
() => visibleColumnIndexes.map((index) => allColumnIds[index]),
|
|
3942
|
-
[visibleColumnIndexes, allColumnIds]
|
|
3943
|
-
);
|
|
3944
|
-
const visibleColumnsById = useMemo11(
|
|
3935
|
+
const visibleColumnsByField = useMemo11(
|
|
3945
3936
|
() => Object.fromEntries(
|
|
3946
|
-
visibleColumns.map((column
|
|
3947
|
-
|
|
3937
|
+
visibleColumns.map((column) => [
|
|
3938
|
+
column.field,
|
|
3948
3939
|
{
|
|
3949
3940
|
...column,
|
|
3950
3941
|
headerRef: createRef(),
|
|
@@ -3952,9 +3943,9 @@ function useDataTableRenderer({
|
|
|
3952
3943
|
}
|
|
3953
3944
|
])
|
|
3954
3945
|
),
|
|
3955
|
-
[visibleColumns
|
|
3946
|
+
[visibleColumns]
|
|
3956
3947
|
);
|
|
3957
|
-
const sortComparator =
|
|
3948
|
+
const sortComparator = useCallback12(
|
|
3958
3949
|
(rowA, rowB) => {
|
|
3959
3950
|
for (const sort of sortModel) {
|
|
3960
3951
|
const { field, sort: direction } = sort;
|
|
@@ -3993,7 +3984,7 @@ function useDataTableRenderer({
|
|
|
3993
3984
|
);
|
|
3994
3985
|
const [page, setPage] = useState9(paginationModel?.page || 1);
|
|
3995
3986
|
const pageSize = paginationModel?.pageSize || 20;
|
|
3996
|
-
const getId =
|
|
3987
|
+
const getId = useCallback12(
|
|
3997
3988
|
(row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
|
|
3998
3989
|
[_getId, page, pageSize]
|
|
3999
3990
|
);
|
|
@@ -4009,7 +4000,7 @@ function useDataTableRenderer({
|
|
|
4009
4000
|
}),
|
|
4010
4001
|
[dataInPage, isRowSelectable, getId]
|
|
4011
4002
|
);
|
|
4012
|
-
const handleRangeSelection =
|
|
4003
|
+
const handleRangeSelection = useCallback12(
|
|
4013
4004
|
(anchor, targetIndex) => {
|
|
4014
4005
|
const startIndex = Math.min(anchor.rowIndex, targetIndex);
|
|
4015
4006
|
const endIndex = Math.max(anchor.rowIndex, targetIndex);
|
|
@@ -4045,18 +4036,12 @@ function useDataTableRenderer({
|
|
|
4045
4036
|
() => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
|
|
4046
4037
|
[_isTotalSelected, selectionModel, selectableRowCount]
|
|
4047
4038
|
);
|
|
4048
|
-
const columnWidths = useColumnWidths(
|
|
4049
|
-
const
|
|
4050
|
-
() => Object.fromEntries(
|
|
4051
|
-
Object.entries(visibleColumnsById).map(([columnId, column]) => [column.field, columnWidths[columnId]])
|
|
4052
|
-
),
|
|
4053
|
-
[visibleColumnsById, columnWidths]
|
|
4054
|
-
);
|
|
4055
|
-
const getWidth = useCallback11(
|
|
4039
|
+
const columnWidths = useColumnWidths(visibleColumnsByField);
|
|
4040
|
+
const getWidth = useCallback12(
|
|
4056
4041
|
// 반환값은 pinned offset으로 더해지므로 반드시 숫자여야 한다. width/minWidth는 '500px' 같은 문자열.
|
|
4057
|
-
(f) =>
|
|
4042
|
+
(f) => columnWidths[f] ?? parsePxValue(allColumnsByField[f]?.width) ?? // Column prop 으로 지정된 width
|
|
4058
4043
|
parsePxValue(allColumnsByField[f]?.minWidth) ?? 0,
|
|
4059
|
-
[
|
|
4044
|
+
[columnWidths, allColumnsByField]
|
|
4060
4045
|
);
|
|
4061
4046
|
const processedColumnGroups = useMemo11(() => {
|
|
4062
4047
|
if (!columnGroupingModel) return null;
|
|
@@ -4076,16 +4061,14 @@ function useDataTableRenderer({
|
|
|
4076
4061
|
const baseColumns = visibleColumns.length > 0 ? visibleColumns : reorderedColumns.length > 0 ? [] : inferredFields.map((key) => ({
|
|
4077
4062
|
field: key
|
|
4078
4063
|
}));
|
|
4079
|
-
return baseColumns.map((column
|
|
4080
|
-
const columnId = columnIds[index] ?? String(column.field);
|
|
4064
|
+
return baseColumns.map((column) => {
|
|
4081
4065
|
const isLeftPinned = effectivePinnedLeft?.includes(column.field);
|
|
4082
4066
|
const isRightPinned = effectivePinnedRight?.includes(column.field);
|
|
4083
4067
|
const isPinned = isLeftPinned || isRightPinned;
|
|
4084
4068
|
return {
|
|
4085
4069
|
...column,
|
|
4086
|
-
|
|
4087
|
-
|
|
4088
|
-
tableColRef: visibleColumnsById[columnId]?.tableColRef,
|
|
4070
|
+
headerRef: visibleColumnsByField[column.field]?.headerRef,
|
|
4071
|
+
tableColRef: visibleColumnsByField[column.field]?.tableColRef,
|
|
4089
4072
|
isCellEditable: editMode && (typeof column.isCellEditable === "function" ? column.isCellEditable : column.isCellEditable ?? true),
|
|
4090
4073
|
sort: sortModel.find((sort) => sort.field === column.field)?.sort,
|
|
4091
4074
|
sortOrder: allColumnsByField[column.field]?.sortOrder || sortOrder,
|
|
@@ -4102,22 +4085,21 @@ function useDataTableRenderer({
|
|
|
4102
4085
|
inferredFields,
|
|
4103
4086
|
effectivePinnedLeft,
|
|
4104
4087
|
effectivePinnedRight,
|
|
4105
|
-
|
|
4106
|
-
visibleColumnsById,
|
|
4088
|
+
visibleColumnsByField,
|
|
4107
4089
|
allColumnsByField,
|
|
4108
4090
|
editMode,
|
|
4109
4091
|
sortModel,
|
|
4110
4092
|
sortOrder,
|
|
4111
4093
|
getWidth
|
|
4112
4094
|
]);
|
|
4113
|
-
const handlePageChange =
|
|
4095
|
+
const handlePageChange = useCallback12(
|
|
4114
4096
|
(newPage) => {
|
|
4115
4097
|
setPage(newPage);
|
|
4116
4098
|
onPaginationModelChange?.({ page: newPage, pageSize });
|
|
4117
4099
|
},
|
|
4118
4100
|
[onPaginationModelChange, pageSize]
|
|
4119
4101
|
);
|
|
4120
|
-
const handleSortChange =
|
|
4102
|
+
const handleSortChange = useCallback12(
|
|
4121
4103
|
(props) => {
|
|
4122
4104
|
const { field, currentSort, multiple } = props;
|
|
4123
4105
|
const column = allColumnsByField[field];
|
|
@@ -4155,16 +4137,16 @@ function useDataTableRenderer({
|
|
|
4155
4137
|
onSelectionModelChangeRef.current?.([]);
|
|
4156
4138
|
setSelectionAnchor(null);
|
|
4157
4139
|
}, [page]);
|
|
4158
|
-
const prevRowsRef =
|
|
4140
|
+
const prevRowsRef = useRef7(_rows);
|
|
4159
4141
|
useEffect6(() => {
|
|
4160
4142
|
if (prevRowsRef.current !== _rows) {
|
|
4161
4143
|
setSelectionAnchor(null);
|
|
4162
4144
|
prevRowsRef.current = _rows;
|
|
4163
4145
|
}
|
|
4164
4146
|
}, [_rows]);
|
|
4165
|
-
const handleAutoFit =
|
|
4166
|
-
(
|
|
4167
|
-
const colDef =
|
|
4147
|
+
const handleAutoFit = useCallback12(
|
|
4148
|
+
(field) => {
|
|
4149
|
+
const colDef = visibleColumnsByField[field];
|
|
4168
4150
|
if (!colDef?.headerRef.current) return;
|
|
4169
4151
|
const columnType = "type" in colDef ? colDef.type : void 0;
|
|
4170
4152
|
if (columnType === "actions") return;
|
|
@@ -4178,7 +4160,7 @@ function useDataTableRenderer({
|
|
|
4178
4160
|
colDef.headerRef.current.style.width = widthPx;
|
|
4179
4161
|
if (colDef.tableColRef.current) colDef.tableColRef.current.style.width = widthPx;
|
|
4180
4162
|
},
|
|
4181
|
-
[
|
|
4163
|
+
[visibleColumnsByField, dataInPage]
|
|
4182
4164
|
);
|
|
4183
4165
|
return {
|
|
4184
4166
|
rowCount,
|
|
@@ -4194,8 +4176,8 @@ function useDataTableRenderer({
|
|
|
4194
4176
|
handleAutoFit,
|
|
4195
4177
|
isAllSelected,
|
|
4196
4178
|
isTotalSelected,
|
|
4197
|
-
isSelectedRow:
|
|
4198
|
-
isRowSelectable:
|
|
4179
|
+
isSelectedRow: useCallback12((model) => selectedModelSet.has(model), [selectedModelSet]),
|
|
4180
|
+
isRowSelectable: useCallback12(
|
|
4199
4181
|
(rowId, row) => {
|
|
4200
4182
|
if (!isRowSelectable) return true;
|
|
4201
4183
|
return isRowSelectable({ row, id: rowId });
|
|
@@ -4203,13 +4185,13 @@ function useDataTableRenderer({
|
|
|
4203
4185
|
[isRowSelectable]
|
|
4204
4186
|
),
|
|
4205
4187
|
focusedRowId,
|
|
4206
|
-
onRowFocus:
|
|
4188
|
+
onRowFocus: useCallback12((rowId) => {
|
|
4207
4189
|
setFocusedRowId(rowId);
|
|
4208
4190
|
}, []),
|
|
4209
|
-
onAllCheckboxChange:
|
|
4191
|
+
onAllCheckboxChange: useCallback12(() => {
|
|
4210
4192
|
onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
|
|
4211
4193
|
}, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
|
|
4212
|
-
onCheckboxChange:
|
|
4194
|
+
onCheckboxChange: useCallback12(
|
|
4213
4195
|
(event, selectedModel) => {
|
|
4214
4196
|
const isShiftClick = "shiftKey" in event && event.shiftKey;
|
|
4215
4197
|
const rowIndex = dataInPage.findIndex((row, i) => getId(row, i) === selectedModel);
|
|
@@ -4243,7 +4225,7 @@ function useDataTableRenderer({
|
|
|
4243
4225
|
columns,
|
|
4244
4226
|
tableMinWidth,
|
|
4245
4227
|
processedColumnGroups,
|
|
4246
|
-
onTotalSelect:
|
|
4228
|
+
onTotalSelect: useCallback12(() => {
|
|
4247
4229
|
const selectableRows = rows.filter((row, i) => {
|
|
4248
4230
|
if (!isRowSelectable) return true;
|
|
4249
4231
|
return isRowSelectable({ row, id: getId(row, i) });
|
|
@@ -4328,7 +4310,7 @@ function TableBody(props) {
|
|
|
4328
4310
|
TableBody.displayName = "TableBody";
|
|
4329
4311
|
|
|
4330
4312
|
// src/components/Pagination/Pagination.tsx
|
|
4331
|
-
import React25, { useCallback as
|
|
4313
|
+
import React25, { useCallback as useCallback13, useEffect as useEffect7 } from "react";
|
|
4332
4314
|
import PreviousIcon from "@mui/icons-material/ChevronLeftRounded";
|
|
4333
4315
|
import NextIcon from "@mui/icons-material/ChevronRightRounded";
|
|
4334
4316
|
import FirstPageIcon from "@mui/icons-material/FirstPageRounded";
|
|
@@ -4398,7 +4380,7 @@ function Pagination(inProps) {
|
|
|
4398
4380
|
const [paginationModel, setPaginationModel] = useControlledState(
|
|
4399
4381
|
_paginationModel,
|
|
4400
4382
|
defaultPaginationModel,
|
|
4401
|
-
|
|
4383
|
+
useCallback13(
|
|
4402
4384
|
(newPage) => {
|
|
4403
4385
|
onPageChange(newPage.page);
|
|
4404
4386
|
},
|
|
@@ -4616,8 +4598,8 @@ function Component(props, apiRef) {
|
|
|
4616
4598
|
...innerProps
|
|
4617
4599
|
} = props;
|
|
4618
4600
|
const tableId = useId();
|
|
4619
|
-
const parentRef =
|
|
4620
|
-
const tableBodyRef =
|
|
4601
|
+
const parentRef = useRef8(null);
|
|
4602
|
+
const tableBodyRef = useRef8(null);
|
|
4621
4603
|
const {
|
|
4622
4604
|
columns,
|
|
4623
4605
|
processedColumnGroups,
|
|
@@ -4681,20 +4663,20 @@ function Component(props, apiRef) {
|
|
|
4681
4663
|
const showNoRowsOverlay = !loading && rowCount === 0;
|
|
4682
4664
|
const showFillerColumn = columns.length > 0 && columns.every((c) => !!c.width);
|
|
4683
4665
|
const totalColCount = Math.max(1, columns.length + (checkboxSelection ? 1 : 0) + (showFillerColumn ? 1 : 0));
|
|
4684
|
-
const getRowClickHandler =
|
|
4666
|
+
const getRowClickHandler = useCallback14(
|
|
4685
4667
|
(row, rowId) => (e) => {
|
|
4686
4668
|
onRowClick?.({ row, rowId }, e);
|
|
4687
4669
|
checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
|
|
4688
4670
|
},
|
|
4689
4671
|
[onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
|
|
4690
4672
|
);
|
|
4691
|
-
const getRowFocusHandler =
|
|
4673
|
+
const getRowFocusHandler = useCallback14(
|
|
4692
4674
|
(rowId) => () => {
|
|
4693
4675
|
onRowFocus(rowId);
|
|
4694
4676
|
},
|
|
4695
4677
|
[onRowFocus]
|
|
4696
4678
|
);
|
|
4697
|
-
const getCheckboxClickHandler =
|
|
4679
|
+
const getCheckboxClickHandler = useCallback14(
|
|
4698
4680
|
(rowId, row) => (e) => {
|
|
4699
4681
|
e.stopPropagation();
|
|
4700
4682
|
if (isRowSelectableCheck(rowId, row)) {
|
|
@@ -4704,7 +4686,7 @@ function Component(props, apiRef) {
|
|
|
4704
4686
|
},
|
|
4705
4687
|
[onCheckboxChange, isRowSelectableCheck, onRowFocus]
|
|
4706
4688
|
);
|
|
4707
|
-
const handleTableKeyDown =
|
|
4689
|
+
const handleTableKeyDown = useCallback14(
|
|
4708
4690
|
(e) => {
|
|
4709
4691
|
const supportedKeys = ["ArrowUp", "ArrowDown", " ", "Home", "End", "PageUp", "PageDown"];
|
|
4710
4692
|
if (!supportedKeys.includes(e.key)) return;
|
|
@@ -4865,7 +4847,7 @@ function Component(props, apiRef) {
|
|
|
4865
4847
|
"col",
|
|
4866
4848
|
{
|
|
4867
4849
|
ref: c.tableColRef,
|
|
4868
|
-
key: c.
|
|
4850
|
+
key: c.field.toString(),
|
|
4869
4851
|
style: {
|
|
4870
4852
|
width: c.width,
|
|
4871
4853
|
minWidth: c.minWidth ?? "50px"
|
|
@@ -4915,13 +4897,13 @@ function Component(props, apiRef) {
|
|
|
4915
4897
|
}
|
|
4916
4898
|
},
|
|
4917
4899
|
headerCheckboxElement
|
|
4918
|
-
), columns.map((c
|
|
4900
|
+
), columns.map((c) => (
|
|
4919
4901
|
// @ts-ignore
|
|
4920
4902
|
/* @__PURE__ */ React26.createElement(
|
|
4921
4903
|
HeadCell2,
|
|
4922
4904
|
{
|
|
4923
4905
|
tableId,
|
|
4924
|
-
key:
|
|
4906
|
+
key: c.field.toString(),
|
|
4925
4907
|
stickyHeader: props.stickyHeader,
|
|
4926
4908
|
editMode: !!c.isCellEditable,
|
|
4927
4909
|
onSortChange: handleSortChange,
|
|
@@ -5051,7 +5033,7 @@ var DataTable = forwardRef7(Component);
|
|
|
5051
5033
|
DataTable.displayName = "DataTable";
|
|
5052
5034
|
|
|
5053
5035
|
// src/components/DateRangePicker/DateRangePicker.tsx
|
|
5054
|
-
import React27, { forwardRef as forwardRef8, useCallback as
|
|
5036
|
+
import React27, { forwardRef as forwardRef8, useCallback as useCallback15, useEffect as useEffect8, useImperativeHandle as useImperativeHandle3, useMemo as useMemo13, useRef as useRef9, useState as useState10 } from "react";
|
|
5055
5037
|
import { IMaskInput as IMaskInput2, IMask as IMask2 } from "react-imask";
|
|
5056
5038
|
import CalendarTodayIcon2 from "@mui/icons-material/CalendarToday";
|
|
5057
5039
|
import { styled as styled14, useThemeProps as useThemeProps7 } from "@mui/joy";
|
|
@@ -5256,12 +5238,12 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5256
5238
|
numberOfMonths,
|
|
5257
5239
|
...innerProps
|
|
5258
5240
|
} = props;
|
|
5259
|
-
const innerRef =
|
|
5260
|
-
const buttonRef =
|
|
5241
|
+
const innerRef = useRef9(null);
|
|
5242
|
+
const buttonRef = useRef9(null);
|
|
5261
5243
|
const [rawValue, setValue] = useControlledState(
|
|
5262
5244
|
props.value,
|
|
5263
5245
|
props.defaultValue ?? null,
|
|
5264
|
-
|
|
5246
|
+
useCallback15(
|
|
5265
5247
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
5266
5248
|
[props.name, onChange]
|
|
5267
5249
|
)
|
|
@@ -5295,7 +5277,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5295
5277
|
}
|
|
5296
5278
|
}, [anchorEl, innerRef]);
|
|
5297
5279
|
useImperativeHandle3(ref, () => innerRef.current, [innerRef]);
|
|
5298
|
-
const handleChange =
|
|
5280
|
+
const handleChange = useCallback15(
|
|
5299
5281
|
(event) => {
|
|
5300
5282
|
const value2 = event.target.value;
|
|
5301
5283
|
setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat, locale) : value2);
|
|
@@ -5303,7 +5285,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5303
5285
|
},
|
|
5304
5286
|
[displayFormat, format, locale, setValue]
|
|
5305
5287
|
);
|
|
5306
|
-
const handleDisplayInputChange =
|
|
5288
|
+
const handleDisplayInputChange = useCallback15(
|
|
5307
5289
|
(event) => {
|
|
5308
5290
|
if (event.target.value === "") {
|
|
5309
5291
|
handleChange({
|
|
@@ -5328,14 +5310,14 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5328
5310
|
},
|
|
5329
5311
|
[displayFormat, format, handleChange, props.name]
|
|
5330
5312
|
);
|
|
5331
|
-
const handleCalendarToggle =
|
|
5313
|
+
const handleCalendarToggle = useCallback15(
|
|
5332
5314
|
(event) => {
|
|
5333
5315
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
5334
5316
|
innerRef.current?.focus();
|
|
5335
5317
|
},
|
|
5336
5318
|
[anchorEl, setAnchorEl, innerRef]
|
|
5337
5319
|
);
|
|
5338
|
-
const handleCalendarChange =
|
|
5320
|
+
const handleCalendarChange = useCallback15(
|
|
5339
5321
|
([date1, date2]) => {
|
|
5340
5322
|
if (!date1 || !date2) return;
|
|
5341
5323
|
const formattedValue = formatValueString2([date1, date2], format);
|
|
@@ -5349,7 +5331,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5349
5331
|
},
|
|
5350
5332
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
|
|
5351
5333
|
);
|
|
5352
|
-
const handleInputMouseDown =
|
|
5334
|
+
const handleInputMouseDown = useCallback15(
|
|
5353
5335
|
(event) => {
|
|
5354
5336
|
if (inputReadOnly || isAlphabeticDisplay) {
|
|
5355
5337
|
event.preventDefault();
|
|
@@ -5358,7 +5340,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5358
5340
|
},
|
|
5359
5341
|
[inputReadOnly, isAlphabeticDisplay, buttonRef]
|
|
5360
5342
|
);
|
|
5361
|
-
const handleInputClick =
|
|
5343
|
+
const handleInputClick = useCallback15(
|
|
5362
5344
|
(event) => {
|
|
5363
5345
|
if (inputReadOnly && !readOnly) {
|
|
5364
5346
|
handleCalendarToggle(event);
|
|
@@ -5366,7 +5348,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5366
5348
|
},
|
|
5367
5349
|
[inputReadOnly, readOnly, handleCalendarToggle]
|
|
5368
5350
|
);
|
|
5369
|
-
const handlePresetClick =
|
|
5351
|
+
const handlePresetClick = useCallback15(
|
|
5370
5352
|
(presetValue) => {
|
|
5371
5353
|
if (props.value !== void 0) {
|
|
5372
5354
|
onChange?.({ target: { name: props.name, value: presetValue } });
|
|
@@ -5379,7 +5361,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
5379
5361
|
},
|
|
5380
5362
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
|
|
5381
5363
|
);
|
|
5382
|
-
const isPresetDisabled =
|
|
5364
|
+
const isPresetDisabled = useCallback15(
|
|
5383
5365
|
(presetValue) => {
|
|
5384
5366
|
try {
|
|
5385
5367
|
const dates = parseDates(presetValue, format);
|
|
@@ -5638,14 +5620,14 @@ var InsetDrawer = styled20(JoyDrawer2)(({ theme }) => ({
|
|
|
5638
5620
|
}));
|
|
5639
5621
|
|
|
5640
5622
|
// src/components/FilterableCheckboxGroup/FilterableCheckboxGroup.tsx
|
|
5641
|
-
import React32, { useCallback as
|
|
5623
|
+
import React32, { useCallback as useCallback16, useEffect as useEffect9, useMemo as useMemo14, useRef as useRef10, useState as useState11 } from "react";
|
|
5642
5624
|
import SearchIcon from "@mui/icons-material/Search";
|
|
5643
5625
|
import { useThemeProps as useThemeProps8 } from "@mui/joy";
|
|
5644
5626
|
import { useVirtualizer as useVirtualizer3 } from "@tanstack/react-virtual";
|
|
5645
5627
|
var EMPTY_VALUE = [];
|
|
5646
5628
|
function LabelWithTooltip(props) {
|
|
5647
5629
|
const { label, size } = props;
|
|
5648
|
-
const labelContentRef =
|
|
5630
|
+
const labelContentRef = useRef10(null);
|
|
5649
5631
|
const [isOverflowing, setIsOverflowing] = useState11(false);
|
|
5650
5632
|
const labelContent = /* @__PURE__ */ React32.createElement(
|
|
5651
5633
|
"span",
|
|
@@ -5693,12 +5675,12 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5693
5675
|
const [rawValue, setInternalValue] = useControlledState(
|
|
5694
5676
|
value,
|
|
5695
5677
|
value ?? EMPTY_VALUE,
|
|
5696
|
-
|
|
5678
|
+
useCallback16((newValue) => onChange?.(newValue ?? []), [onChange])
|
|
5697
5679
|
);
|
|
5698
5680
|
const internalValue = rawValue ?? EMPTY_VALUE;
|
|
5699
|
-
const parentRef =
|
|
5700
|
-
const isInitialSortRef =
|
|
5701
|
-
const prevOptionsRef =
|
|
5681
|
+
const parentRef = useRef10(null);
|
|
5682
|
+
const isInitialSortRef = useRef10(false);
|
|
5683
|
+
const prevOptionsRef = useRef10([...options]);
|
|
5702
5684
|
const filteredOptions = useMemo14(() => {
|
|
5703
5685
|
if (!searchTerm) return sortedOptions;
|
|
5704
5686
|
return sortedOptions.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
|
|
@@ -5750,10 +5732,10 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5750
5732
|
useEffect9(() => {
|
|
5751
5733
|
virtualizer.measure();
|
|
5752
5734
|
}, [virtualizer, filteredOptions, size]);
|
|
5753
|
-
const handleSearchChange =
|
|
5735
|
+
const handleSearchChange = useCallback16((event) => {
|
|
5754
5736
|
setSearchTerm(event.target.value);
|
|
5755
5737
|
}, []);
|
|
5756
|
-
const handleCheckboxChange =
|
|
5738
|
+
const handleCheckboxChange = useCallback16(
|
|
5757
5739
|
(optionValue) => (event) => {
|
|
5758
5740
|
const checked = event.target.checked;
|
|
5759
5741
|
const newValue = checked ? [...internalValue, optionValue] : internalValue.filter((v) => v !== optionValue);
|
|
@@ -5761,7 +5743,7 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5761
5743
|
},
|
|
5762
5744
|
[internalValue, setInternalValue]
|
|
5763
5745
|
);
|
|
5764
|
-
const handleSelectAll =
|
|
5746
|
+
const handleSelectAll = useCallback16(
|
|
5765
5747
|
(event) => {
|
|
5766
5748
|
const checked = event.target.checked;
|
|
5767
5749
|
const enabledOptions = filteredOptions.filter((option) => !option.disabled);
|
|
@@ -6119,7 +6101,7 @@ function MenuButton2(props) {
|
|
|
6119
6101
|
MenuButton2.displayName = "MenuButton";
|
|
6120
6102
|
|
|
6121
6103
|
// src/components/MonthPicker/MonthPicker.tsx
|
|
6122
|
-
import React36, { forwardRef as forwardRef9, useCallback as
|
|
6104
|
+
import React36, { forwardRef as forwardRef9, useCallback as useCallback17, useEffect as useEffect11, useImperativeHandle as useImperativeHandle4, useRef as useRef11, useState as useState13 } from "react";
|
|
6123
6105
|
import CalendarTodayIcon3 from "@mui/icons-material/CalendarToday";
|
|
6124
6106
|
import { styled as styled21, useThemeProps as useThemeProps9 } from "@mui/joy";
|
|
6125
6107
|
import { FocusTrap as FocusTrap3, ClickAwayListener as ClickAwayListener3, Popper as Popper4 } from "@mui/base";
|
|
@@ -6202,18 +6184,18 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6202
6184
|
locale,
|
|
6203
6185
|
...innerProps
|
|
6204
6186
|
} = props;
|
|
6205
|
-
const innerRef =
|
|
6206
|
-
const buttonRef =
|
|
6187
|
+
const innerRef = useRef11(null);
|
|
6188
|
+
const buttonRef = useRef11(null);
|
|
6207
6189
|
const [rawValue, setValue, isControlled] = useControlledState(
|
|
6208
6190
|
props.value,
|
|
6209
6191
|
props.defaultValue ?? null,
|
|
6210
|
-
|
|
6192
|
+
useCallback17(
|
|
6211
6193
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
6212
6194
|
[props.name, onChange]
|
|
6213
6195
|
)
|
|
6214
6196
|
);
|
|
6215
6197
|
const value = rawValue ?? "";
|
|
6216
|
-
const getFormattedDisplayValue =
|
|
6198
|
+
const getFormattedDisplayValue = useCallback17(
|
|
6217
6199
|
(inputValue) => {
|
|
6218
6200
|
if (!inputValue) return "";
|
|
6219
6201
|
try {
|
|
@@ -6236,7 +6218,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6236
6218
|
useEffect11(() => {
|
|
6237
6219
|
setDisplayValue(getFormattedDisplayValue(value));
|
|
6238
6220
|
}, [value, getFormattedDisplayValue]);
|
|
6239
|
-
const handleChange =
|
|
6221
|
+
const handleChange = useCallback17(
|
|
6240
6222
|
(event) => {
|
|
6241
6223
|
const newValue = event.target.value;
|
|
6242
6224
|
setValue(newValue);
|
|
@@ -6246,14 +6228,14 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6246
6228
|
},
|
|
6247
6229
|
[setValue, getFormattedDisplayValue, isControlled]
|
|
6248
6230
|
);
|
|
6249
|
-
const handleCalendarToggle =
|
|
6231
|
+
const handleCalendarToggle = useCallback17(
|
|
6250
6232
|
(event) => {
|
|
6251
6233
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
6252
6234
|
innerRef.current?.focus();
|
|
6253
6235
|
},
|
|
6254
6236
|
[anchorEl, setAnchorEl, innerRef]
|
|
6255
6237
|
);
|
|
6256
|
-
const handleInputMouseDown =
|
|
6238
|
+
const handleInputMouseDown = useCallback17(
|
|
6257
6239
|
(event) => {
|
|
6258
6240
|
event.preventDefault();
|
|
6259
6241
|
buttonRef.current?.focus();
|
|
@@ -6377,7 +6359,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
6377
6359
|
});
|
|
6378
6360
|
|
|
6379
6361
|
// src/components/MonthRangePicker/MonthRangePicker.tsx
|
|
6380
|
-
import React37, { forwardRef as forwardRef10, useCallback as
|
|
6362
|
+
import React37, { forwardRef as forwardRef10, useCallback as useCallback18, useEffect as useEffect12, useImperativeHandle as useImperativeHandle5, useMemo as useMemo15, useRef as useRef12, useState as useState14 } from "react";
|
|
6381
6363
|
import { IMaskInput as IMaskInput3, IMask as IMask3 } from "react-imask";
|
|
6382
6364
|
import CalendarTodayIcon4 from "@mui/icons-material/CalendarToday";
|
|
6383
6365
|
import { styled as styled22, useThemeProps as useThemeProps10 } from "@mui/joy";
|
|
@@ -6492,12 +6474,12 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6492
6474
|
} = props;
|
|
6493
6475
|
const displayFormat = displayFormatProp ?? format;
|
|
6494
6476
|
const isAlphabeticDisplay = hasAlphabeticMonth3(displayFormat);
|
|
6495
|
-
const innerRef =
|
|
6496
|
-
const buttonRef =
|
|
6477
|
+
const innerRef = useRef12(null);
|
|
6478
|
+
const buttonRef = useRef12(null);
|
|
6497
6479
|
const [rawValue, setValue] = useControlledState(
|
|
6498
6480
|
props.value,
|
|
6499
6481
|
props.defaultValue ?? null,
|
|
6500
|
-
|
|
6482
|
+
useCallback18(
|
|
6501
6483
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
6502
6484
|
[props.name, onChange]
|
|
6503
6485
|
)
|
|
@@ -6527,7 +6509,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6527
6509
|
}
|
|
6528
6510
|
}, [anchorEl, innerRef]);
|
|
6529
6511
|
useImperativeHandle5(ref, () => innerRef.current, [innerRef]);
|
|
6530
|
-
const handleChange =
|
|
6512
|
+
const handleChange = useCallback18(
|
|
6531
6513
|
(event) => {
|
|
6532
6514
|
setDisplayValue(
|
|
6533
6515
|
event.target.value ? formatValueString4(parseDates2(event.target.value), displayFormat, locale) : ""
|
|
@@ -6536,7 +6518,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6536
6518
|
},
|
|
6537
6519
|
[displayFormat, locale, setValue]
|
|
6538
6520
|
);
|
|
6539
|
-
const handleInputMouseDown =
|
|
6521
|
+
const handleInputMouseDown = useCallback18(
|
|
6540
6522
|
(event) => {
|
|
6541
6523
|
if (isAlphabeticDisplay) {
|
|
6542
6524
|
event.preventDefault();
|
|
@@ -6545,14 +6527,14 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
6545
6527
|
},
|
|
6546
6528
|
[isAlphabeticDisplay, buttonRef]
|
|
6547
6529
|
);
|
|
6548
|
-
const handleCalendarToggle =
|
|
6530
|
+
const handleCalendarToggle = useCallback18(
|
|
6549
6531
|
(event) => {
|
|
6550
6532
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
6551
6533
|
innerRef.current?.focus();
|
|
6552
6534
|
},
|
|
6553
6535
|
[anchorEl, setAnchorEl, innerRef]
|
|
6554
6536
|
);
|
|
6555
|
-
const handleCalendarChange =
|
|
6537
|
+
const handleCalendarChange = useCallback18(
|
|
6556
6538
|
([date1, date2]) => {
|
|
6557
6539
|
if (!date1 || !date2) return;
|
|
6558
6540
|
const formattedValue = formatValueString4([date1, date2], format);
|
|
@@ -6791,7 +6773,7 @@ function Navigator(props) {
|
|
|
6791
6773
|
Navigator.displayName = "Navigator";
|
|
6792
6774
|
|
|
6793
6775
|
// src/components/PercentageInput/PercentageInput.tsx
|
|
6794
|
-
import React41, { useCallback as
|
|
6776
|
+
import React41, { useCallback as useCallback19, useMemo as useMemo16 } from "react";
|
|
6795
6777
|
import { NumericFormat as NumericFormat2 } from "react-number-format";
|
|
6796
6778
|
import { styled as styled25, useThemeProps as useThemeProps11 } from "@mui/joy";
|
|
6797
6779
|
var padDecimal = (value, decimalScale) => {
|
|
@@ -6848,7 +6830,7 @@ var PercentageInput = React41.forwardRef(
|
|
|
6848
6830
|
const [_value, setValue] = useControlledState(
|
|
6849
6831
|
props.value,
|
|
6850
6832
|
props.defaultValue ?? null,
|
|
6851
|
-
|
|
6833
|
+
useCallback19((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
6852
6834
|
);
|
|
6853
6835
|
const value = useMemo16(() => {
|
|
6854
6836
|
if (_value && useMinorUnit) {
|
|
@@ -6860,7 +6842,7 @@ var PercentageInput = React41.forwardRef(
|
|
|
6860
6842
|
() => value != null && (max != null && value > max || min != null && value < min),
|
|
6861
6843
|
[max, min, value]
|
|
6862
6844
|
);
|
|
6863
|
-
const handleChange =
|
|
6845
|
+
const handleChange = useCallback19(
|
|
6864
6846
|
(event) => {
|
|
6865
6847
|
if (event.target.value === "") {
|
|
6866
6848
|
setValue(null);
|
|
@@ -7622,7 +7604,7 @@ function ThemeProvider(props) {
|
|
|
7622
7604
|
ThemeProvider.displayName = "ThemeProvider";
|
|
7623
7605
|
|
|
7624
7606
|
// src/components/Uploader/Uploader.tsx
|
|
7625
|
-
import React49, { useCallback as
|
|
7607
|
+
import React49, { useCallback as useCallback20, useEffect as useEffect13, useMemo as useMemo17, useRef as useRef13, useState as useState16 } from "react";
|
|
7626
7608
|
import { styled as styled31, Input as Input2 } from "@mui/joy";
|
|
7627
7609
|
import MuiFileUploadIcon from "@mui/icons-material/CloudUploadRounded";
|
|
7628
7610
|
import MuiUploadFileIcon from "@mui/icons-material/UploadFileRounded";
|
|
@@ -7756,8 +7738,8 @@ var Uploader = React49.memo((props) => {
|
|
|
7756
7738
|
error: errorProp,
|
|
7757
7739
|
helperText: helperTextProp
|
|
7758
7740
|
} = props;
|
|
7759
|
-
const dropZoneRef =
|
|
7760
|
-
const inputRef =
|
|
7741
|
+
const dropZoneRef = useRef13(null);
|
|
7742
|
+
const inputRef = useRef13(null);
|
|
7761
7743
|
const [errorText, setErrorText] = useState16();
|
|
7762
7744
|
const [files, setFiles] = useState16([]);
|
|
7763
7745
|
const [uploaded, setUploaded] = useState16(props.uploaded || []);
|
|
@@ -7807,7 +7789,7 @@ var Uploader = React49.memo((props) => {
|
|
|
7807
7789
|
() => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
|
|
7808
7790
|
[files, maxCount, uploaded]
|
|
7809
7791
|
);
|
|
7810
|
-
const addFiles =
|
|
7792
|
+
const addFiles = useCallback20(
|
|
7811
7793
|
(uploads) => {
|
|
7812
7794
|
try {
|
|
7813
7795
|
const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
|
|
@@ -7889,14 +7871,14 @@ var Uploader = React49.memo((props) => {
|
|
|
7889
7871
|
}
|
|
7890
7872
|
}
|
|
7891
7873
|
}, [inputRef, files, minCount]);
|
|
7892
|
-
const handleFileChanged =
|
|
7874
|
+
const handleFileChanged = useCallback20(
|
|
7893
7875
|
(event) => {
|
|
7894
7876
|
const files2 = Array.from(event.target.files || []);
|
|
7895
7877
|
addFiles(files2);
|
|
7896
7878
|
},
|
|
7897
7879
|
[addFiles]
|
|
7898
7880
|
);
|
|
7899
|
-
const handleDeleteFile =
|
|
7881
|
+
const handleDeleteFile = useCallback20(
|
|
7900
7882
|
(deletedFile) => {
|
|
7901
7883
|
if (deletedFile instanceof File) {
|
|
7902
7884
|
setFiles((current) => {
|
|
@@ -7916,7 +7898,7 @@ var Uploader = React49.memo((props) => {
|
|
|
7916
7898
|
},
|
|
7917
7899
|
[name, onChange, onDelete]
|
|
7918
7900
|
);
|
|
7919
|
-
const handleUploaderButtonClick =
|
|
7901
|
+
const handleUploaderButtonClick = useCallback20(() => {
|
|
7920
7902
|
inputRef.current?.click();
|
|
7921
7903
|
}, []);
|
|
7922
7904
|
const uploader = /* @__PURE__ */ React49.createElement(
|