@ceed/ads 1.8.7 → 1.10.0
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 +38 -0
- package/dist/components/DataTable/hooks.d.ts +56 -0
- package/dist/components/DataTable/styled.d.ts +281 -0
- package/dist/components/DataTable/types.d.ts +31 -3
- package/dist/components/DataTable/utils.d.ts +16 -0
- package/dist/index.cjs +1141 -911
- package/dist/index.js +1010 -775
- package/framer/index.js +42 -42
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -147,7 +147,7 @@ import {
|
|
|
147
147
|
stepperClasses,
|
|
148
148
|
Skeleton as Skeleton2,
|
|
149
149
|
skeletonClasses,
|
|
150
|
-
styled as
|
|
150
|
+
styled as styled30
|
|
151
151
|
} from "@mui/joy";
|
|
152
152
|
|
|
153
153
|
// src/components/Accordions/Accordions.tsx
|
|
@@ -1836,116 +1836,301 @@ var CurrencyInput = React15.forwardRef(function CurrencyInput2(inProps, ref) {
|
|
|
1836
1836
|
var CurrencyInput_default = CurrencyInput;
|
|
1837
1837
|
|
|
1838
1838
|
// src/components/DataTable/DataTable.tsx
|
|
1839
|
-
import
|
|
1840
|
-
useCallback as
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
useRef as useRef4,
|
|
1844
|
-
useState as useState6,
|
|
1839
|
+
import React25, {
|
|
1840
|
+
useCallback as useCallback11,
|
|
1841
|
+
useMemo as useMemo10,
|
|
1842
|
+
useRef as useRef6,
|
|
1845
1843
|
useId,
|
|
1846
1844
|
forwardRef as forwardRef7,
|
|
1847
1845
|
useImperativeHandle as useImperativeHandle2,
|
|
1848
|
-
|
|
1849
|
-
memo,
|
|
1850
|
-
useLayoutEffect
|
|
1846
|
+
Fragment as Fragment2
|
|
1851
1847
|
} from "react";
|
|
1852
1848
|
import { useVirtualizer as useVirtualizer2 } from "@tanstack/react-virtual";
|
|
1853
|
-
import { styled as styled12, LinearProgress, Link, useTheme, buttonClasses, iconButtonClasses } from "@mui/joy";
|
|
1854
|
-
import SortIcon from "@mui/icons-material/ArrowUpwardRounded";
|
|
1855
1849
|
|
|
1856
|
-
// src/components/
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
var Table = (props) => {
|
|
1870
|
-
const { children, ...inheritProps } = props;
|
|
1871
|
-
return /* @__PURE__ */ React16.createElement(JoyTable, { ...inheritProps }, children);
|
|
1872
|
-
};
|
|
1873
|
-
Table.displayName = "Table";
|
|
1874
|
-
function TableHead(props) {
|
|
1875
|
-
const {
|
|
1876
|
-
headCells,
|
|
1877
|
-
showCheckbox,
|
|
1878
|
-
onCheckboxChange,
|
|
1879
|
-
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
1880
|
-
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
1881
|
-
} = props;
|
|
1882
|
-
return /* @__PURE__ */ React16.createElement("thead", null, /* @__PURE__ */ React16.createElement("tr", null, showCheckbox && /* @__PURE__ */ React16.createElement(
|
|
1883
|
-
"th",
|
|
1884
|
-
{
|
|
1885
|
-
style: {
|
|
1886
|
-
width: "40px",
|
|
1887
|
-
textAlign: "center"
|
|
1888
|
-
}
|
|
1889
|
-
},
|
|
1890
|
-
/* @__PURE__ */ React16.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
|
|
1891
|
-
), headCells.map((headCell) => /* @__PURE__ */ React16.createElement(
|
|
1892
|
-
"th",
|
|
1893
|
-
{
|
|
1894
|
-
key: headCell.label,
|
|
1895
|
-
style: {
|
|
1896
|
-
width: headCell.width,
|
|
1897
|
-
minWidth: headCell.minWidth,
|
|
1898
|
-
maxWidth: headCell.maxWidth,
|
|
1899
|
-
textAlign: headCell.numeric ? "right" : "left"
|
|
1900
|
-
}
|
|
1901
|
-
},
|
|
1902
|
-
headCell.label
|
|
1903
|
-
))));
|
|
1850
|
+
// src/components/DataTable/utils.ts
|
|
1851
|
+
function extractFieldsFromGroupingModel(items) {
|
|
1852
|
+
const fields = /* @__PURE__ */ new Set();
|
|
1853
|
+
for (const item of items) {
|
|
1854
|
+
if ("groupId" in item) {
|
|
1855
|
+
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
1856
|
+
const childFields = extractFieldsFromGroupingModel(children);
|
|
1857
|
+
childFields.forEach((field) => fields.add(field));
|
|
1858
|
+
} else {
|
|
1859
|
+
fields.add(item.field);
|
|
1860
|
+
}
|
|
1861
|
+
}
|
|
1862
|
+
return fields;
|
|
1904
1863
|
}
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
const
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
"td",
|
|
1918
|
-
{
|
|
1919
|
-
style: {
|
|
1920
|
-
textAlign: "center"
|
|
1864
|
+
function reorderColumnsByGroupingModel(columns, columnGroupingModel) {
|
|
1865
|
+
const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
|
|
1866
|
+
const orderedFields = [];
|
|
1867
|
+
function collectFieldsInOrder(items) {
|
|
1868
|
+
for (const item of items) {
|
|
1869
|
+
if ("groupId" in item) {
|
|
1870
|
+
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
1871
|
+
collectFieldsInOrder(children);
|
|
1872
|
+
} else {
|
|
1873
|
+
if (!orderedFields.includes(item.field)) {
|
|
1874
|
+
orderedFields.push(item.field);
|
|
1875
|
+
}
|
|
1921
1876
|
}
|
|
1922
|
-
}
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1877
|
+
}
|
|
1878
|
+
}
|
|
1879
|
+
collectFieldsInOrder(columnGroupingModel);
|
|
1880
|
+
const columnMap = new Map(columns.map((col) => [col.field, col]));
|
|
1881
|
+
const reorderedColumns = [];
|
|
1882
|
+
for (const field of orderedFields) {
|
|
1883
|
+
const column = columnMap.get(field);
|
|
1884
|
+
if (column) {
|
|
1885
|
+
reorderedColumns.push(column);
|
|
1886
|
+
}
|
|
1887
|
+
}
|
|
1888
|
+
for (const column of columns) {
|
|
1889
|
+
if (!fieldsInGroupingModel.has(column.field)) {
|
|
1890
|
+
reorderedColumns.push(column);
|
|
1891
|
+
}
|
|
1892
|
+
}
|
|
1893
|
+
return reorderedColumns;
|
|
1894
|
+
}
|
|
1895
|
+
function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }) {
|
|
1896
|
+
const result = [];
|
|
1897
|
+
for (const item of items) {
|
|
1898
|
+
if ("groupId" in item) {
|
|
1899
|
+
const newPath = [...groupPath, item.groupId];
|
|
1900
|
+
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
1901
|
+
result.push(...flattenColumnGroups(children, newPath, columnIndex));
|
|
1902
|
+
} else {
|
|
1903
|
+
result.push({
|
|
1904
|
+
...item,
|
|
1905
|
+
groupPath,
|
|
1906
|
+
columnIndex: columnIndex.current++
|
|
1907
|
+
});
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1910
|
+
return result;
|
|
1911
|
+
}
|
|
1912
|
+
function calculateColumnGroups(columnGroupingModel, columns) {
|
|
1913
|
+
const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
|
|
1914
|
+
const flattenedColumns = flattenColumnGroups(columnGroupingModel);
|
|
1915
|
+
const columnIndexMap = new Map(flattenedColumns.map((col) => [col.field, col.columnIndex]));
|
|
1916
|
+
const processedGroups = /* @__PURE__ */ new Map();
|
|
1917
|
+
const groupsByLevel = [];
|
|
1918
|
+
let maxLevel = 0;
|
|
1919
|
+
function processGroup(items, level, parentGroupId) {
|
|
1920
|
+
let minIndex = Infinity;
|
|
1921
|
+
let maxIndex = -Infinity;
|
|
1922
|
+
for (const item of items) {
|
|
1923
|
+
if ("groupId" in item) {
|
|
1924
|
+
const groupKey = parentGroupId ? `${parentGroupId}.${item.groupId}` : item.groupId;
|
|
1925
|
+
if (!processedGroups.has(groupKey)) {
|
|
1926
|
+
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
1927
|
+
const { startIndex, colspan } = processGroup(children, level + 1, groupKey);
|
|
1928
|
+
const group = {
|
|
1929
|
+
groupId: item.groupId,
|
|
1930
|
+
headerName: item.headerName,
|
|
1931
|
+
headerClassName: item.headerClassName,
|
|
1932
|
+
colspan,
|
|
1933
|
+
level,
|
|
1934
|
+
startIndex
|
|
1935
|
+
};
|
|
1936
|
+
processedGroups.set(groupKey, group);
|
|
1937
|
+
if (!groupsByLevel[level]) {
|
|
1938
|
+
groupsByLevel[level] = [];
|
|
1939
|
+
}
|
|
1940
|
+
groupsByLevel[level].push(group);
|
|
1941
|
+
maxLevel = Math.max(maxLevel, level);
|
|
1942
|
+
minIndex = Math.min(minIndex, startIndex);
|
|
1943
|
+
maxIndex = Math.max(maxIndex, startIndex + colspan - 1);
|
|
1944
|
+
}
|
|
1945
|
+
} else {
|
|
1946
|
+
const columnIndex = columnIndexMap.get(item.field);
|
|
1947
|
+
if (columnIndex !== void 0) {
|
|
1948
|
+
minIndex = Math.min(minIndex, columnIndex);
|
|
1949
|
+
maxIndex = Math.max(maxIndex, columnIndex);
|
|
1950
|
+
}
|
|
1930
1951
|
}
|
|
1931
|
-
}
|
|
1932
|
-
|
|
1933
|
-
|
|
1952
|
+
}
|
|
1953
|
+
return {
|
|
1954
|
+
startIndex: minIndex === Infinity ? 0 : minIndex,
|
|
1955
|
+
colspan: maxIndex === -Infinity ? 0 : maxIndex - minIndex + 1
|
|
1956
|
+
};
|
|
1957
|
+
}
|
|
1958
|
+
processGroup(columnGroupingModel, 0);
|
|
1959
|
+
groupsByLevel.forEach((level) => {
|
|
1960
|
+
level.sort((a, b) => a.startIndex - b.startIndex);
|
|
1961
|
+
});
|
|
1962
|
+
return { groups: groupsByLevel, maxLevel, fieldsInGroupingModel };
|
|
1934
1963
|
}
|
|
1935
|
-
|
|
1964
|
+
function getTextAlign(props) {
|
|
1965
|
+
return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
|
|
1966
|
+
}
|
|
1967
|
+
var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
|
|
1968
|
+
|
|
1969
|
+
// src/components/DataTable/styled.tsx
|
|
1970
|
+
import React16 from "react";
|
|
1971
|
+
import { styled as styled8, LinearProgress, buttonClasses, iconButtonClasses } from "@mui/joy";
|
|
1972
|
+
import { motion as motion16 } from "framer-motion";
|
|
1973
|
+
import SortIcon from "@mui/icons-material/ArrowUpwardRounded";
|
|
1974
|
+
var EllipsisDiv = styled8("div", {
|
|
1975
|
+
name: "DataTable",
|
|
1976
|
+
slot: "textEllipsis"
|
|
1977
|
+
})({
|
|
1978
|
+
overflow: "hidden",
|
|
1979
|
+
textOverflow: "ellipsis",
|
|
1980
|
+
whiteSpace: "nowrap"
|
|
1981
|
+
});
|
|
1982
|
+
var OverlayWrapper = styled8("tr", {
|
|
1983
|
+
name: "DataTable",
|
|
1984
|
+
slot: "overlayWrapper"
|
|
1985
|
+
})({
|
|
1986
|
+
position: "sticky",
|
|
1987
|
+
top: `calc(var(--unstable_TableCell-height, 32px))`,
|
|
1988
|
+
left: 0,
|
|
1989
|
+
right: 0,
|
|
1990
|
+
zIndex: 1,
|
|
1991
|
+
"& > td": {
|
|
1992
|
+
height: 0,
|
|
1993
|
+
padding: 0,
|
|
1994
|
+
border: "none !important"
|
|
1995
|
+
}
|
|
1996
|
+
});
|
|
1997
|
+
var VirtualizedTableBody = styled8("tbody", {
|
|
1998
|
+
name: "DataTable",
|
|
1999
|
+
slot: "tableBody"
|
|
2000
|
+
})({
|
|
2001
|
+
"&::after": {
|
|
2002
|
+
content: "''",
|
|
2003
|
+
display: "block",
|
|
2004
|
+
height: "0.01em"
|
|
2005
|
+
},
|
|
2006
|
+
[`& .${buttonClasses.root}`]: {
|
|
2007
|
+
"--Button-minHeight": "26px",
|
|
2008
|
+
"--Button-paddingBlock": "0.25rem",
|
|
2009
|
+
lineHeight: 1,
|
|
2010
|
+
marginTop: "-2px",
|
|
2011
|
+
marginBottom: "-2px"
|
|
2012
|
+
},
|
|
2013
|
+
[`& .${iconButtonClasses.root}`]: {
|
|
2014
|
+
"--IconButton-size": "26px",
|
|
2015
|
+
verticalAlign: "middle",
|
|
2016
|
+
marginTop: "-2px",
|
|
2017
|
+
marginBottom: "-2px"
|
|
2018
|
+
}
|
|
2019
|
+
});
|
|
2020
|
+
var StyledTableRow = styled8("tr", {
|
|
2021
|
+
name: "DataTable",
|
|
2022
|
+
slot: "tableRow",
|
|
2023
|
+
shouldForwardProp: (prop) => prop !== "striped"
|
|
2024
|
+
})(({ striped }) => ({
|
|
2025
|
+
...striped && {
|
|
2026
|
+
backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
|
|
2027
|
+
color: "var(--ceed-palette-text-primary)",
|
|
2028
|
+
"& td": {
|
|
2029
|
+
backgroundColor: "background.surface"
|
|
2030
|
+
}
|
|
2031
|
+
},
|
|
2032
|
+
"&:hover": {
|
|
2033
|
+
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
|
|
2034
|
+
"& td": {
|
|
2035
|
+
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
|
|
2036
|
+
}
|
|
2037
|
+
}
|
|
2038
|
+
}));
|
|
2039
|
+
var Asterisk = styled8("span", {
|
|
2040
|
+
name: "DataTable",
|
|
2041
|
+
slot: "headCellAsterisk"
|
|
2042
|
+
})(({ theme }) => ({
|
|
2043
|
+
color: "var(--ceed-palette-danger-500)",
|
|
2044
|
+
marginLeft: theme.spacing(0.5)
|
|
2045
|
+
}));
|
|
2046
|
+
var StyledTh = styled8(motion16.th)(({ theme }) => ({
|
|
2047
|
+
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
2048
|
+
}));
|
|
2049
|
+
var StyledTd = styled8("td")(({ theme }) => ({
|
|
2050
|
+
transition: `box-shadow 0.3s`,
|
|
2051
|
+
"&:not(.is-last-left):not(.is-last-right)": {
|
|
2052
|
+
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
2053
|
+
},
|
|
2054
|
+
".ScrollableRight &": {
|
|
2055
|
+
"&.is-last-left": {
|
|
2056
|
+
boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
|
|
2057
|
+
}
|
|
2058
|
+
},
|
|
2059
|
+
".ScrollableLeft &": {
|
|
2060
|
+
"&.is-last-right": {
|
|
2061
|
+
boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
|
|
2062
|
+
}
|
|
2063
|
+
}
|
|
2064
|
+
}));
|
|
2065
|
+
var MotionSortIcon = motion16(SortIcon);
|
|
2066
|
+
var DefaultLoadingOverlay = () => /* @__PURE__ */ React16.createElement(LinearProgress, { value: 8, variant: "plain" });
|
|
2067
|
+
var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ React16.createElement(
|
|
2068
|
+
Box_default,
|
|
2069
|
+
{
|
|
2070
|
+
sx: {
|
|
2071
|
+
position: "absolute",
|
|
2072
|
+
top: 0,
|
|
2073
|
+
right: 0,
|
|
2074
|
+
bottom: 0,
|
|
2075
|
+
width: "4px",
|
|
2076
|
+
cursor: "col-resize"
|
|
2077
|
+
},
|
|
2078
|
+
onClick: (e) => e.stopPropagation(),
|
|
2079
|
+
onMouseDown: (e) => {
|
|
2080
|
+
const initialX = e.clientX;
|
|
2081
|
+
const initialWidth = ref.current?.getBoundingClientRect().width;
|
|
2082
|
+
const onMouseMove = (e2) => {
|
|
2083
|
+
if (initialWidth && initialX) {
|
|
2084
|
+
ref.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
|
|
2085
|
+
targetRef.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
|
|
2086
|
+
}
|
|
2087
|
+
};
|
|
2088
|
+
const onMouseUp = () => {
|
|
2089
|
+
document.removeEventListener("mousemove", onMouseMove);
|
|
2090
|
+
document.removeEventListener("mouseup", onMouseUp);
|
|
2091
|
+
};
|
|
2092
|
+
document.addEventListener("mousemove", onMouseMove);
|
|
2093
|
+
document.addEventListener("mouseup", onMouseUp);
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
);
|
|
2097
|
+
|
|
2098
|
+
// src/components/DataTable/components.tsx
|
|
2099
|
+
import React22, {
|
|
2100
|
+
useRef as useRef4,
|
|
2101
|
+
useState as useState6,
|
|
2102
|
+
useLayoutEffect,
|
|
2103
|
+
useMemo as useMemo8,
|
|
2104
|
+
useCallback as useCallback8,
|
|
2105
|
+
useEffect as useEffect4,
|
|
2106
|
+
memo,
|
|
2107
|
+
createElement
|
|
2108
|
+
} from "react";
|
|
2109
|
+
import { styled as styled12, useTheme } from "@mui/joy";
|
|
2110
|
+
import { AnimatePresence as AnimatePresence2 } from "framer-motion";
|
|
1936
2111
|
|
|
1937
2112
|
// src/components/DatePicker/DatePicker.tsx
|
|
1938
2113
|
import React17, { forwardRef as forwardRef6, useCallback as useCallback7, useEffect as useEffect3, useImperativeHandle, useRef as useRef3, useState as useState5 } from "react";
|
|
1939
2114
|
import { IMaskInput, IMask } from "react-imask";
|
|
1940
2115
|
import CalendarTodayIcon from "@mui/icons-material/CalendarToday";
|
|
1941
|
-
import { styled as
|
|
2116
|
+
import { styled as styled10, useThemeProps as useThemeProps4 } from "@mui/joy";
|
|
1942
2117
|
import { FocusTrap, ClickAwayListener, Popper as Popper2 } from "@mui/base";
|
|
1943
2118
|
|
|
1944
|
-
// src/components/
|
|
1945
|
-
import {
|
|
2119
|
+
// src/components/Sheet/Sheet.tsx
|
|
2120
|
+
import { Sheet as JoySheet } from "@mui/joy";
|
|
1946
2121
|
import { motion as motion17 } from "framer-motion";
|
|
1947
|
-
var
|
|
1948
|
-
var
|
|
2122
|
+
var MotionSheet = motion17(JoySheet);
|
|
2123
|
+
var Sheet = MotionSheet;
|
|
2124
|
+
Sheet.displayName = "Sheet";
|
|
2125
|
+
|
|
2126
|
+
// src/components/Sheet/index.ts
|
|
2127
|
+
var Sheet_default = Sheet;
|
|
2128
|
+
|
|
2129
|
+
// src/components/DialogActions/DialogActions.tsx
|
|
2130
|
+
import { DialogActions as JoyDialogActions, styled as styled9 } from "@mui/joy";
|
|
2131
|
+
import { motion as motion18 } from "framer-motion";
|
|
2132
|
+
var MotionDialogActions = motion18(JoyDialogActions);
|
|
2133
|
+
var StyledDialogActions = styled9(MotionDialogActions)(({ theme }) => ({
|
|
1949
2134
|
padding: theme.spacing(2),
|
|
1950
2135
|
gap: theme.spacing(2),
|
|
1951
2136
|
flexDirection: "row",
|
|
@@ -1958,7 +2143,7 @@ DialogActions.displayName = "DialogActions";
|
|
|
1958
2143
|
var DialogActions_default = DialogActions;
|
|
1959
2144
|
|
|
1960
2145
|
// src/components/DatePicker/DatePicker.tsx
|
|
1961
|
-
var CalendarButton =
|
|
2146
|
+
var CalendarButton = styled10(IconButton_default, {
|
|
1962
2147
|
name: "DatePicker",
|
|
1963
2148
|
slot: "calendarButton"
|
|
1964
2149
|
})(({ theme }) => ({
|
|
@@ -1968,13 +2153,13 @@ var CalendarButton = styled9(IconButton_default, {
|
|
|
1968
2153
|
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
|
|
1969
2154
|
}
|
|
1970
2155
|
}));
|
|
1971
|
-
var StyledPopper =
|
|
2156
|
+
var StyledPopper = styled10(Popper2, {
|
|
1972
2157
|
name: "DatePicker",
|
|
1973
2158
|
slot: "popper"
|
|
1974
2159
|
})(({ theme }) => ({
|
|
1975
2160
|
zIndex: theme.zIndex.tooltip
|
|
1976
2161
|
}));
|
|
1977
|
-
var CalendarSheet =
|
|
2162
|
+
var CalendarSheet = styled10(Sheet_default, {
|
|
1978
2163
|
name: "DatePicker",
|
|
1979
2164
|
slot: "sheet",
|
|
1980
2165
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -1983,7 +2168,7 @@ var CalendarSheet = styled9(Sheet_default, {
|
|
|
1983
2168
|
boxShadow: theme.shadow.md,
|
|
1984
2169
|
borderRadius: theme.radius.md
|
|
1985
2170
|
}));
|
|
1986
|
-
var DatePickerRoot =
|
|
2171
|
+
var DatePickerRoot = styled10("div", {
|
|
1987
2172
|
name: "DatePicker",
|
|
1988
2173
|
slot: "root",
|
|
1989
2174
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -2300,8 +2485,8 @@ var DatePicker_default = DatePicker;
|
|
|
2300
2485
|
// src/components/Textarea/Textarea.tsx
|
|
2301
2486
|
import React18 from "react";
|
|
2302
2487
|
import { Textarea as JoyTextarea } from "@mui/joy";
|
|
2303
|
-
import { motion as
|
|
2304
|
-
var MotionTextarea =
|
|
2488
|
+
import { motion as motion19 } from "framer-motion";
|
|
2489
|
+
var MotionTextarea = motion19(JoyTextarea);
|
|
2305
2490
|
var Textarea = (props) => {
|
|
2306
2491
|
const {
|
|
2307
2492
|
label,
|
|
@@ -2354,8 +2539,8 @@ var Textarea_default = Textarea;
|
|
|
2354
2539
|
// src/components/Select/Select.tsx
|
|
2355
2540
|
import React19, { useMemo as useMemo7 } from "react";
|
|
2356
2541
|
import { Select as JoySelect, Option as JoyOption } from "@mui/joy";
|
|
2357
|
-
import { motion as
|
|
2358
|
-
var MotionOption =
|
|
2542
|
+
import { motion as motion20 } from "framer-motion";
|
|
2543
|
+
var MotionOption = motion20(JoyOption);
|
|
2359
2544
|
var Option = MotionOption;
|
|
2360
2545
|
Option.displayName = "Option";
|
|
2361
2546
|
function Select(props) {
|
|
@@ -2431,11 +2616,14 @@ Select.displayName = "Select";
|
|
|
2431
2616
|
// src/components/Select/index.ts
|
|
2432
2617
|
var Select_default = Select;
|
|
2433
2618
|
|
|
2619
|
+
// src/components/DataTable/components.tsx
|
|
2620
|
+
import { Link } from "@mui/joy";
|
|
2621
|
+
|
|
2434
2622
|
// src/components/Tooltip/Tooltip.tsx
|
|
2435
2623
|
import React20 from "react";
|
|
2436
2624
|
import { Tooltip as JoyTooltip } from "@mui/joy";
|
|
2437
|
-
import { motion as
|
|
2438
|
-
var MotionTooltip =
|
|
2625
|
+
import { motion as motion21 } from "framer-motion";
|
|
2626
|
+
var MotionTooltip = motion21(JoyTooltip);
|
|
2439
2627
|
var Tooltip = (props) => {
|
|
2440
2628
|
return /* @__PURE__ */ React20.createElement(MotionTooltip, { ...props });
|
|
2441
2629
|
};
|
|
@@ -2444,148 +2632,8 @@ Tooltip.displayName = "Tooltip";
|
|
|
2444
2632
|
// src/components/Tooltip/index.ts
|
|
2445
2633
|
var Tooltip_default = Tooltip;
|
|
2446
2634
|
|
|
2447
|
-
// src/components/DataTable/DataTable.tsx
|
|
2448
|
-
import { motion as motion21, AnimatePresence as AnimatePresence2 } from "framer-motion";
|
|
2449
|
-
|
|
2450
|
-
// src/components/Pagination/Pagination.tsx
|
|
2451
|
-
import React21, { useCallback as useCallback8, useEffect as useEffect4 } from "react";
|
|
2452
|
-
import PreviousIcon from "@mui/icons-material/ChevronLeft";
|
|
2453
|
-
import NextIcon from "@mui/icons-material/ChevronRight";
|
|
2454
|
-
import { styled as styled10 } from "@mui/joy";
|
|
2455
|
-
var PaginationButton = styled10(Button_default, {
|
|
2456
|
-
name: "Pagination",
|
|
2457
|
-
slot: "button"
|
|
2458
|
-
})(({ theme, active, size }) => ({
|
|
2459
|
-
"--Button-size": {
|
|
2460
|
-
sm: "32px",
|
|
2461
|
-
md: "40px",
|
|
2462
|
-
lg: "48px"
|
|
2463
|
-
}[size],
|
|
2464
|
-
width: "var(--Button-size)",
|
|
2465
|
-
height: "var(--Button-size)",
|
|
2466
|
-
backgroundColor: active ? theme.vars.palette.primary.softHoverBg : "transparent",
|
|
2467
|
-
color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.plainColor,
|
|
2468
|
-
"&:hover": {
|
|
2469
|
-
color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.softColor,
|
|
2470
|
-
backgroundColor: active ? theme.vars.palette.primary.softActiveBg : theme.vars.palette.neutral.softHoverBg
|
|
2471
|
-
}
|
|
2472
|
-
}));
|
|
2473
|
-
var PaginationIconButton = styled10(IconButton_default, {
|
|
2474
|
-
name: "Pagination",
|
|
2475
|
-
slot: "button"
|
|
2476
|
-
})(({ theme, size }) => ({
|
|
2477
|
-
"--IconButton-size": {
|
|
2478
|
-
sm: "32px",
|
|
2479
|
-
md: "40px",
|
|
2480
|
-
lg: "48px"
|
|
2481
|
-
}[size],
|
|
2482
|
-
"--Icon-fontSize": "20px",
|
|
2483
|
-
width: "var(--IconButton-size)",
|
|
2484
|
-
height: "var(--IconButton-size)",
|
|
2485
|
-
color: theme.vars.palette.neutral.plainColor,
|
|
2486
|
-
"&:hover": {
|
|
2487
|
-
color: theme.vars.palette.neutral.softColor,
|
|
2488
|
-
backgroundColor: theme.vars.palette.neutral.softHoverBg
|
|
2489
|
-
}
|
|
2490
|
-
}));
|
|
2491
|
-
var PaginationRoot = styled10(Stack_default, {
|
|
2492
|
-
name: "Pagination",
|
|
2493
|
-
slot: "root"
|
|
2494
|
-
})({});
|
|
2495
|
-
var PaginationContainer = styled10(Stack_default, {
|
|
2496
|
-
name: "Pagination",
|
|
2497
|
-
slot: "container"
|
|
2498
|
-
})(({ theme, size }) => ({
|
|
2499
|
-
gap: {
|
|
2500
|
-
sm: theme.spacing(1),
|
|
2501
|
-
md: theme.spacing(1.5),
|
|
2502
|
-
lg: theme.spacing(2)
|
|
2503
|
-
}[size]
|
|
2504
|
-
}));
|
|
2505
|
-
function Pagination(props) {
|
|
2506
|
-
const {
|
|
2507
|
-
paginationModel: _paginationModel,
|
|
2508
|
-
defaultPaginationModel = { page: 1, pageSize: 25 },
|
|
2509
|
-
onPageChange,
|
|
2510
|
-
rowCount,
|
|
2511
|
-
size = "md",
|
|
2512
|
-
...innerProps
|
|
2513
|
-
} = props;
|
|
2514
|
-
const [paginationModel, setPaginationModel] = useControlledState(
|
|
2515
|
-
_paginationModel,
|
|
2516
|
-
defaultPaginationModel,
|
|
2517
|
-
useCallback8(
|
|
2518
|
-
(newPage) => {
|
|
2519
|
-
onPageChange(newPage.page);
|
|
2520
|
-
},
|
|
2521
|
-
[onPageChange]
|
|
2522
|
-
)
|
|
2523
|
-
);
|
|
2524
|
-
const handlePageChange = (newPage) => {
|
|
2525
|
-
setPaginationModel({ ...paginationModel, page: newPage });
|
|
2526
|
-
};
|
|
2527
|
-
const firstPage = 1;
|
|
2528
|
-
const lastPage = Math.max(firstPage, Math.ceil(rowCount / paginationModel.pageSize));
|
|
2529
|
-
const beforePages = [paginationModel.page - 2, paginationModel.page - 1].filter((p) => p > 1);
|
|
2530
|
-
const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
|
|
2531
|
-
const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
|
|
2532
|
-
const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
|
|
2533
|
-
useEffect4(() => {
|
|
2534
|
-
if (paginationModel.page > lastPage) {
|
|
2535
|
-
setPaginationModel({ ...paginationModel, page: lastPage });
|
|
2536
|
-
}
|
|
2537
|
-
}, [rowCount, paginationModel, lastPage, setPaginationModel]);
|
|
2538
|
-
return /* @__PURE__ */ React21.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ React21.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ React21.createElement(
|
|
2539
|
-
PaginationIconButton,
|
|
2540
|
-
{
|
|
2541
|
-
size,
|
|
2542
|
-
variant: "plain",
|
|
2543
|
-
color: "neutral",
|
|
2544
|
-
onClick: () => handlePageChange(paginationModel.page - 1),
|
|
2545
|
-
disabled: paginationModel.page === firstPage,
|
|
2546
|
-
"aria-label": "Previous page"
|
|
2547
|
-
},
|
|
2548
|
-
/* @__PURE__ */ React21.createElement(PreviousIcon, null)
|
|
2549
|
-
), paginationModel.page !== firstPage && /* @__PURE__ */ React21.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ React21.createElement(
|
|
2550
|
-
PaginationButton,
|
|
2551
|
-
{
|
|
2552
|
-
size,
|
|
2553
|
-
variant: "plain",
|
|
2554
|
-
color: "neutral",
|
|
2555
|
-
onClick: () => handlePageChange(paginationModel.page - 3),
|
|
2556
|
-
"aria-label": "More previous pages"
|
|
2557
|
-
},
|
|
2558
|
-
"..."
|
|
2559
|
-
), beforePages.map((p) => /* @__PURE__ */ React21.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ React21.createElement(PaginationButton, { active: "true", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ React21.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ React21.createElement(
|
|
2560
|
-
PaginationButton,
|
|
2561
|
-
{
|
|
2562
|
-
size,
|
|
2563
|
-
variant: "plain",
|
|
2564
|
-
color: "neutral",
|
|
2565
|
-
"aria-label": "More next pages",
|
|
2566
|
-
onClick: () => handlePageChange(paginationModel.page + 3)
|
|
2567
|
-
},
|
|
2568
|
-
"..."
|
|
2569
|
-
), paginationModel.page !== lastPage && /* @__PURE__ */ React21.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ React21.createElement(
|
|
2570
|
-
PaginationIconButton,
|
|
2571
|
-
{
|
|
2572
|
-
size,
|
|
2573
|
-
variant: "plain",
|
|
2574
|
-
color: "neutral",
|
|
2575
|
-
onClick: () => handlePageChange(paginationModel.page + 1),
|
|
2576
|
-
disabled: paginationModel.page === lastPage,
|
|
2577
|
-
"aria-label": "Next page"
|
|
2578
|
-
},
|
|
2579
|
-
/* @__PURE__ */ React21.createElement(NextIcon, null)
|
|
2580
|
-
)));
|
|
2581
|
-
}
|
|
2582
|
-
Pagination.displayName = "Pagination";
|
|
2583
|
-
|
|
2584
|
-
// src/components/Pagination/index.ts
|
|
2585
|
-
var Pagination_default = Pagination;
|
|
2586
|
-
|
|
2587
2635
|
// src/components/InfoSign/InfoSign.tsx
|
|
2588
|
-
import
|
|
2636
|
+
import React21 from "react";
|
|
2589
2637
|
import { styled as styled11, tooltipClasses } from "@mui/joy";
|
|
2590
2638
|
import MuiInfoIcon from "@mui/icons-material/Info";
|
|
2591
2639
|
var InfoIcon = styled11(MuiInfoIcon, {
|
|
@@ -2598,7 +2646,7 @@ var InfoIcon = styled11(MuiInfoIcon, {
|
|
|
2598
2646
|
}));
|
|
2599
2647
|
function InfoSign(props) {
|
|
2600
2648
|
const { message, placement } = props;
|
|
2601
|
-
return /* @__PURE__ */
|
|
2649
|
+
return /* @__PURE__ */ React21.createElement(
|
|
2602
2650
|
Tooltip_default,
|
|
2603
2651
|
{
|
|
2604
2652
|
arrow: true,
|
|
@@ -2608,28 +2656,16 @@ function InfoSign(props) {
|
|
|
2608
2656
|
maxWidth: "320px"
|
|
2609
2657
|
}
|
|
2610
2658
|
},
|
|
2611
|
-
title: message?.split("\n").map((line, i) => /* @__PURE__ */
|
|
2659
|
+
title: message?.split("\n").map((line, i) => /* @__PURE__ */ React21.createElement("div", { key: `info-sign-${i}` }, line))
|
|
2612
2660
|
},
|
|
2613
|
-
/* @__PURE__ */
|
|
2661
|
+
/* @__PURE__ */ React21.createElement(InfoIcon, null)
|
|
2614
2662
|
);
|
|
2615
2663
|
}
|
|
2616
|
-
|
|
2617
|
-
// src/components/InfoSign/index.ts
|
|
2618
|
-
var InfoSign_default = InfoSign;
|
|
2619
|
-
|
|
2620
|
-
// src/components/DataTable/
|
|
2621
|
-
function getTextAlign(props) {
|
|
2622
|
-
return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
|
|
2623
|
-
}
|
|
2624
|
-
var DefaultLoadingOverlay = () => /* @__PURE__ */ React23.createElement(LinearProgress, { value: 8, variant: "plain" });
|
|
2625
|
-
var EllipsisDiv = styled12("div", {
|
|
2626
|
-
name: "DataTable",
|
|
2627
|
-
slot: "textEllipsis"
|
|
2628
|
-
})({
|
|
2629
|
-
overflow: "hidden",
|
|
2630
|
-
textOverflow: "ellipsis",
|
|
2631
|
-
whiteSpace: "nowrap"
|
|
2632
|
-
});
|
|
2664
|
+
|
|
2665
|
+
// src/components/InfoSign/index.ts
|
|
2666
|
+
var InfoSign_default = InfoSign;
|
|
2667
|
+
|
|
2668
|
+
// src/components/DataTable/components.tsx
|
|
2633
2669
|
var TextEllipsis = ({ children }) => {
|
|
2634
2670
|
const textRef = useRef4(null);
|
|
2635
2671
|
const [showTooltip, setShowTooltip] = useState6(false);
|
|
@@ -2640,9 +2676,9 @@ var TextEllipsis = ({ children }) => {
|
|
|
2640
2676
|
setShowTooltip(isTextTruncated);
|
|
2641
2677
|
}
|
|
2642
2678
|
}, [children]);
|
|
2643
|
-
const content = /* @__PURE__ */
|
|
2679
|
+
const content = /* @__PURE__ */ React22.createElement(EllipsisDiv, { ref: textRef }, children);
|
|
2644
2680
|
if (showTooltip) {
|
|
2645
|
-
return /* @__PURE__ */
|
|
2681
|
+
return /* @__PURE__ */ React22.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
|
|
2646
2682
|
}
|
|
2647
2683
|
return content;
|
|
2648
2684
|
};
|
|
@@ -2656,9 +2692,9 @@ var CellTextEllipsis = ({ children }) => {
|
|
|
2656
2692
|
setShowTooltip(isTextTruncated);
|
|
2657
2693
|
}
|
|
2658
2694
|
}, [children]);
|
|
2659
|
-
const content = /* @__PURE__ */
|
|
2695
|
+
const content = /* @__PURE__ */ React22.createElement(EllipsisDiv, { ref: textRef }, children);
|
|
2660
2696
|
if (showTooltip) {
|
|
2661
|
-
return /* @__PURE__ */
|
|
2697
|
+
return /* @__PURE__ */ React22.createElement(
|
|
2662
2698
|
Tooltip_default,
|
|
2663
2699
|
{
|
|
2664
2700
|
title: children,
|
|
@@ -2672,129 +2708,6 @@ var CellTextEllipsis = ({ children }) => {
|
|
|
2672
2708
|
}
|
|
2673
2709
|
return content;
|
|
2674
2710
|
};
|
|
2675
|
-
var OverlayWrapper = styled12("tr", {
|
|
2676
|
-
name: "DataTable",
|
|
2677
|
-
slot: "overlayWrapper"
|
|
2678
|
-
})({
|
|
2679
|
-
position: "sticky",
|
|
2680
|
-
top: `calc(var(--unstable_TableCell-height, 32px))`,
|
|
2681
|
-
left: 0,
|
|
2682
|
-
right: 0,
|
|
2683
|
-
zIndex: 1,
|
|
2684
|
-
"& > td": {
|
|
2685
|
-
height: 0,
|
|
2686
|
-
padding: 0,
|
|
2687
|
-
border: "none !important"
|
|
2688
|
-
}
|
|
2689
|
-
});
|
|
2690
|
-
var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
|
|
2691
|
-
var Resizer = (ref) => /* @__PURE__ */ React23.createElement(
|
|
2692
|
-
Box_default,
|
|
2693
|
-
{
|
|
2694
|
-
sx: {
|
|
2695
|
-
position: "absolute",
|
|
2696
|
-
top: 0,
|
|
2697
|
-
right: 0,
|
|
2698
|
-
bottom: 0,
|
|
2699
|
-
width: "4px",
|
|
2700
|
-
cursor: "col-resize"
|
|
2701
|
-
},
|
|
2702
|
-
onClick: (e) => e.stopPropagation(),
|
|
2703
|
-
onMouseDown: (e) => {
|
|
2704
|
-
const initialX = e.clientX;
|
|
2705
|
-
const initialWidth = ref.current?.getBoundingClientRect().width;
|
|
2706
|
-
const onMouseMove = (e2) => {
|
|
2707
|
-
if (initialWidth && initialX) {
|
|
2708
|
-
ref.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
|
|
2709
|
-
}
|
|
2710
|
-
};
|
|
2711
|
-
const onMouseUp = () => {
|
|
2712
|
-
document.removeEventListener("mousemove", onMouseMove);
|
|
2713
|
-
document.removeEventListener("mouseup", onMouseUp);
|
|
2714
|
-
};
|
|
2715
|
-
document.addEventListener("mousemove", onMouseMove);
|
|
2716
|
-
document.addEventListener("mouseup", onMouseUp);
|
|
2717
|
-
}
|
|
2718
|
-
}
|
|
2719
|
-
);
|
|
2720
|
-
var VirtualizedTableBody = styled12("tbody", {
|
|
2721
|
-
name: "DataTable",
|
|
2722
|
-
slot: "tableBody"
|
|
2723
|
-
})({
|
|
2724
|
-
// HACK: for virtualization: tbody의 height를 렌더링 된 tr의 총 높이 보다 높은 값으로 지정하고도 tr의 size를 유지하기 위한 꼼수
|
|
2725
|
-
"&::after": {
|
|
2726
|
-
content: "''",
|
|
2727
|
-
display: "block",
|
|
2728
|
-
height: "0.01em"
|
|
2729
|
-
},
|
|
2730
|
-
// NOTE: 테이블 안에 버튼을 넣을 때 버튼의 높이가 테이블의 높이를 넘어가지 않도록 설정
|
|
2731
|
-
[`& .${buttonClasses.root}`]: {
|
|
2732
|
-
"--Button-minHeight": "26px",
|
|
2733
|
-
"--Button-paddingBlock": "0.25rem",
|
|
2734
|
-
lineHeight: 1,
|
|
2735
|
-
marginTop: "-2px",
|
|
2736
|
-
marginBottom: "-2px"
|
|
2737
|
-
},
|
|
2738
|
-
[`& .${iconButtonClasses.root}`]: {
|
|
2739
|
-
"--IconButton-size": "26px",
|
|
2740
|
-
verticalAlign: "middle",
|
|
2741
|
-
marginTop: "-2px",
|
|
2742
|
-
marginBottom: "-2px"
|
|
2743
|
-
}
|
|
2744
|
-
});
|
|
2745
|
-
var StyledTableRow = styled12("tr", {
|
|
2746
|
-
name: "DataTable",
|
|
2747
|
-
slot: "tableRow",
|
|
2748
|
-
shouldForwardProp: (prop) => prop !== "striped"
|
|
2749
|
-
})(({ striped }) => ({
|
|
2750
|
-
...striped && {
|
|
2751
|
-
backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
|
|
2752
|
-
color: "var(--ceed-palette-text-primary)",
|
|
2753
|
-
"& td": {
|
|
2754
|
-
backgroundColor: "background.surface"
|
|
2755
|
-
}
|
|
2756
|
-
},
|
|
2757
|
-
"&:hover": {
|
|
2758
|
-
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
|
|
2759
|
-
"& td": {
|
|
2760
|
-
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
|
|
2761
|
-
}
|
|
2762
|
-
}
|
|
2763
|
-
}));
|
|
2764
|
-
var VirtualizedTableRow = memo(StyledTableRow, (prevProps, nextProps) => {
|
|
2765
|
-
return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
|
|
2766
|
-
prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
|
|
2767
|
-
prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Include children check to handle isCellEditable changes
|
|
2768
|
-
prevProps.children === nextProps.children;
|
|
2769
|
-
});
|
|
2770
|
-
var Asterisk = styled12("span", {
|
|
2771
|
-
name: "DataTable",
|
|
2772
|
-
slot: "headCellAsterisk"
|
|
2773
|
-
})(({ theme }) => ({
|
|
2774
|
-
color: "var(--ceed-palette-danger-500)",
|
|
2775
|
-
marginLeft: theme.spacing(0.5)
|
|
2776
|
-
}));
|
|
2777
|
-
var StyledTh = styled12(motion21.th)(({ theme }) => ({
|
|
2778
|
-
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
2779
|
-
// border 대신 box-shadow를 사용하여 stickyHeader와 함께 사용할 때 border가 겹치는 문제를 해결
|
|
2780
|
-
}));
|
|
2781
|
-
var StyledTd = styled12("td")(({ theme }) => ({
|
|
2782
|
-
transition: `box-shadow 0.3s`,
|
|
2783
|
-
"&:not(.is-last-left):not(.is-last-right)": {
|
|
2784
|
-
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
2785
|
-
},
|
|
2786
|
-
".ScrollableRight &": {
|
|
2787
|
-
"&.is-last-left": {
|
|
2788
|
-
boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
|
|
2789
|
-
}
|
|
2790
|
-
},
|
|
2791
|
-
".ScrollableLeft &": {
|
|
2792
|
-
"&.is-last-right": {
|
|
2793
|
-
boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
|
|
2794
|
-
}
|
|
2795
|
-
}
|
|
2796
|
-
}));
|
|
2797
|
-
var MotionSortIcon = motion21(SortIcon);
|
|
2798
2711
|
var HeadCell = (props) => {
|
|
2799
2712
|
const {
|
|
2800
2713
|
width,
|
|
@@ -2816,17 +2729,20 @@ var HeadCell = (props) => {
|
|
|
2816
2729
|
isPinned,
|
|
2817
2730
|
pinnedStartPosition,
|
|
2818
2731
|
pinnedEndPosition,
|
|
2819
|
-
headerRef
|
|
2732
|
+
headerRef,
|
|
2733
|
+
tableColRef,
|
|
2734
|
+
headerClassName
|
|
2820
2735
|
} = props;
|
|
2821
2736
|
const theme = useTheme();
|
|
2822
2737
|
const ref = headerRef;
|
|
2738
|
+
const colRef = tableColRef;
|
|
2823
2739
|
const [isHovered, setIsHovered] = useState6(false);
|
|
2824
2740
|
const sortable = type === "actions" ? false : _sortable;
|
|
2825
2741
|
const headId = useMemo8(
|
|
2826
2742
|
() => `${tableId}_header_${headerName ?? field}`.trim(),
|
|
2827
2743
|
[tableId, headerName, field]
|
|
2828
2744
|
);
|
|
2829
|
-
const resizer = useMemo8(() => resizable ?? true ? Resizer(ref) : null, [resizable, ref]);
|
|
2745
|
+
const resizer = useMemo8(() => resizable ?? true ? Resizer(ref, colRef) : null, [resizable, ref, colRef]);
|
|
2830
2746
|
const style = useMemo8(
|
|
2831
2747
|
() => ({
|
|
2832
2748
|
width,
|
|
@@ -2848,7 +2764,7 @@ var HeadCell = (props) => {
|
|
|
2848
2764
|
const sortIcon = useMemo8(() => {
|
|
2849
2765
|
const isSorted = !!sort;
|
|
2850
2766
|
const isVisible = sortable && (isSorted || isHovered);
|
|
2851
|
-
return /* @__PURE__ */
|
|
2767
|
+
return /* @__PURE__ */ React22.createElement(AnimatePresence2, { mode: "wait" }, isVisible && /* @__PURE__ */ React22.createElement(
|
|
2852
2768
|
MotionSortIcon,
|
|
2853
2769
|
{
|
|
2854
2770
|
key: "sort-icon",
|
|
@@ -2877,10 +2793,20 @@ var HeadCell = (props) => {
|
|
|
2877
2793
|
));
|
|
2878
2794
|
}, [headId, initialSort, sort, sortable, isHovered]);
|
|
2879
2795
|
const infoSign = useMemo8(
|
|
2880
|
-
() => description ? /* @__PURE__ */
|
|
2796
|
+
() => description ? /* @__PURE__ */ React22.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
|
|
2881
2797
|
[description]
|
|
2882
2798
|
);
|
|
2883
|
-
|
|
2799
|
+
const params = useMemo8(
|
|
2800
|
+
() => ({
|
|
2801
|
+
field
|
|
2802
|
+
}),
|
|
2803
|
+
[field]
|
|
2804
|
+
);
|
|
2805
|
+
const computedHeaderClassName = useMemo8(
|
|
2806
|
+
() => (typeof headerClassName === "function" ? headerClassName(params) : headerClassName) || void 0,
|
|
2807
|
+
[headerClassName, params]
|
|
2808
|
+
);
|
|
2809
|
+
return /* @__PURE__ */ React22.createElement(
|
|
2884
2810
|
StyledTh,
|
|
2885
2811
|
{
|
|
2886
2812
|
id: headId,
|
|
@@ -2889,16 +2815,17 @@ var HeadCell = (props) => {
|
|
|
2889
2815
|
ref,
|
|
2890
2816
|
key: field,
|
|
2891
2817
|
style,
|
|
2892
|
-
onClick:
|
|
2818
|
+
onClick: useCallback8(
|
|
2893
2819
|
(e) => sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey }),
|
|
2894
2820
|
[field, onSortChange, sort, sortable]
|
|
2895
2821
|
),
|
|
2896
2822
|
onMouseEnter: () => setIsHovered(true),
|
|
2897
2823
|
onMouseLeave: () => setIsHovered(false),
|
|
2898
2824
|
whileHover: "hover",
|
|
2899
|
-
initial: "initial"
|
|
2825
|
+
initial: "initial",
|
|
2826
|
+
className: computedHeaderClassName
|
|
2900
2827
|
},
|
|
2901
|
-
/* @__PURE__ */
|
|
2828
|
+
/* @__PURE__ */ React22.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center" }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ React22.createElement(TextEllipsis, null, headerName ?? field, editMode && required && /* @__PURE__ */ React22.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
|
|
2902
2829
|
resizer
|
|
2903
2830
|
);
|
|
2904
2831
|
};
|
|
@@ -3013,18 +2940,18 @@ var BodyCell = (props) => {
|
|
|
3013
2940
|
return createElement(memo(renderEditCell), params);
|
|
3014
2941
|
}
|
|
3015
2942
|
return {
|
|
3016
|
-
date: /* @__PURE__ */
|
|
3017
|
-
currency: /* @__PURE__ */
|
|
2943
|
+
date: /* @__PURE__ */ React22.createElement(DatePicker_default, { value, ...editModeComponentProps }),
|
|
2944
|
+
currency: /* @__PURE__ */ React22.createElement(
|
|
3018
2945
|
CurrencyInput_default,
|
|
3019
2946
|
{
|
|
3020
2947
|
value,
|
|
3021
2948
|
...editModeComponentProps
|
|
3022
2949
|
}
|
|
3023
2950
|
),
|
|
3024
|
-
number: /* @__PURE__ */
|
|
3025
|
-
text: /* @__PURE__ */
|
|
3026
|
-
longText: /* @__PURE__ */
|
|
3027
|
-
autocomplete: /* @__PURE__ */
|
|
2951
|
+
number: /* @__PURE__ */ React22.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
|
|
2952
|
+
text: /* @__PURE__ */ React22.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
|
|
2953
|
+
longText: /* @__PURE__ */ React22.createElement(Textarea_default, { value, ...editModeComponentProps }),
|
|
2954
|
+
autocomplete: /* @__PURE__ */ React22.createElement(
|
|
3028
2955
|
Autocomplete_default,
|
|
3029
2956
|
{
|
|
3030
2957
|
value,
|
|
@@ -3032,7 +2959,7 @@ var BodyCell = (props) => {
|
|
|
3032
2959
|
...editModeComponentProps
|
|
3033
2960
|
}
|
|
3034
2961
|
),
|
|
3035
|
-
select: /* @__PURE__ */
|
|
2962
|
+
select: /* @__PURE__ */ React22.createElement(
|
|
3036
2963
|
Select_default,
|
|
3037
2964
|
{
|
|
3038
2965
|
value,
|
|
@@ -3049,7 +2976,7 @@ var BodyCell = (props) => {
|
|
|
3049
2976
|
}
|
|
3050
2977
|
const innerText = value;
|
|
3051
2978
|
const typedComponent = {
|
|
3052
|
-
link:
|
|
2979
|
+
link: React22.createElement(linkComponentFromProps || Link, {
|
|
3053
2980
|
children: innerText,
|
|
3054
2981
|
...componentProps
|
|
3055
2982
|
})
|
|
@@ -3059,7 +2986,7 @@ var BodyCell = (props) => {
|
|
|
3059
2986
|
const getActions = props.getActions;
|
|
3060
2987
|
const CellComponent = useMemo8(() => {
|
|
3061
2988
|
if (type === "actions") {
|
|
3062
|
-
return /* @__PURE__ */
|
|
2989
|
+
return /* @__PURE__ */ React22.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
|
|
3063
2990
|
}
|
|
3064
2991
|
return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
|
|
3065
2992
|
}, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
|
|
@@ -3069,10 +2996,10 @@ var BodyCell = (props) => {
|
|
|
3069
2996
|
() => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
|
|
3070
2997
|
[cellClassName, params]
|
|
3071
2998
|
);
|
|
3072
|
-
|
|
2999
|
+
useEffect4(() => {
|
|
3073
3000
|
setValue(row[field]);
|
|
3074
3001
|
}, [row, field]);
|
|
3075
|
-
return /* @__PURE__ */
|
|
3002
|
+
return /* @__PURE__ */ React22.createElement(
|
|
3076
3003
|
StyledTd,
|
|
3077
3004
|
{
|
|
3078
3005
|
ref: cellRef,
|
|
@@ -3090,7 +3017,7 @@ var BodyCell = (props) => {
|
|
|
3090
3017
|
className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
|
|
3091
3018
|
},
|
|
3092
3019
|
useMemo8(
|
|
3093
|
-
() => showTooltip ? /* @__PURE__ */
|
|
3020
|
+
() => showTooltip ? /* @__PURE__ */ React22.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
|
|
3094
3021
|
[CellComponent, showTooltip]
|
|
3095
3022
|
)
|
|
3096
3023
|
);
|
|
@@ -3098,7 +3025,7 @@ var BodyCell = (props) => {
|
|
|
3098
3025
|
var BodyRow = memo(
|
|
3099
3026
|
(props) => {
|
|
3100
3027
|
const { tableId, columns, rowId, editMode, noWrap, row } = props;
|
|
3101
|
-
return /* @__PURE__ */
|
|
3028
|
+
return /* @__PURE__ */ React22.createElement(React22.Fragment, null, columns.map((column, i) => /* @__PURE__ */ React22.createElement(
|
|
3102
3029
|
BodyCell,
|
|
3103
3030
|
{
|
|
3104
3031
|
key: `${rowId}_${column.field.toString()}_${i}`,
|
|
@@ -3112,10 +3039,38 @@ var BodyRow = memo(
|
|
|
3112
3039
|
)));
|
|
3113
3040
|
}
|
|
3114
3041
|
);
|
|
3042
|
+
var StyledTableRow2 = styled12("tr", {
|
|
3043
|
+
name: "DataTable",
|
|
3044
|
+
slot: "tableRow",
|
|
3045
|
+
shouldForwardProp: (prop) => prop !== "striped"
|
|
3046
|
+
})(({ striped }) => ({
|
|
3047
|
+
...striped && {
|
|
3048
|
+
backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
|
|
3049
|
+
color: "var(--ceed-palette-text-primary)",
|
|
3050
|
+
"& td": {
|
|
3051
|
+
backgroundColor: "background.surface"
|
|
3052
|
+
}
|
|
3053
|
+
},
|
|
3054
|
+
"&:hover": {
|
|
3055
|
+
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
|
|
3056
|
+
"& td": {
|
|
3057
|
+
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
|
|
3058
|
+
}
|
|
3059
|
+
}
|
|
3060
|
+
}));
|
|
3061
|
+
var VirtualizedTableRow = memo(StyledTableRow2, (prevProps, nextProps) => {
|
|
3062
|
+
return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
|
|
3063
|
+
prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
|
|
3064
|
+
prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Include children check to handle isCellEditable changes
|
|
3065
|
+
prevProps.children === nextProps.children;
|
|
3066
|
+
});
|
|
3067
|
+
|
|
3068
|
+
// src/components/DataTable/hooks.ts
|
|
3069
|
+
import { useState as useState7, useLayoutEffect as useLayoutEffect2, useRef as useRef5, useMemo as useMemo9, useCallback as useCallback9, useEffect as useEffect5, createRef } from "react";
|
|
3115
3070
|
function useColumnWidths(columnsByField) {
|
|
3116
|
-
const [widths, setWidths] =
|
|
3117
|
-
const roRef =
|
|
3118
|
-
|
|
3071
|
+
const [widths, setWidths] = useState7({});
|
|
3072
|
+
const roRef = useRef5();
|
|
3073
|
+
useLayoutEffect2(() => {
|
|
3119
3074
|
if (roRef.current) roRef.current.disconnect();
|
|
3120
3075
|
roRef.current = new ResizeObserver((entries) => {
|
|
3121
3076
|
let changed = false;
|
|
@@ -3161,28 +3116,39 @@ function useDataTableRenderer({
|
|
|
3161
3116
|
editMode,
|
|
3162
3117
|
getId: _getId,
|
|
3163
3118
|
isTotalSelected: _isTotalSelected,
|
|
3164
|
-
isRowSelectable
|
|
3119
|
+
isRowSelectable,
|
|
3120
|
+
columnGroupingModel
|
|
3165
3121
|
}) {
|
|
3166
|
-
|
|
3122
|
+
if (pinnedColumns && columnGroupingModel) {
|
|
3123
|
+
throw new Error(
|
|
3124
|
+
"You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
|
|
3125
|
+
);
|
|
3126
|
+
}
|
|
3127
|
+
const onSelectionModelChangeRef = useRef5(onSelectionModelChange);
|
|
3167
3128
|
onSelectionModelChangeRef.current = onSelectionModelChange;
|
|
3168
|
-
const [focusedRowId, setFocusedRowId] =
|
|
3129
|
+
const [focusedRowId, setFocusedRowId] = useState7(null);
|
|
3169
3130
|
const [sortModel, setSortModel] = useControlledState(
|
|
3170
3131
|
controlledSortModel,
|
|
3171
3132
|
initialState?.sorting?.sortModel ?? [],
|
|
3172
3133
|
useCallback9((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
|
|
3173
3134
|
);
|
|
3174
|
-
const
|
|
3175
|
-
()
|
|
3135
|
+
const reorderedColumns = useMemo9(() => {
|
|
3136
|
+
if (!columnGroupingModel) return columnsProp;
|
|
3137
|
+
return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
|
|
3138
|
+
}, [columnsProp, columnGroupingModel]);
|
|
3139
|
+
const columnsByField = useMemo9(
|
|
3140
|
+
() => reorderedColumns.reduce(
|
|
3176
3141
|
(acc, curr) => ({
|
|
3177
3142
|
...acc,
|
|
3178
3143
|
[curr.field]: {
|
|
3179
3144
|
...curr,
|
|
3180
|
-
headerRef:
|
|
3145
|
+
headerRef: createRef(),
|
|
3146
|
+
tableColRef: createRef()
|
|
3181
3147
|
}
|
|
3182
3148
|
}),
|
|
3183
3149
|
{}
|
|
3184
3150
|
),
|
|
3185
|
-
[
|
|
3151
|
+
[reorderedColumns]
|
|
3186
3152
|
);
|
|
3187
3153
|
const sortComparator = useCallback9(
|
|
3188
3154
|
(rowA, rowB) => {
|
|
@@ -3212,47 +3178,42 @@ function useDataTableRenderer({
|
|
|
3212
3178
|
},
|
|
3213
3179
|
[sortModel, columnsByField]
|
|
3214
3180
|
);
|
|
3215
|
-
const rows =
|
|
3181
|
+
const rows = useMemo9(
|
|
3216
3182
|
() => sortModel.length ? [..._rows].sort(sortComparator) : _rows,
|
|
3217
3183
|
[_rows, sortModel, sortComparator]
|
|
3218
3184
|
);
|
|
3219
|
-
const sortOrder =
|
|
3220
|
-
// NOTE: default value를 props destructuring에서 할당하면 렌더링 시점에 초기화가 되어버린다.
|
|
3185
|
+
const sortOrder = useMemo9(
|
|
3221
3186
|
() => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
|
|
3222
3187
|
[_sortOrder]
|
|
3223
3188
|
);
|
|
3224
|
-
const [page, setPage] =
|
|
3189
|
+
const [page, setPage] = useState7(paginationModel?.page || 1);
|
|
3225
3190
|
const pageSize = paginationModel?.pageSize || 20;
|
|
3226
3191
|
const getId = useCallback9(
|
|
3227
3192
|
(row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
|
|
3228
3193
|
[_getId, page, pageSize]
|
|
3229
3194
|
);
|
|
3230
|
-
const selectedModelSet =
|
|
3231
|
-
|
|
3232
|
-
() => new Set(selectionModel || []),
|
|
3233
|
-
[selectionModel]
|
|
3234
|
-
);
|
|
3235
|
-
const dataInPage = useMemo8(
|
|
3195
|
+
const selectedModelSet = useMemo9(() => new Set(selectionModel || []), [selectionModel]);
|
|
3196
|
+
const dataInPage = useMemo9(
|
|
3236
3197
|
() => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
|
|
3237
3198
|
[rows, page, pageSize, paginationMode, pagination]
|
|
3238
3199
|
);
|
|
3239
|
-
const selectableDataInPage =
|
|
3200
|
+
const selectableDataInPage = useMemo9(
|
|
3240
3201
|
() => dataInPage.filter((row, i) => {
|
|
3241
3202
|
if (!isRowSelectable) return true;
|
|
3242
3203
|
return isRowSelectable({ row, id: getId(row, i) });
|
|
3243
3204
|
}),
|
|
3244
3205
|
[dataInPage, isRowSelectable, getId]
|
|
3245
3206
|
);
|
|
3246
|
-
const isAllSelected =
|
|
3207
|
+
const isAllSelected = useMemo9(
|
|
3247
3208
|
() => selectableDataInPage.length > 0 && selectableDataInPage.every((row, i) => selectedModelSet.has(getId(row, i))),
|
|
3248
3209
|
[selectableDataInPage, selectedModelSet, getId]
|
|
3249
3210
|
);
|
|
3250
3211
|
const rowCount = totalRowsProp || rows.length;
|
|
3251
|
-
const selectableRowCount =
|
|
3212
|
+
const selectableRowCount = useMemo9(() => {
|
|
3252
3213
|
if (!isRowSelectable) return rowCount;
|
|
3253
3214
|
return rows.filter((row, i) => isRowSelectable({ row, id: getId(row, i) })).length;
|
|
3254
3215
|
}, [rows, isRowSelectable, getId, rowCount]);
|
|
3255
|
-
const isTotalSelected =
|
|
3216
|
+
const isTotalSelected = useMemo9(
|
|
3256
3217
|
() => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
|
|
3257
3218
|
[_isTotalSelected, selectionModel, selectableRowCount]
|
|
3258
3219
|
);
|
|
@@ -3262,9 +3223,12 @@ function useDataTableRenderer({
|
|
|
3262
3223
|
columnsByField[f].minWidth ?? 0,
|
|
3263
3224
|
[columnWidths, columnsByField]
|
|
3264
3225
|
);
|
|
3265
|
-
const
|
|
3266
|
-
|
|
3267
|
-
|
|
3226
|
+
const processedColumnGroups = useMemo9(() => {
|
|
3227
|
+
if (!columnGroupingModel) return null;
|
|
3228
|
+
return calculateColumnGroups(columnGroupingModel, reorderedColumns);
|
|
3229
|
+
}, [columnGroupingModel, reorderedColumns]);
|
|
3230
|
+
const columns = useMemo9(() => {
|
|
3231
|
+
const baseColumns = reorderedColumns.length > 0 ? reorderedColumns : Object.keys(rows[0] || {}).map((key) => ({
|
|
3268
3232
|
field: key
|
|
3269
3233
|
}));
|
|
3270
3234
|
return baseColumns.map((column) => {
|
|
@@ -3274,19 +3238,19 @@ function useDataTableRenderer({
|
|
|
3274
3238
|
return {
|
|
3275
3239
|
...column,
|
|
3276
3240
|
headerRef: columnsByField[column.field].headerRef,
|
|
3241
|
+
tableColRef: columnsByField[column.field].tableColRef,
|
|
3277
3242
|
isCellEditable: editMode && (typeof column.isCellEditable === "function" ? column.isCellEditable : column.isCellEditable ?? true),
|
|
3278
3243
|
sort: sortModel.find((sort) => sort.field === column.field)?.sort,
|
|
3279
3244
|
sortOrder: columnsByField[column.field]?.sortOrder || sortOrder,
|
|
3280
3245
|
isPinned,
|
|
3281
3246
|
isLastStartPinnedColumn: isLeftPinned && [...pinnedColumns?.left || []].pop() === column.field,
|
|
3282
3247
|
isLastEndPinnedColumn: isRightPinned && (pinnedColumns?.right?.[0] ?? null) === column.field,
|
|
3283
|
-
// pinned 관련 계산부
|
|
3284
3248
|
pinnedStartPosition: pinnedColumns?.left?.slice(0, isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length).reduce((acc, curr) => acc + getWidth(curr), 0),
|
|
3285
3249
|
pinnedEndPosition: pinnedColumns?.right?.slice(isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
|
|
3286
3250
|
};
|
|
3287
3251
|
});
|
|
3288
3252
|
}, [
|
|
3289
|
-
|
|
3253
|
+
reorderedColumns,
|
|
3290
3254
|
rows,
|
|
3291
3255
|
pinnedColumns?.left,
|
|
3292
3256
|
pinnedColumns?.right,
|
|
@@ -3342,55 +3306,265 @@ function useDataTableRenderer({
|
|
|
3342
3306
|
}, [page]);
|
|
3343
3307
|
return {
|
|
3344
3308
|
rowCount,
|
|
3345
|
-
selectableRowCount,
|
|
3346
|
-
page,
|
|
3347
|
-
pageSize,
|
|
3348
|
-
onPaginationModelChange: handlePageChange,
|
|
3349
|
-
getId,
|
|
3350
|
-
HeadCell,
|
|
3351
|
-
BodyRow,
|
|
3352
|
-
dataInPage,
|
|
3353
|
-
handleSortChange,
|
|
3354
|
-
isAllSelected,
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3309
|
+
selectableRowCount,
|
|
3310
|
+
page,
|
|
3311
|
+
pageSize,
|
|
3312
|
+
onPaginationModelChange: handlePageChange,
|
|
3313
|
+
getId,
|
|
3314
|
+
HeadCell,
|
|
3315
|
+
BodyRow,
|
|
3316
|
+
dataInPage,
|
|
3317
|
+
handleSortChange,
|
|
3318
|
+
isAllSelected,
|
|
3319
|
+
isTotalSelected,
|
|
3320
|
+
isSelectedRow: useCallback9((model) => selectedModelSet.has(model), [selectedModelSet]),
|
|
3321
|
+
isRowSelectable: useCallback9(
|
|
3322
|
+
(rowId, row) => {
|
|
3323
|
+
if (!isRowSelectable) return true;
|
|
3324
|
+
return isRowSelectable({ row, id: rowId });
|
|
3325
|
+
},
|
|
3326
|
+
[isRowSelectable]
|
|
3327
|
+
),
|
|
3328
|
+
focusedRowId,
|
|
3329
|
+
onRowFocus: useCallback9((rowId) => {
|
|
3330
|
+
setFocusedRowId(rowId);
|
|
3331
|
+
}, []),
|
|
3332
|
+
onAllCheckboxChange: useCallback9(() => {
|
|
3333
|
+
onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
|
|
3334
|
+
}, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
|
|
3335
|
+
onCheckboxChange: useCallback9(
|
|
3336
|
+
(event, selectedModel) => {
|
|
3337
|
+
if (selectedModelSet.has(selectedModel)) {
|
|
3338
|
+
const newSelectionModel = (selectionModel || []).filter((model) => model !== selectedModel);
|
|
3339
|
+
onSelectionModelChange?.(newSelectionModel);
|
|
3340
|
+
} else {
|
|
3341
|
+
const newSelectionModel = [...selectionModel || [], selectedModel];
|
|
3342
|
+
onSelectionModelChange?.(newSelectionModel);
|
|
3343
|
+
}
|
|
3344
|
+
},
|
|
3345
|
+
[selectionModel, onSelectionModelChange, selectedModelSet]
|
|
3346
|
+
),
|
|
3347
|
+
columns,
|
|
3348
|
+
processedColumnGroups,
|
|
3349
|
+
onTotalSelect: useCallback9(() => {
|
|
3350
|
+
const selectableRows = rows.filter((row, i) => {
|
|
3351
|
+
if (!isRowSelectable) return true;
|
|
3352
|
+
return isRowSelectable({ row, id: getId(row, i) });
|
|
3353
|
+
});
|
|
3354
|
+
onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
|
|
3355
|
+
}, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
|
|
3356
|
+
};
|
|
3357
|
+
}
|
|
3358
|
+
|
|
3359
|
+
// src/components/Table/Table.tsx
|
|
3360
|
+
import React23 from "react";
|
|
3361
|
+
import { Table as JoyTable } from "@mui/joy";
|
|
3362
|
+
var Table = (props) => {
|
|
3363
|
+
const { children, ...inheritProps } = props;
|
|
3364
|
+
return /* @__PURE__ */ React23.createElement(JoyTable, { ...inheritProps }, children);
|
|
3365
|
+
};
|
|
3366
|
+
Table.displayName = "Table";
|
|
3367
|
+
function TableHead(props) {
|
|
3368
|
+
const {
|
|
3369
|
+
headCells,
|
|
3370
|
+
showCheckbox,
|
|
3371
|
+
onCheckboxChange,
|
|
3372
|
+
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
3373
|
+
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
3374
|
+
} = props;
|
|
3375
|
+
return /* @__PURE__ */ React23.createElement("thead", null, /* @__PURE__ */ React23.createElement("tr", null, showCheckbox && /* @__PURE__ */ React23.createElement(
|
|
3376
|
+
"th",
|
|
3377
|
+
{
|
|
3378
|
+
style: {
|
|
3379
|
+
width: "40px",
|
|
3380
|
+
textAlign: "center"
|
|
3381
|
+
}
|
|
3382
|
+
},
|
|
3383
|
+
/* @__PURE__ */ React23.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
|
|
3384
|
+
), headCells.map((headCell) => /* @__PURE__ */ React23.createElement(
|
|
3385
|
+
"th",
|
|
3386
|
+
{
|
|
3387
|
+
key: headCell.label,
|
|
3388
|
+
style: {
|
|
3389
|
+
width: headCell.width,
|
|
3390
|
+
minWidth: headCell.minWidth,
|
|
3391
|
+
maxWidth: headCell.maxWidth,
|
|
3392
|
+
textAlign: headCell.numeric ? "right" : "left"
|
|
3393
|
+
}
|
|
3394
|
+
},
|
|
3395
|
+
headCell.label
|
|
3396
|
+
))));
|
|
3397
|
+
}
|
|
3398
|
+
TableHead.displayName = "TableHead";
|
|
3399
|
+
function TableBody(props) {
|
|
3400
|
+
const {
|
|
3401
|
+
rows,
|
|
3402
|
+
cellOrder,
|
|
3403
|
+
rowOptions,
|
|
3404
|
+
showCheckbox,
|
|
3405
|
+
onCheckboxChange,
|
|
3406
|
+
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
3407
|
+
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
3408
|
+
} = props;
|
|
3409
|
+
return /* @__PURE__ */ React23.createElement("tbody", null, rows.map((row, rowIndex) => /* @__PURE__ */ React23.createElement("tr", { key: `table-row-${rowIndex}` }, showCheckbox && /* @__PURE__ */ React23.createElement(
|
|
3410
|
+
"td",
|
|
3411
|
+
{
|
|
3412
|
+
style: {
|
|
3413
|
+
textAlign: "center"
|
|
3414
|
+
}
|
|
3415
|
+
},
|
|
3416
|
+
/* @__PURE__ */ React23.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
|
|
3417
|
+
), cellOrder.map((cellKey) => /* @__PURE__ */ React23.createElement(
|
|
3418
|
+
"td",
|
|
3419
|
+
{
|
|
3420
|
+
key: cellKey,
|
|
3421
|
+
style: {
|
|
3422
|
+
textAlign: rowOptions?.[cellKey]?.numeric ? "right" : "left"
|
|
3423
|
+
}
|
|
3424
|
+
},
|
|
3425
|
+
row[cellKey]
|
|
3426
|
+
)))));
|
|
3427
|
+
}
|
|
3428
|
+
TableBody.displayName = "TableBody";
|
|
3429
|
+
|
|
3430
|
+
// src/components/Pagination/Pagination.tsx
|
|
3431
|
+
import React24, { useCallback as useCallback10, useEffect as useEffect6 } from "react";
|
|
3432
|
+
import PreviousIcon from "@mui/icons-material/ChevronLeft";
|
|
3433
|
+
import NextIcon from "@mui/icons-material/ChevronRight";
|
|
3434
|
+
import { styled as styled13 } from "@mui/joy";
|
|
3435
|
+
var PaginationButton = styled13(Button_default, {
|
|
3436
|
+
name: "Pagination",
|
|
3437
|
+
slot: "button"
|
|
3438
|
+
})(({ theme, active, size }) => ({
|
|
3439
|
+
"--Button-size": {
|
|
3440
|
+
sm: "32px",
|
|
3441
|
+
md: "40px",
|
|
3442
|
+
lg: "48px"
|
|
3443
|
+
}[size],
|
|
3444
|
+
width: "var(--Button-size)",
|
|
3445
|
+
height: "var(--Button-size)",
|
|
3446
|
+
backgroundColor: active ? theme.vars.palette.primary.softHoverBg : "transparent",
|
|
3447
|
+
color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.plainColor,
|
|
3448
|
+
"&:hover": {
|
|
3449
|
+
color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.softColor,
|
|
3450
|
+
backgroundColor: active ? theme.vars.palette.primary.softActiveBg : theme.vars.palette.neutral.softHoverBg
|
|
3451
|
+
}
|
|
3452
|
+
}));
|
|
3453
|
+
var PaginationIconButton = styled13(IconButton_default, {
|
|
3454
|
+
name: "Pagination",
|
|
3455
|
+
slot: "button"
|
|
3456
|
+
})(({ theme, size }) => ({
|
|
3457
|
+
"--IconButton-size": {
|
|
3458
|
+
sm: "32px",
|
|
3459
|
+
md: "40px",
|
|
3460
|
+
lg: "48px"
|
|
3461
|
+
}[size],
|
|
3462
|
+
"--Icon-fontSize": "20px",
|
|
3463
|
+
width: "var(--IconButton-size)",
|
|
3464
|
+
height: "var(--IconButton-size)",
|
|
3465
|
+
color: theme.vars.palette.neutral.plainColor,
|
|
3466
|
+
"&:hover": {
|
|
3467
|
+
color: theme.vars.palette.neutral.softColor,
|
|
3468
|
+
backgroundColor: theme.vars.palette.neutral.softHoverBg
|
|
3469
|
+
}
|
|
3470
|
+
}));
|
|
3471
|
+
var PaginationRoot = styled13(Stack_default, {
|
|
3472
|
+
name: "Pagination",
|
|
3473
|
+
slot: "root"
|
|
3474
|
+
})({});
|
|
3475
|
+
var PaginationContainer = styled13(Stack_default, {
|
|
3476
|
+
name: "Pagination",
|
|
3477
|
+
slot: "container"
|
|
3478
|
+
})(({ theme, size }) => ({
|
|
3479
|
+
gap: {
|
|
3480
|
+
sm: theme.spacing(1),
|
|
3481
|
+
md: theme.spacing(1.5),
|
|
3482
|
+
lg: theme.spacing(2)
|
|
3483
|
+
}[size]
|
|
3484
|
+
}));
|
|
3485
|
+
function Pagination(props) {
|
|
3486
|
+
const {
|
|
3487
|
+
paginationModel: _paginationModel,
|
|
3488
|
+
defaultPaginationModel = { page: 1, pageSize: 25 },
|
|
3489
|
+
onPageChange,
|
|
3490
|
+
rowCount,
|
|
3491
|
+
size = "md",
|
|
3492
|
+
...innerProps
|
|
3493
|
+
} = props;
|
|
3494
|
+
const [paginationModel, setPaginationModel] = useControlledState(
|
|
3495
|
+
_paginationModel,
|
|
3496
|
+
defaultPaginationModel,
|
|
3497
|
+
useCallback10(
|
|
3498
|
+
(newPage) => {
|
|
3499
|
+
onPageChange(newPage.page);
|
|
3381
3500
|
},
|
|
3382
|
-
[
|
|
3383
|
-
)
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
if (!isRowSelectable) return true;
|
|
3388
|
-
return isRowSelectable({ row, id: getId(row, i) });
|
|
3389
|
-
});
|
|
3390
|
-
onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
|
|
3391
|
-
}, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
|
|
3501
|
+
[onPageChange]
|
|
3502
|
+
)
|
|
3503
|
+
);
|
|
3504
|
+
const handlePageChange = (newPage) => {
|
|
3505
|
+
setPaginationModel({ ...paginationModel, page: newPage });
|
|
3392
3506
|
};
|
|
3507
|
+
const firstPage = 1;
|
|
3508
|
+
const lastPage = Math.max(firstPage, Math.ceil(rowCount / paginationModel.pageSize));
|
|
3509
|
+
const beforePages = [paginationModel.page - 2, paginationModel.page - 1].filter((p) => p > 1);
|
|
3510
|
+
const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
|
|
3511
|
+
const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
|
|
3512
|
+
const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
|
|
3513
|
+
useEffect6(() => {
|
|
3514
|
+
if (paginationModel.page > lastPage) {
|
|
3515
|
+
setPaginationModel({ ...paginationModel, page: lastPage });
|
|
3516
|
+
}
|
|
3517
|
+
}, [rowCount, paginationModel, lastPage, setPaginationModel]);
|
|
3518
|
+
return /* @__PURE__ */ React24.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ React24.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ React24.createElement(
|
|
3519
|
+
PaginationIconButton,
|
|
3520
|
+
{
|
|
3521
|
+
size,
|
|
3522
|
+
variant: "plain",
|
|
3523
|
+
color: "neutral",
|
|
3524
|
+
onClick: () => handlePageChange(paginationModel.page - 1),
|
|
3525
|
+
disabled: paginationModel.page === firstPage,
|
|
3526
|
+
"aria-label": "Previous page"
|
|
3527
|
+
},
|
|
3528
|
+
/* @__PURE__ */ React24.createElement(PreviousIcon, null)
|
|
3529
|
+
), paginationModel.page !== firstPage && /* @__PURE__ */ React24.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ React24.createElement(
|
|
3530
|
+
PaginationButton,
|
|
3531
|
+
{
|
|
3532
|
+
size,
|
|
3533
|
+
variant: "plain",
|
|
3534
|
+
color: "neutral",
|
|
3535
|
+
onClick: () => handlePageChange(paginationModel.page - 3),
|
|
3536
|
+
"aria-label": "More previous pages"
|
|
3537
|
+
},
|
|
3538
|
+
"..."
|
|
3539
|
+
), beforePages.map((p) => /* @__PURE__ */ React24.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ React24.createElement(PaginationButton, { active: "true", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ React24.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ React24.createElement(
|
|
3540
|
+
PaginationButton,
|
|
3541
|
+
{
|
|
3542
|
+
size,
|
|
3543
|
+
variant: "plain",
|
|
3544
|
+
color: "neutral",
|
|
3545
|
+
"aria-label": "More next pages",
|
|
3546
|
+
onClick: () => handlePageChange(paginationModel.page + 3)
|
|
3547
|
+
},
|
|
3548
|
+
"..."
|
|
3549
|
+
), paginationModel.page !== lastPage && /* @__PURE__ */ React24.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ React24.createElement(
|
|
3550
|
+
PaginationIconButton,
|
|
3551
|
+
{
|
|
3552
|
+
size,
|
|
3553
|
+
variant: "plain",
|
|
3554
|
+
color: "neutral",
|
|
3555
|
+
onClick: () => handlePageChange(paginationModel.page + 1),
|
|
3556
|
+
disabled: paginationModel.page === lastPage,
|
|
3557
|
+
"aria-label": "Next page"
|
|
3558
|
+
},
|
|
3559
|
+
/* @__PURE__ */ React24.createElement(NextIcon, null)
|
|
3560
|
+
)));
|
|
3393
3561
|
}
|
|
3562
|
+
Pagination.displayName = "Pagination";
|
|
3563
|
+
|
|
3564
|
+
// src/components/Pagination/index.ts
|
|
3565
|
+
var Pagination_default = Pagination;
|
|
3566
|
+
|
|
3567
|
+
// src/components/DataTable/DataTable.tsx
|
|
3394
3568
|
function Component(props, apiRef) {
|
|
3395
3569
|
const {
|
|
3396
3570
|
rows,
|
|
@@ -3424,6 +3598,8 @@ function Component(props, apiRef) {
|
|
|
3424
3598
|
getId: ____________,
|
|
3425
3599
|
// getId is used in useDataTableRenderer
|
|
3426
3600
|
loading,
|
|
3601
|
+
columnGroupingModel: _________________,
|
|
3602
|
+
// columnGroupingModel is used in useDataTableRenderer
|
|
3427
3603
|
slots: {
|
|
3428
3604
|
checkbox: RenderCheckbox = Checkbox_default,
|
|
3429
3605
|
toolbar: Toolbar,
|
|
@@ -3436,10 +3612,11 @@ function Component(props, apiRef) {
|
|
|
3436
3612
|
...innerProps
|
|
3437
3613
|
} = props;
|
|
3438
3614
|
const tableId = useId();
|
|
3439
|
-
const parentRef =
|
|
3440
|
-
const tableBodyRef =
|
|
3615
|
+
const parentRef = useRef6(null);
|
|
3616
|
+
const tableBodyRef = useRef6(null);
|
|
3441
3617
|
const {
|
|
3442
3618
|
columns,
|
|
3619
|
+
processedColumnGroups,
|
|
3443
3620
|
isAllSelected,
|
|
3444
3621
|
isSelectedRow,
|
|
3445
3622
|
isRowSelectable: isRowSelectableCheck,
|
|
@@ -3467,29 +3644,29 @@ function Component(props, apiRef) {
|
|
|
3467
3644
|
measureElement: (element) => element.clientHeight,
|
|
3468
3645
|
overscan: 10
|
|
3469
3646
|
});
|
|
3470
|
-
const paginationModel =
|
|
3647
|
+
const paginationModel = useMemo10(() => ({ page, pageSize }), [page, pageSize]);
|
|
3471
3648
|
const totalSize = virtualizer.getTotalSize();
|
|
3472
3649
|
const virtualizedItems = virtualizer.getVirtualItems();
|
|
3473
|
-
const getRowClickHandler =
|
|
3650
|
+
const getRowClickHandler = useCallback11(
|
|
3474
3651
|
(row, rowId) => (e) => {
|
|
3475
3652
|
onRowClick?.({ row, rowId }, e);
|
|
3476
3653
|
checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
|
|
3477
3654
|
},
|
|
3478
3655
|
[onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
|
|
3479
3656
|
);
|
|
3480
|
-
const getRowFocusHandler =
|
|
3657
|
+
const getRowFocusHandler = useCallback11(
|
|
3481
3658
|
(rowId) => () => {
|
|
3482
3659
|
onRowFocus(rowId);
|
|
3483
3660
|
},
|
|
3484
3661
|
[onRowFocus]
|
|
3485
3662
|
);
|
|
3486
|
-
const getCheckboxClickHandler =
|
|
3663
|
+
const getCheckboxClickHandler = useCallback11(
|
|
3487
3664
|
() => (e) => {
|
|
3488
3665
|
e.stopPropagation();
|
|
3489
3666
|
},
|
|
3490
3667
|
[]
|
|
3491
3668
|
);
|
|
3492
|
-
const getCheckboxChangeHandler =
|
|
3669
|
+
const getCheckboxChangeHandler = useCallback11(
|
|
3493
3670
|
(rowId, row) => (e) => {
|
|
3494
3671
|
if (isRowSelectableCheck(rowId, row)) {
|
|
3495
3672
|
onCheckboxChange(e, rowId);
|
|
@@ -3513,7 +3690,7 @@ function Component(props, apiRef) {
|
|
|
3513
3690
|
});
|
|
3514
3691
|
}
|
|
3515
3692
|
}));
|
|
3516
|
-
return /* @__PURE__ */
|
|
3693
|
+
return /* @__PURE__ */ React25.createElement(
|
|
3517
3694
|
Box_default,
|
|
3518
3695
|
{
|
|
3519
3696
|
sx: {
|
|
@@ -3523,7 +3700,7 @@ function Component(props, apiRef) {
|
|
|
3523
3700
|
flexDirection: "column"
|
|
3524
3701
|
}
|
|
3525
3702
|
},
|
|
3526
|
-
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */
|
|
3703
|
+
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ React25.createElement(
|
|
3527
3704
|
Stack_default,
|
|
3528
3705
|
{
|
|
3529
3706
|
direction: "row",
|
|
@@ -3533,10 +3710,10 @@ function Component(props, apiRef) {
|
|
|
3533
3710
|
justifyContent: "space-between",
|
|
3534
3711
|
alignItems: "center"
|
|
3535
3712
|
},
|
|
3536
|
-
!!checkboxSelection && /* @__PURE__ */
|
|
3537
|
-
Toolbar && /* @__PURE__ */
|
|
3713
|
+
!!checkboxSelection && /* @__PURE__ */ React25.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ React25.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ React25.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React25.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ React25.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ React25.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React25.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ React25.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
|
|
3714
|
+
Toolbar && /* @__PURE__ */ React25.createElement(Toolbar, { ...toolbarProps || {} })
|
|
3538
3715
|
),
|
|
3539
|
-
/* @__PURE__ */
|
|
3716
|
+
/* @__PURE__ */ React25.createElement(
|
|
3540
3717
|
Sheet_default,
|
|
3541
3718
|
{
|
|
3542
3719
|
variant: "outlined",
|
|
@@ -3547,7 +3724,8 @@ function Component(props, apiRef) {
|
|
|
3547
3724
|
boxShadow: "sm",
|
|
3548
3725
|
borderRadius: "sm",
|
|
3549
3726
|
"--DataTableSheet-width": parentRef.current?.clientWidth + "px",
|
|
3550
|
-
backgroundColor: "white"
|
|
3727
|
+
backgroundColor: "white",
|
|
3728
|
+
"--TableCell-cornerRadius": "0px"
|
|
3551
3729
|
},
|
|
3552
3730
|
className: [
|
|
3553
3731
|
...(parentRef.current?.scrollLeft || 0) > 0 ? ["ScrollableRight"] : [],
|
|
@@ -3556,15 +3734,33 @@ function Component(props, apiRef) {
|
|
|
3556
3734
|
ref: parentRef,
|
|
3557
3735
|
...backgroundProps
|
|
3558
3736
|
},
|
|
3559
|
-
/* @__PURE__ */
|
|
3737
|
+
/* @__PURE__ */ React25.createElement(Table, { ...innerProps }, /* @__PURE__ */ React25.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ React25.createElement(
|
|
3738
|
+
"col",
|
|
3739
|
+
{
|
|
3740
|
+
style: {
|
|
3741
|
+
width: "40px"
|
|
3742
|
+
}
|
|
3743
|
+
}
|
|
3744
|
+
), columns.map((c) => /* @__PURE__ */ React25.createElement(
|
|
3745
|
+
"col",
|
|
3746
|
+
{
|
|
3747
|
+
ref: c.tableColRef,
|
|
3748
|
+
key: `${c.field.toString()}_${c.width}`,
|
|
3749
|
+
style: {
|
|
3750
|
+
width: c.width
|
|
3751
|
+
}
|
|
3752
|
+
}
|
|
3753
|
+
))), /* @__PURE__ */ React25.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ React25.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ React25.createElement(
|
|
3560
3754
|
"th",
|
|
3561
3755
|
{
|
|
3756
|
+
rowSpan: processedColumnGroups.maxLevel + 2,
|
|
3562
3757
|
style: {
|
|
3563
3758
|
width: "40px",
|
|
3564
|
-
textAlign: "center"
|
|
3759
|
+
textAlign: "center",
|
|
3760
|
+
verticalAlign: "middle"
|
|
3565
3761
|
}
|
|
3566
3762
|
},
|
|
3567
|
-
/* @__PURE__ */
|
|
3763
|
+
/* @__PURE__ */ React25.createElement(
|
|
3568
3764
|
RenderCheckbox,
|
|
3569
3765
|
{
|
|
3570
3766
|
onChange: onAllCheckboxChange,
|
|
@@ -3574,17 +3770,56 @@ function Component(props, apiRef) {
|
|
|
3574
3770
|
...checkboxProps
|
|
3575
3771
|
}
|
|
3576
3772
|
)
|
|
3577
|
-
),
|
|
3578
|
-
|
|
3773
|
+
), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ React25.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.map((group, groupIndex) => {
|
|
3774
|
+
const nextGroup = levelGroups[groupIndex + 1];
|
|
3775
|
+
const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
|
|
3776
|
+
const params = { groupId: group.groupId };
|
|
3777
|
+
const computedHeaderClassName = group.headerClassName ? typeof group.headerClassName === "function" ? group.headerClassName(params) : group.headerClassName : void 0;
|
|
3778
|
+
return /* @__PURE__ */ React25.createElement(Fragment2, { key: group.groupId }, /* @__PURE__ */ React25.createElement(
|
|
3779
|
+
"th",
|
|
3780
|
+
{
|
|
3781
|
+
colSpan: group.colspan,
|
|
3782
|
+
style: {
|
|
3783
|
+
textAlign: "center",
|
|
3784
|
+
fontWeight: "bold",
|
|
3785
|
+
verticalAlign: "middle"
|
|
3786
|
+
},
|
|
3787
|
+
className: computedHeaderClassName
|
|
3788
|
+
},
|
|
3789
|
+
group.headerName ?? group.groupId
|
|
3790
|
+
), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ React25.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
|
|
3791
|
+
}))), /* @__PURE__ */ React25.createElement("tr", null, !processedColumnGroups && checkboxSelection && /* @__PURE__ */ React25.createElement(
|
|
3792
|
+
"th",
|
|
3579
3793
|
{
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
|
|
3587
|
-
|
|
3794
|
+
style: {
|
|
3795
|
+
width: "40px",
|
|
3796
|
+
textAlign: "center"
|
|
3797
|
+
}
|
|
3798
|
+
},
|
|
3799
|
+
/* @__PURE__ */ React25.createElement(
|
|
3800
|
+
RenderCheckbox,
|
|
3801
|
+
{
|
|
3802
|
+
onChange: onAllCheckboxChange,
|
|
3803
|
+
checked: isAllSelected,
|
|
3804
|
+
indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
|
|
3805
|
+
disabled: dataInPage.length > 0 && !selectableRowCount,
|
|
3806
|
+
...checkboxProps
|
|
3807
|
+
}
|
|
3808
|
+
)
|
|
3809
|
+
), columns.map((c, i) => (
|
|
3810
|
+
// @ts-ignore
|
|
3811
|
+
/* @__PURE__ */ React25.createElement(
|
|
3812
|
+
HeadCell2,
|
|
3813
|
+
{
|
|
3814
|
+
tableId,
|
|
3815
|
+
key: `${c.field.toString()}_${i}`,
|
|
3816
|
+
stickyHeader: props.stickyHeader,
|
|
3817
|
+
editMode: !!c.isCellEditable,
|
|
3818
|
+
onSortChange: handleSortChange,
|
|
3819
|
+
...c
|
|
3820
|
+
}
|
|
3821
|
+
)
|
|
3822
|
+
)))), /* @__PURE__ */ React25.createElement(
|
|
3588
3823
|
VirtualizedTableBody,
|
|
3589
3824
|
{
|
|
3590
3825
|
ref: tableBodyRef,
|
|
@@ -3594,7 +3829,7 @@ function Component(props, apiRef) {
|
|
|
3594
3829
|
role: "rowgroup",
|
|
3595
3830
|
"aria-label": "DataTableBody"
|
|
3596
3831
|
},
|
|
3597
|
-
!!loading && /* @__PURE__ */
|
|
3832
|
+
!!loading && /* @__PURE__ */ React25.createElement(OverlayWrapper, null, /* @__PURE__ */ React25.createElement(
|
|
3598
3833
|
"td",
|
|
3599
3834
|
{
|
|
3600
3835
|
style: {
|
|
@@ -3603,7 +3838,7 @@ function Component(props, apiRef) {
|
|
|
3603
3838
|
overflow: "visible"
|
|
3604
3839
|
}
|
|
3605
3840
|
},
|
|
3606
|
-
/* @__PURE__ */
|
|
3841
|
+
/* @__PURE__ */ React25.createElement(
|
|
3607
3842
|
Box_default,
|
|
3608
3843
|
{
|
|
3609
3844
|
sx: {
|
|
@@ -3613,7 +3848,7 @@ function Component(props, apiRef) {
|
|
|
3613
3848
|
right: 0
|
|
3614
3849
|
}
|
|
3615
3850
|
},
|
|
3616
|
-
/* @__PURE__ */
|
|
3851
|
+
/* @__PURE__ */ React25.createElement(LoadingOverlay, null)
|
|
3617
3852
|
)
|
|
3618
3853
|
)),
|
|
3619
3854
|
virtualizedItems.map((virtualizedRow, index) => {
|
|
@@ -3621,7 +3856,7 @@ function Component(props, apiRef) {
|
|
|
3621
3856
|
const row = dataInPage[rowIndex];
|
|
3622
3857
|
const rowId = getId(row, rowIndex);
|
|
3623
3858
|
const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
|
|
3624
|
-
return /* @__PURE__ */
|
|
3859
|
+
return /* @__PURE__ */ React25.createElement(
|
|
3625
3860
|
VirtualizedTableRow,
|
|
3626
3861
|
{
|
|
3627
3862
|
key: virtualizedRow.key,
|
|
@@ -3639,7 +3874,7 @@ function Component(props, apiRef) {
|
|
|
3639
3874
|
transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
|
|
3640
3875
|
}
|
|
3641
3876
|
},
|
|
3642
|
-
checkboxSelection && /* @__PURE__ */
|
|
3877
|
+
checkboxSelection && /* @__PURE__ */ React25.createElement(
|
|
3643
3878
|
"th",
|
|
3644
3879
|
{
|
|
3645
3880
|
scope: "row",
|
|
@@ -3647,7 +3882,7 @@ function Component(props, apiRef) {
|
|
|
3647
3882
|
textAlign: "center"
|
|
3648
3883
|
}
|
|
3649
3884
|
},
|
|
3650
|
-
/* @__PURE__ */
|
|
3885
|
+
/* @__PURE__ */ React25.createElement(
|
|
3651
3886
|
RenderCheckbox,
|
|
3652
3887
|
{
|
|
3653
3888
|
onClick: getCheckboxClickHandler(),
|
|
@@ -3658,7 +3893,7 @@ function Component(props, apiRef) {
|
|
|
3658
3893
|
}
|
|
3659
3894
|
)
|
|
3660
3895
|
),
|
|
3661
|
-
/* @__PURE__ */
|
|
3896
|
+
/* @__PURE__ */ React25.createElement(
|
|
3662
3897
|
BodyRow2,
|
|
3663
3898
|
{
|
|
3664
3899
|
tableId,
|
|
@@ -3671,9 +3906,9 @@ function Component(props, apiRef) {
|
|
|
3671
3906
|
)
|
|
3672
3907
|
);
|
|
3673
3908
|
})
|
|
3674
|
-
), Footer && /* @__PURE__ */
|
|
3909
|
+
), Footer && /* @__PURE__ */ React25.createElement(Footer, null))
|
|
3675
3910
|
),
|
|
3676
|
-
pagination && /* @__PURE__ */
|
|
3911
|
+
pagination && /* @__PURE__ */ React25.createElement(
|
|
3677
3912
|
Pagination_default,
|
|
3678
3913
|
{
|
|
3679
3914
|
pt: 2,
|
|
@@ -3690,12 +3925,12 @@ var DataTable = forwardRef7(Component);
|
|
|
3690
3925
|
DataTable.displayName = "DataTable";
|
|
3691
3926
|
|
|
3692
3927
|
// src/components/DateRangePicker/DateRangePicker.tsx
|
|
3693
|
-
import
|
|
3928
|
+
import React26, { forwardRef as forwardRef8, useCallback as useCallback12, useEffect as useEffect7, useImperativeHandle as useImperativeHandle3, useMemo as useMemo11, useRef as useRef7, useState as useState8 } from "react";
|
|
3694
3929
|
import { IMaskInput as IMaskInput2, IMask as IMask2 } from "react-imask";
|
|
3695
3930
|
import CalendarTodayIcon2 from "@mui/icons-material/CalendarToday";
|
|
3696
|
-
import { styled as
|
|
3931
|
+
import { styled as styled14, useThemeProps as useThemeProps5 } from "@mui/joy";
|
|
3697
3932
|
import { FocusTrap as FocusTrap2, ClickAwayListener as ClickAwayListener2, Popper as Popper3 } from "@mui/base";
|
|
3698
|
-
var CalendarButton2 =
|
|
3933
|
+
var CalendarButton2 = styled14(IconButton_default, {
|
|
3699
3934
|
name: "DateRangePicker",
|
|
3700
3935
|
slot: "calendarButton"
|
|
3701
3936
|
})(({ theme }) => ({
|
|
@@ -3705,13 +3940,13 @@ var CalendarButton2 = styled13(IconButton_default, {
|
|
|
3705
3940
|
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
|
|
3706
3941
|
}
|
|
3707
3942
|
}));
|
|
3708
|
-
var StyledPopper2 =
|
|
3943
|
+
var StyledPopper2 = styled14(Popper3, {
|
|
3709
3944
|
name: "DateRangePicker",
|
|
3710
3945
|
slot: "popper"
|
|
3711
3946
|
})(({ theme }) => ({
|
|
3712
3947
|
zIndex: theme.zIndex.tooltip
|
|
3713
3948
|
}));
|
|
3714
|
-
var CalendarSheet2 =
|
|
3949
|
+
var CalendarSheet2 = styled14(Sheet_default, {
|
|
3715
3950
|
name: "DateRangePicker",
|
|
3716
3951
|
slot: "sheet",
|
|
3717
3952
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -3721,7 +3956,7 @@ var CalendarSheet2 = styled13(Sheet_default, {
|
|
|
3721
3956
|
boxShadow: theme.shadow.md,
|
|
3722
3957
|
borderRadius: theme.radius.md
|
|
3723
3958
|
}));
|
|
3724
|
-
var DateRangePickerRoot =
|
|
3959
|
+
var DateRangePickerRoot = styled14("div", {
|
|
3725
3960
|
name: "DateRangePicker",
|
|
3726
3961
|
slot: "root",
|
|
3727
3962
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -3791,9 +4026,9 @@ var parseDates = (str, format) => {
|
|
|
3791
4026
|
var formatToPattern2 = (format) => {
|
|
3792
4027
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
3793
4028
|
};
|
|
3794
|
-
var TextMaskAdapter5 =
|
|
4029
|
+
var TextMaskAdapter5 = React26.forwardRef(function TextMaskAdapter6(props, ref) {
|
|
3795
4030
|
const { onChange, format, ...other } = props;
|
|
3796
|
-
return /* @__PURE__ */
|
|
4031
|
+
return /* @__PURE__ */ React26.createElement(
|
|
3797
4032
|
IMaskInput2,
|
|
3798
4033
|
{
|
|
3799
4034
|
...other,
|
|
@@ -3851,23 +4086,23 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
3851
4086
|
readOnly,
|
|
3852
4087
|
...innerProps
|
|
3853
4088
|
} = props;
|
|
3854
|
-
const innerRef =
|
|
3855
|
-
const buttonRef =
|
|
4089
|
+
const innerRef = useRef7(null);
|
|
4090
|
+
const buttonRef = useRef7(null);
|
|
3856
4091
|
const [value, setValue] = useControlledState(
|
|
3857
4092
|
props.value,
|
|
3858
4093
|
props.defaultValue || "",
|
|
3859
|
-
|
|
4094
|
+
useCallback12((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
3860
4095
|
);
|
|
3861
|
-
const [displayValue, setDisplayValue] =
|
|
4096
|
+
const [displayValue, setDisplayValue] = useState8(
|
|
3862
4097
|
() => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
|
|
3863
4098
|
);
|
|
3864
|
-
const [anchorEl, setAnchorEl] =
|
|
4099
|
+
const [anchorEl, setAnchorEl] = useState8(null);
|
|
3865
4100
|
const open = Boolean(anchorEl);
|
|
3866
|
-
const calendarValue =
|
|
4101
|
+
const calendarValue = useMemo11(
|
|
3867
4102
|
() => value ? parseDates(value, format) : void 0,
|
|
3868
4103
|
[value, format]
|
|
3869
4104
|
);
|
|
3870
|
-
|
|
4105
|
+
useEffect7(() => {
|
|
3871
4106
|
if (value) {
|
|
3872
4107
|
try {
|
|
3873
4108
|
const dates = parseDates(value, format);
|
|
@@ -3879,13 +4114,13 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
3879
4114
|
setDisplayValue("");
|
|
3880
4115
|
}
|
|
3881
4116
|
}, [displayFormat, value, format]);
|
|
3882
|
-
|
|
4117
|
+
useEffect7(() => {
|
|
3883
4118
|
if (!anchorEl) {
|
|
3884
4119
|
innerRef.current?.blur();
|
|
3885
4120
|
}
|
|
3886
4121
|
}, [anchorEl, innerRef]);
|
|
3887
4122
|
useImperativeHandle3(ref, () => innerRef.current, [innerRef]);
|
|
3888
|
-
const handleChange =
|
|
4123
|
+
const handleChange = useCallback12(
|
|
3889
4124
|
(event) => {
|
|
3890
4125
|
const value2 = event.target.value;
|
|
3891
4126
|
setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2);
|
|
@@ -3893,7 +4128,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
3893
4128
|
},
|
|
3894
4129
|
[displayFormat, format, setValue]
|
|
3895
4130
|
);
|
|
3896
|
-
const handleDisplayInputChange =
|
|
4131
|
+
const handleDisplayInputChange = useCallback12(
|
|
3897
4132
|
(event) => {
|
|
3898
4133
|
if (event.target.value === "") {
|
|
3899
4134
|
handleChange({
|
|
@@ -3918,14 +4153,14 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
3918
4153
|
},
|
|
3919
4154
|
[displayFormat, format, handleChange, props.name]
|
|
3920
4155
|
);
|
|
3921
|
-
const handleCalendarToggle =
|
|
4156
|
+
const handleCalendarToggle = useCallback12(
|
|
3922
4157
|
(event) => {
|
|
3923
4158
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
3924
4159
|
innerRef.current?.focus();
|
|
3925
4160
|
},
|
|
3926
4161
|
[anchorEl, setAnchorEl, innerRef]
|
|
3927
4162
|
);
|
|
3928
|
-
const handleCalendarChange =
|
|
4163
|
+
const handleCalendarChange = useCallback12(
|
|
3929
4164
|
([date1, date2]) => {
|
|
3930
4165
|
if (!date1 || !date2) return;
|
|
3931
4166
|
const formattedValue = formatValueString2([date1, date2], format);
|
|
@@ -3939,7 +4174,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
3939
4174
|
},
|
|
3940
4175
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
|
|
3941
4176
|
);
|
|
3942
|
-
const handleInputMouseDown =
|
|
4177
|
+
const handleInputMouseDown = useCallback12(
|
|
3943
4178
|
(event) => {
|
|
3944
4179
|
if (inputReadOnly) {
|
|
3945
4180
|
event.preventDefault();
|
|
@@ -3948,7 +4183,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
3948
4183
|
},
|
|
3949
4184
|
[inputReadOnly, buttonRef]
|
|
3950
4185
|
);
|
|
3951
|
-
return /* @__PURE__ */
|
|
4186
|
+
return /* @__PURE__ */ React26.createElement(DateRangePickerRoot, null, /* @__PURE__ */ React26.createElement(FocusTrap2, { open: true }, /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement(
|
|
3952
4187
|
Input_default,
|
|
3953
4188
|
{
|
|
3954
4189
|
...innerProps,
|
|
@@ -3976,7 +4211,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
3976
4211
|
error,
|
|
3977
4212
|
className,
|
|
3978
4213
|
sx,
|
|
3979
|
-
endDecorator: /* @__PURE__ */
|
|
4214
|
+
endDecorator: /* @__PURE__ */ React26.createElement(
|
|
3980
4215
|
CalendarButton2,
|
|
3981
4216
|
{
|
|
3982
4217
|
ref: buttonRef,
|
|
@@ -3988,13 +4223,13 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
3988
4223
|
"aria-expanded": open,
|
|
3989
4224
|
disabled
|
|
3990
4225
|
},
|
|
3991
|
-
/* @__PURE__ */
|
|
4226
|
+
/* @__PURE__ */ React26.createElement(CalendarTodayIcon2, null)
|
|
3992
4227
|
),
|
|
3993
4228
|
label,
|
|
3994
4229
|
helperText,
|
|
3995
4230
|
readOnly: readOnly || inputReadOnly
|
|
3996
4231
|
}
|
|
3997
|
-
), open && /* @__PURE__ */
|
|
4232
|
+
), open && /* @__PURE__ */ React26.createElement(ClickAwayListener2, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React26.createElement(
|
|
3998
4233
|
StyledPopper2,
|
|
3999
4234
|
{
|
|
4000
4235
|
id: "date-range-picker-popper",
|
|
@@ -4013,7 +4248,7 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4013
4248
|
"aria-label": "Calendar Tooltip",
|
|
4014
4249
|
"aria-expanded": open
|
|
4015
4250
|
},
|
|
4016
|
-
/* @__PURE__ */
|
|
4251
|
+
/* @__PURE__ */ React26.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React26.createElement(
|
|
4017
4252
|
Calendar_default,
|
|
4018
4253
|
{
|
|
4019
4254
|
rangeSelection: true,
|
|
@@ -4024,14 +4259,14 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4024
4259
|
disableFuture,
|
|
4025
4260
|
disablePast
|
|
4026
4261
|
}
|
|
4027
|
-
), !hideClearButton && /* @__PURE__ */
|
|
4262
|
+
), !hideClearButton && /* @__PURE__ */ React26.createElement(
|
|
4028
4263
|
DialogActions_default,
|
|
4029
4264
|
{
|
|
4030
4265
|
sx: {
|
|
4031
4266
|
p: 1
|
|
4032
4267
|
}
|
|
4033
4268
|
},
|
|
4034
|
-
/* @__PURE__ */
|
|
4269
|
+
/* @__PURE__ */ React26.createElement(
|
|
4035
4270
|
Button_default,
|
|
4036
4271
|
{
|
|
4037
4272
|
size,
|
|
@@ -4051,10 +4286,10 @@ var DateRangePicker = forwardRef8((inProps, ref) => {
|
|
|
4051
4286
|
DateRangePicker.displayName = "DateRangePicker";
|
|
4052
4287
|
|
|
4053
4288
|
// src/components/DialogContent/DialogContent.tsx
|
|
4054
|
-
import { DialogContent as JoyDialogContent, styled as
|
|
4289
|
+
import { DialogContent as JoyDialogContent, styled as styled15 } from "@mui/joy";
|
|
4055
4290
|
import { motion as motion22 } from "framer-motion";
|
|
4056
4291
|
var MotionDialogContent = motion22(JoyDialogContent);
|
|
4057
|
-
var StyledDialogContent =
|
|
4292
|
+
var StyledDialogContent = styled15(MotionDialogContent)(({ theme }) => ({
|
|
4058
4293
|
padding: theme.spacing(0, 6, 5)
|
|
4059
4294
|
}));
|
|
4060
4295
|
var DialogContent = StyledDialogContent;
|
|
@@ -4064,10 +4299,10 @@ DialogContent.displayName = "DialogContent";
|
|
|
4064
4299
|
var DialogContent_default = DialogContent;
|
|
4065
4300
|
|
|
4066
4301
|
// src/components/DialogTitle/DialogTitle.tsx
|
|
4067
|
-
import { DialogTitle as JoyDialogTitle, styled as
|
|
4302
|
+
import { DialogTitle as JoyDialogTitle, styled as styled16 } from "@mui/joy";
|
|
4068
4303
|
import { motion as motion23 } from "framer-motion";
|
|
4069
4304
|
var MotionDialogTitle = motion23(JoyDialogTitle);
|
|
4070
|
-
var StyledDialogTitle =
|
|
4305
|
+
var StyledDialogTitle = styled16(MotionDialogTitle)(({ theme }) => ({
|
|
4071
4306
|
padding: theme.spacing(4, 6)
|
|
4072
4307
|
}));
|
|
4073
4308
|
var DialogTitle = StyledDialogTitle;
|
|
@@ -4077,22 +4312,22 @@ DialogTitle.displayName = "DialogTitle";
|
|
|
4077
4312
|
var DialogTitle_default = DialogTitle;
|
|
4078
4313
|
|
|
4079
4314
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
4080
|
-
import
|
|
4315
|
+
import React28 from "react";
|
|
4081
4316
|
|
|
4082
4317
|
// src/components/Modal/Modal.tsx
|
|
4083
|
-
import
|
|
4318
|
+
import React27 from "react";
|
|
4084
4319
|
import {
|
|
4085
4320
|
Modal as JoyModal,
|
|
4086
4321
|
ModalDialog as JoyModalDialog,
|
|
4087
4322
|
ModalClose as JoyModalClose,
|
|
4088
4323
|
ModalOverflow as JoyModalOverflow,
|
|
4089
|
-
styled as
|
|
4324
|
+
styled as styled17
|
|
4090
4325
|
} from "@mui/joy";
|
|
4091
4326
|
import { motion as motion24 } from "framer-motion";
|
|
4092
4327
|
var MotionModal = motion24(JoyModal);
|
|
4093
4328
|
var Modal = MotionModal;
|
|
4094
4329
|
Modal.displayName = "Modal";
|
|
4095
|
-
var StyledModalDialog =
|
|
4330
|
+
var StyledModalDialog = styled17(JoyModalDialog)({
|
|
4096
4331
|
padding: 0
|
|
4097
4332
|
});
|
|
4098
4333
|
var ModalDialog = StyledModalDialog;
|
|
@@ -4103,37 +4338,37 @@ var ModalOverflow = MotionModalOverflow;
|
|
|
4103
4338
|
ModalOverflow.displayName = "ModalOverflow";
|
|
4104
4339
|
function ModalFrame(props) {
|
|
4105
4340
|
const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
|
|
4106
|
-
return /* @__PURE__ */
|
|
4341
|
+
return /* @__PURE__ */ React27.createElement(StyledModalDialog, { ...innerProps }, /* @__PURE__ */ React27.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ React27.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ React27.createElement(DialogContent_default, null, children));
|
|
4107
4342
|
}
|
|
4108
4343
|
ModalFrame.displayName = "ModalFrame";
|
|
4109
4344
|
|
|
4110
4345
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
4111
|
-
import { styled as
|
|
4112
|
-
var StyledDialogFrame =
|
|
4346
|
+
import { styled as styled18 } from "@mui/joy";
|
|
4347
|
+
var StyledDialogFrame = styled18(ModalDialog, {
|
|
4113
4348
|
name: "Dialog",
|
|
4114
4349
|
slot: "Root"
|
|
4115
4350
|
})({
|
|
4116
4351
|
padding: 0
|
|
4117
4352
|
});
|
|
4118
|
-
var DialogFrame =
|
|
4353
|
+
var DialogFrame = React28.forwardRef((props, ref) => {
|
|
4119
4354
|
const { title, children, actions, fullscreen, ...innerProps } = props;
|
|
4120
|
-
return /* @__PURE__ */
|
|
4355
|
+
return /* @__PURE__ */ React28.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...innerProps }, /* @__PURE__ */ React28.createElement(DialogTitle_default, null, title), /* @__PURE__ */ React28.createElement(DialogContent_default, null, children), /* @__PURE__ */ React28.createElement(DialogActions_default, null, actions));
|
|
4121
4356
|
});
|
|
4122
4357
|
DialogFrame.displayName = "DialogFrame";
|
|
4123
4358
|
|
|
4124
4359
|
// src/components/Divider/Divider.tsx
|
|
4125
|
-
import
|
|
4360
|
+
import React29 from "react";
|
|
4126
4361
|
import { Divider as JoyDivider } from "@mui/joy";
|
|
4127
4362
|
import { motion as motion25 } from "framer-motion";
|
|
4128
4363
|
var MotionDivider = motion25(JoyDivider);
|
|
4129
4364
|
var Divider = (props) => {
|
|
4130
|
-
return /* @__PURE__ */
|
|
4365
|
+
return /* @__PURE__ */ React29.createElement(MotionDivider, { ...props });
|
|
4131
4366
|
};
|
|
4132
4367
|
Divider.displayName = "Divider";
|
|
4133
4368
|
|
|
4134
4369
|
// src/components/InsetDrawer/InsetDrawer.tsx
|
|
4135
|
-
import { Drawer as JoyDrawer, styled as
|
|
4136
|
-
var InsetDrawer =
|
|
4370
|
+
import { Drawer as JoyDrawer, styled as styled19, drawerClasses } from "@mui/joy";
|
|
4371
|
+
var InsetDrawer = styled19(JoyDrawer)(({ theme }) => ({
|
|
4137
4372
|
[`& .${drawerClasses.content}`]: {
|
|
4138
4373
|
backgroundColor: "transparent",
|
|
4139
4374
|
boxShadow: "none",
|
|
@@ -4148,16 +4383,16 @@ var InsetDrawer = styled18(JoyDrawer)(({ theme }) => ({
|
|
|
4148
4383
|
}));
|
|
4149
4384
|
|
|
4150
4385
|
// src/components/FilterMenu/FilterMenu.tsx
|
|
4151
|
-
import
|
|
4386
|
+
import React39, { useCallback as useCallback21 } from "react";
|
|
4152
4387
|
import { Button as Button2, Stack as Stack10 } from "@mui/joy";
|
|
4153
4388
|
|
|
4154
4389
|
// src/components/FilterMenu/components/CheckboxGroup.tsx
|
|
4155
|
-
import
|
|
4390
|
+
import React30, { useCallback as useCallback13 } from "react";
|
|
4156
4391
|
import { Stack as Stack2 } from "@mui/joy";
|
|
4157
4392
|
function CheckboxGroup(props) {
|
|
4158
4393
|
const { id, label, options, value, onChange, hidden } = props;
|
|
4159
4394
|
const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
|
|
4160
|
-
const handleCheckboxChange =
|
|
4395
|
+
const handleCheckboxChange = useCallback13(
|
|
4161
4396
|
(optionValue) => (event) => {
|
|
4162
4397
|
const checked = event.target.checked;
|
|
4163
4398
|
let newValue;
|
|
@@ -4173,7 +4408,7 @@ function CheckboxGroup(props) {
|
|
|
4173
4408
|
if (hidden) {
|
|
4174
4409
|
return null;
|
|
4175
4410
|
}
|
|
4176
|
-
return /* @__PURE__ */
|
|
4411
|
+
return /* @__PURE__ */ React30.createElement(Stack2, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React30.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), options.map((option) => /* @__PURE__ */ React30.createElement(
|
|
4177
4412
|
Checkbox_default,
|
|
4178
4413
|
{
|
|
4179
4414
|
key: `${id}-${option.value}`,
|
|
@@ -4186,7 +4421,7 @@ function CheckboxGroup(props) {
|
|
|
4186
4421
|
CheckboxGroup.displayName = "CheckboxGroup";
|
|
4187
4422
|
|
|
4188
4423
|
// src/components/FilterMenu/components/RadioGroup.tsx
|
|
4189
|
-
import
|
|
4424
|
+
import React31, { useCallback as useCallback14 } from "react";
|
|
4190
4425
|
|
|
4191
4426
|
// src/components/Radio/Radio.tsx
|
|
4192
4427
|
import { Radio as JoyRadio, RadioGroup as JoyRadioGroup } from "@mui/joy";
|
|
@@ -4203,7 +4438,7 @@ import { Stack as Stack3 } from "@mui/joy";
|
|
|
4203
4438
|
function RadioGroup2(props) {
|
|
4204
4439
|
const { id, label, options, value, onChange, hidden } = props;
|
|
4205
4440
|
const [internalValue, setInternalValue] = useControlledState(value, value ?? "", onChange);
|
|
4206
|
-
const handleRadioChange =
|
|
4441
|
+
const handleRadioChange = useCallback14(
|
|
4207
4442
|
(event) => {
|
|
4208
4443
|
const newValue = event.target.value;
|
|
4209
4444
|
const option = options.find((opt) => opt.value.toString() === newValue);
|
|
@@ -4215,12 +4450,12 @@ function RadioGroup2(props) {
|
|
|
4215
4450
|
if (hidden) {
|
|
4216
4451
|
return null;
|
|
4217
4452
|
}
|
|
4218
|
-
return /* @__PURE__ */
|
|
4453
|
+
return /* @__PURE__ */ React31.createElement(Stack3, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React31.createElement(Stack3, { spacing: 1 }, /* @__PURE__ */ React31.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label)), /* @__PURE__ */ React31.createElement(RadioGroup, { name: id, value: internalValue?.toString(), onChange: handleRadioChange }, options.map((option) => /* @__PURE__ */ React31.createElement(Radio, { key: `${id}-${option.value}`, value: option.value.toString(), label: option.label }))));
|
|
4219
4454
|
}
|
|
4220
4455
|
RadioGroup2.displayName = "RadioGroup";
|
|
4221
4456
|
|
|
4222
4457
|
// src/components/FilterMenu/components/DateRange.tsx
|
|
4223
|
-
import
|
|
4458
|
+
import React32, { useCallback as useCallback15, useMemo as useMemo12, useState as useState9, useEffect as useEffect8 } from "react";
|
|
4224
4459
|
import { Stack as Stack4 } from "@mui/joy";
|
|
4225
4460
|
function DateRange(props) {
|
|
4226
4461
|
const {
|
|
@@ -4239,8 +4474,8 @@ function DateRange(props) {
|
|
|
4239
4474
|
hideClearButton
|
|
4240
4475
|
} = props;
|
|
4241
4476
|
const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
|
|
4242
|
-
const [selectedOption, setSelectedOption] =
|
|
4243
|
-
const dateRangeOptions =
|
|
4477
|
+
const [selectedOption, setSelectedOption] = useState9("all-time");
|
|
4478
|
+
const dateRangeOptions = useMemo12(
|
|
4244
4479
|
() => [
|
|
4245
4480
|
{ label: "All Time", value: "all-time" },
|
|
4246
4481
|
{ label: "This Month", value: "this-month" },
|
|
@@ -4250,7 +4485,7 @@ function DateRange(props) {
|
|
|
4250
4485
|
],
|
|
4251
4486
|
[]
|
|
4252
4487
|
);
|
|
4253
|
-
const getDateRangeForOption =
|
|
4488
|
+
const getDateRangeForOption = useCallback15(
|
|
4254
4489
|
(option) => {
|
|
4255
4490
|
const now = /* @__PURE__ */ new Date();
|
|
4256
4491
|
const currentYear = now.getFullYear();
|
|
@@ -4289,7 +4524,7 @@ function DateRange(props) {
|
|
|
4289
4524
|
},
|
|
4290
4525
|
[internalValue]
|
|
4291
4526
|
);
|
|
4292
|
-
const determineOptionFromValue =
|
|
4527
|
+
const determineOptionFromValue = useCallback15(
|
|
4293
4528
|
(value2) => {
|
|
4294
4529
|
if (!value2) {
|
|
4295
4530
|
return "all-time";
|
|
@@ -4305,17 +4540,17 @@ function DateRange(props) {
|
|
|
4305
4540
|
},
|
|
4306
4541
|
[getDateRangeForOption]
|
|
4307
4542
|
);
|
|
4308
|
-
const customDateRangeValue =
|
|
4543
|
+
const customDateRangeValue = useMemo12(() => {
|
|
4309
4544
|
if (selectedOption === "custom" && internalValue) {
|
|
4310
4545
|
return `${internalValue[0]} - ${internalValue[1]}`;
|
|
4311
4546
|
}
|
|
4312
4547
|
return "";
|
|
4313
4548
|
}, [selectedOption, internalValue]);
|
|
4314
|
-
|
|
4549
|
+
useEffect8(() => {
|
|
4315
4550
|
const newOption = determineOptionFromValue(internalValue);
|
|
4316
4551
|
setSelectedOption(newOption);
|
|
4317
4552
|
}, [internalValue, determineOptionFromValue]);
|
|
4318
|
-
const handleOptionChange =
|
|
4553
|
+
const handleOptionChange = useCallback15(
|
|
4319
4554
|
(event) => {
|
|
4320
4555
|
const newOption = event.target.value;
|
|
4321
4556
|
setSelectedOption(newOption);
|
|
@@ -4324,7 +4559,7 @@ function DateRange(props) {
|
|
|
4324
4559
|
},
|
|
4325
4560
|
[getDateRangeForOption, setInternalValue]
|
|
4326
4561
|
);
|
|
4327
|
-
const handleCustomDateChange =
|
|
4562
|
+
const handleCustomDateChange = useCallback15(
|
|
4328
4563
|
(event) => {
|
|
4329
4564
|
const dateRangeString = event.target.value;
|
|
4330
4565
|
if (dateRangeString && dateRangeString.includes(" - ")) {
|
|
@@ -4342,7 +4577,7 @@ function DateRange(props) {
|
|
|
4342
4577
|
if (hidden) {
|
|
4343
4578
|
return null;
|
|
4344
4579
|
}
|
|
4345
|
-
return /* @__PURE__ */
|
|
4580
|
+
return /* @__PURE__ */ React32.createElement(Stack4, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React32.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React32.createElement(RadioGroup, { name: `${id}-options`, value: selectedOption, onChange: handleOptionChange }, dateRangeOptions.map((option) => /* @__PURE__ */ React32.createElement(Radio, { key: `${id}-${option.value}`, value: option.value, label: option.label }))), selectedOption === "custom" && /* @__PURE__ */ React32.createElement(
|
|
4346
4581
|
DateRangePicker,
|
|
4347
4582
|
{
|
|
4348
4583
|
value: customDateRangeValue,
|
|
@@ -4361,12 +4596,12 @@ function DateRange(props) {
|
|
|
4361
4596
|
DateRange.displayName = "DateRange";
|
|
4362
4597
|
|
|
4363
4598
|
// src/components/FilterMenu/components/CurrencyInput.tsx
|
|
4364
|
-
import
|
|
4599
|
+
import React33, { useCallback as useCallback16 } from "react";
|
|
4365
4600
|
import { Stack as Stack5 } from "@mui/joy";
|
|
4366
4601
|
function CurrencyInput3(props) {
|
|
4367
4602
|
const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
|
|
4368
4603
|
const [internalValue, setInternalValue] = useControlledState(value, value, onChange);
|
|
4369
|
-
const handleCurrencyChange =
|
|
4604
|
+
const handleCurrencyChange = useCallback16(
|
|
4370
4605
|
(event) => {
|
|
4371
4606
|
const newValue = event.target.value;
|
|
4372
4607
|
setInternalValue(newValue);
|
|
@@ -4376,7 +4611,7 @@ function CurrencyInput3(props) {
|
|
|
4376
4611
|
if (hidden) {
|
|
4377
4612
|
return null;
|
|
4378
4613
|
}
|
|
4379
|
-
return /* @__PURE__ */
|
|
4614
|
+
return /* @__PURE__ */ React33.createElement(Stack5, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React33.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React33.createElement(
|
|
4380
4615
|
CurrencyInput,
|
|
4381
4616
|
{
|
|
4382
4617
|
value: internalValue,
|
|
@@ -4392,14 +4627,14 @@ function CurrencyInput3(props) {
|
|
|
4392
4627
|
CurrencyInput3.displayName = "CurrencyInput";
|
|
4393
4628
|
|
|
4394
4629
|
// src/components/FilterMenu/components/CurrencyRange.tsx
|
|
4395
|
-
import
|
|
4630
|
+
import React34, { useCallback as useCallback17 } from "react";
|
|
4396
4631
|
import { Stack as Stack6 } from "@mui/joy";
|
|
4397
4632
|
function CurrencyRange(props) {
|
|
4398
4633
|
const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
|
|
4399
4634
|
const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
|
|
4400
4635
|
const minValue = internalValue?.[0];
|
|
4401
4636
|
const maxValue = internalValue?.[1];
|
|
4402
|
-
const handleMinChange =
|
|
4637
|
+
const handleMinChange = useCallback17(
|
|
4403
4638
|
(event) => {
|
|
4404
4639
|
const newMinValue = event.target.value;
|
|
4405
4640
|
const currentMaxValue = maxValue;
|
|
@@ -4413,7 +4648,7 @@ function CurrencyRange(props) {
|
|
|
4413
4648
|
},
|
|
4414
4649
|
[maxValue, setInternalValue]
|
|
4415
4650
|
);
|
|
4416
|
-
const handleMaxChange =
|
|
4651
|
+
const handleMaxChange = useCallback17(
|
|
4417
4652
|
(event) => {
|
|
4418
4653
|
const newMaxValue = event.target.value;
|
|
4419
4654
|
const currentMinValue = minValue;
|
|
@@ -4430,7 +4665,7 @@ function CurrencyRange(props) {
|
|
|
4430
4665
|
if (hidden) {
|
|
4431
4666
|
return null;
|
|
4432
4667
|
}
|
|
4433
|
-
return /* @__PURE__ */
|
|
4668
|
+
return /* @__PURE__ */ React34.createElement(Stack6, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React34.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React34.createElement(Stack6, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ React34.createElement(
|
|
4434
4669
|
CurrencyInput,
|
|
4435
4670
|
{
|
|
4436
4671
|
label: "Minimum",
|
|
@@ -4443,7 +4678,7 @@ function CurrencyRange(props) {
|
|
|
4443
4678
|
"aria-labelledby": label ? id : void 0,
|
|
4444
4679
|
"aria-label": "Minimum amount"
|
|
4445
4680
|
}
|
|
4446
|
-
), /* @__PURE__ */
|
|
4681
|
+
), /* @__PURE__ */ React34.createElement(
|
|
4447
4682
|
CurrencyInput,
|
|
4448
4683
|
{
|
|
4449
4684
|
label: "Maximum",
|
|
@@ -4461,20 +4696,20 @@ function CurrencyRange(props) {
|
|
|
4461
4696
|
CurrencyRange.displayName = "CurrencyRange";
|
|
4462
4697
|
|
|
4463
4698
|
// src/components/FilterMenu/components/PercentageInput.tsx
|
|
4464
|
-
import
|
|
4699
|
+
import React36 from "react";
|
|
4465
4700
|
import { Stack as Stack7, Typography as Typography2 } from "@mui/joy";
|
|
4466
4701
|
|
|
4467
4702
|
// src/components/PercentageInput/PercentageInput.tsx
|
|
4468
|
-
import
|
|
4703
|
+
import React35, { useCallback as useCallback18, useMemo as useMemo13, useState as useState10 } from "react";
|
|
4469
4704
|
import { NumericFormat as NumericFormat2 } from "react-number-format";
|
|
4470
|
-
import { styled as
|
|
4705
|
+
import { styled as styled20, useThemeProps as useThemeProps6 } from "@mui/joy";
|
|
4471
4706
|
var padDecimal = (value, decimalScale) => {
|
|
4472
4707
|
const [integer, decimal = ""] = `${value}`.split(".");
|
|
4473
4708
|
return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
|
|
4474
4709
|
};
|
|
4475
|
-
var TextMaskAdapter7 =
|
|
4710
|
+
var TextMaskAdapter7 = React35.forwardRef(function TextMaskAdapter8(props, ref) {
|
|
4476
4711
|
const { onChange, min, max, ...innerProps } = props;
|
|
4477
|
-
return /* @__PURE__ */
|
|
4712
|
+
return /* @__PURE__ */ React35.createElement(
|
|
4478
4713
|
NumericFormat2,
|
|
4479
4714
|
{
|
|
4480
4715
|
...innerProps,
|
|
@@ -4494,12 +4729,12 @@ var TextMaskAdapter7 = React33.forwardRef(function TextMaskAdapter8(props, ref)
|
|
|
4494
4729
|
}
|
|
4495
4730
|
);
|
|
4496
4731
|
});
|
|
4497
|
-
var PercentageInputRoot =
|
|
4732
|
+
var PercentageInputRoot = styled20(Input_default, {
|
|
4498
4733
|
name: "PercentageInput",
|
|
4499
4734
|
slot: "Root",
|
|
4500
4735
|
overridesResolver: (props, styles) => styles.root
|
|
4501
4736
|
})({});
|
|
4502
|
-
var PercentageInput =
|
|
4737
|
+
var PercentageInput = React35.forwardRef(
|
|
4503
4738
|
function PercentageInput2(inProps, ref) {
|
|
4504
4739
|
const props = useThemeProps6({ props: inProps, name: "PercentageInput" });
|
|
4505
4740
|
const {
|
|
@@ -4522,18 +4757,18 @@ var PercentageInput = React33.forwardRef(
|
|
|
4522
4757
|
const [_value, setValue] = useControlledState(
|
|
4523
4758
|
props.value,
|
|
4524
4759
|
props.defaultValue,
|
|
4525
|
-
|
|
4760
|
+
useCallback18((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
4526
4761
|
);
|
|
4527
|
-
const [internalError, setInternalError] =
|
|
4762
|
+
const [internalError, setInternalError] = useState10(
|
|
4528
4763
|
max && _value && _value > max || min && _value && _value < min
|
|
4529
4764
|
);
|
|
4530
|
-
const value =
|
|
4765
|
+
const value = useMemo13(() => {
|
|
4531
4766
|
if (_value && useMinorUnit) {
|
|
4532
4767
|
return _value / Math.pow(10, maxDecimalScale);
|
|
4533
4768
|
}
|
|
4534
4769
|
return _value;
|
|
4535
4770
|
}, [_value, useMinorUnit, maxDecimalScale]);
|
|
4536
|
-
const handleChange =
|
|
4771
|
+
const handleChange = useCallback18(
|
|
4537
4772
|
(event) => {
|
|
4538
4773
|
if (event.target.value === "") {
|
|
4539
4774
|
setValue(void 0);
|
|
@@ -4550,7 +4785,7 @@ var PercentageInput = React33.forwardRef(
|
|
|
4550
4785
|
},
|
|
4551
4786
|
[setValue, useMinorUnit, maxDecimalScale, min, max]
|
|
4552
4787
|
);
|
|
4553
|
-
return /* @__PURE__ */
|
|
4788
|
+
return /* @__PURE__ */ React35.createElement(
|
|
4554
4789
|
PercentageInputRoot,
|
|
4555
4790
|
{
|
|
4556
4791
|
...innerProps,
|
|
@@ -4597,7 +4832,7 @@ var PercentageInput3 = ({
|
|
|
4597
4832
|
if (hidden) {
|
|
4598
4833
|
return null;
|
|
4599
4834
|
}
|
|
4600
|
-
return /* @__PURE__ */
|
|
4835
|
+
return /* @__PURE__ */ React36.createElement(Stack7, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React36.createElement(Typography2, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React36.createElement(
|
|
4601
4836
|
PercentageInput,
|
|
4602
4837
|
{
|
|
4603
4838
|
value: _value,
|
|
@@ -4612,7 +4847,7 @@ var PercentageInput3 = ({
|
|
|
4612
4847
|
};
|
|
4613
4848
|
|
|
4614
4849
|
// src/components/FilterMenu/components/PercentageRange.tsx
|
|
4615
|
-
import
|
|
4850
|
+
import React37, { useCallback as useCallback19 } from "react";
|
|
4616
4851
|
import { Stack as Stack8 } from "@mui/joy";
|
|
4617
4852
|
function PercentageRange(props) {
|
|
4618
4853
|
const { id, label, value, onChange, hidden, useMinorUnit, maxDecimalScale, min, max } = props;
|
|
@@ -4623,7 +4858,7 @@ function PercentageRange(props) {
|
|
|
4623
4858
|
);
|
|
4624
4859
|
const minValue = internalValue?.[0];
|
|
4625
4860
|
const maxValue = internalValue?.[1];
|
|
4626
|
-
const handleMinChange =
|
|
4861
|
+
const handleMinChange = useCallback19(
|
|
4627
4862
|
(event) => {
|
|
4628
4863
|
const newMinValue = event.target.value;
|
|
4629
4864
|
const currentMaxValue = maxValue;
|
|
@@ -4635,7 +4870,7 @@ function PercentageRange(props) {
|
|
|
4635
4870
|
},
|
|
4636
4871
|
[maxValue, setInternalValue]
|
|
4637
4872
|
);
|
|
4638
|
-
const handleMaxChange =
|
|
4873
|
+
const handleMaxChange = useCallback19(
|
|
4639
4874
|
(event) => {
|
|
4640
4875
|
const newMaxValue = event.target.value;
|
|
4641
4876
|
const currentMinValue = minValue;
|
|
@@ -4650,7 +4885,7 @@ function PercentageRange(props) {
|
|
|
4650
4885
|
if (hidden) {
|
|
4651
4886
|
return null;
|
|
4652
4887
|
}
|
|
4653
|
-
return /* @__PURE__ */
|
|
4888
|
+
return /* @__PURE__ */ React37.createElement(Stack8, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React37.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React37.createElement(Stack8, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ React37.createElement(
|
|
4654
4889
|
PercentageInput,
|
|
4655
4890
|
{
|
|
4656
4891
|
label: "Minimum",
|
|
@@ -4664,7 +4899,7 @@ function PercentageRange(props) {
|
|
|
4664
4899
|
"aria-label": "Minimum percentage",
|
|
4665
4900
|
placeholder: "0%"
|
|
4666
4901
|
}
|
|
4667
|
-
), /* @__PURE__ */
|
|
4902
|
+
), /* @__PURE__ */ React37.createElement(
|
|
4668
4903
|
PercentageInput,
|
|
4669
4904
|
{
|
|
4670
4905
|
label: "Maximum",
|
|
@@ -4683,13 +4918,13 @@ function PercentageRange(props) {
|
|
|
4683
4918
|
PercentageRange.displayName = "PercentageRange";
|
|
4684
4919
|
|
|
4685
4920
|
// src/components/FilterMenu/components/Autocomplete.tsx
|
|
4686
|
-
import
|
|
4921
|
+
import React38, { useCallback as useCallback20 } from "react";
|
|
4687
4922
|
import { Stack as Stack9 } from "@mui/joy";
|
|
4688
4923
|
function Autocomplete2(props) {
|
|
4689
4924
|
const { id, label, value, onChange, options, multiple, hidden, placeholder } = props;
|
|
4690
4925
|
const [internalValue, setInternalValue] = useControlledState(value, void 0, onChange);
|
|
4691
4926
|
const autocompleteValue = typeof internalValue === "string" || typeof internalValue === "number" ? String(internalValue) : void 0;
|
|
4692
|
-
const handleChange =
|
|
4927
|
+
const handleChange = useCallback20(
|
|
4693
4928
|
(event) => {
|
|
4694
4929
|
const val = event.target.value;
|
|
4695
4930
|
if (val) {
|
|
@@ -4704,7 +4939,7 @@ function Autocomplete2(props) {
|
|
|
4704
4939
|
if (hidden) {
|
|
4705
4940
|
return null;
|
|
4706
4941
|
}
|
|
4707
|
-
return /* @__PURE__ */
|
|
4942
|
+
return /* @__PURE__ */ React38.createElement(Stack9, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ React38.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ React38.createElement(
|
|
4708
4943
|
Autocomplete,
|
|
4709
4944
|
{
|
|
4710
4945
|
value: autocompleteValue,
|
|
@@ -4737,7 +4972,7 @@ function FilterMenu(props) {
|
|
|
4737
4972
|
void 0
|
|
4738
4973
|
// onChange는 Apply 버튼에서만 호출
|
|
4739
4974
|
);
|
|
4740
|
-
const handleFilterChange =
|
|
4975
|
+
const handleFilterChange = useCallback21(
|
|
4741
4976
|
(filterId, value) => {
|
|
4742
4977
|
setInternalValues((prev) => ({
|
|
4743
4978
|
...prev,
|
|
@@ -4746,17 +4981,17 @@ function FilterMenu(props) {
|
|
|
4746
4981
|
},
|
|
4747
4982
|
[setInternalValues]
|
|
4748
4983
|
);
|
|
4749
|
-
const handleApply =
|
|
4984
|
+
const handleApply = useCallback21(() => {
|
|
4750
4985
|
onChange?.(internalValues);
|
|
4751
4986
|
onClose?.();
|
|
4752
4987
|
}, [onChange, onClose, internalValues]);
|
|
4753
|
-
const handleClear =
|
|
4988
|
+
const handleClear = useCallback21(() => {
|
|
4754
4989
|
const clearedValues = resetValues || {};
|
|
4755
4990
|
setInternalValues(clearedValues);
|
|
4756
4991
|
onChange?.(clearedValues);
|
|
4757
4992
|
onClose?.();
|
|
4758
4993
|
}, [resetValues, setInternalValues, onChange, onClose]);
|
|
4759
|
-
return /* @__PURE__ */
|
|
4994
|
+
return /* @__PURE__ */ React39.createElement(
|
|
4760
4995
|
ModalDialog,
|
|
4761
4996
|
{
|
|
4762
4997
|
sx: {
|
|
@@ -4766,9 +5001,9 @@ function FilterMenu(props) {
|
|
|
4766
5001
|
top: "initial"
|
|
4767
5002
|
}
|
|
4768
5003
|
},
|
|
4769
|
-
/* @__PURE__ */
|
|
5004
|
+
/* @__PURE__ */ React39.createElement(DialogContent, { sx: { paddingTop: 5 } }, /* @__PURE__ */ React39.createElement(Stack10, { spacing: 6 }, filters?.map((filter) => {
|
|
4770
5005
|
const FilterComponent = componentMap[filter.type];
|
|
4771
|
-
return FilterComponent ? /* @__PURE__ */
|
|
5006
|
+
return FilterComponent ? /* @__PURE__ */ React39.createElement(
|
|
4772
5007
|
FilterComponent,
|
|
4773
5008
|
{
|
|
4774
5009
|
key: filter.id,
|
|
@@ -4780,14 +5015,14 @@ function FilterMenu(props) {
|
|
|
4780
5015
|
}
|
|
4781
5016
|
) : null;
|
|
4782
5017
|
}))),
|
|
4783
|
-
/* @__PURE__ */
|
|
5018
|
+
/* @__PURE__ */ React39.createElement(DialogActions, { sx: { justifyContent: "space-between" } }, useClear && filters?.length === 1 && /* @__PURE__ */ React39.createElement(Button2, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Clear"), useReset && !useClear && /* @__PURE__ */ React39.createElement(Button2, { variant: "plain", color: "neutral", size: "md", onClick: handleClear }, "Reset"), /* @__PURE__ */ React39.createElement(Button2, { variant: "solid", color: "primary", size: "md", onClick: handleApply }, "Apply"))
|
|
4784
5019
|
);
|
|
4785
5020
|
}
|
|
4786
5021
|
FilterMenu.displayName = "FilterMenu";
|
|
4787
5022
|
|
|
4788
5023
|
// src/components/Uploader/Uploader.tsx
|
|
4789
|
-
import
|
|
4790
|
-
import { styled as
|
|
5024
|
+
import React40, { useCallback as useCallback22, useEffect as useEffect9, useMemo as useMemo14, useRef as useRef8, useState as useState11 } from "react";
|
|
5025
|
+
import { styled as styled21, Input as Input2 } from "@mui/joy";
|
|
4791
5026
|
import MuiFileUploadIcon from "@mui/icons-material/CloudUploadRounded";
|
|
4792
5027
|
import MuiUploadFileIcon from "@mui/icons-material/UploadFileRounded";
|
|
4793
5028
|
import MuiClearIcon from "@mui/icons-material/ClearRounded";
|
|
@@ -4809,7 +5044,7 @@ var esmFiles = {
|
|
|
4809
5044
|
"@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js"
|
|
4810
5045
|
)
|
|
4811
5046
|
};
|
|
4812
|
-
var VisuallyHiddenInput =
|
|
5047
|
+
var VisuallyHiddenInput = styled21(Input2)({
|
|
4813
5048
|
width: "1px",
|
|
4814
5049
|
height: "1px",
|
|
4815
5050
|
overflow: "hidden",
|
|
@@ -4818,18 +5053,18 @@ var VisuallyHiddenInput = styled20(Input2)({
|
|
|
4818
5053
|
clipPath: "inset(50%)",
|
|
4819
5054
|
position: "absolute"
|
|
4820
5055
|
});
|
|
4821
|
-
var PreviewRoot =
|
|
5056
|
+
var PreviewRoot = styled21(Stack_default, {
|
|
4822
5057
|
name: "Uploader",
|
|
4823
5058
|
slot: "PreviewRoot"
|
|
4824
5059
|
})({});
|
|
4825
|
-
var UploadCard =
|
|
5060
|
+
var UploadCard = styled21(Card, {
|
|
4826
5061
|
name: "Uploader",
|
|
4827
5062
|
slot: "UploadCard"
|
|
4828
5063
|
})(({ theme }) => ({
|
|
4829
5064
|
padding: theme.spacing(2.5),
|
|
4830
5065
|
border: `1px solid ${theme.palette.neutral.outlinedBorder}`
|
|
4831
5066
|
}));
|
|
4832
|
-
var UploadFileIcon =
|
|
5067
|
+
var UploadFileIcon = styled21(MuiUploadFileIcon, {
|
|
4833
5068
|
name: "Uploader",
|
|
4834
5069
|
slot: "UploadFileIcon"
|
|
4835
5070
|
})(({ theme }) => ({
|
|
@@ -4837,7 +5072,7 @@ var UploadFileIcon = styled20(MuiUploadFileIcon, {
|
|
|
4837
5072
|
width: "32px",
|
|
4838
5073
|
height: "32px"
|
|
4839
5074
|
}));
|
|
4840
|
-
var ClearIcon2 =
|
|
5075
|
+
var ClearIcon2 = styled21(MuiClearIcon, {
|
|
4841
5076
|
name: "Uploader",
|
|
4842
5077
|
slot: "ClearIcon"
|
|
4843
5078
|
})(({ theme }) => ({
|
|
@@ -4863,15 +5098,15 @@ var getFileSize = (n) => {
|
|
|
4863
5098
|
};
|
|
4864
5099
|
var Preview = (props) => {
|
|
4865
5100
|
const { files, uploaded, onDelete } = props;
|
|
4866
|
-
return /* @__PURE__ */
|
|
5101
|
+
return /* @__PURE__ */ React40.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ React40.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ React40.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ React40.createElement(UploadFileIcon, null), /* @__PURE__ */ React40.createElement(Stack_default, { flex: "1" }, /* @__PURE__ */ React40.createElement(Typography_default, { level: "body-sm", textColor: "common.black" }, file.name), !!file.size && /* @__PURE__ */ React40.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ React40.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ React40.createElement(ClearIcon2, null))))));
|
|
4867
5102
|
};
|
|
4868
|
-
var UploaderRoot =
|
|
5103
|
+
var UploaderRoot = styled21(Stack_default, {
|
|
4869
5104
|
name: "Uploader",
|
|
4870
5105
|
slot: "root"
|
|
4871
5106
|
})(({ theme }) => ({
|
|
4872
5107
|
gap: theme.spacing(2)
|
|
4873
5108
|
}));
|
|
4874
|
-
var FileDropZone =
|
|
5109
|
+
var FileDropZone = styled21(Sheet_default, {
|
|
4875
5110
|
name: "Uploader",
|
|
4876
5111
|
slot: "dropZone",
|
|
4877
5112
|
shouldForwardProp: (prop) => prop !== "error"
|
|
@@ -4887,7 +5122,7 @@ var FileDropZone = styled20(Sheet_default, {
|
|
|
4887
5122
|
backgroundColor: theme.palette.background.surface,
|
|
4888
5123
|
border: error ? `1px solid ${theme.palette.danger.outlinedBorder}` : state === "idle" ? `1px solid ${theme.palette.neutral.outlinedBorder}` : `1px solid ${theme.palette.primary.outlinedBorder}`
|
|
4889
5124
|
}));
|
|
4890
|
-
var UploaderIcon =
|
|
5125
|
+
var UploaderIcon = styled21(MuiFileUploadIcon, {
|
|
4891
5126
|
name: "Uploader",
|
|
4892
5127
|
slot: "iconContainer",
|
|
4893
5128
|
shouldForwardProp: (prop) => prop !== "error"
|
|
@@ -4896,7 +5131,7 @@ var UploaderIcon = styled20(MuiFileUploadIcon, {
|
|
|
4896
5131
|
width: "32px",
|
|
4897
5132
|
height: "32px"
|
|
4898
5133
|
}));
|
|
4899
|
-
var Uploader =
|
|
5134
|
+
var Uploader = React40.memo(
|
|
4900
5135
|
(props) => {
|
|
4901
5136
|
const {
|
|
4902
5137
|
accept,
|
|
@@ -4911,14 +5146,14 @@ var Uploader = React38.memo(
|
|
|
4911
5146
|
disabled,
|
|
4912
5147
|
onDelete
|
|
4913
5148
|
} = props;
|
|
4914
|
-
const dropZoneRef =
|
|
4915
|
-
const inputRef =
|
|
4916
|
-
const [errorText, setErrorText] =
|
|
4917
|
-
const [files, setFiles] =
|
|
4918
|
-
const [uploaded, setUploaded] =
|
|
4919
|
-
const [previewState, setPreviewState] =
|
|
4920
|
-
const accepts =
|
|
4921
|
-
const parsedAccepts =
|
|
5149
|
+
const dropZoneRef = useRef8(null);
|
|
5150
|
+
const inputRef = useRef8(null);
|
|
5151
|
+
const [errorText, setErrorText] = useState11();
|
|
5152
|
+
const [files, setFiles] = useState11([]);
|
|
5153
|
+
const [uploaded, setUploaded] = useState11(props.uploaded || []);
|
|
5154
|
+
const [previewState, setPreviewState] = useState11("idle");
|
|
5155
|
+
const accepts = useMemo14(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
|
|
5156
|
+
const parsedAccepts = useMemo14(
|
|
4922
5157
|
() => accepts.flatMap((type) => {
|
|
4923
5158
|
if (["image/*", "video/*", "audio/*"].includes(type)) {
|
|
4924
5159
|
return ALL_EXTENSIONS_BY_TYPE[type];
|
|
@@ -4927,7 +5162,7 @@ var Uploader = React38.memo(
|
|
|
4927
5162
|
}),
|
|
4928
5163
|
[accepts]
|
|
4929
5164
|
);
|
|
4930
|
-
const helperText =
|
|
5165
|
+
const helperText = useMemo14(() => {
|
|
4931
5166
|
const [allAcceptedTypes, acceptedTypes] = [
|
|
4932
5167
|
accepts.filter((accept2) => ["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
|
|
4933
5168
|
const [type] = accept2.split("/");
|
|
@@ -4954,12 +5189,12 @@ var Uploader = React38.memo(
|
|
|
4954
5189
|
}
|
|
4955
5190
|
return helperTexts.join(", ");
|
|
4956
5191
|
}, [accepts, maxFileTotalSize, maxCount]);
|
|
4957
|
-
const error =
|
|
4958
|
-
const showDropZone =
|
|
5192
|
+
const error = useMemo14(() => !!errorText || props.error, [props.error, errorText]);
|
|
5193
|
+
const showDropZone = useMemo14(
|
|
4959
5194
|
() => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
|
|
4960
5195
|
[files, maxCount, uploaded]
|
|
4961
5196
|
);
|
|
4962
|
-
const addFiles =
|
|
5197
|
+
const addFiles = useCallback22(
|
|
4963
5198
|
(uploads) => {
|
|
4964
5199
|
try {
|
|
4965
5200
|
const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
|
|
@@ -5004,7 +5239,7 @@ var Uploader = React38.memo(
|
|
|
5004
5239
|
},
|
|
5005
5240
|
[files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
|
|
5006
5241
|
);
|
|
5007
|
-
|
|
5242
|
+
useEffect9(() => {
|
|
5008
5243
|
if (!dropZoneRef.current || disabled) {
|
|
5009
5244
|
return;
|
|
5010
5245
|
}
|
|
@@ -5042,7 +5277,7 @@ var Uploader = React38.memo(
|
|
|
5042
5277
|
);
|
|
5043
5278
|
return () => cleanup?.();
|
|
5044
5279
|
}, [disabled, addFiles]);
|
|
5045
|
-
|
|
5280
|
+
useEffect9(() => {
|
|
5046
5281
|
if (inputRef.current && minCount) {
|
|
5047
5282
|
if (files.length < minCount) {
|
|
5048
5283
|
inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
|
|
@@ -5051,14 +5286,14 @@ var Uploader = React38.memo(
|
|
|
5051
5286
|
}
|
|
5052
5287
|
}
|
|
5053
5288
|
}, [inputRef, files, minCount]);
|
|
5054
|
-
const handleFileChanged =
|
|
5289
|
+
const handleFileChanged = useCallback22(
|
|
5055
5290
|
(event) => {
|
|
5056
5291
|
const files2 = Array.from(event.target.files || []);
|
|
5057
5292
|
addFiles(files2);
|
|
5058
5293
|
},
|
|
5059
5294
|
[addFiles]
|
|
5060
5295
|
);
|
|
5061
|
-
const handleDeleteFile =
|
|
5296
|
+
const handleDeleteFile = useCallback22(
|
|
5062
5297
|
(deletedFile) => {
|
|
5063
5298
|
if (deletedFile instanceof File) {
|
|
5064
5299
|
setFiles((current) => {
|
|
@@ -5078,10 +5313,10 @@ var Uploader = React38.memo(
|
|
|
5078
5313
|
},
|
|
5079
5314
|
[name, onChange, onDelete]
|
|
5080
5315
|
);
|
|
5081
|
-
const handleUploaderButtonClick =
|
|
5316
|
+
const handleUploaderButtonClick = useCallback22(() => {
|
|
5082
5317
|
inputRef.current?.click();
|
|
5083
5318
|
}, []);
|
|
5084
|
-
const uploader = /* @__PURE__ */
|
|
5319
|
+
const uploader = /* @__PURE__ */ React40.createElement(
|
|
5085
5320
|
FileDropZone,
|
|
5086
5321
|
{
|
|
5087
5322
|
state: previewState,
|
|
@@ -5089,8 +5324,8 @@ var Uploader = React38.memo(
|
|
|
5089
5324
|
ref: dropZoneRef,
|
|
5090
5325
|
onClick: handleUploaderButtonClick
|
|
5091
5326
|
},
|
|
5092
|
-
/* @__PURE__ */
|
|
5093
|
-
/* @__PURE__ */
|
|
5327
|
+
/* @__PURE__ */ React40.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ React40.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText) })),
|
|
5328
|
+
/* @__PURE__ */ React40.createElement(
|
|
5094
5329
|
VisuallyHiddenInput,
|
|
5095
5330
|
{
|
|
5096
5331
|
disabled,
|
|
@@ -5113,7 +5348,7 @@ var Uploader = React38.memo(
|
|
|
5113
5348
|
}
|
|
5114
5349
|
)
|
|
5115
5350
|
);
|
|
5116
|
-
return /* @__PURE__ */
|
|
5351
|
+
return /* @__PURE__ */ React40.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ React40.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ React40.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ React40.createElement(FormHelperText_default, null, /* @__PURE__ */ React40.createElement(Stack_default, null, errorText && /* @__PURE__ */ React40.createElement("div", null, errorText), /* @__PURE__ */ React40.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ React40.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
|
|
5117
5352
|
}
|
|
5118
5353
|
);
|
|
5119
5354
|
Uploader.displayName = "Uploader";
|
|
@@ -5122,7 +5357,7 @@ Uploader.displayName = "Uploader";
|
|
|
5122
5357
|
import { Grid } from "@mui/joy";
|
|
5123
5358
|
|
|
5124
5359
|
// src/components/IconMenuButton/IconMenuButton.tsx
|
|
5125
|
-
import
|
|
5360
|
+
import React41 from "react";
|
|
5126
5361
|
import { MenuButton as JoyMenuButton2, IconButton as JoyIconButton2 } from "@mui/joy";
|
|
5127
5362
|
function IconMenuButton(props) {
|
|
5128
5363
|
const {
|
|
@@ -5136,7 +5371,7 @@ function IconMenuButton(props) {
|
|
|
5136
5371
|
placement = "bottom"
|
|
5137
5372
|
} = props;
|
|
5138
5373
|
if (!items.length) {
|
|
5139
|
-
return /* @__PURE__ */
|
|
5374
|
+
return /* @__PURE__ */ React41.createElement(
|
|
5140
5375
|
JoyIconButton2,
|
|
5141
5376
|
{
|
|
5142
5377
|
component: props.buttonComponent ?? "button",
|
|
@@ -5150,7 +5385,7 @@ function IconMenuButton(props) {
|
|
|
5150
5385
|
icon
|
|
5151
5386
|
);
|
|
5152
5387
|
}
|
|
5153
|
-
return /* @__PURE__ */
|
|
5388
|
+
return /* @__PURE__ */ React41.createElement(Dropdown_default, null, /* @__PURE__ */ React41.createElement(
|
|
5154
5389
|
JoyMenuButton2,
|
|
5155
5390
|
{
|
|
5156
5391
|
slots: { root: JoyIconButton2 },
|
|
@@ -5167,19 +5402,19 @@ function IconMenuButton(props) {
|
|
|
5167
5402
|
}
|
|
5168
5403
|
},
|
|
5169
5404
|
icon
|
|
5170
|
-
), /* @__PURE__ */
|
|
5405
|
+
), /* @__PURE__ */ React41.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React41.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
|
|
5171
5406
|
}
|
|
5172
5407
|
IconMenuButton.displayName = "IconMenuButton";
|
|
5173
5408
|
|
|
5174
5409
|
// src/components/Markdown/Markdown.tsx
|
|
5175
|
-
import
|
|
5410
|
+
import React42, { lazy, Suspense, useEffect as useEffect10, useState as useState12 } from "react";
|
|
5176
5411
|
import { Skeleton } from "@mui/joy";
|
|
5177
5412
|
import { Link as Link2 } from "@mui/joy";
|
|
5178
5413
|
import remarkGfm from "remark-gfm";
|
|
5179
5414
|
var LazyReactMarkdown = lazy(() => import("react-markdown"));
|
|
5180
5415
|
var Markdown = (props) => {
|
|
5181
|
-
const [rehypeAccent2, setRehypeAccent] =
|
|
5182
|
-
|
|
5416
|
+
const [rehypeAccent2, setRehypeAccent] = useState12(null);
|
|
5417
|
+
useEffect10(() => {
|
|
5183
5418
|
const loadRehypeAccent = async () => {
|
|
5184
5419
|
const module = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
|
|
5185
5420
|
setRehypeAccent(() => module.rehypeAccent);
|
|
@@ -5201,12 +5436,12 @@ var Markdown = (props) => {
|
|
|
5201
5436
|
if (!rehypeAccent2) {
|
|
5202
5437
|
return null;
|
|
5203
5438
|
}
|
|
5204
|
-
return /* @__PURE__ */
|
|
5439
|
+
return /* @__PURE__ */ React42.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ React42.createElement(
|
|
5205
5440
|
Suspense,
|
|
5206
5441
|
{
|
|
5207
|
-
fallback: fallback || /* @__PURE__ */
|
|
5442
|
+
fallback: fallback || /* @__PURE__ */ React42.createElement(Typography, null, /* @__PURE__ */ React42.createElement(Skeleton, null, content || ""))
|
|
5208
5443
|
},
|
|
5209
|
-
/* @__PURE__ */
|
|
5444
|
+
/* @__PURE__ */ React42.createElement(
|
|
5210
5445
|
LazyReactMarkdown,
|
|
5211
5446
|
{
|
|
5212
5447
|
...markdownOptions,
|
|
@@ -5214,15 +5449,15 @@ var Markdown = (props) => {
|
|
|
5214
5449
|
rehypePlugins: [[rehypeAccent2, { accentColor }]],
|
|
5215
5450
|
remarkPlugins: [remarkGfm],
|
|
5216
5451
|
components: {
|
|
5217
|
-
h1: ({ children }) => /* @__PURE__ */
|
|
5218
|
-
h2: ({ children }) => /* @__PURE__ */
|
|
5219
|
-
h3: ({ children }) => /* @__PURE__ */
|
|
5220
|
-
h4: ({ children }) => /* @__PURE__ */
|
|
5221
|
-
p: ({ children, node }) => /* @__PURE__ */
|
|
5222
|
-
a: ({ children, href }) => /* @__PURE__ */
|
|
5223
|
-
hr: () => /* @__PURE__ */
|
|
5224
|
-
b: ({ children }) => /* @__PURE__ */
|
|
5225
|
-
strong: ({ children }) => /* @__PURE__ */
|
|
5452
|
+
h1: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { color, textColor, level: "h1" }, children),
|
|
5453
|
+
h2: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { color, textColor, level: "h2" }, children),
|
|
5454
|
+
h3: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { color, textColor, level: "h3" }, children),
|
|
5455
|
+
h4: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { color, textColor, level: "h4" }, children),
|
|
5456
|
+
p: ({ children, node }) => /* @__PURE__ */ React42.createElement(Typography, { color, textColor, level: defaultLevel, ...node?.properties }, children),
|
|
5457
|
+
a: ({ children, href }) => /* @__PURE__ */ React42.createElement(Link2, { href, target: defaultLinkAction }, children),
|
|
5458
|
+
hr: () => /* @__PURE__ */ React42.createElement(Divider, null),
|
|
5459
|
+
b: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { fontWeight: boldFontWeight }, children),
|
|
5460
|
+
strong: ({ children }) => /* @__PURE__ */ React42.createElement(Typography, { fontWeight: boldFontWeight }, children),
|
|
5226
5461
|
...markdownOptions?.components
|
|
5227
5462
|
}
|
|
5228
5463
|
}
|
|
@@ -5232,7 +5467,7 @@ var Markdown = (props) => {
|
|
|
5232
5467
|
Markdown.displayName = "Markdown";
|
|
5233
5468
|
|
|
5234
5469
|
// src/components/MenuButton/MenuButton.tsx
|
|
5235
|
-
import
|
|
5470
|
+
import React43 from "react";
|
|
5236
5471
|
import { MenuButton as JoyMenuButton3, Button as JoyButton2 } from "@mui/joy";
|
|
5237
5472
|
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
|
|
5238
5473
|
function MenuButton(props) {
|
|
@@ -5250,7 +5485,7 @@ function MenuButton(props) {
|
|
|
5250
5485
|
placement = "bottom"
|
|
5251
5486
|
} = props;
|
|
5252
5487
|
if (!items.length) {
|
|
5253
|
-
return /* @__PURE__ */
|
|
5488
|
+
return /* @__PURE__ */ React43.createElement(
|
|
5254
5489
|
JoyButton2,
|
|
5255
5490
|
{
|
|
5256
5491
|
component: props.buttonComponent ?? "button",
|
|
@@ -5261,12 +5496,12 @@ function MenuButton(props) {
|
|
|
5261
5496
|
loading,
|
|
5262
5497
|
startDecorator,
|
|
5263
5498
|
...props.buttonComponentProps ?? {},
|
|
5264
|
-
endDecorator: showIcon ? /* @__PURE__ */
|
|
5499
|
+
endDecorator: showIcon ? /* @__PURE__ */ React43.createElement(React43.Fragment, null, endDecorator, /* @__PURE__ */ React43.createElement(ExpandMoreIcon, null)) : /* @__PURE__ */ React43.createElement(React43.Fragment, null, endDecorator)
|
|
5265
5500
|
},
|
|
5266
5501
|
buttonText
|
|
5267
5502
|
);
|
|
5268
5503
|
}
|
|
5269
|
-
return /* @__PURE__ */
|
|
5504
|
+
return /* @__PURE__ */ React43.createElement(Dropdown_default, null, /* @__PURE__ */ React43.createElement(
|
|
5270
5505
|
JoyMenuButton3,
|
|
5271
5506
|
{
|
|
5272
5507
|
component: props.buttonComponent ?? "button",
|
|
@@ -5277,25 +5512,25 @@ function MenuButton(props) {
|
|
|
5277
5512
|
loading,
|
|
5278
5513
|
startDecorator,
|
|
5279
5514
|
...props.buttonComponentProps ?? {},
|
|
5280
|
-
endDecorator: showIcon ? /* @__PURE__ */
|
|
5515
|
+
endDecorator: showIcon ? /* @__PURE__ */ React43.createElement(React43.Fragment, null, endDecorator, /* @__PURE__ */ React43.createElement(ExpandMoreIcon, null)) : /* @__PURE__ */ React43.createElement(React43.Fragment, null, endDecorator)
|
|
5281
5516
|
},
|
|
5282
5517
|
buttonText
|
|
5283
|
-
), /* @__PURE__ */
|
|
5518
|
+
), /* @__PURE__ */ React43.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ React43.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
|
|
5284
5519
|
}
|
|
5285
5520
|
MenuButton.displayName = "MenuButton";
|
|
5286
5521
|
|
|
5287
5522
|
// src/components/MonthPicker/MonthPicker.tsx
|
|
5288
|
-
import
|
|
5523
|
+
import React44, { forwardRef as forwardRef9, useCallback as useCallback23, useEffect as useEffect11, useImperativeHandle as useImperativeHandle4, useRef as useRef9, useState as useState13 } from "react";
|
|
5289
5524
|
import CalendarTodayIcon3 from "@mui/icons-material/CalendarToday";
|
|
5290
|
-
import { styled as
|
|
5525
|
+
import { styled as styled22, useThemeProps as useThemeProps7 } from "@mui/joy";
|
|
5291
5526
|
import { FocusTrap as FocusTrap3, ClickAwayListener as ClickAwayListener3, Popper as Popper4 } from "@mui/base";
|
|
5292
|
-
var StyledPopper3 =
|
|
5527
|
+
var StyledPopper3 = styled22(Popper4, {
|
|
5293
5528
|
name: "MonthPicker",
|
|
5294
5529
|
slot: "popper"
|
|
5295
5530
|
})(({ theme }) => ({
|
|
5296
5531
|
zIndex: theme.zIndex.tooltip
|
|
5297
5532
|
}));
|
|
5298
|
-
var CalendarSheet3 =
|
|
5533
|
+
var CalendarSheet3 = styled22(Sheet_default, {
|
|
5299
5534
|
name: "MonthPicker",
|
|
5300
5535
|
slot: "sheet",
|
|
5301
5536
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -5304,7 +5539,7 @@ var CalendarSheet3 = styled21(Sheet_default, {
|
|
|
5304
5539
|
boxShadow: theme.shadow.md,
|
|
5305
5540
|
borderRadius: theme.radius.md
|
|
5306
5541
|
}));
|
|
5307
|
-
var MonthPickerRoot =
|
|
5542
|
+
var MonthPickerRoot = styled22("div", {
|
|
5308
5543
|
name: "MonthPicker",
|
|
5309
5544
|
slot: "root",
|
|
5310
5545
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -5367,14 +5602,14 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
5367
5602
|
locale,
|
|
5368
5603
|
...innerProps
|
|
5369
5604
|
} = props;
|
|
5370
|
-
const innerRef =
|
|
5371
|
-
const buttonRef =
|
|
5605
|
+
const innerRef = useRef9(null);
|
|
5606
|
+
const buttonRef = useRef9(null);
|
|
5372
5607
|
const [value, setValue, isControlled] = useControlledState(
|
|
5373
5608
|
props.value,
|
|
5374
5609
|
props.defaultValue || "",
|
|
5375
|
-
|
|
5610
|
+
useCallback23((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
5376
5611
|
);
|
|
5377
|
-
const getFormattedDisplayValue =
|
|
5612
|
+
const getFormattedDisplayValue = useCallback23(
|
|
5378
5613
|
(inputValue) => {
|
|
5379
5614
|
if (!inputValue) return "";
|
|
5380
5615
|
try {
|
|
@@ -5385,19 +5620,19 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
5385
5620
|
},
|
|
5386
5621
|
[format, displayFormat, locale]
|
|
5387
5622
|
);
|
|
5388
|
-
const [displayValue, setDisplayValue] =
|
|
5389
|
-
const [anchorEl, setAnchorEl] =
|
|
5623
|
+
const [displayValue, setDisplayValue] = useState13(() => getFormattedDisplayValue(value));
|
|
5624
|
+
const [anchorEl, setAnchorEl] = useState13(null);
|
|
5390
5625
|
const open = Boolean(anchorEl);
|
|
5391
|
-
|
|
5626
|
+
useEffect11(() => {
|
|
5392
5627
|
if (!anchorEl) {
|
|
5393
5628
|
innerRef.current?.blur();
|
|
5394
5629
|
}
|
|
5395
5630
|
}, [anchorEl, innerRef]);
|
|
5396
5631
|
useImperativeHandle4(ref, () => innerRef.current, [innerRef]);
|
|
5397
|
-
|
|
5632
|
+
useEffect11(() => {
|
|
5398
5633
|
setDisplayValue(getFormattedDisplayValue(value));
|
|
5399
5634
|
}, [value, getFormattedDisplayValue]);
|
|
5400
|
-
const handleChange =
|
|
5635
|
+
const handleChange = useCallback23(
|
|
5401
5636
|
(event) => {
|
|
5402
5637
|
const newValue = event.target.value;
|
|
5403
5638
|
setValue(newValue);
|
|
@@ -5407,21 +5642,21 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
5407
5642
|
},
|
|
5408
5643
|
[setValue, getFormattedDisplayValue, isControlled]
|
|
5409
5644
|
);
|
|
5410
|
-
const handleCalendarToggle =
|
|
5645
|
+
const handleCalendarToggle = useCallback23(
|
|
5411
5646
|
(event) => {
|
|
5412
5647
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
5413
5648
|
innerRef.current?.focus();
|
|
5414
5649
|
},
|
|
5415
5650
|
[anchorEl, setAnchorEl, innerRef]
|
|
5416
5651
|
);
|
|
5417
|
-
const handleInputMouseDown =
|
|
5652
|
+
const handleInputMouseDown = useCallback23(
|
|
5418
5653
|
(event) => {
|
|
5419
5654
|
event.preventDefault();
|
|
5420
5655
|
buttonRef.current?.focus();
|
|
5421
5656
|
},
|
|
5422
5657
|
[buttonRef]
|
|
5423
5658
|
);
|
|
5424
|
-
return /* @__PURE__ */
|
|
5659
|
+
return /* @__PURE__ */ React44.createElement(MonthPickerRoot, null, /* @__PURE__ */ React44.createElement(FocusTrap3, { open: true }, /* @__PURE__ */ React44.createElement(React44.Fragment, null, /* @__PURE__ */ React44.createElement(
|
|
5425
5660
|
Input_default,
|
|
5426
5661
|
{
|
|
5427
5662
|
...innerProps,
|
|
@@ -5451,7 +5686,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
5451
5686
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5452
5687
|
fontFamily: "monospace"
|
|
5453
5688
|
},
|
|
5454
|
-
endDecorator: /* @__PURE__ */
|
|
5689
|
+
endDecorator: /* @__PURE__ */ React44.createElement(
|
|
5455
5690
|
IconButton_default,
|
|
5456
5691
|
{
|
|
5457
5692
|
ref: buttonRef,
|
|
@@ -5463,12 +5698,12 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
5463
5698
|
"aria-expanded": open,
|
|
5464
5699
|
disabled
|
|
5465
5700
|
},
|
|
5466
|
-
/* @__PURE__ */
|
|
5701
|
+
/* @__PURE__ */ React44.createElement(CalendarTodayIcon3, null)
|
|
5467
5702
|
),
|
|
5468
5703
|
label,
|
|
5469
5704
|
helperText
|
|
5470
5705
|
}
|
|
5471
|
-
), open && /* @__PURE__ */
|
|
5706
|
+
), open && /* @__PURE__ */ React44.createElement(ClickAwayListener3, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React44.createElement(
|
|
5472
5707
|
StyledPopper3,
|
|
5473
5708
|
{
|
|
5474
5709
|
id: "month-picker-popper",
|
|
@@ -5487,7 +5722,7 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
5487
5722
|
"aria-label": "Calendar Tooltip",
|
|
5488
5723
|
"aria-expanded": open
|
|
5489
5724
|
},
|
|
5490
|
-
/* @__PURE__ */
|
|
5725
|
+
/* @__PURE__ */ React44.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React44.createElement(
|
|
5491
5726
|
Calendar_default,
|
|
5492
5727
|
{
|
|
5493
5728
|
view: "month",
|
|
@@ -5508,14 +5743,14 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
5508
5743
|
disablePast,
|
|
5509
5744
|
locale
|
|
5510
5745
|
}
|
|
5511
|
-
), /* @__PURE__ */
|
|
5746
|
+
), /* @__PURE__ */ React44.createElement(
|
|
5512
5747
|
DialogActions_default,
|
|
5513
5748
|
{
|
|
5514
5749
|
sx: {
|
|
5515
5750
|
p: 1
|
|
5516
5751
|
}
|
|
5517
5752
|
},
|
|
5518
|
-
/* @__PURE__ */
|
|
5753
|
+
/* @__PURE__ */ React44.createElement(
|
|
5519
5754
|
Button_default,
|
|
5520
5755
|
{
|
|
5521
5756
|
size,
|
|
@@ -5538,18 +5773,18 @@ var MonthPicker = forwardRef9((inProps, ref) => {
|
|
|
5538
5773
|
});
|
|
5539
5774
|
|
|
5540
5775
|
// src/components/MonthRangePicker/MonthRangePicker.tsx
|
|
5541
|
-
import
|
|
5776
|
+
import React45, { forwardRef as forwardRef10, useCallback as useCallback24, useEffect as useEffect12, useImperativeHandle as useImperativeHandle5, useMemo as useMemo15, useRef as useRef10, useState as useState14 } from "react";
|
|
5542
5777
|
import { IMaskInput as IMaskInput3, IMask as IMask3 } from "react-imask";
|
|
5543
5778
|
import CalendarTodayIcon4 from "@mui/icons-material/CalendarToday";
|
|
5544
|
-
import { styled as
|
|
5779
|
+
import { styled as styled23, useThemeProps as useThemeProps8 } from "@mui/joy";
|
|
5545
5780
|
import { FocusTrap as FocusTrap4, ClickAwayListener as ClickAwayListener4, Popper as Popper5 } from "@mui/base";
|
|
5546
|
-
var StyledPopper4 =
|
|
5781
|
+
var StyledPopper4 = styled23(Popper5, {
|
|
5547
5782
|
name: "MonthRangePicker",
|
|
5548
5783
|
slot: "popper"
|
|
5549
5784
|
})(({ theme }) => ({
|
|
5550
5785
|
zIndex: theme.zIndex.tooltip
|
|
5551
5786
|
}));
|
|
5552
|
-
var CalendarSheet4 =
|
|
5787
|
+
var CalendarSheet4 = styled23(Sheet_default, {
|
|
5553
5788
|
name: "MonthRangePicker",
|
|
5554
5789
|
slot: "sheet",
|
|
5555
5790
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -5559,7 +5794,7 @@ var CalendarSheet4 = styled22(Sheet_default, {
|
|
|
5559
5794
|
boxShadow: theme.shadow.md,
|
|
5560
5795
|
borderRadius: theme.radius.md
|
|
5561
5796
|
}));
|
|
5562
|
-
var MonthRangePickerRoot =
|
|
5797
|
+
var MonthRangePickerRoot = styled23("div", {
|
|
5563
5798
|
name: "MonthRangePicker",
|
|
5564
5799
|
slot: "root",
|
|
5565
5800
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -5596,9 +5831,9 @@ var parseDates2 = (str) => {
|
|
|
5596
5831
|
var formatToPattern3 = (format) => {
|
|
5597
5832
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
|
|
5598
5833
|
};
|
|
5599
|
-
var TextMaskAdapter9 =
|
|
5834
|
+
var TextMaskAdapter9 = React45.forwardRef(function TextMaskAdapter10(props, ref) {
|
|
5600
5835
|
const { onChange, format, ...other } = props;
|
|
5601
|
-
return /* @__PURE__ */
|
|
5836
|
+
return /* @__PURE__ */ React45.createElement(
|
|
5602
5837
|
IMaskInput3,
|
|
5603
5838
|
{
|
|
5604
5839
|
...other,
|
|
@@ -5646,35 +5881,35 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
5646
5881
|
size,
|
|
5647
5882
|
...innerProps
|
|
5648
5883
|
} = props;
|
|
5649
|
-
const innerRef =
|
|
5884
|
+
const innerRef = useRef10(null);
|
|
5650
5885
|
const [value, setValue] = useControlledState(
|
|
5651
5886
|
props.value,
|
|
5652
5887
|
props.defaultValue || "",
|
|
5653
|
-
|
|
5888
|
+
useCallback24((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
5654
5889
|
);
|
|
5655
|
-
const [anchorEl, setAnchorEl] =
|
|
5890
|
+
const [anchorEl, setAnchorEl] = useState14(null);
|
|
5656
5891
|
const open = Boolean(anchorEl);
|
|
5657
|
-
const calendarValue =
|
|
5658
|
-
|
|
5892
|
+
const calendarValue = useMemo15(() => value ? parseDates2(value) : void 0, [value]);
|
|
5893
|
+
useEffect12(() => {
|
|
5659
5894
|
if (!anchorEl) {
|
|
5660
5895
|
innerRef.current?.blur();
|
|
5661
5896
|
}
|
|
5662
5897
|
}, [anchorEl, innerRef]);
|
|
5663
5898
|
useImperativeHandle5(ref, () => innerRef.current, [innerRef]);
|
|
5664
|
-
const handleChange =
|
|
5899
|
+
const handleChange = useCallback24(
|
|
5665
5900
|
(event) => {
|
|
5666
5901
|
setValue(event.target.value);
|
|
5667
5902
|
},
|
|
5668
5903
|
[setValue]
|
|
5669
5904
|
);
|
|
5670
|
-
const handleCalendarToggle =
|
|
5905
|
+
const handleCalendarToggle = useCallback24(
|
|
5671
5906
|
(event) => {
|
|
5672
5907
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
5673
5908
|
innerRef.current?.focus();
|
|
5674
5909
|
},
|
|
5675
5910
|
[anchorEl, setAnchorEl, innerRef]
|
|
5676
5911
|
);
|
|
5677
|
-
const handleCalendarChange =
|
|
5912
|
+
const handleCalendarChange = useCallback24(
|
|
5678
5913
|
([date1, date2]) => {
|
|
5679
5914
|
if (!date1 || !date2) return;
|
|
5680
5915
|
setValue(formatValueString4([date1, date2], format));
|
|
@@ -5682,7 +5917,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
5682
5917
|
},
|
|
5683
5918
|
[setValue, setAnchorEl, format]
|
|
5684
5919
|
);
|
|
5685
|
-
return /* @__PURE__ */
|
|
5920
|
+
return /* @__PURE__ */ React45.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ React45.createElement(FocusTrap4, { open: true }, /* @__PURE__ */ React45.createElement(React45.Fragment, null, /* @__PURE__ */ React45.createElement(
|
|
5686
5921
|
Input_default,
|
|
5687
5922
|
{
|
|
5688
5923
|
...innerProps,
|
|
@@ -5704,7 +5939,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
5704
5939
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5705
5940
|
fontFamily: "monospace"
|
|
5706
5941
|
},
|
|
5707
|
-
endDecorator: /* @__PURE__ */
|
|
5942
|
+
endDecorator: /* @__PURE__ */ React45.createElement(
|
|
5708
5943
|
IconButton_default,
|
|
5709
5944
|
{
|
|
5710
5945
|
variant: "plain",
|
|
@@ -5714,12 +5949,12 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
5714
5949
|
"aria-haspopup": "dialog",
|
|
5715
5950
|
"aria-expanded": open
|
|
5716
5951
|
},
|
|
5717
|
-
/* @__PURE__ */
|
|
5952
|
+
/* @__PURE__ */ React45.createElement(CalendarTodayIcon4, null)
|
|
5718
5953
|
),
|
|
5719
5954
|
label,
|
|
5720
5955
|
helperText
|
|
5721
5956
|
}
|
|
5722
|
-
), open && /* @__PURE__ */
|
|
5957
|
+
), open && /* @__PURE__ */ React45.createElement(ClickAwayListener4, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ React45.createElement(
|
|
5723
5958
|
StyledPopper4,
|
|
5724
5959
|
{
|
|
5725
5960
|
id: "month-range-picker-popper",
|
|
@@ -5738,7 +5973,7 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
5738
5973
|
"aria-label": "Calendar Tooltip",
|
|
5739
5974
|
"aria-expanded": open
|
|
5740
5975
|
},
|
|
5741
|
-
/* @__PURE__ */
|
|
5976
|
+
/* @__PURE__ */ React45.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ React45.createElement(
|
|
5742
5977
|
Calendar_default,
|
|
5743
5978
|
{
|
|
5744
5979
|
view: "month",
|
|
@@ -5751,14 +5986,14 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
5751
5986
|
disableFuture,
|
|
5752
5987
|
disablePast
|
|
5753
5988
|
}
|
|
5754
|
-
), /* @__PURE__ */
|
|
5989
|
+
), /* @__PURE__ */ React45.createElement(
|
|
5755
5990
|
DialogActions_default,
|
|
5756
5991
|
{
|
|
5757
5992
|
sx: {
|
|
5758
5993
|
p: 1
|
|
5759
5994
|
}
|
|
5760
5995
|
},
|
|
5761
|
-
/* @__PURE__ */
|
|
5996
|
+
/* @__PURE__ */ React45.createElement(
|
|
5762
5997
|
Button_default,
|
|
5763
5998
|
{
|
|
5764
5999
|
size,
|
|
@@ -5777,16 +6012,16 @@ var MonthRangePicker = forwardRef10((inProps, ref) => {
|
|
|
5777
6012
|
MonthRangePicker.displayName = "MonthRangePicker";
|
|
5778
6013
|
|
|
5779
6014
|
// src/components/NavigationGroup/NavigationGroup.tsx
|
|
5780
|
-
import
|
|
6015
|
+
import React46 from "react";
|
|
5781
6016
|
import {
|
|
5782
6017
|
Accordion as JoyAccordion2,
|
|
5783
6018
|
AccordionSummary as JoyAccordionSummary2,
|
|
5784
6019
|
AccordionDetails as JoyAccordionDetails2,
|
|
5785
|
-
styled as
|
|
6020
|
+
styled as styled24,
|
|
5786
6021
|
accordionSummaryClasses,
|
|
5787
6022
|
Stack as Stack11
|
|
5788
6023
|
} from "@mui/joy";
|
|
5789
|
-
var AccordionSummary2 =
|
|
6024
|
+
var AccordionSummary2 = styled24(JoyAccordionSummary2, {
|
|
5790
6025
|
name: "NavigationGroup",
|
|
5791
6026
|
slot: "Summary",
|
|
5792
6027
|
shouldForwardProp: (prop) => prop !== "useIcon" && prop !== "level"
|
|
@@ -5799,7 +6034,7 @@ var AccordionSummary2 = styled23(JoyAccordionSummary2, {
|
|
|
5799
6034
|
}
|
|
5800
6035
|
}
|
|
5801
6036
|
}));
|
|
5802
|
-
var AccordionDetails2 =
|
|
6037
|
+
var AccordionDetails2 = styled24(JoyAccordionDetails2, {
|
|
5803
6038
|
name: "NavigationGroup",
|
|
5804
6039
|
slot: "Details"
|
|
5805
6040
|
})(({ theme }) => ({
|
|
@@ -5808,19 +6043,19 @@ var AccordionDetails2 = styled23(JoyAccordionDetails2, {
|
|
|
5808
6043
|
}));
|
|
5809
6044
|
function NavigationGroup(props) {
|
|
5810
6045
|
const { title, children, startDecorator, level, ...rest } = props;
|
|
5811
|
-
return /* @__PURE__ */
|
|
6046
|
+
return /* @__PURE__ */ React46.createElement(JoyAccordion2, { ...rest }, /* @__PURE__ */ React46.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ React46.createElement(Stack11, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ React46.createElement(AccordionDetails2, null, children));
|
|
5812
6047
|
}
|
|
5813
6048
|
|
|
5814
6049
|
// src/components/NavigationItem/NavigationItem.tsx
|
|
5815
|
-
import
|
|
6050
|
+
import React47 from "react";
|
|
5816
6051
|
import {
|
|
5817
6052
|
ListItem as JoyListItem,
|
|
5818
6053
|
ListItemButton as JoyListItemButton,
|
|
5819
6054
|
ListItemDecorator as JoyListItemDecorator,
|
|
5820
|
-
styled as
|
|
6055
|
+
styled as styled25,
|
|
5821
6056
|
listItemButtonClasses
|
|
5822
6057
|
} from "@mui/joy";
|
|
5823
|
-
var ListItemButton =
|
|
6058
|
+
var ListItemButton = styled25(JoyListItemButton, {
|
|
5824
6059
|
name: "NavigationItem",
|
|
5825
6060
|
slot: "Button",
|
|
5826
6061
|
shouldForwardProp: (prop) => prop !== "useIcon" && prop !== "level"
|
|
@@ -5847,7 +6082,7 @@ function NavigationItem(props) {
|
|
|
5847
6082
|
const handleClick = () => {
|
|
5848
6083
|
onClick?.(id);
|
|
5849
6084
|
};
|
|
5850
|
-
return /* @__PURE__ */
|
|
6085
|
+
return /* @__PURE__ */ React47.createElement(JoyListItem, { ...rest }, /* @__PURE__ */ React47.createElement(
|
|
5851
6086
|
ListItemButton,
|
|
5852
6087
|
{
|
|
5853
6088
|
level,
|
|
@@ -5856,21 +6091,21 @@ function NavigationItem(props) {
|
|
|
5856
6091
|
"aria-current": selected,
|
|
5857
6092
|
onClick: handleClick
|
|
5858
6093
|
},
|
|
5859
|
-
startDecorator && /* @__PURE__ */
|
|
6094
|
+
startDecorator && /* @__PURE__ */ React47.createElement(JoyListItemDecorator, null, startDecorator),
|
|
5860
6095
|
children
|
|
5861
6096
|
));
|
|
5862
6097
|
}
|
|
5863
6098
|
|
|
5864
6099
|
// src/components/Navigator/Navigator.tsx
|
|
5865
|
-
import
|
|
6100
|
+
import React48 from "react";
|
|
5866
6101
|
function Navigator(props) {
|
|
5867
6102
|
const { items, level = 0, onSelect } = props;
|
|
5868
6103
|
const handleItemClick = (id) => {
|
|
5869
6104
|
onSelect?.(id);
|
|
5870
6105
|
};
|
|
5871
|
-
return /* @__PURE__ */
|
|
6106
|
+
return /* @__PURE__ */ React48.createElement("div", null, items.map((item, index) => {
|
|
5872
6107
|
if (item.type === "item") {
|
|
5873
|
-
return /* @__PURE__ */
|
|
6108
|
+
return /* @__PURE__ */ React48.createElement(
|
|
5874
6109
|
NavigationItem,
|
|
5875
6110
|
{
|
|
5876
6111
|
key: item.id,
|
|
@@ -5883,7 +6118,7 @@ function Navigator(props) {
|
|
|
5883
6118
|
item.title
|
|
5884
6119
|
);
|
|
5885
6120
|
} else if (item.type === "group") {
|
|
5886
|
-
return /* @__PURE__ */
|
|
6121
|
+
return /* @__PURE__ */ React48.createElement(
|
|
5887
6122
|
NavigationGroup,
|
|
5888
6123
|
{
|
|
5889
6124
|
key: `${item.title}-${index}`,
|
|
@@ -5901,22 +6136,22 @@ function Navigator(props) {
|
|
|
5901
6136
|
Navigator.displayName = "Navigator";
|
|
5902
6137
|
|
|
5903
6138
|
// src/components/ProfileMenu/ProfileMenu.tsx
|
|
5904
|
-
import
|
|
5905
|
-
import { Dropdown as Dropdown2, ListDivider, menuItemClasses, styled as
|
|
6139
|
+
import React49, { useCallback as useCallback25, useMemo as useMemo16 } from "react";
|
|
6140
|
+
import { Dropdown as Dropdown2, ListDivider, menuItemClasses, styled as styled26, MenuButton as MenuButton2 } from "@mui/joy";
|
|
5906
6141
|
import { ClickAwayListener as ClickAwayListener5 } from "@mui/base";
|
|
5907
6142
|
import DropdownIcon from "@mui/icons-material/ArrowDropDown";
|
|
5908
|
-
var StyledProfileCard =
|
|
6143
|
+
var StyledProfileCard = styled26(Stack, {
|
|
5909
6144
|
name: "ProfileMenu",
|
|
5910
6145
|
slot: "item"
|
|
5911
6146
|
})({});
|
|
5912
6147
|
function ProfileCard(props) {
|
|
5913
6148
|
const { children, chip, caption, size } = props;
|
|
5914
|
-
const captionLevel =
|
|
5915
|
-
const nameLevel =
|
|
5916
|
-
return /* @__PURE__ */
|
|
6149
|
+
const captionLevel = useMemo16(() => size === "sm" ? "body-xs" : "body-sm", [size]);
|
|
6150
|
+
const nameLevel = useMemo16(() => size === "sm" ? "body-sm" : "body-md", [size]);
|
|
6151
|
+
return /* @__PURE__ */ React49.createElement(StyledProfileCard, { px: 4, py: 2 }, /* @__PURE__ */ React49.createElement(Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ React49.createElement(Typography, { level: nameLevel, fontWeight: "bold", textColor: "text.primary" }, children), chip && /* @__PURE__ */ React49.createElement(Chip, { size, color: "neutral", variant: "outlined" }, chip)), caption && /* @__PURE__ */ React49.createElement(Typography, { level: captionLevel, textColor: "text.tertiary" }, caption));
|
|
5917
6152
|
}
|
|
5918
6153
|
ProfileCard.displayName = "ProfileCard";
|
|
5919
|
-
var StyledProfileMenuButton =
|
|
6154
|
+
var StyledProfileMenuButton = styled26(MenuButton2, {
|
|
5920
6155
|
name: "ProfileMenu",
|
|
5921
6156
|
slot: "button"
|
|
5922
6157
|
})(({ theme }) => ({
|
|
@@ -5925,20 +6160,20 @@ var StyledProfileMenuButton = styled25(MenuButton2, {
|
|
|
5925
6160
|
}));
|
|
5926
6161
|
function ProfileMenuButton(props) {
|
|
5927
6162
|
const { size = "md", src, alt, children, getInitial, ...innerProps } = props;
|
|
5928
|
-
return /* @__PURE__ */
|
|
6163
|
+
return /* @__PURE__ */ React49.createElement(
|
|
5929
6164
|
StyledProfileMenuButton,
|
|
5930
6165
|
{
|
|
5931
6166
|
variant: "plain",
|
|
5932
6167
|
color: "neutral",
|
|
5933
6168
|
size,
|
|
5934
|
-
endDecorator: /* @__PURE__ */
|
|
6169
|
+
endDecorator: /* @__PURE__ */ React49.createElement(DropdownIcon, null),
|
|
5935
6170
|
...innerProps
|
|
5936
6171
|
},
|
|
5937
|
-
/* @__PURE__ */
|
|
6172
|
+
/* @__PURE__ */ React49.createElement(Avatar, { variant: "soft", color: "primary", size, src, alt, getInitial }, children)
|
|
5938
6173
|
);
|
|
5939
6174
|
}
|
|
5940
6175
|
ProfileMenuButton.displayName = "ProfileMenuButton";
|
|
5941
|
-
var ProfileMenuRoot =
|
|
6176
|
+
var ProfileMenuRoot = styled26(Menu, {
|
|
5942
6177
|
name: "ProfileMenu",
|
|
5943
6178
|
slot: "root"
|
|
5944
6179
|
})(({ theme }) => ({
|
|
@@ -5953,9 +6188,9 @@ function ProfileMenu(props) {
|
|
|
5953
6188
|
const [open, setOpen] = useControlledState(
|
|
5954
6189
|
_open,
|
|
5955
6190
|
defaultOpen ?? false,
|
|
5956
|
-
|
|
6191
|
+
useCallback25((value) => onOpenChange?.(value), [onOpenChange])
|
|
5957
6192
|
);
|
|
5958
|
-
return /* @__PURE__ */
|
|
6193
|
+
return /* @__PURE__ */ React49.createElement(ClickAwayListener5, { onClickAway: () => setOpen(false) }, /* @__PURE__ */ React49.createElement("div", null, /* @__PURE__ */ React49.createElement(Dropdown2, { open }, /* @__PURE__ */ React49.createElement(
|
|
5959
6194
|
ProfileMenuButton,
|
|
5960
6195
|
{
|
|
5961
6196
|
size,
|
|
@@ -5965,7 +6200,7 @@ function ProfileMenu(props) {
|
|
|
5965
6200
|
getInitial
|
|
5966
6201
|
},
|
|
5967
6202
|
profile.name
|
|
5968
|
-
), /* @__PURE__ */
|
|
6203
|
+
), /* @__PURE__ */ React49.createElement(ProfileMenuRoot, { size, placement: "bottom-end", ...innerProps, onClose: () => setOpen(false) }, /* @__PURE__ */ React49.createElement(ProfileCard, { size, caption: profile.caption, chip: profile.chip }, profile.name), !!menuItems.length && /* @__PURE__ */ React49.createElement(ListDivider, null), menuItems.map(({ label, ...menuProps }) => /* @__PURE__ */ React49.createElement(
|
|
5969
6204
|
MenuItem,
|
|
5970
6205
|
{
|
|
5971
6206
|
key: label,
|
|
@@ -5981,30 +6216,30 @@ function ProfileMenu(props) {
|
|
|
5981
6216
|
ProfileMenu.displayName = "ProfileMenu";
|
|
5982
6217
|
|
|
5983
6218
|
// src/components/RadioList/RadioList.tsx
|
|
5984
|
-
import
|
|
6219
|
+
import React50 from "react";
|
|
5985
6220
|
function RadioList(props) {
|
|
5986
6221
|
const { items, ...innerProps } = props;
|
|
5987
|
-
return /* @__PURE__ */
|
|
6222
|
+
return /* @__PURE__ */ React50.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ React50.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
|
|
5988
6223
|
}
|
|
5989
6224
|
RadioList.displayName = "RadioList";
|
|
5990
6225
|
|
|
5991
6226
|
// src/components/Stepper/Stepper.tsx
|
|
5992
|
-
import
|
|
6227
|
+
import React51 from "react";
|
|
5993
6228
|
import {
|
|
5994
6229
|
Stepper as JoyStepper,
|
|
5995
6230
|
Step as JoyStep,
|
|
5996
6231
|
StepIndicator as JoyStepIndicator,
|
|
5997
6232
|
stepClasses,
|
|
5998
6233
|
stepIndicatorClasses,
|
|
5999
|
-
styled as
|
|
6234
|
+
styled as styled27
|
|
6000
6235
|
} from "@mui/joy";
|
|
6001
6236
|
import CheckIcon from "@mui/icons-material/Check";
|
|
6002
6237
|
import { motion as motion27 } from "framer-motion";
|
|
6003
|
-
var Step =
|
|
6238
|
+
var Step = styled27(JoyStep)({});
|
|
6004
6239
|
Step.displayName = "Step";
|
|
6005
|
-
var StepIndicator =
|
|
6240
|
+
var StepIndicator = styled27(JoyStepIndicator)({});
|
|
6006
6241
|
StepIndicator.displayName = "StepIndicator";
|
|
6007
|
-
var StyledStepper =
|
|
6242
|
+
var StyledStepper = styled27(JoyStepper)(({ theme }) => ({
|
|
6008
6243
|
"--StepIndicator-size": "24px",
|
|
6009
6244
|
"--Step-gap": theme.spacing(2),
|
|
6010
6245
|
"--joy-palette-success-solidBg": "var(--joy-palette-success-400)",
|
|
@@ -6022,7 +6257,7 @@ function Stepper(props) {
|
|
|
6022
6257
|
inactiveLineColor = "neutral.300",
|
|
6023
6258
|
activeStep
|
|
6024
6259
|
} = props;
|
|
6025
|
-
return /* @__PURE__ */
|
|
6260
|
+
return /* @__PURE__ */ React51.createElement(
|
|
6026
6261
|
MotionStepper,
|
|
6027
6262
|
{
|
|
6028
6263
|
sx: (theme) => ({
|
|
@@ -6056,16 +6291,16 @@ function Stepper(props) {
|
|
|
6056
6291
|
const completed = activeStep > i + 1;
|
|
6057
6292
|
const disabled = activeStep < i + 1;
|
|
6058
6293
|
const hasContent = step.label || step.extraContent;
|
|
6059
|
-
return /* @__PURE__ */
|
|
6294
|
+
return /* @__PURE__ */ React51.createElement(
|
|
6060
6295
|
Step,
|
|
6061
6296
|
{
|
|
6062
6297
|
key: `step-${i}`,
|
|
6063
|
-
indicator: /* @__PURE__ */
|
|
6298
|
+
indicator: /* @__PURE__ */ React51.createElement(StepIndicator, { variant: "solid", color: "primary" }, completed ? /* @__PURE__ */ React51.createElement(CheckIcon, null) : step.indicatorContent),
|
|
6064
6299
|
active,
|
|
6065
6300
|
completed,
|
|
6066
6301
|
disabled
|
|
6067
6302
|
},
|
|
6068
|
-
hasContent && /* @__PURE__ */
|
|
6303
|
+
hasContent && /* @__PURE__ */ React51.createElement(Stack_default, null, step.label && /* @__PURE__ */ React51.createElement(Typography_default, { level: "title-sm" }, step.label), step.extraContent && /* @__PURE__ */ React51.createElement(Typography_default, { level: "body-xs" }, step.extraContent))
|
|
6069
6304
|
);
|
|
6070
6305
|
})
|
|
6071
6306
|
);
|
|
@@ -6073,11 +6308,11 @@ function Stepper(props) {
|
|
|
6073
6308
|
Stepper.displayName = "Stepper";
|
|
6074
6309
|
|
|
6075
6310
|
// src/components/Switch/Switch.tsx
|
|
6076
|
-
import
|
|
6077
|
-
import { Switch as JoySwitch, styled as
|
|
6311
|
+
import React52 from "react";
|
|
6312
|
+
import { Switch as JoySwitch, styled as styled28, switchClasses } from "@mui/joy";
|
|
6078
6313
|
import { motion as motion28 } from "framer-motion";
|
|
6079
6314
|
var MotionSwitch = motion28(JoySwitch);
|
|
6080
|
-
var StyledThumb =
|
|
6315
|
+
var StyledThumb = styled28(motion28.div)({
|
|
6081
6316
|
"--Icon-fontSize": "calc(var(--Switch-thumbSize) * 0.75)",
|
|
6082
6317
|
display: "inline-flex",
|
|
6083
6318
|
justifyContent: "center",
|
|
@@ -6095,14 +6330,14 @@ var StyledThumb = styled27(motion28.div)({
|
|
|
6095
6330
|
right: "var(--Switch-thumbOffset)"
|
|
6096
6331
|
}
|
|
6097
6332
|
});
|
|
6098
|
-
var Thumb = (props) => /* @__PURE__ */
|
|
6333
|
+
var Thumb = (props) => /* @__PURE__ */ React52.createElement(StyledThumb, { ...props, layout: true, transition: spring });
|
|
6099
6334
|
var spring = {
|
|
6100
6335
|
type: "spring",
|
|
6101
6336
|
stiffness: 700,
|
|
6102
6337
|
damping: 30
|
|
6103
6338
|
};
|
|
6104
6339
|
var Switch = (props) => {
|
|
6105
|
-
return /* @__PURE__ */
|
|
6340
|
+
return /* @__PURE__ */ React52.createElement(
|
|
6106
6341
|
MotionSwitch,
|
|
6107
6342
|
{
|
|
6108
6343
|
...props,
|
|
@@ -6116,21 +6351,21 @@ var Switch = (props) => {
|
|
|
6116
6351
|
Switch.displayName = "Switch";
|
|
6117
6352
|
|
|
6118
6353
|
// src/components/Tabs/Tabs.tsx
|
|
6119
|
-
import
|
|
6354
|
+
import React53, { forwardRef as forwardRef11 } from "react";
|
|
6120
6355
|
import {
|
|
6121
6356
|
Tabs as JoyTabs,
|
|
6122
6357
|
Tab as JoyTab,
|
|
6123
6358
|
TabList as JoyTabList,
|
|
6124
6359
|
TabPanel as JoyTabPanel,
|
|
6125
|
-
styled as
|
|
6360
|
+
styled as styled29,
|
|
6126
6361
|
tabClasses
|
|
6127
6362
|
} from "@mui/joy";
|
|
6128
|
-
var StyledTabs =
|
|
6363
|
+
var StyledTabs = styled29(JoyTabs)(({ theme }) => ({
|
|
6129
6364
|
backgroundColor: theme.palette.background.body
|
|
6130
6365
|
}));
|
|
6131
6366
|
var Tabs = StyledTabs;
|
|
6132
6367
|
Tabs.displayName = "Tabs";
|
|
6133
|
-
var StyledTab =
|
|
6368
|
+
var StyledTab = styled29(JoyTab)(({ theme }) => ({
|
|
6134
6369
|
gap: theme.spacing(2),
|
|
6135
6370
|
[`&:not(.${tabClasses.selected})`]: {
|
|
6136
6371
|
color: theme.palette.neutral[700]
|
|
@@ -6140,14 +6375,14 @@ var StyledTab = styled28(JoyTab)(({ theme }) => ({
|
|
|
6140
6375
|
}
|
|
6141
6376
|
}));
|
|
6142
6377
|
var Tab = forwardRef11(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
|
|
6143
|
-
return /* @__PURE__ */
|
|
6378
|
+
return /* @__PURE__ */ React53.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
|
|
6144
6379
|
});
|
|
6145
6380
|
Tab.displayName = "Tab";
|
|
6146
6381
|
var TabList = JoyTabList;
|
|
6147
6382
|
var TabPanel = JoyTabPanel;
|
|
6148
6383
|
|
|
6149
6384
|
// src/components/ThemeProvider/ThemeProvider.tsx
|
|
6150
|
-
import
|
|
6385
|
+
import React54 from "react";
|
|
6151
6386
|
import { CssBaseline, CssVarsProvider, checkboxClasses, extendTheme, inputClasses } from "@mui/joy";
|
|
6152
6387
|
var colorScheme = {
|
|
6153
6388
|
palette: {
|
|
@@ -6426,7 +6661,7 @@ var defaultTheme = extendTheme({
|
|
|
6426
6661
|
});
|
|
6427
6662
|
function ThemeProvider(props) {
|
|
6428
6663
|
const theme = props.theme || defaultTheme;
|
|
6429
|
-
return /* @__PURE__ */
|
|
6664
|
+
return /* @__PURE__ */ React54.createElement(React54.Fragment, null, /* @__PURE__ */ React54.createElement(CssVarsProvider, { theme }, /* @__PURE__ */ React54.createElement(CssBaseline, null), props.children));
|
|
6430
6665
|
}
|
|
6431
6666
|
ThemeProvider.displayName = "ThemeProvider";
|
|
6432
6667
|
export {
|
|
@@ -6592,7 +6827,7 @@ export {
|
|
|
6592
6827
|
stepButtonClasses,
|
|
6593
6828
|
stepClasses2 as stepClasses,
|
|
6594
6829
|
stepperClasses,
|
|
6595
|
-
|
|
6830
|
+
styled30 as styled,
|
|
6596
6831
|
switchClasses2 as switchClasses,
|
|
6597
6832
|
tabListClasses,
|
|
6598
6833
|
tabPanelClasses,
|