@ceed/cds 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 +1120 -890
- package/dist/index.js +956 -721
- package/framer/index.js +39 -39
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -85,26 +85,26 @@ __export(index_exports, {
|
|
|
85
85
|
AccordionSummary: () => AccordionSummary,
|
|
86
86
|
Accordions: () => Accordions,
|
|
87
87
|
Alert: () => Alert,
|
|
88
|
-
AspectRatio: () =>
|
|
88
|
+
AspectRatio: () => import_joy60.AspectRatio,
|
|
89
89
|
Autocomplete: () => Autocomplete,
|
|
90
|
-
AutocompleteListbox: () =>
|
|
91
|
-
AutocompleteOption: () =>
|
|
90
|
+
AutocompleteListbox: () => import_joy60.AutocompleteListbox,
|
|
91
|
+
AutocompleteOption: () => import_joy60.AutocompleteOption,
|
|
92
92
|
Avatar: () => Avatar,
|
|
93
93
|
AvatarGroup: () => import_joy11.AvatarGroup,
|
|
94
|
-
Badge: () =>
|
|
94
|
+
Badge: () => import_joy60.Badge,
|
|
95
95
|
Box: () => Box,
|
|
96
96
|
Breadcrumbs: () => Breadcrumbs,
|
|
97
97
|
Button: () => Button,
|
|
98
|
-
ButtonGroup: () =>
|
|
98
|
+
ButtonGroup: () => import_joy60.ButtonGroup,
|
|
99
99
|
Calendar: () => Calendar,
|
|
100
|
-
Card: () =>
|
|
101
|
-
CardActions: () =>
|
|
102
|
-
CardContent: () =>
|
|
103
|
-
CardCover: () =>
|
|
104
|
-
CardOverflow: () =>
|
|
100
|
+
Card: () => import_joy60.Card,
|
|
101
|
+
CardActions: () => import_joy60.CardActions,
|
|
102
|
+
CardContent: () => import_joy60.CardContent,
|
|
103
|
+
CardCover: () => import_joy60.CardCover,
|
|
104
|
+
CardOverflow: () => import_joy60.CardOverflow,
|
|
105
105
|
Checkbox: () => Checkbox,
|
|
106
|
-
Chip: () =>
|
|
107
|
-
CircularProgress: () =>
|
|
106
|
+
Chip: () => import_joy60.Chip,
|
|
107
|
+
CircularProgress: () => import_joy60.CircularProgress,
|
|
108
108
|
Container: () => Container,
|
|
109
109
|
CurrencyInput: () => CurrencyInput,
|
|
110
110
|
DataTable: () => DataTable,
|
|
@@ -120,21 +120,21 @@ __export(index_exports, {
|
|
|
120
120
|
FormControl: () => FormControl,
|
|
121
121
|
FormHelperText: () => FormHelperText,
|
|
122
122
|
FormLabel: () => FormLabel,
|
|
123
|
-
Grid: () =>
|
|
123
|
+
Grid: () => import_joy44.Grid,
|
|
124
124
|
IconButton: () => IconButton,
|
|
125
125
|
IconMenuButton: () => IconMenuButton,
|
|
126
126
|
InfoSign: () => InfoSign,
|
|
127
127
|
Input: () => Input,
|
|
128
128
|
InsetDrawer: () => InsetDrawer,
|
|
129
|
-
LinearProgress: () =>
|
|
130
|
-
Link: () =>
|
|
131
|
-
List: () =>
|
|
132
|
-
ListDivider: () =>
|
|
133
|
-
ListItem: () =>
|
|
134
|
-
ListItemButton: () =>
|
|
135
|
-
ListItemContent: () =>
|
|
136
|
-
ListItemDecorator: () =>
|
|
137
|
-
ListSubheader: () =>
|
|
129
|
+
LinearProgress: () => import_joy60.LinearProgress,
|
|
130
|
+
Link: () => import_joy60.Link,
|
|
131
|
+
List: () => import_joy60.List,
|
|
132
|
+
ListDivider: () => import_joy60.ListDivider,
|
|
133
|
+
ListItem: () => import_joy60.ListItem,
|
|
134
|
+
ListItemButton: () => import_joy60.ListItemButton,
|
|
135
|
+
ListItemContent: () => import_joy60.ListItemContent,
|
|
136
|
+
ListItemDecorator: () => import_joy60.ListItemDecorator,
|
|
137
|
+
ListSubheader: () => import_joy60.ListSubheader,
|
|
138
138
|
Markdown: () => Markdown,
|
|
139
139
|
Menu: () => Menu,
|
|
140
140
|
MenuButton: () => MenuButton,
|
|
@@ -157,11 +157,11 @@ __export(index_exports, {
|
|
|
157
157
|
RadioList: () => RadioList,
|
|
158
158
|
Select: () => Select,
|
|
159
159
|
Sheet: () => Sheet,
|
|
160
|
-
Skeleton: () =>
|
|
161
|
-
Slider: () =>
|
|
160
|
+
Skeleton: () => import_joy60.Skeleton,
|
|
161
|
+
Slider: () => import_joy60.Slider,
|
|
162
162
|
Stack: () => import_joy3.Stack,
|
|
163
163
|
Step: () => Step,
|
|
164
|
-
StepButton: () =>
|
|
164
|
+
StepButton: () => import_joy60.StepButton,
|
|
165
165
|
StepIndicator: () => StepIndicator,
|
|
166
166
|
Stepper: () => Stepper,
|
|
167
167
|
Switch: () => Switch,
|
|
@@ -177,84 +177,84 @@ __export(index_exports, {
|
|
|
177
177
|
Tooltip: () => Tooltip,
|
|
178
178
|
Typography: () => Typography,
|
|
179
179
|
Uploader: () => Uploader,
|
|
180
|
-
accordionClasses: () =>
|
|
181
|
-
accordionDetailsClasses: () =>
|
|
182
|
-
accordionSummaryClasses: () =>
|
|
183
|
-
accordionsClasses: () =>
|
|
184
|
-
alertClasses: () =>
|
|
185
|
-
aspectRatioClasses: () =>
|
|
186
|
-
autocompleteClasses: () =>
|
|
187
|
-
autocompleteListboxClasses: () =>
|
|
188
|
-
autocompleteOptionClasses: () =>
|
|
189
|
-
avatarClasses: () =>
|
|
190
|
-
avatarGroupClasses: () =>
|
|
191
|
-
badgeClasses: () =>
|
|
192
|
-
boxClasses: () =>
|
|
193
|
-
breadcrumbsClasses: () =>
|
|
194
|
-
buttonClasses: () =>
|
|
195
|
-
cardActionsClasses: () =>
|
|
196
|
-
cardClasses: () =>
|
|
197
|
-
cardContentClasses: () =>
|
|
198
|
-
cardCoverClasses: () =>
|
|
199
|
-
cardOverflowClasses: () =>
|
|
200
|
-
checkboxClasses: () =>
|
|
201
|
-
chipClasses: () =>
|
|
202
|
-
circularProgressClasses: () =>
|
|
203
|
-
dialogActionsClasses: () =>
|
|
204
|
-
dialogContentClasses: () =>
|
|
205
|
-
dialogTitleClasses: () =>
|
|
206
|
-
dividerClasses: () =>
|
|
207
|
-
drawerClasses: () =>
|
|
208
|
-
extendTheme: () =>
|
|
209
|
-
formControlClasses: () =>
|
|
210
|
-
formHelperTextClasses: () =>
|
|
211
|
-
formLabelClasses: () =>
|
|
212
|
-
gridClasses: () =>
|
|
213
|
-
iconButtonClasses: () =>
|
|
214
|
-
inputClasses: () =>
|
|
215
|
-
linearProgressClasses: () =>
|
|
216
|
-
linkClasses: () =>
|
|
217
|
-
listClasses: () =>
|
|
218
|
-
listDividerClasses: () =>
|
|
219
|
-
listItemButtonClasses: () =>
|
|
220
|
-
listItemClasses: () =>
|
|
221
|
-
listItemContentClasses: () =>
|
|
222
|
-
listItemDecoratorClasses: () =>
|
|
223
|
-
listSubheaderClasses: () =>
|
|
224
|
-
menuButtonClasses: () =>
|
|
225
|
-
menuClasses: () =>
|
|
226
|
-
menuItemClasses: () =>
|
|
227
|
-
modalClasses: () =>
|
|
228
|
-
modalCloseClasses: () =>
|
|
229
|
-
modalDialogClasses: () =>
|
|
230
|
-
modalOverflowClasses: () =>
|
|
231
|
-
optionClasses: () =>
|
|
232
|
-
radioClasses: () =>
|
|
233
|
-
radioGroupClasses: () =>
|
|
234
|
-
selectClasses: () =>
|
|
235
|
-
sheetClasses: () =>
|
|
236
|
-
skeletonClasses: () =>
|
|
237
|
-
sliderClasses: () =>
|
|
238
|
-
stackClasses: () =>
|
|
239
|
-
stepButtonClasses: () =>
|
|
240
|
-
stepClasses: () =>
|
|
241
|
-
stepperClasses: () =>
|
|
242
|
-
styled: () =>
|
|
243
|
-
switchClasses: () =>
|
|
244
|
-
tabListClasses: () =>
|
|
245
|
-
tabPanelClasses: () =>
|
|
246
|
-
tableClasses: () =>
|
|
247
|
-
tabsClasses: () =>
|
|
248
|
-
textareaClasses: () =>
|
|
180
|
+
accordionClasses: () => import_joy60.accordionClasses,
|
|
181
|
+
accordionDetailsClasses: () => import_joy60.accordionDetailsClasses,
|
|
182
|
+
accordionSummaryClasses: () => import_joy60.accordionSummaryClasses,
|
|
183
|
+
accordionsClasses: () => import_joy60.accordionGroupClasses,
|
|
184
|
+
alertClasses: () => import_joy60.alertClasses,
|
|
185
|
+
aspectRatioClasses: () => import_joy60.aspectRatioClasses,
|
|
186
|
+
autocompleteClasses: () => import_joy60.autocompleteClasses,
|
|
187
|
+
autocompleteListboxClasses: () => import_joy60.autocompleteListboxClasses,
|
|
188
|
+
autocompleteOptionClasses: () => import_joy60.autocompleteOptionClasses,
|
|
189
|
+
avatarClasses: () => import_joy60.avatarClasses,
|
|
190
|
+
avatarGroupClasses: () => import_joy60.avatarGroupClasses,
|
|
191
|
+
badgeClasses: () => import_joy60.badgeClasses,
|
|
192
|
+
boxClasses: () => import_joy60.boxClasses,
|
|
193
|
+
breadcrumbsClasses: () => import_joy60.breadcrumbsClasses,
|
|
194
|
+
buttonClasses: () => import_joy60.buttonClasses,
|
|
195
|
+
cardActionsClasses: () => import_joy60.cardActionsClasses,
|
|
196
|
+
cardClasses: () => import_joy60.cardClasses,
|
|
197
|
+
cardContentClasses: () => import_joy60.cardContentClasses,
|
|
198
|
+
cardCoverClasses: () => import_joy60.cardCoverClasses,
|
|
199
|
+
cardOverflowClasses: () => import_joy60.cardOverflowClasses,
|
|
200
|
+
checkboxClasses: () => import_joy60.checkboxClasses,
|
|
201
|
+
chipClasses: () => import_joy60.chipClasses,
|
|
202
|
+
circularProgressClasses: () => import_joy60.circularProgressClasses,
|
|
203
|
+
dialogActionsClasses: () => import_joy60.dialogActionsClasses,
|
|
204
|
+
dialogContentClasses: () => import_joy60.dialogContentClasses,
|
|
205
|
+
dialogTitleClasses: () => import_joy60.dialogTitleClasses,
|
|
206
|
+
dividerClasses: () => import_joy60.dividerClasses,
|
|
207
|
+
drawerClasses: () => import_joy60.drawerClasses,
|
|
208
|
+
extendTheme: () => import_joy58.extendTheme,
|
|
209
|
+
formControlClasses: () => import_joy60.formControlClasses,
|
|
210
|
+
formHelperTextClasses: () => import_joy60.formHelperTextClasses,
|
|
211
|
+
formLabelClasses: () => import_joy60.formLabelClasses,
|
|
212
|
+
gridClasses: () => import_joy60.gridClasses,
|
|
213
|
+
iconButtonClasses: () => import_joy60.iconButtonClasses,
|
|
214
|
+
inputClasses: () => import_joy60.inputClasses,
|
|
215
|
+
linearProgressClasses: () => import_joy60.linearProgressClasses,
|
|
216
|
+
linkClasses: () => import_joy60.linkClasses,
|
|
217
|
+
listClasses: () => import_joy60.listClasses,
|
|
218
|
+
listDividerClasses: () => import_joy60.listDividerClasses,
|
|
219
|
+
listItemButtonClasses: () => import_joy60.listItemButtonClasses,
|
|
220
|
+
listItemClasses: () => import_joy60.listItemClasses,
|
|
221
|
+
listItemContentClasses: () => import_joy60.listItemContentClasses,
|
|
222
|
+
listItemDecoratorClasses: () => import_joy60.listItemDecoratorClasses,
|
|
223
|
+
listSubheaderClasses: () => import_joy60.listSubheaderClasses,
|
|
224
|
+
menuButtonClasses: () => import_joy60.menuButtonClasses,
|
|
225
|
+
menuClasses: () => import_joy60.menuClasses,
|
|
226
|
+
menuItemClasses: () => import_joy60.menuItemClasses,
|
|
227
|
+
modalClasses: () => import_joy60.modalClasses,
|
|
228
|
+
modalCloseClasses: () => import_joy60.modalCloseClasses,
|
|
229
|
+
modalDialogClasses: () => import_joy60.modalDialogClasses,
|
|
230
|
+
modalOverflowClasses: () => import_joy60.modalOverflowClasses,
|
|
231
|
+
optionClasses: () => import_joy60.optionClasses,
|
|
232
|
+
radioClasses: () => import_joy60.radioClasses,
|
|
233
|
+
radioGroupClasses: () => import_joy60.radioGroupClasses,
|
|
234
|
+
selectClasses: () => import_joy60.selectClasses,
|
|
235
|
+
sheetClasses: () => import_joy60.sheetClasses,
|
|
236
|
+
skeletonClasses: () => import_joy60.skeletonClasses,
|
|
237
|
+
sliderClasses: () => import_joy60.sliderClasses,
|
|
238
|
+
stackClasses: () => import_joy60.stackClasses,
|
|
239
|
+
stepButtonClasses: () => import_joy60.stepButtonClasses,
|
|
240
|
+
stepClasses: () => import_joy60.stepClasses,
|
|
241
|
+
stepperClasses: () => import_joy60.stepperClasses,
|
|
242
|
+
styled: () => import_joy60.styled,
|
|
243
|
+
switchClasses: () => import_joy60.switchClasses,
|
|
244
|
+
tabListClasses: () => import_joy60.tabListClasses,
|
|
245
|
+
tabPanelClasses: () => import_joy60.tabPanelClasses,
|
|
246
|
+
tableClasses: () => import_joy60.tableClasses,
|
|
247
|
+
tabsClasses: () => import_joy60.tabsClasses,
|
|
248
|
+
textareaClasses: () => import_joy60.textareaClasses,
|
|
249
249
|
theme: () => defaultTheme,
|
|
250
|
-
tooltipClasses: () =>
|
|
251
|
-
typographyClasses: () =>
|
|
252
|
-
useColorScheme: () =>
|
|
253
|
-
useTheme: () =>
|
|
254
|
-
useThemeProps: () =>
|
|
250
|
+
tooltipClasses: () => import_joy60.tooltipClasses,
|
|
251
|
+
typographyClasses: () => import_joy60.typographyClasses,
|
|
252
|
+
useColorScheme: () => import_joy60.useColorScheme,
|
|
253
|
+
useTheme: () => import_joy60.useTheme,
|
|
254
|
+
useThemeProps: () => import_joy60.useThemeProps
|
|
255
255
|
});
|
|
256
256
|
module.exports = __toCommonJS(index_exports);
|
|
257
|
-
var
|
|
257
|
+
var import_joy60 = require("@mui/joy");
|
|
258
258
|
|
|
259
259
|
// src/components/Accordions/Accordions.tsx
|
|
260
260
|
var import_react = __toESM(require("react"));
|
|
@@ -1924,91 +1924,261 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
|
|
|
1924
1924
|
var CurrencyInput_default = CurrencyInput;
|
|
1925
1925
|
|
|
1926
1926
|
// src/components/DataTable/DataTable.tsx
|
|
1927
|
-
var
|
|
1927
|
+
var import_react28 = __toESM(require("react"));
|
|
1928
1928
|
var import_react_virtual2 = require("@tanstack/react-virtual");
|
|
1929
|
-
var import_joy33 = require("@mui/joy");
|
|
1930
|
-
var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
|
|
1931
|
-
|
|
1932
|
-
// src/components/Sheet/Sheet.tsx
|
|
1933
|
-
var import_joy24 = require("@mui/joy");
|
|
1934
|
-
var import_framer_motion16 = require("framer-motion");
|
|
1935
|
-
var MotionSheet = (0, import_framer_motion16.motion)(import_joy24.Sheet);
|
|
1936
|
-
var Sheet = MotionSheet;
|
|
1937
|
-
Sheet.displayName = "Sheet";
|
|
1938
|
-
|
|
1939
|
-
// src/components/Sheet/index.ts
|
|
1940
|
-
var Sheet_default = Sheet;
|
|
1941
1929
|
|
|
1942
|
-
// src/components/
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
1956
|
-
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
1957
|
-
} = props;
|
|
1958
|
-
return /* @__PURE__ */ import_react18.default.createElement("thead", null, /* @__PURE__ */ import_react18.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react18.default.createElement(
|
|
1959
|
-
"th",
|
|
1960
|
-
{
|
|
1961
|
-
style: {
|
|
1962
|
-
width: "40px",
|
|
1963
|
-
textAlign: "center"
|
|
1964
|
-
}
|
|
1965
|
-
},
|
|
1966
|
-
/* @__PURE__ */ import_react18.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
|
|
1967
|
-
), headCells.map((headCell) => /* @__PURE__ */ import_react18.default.createElement(
|
|
1968
|
-
"th",
|
|
1969
|
-
{
|
|
1970
|
-
key: headCell.label,
|
|
1971
|
-
style: {
|
|
1972
|
-
width: headCell.width,
|
|
1973
|
-
minWidth: headCell.minWidth,
|
|
1974
|
-
maxWidth: headCell.maxWidth,
|
|
1975
|
-
textAlign: headCell.numeric ? "right" : "left"
|
|
1976
|
-
}
|
|
1977
|
-
},
|
|
1978
|
-
headCell.label
|
|
1979
|
-
))));
|
|
1930
|
+
// src/components/DataTable/utils.ts
|
|
1931
|
+
function extractFieldsFromGroupingModel(items) {
|
|
1932
|
+
const fields = /* @__PURE__ */ new Set();
|
|
1933
|
+
for (const item of items) {
|
|
1934
|
+
if ("groupId" in item) {
|
|
1935
|
+
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
1936
|
+
const childFields = extractFieldsFromGroupingModel(children);
|
|
1937
|
+
childFields.forEach((field) => fields.add(field));
|
|
1938
|
+
} else {
|
|
1939
|
+
fields.add(item.field);
|
|
1940
|
+
}
|
|
1941
|
+
}
|
|
1942
|
+
return fields;
|
|
1980
1943
|
}
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
const
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
"td",
|
|
1994
|
-
{
|
|
1995
|
-
style: {
|
|
1996
|
-
textAlign: "center"
|
|
1944
|
+
function reorderColumnsByGroupingModel(columns, columnGroupingModel) {
|
|
1945
|
+
const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
|
|
1946
|
+
const orderedFields = [];
|
|
1947
|
+
function collectFieldsInOrder(items) {
|
|
1948
|
+
for (const item of items) {
|
|
1949
|
+
if ("groupId" in item) {
|
|
1950
|
+
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
1951
|
+
collectFieldsInOrder(children);
|
|
1952
|
+
} else {
|
|
1953
|
+
if (!orderedFields.includes(item.field)) {
|
|
1954
|
+
orderedFields.push(item.field);
|
|
1955
|
+
}
|
|
1997
1956
|
}
|
|
1998
|
-
}
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
1957
|
+
}
|
|
1958
|
+
}
|
|
1959
|
+
collectFieldsInOrder(columnGroupingModel);
|
|
1960
|
+
const columnMap = new Map(columns.map((col) => [col.field, col]));
|
|
1961
|
+
const reorderedColumns = [];
|
|
1962
|
+
for (const field of orderedFields) {
|
|
1963
|
+
const column = columnMap.get(field);
|
|
1964
|
+
if (column) {
|
|
1965
|
+
reorderedColumns.push(column);
|
|
1966
|
+
}
|
|
1967
|
+
}
|
|
1968
|
+
for (const column of columns) {
|
|
1969
|
+
if (!fieldsInGroupingModel.has(column.field)) {
|
|
1970
|
+
reorderedColumns.push(column);
|
|
1971
|
+
}
|
|
1972
|
+
}
|
|
1973
|
+
return reorderedColumns;
|
|
1974
|
+
}
|
|
1975
|
+
function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }) {
|
|
1976
|
+
const result = [];
|
|
1977
|
+
for (const item of items) {
|
|
1978
|
+
if ("groupId" in item) {
|
|
1979
|
+
const newPath = [...groupPath, item.groupId];
|
|
1980
|
+
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
1981
|
+
result.push(...flattenColumnGroups(children, newPath, columnIndex));
|
|
1982
|
+
} else {
|
|
1983
|
+
result.push({
|
|
1984
|
+
...item,
|
|
1985
|
+
groupPath,
|
|
1986
|
+
columnIndex: columnIndex.current++
|
|
1987
|
+
});
|
|
1988
|
+
}
|
|
1989
|
+
}
|
|
1990
|
+
return result;
|
|
1991
|
+
}
|
|
1992
|
+
function calculateColumnGroups(columnGroupingModel, columns) {
|
|
1993
|
+
const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
|
|
1994
|
+
const flattenedColumns = flattenColumnGroups(columnGroupingModel);
|
|
1995
|
+
const columnIndexMap = new Map(flattenedColumns.map((col) => [col.field, col.columnIndex]));
|
|
1996
|
+
const processedGroups = /* @__PURE__ */ new Map();
|
|
1997
|
+
const groupsByLevel = [];
|
|
1998
|
+
let maxLevel = 0;
|
|
1999
|
+
function processGroup(items, level, parentGroupId) {
|
|
2000
|
+
let minIndex = Infinity;
|
|
2001
|
+
let maxIndex = -Infinity;
|
|
2002
|
+
for (const item of items) {
|
|
2003
|
+
if ("groupId" in item) {
|
|
2004
|
+
const groupKey = parentGroupId ? `${parentGroupId}.${item.groupId}` : item.groupId;
|
|
2005
|
+
if (!processedGroups.has(groupKey)) {
|
|
2006
|
+
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
2007
|
+
const { startIndex, colspan } = processGroup(children, level + 1, groupKey);
|
|
2008
|
+
const group = {
|
|
2009
|
+
groupId: item.groupId,
|
|
2010
|
+
headerName: item.headerName,
|
|
2011
|
+
headerClassName: item.headerClassName,
|
|
2012
|
+
colspan,
|
|
2013
|
+
level,
|
|
2014
|
+
startIndex
|
|
2015
|
+
};
|
|
2016
|
+
processedGroups.set(groupKey, group);
|
|
2017
|
+
if (!groupsByLevel[level]) {
|
|
2018
|
+
groupsByLevel[level] = [];
|
|
2019
|
+
}
|
|
2020
|
+
groupsByLevel[level].push(group);
|
|
2021
|
+
maxLevel = Math.max(maxLevel, level);
|
|
2022
|
+
minIndex = Math.min(minIndex, startIndex);
|
|
2023
|
+
maxIndex = Math.max(maxIndex, startIndex + colspan - 1);
|
|
2024
|
+
}
|
|
2025
|
+
} else {
|
|
2026
|
+
const columnIndex = columnIndexMap.get(item.field);
|
|
2027
|
+
if (columnIndex !== void 0) {
|
|
2028
|
+
minIndex = Math.min(minIndex, columnIndex);
|
|
2029
|
+
maxIndex = Math.max(maxIndex, columnIndex);
|
|
2030
|
+
}
|
|
2006
2031
|
}
|
|
2007
|
-
}
|
|
2008
|
-
|
|
2009
|
-
|
|
2032
|
+
}
|
|
2033
|
+
return {
|
|
2034
|
+
startIndex: minIndex === Infinity ? 0 : minIndex,
|
|
2035
|
+
colspan: maxIndex === -Infinity ? 0 : maxIndex - minIndex + 1
|
|
2036
|
+
};
|
|
2037
|
+
}
|
|
2038
|
+
processGroup(columnGroupingModel, 0);
|
|
2039
|
+
groupsByLevel.forEach((level) => {
|
|
2040
|
+
level.sort((a, b) => a.startIndex - b.startIndex);
|
|
2041
|
+
});
|
|
2042
|
+
return { groups: groupsByLevel, maxLevel, fieldsInGroupingModel };
|
|
2010
2043
|
}
|
|
2011
|
-
|
|
2044
|
+
function getTextAlign(props) {
|
|
2045
|
+
return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
|
|
2046
|
+
}
|
|
2047
|
+
var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
|
|
2048
|
+
|
|
2049
|
+
// src/components/DataTable/styled.tsx
|
|
2050
|
+
var import_react18 = __toESM(require("react"));
|
|
2051
|
+
var import_joy24 = require("@mui/joy");
|
|
2052
|
+
var import_framer_motion16 = require("framer-motion");
|
|
2053
|
+
var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
|
|
2054
|
+
var EllipsisDiv = (0, import_joy24.styled)("div", {
|
|
2055
|
+
name: "DataTable",
|
|
2056
|
+
slot: "textEllipsis"
|
|
2057
|
+
})({
|
|
2058
|
+
overflow: "hidden",
|
|
2059
|
+
textOverflow: "ellipsis",
|
|
2060
|
+
whiteSpace: "nowrap"
|
|
2061
|
+
});
|
|
2062
|
+
var OverlayWrapper = (0, import_joy24.styled)("tr", {
|
|
2063
|
+
name: "DataTable",
|
|
2064
|
+
slot: "overlayWrapper"
|
|
2065
|
+
})({
|
|
2066
|
+
position: "sticky",
|
|
2067
|
+
top: `calc(var(--unstable_TableCell-height, 32px))`,
|
|
2068
|
+
left: 0,
|
|
2069
|
+
right: 0,
|
|
2070
|
+
zIndex: 1,
|
|
2071
|
+
"& > td": {
|
|
2072
|
+
height: 0,
|
|
2073
|
+
padding: 0,
|
|
2074
|
+
border: "none !important"
|
|
2075
|
+
}
|
|
2076
|
+
});
|
|
2077
|
+
var VirtualizedTableBody = (0, import_joy24.styled)("tbody", {
|
|
2078
|
+
name: "DataTable",
|
|
2079
|
+
slot: "tableBody"
|
|
2080
|
+
})({
|
|
2081
|
+
"&::after": {
|
|
2082
|
+
content: "''",
|
|
2083
|
+
display: "block",
|
|
2084
|
+
height: "0.01em"
|
|
2085
|
+
},
|
|
2086
|
+
[`& .${import_joy24.buttonClasses.root}`]: {
|
|
2087
|
+
"--Button-minHeight": "26px",
|
|
2088
|
+
"--Button-paddingBlock": "0.25rem",
|
|
2089
|
+
lineHeight: 1,
|
|
2090
|
+
marginTop: "-2px",
|
|
2091
|
+
marginBottom: "-2px"
|
|
2092
|
+
},
|
|
2093
|
+
[`& .${import_joy24.iconButtonClasses.root}`]: {
|
|
2094
|
+
"--IconButton-size": "26px",
|
|
2095
|
+
verticalAlign: "middle",
|
|
2096
|
+
marginTop: "-2px",
|
|
2097
|
+
marginBottom: "-2px"
|
|
2098
|
+
}
|
|
2099
|
+
});
|
|
2100
|
+
var StyledTableRow = (0, import_joy24.styled)("tr", {
|
|
2101
|
+
name: "DataTable",
|
|
2102
|
+
slot: "tableRow",
|
|
2103
|
+
shouldForwardProp: (prop) => prop !== "striped"
|
|
2104
|
+
})(({ striped }) => ({
|
|
2105
|
+
...striped && {
|
|
2106
|
+
backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
|
|
2107
|
+
color: "var(--ceed-palette-text-primary)",
|
|
2108
|
+
"& td": {
|
|
2109
|
+
backgroundColor: "background.surface"
|
|
2110
|
+
}
|
|
2111
|
+
},
|
|
2112
|
+
"&:hover": {
|
|
2113
|
+
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
|
|
2114
|
+
"& td": {
|
|
2115
|
+
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
|
|
2116
|
+
}
|
|
2117
|
+
}
|
|
2118
|
+
}));
|
|
2119
|
+
var Asterisk = (0, import_joy24.styled)("span", {
|
|
2120
|
+
name: "DataTable",
|
|
2121
|
+
slot: "headCellAsterisk"
|
|
2122
|
+
})(({ theme }) => ({
|
|
2123
|
+
color: "var(--ceed-palette-danger-500)",
|
|
2124
|
+
marginLeft: theme.spacing(0.5)
|
|
2125
|
+
}));
|
|
2126
|
+
var StyledTh = (0, import_joy24.styled)(import_framer_motion16.motion.th)(({ theme }) => ({
|
|
2127
|
+
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
2128
|
+
}));
|
|
2129
|
+
var StyledTd = (0, import_joy24.styled)("td")(({ theme }) => ({
|
|
2130
|
+
transition: `box-shadow 0.3s`,
|
|
2131
|
+
"&:not(.is-last-left):not(.is-last-right)": {
|
|
2132
|
+
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
2133
|
+
},
|
|
2134
|
+
".ScrollableRight &": {
|
|
2135
|
+
"&.is-last-left": {
|
|
2136
|
+
boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
|
|
2137
|
+
}
|
|
2138
|
+
},
|
|
2139
|
+
".ScrollableLeft &": {
|
|
2140
|
+
"&.is-last-right": {
|
|
2141
|
+
boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
|
|
2142
|
+
}
|
|
2143
|
+
}
|
|
2144
|
+
}));
|
|
2145
|
+
var MotionSortIcon = (0, import_framer_motion16.motion)(import_ArrowUpwardRounded.default);
|
|
2146
|
+
var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react18.default.createElement(import_joy24.LinearProgress, { value: 8, variant: "plain" });
|
|
2147
|
+
var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ import_react18.default.createElement(
|
|
2148
|
+
Box_default,
|
|
2149
|
+
{
|
|
2150
|
+
sx: {
|
|
2151
|
+
position: "absolute",
|
|
2152
|
+
top: 0,
|
|
2153
|
+
right: 0,
|
|
2154
|
+
bottom: 0,
|
|
2155
|
+
width: "4px",
|
|
2156
|
+
cursor: "col-resize"
|
|
2157
|
+
},
|
|
2158
|
+
onClick: (e) => e.stopPropagation(),
|
|
2159
|
+
onMouseDown: (e) => {
|
|
2160
|
+
const initialX = e.clientX;
|
|
2161
|
+
const initialWidth = ref.current?.getBoundingClientRect().width;
|
|
2162
|
+
const onMouseMove = (e2) => {
|
|
2163
|
+
if (initialWidth && initialX) {
|
|
2164
|
+
ref.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
|
|
2165
|
+
targetRef.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
|
|
2166
|
+
}
|
|
2167
|
+
};
|
|
2168
|
+
const onMouseUp = () => {
|
|
2169
|
+
document.removeEventListener("mousemove", onMouseMove);
|
|
2170
|
+
document.removeEventListener("mouseup", onMouseUp);
|
|
2171
|
+
};
|
|
2172
|
+
document.addEventListener("mousemove", onMouseMove);
|
|
2173
|
+
document.addEventListener("mouseup", onMouseUp);
|
|
2174
|
+
}
|
|
2175
|
+
}
|
|
2176
|
+
);
|
|
2177
|
+
|
|
2178
|
+
// src/components/DataTable/components.tsx
|
|
2179
|
+
var import_react24 = __toESM(require("react"));
|
|
2180
|
+
var import_joy32 = require("@mui/joy");
|
|
2181
|
+
var import_framer_motion22 = require("framer-motion");
|
|
2012
2182
|
|
|
2013
2183
|
// src/components/DatePicker/DatePicker.tsx
|
|
2014
2184
|
var import_react19 = __toESM(require("react"));
|
|
@@ -2017,10 +2187,20 @@ var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"))
|
|
|
2017
2187
|
var import_joy27 = require("@mui/joy");
|
|
2018
2188
|
var import_base2 = require("@mui/base");
|
|
2019
2189
|
|
|
2190
|
+
// src/components/Sheet/Sheet.tsx
|
|
2191
|
+
var import_joy25 = require("@mui/joy");
|
|
2192
|
+
var import_framer_motion17 = require("framer-motion");
|
|
2193
|
+
var MotionSheet = (0, import_framer_motion17.motion)(import_joy25.Sheet);
|
|
2194
|
+
var Sheet = MotionSheet;
|
|
2195
|
+
Sheet.displayName = "Sheet";
|
|
2196
|
+
|
|
2197
|
+
// src/components/Sheet/index.ts
|
|
2198
|
+
var Sheet_default = Sheet;
|
|
2199
|
+
|
|
2020
2200
|
// src/components/DialogActions/DialogActions.tsx
|
|
2021
2201
|
var import_joy26 = require("@mui/joy");
|
|
2022
|
-
var
|
|
2023
|
-
var MotionDialogActions = (0,
|
|
2202
|
+
var import_framer_motion18 = require("framer-motion");
|
|
2203
|
+
var MotionDialogActions = (0, import_framer_motion18.motion)(import_joy26.DialogActions);
|
|
2024
2204
|
var StyledDialogActions = (0, import_joy26.styled)(MotionDialogActions)(({ theme }) => ({
|
|
2025
2205
|
padding: theme.spacing(2),
|
|
2026
2206
|
gap: theme.spacing(2),
|
|
@@ -2376,8 +2556,8 @@ var DatePicker_default = DatePicker;
|
|
|
2376
2556
|
// src/components/Textarea/Textarea.tsx
|
|
2377
2557
|
var import_react20 = __toESM(require("react"));
|
|
2378
2558
|
var import_joy28 = require("@mui/joy");
|
|
2379
|
-
var
|
|
2380
|
-
var MotionTextarea = (0,
|
|
2559
|
+
var import_framer_motion19 = require("framer-motion");
|
|
2560
|
+
var MotionTextarea = (0, import_framer_motion19.motion)(import_joy28.Textarea);
|
|
2381
2561
|
var Textarea = (props) => {
|
|
2382
2562
|
const {
|
|
2383
2563
|
label,
|
|
@@ -2430,8 +2610,8 @@ var Textarea_default = Textarea;
|
|
|
2430
2610
|
// src/components/Select/Select.tsx
|
|
2431
2611
|
var import_react21 = __toESM(require("react"));
|
|
2432
2612
|
var import_joy29 = require("@mui/joy");
|
|
2433
|
-
var
|
|
2434
|
-
var MotionOption = (0,
|
|
2613
|
+
var import_framer_motion20 = require("framer-motion");
|
|
2614
|
+
var MotionOption = (0, import_framer_motion20.motion)(import_joy29.Option);
|
|
2435
2615
|
var Option = MotionOption;
|
|
2436
2616
|
Option.displayName = "Option";
|
|
2437
2617
|
function Select(props) {
|
|
@@ -2507,11 +2687,14 @@ Select.displayName = "Select";
|
|
|
2507
2687
|
// src/components/Select/index.ts
|
|
2508
2688
|
var Select_default = Select;
|
|
2509
2689
|
|
|
2690
|
+
// src/components/DataTable/components.tsx
|
|
2691
|
+
var import_joy33 = require("@mui/joy");
|
|
2692
|
+
|
|
2510
2693
|
// src/components/Tooltip/Tooltip.tsx
|
|
2511
2694
|
var import_react22 = __toESM(require("react"));
|
|
2512
2695
|
var import_joy30 = require("@mui/joy");
|
|
2513
|
-
var
|
|
2514
|
-
var MotionTooltip = (0,
|
|
2696
|
+
var import_framer_motion21 = require("framer-motion");
|
|
2697
|
+
var MotionTooltip = (0, import_framer_motion21.motion)(import_joy30.Tooltip);
|
|
2515
2698
|
var Tooltip = (props) => {
|
|
2516
2699
|
return /* @__PURE__ */ import_react22.default.createElement(MotionTooltip, { ...props });
|
|
2517
2700
|
};
|
|
@@ -2520,151 +2703,11 @@ Tooltip.displayName = "Tooltip";
|
|
|
2520
2703
|
// src/components/Tooltip/index.ts
|
|
2521
2704
|
var Tooltip_default = Tooltip;
|
|
2522
2705
|
|
|
2523
|
-
// src/components/
|
|
2524
|
-
var import_framer_motion21 = require("framer-motion");
|
|
2525
|
-
|
|
2526
|
-
// src/components/Pagination/Pagination.tsx
|
|
2706
|
+
// src/components/InfoSign/InfoSign.tsx
|
|
2527
2707
|
var import_react23 = __toESM(require("react"));
|
|
2528
|
-
var import_ChevronLeft2 = __toESM(require("@mui/icons-material/ChevronLeft"));
|
|
2529
|
-
var import_ChevronRight2 = __toESM(require("@mui/icons-material/ChevronRight"));
|
|
2530
2708
|
var import_joy31 = require("@mui/joy");
|
|
2531
|
-
var PaginationButton = (0, import_joy31.styled)(Button_default, {
|
|
2532
|
-
name: "Pagination",
|
|
2533
|
-
slot: "button"
|
|
2534
|
-
})(({ theme, active, size }) => ({
|
|
2535
|
-
"--Button-size": {
|
|
2536
|
-
sm: "32px",
|
|
2537
|
-
md: "40px",
|
|
2538
|
-
lg: "48px"
|
|
2539
|
-
}[size],
|
|
2540
|
-
width: "var(--Button-size)",
|
|
2541
|
-
height: "var(--Button-size)",
|
|
2542
|
-
backgroundColor: active ? theme.vars.palette.primary.softHoverBg : "transparent",
|
|
2543
|
-
color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.plainColor,
|
|
2544
|
-
"&:hover": {
|
|
2545
|
-
color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.softColor,
|
|
2546
|
-
backgroundColor: active ? theme.vars.palette.primary.softActiveBg : theme.vars.palette.neutral.softHoverBg
|
|
2547
|
-
}
|
|
2548
|
-
}));
|
|
2549
|
-
var PaginationIconButton = (0, import_joy31.styled)(IconButton_default, {
|
|
2550
|
-
name: "Pagination",
|
|
2551
|
-
slot: "button"
|
|
2552
|
-
})(({ theme, size }) => ({
|
|
2553
|
-
"--IconButton-size": {
|
|
2554
|
-
sm: "32px",
|
|
2555
|
-
md: "40px",
|
|
2556
|
-
lg: "48px"
|
|
2557
|
-
}[size],
|
|
2558
|
-
"--Icon-fontSize": "20px",
|
|
2559
|
-
width: "var(--IconButton-size)",
|
|
2560
|
-
height: "var(--IconButton-size)",
|
|
2561
|
-
color: theme.vars.palette.neutral.plainColor,
|
|
2562
|
-
"&:hover": {
|
|
2563
|
-
color: theme.vars.palette.neutral.softColor,
|
|
2564
|
-
backgroundColor: theme.vars.palette.neutral.softHoverBg
|
|
2565
|
-
}
|
|
2566
|
-
}));
|
|
2567
|
-
var PaginationRoot = (0, import_joy31.styled)(Stack_default, {
|
|
2568
|
-
name: "Pagination",
|
|
2569
|
-
slot: "root"
|
|
2570
|
-
})({});
|
|
2571
|
-
var PaginationContainer = (0, import_joy31.styled)(Stack_default, {
|
|
2572
|
-
name: "Pagination",
|
|
2573
|
-
slot: "container"
|
|
2574
|
-
})(({ theme, size }) => ({
|
|
2575
|
-
gap: {
|
|
2576
|
-
sm: theme.spacing(1),
|
|
2577
|
-
md: theme.spacing(1.5),
|
|
2578
|
-
lg: theme.spacing(2)
|
|
2579
|
-
}[size]
|
|
2580
|
-
}));
|
|
2581
|
-
function Pagination(props) {
|
|
2582
|
-
const {
|
|
2583
|
-
paginationModel: _paginationModel,
|
|
2584
|
-
defaultPaginationModel = { page: 1, pageSize: 25 },
|
|
2585
|
-
onPageChange,
|
|
2586
|
-
rowCount,
|
|
2587
|
-
size = "md",
|
|
2588
|
-
...innerProps
|
|
2589
|
-
} = props;
|
|
2590
|
-
const [paginationModel, setPaginationModel] = useControlledState(
|
|
2591
|
-
_paginationModel,
|
|
2592
|
-
defaultPaginationModel,
|
|
2593
|
-
(0, import_react23.useCallback)(
|
|
2594
|
-
(newPage) => {
|
|
2595
|
-
onPageChange(newPage.page);
|
|
2596
|
-
},
|
|
2597
|
-
[onPageChange]
|
|
2598
|
-
)
|
|
2599
|
-
);
|
|
2600
|
-
const handlePageChange = (newPage) => {
|
|
2601
|
-
setPaginationModel({ ...paginationModel, page: newPage });
|
|
2602
|
-
};
|
|
2603
|
-
const firstPage = 1;
|
|
2604
|
-
const lastPage = Math.max(firstPage, Math.ceil(rowCount / paginationModel.pageSize));
|
|
2605
|
-
const beforePages = [paginationModel.page - 2, paginationModel.page - 1].filter((p) => p > 1);
|
|
2606
|
-
const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
|
|
2607
|
-
const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
|
|
2608
|
-
const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
|
|
2609
|
-
(0, import_react23.useEffect)(() => {
|
|
2610
|
-
if (paginationModel.page > lastPage) {
|
|
2611
|
-
setPaginationModel({ ...paginationModel, page: lastPage });
|
|
2612
|
-
}
|
|
2613
|
-
}, [rowCount, paginationModel, lastPage, setPaginationModel]);
|
|
2614
|
-
return /* @__PURE__ */ import_react23.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react23.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react23.default.createElement(
|
|
2615
|
-
PaginationIconButton,
|
|
2616
|
-
{
|
|
2617
|
-
size,
|
|
2618
|
-
variant: "plain",
|
|
2619
|
-
color: "neutral",
|
|
2620
|
-
onClick: () => handlePageChange(paginationModel.page - 1),
|
|
2621
|
-
disabled: paginationModel.page === firstPage,
|
|
2622
|
-
"aria-label": "Previous page"
|
|
2623
|
-
},
|
|
2624
|
-
/* @__PURE__ */ import_react23.default.createElement(import_ChevronLeft2.default, null)
|
|
2625
|
-
), paginationModel.page !== firstPage && /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react23.default.createElement(
|
|
2626
|
-
PaginationButton,
|
|
2627
|
-
{
|
|
2628
|
-
size,
|
|
2629
|
-
variant: "plain",
|
|
2630
|
-
color: "neutral",
|
|
2631
|
-
onClick: () => handlePageChange(paginationModel.page - 3),
|
|
2632
|
-
"aria-label": "More previous pages"
|
|
2633
|
-
},
|
|
2634
|
-
"..."
|
|
2635
|
-
), beforePages.map((p) => /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { active: "active", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ import_react23.default.createElement(
|
|
2636
|
-
PaginationButton,
|
|
2637
|
-
{
|
|
2638
|
-
size,
|
|
2639
|
-
variant: "plain",
|
|
2640
|
-
color: "neutral",
|
|
2641
|
-
"aria-label": "More next pages",
|
|
2642
|
-
onClick: () => handlePageChange(paginationModel.page + 3)
|
|
2643
|
-
},
|
|
2644
|
-
"..."
|
|
2645
|
-
), paginationModel.page !== lastPage && /* @__PURE__ */ import_react23.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react23.default.createElement(
|
|
2646
|
-
PaginationIconButton,
|
|
2647
|
-
{
|
|
2648
|
-
size,
|
|
2649
|
-
variant: "plain",
|
|
2650
|
-
color: "neutral",
|
|
2651
|
-
onClick: () => handlePageChange(paginationModel.page + 1),
|
|
2652
|
-
disabled: paginationModel.page === lastPage,
|
|
2653
|
-
"aria-label": "Next page"
|
|
2654
|
-
},
|
|
2655
|
-
/* @__PURE__ */ import_react23.default.createElement(import_ChevronRight2.default, null)
|
|
2656
|
-
)));
|
|
2657
|
-
}
|
|
2658
|
-
Pagination.displayName = "Pagination";
|
|
2659
|
-
|
|
2660
|
-
// src/components/Pagination/index.ts
|
|
2661
|
-
var Pagination_default = Pagination;
|
|
2662
|
-
|
|
2663
|
-
// src/components/InfoSign/InfoSign.tsx
|
|
2664
|
-
var import_react24 = __toESM(require("react"));
|
|
2665
|
-
var import_joy32 = require("@mui/joy");
|
|
2666
2709
|
var import_Info = __toESM(require("@mui/icons-material/Info"));
|
|
2667
|
-
var InfoIcon = (0,
|
|
2710
|
+
var InfoIcon = (0, import_joy31.styled)(import_Info.default, {
|
|
2668
2711
|
name: "InfoSign",
|
|
2669
2712
|
slot: "InfoSign"
|
|
2670
2713
|
})(({ theme }) => ({
|
|
@@ -2674,67 +2717,55 @@ var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
|
|
|
2674
2717
|
}));
|
|
2675
2718
|
function InfoSign(props) {
|
|
2676
2719
|
const { message, placement } = props;
|
|
2677
|
-
return /* @__PURE__ */
|
|
2720
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
2678
2721
|
Tooltip_default,
|
|
2679
2722
|
{
|
|
2680
2723
|
arrow: true,
|
|
2681
2724
|
placement,
|
|
2682
2725
|
sx: {
|
|
2683
|
-
[`&.${
|
|
2726
|
+
[`&.${import_joy31.tooltipClasses.root}`]: {
|
|
2684
2727
|
maxWidth: "320px"
|
|
2685
2728
|
}
|
|
2686
2729
|
},
|
|
2687
|
-
title: message?.split("\n").map((line, i) => /* @__PURE__ */
|
|
2730
|
+
title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react23.default.createElement("div", { key: `info-sign-${i}` }, line))
|
|
2688
2731
|
},
|
|
2689
|
-
/* @__PURE__ */
|
|
2732
|
+
/* @__PURE__ */ import_react23.default.createElement(InfoIcon, null)
|
|
2690
2733
|
);
|
|
2691
2734
|
}
|
|
2692
2735
|
|
|
2693
2736
|
// src/components/InfoSign/index.ts
|
|
2694
2737
|
var InfoSign_default = InfoSign;
|
|
2695
2738
|
|
|
2696
|
-
// src/components/DataTable/
|
|
2697
|
-
function getTextAlign(props) {
|
|
2698
|
-
return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
|
|
2699
|
-
}
|
|
2700
|
-
var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react25.default.createElement(import_joy33.LinearProgress, { value: 8, variant: "plain" });
|
|
2701
|
-
var EllipsisDiv = (0, import_joy33.styled)("div", {
|
|
2702
|
-
name: "DataTable",
|
|
2703
|
-
slot: "textEllipsis"
|
|
2704
|
-
})({
|
|
2705
|
-
overflow: "hidden",
|
|
2706
|
-
textOverflow: "ellipsis",
|
|
2707
|
-
whiteSpace: "nowrap"
|
|
2708
|
-
});
|
|
2739
|
+
// src/components/DataTable/components.tsx
|
|
2709
2740
|
var TextEllipsis = ({ children }) => {
|
|
2710
|
-
const textRef = (0,
|
|
2711
|
-
const [showTooltip, setShowTooltip] = (0,
|
|
2712
|
-
(0,
|
|
2741
|
+
const textRef = (0, import_react24.useRef)(null);
|
|
2742
|
+
const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
|
|
2743
|
+
(0, import_react24.useLayoutEffect)(() => {
|
|
2713
2744
|
const element = textRef.current;
|
|
2714
2745
|
if (element) {
|
|
2715
2746
|
const isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
2716
2747
|
setShowTooltip(isTextTruncated);
|
|
2717
2748
|
}
|
|
2718
2749
|
}, [children]);
|
|
2719
|
-
const content = /* @__PURE__ */
|
|
2750
|
+
const content = /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef }, children);
|
|
2720
2751
|
if (showTooltip) {
|
|
2721
|
-
return /* @__PURE__ */
|
|
2752
|
+
return /* @__PURE__ */ import_react24.default.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
|
|
2722
2753
|
}
|
|
2723
2754
|
return content;
|
|
2724
2755
|
};
|
|
2725
2756
|
var CellTextEllipsis = ({ children }) => {
|
|
2726
|
-
const textRef = (0,
|
|
2727
|
-
const [showTooltip, setShowTooltip] = (0,
|
|
2728
|
-
(0,
|
|
2757
|
+
const textRef = (0, import_react24.useRef)(null);
|
|
2758
|
+
const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
|
|
2759
|
+
(0, import_react24.useLayoutEffect)(() => {
|
|
2729
2760
|
const element = textRef.current;
|
|
2730
2761
|
if (element) {
|
|
2731
2762
|
const isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
2732
2763
|
setShowTooltip(isTextTruncated);
|
|
2733
2764
|
}
|
|
2734
2765
|
}, [children]);
|
|
2735
|
-
const content = /* @__PURE__ */
|
|
2766
|
+
const content = /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef }, children);
|
|
2736
2767
|
if (showTooltip) {
|
|
2737
|
-
return /* @__PURE__ */
|
|
2768
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
2738
2769
|
Tooltip_default,
|
|
2739
2770
|
{
|
|
2740
2771
|
title: children,
|
|
@@ -2748,129 +2779,6 @@ var CellTextEllipsis = ({ children }) => {
|
|
|
2748
2779
|
}
|
|
2749
2780
|
return content;
|
|
2750
2781
|
};
|
|
2751
|
-
var OverlayWrapper = (0, import_joy33.styled)("tr", {
|
|
2752
|
-
name: "DataTable",
|
|
2753
|
-
slot: "overlayWrapper"
|
|
2754
|
-
})({
|
|
2755
|
-
position: "sticky",
|
|
2756
|
-
top: `calc(var(--unstable_TableCell-height, 32px))`,
|
|
2757
|
-
left: 0,
|
|
2758
|
-
right: 0,
|
|
2759
|
-
zIndex: 1,
|
|
2760
|
-
"& > td": {
|
|
2761
|
-
height: 0,
|
|
2762
|
-
padding: 0,
|
|
2763
|
-
border: "none !important"
|
|
2764
|
-
}
|
|
2765
|
-
});
|
|
2766
|
-
var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
|
|
2767
|
-
var Resizer = (ref) => /* @__PURE__ */ import_react25.default.createElement(
|
|
2768
|
-
Box_default,
|
|
2769
|
-
{
|
|
2770
|
-
sx: {
|
|
2771
|
-
position: "absolute",
|
|
2772
|
-
top: 0,
|
|
2773
|
-
right: 0,
|
|
2774
|
-
bottom: 0,
|
|
2775
|
-
width: "4px",
|
|
2776
|
-
cursor: "col-resize"
|
|
2777
|
-
},
|
|
2778
|
-
onClick: (e) => e.stopPropagation(),
|
|
2779
|
-
onMouseDown: (e) => {
|
|
2780
|
-
const initialX = e.clientX;
|
|
2781
|
-
const initialWidth = ref.current?.getBoundingClientRect().width;
|
|
2782
|
-
const onMouseMove = (e2) => {
|
|
2783
|
-
if (initialWidth && initialX) {
|
|
2784
|
-
ref.current.style.width = `${initialWidth + (e2.clientX - initialX)}px`;
|
|
2785
|
-
}
|
|
2786
|
-
};
|
|
2787
|
-
const onMouseUp = () => {
|
|
2788
|
-
document.removeEventListener("mousemove", onMouseMove);
|
|
2789
|
-
document.removeEventListener("mouseup", onMouseUp);
|
|
2790
|
-
};
|
|
2791
|
-
document.addEventListener("mousemove", onMouseMove);
|
|
2792
|
-
document.addEventListener("mouseup", onMouseUp);
|
|
2793
|
-
}
|
|
2794
|
-
}
|
|
2795
|
-
);
|
|
2796
|
-
var VirtualizedTableBody = (0, import_joy33.styled)("tbody", {
|
|
2797
|
-
name: "DataTable",
|
|
2798
|
-
slot: "tableBody"
|
|
2799
|
-
})({
|
|
2800
|
-
// HACK: for virtualization: tbody의 height를 렌더링 된 tr의 총 높이 보다 높은 값으로 지정하고도 tr의 size를 유지하기 위한 꼼수
|
|
2801
|
-
"&::after": {
|
|
2802
|
-
content: "''",
|
|
2803
|
-
display: "block",
|
|
2804
|
-
height: "0.01em"
|
|
2805
|
-
},
|
|
2806
|
-
// NOTE: 테이블 안에 버튼을 넣을 때 버튼의 높이가 테이블의 높이를 넘어가지 않도록 설정
|
|
2807
|
-
[`& .${import_joy33.buttonClasses.root}`]: {
|
|
2808
|
-
"--Button-minHeight": "26px",
|
|
2809
|
-
"--Button-paddingBlock": "0.25rem",
|
|
2810
|
-
lineHeight: 1,
|
|
2811
|
-
marginTop: "-2px",
|
|
2812
|
-
marginBottom: "-2px"
|
|
2813
|
-
},
|
|
2814
|
-
[`& .${import_joy33.iconButtonClasses.root}`]: {
|
|
2815
|
-
"--IconButton-size": "26px",
|
|
2816
|
-
verticalAlign: "middle",
|
|
2817
|
-
marginTop: "-2px",
|
|
2818
|
-
marginBottom: "-2px"
|
|
2819
|
-
}
|
|
2820
|
-
});
|
|
2821
|
-
var StyledTableRow = (0, import_joy33.styled)("tr", {
|
|
2822
|
-
name: "DataTable",
|
|
2823
|
-
slot: "tableRow",
|
|
2824
|
-
shouldForwardProp: (prop) => prop !== "striped"
|
|
2825
|
-
})(({ striped }) => ({
|
|
2826
|
-
...striped && {
|
|
2827
|
-
backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
|
|
2828
|
-
color: "var(--ceed-palette-text-primary)",
|
|
2829
|
-
"& td": {
|
|
2830
|
-
backgroundColor: "background.surface"
|
|
2831
|
-
}
|
|
2832
|
-
},
|
|
2833
|
-
"&:hover": {
|
|
2834
|
-
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
|
|
2835
|
-
"& td": {
|
|
2836
|
-
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
|
|
2837
|
-
}
|
|
2838
|
-
}
|
|
2839
|
-
}));
|
|
2840
|
-
var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow, (prevProps, nextProps) => {
|
|
2841
|
-
return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
|
|
2842
|
-
prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
|
|
2843
|
-
prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Include children check to handle isCellEditable changes
|
|
2844
|
-
prevProps.children === nextProps.children;
|
|
2845
|
-
});
|
|
2846
|
-
var Asterisk = (0, import_joy33.styled)("span", {
|
|
2847
|
-
name: "DataTable",
|
|
2848
|
-
slot: "headCellAsterisk"
|
|
2849
|
-
})(({ theme }) => ({
|
|
2850
|
-
color: "var(--ceed-palette-danger-500)",
|
|
2851
|
-
marginLeft: theme.spacing(0.5)
|
|
2852
|
-
}));
|
|
2853
|
-
var StyledTh = (0, import_joy33.styled)(import_framer_motion21.motion.th)(({ theme }) => ({
|
|
2854
|
-
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
2855
|
-
// border 대신 box-shadow를 사용하여 stickyHeader와 함께 사용할 때 border가 겹치는 문제를 해결
|
|
2856
|
-
}));
|
|
2857
|
-
var StyledTd = (0, import_joy33.styled)("td")(({ theme }) => ({
|
|
2858
|
-
transition: `box-shadow 0.3s`,
|
|
2859
|
-
"&:not(.is-last-left):not(.is-last-right)": {
|
|
2860
|
-
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
2861
|
-
},
|
|
2862
|
-
".ScrollableRight &": {
|
|
2863
|
-
"&.is-last-left": {
|
|
2864
|
-
boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
|
|
2865
|
-
}
|
|
2866
|
-
},
|
|
2867
|
-
".ScrollableLeft &": {
|
|
2868
|
-
"&.is-last-right": {
|
|
2869
|
-
boxShadow: `1px 0 var(--TableCell-borderColor), ${theme.shadow.md}`
|
|
2870
|
-
}
|
|
2871
|
-
}
|
|
2872
|
-
}));
|
|
2873
|
-
var MotionSortIcon = (0, import_framer_motion21.motion)(import_ArrowUpwardRounded.default);
|
|
2874
2782
|
var HeadCell = (props) => {
|
|
2875
2783
|
const {
|
|
2876
2784
|
width,
|
|
@@ -2892,18 +2800,21 @@ var HeadCell = (props) => {
|
|
|
2892
2800
|
isPinned,
|
|
2893
2801
|
pinnedStartPosition,
|
|
2894
2802
|
pinnedEndPosition,
|
|
2895
|
-
headerRef
|
|
2803
|
+
headerRef,
|
|
2804
|
+
tableColRef,
|
|
2805
|
+
headerClassName
|
|
2896
2806
|
} = props;
|
|
2897
|
-
const theme = (0,
|
|
2807
|
+
const theme = (0, import_joy32.useTheme)();
|
|
2898
2808
|
const ref = headerRef;
|
|
2899
|
-
const
|
|
2809
|
+
const colRef = tableColRef;
|
|
2810
|
+
const [isHovered, setIsHovered] = (0, import_react24.useState)(false);
|
|
2900
2811
|
const sortable = type === "actions" ? false : _sortable;
|
|
2901
|
-
const headId = (0,
|
|
2812
|
+
const headId = (0, import_react24.useMemo)(
|
|
2902
2813
|
() => `${tableId}_header_${headerName ?? field}`.trim(),
|
|
2903
2814
|
[tableId, headerName, field]
|
|
2904
2815
|
);
|
|
2905
|
-
const resizer = (0,
|
|
2906
|
-
const style = (0,
|
|
2816
|
+
const resizer = (0, import_react24.useMemo)(() => resizable ?? true ? Resizer(ref, colRef) : null, [resizable, ref, colRef]);
|
|
2817
|
+
const style = (0, import_react24.useMemo)(
|
|
2907
2818
|
() => ({
|
|
2908
2819
|
width,
|
|
2909
2820
|
minWidth: minWidth ?? "50px",
|
|
@@ -2921,10 +2832,10 @@ var HeadCell = (props) => {
|
|
|
2921
2832
|
);
|
|
2922
2833
|
const textAlign = getTextAlign(props);
|
|
2923
2834
|
const initialSort = sortOrder[0];
|
|
2924
|
-
const sortIcon = (0,
|
|
2835
|
+
const sortIcon = (0, import_react24.useMemo)(() => {
|
|
2925
2836
|
const isSorted = !!sort;
|
|
2926
2837
|
const isVisible = sortable && (isSorted || isHovered);
|
|
2927
|
-
return /* @__PURE__ */
|
|
2838
|
+
return /* @__PURE__ */ import_react24.default.createElement(import_framer_motion22.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react24.default.createElement(
|
|
2928
2839
|
MotionSortIcon,
|
|
2929
2840
|
{
|
|
2930
2841
|
key: "sort-icon",
|
|
@@ -2952,11 +2863,21 @@ var HeadCell = (props) => {
|
|
|
2952
2863
|
}
|
|
2953
2864
|
));
|
|
2954
2865
|
}, [headId, initialSort, sort, sortable, isHovered]);
|
|
2955
|
-
const infoSign = (0,
|
|
2956
|
-
() => description ? /* @__PURE__ */
|
|
2866
|
+
const infoSign = (0, import_react24.useMemo)(
|
|
2867
|
+
() => description ? /* @__PURE__ */ import_react24.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
|
|
2957
2868
|
[description]
|
|
2958
2869
|
);
|
|
2959
|
-
|
|
2870
|
+
const params = (0, import_react24.useMemo)(
|
|
2871
|
+
() => ({
|
|
2872
|
+
field
|
|
2873
|
+
}),
|
|
2874
|
+
[field]
|
|
2875
|
+
);
|
|
2876
|
+
const computedHeaderClassName = (0, import_react24.useMemo)(
|
|
2877
|
+
() => (typeof headerClassName === "function" ? headerClassName(params) : headerClassName) || void 0,
|
|
2878
|
+
[headerClassName, params]
|
|
2879
|
+
);
|
|
2880
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
2960
2881
|
StyledTh,
|
|
2961
2882
|
{
|
|
2962
2883
|
id: headId,
|
|
@@ -2965,16 +2886,17 @@ var HeadCell = (props) => {
|
|
|
2965
2886
|
ref,
|
|
2966
2887
|
key: field,
|
|
2967
2888
|
style,
|
|
2968
|
-
onClick: (0,
|
|
2889
|
+
onClick: (0, import_react24.useCallback)(
|
|
2969
2890
|
(e) => sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey }),
|
|
2970
2891
|
[field, onSortChange, sort, sortable]
|
|
2971
2892
|
),
|
|
2972
2893
|
onMouseEnter: () => setIsHovered(true),
|
|
2973
2894
|
onMouseLeave: () => setIsHovered(false),
|
|
2974
2895
|
whileHover: "hover",
|
|
2975
|
-
initial: "initial"
|
|
2896
|
+
initial: "initial",
|
|
2897
|
+
className: computedHeaderClassName
|
|
2976
2898
|
},
|
|
2977
|
-
/* @__PURE__ */
|
|
2899
|
+
/* @__PURE__ */ import_react24.default.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center" }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ import_react24.default.createElement(TextEllipsis, null, headerName ?? field, editMode && required && /* @__PURE__ */ import_react24.default.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
|
|
2978
2900
|
resizer
|
|
2979
2901
|
);
|
|
2980
2902
|
};
|
|
@@ -2998,10 +2920,10 @@ var BodyCell = (props) => {
|
|
|
2998
2920
|
onCellEditStart,
|
|
2999
2921
|
onCellEditStop
|
|
3000
2922
|
} = props;
|
|
3001
|
-
const theme = (0,
|
|
3002
|
-
const [value, setValue] = (0,
|
|
3003
|
-
const cellRef = (0,
|
|
3004
|
-
const params = (0,
|
|
2923
|
+
const theme = (0, import_joy32.useTheme)();
|
|
2924
|
+
const [value, setValue] = (0, import_react24.useState)(row[field]);
|
|
2925
|
+
const cellRef = (0, import_react24.useRef)(null);
|
|
2926
|
+
const params = (0, import_react24.useMemo)(
|
|
3005
2927
|
() => ({
|
|
3006
2928
|
row,
|
|
3007
2929
|
value,
|
|
@@ -3010,19 +2932,19 @@ var BodyCell = (props) => {
|
|
|
3010
2932
|
}),
|
|
3011
2933
|
[row, rowId, value, field]
|
|
3012
2934
|
);
|
|
3013
|
-
const editMode = (0,
|
|
2935
|
+
const editMode = (0, import_react24.useMemo)(
|
|
3014
2936
|
() => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
|
|
3015
2937
|
[props.editMode, isCellEditable, params]
|
|
3016
2938
|
);
|
|
3017
2939
|
const propsComponentProps = "componentProps" in props ? props.componentProps : null;
|
|
3018
|
-
const componentProps = (0,
|
|
2940
|
+
const componentProps = (0, import_react24.useMemo)(
|
|
3019
2941
|
() => ({
|
|
3020
2942
|
..."componentProps" in props && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
|
|
3021
2943
|
size: "sm"
|
|
3022
2944
|
}),
|
|
3023
2945
|
[props, propsComponentProps, params]
|
|
3024
2946
|
);
|
|
3025
|
-
const editModeComponentProps = (0,
|
|
2947
|
+
const editModeComponentProps = (0, import_react24.useMemo)(
|
|
3026
2948
|
() => ({
|
|
3027
2949
|
...componentProps,
|
|
3028
2950
|
onChange: (e) => {
|
|
@@ -3084,23 +3006,23 @@ var BodyCell = (props) => {
|
|
|
3084
3006
|
}),
|
|
3085
3007
|
[params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
|
|
3086
3008
|
);
|
|
3087
|
-
const EditModeComponent = (0,
|
|
3009
|
+
const EditModeComponent = (0, import_react24.useMemo)(() => {
|
|
3088
3010
|
if (renderEditCell) {
|
|
3089
|
-
return (0,
|
|
3011
|
+
return (0, import_react24.createElement)((0, import_react24.memo)(renderEditCell), params);
|
|
3090
3012
|
}
|
|
3091
3013
|
return {
|
|
3092
|
-
date: /* @__PURE__ */
|
|
3093
|
-
currency: /* @__PURE__ */
|
|
3014
|
+
date: /* @__PURE__ */ import_react24.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
|
|
3015
|
+
currency: /* @__PURE__ */ import_react24.default.createElement(
|
|
3094
3016
|
CurrencyInput_default,
|
|
3095
3017
|
{
|
|
3096
3018
|
value,
|
|
3097
3019
|
...editModeComponentProps
|
|
3098
3020
|
}
|
|
3099
3021
|
),
|
|
3100
|
-
number: /* @__PURE__ */
|
|
3101
|
-
text: /* @__PURE__ */
|
|
3102
|
-
longText: /* @__PURE__ */
|
|
3103
|
-
autocomplete: /* @__PURE__ */
|
|
3022
|
+
number: /* @__PURE__ */ import_react24.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
|
|
3023
|
+
text: /* @__PURE__ */ import_react24.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
|
|
3024
|
+
longText: /* @__PURE__ */ import_react24.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
|
|
3025
|
+
autocomplete: /* @__PURE__ */ import_react24.default.createElement(
|
|
3104
3026
|
Autocomplete_default,
|
|
3105
3027
|
{
|
|
3106
3028
|
value,
|
|
@@ -3108,7 +3030,7 @@ var BodyCell = (props) => {
|
|
|
3108
3030
|
...editModeComponentProps
|
|
3109
3031
|
}
|
|
3110
3032
|
),
|
|
3111
|
-
select: /* @__PURE__ */
|
|
3033
|
+
select: /* @__PURE__ */ import_react24.default.createElement(
|
|
3112
3034
|
Select_default,
|
|
3113
3035
|
{
|
|
3114
3036
|
value,
|
|
@@ -3119,13 +3041,13 @@ var BodyCell = (props) => {
|
|
|
3119
3041
|
}[type || "text"];
|
|
3120
3042
|
}, [value, editModeComponentProps, type, renderEditCell, params]);
|
|
3121
3043
|
const linkComponentFromProps = props.component;
|
|
3122
|
-
const ReadModeComponent = (0,
|
|
3044
|
+
const ReadModeComponent = (0, import_react24.useMemo)(() => {
|
|
3123
3045
|
if (renderCell) {
|
|
3124
|
-
return (0,
|
|
3046
|
+
return (0, import_react24.createElement)((0, import_react24.memo)(renderCell), params);
|
|
3125
3047
|
}
|
|
3126
3048
|
const innerText = value;
|
|
3127
3049
|
const typedComponent = {
|
|
3128
|
-
link:
|
|
3050
|
+
link: import_react24.default.createElement(linkComponentFromProps || import_joy33.Link, {
|
|
3129
3051
|
children: innerText,
|
|
3130
3052
|
...componentProps
|
|
3131
3053
|
})
|
|
@@ -3133,22 +3055,22 @@ var BodyCell = (props) => {
|
|
|
3133
3055
|
return typedComponent || innerText;
|
|
3134
3056
|
}, [value, renderCell, params, type, componentProps, linkComponentFromProps]);
|
|
3135
3057
|
const getActions = props.getActions;
|
|
3136
|
-
const CellComponent = (0,
|
|
3058
|
+
const CellComponent = (0, import_react24.useMemo)(() => {
|
|
3137
3059
|
if (type === "actions") {
|
|
3138
|
-
return /* @__PURE__ */
|
|
3060
|
+
return /* @__PURE__ */ import_react24.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
|
|
3139
3061
|
}
|
|
3140
3062
|
return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
|
|
3141
3063
|
}, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
|
|
3142
|
-
const showTooltip = (0,
|
|
3064
|
+
const showTooltip = (0, import_react24.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
|
|
3143
3065
|
const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
|
|
3144
|
-
const computedCellClassName = (0,
|
|
3066
|
+
const computedCellClassName = (0, import_react24.useMemo)(
|
|
3145
3067
|
() => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
|
|
3146
3068
|
[cellClassName, params]
|
|
3147
3069
|
);
|
|
3148
|
-
(0,
|
|
3070
|
+
(0, import_react24.useEffect)(() => {
|
|
3149
3071
|
setValue(row[field]);
|
|
3150
3072
|
}, [row, field]);
|
|
3151
|
-
return /* @__PURE__ */
|
|
3073
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
3152
3074
|
StyledTd,
|
|
3153
3075
|
{
|
|
3154
3076
|
ref: cellRef,
|
|
@@ -3165,16 +3087,16 @@ var BodyCell = (props) => {
|
|
|
3165
3087
|
},
|
|
3166
3088
|
className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
|
|
3167
3089
|
},
|
|
3168
|
-
(0,
|
|
3169
|
-
() => showTooltip ? /* @__PURE__ */
|
|
3090
|
+
(0, import_react24.useMemo)(
|
|
3091
|
+
() => showTooltip ? /* @__PURE__ */ import_react24.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
|
|
3170
3092
|
[CellComponent, showTooltip]
|
|
3171
3093
|
)
|
|
3172
3094
|
);
|
|
3173
3095
|
};
|
|
3174
|
-
var BodyRow = (0,
|
|
3096
|
+
var BodyRow = (0, import_react24.memo)(
|
|
3175
3097
|
(props) => {
|
|
3176
3098
|
const { tableId, columns, rowId, editMode, noWrap, row } = props;
|
|
3177
|
-
return /* @__PURE__ */
|
|
3099
|
+
return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react24.default.createElement(
|
|
3178
3100
|
BodyCell,
|
|
3179
3101
|
{
|
|
3180
3102
|
key: `${rowId}_${column.field.toString()}_${i}`,
|
|
@@ -3188,6 +3110,34 @@ var BodyRow = (0, import_react25.memo)(
|
|
|
3188
3110
|
)));
|
|
3189
3111
|
}
|
|
3190
3112
|
);
|
|
3113
|
+
var StyledTableRow2 = (0, import_joy32.styled)("tr", {
|
|
3114
|
+
name: "DataTable",
|
|
3115
|
+
slot: "tableRow",
|
|
3116
|
+
shouldForwardProp: (prop) => prop !== "striped"
|
|
3117
|
+
})(({ striped }) => ({
|
|
3118
|
+
...striped && {
|
|
3119
|
+
backgroundColor: "var(--TableRow-stripeBackground, var(--ceed-palette-background-level2))",
|
|
3120
|
+
color: "var(--ceed-palette-text-primary)",
|
|
3121
|
+
"& td": {
|
|
3122
|
+
backgroundColor: "background.surface"
|
|
3123
|
+
}
|
|
3124
|
+
},
|
|
3125
|
+
"&:hover": {
|
|
3126
|
+
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))",
|
|
3127
|
+
"& td": {
|
|
3128
|
+
backgroundColor: "var(--TableRow-hoverBackground, var(--ceed-palette-background-level3))"
|
|
3129
|
+
}
|
|
3130
|
+
}
|
|
3131
|
+
}));
|
|
3132
|
+
var VirtualizedTableRow = (0, import_react24.memo)(StyledTableRow2, (prevProps, nextProps) => {
|
|
3133
|
+
return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
|
|
3134
|
+
prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
|
|
3135
|
+
prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Include children check to handle isCellEditable changes
|
|
3136
|
+
prevProps.children === nextProps.children;
|
|
3137
|
+
});
|
|
3138
|
+
|
|
3139
|
+
// src/components/DataTable/hooks.ts
|
|
3140
|
+
var import_react25 = require("react");
|
|
3191
3141
|
function useColumnWidths(columnsByField) {
|
|
3192
3142
|
const [widths, setWidths] = (0, import_react25.useState)({});
|
|
3193
3143
|
const roRef = (0, import_react25.useRef)();
|
|
@@ -3237,8 +3187,14 @@ function useDataTableRenderer({
|
|
|
3237
3187
|
editMode,
|
|
3238
3188
|
getId: _getId,
|
|
3239
3189
|
isTotalSelected: _isTotalSelected,
|
|
3240
|
-
isRowSelectable
|
|
3190
|
+
isRowSelectable,
|
|
3191
|
+
columnGroupingModel
|
|
3241
3192
|
}) {
|
|
3193
|
+
if (pinnedColumns && columnGroupingModel) {
|
|
3194
|
+
throw new Error(
|
|
3195
|
+
"You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
|
|
3196
|
+
);
|
|
3197
|
+
}
|
|
3242
3198
|
const onSelectionModelChangeRef = (0, import_react25.useRef)(onSelectionModelChange);
|
|
3243
3199
|
onSelectionModelChangeRef.current = onSelectionModelChange;
|
|
3244
3200
|
const [focusedRowId, setFocusedRowId] = (0, import_react25.useState)(null);
|
|
@@ -3247,18 +3203,23 @@ function useDataTableRenderer({
|
|
|
3247
3203
|
initialState?.sorting?.sortModel ?? [],
|
|
3248
3204
|
(0, import_react25.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
|
|
3249
3205
|
);
|
|
3206
|
+
const reorderedColumns = (0, import_react25.useMemo)(() => {
|
|
3207
|
+
if (!columnGroupingModel) return columnsProp;
|
|
3208
|
+
return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
|
|
3209
|
+
}, [columnsProp, columnGroupingModel]);
|
|
3250
3210
|
const columnsByField = (0, import_react25.useMemo)(
|
|
3251
|
-
() =>
|
|
3211
|
+
() => reorderedColumns.reduce(
|
|
3252
3212
|
(acc, curr) => ({
|
|
3253
3213
|
...acc,
|
|
3254
3214
|
[curr.field]: {
|
|
3255
3215
|
...curr,
|
|
3256
|
-
headerRef: import_react25.
|
|
3216
|
+
headerRef: (0, import_react25.createRef)(),
|
|
3217
|
+
tableColRef: (0, import_react25.createRef)()
|
|
3257
3218
|
}
|
|
3258
3219
|
}),
|
|
3259
3220
|
{}
|
|
3260
3221
|
),
|
|
3261
|
-
[
|
|
3222
|
+
[reorderedColumns]
|
|
3262
3223
|
);
|
|
3263
3224
|
const sortComparator = (0, import_react25.useCallback)(
|
|
3264
3225
|
(rowA, rowB) => {
|
|
@@ -3293,7 +3254,6 @@ function useDataTableRenderer({
|
|
|
3293
3254
|
[_rows, sortModel, sortComparator]
|
|
3294
3255
|
);
|
|
3295
3256
|
const sortOrder = (0, import_react25.useMemo)(
|
|
3296
|
-
// NOTE: default value를 props destructuring에서 할당하면 렌더링 시점에 초기화가 되어버린다.
|
|
3297
3257
|
() => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
|
|
3298
3258
|
[_sortOrder]
|
|
3299
3259
|
);
|
|
@@ -3303,11 +3263,7 @@ function useDataTableRenderer({
|
|
|
3303
3263
|
(row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
|
|
3304
3264
|
[_getId, page, pageSize]
|
|
3305
3265
|
);
|
|
3306
|
-
const selectedModelSet = (0, import_react25.useMemo)(
|
|
3307
|
-
// NOTE: default value를 props destructuring에서 할당하면 렌더링 시점에 초기화가 되어버린다.
|
|
3308
|
-
() => new Set(selectionModel || []),
|
|
3309
|
-
[selectionModel]
|
|
3310
|
-
);
|
|
3266
|
+
const selectedModelSet = (0, import_react25.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
|
|
3311
3267
|
const dataInPage = (0, import_react25.useMemo)(
|
|
3312
3268
|
() => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
|
|
3313
3269
|
[rows, page, pageSize, paginationMode, pagination]
|
|
@@ -3338,9 +3294,12 @@ function useDataTableRenderer({
|
|
|
3338
3294
|
columnsByField[f].minWidth ?? 0,
|
|
3339
3295
|
[columnWidths, columnsByField]
|
|
3340
3296
|
);
|
|
3297
|
+
const processedColumnGroups = (0, import_react25.useMemo)(() => {
|
|
3298
|
+
if (!columnGroupingModel) return null;
|
|
3299
|
+
return calculateColumnGroups(columnGroupingModel, reorderedColumns);
|
|
3300
|
+
}, [columnGroupingModel, reorderedColumns]);
|
|
3341
3301
|
const columns = (0, import_react25.useMemo)(() => {
|
|
3342
|
-
const baseColumns =
|
|
3343
|
-
Object.keys(rows[0] || {}).map((key) => ({
|
|
3302
|
+
const baseColumns = reorderedColumns.length > 0 ? reorderedColumns : Object.keys(rows[0] || {}).map((key) => ({
|
|
3344
3303
|
field: key
|
|
3345
3304
|
}));
|
|
3346
3305
|
return baseColumns.map((column) => {
|
|
@@ -3350,19 +3309,19 @@ function useDataTableRenderer({
|
|
|
3350
3309
|
return {
|
|
3351
3310
|
...column,
|
|
3352
3311
|
headerRef: columnsByField[column.field].headerRef,
|
|
3312
|
+
tableColRef: columnsByField[column.field].tableColRef,
|
|
3353
3313
|
isCellEditable: editMode && (typeof column.isCellEditable === "function" ? column.isCellEditable : column.isCellEditable ?? true),
|
|
3354
3314
|
sort: sortModel.find((sort) => sort.field === column.field)?.sort,
|
|
3355
3315
|
sortOrder: columnsByField[column.field]?.sortOrder || sortOrder,
|
|
3356
3316
|
isPinned,
|
|
3357
3317
|
isLastStartPinnedColumn: isLeftPinned && [...pinnedColumns?.left || []].pop() === column.field,
|
|
3358
3318
|
isLastEndPinnedColumn: isRightPinned && (pinnedColumns?.right?.[0] ?? null) === column.field,
|
|
3359
|
-
// pinned 관련 계산부
|
|
3360
3319
|
pinnedStartPosition: pinnedColumns?.left?.slice(0, isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length).reduce((acc, curr) => acc + getWidth(curr), 0),
|
|
3361
3320
|
pinnedEndPosition: pinnedColumns?.right?.slice(isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
|
|
3362
3321
|
};
|
|
3363
3322
|
});
|
|
3364
3323
|
}, [
|
|
3365
|
-
|
|
3324
|
+
reorderedColumns,
|
|
3366
3325
|
rows,
|
|
3367
3326
|
pinnedColumns?.left,
|
|
3368
3327
|
pinnedColumns?.right,
|
|
@@ -3418,55 +3377,265 @@ function useDataTableRenderer({
|
|
|
3418
3377
|
}, [page]);
|
|
3419
3378
|
return {
|
|
3420
3379
|
rowCount,
|
|
3421
|
-
selectableRowCount,
|
|
3422
|
-
page,
|
|
3423
|
-
pageSize,
|
|
3424
|
-
onPaginationModelChange: handlePageChange,
|
|
3425
|
-
getId,
|
|
3426
|
-
HeadCell,
|
|
3427
|
-
BodyRow,
|
|
3428
|
-
dataInPage,
|
|
3429
|
-
handleSortChange,
|
|
3430
|
-
isAllSelected,
|
|
3431
|
-
|
|
3432
|
-
|
|
3433
|
-
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
|
|
3441
|
-
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
|
|
3446
|
-
|
|
3447
|
-
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
|
|
3451
|
-
|
|
3452
|
-
|
|
3453
|
-
|
|
3454
|
-
|
|
3455
|
-
|
|
3456
|
-
|
|
3380
|
+
selectableRowCount,
|
|
3381
|
+
page,
|
|
3382
|
+
pageSize,
|
|
3383
|
+
onPaginationModelChange: handlePageChange,
|
|
3384
|
+
getId,
|
|
3385
|
+
HeadCell,
|
|
3386
|
+
BodyRow,
|
|
3387
|
+
dataInPage,
|
|
3388
|
+
handleSortChange,
|
|
3389
|
+
isAllSelected,
|
|
3390
|
+
isTotalSelected,
|
|
3391
|
+
isSelectedRow: (0, import_react25.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
|
|
3392
|
+
isRowSelectable: (0, import_react25.useCallback)(
|
|
3393
|
+
(rowId, row) => {
|
|
3394
|
+
if (!isRowSelectable) return true;
|
|
3395
|
+
return isRowSelectable({ row, id: rowId });
|
|
3396
|
+
},
|
|
3397
|
+
[isRowSelectable]
|
|
3398
|
+
),
|
|
3399
|
+
focusedRowId,
|
|
3400
|
+
onRowFocus: (0, import_react25.useCallback)((rowId) => {
|
|
3401
|
+
setFocusedRowId(rowId);
|
|
3402
|
+
}, []),
|
|
3403
|
+
onAllCheckboxChange: (0, import_react25.useCallback)(() => {
|
|
3404
|
+
onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
|
|
3405
|
+
}, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
|
|
3406
|
+
onCheckboxChange: (0, import_react25.useCallback)(
|
|
3407
|
+
(event, selectedModel) => {
|
|
3408
|
+
if (selectedModelSet.has(selectedModel)) {
|
|
3409
|
+
const newSelectionModel = (selectionModel || []).filter((model) => model !== selectedModel);
|
|
3410
|
+
onSelectionModelChange?.(newSelectionModel);
|
|
3411
|
+
} else {
|
|
3412
|
+
const newSelectionModel = [...selectionModel || [], selectedModel];
|
|
3413
|
+
onSelectionModelChange?.(newSelectionModel);
|
|
3414
|
+
}
|
|
3415
|
+
},
|
|
3416
|
+
[selectionModel, onSelectionModelChange, selectedModelSet]
|
|
3417
|
+
),
|
|
3418
|
+
columns,
|
|
3419
|
+
processedColumnGroups,
|
|
3420
|
+
onTotalSelect: (0, import_react25.useCallback)(() => {
|
|
3421
|
+
const selectableRows = rows.filter((row, i) => {
|
|
3422
|
+
if (!isRowSelectable) return true;
|
|
3423
|
+
return isRowSelectable({ row, id: getId(row, i) });
|
|
3424
|
+
});
|
|
3425
|
+
onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
|
|
3426
|
+
}, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
|
|
3427
|
+
};
|
|
3428
|
+
}
|
|
3429
|
+
|
|
3430
|
+
// src/components/Table/Table.tsx
|
|
3431
|
+
var import_react26 = __toESM(require("react"));
|
|
3432
|
+
var import_joy34 = require("@mui/joy");
|
|
3433
|
+
var Table = (props) => {
|
|
3434
|
+
const { children, ...inheritProps } = props;
|
|
3435
|
+
return /* @__PURE__ */ import_react26.default.createElement(import_joy34.Table, { ...inheritProps }, children);
|
|
3436
|
+
};
|
|
3437
|
+
Table.displayName = "Table";
|
|
3438
|
+
function TableHead(props) {
|
|
3439
|
+
const {
|
|
3440
|
+
headCells,
|
|
3441
|
+
showCheckbox,
|
|
3442
|
+
onCheckboxChange,
|
|
3443
|
+
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
3444
|
+
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
3445
|
+
} = props;
|
|
3446
|
+
return /* @__PURE__ */ import_react26.default.createElement("thead", null, /* @__PURE__ */ import_react26.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react26.default.createElement(
|
|
3447
|
+
"th",
|
|
3448
|
+
{
|
|
3449
|
+
style: {
|
|
3450
|
+
width: "40px",
|
|
3451
|
+
textAlign: "center"
|
|
3452
|
+
}
|
|
3453
|
+
},
|
|
3454
|
+
/* @__PURE__ */ import_react26.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
|
|
3455
|
+
), headCells.map((headCell) => /* @__PURE__ */ import_react26.default.createElement(
|
|
3456
|
+
"th",
|
|
3457
|
+
{
|
|
3458
|
+
key: headCell.label,
|
|
3459
|
+
style: {
|
|
3460
|
+
width: headCell.width,
|
|
3461
|
+
minWidth: headCell.minWidth,
|
|
3462
|
+
maxWidth: headCell.maxWidth,
|
|
3463
|
+
textAlign: headCell.numeric ? "right" : "left"
|
|
3464
|
+
}
|
|
3465
|
+
},
|
|
3466
|
+
headCell.label
|
|
3467
|
+
))));
|
|
3468
|
+
}
|
|
3469
|
+
TableHead.displayName = "TableHead";
|
|
3470
|
+
function TableBody(props) {
|
|
3471
|
+
const {
|
|
3472
|
+
rows,
|
|
3473
|
+
cellOrder,
|
|
3474
|
+
rowOptions,
|
|
3475
|
+
showCheckbox,
|
|
3476
|
+
onCheckboxChange,
|
|
3477
|
+
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
3478
|
+
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
3479
|
+
} = props;
|
|
3480
|
+
return /* @__PURE__ */ import_react26.default.createElement("tbody", null, rows.map((row, rowIndex) => /* @__PURE__ */ import_react26.default.createElement("tr", { key: `table-row-${rowIndex}` }, showCheckbox && /* @__PURE__ */ import_react26.default.createElement(
|
|
3481
|
+
"td",
|
|
3482
|
+
{
|
|
3483
|
+
style: {
|
|
3484
|
+
textAlign: "center"
|
|
3485
|
+
}
|
|
3486
|
+
},
|
|
3487
|
+
/* @__PURE__ */ import_react26.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
|
|
3488
|
+
), cellOrder.map((cellKey) => /* @__PURE__ */ import_react26.default.createElement(
|
|
3489
|
+
"td",
|
|
3490
|
+
{
|
|
3491
|
+
key: cellKey,
|
|
3492
|
+
style: {
|
|
3493
|
+
textAlign: rowOptions?.[cellKey]?.numeric ? "right" : "left"
|
|
3494
|
+
}
|
|
3495
|
+
},
|
|
3496
|
+
row[cellKey]
|
|
3497
|
+
)))));
|
|
3498
|
+
}
|
|
3499
|
+
TableBody.displayName = "TableBody";
|
|
3500
|
+
|
|
3501
|
+
// src/components/Pagination/Pagination.tsx
|
|
3502
|
+
var import_react27 = __toESM(require("react"));
|
|
3503
|
+
var import_ChevronLeft2 = __toESM(require("@mui/icons-material/ChevronLeft"));
|
|
3504
|
+
var import_ChevronRight2 = __toESM(require("@mui/icons-material/ChevronRight"));
|
|
3505
|
+
var import_joy35 = require("@mui/joy");
|
|
3506
|
+
var PaginationButton = (0, import_joy35.styled)(Button_default, {
|
|
3507
|
+
name: "Pagination",
|
|
3508
|
+
slot: "button"
|
|
3509
|
+
})(({ theme, active, size }) => ({
|
|
3510
|
+
"--Button-size": {
|
|
3511
|
+
sm: "32px",
|
|
3512
|
+
md: "40px",
|
|
3513
|
+
lg: "48px"
|
|
3514
|
+
}[size],
|
|
3515
|
+
width: "var(--Button-size)",
|
|
3516
|
+
height: "var(--Button-size)",
|
|
3517
|
+
backgroundColor: active ? theme.vars.palette.primary.softHoverBg : "transparent",
|
|
3518
|
+
color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.plainColor,
|
|
3519
|
+
"&:hover": {
|
|
3520
|
+
color: active ? theme.vars.palette.primary.softColor : theme.vars.palette.neutral.softColor,
|
|
3521
|
+
backgroundColor: active ? theme.vars.palette.primary.softActiveBg : theme.vars.palette.neutral.softHoverBg
|
|
3522
|
+
}
|
|
3523
|
+
}));
|
|
3524
|
+
var PaginationIconButton = (0, import_joy35.styled)(IconButton_default, {
|
|
3525
|
+
name: "Pagination",
|
|
3526
|
+
slot: "button"
|
|
3527
|
+
})(({ theme, size }) => ({
|
|
3528
|
+
"--IconButton-size": {
|
|
3529
|
+
sm: "32px",
|
|
3530
|
+
md: "40px",
|
|
3531
|
+
lg: "48px"
|
|
3532
|
+
}[size],
|
|
3533
|
+
"--Icon-fontSize": "20px",
|
|
3534
|
+
width: "var(--IconButton-size)",
|
|
3535
|
+
height: "var(--IconButton-size)",
|
|
3536
|
+
color: theme.vars.palette.neutral.plainColor,
|
|
3537
|
+
"&:hover": {
|
|
3538
|
+
color: theme.vars.palette.neutral.softColor,
|
|
3539
|
+
backgroundColor: theme.vars.palette.neutral.softHoverBg
|
|
3540
|
+
}
|
|
3541
|
+
}));
|
|
3542
|
+
var PaginationRoot = (0, import_joy35.styled)(Stack_default, {
|
|
3543
|
+
name: "Pagination",
|
|
3544
|
+
slot: "root"
|
|
3545
|
+
})({});
|
|
3546
|
+
var PaginationContainer = (0, import_joy35.styled)(Stack_default, {
|
|
3547
|
+
name: "Pagination",
|
|
3548
|
+
slot: "container"
|
|
3549
|
+
})(({ theme, size }) => ({
|
|
3550
|
+
gap: {
|
|
3551
|
+
sm: theme.spacing(1),
|
|
3552
|
+
md: theme.spacing(1.5),
|
|
3553
|
+
lg: theme.spacing(2)
|
|
3554
|
+
}[size]
|
|
3555
|
+
}));
|
|
3556
|
+
function Pagination(props) {
|
|
3557
|
+
const {
|
|
3558
|
+
paginationModel: _paginationModel,
|
|
3559
|
+
defaultPaginationModel = { page: 1, pageSize: 25 },
|
|
3560
|
+
onPageChange,
|
|
3561
|
+
rowCount,
|
|
3562
|
+
size = "md",
|
|
3563
|
+
...innerProps
|
|
3564
|
+
} = props;
|
|
3565
|
+
const [paginationModel, setPaginationModel] = useControlledState(
|
|
3566
|
+
_paginationModel,
|
|
3567
|
+
defaultPaginationModel,
|
|
3568
|
+
(0, import_react27.useCallback)(
|
|
3569
|
+
(newPage) => {
|
|
3570
|
+
onPageChange(newPage.page);
|
|
3457
3571
|
},
|
|
3458
|
-
[
|
|
3459
|
-
)
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
if (!isRowSelectable) return true;
|
|
3464
|
-
return isRowSelectable({ row, id: getId(row, i) });
|
|
3465
|
-
});
|
|
3466
|
-
onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
|
|
3467
|
-
}, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
|
|
3572
|
+
[onPageChange]
|
|
3573
|
+
)
|
|
3574
|
+
);
|
|
3575
|
+
const handlePageChange = (newPage) => {
|
|
3576
|
+
setPaginationModel({ ...paginationModel, page: newPage });
|
|
3468
3577
|
};
|
|
3578
|
+
const firstPage = 1;
|
|
3579
|
+
const lastPage = Math.max(firstPage, Math.ceil(rowCount / paginationModel.pageSize));
|
|
3580
|
+
const beforePages = [paginationModel.page - 2, paginationModel.page - 1].filter((p) => p > 1);
|
|
3581
|
+
const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
|
|
3582
|
+
const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
|
|
3583
|
+
const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
|
|
3584
|
+
(0, import_react27.useEffect)(() => {
|
|
3585
|
+
if (paginationModel.page > lastPage) {
|
|
3586
|
+
setPaginationModel({ ...paginationModel, page: lastPage });
|
|
3587
|
+
}
|
|
3588
|
+
}, [rowCount, paginationModel, lastPage, setPaginationModel]);
|
|
3589
|
+
return /* @__PURE__ */ import_react27.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react27.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react27.default.createElement(
|
|
3590
|
+
PaginationIconButton,
|
|
3591
|
+
{
|
|
3592
|
+
size,
|
|
3593
|
+
variant: "plain",
|
|
3594
|
+
color: "neutral",
|
|
3595
|
+
onClick: () => handlePageChange(paginationModel.page - 1),
|
|
3596
|
+
disabled: paginationModel.page === firstPage,
|
|
3597
|
+
"aria-label": "Previous page"
|
|
3598
|
+
},
|
|
3599
|
+
/* @__PURE__ */ import_react27.default.createElement(import_ChevronLeft2.default, null)
|
|
3600
|
+
), paginationModel.page !== firstPage && /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react27.default.createElement(
|
|
3601
|
+
PaginationButton,
|
|
3602
|
+
{
|
|
3603
|
+
size,
|
|
3604
|
+
variant: "plain",
|
|
3605
|
+
color: "neutral",
|
|
3606
|
+
onClick: () => handlePageChange(paginationModel.page - 3),
|
|
3607
|
+
"aria-label": "More previous pages"
|
|
3608
|
+
},
|
|
3609
|
+
"..."
|
|
3610
|
+
), beforePages.map((p) => /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { active: "active", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ import_react27.default.createElement(
|
|
3611
|
+
PaginationButton,
|
|
3612
|
+
{
|
|
3613
|
+
size,
|
|
3614
|
+
variant: "plain",
|
|
3615
|
+
color: "neutral",
|
|
3616
|
+
"aria-label": "More next pages",
|
|
3617
|
+
onClick: () => handlePageChange(paginationModel.page + 3)
|
|
3618
|
+
},
|
|
3619
|
+
"..."
|
|
3620
|
+
), paginationModel.page !== lastPage && /* @__PURE__ */ import_react27.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react27.default.createElement(
|
|
3621
|
+
PaginationIconButton,
|
|
3622
|
+
{
|
|
3623
|
+
size,
|
|
3624
|
+
variant: "plain",
|
|
3625
|
+
color: "neutral",
|
|
3626
|
+
onClick: () => handlePageChange(paginationModel.page + 1),
|
|
3627
|
+
disabled: paginationModel.page === lastPage,
|
|
3628
|
+
"aria-label": "Next page"
|
|
3629
|
+
},
|
|
3630
|
+
/* @__PURE__ */ import_react27.default.createElement(import_ChevronRight2.default, null)
|
|
3631
|
+
)));
|
|
3469
3632
|
}
|
|
3633
|
+
Pagination.displayName = "Pagination";
|
|
3634
|
+
|
|
3635
|
+
// src/components/Pagination/index.ts
|
|
3636
|
+
var Pagination_default = Pagination;
|
|
3637
|
+
|
|
3638
|
+
// src/components/DataTable/DataTable.tsx
|
|
3470
3639
|
function Component(props, apiRef) {
|
|
3471
3640
|
const {
|
|
3472
3641
|
rows,
|
|
@@ -3500,6 +3669,8 @@ function Component(props, apiRef) {
|
|
|
3500
3669
|
getId: ____________,
|
|
3501
3670
|
// getId is used in useDataTableRenderer
|
|
3502
3671
|
loading,
|
|
3672
|
+
columnGroupingModel: _________________,
|
|
3673
|
+
// columnGroupingModel is used in useDataTableRenderer
|
|
3503
3674
|
slots: {
|
|
3504
3675
|
checkbox: RenderCheckbox = Checkbox_default,
|
|
3505
3676
|
toolbar: Toolbar,
|
|
@@ -3511,11 +3682,12 @@ function Component(props, apiRef) {
|
|
|
3511
3682
|
isTotalSelected: ___________,
|
|
3512
3683
|
...innerProps
|
|
3513
3684
|
} = props;
|
|
3514
|
-
const tableId = (0,
|
|
3515
|
-
const parentRef = (0,
|
|
3516
|
-
const tableBodyRef = (0,
|
|
3685
|
+
const tableId = (0, import_react28.useId)();
|
|
3686
|
+
const parentRef = (0, import_react28.useRef)(null);
|
|
3687
|
+
const tableBodyRef = (0, import_react28.useRef)(null);
|
|
3517
3688
|
const {
|
|
3518
3689
|
columns,
|
|
3690
|
+
processedColumnGroups,
|
|
3519
3691
|
isAllSelected,
|
|
3520
3692
|
isSelectedRow,
|
|
3521
3693
|
isRowSelectable: isRowSelectableCheck,
|
|
@@ -3543,29 +3715,29 @@ function Component(props, apiRef) {
|
|
|
3543
3715
|
measureElement: (element) => element.clientHeight,
|
|
3544
3716
|
overscan: 10
|
|
3545
3717
|
});
|
|
3546
|
-
const paginationModel = (0,
|
|
3718
|
+
const paginationModel = (0, import_react28.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
|
|
3547
3719
|
const totalSize = virtualizer.getTotalSize();
|
|
3548
3720
|
const virtualizedItems = virtualizer.getVirtualItems();
|
|
3549
|
-
const getRowClickHandler = (0,
|
|
3721
|
+
const getRowClickHandler = (0, import_react28.useCallback)(
|
|
3550
3722
|
(row, rowId) => (e) => {
|
|
3551
3723
|
onRowClick?.({ row, rowId }, e);
|
|
3552
3724
|
checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
|
|
3553
3725
|
},
|
|
3554
3726
|
[onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
|
|
3555
3727
|
);
|
|
3556
|
-
const getRowFocusHandler = (0,
|
|
3728
|
+
const getRowFocusHandler = (0, import_react28.useCallback)(
|
|
3557
3729
|
(rowId) => () => {
|
|
3558
3730
|
onRowFocus(rowId);
|
|
3559
3731
|
},
|
|
3560
3732
|
[onRowFocus]
|
|
3561
3733
|
);
|
|
3562
|
-
const getCheckboxClickHandler = (0,
|
|
3734
|
+
const getCheckboxClickHandler = (0, import_react28.useCallback)(
|
|
3563
3735
|
() => (e) => {
|
|
3564
3736
|
e.stopPropagation();
|
|
3565
3737
|
},
|
|
3566
3738
|
[]
|
|
3567
3739
|
);
|
|
3568
|
-
const getCheckboxChangeHandler = (0,
|
|
3740
|
+
const getCheckboxChangeHandler = (0, import_react28.useCallback)(
|
|
3569
3741
|
(rowId, row) => (e) => {
|
|
3570
3742
|
if (isRowSelectableCheck(rowId, row)) {
|
|
3571
3743
|
onCheckboxChange(e, rowId);
|
|
@@ -3573,7 +3745,7 @@ function Component(props, apiRef) {
|
|
|
3573
3745
|
},
|
|
3574
3746
|
[onCheckboxChange, isRowSelectableCheck]
|
|
3575
3747
|
);
|
|
3576
|
-
(0,
|
|
3748
|
+
(0, import_react28.useImperativeHandle)(apiRef, () => ({
|
|
3577
3749
|
getRowIndexRelativeToVisibleRows(rowId) {
|
|
3578
3750
|
return dataInPage.findIndex((row) => String(getId(row)) === rowId);
|
|
3579
3751
|
},
|
|
@@ -3589,7 +3761,7 @@ function Component(props, apiRef) {
|
|
|
3589
3761
|
});
|
|
3590
3762
|
}
|
|
3591
3763
|
}));
|
|
3592
|
-
return /* @__PURE__ */
|
|
3764
|
+
return /* @__PURE__ */ import_react28.default.createElement(
|
|
3593
3765
|
Box_default,
|
|
3594
3766
|
{
|
|
3595
3767
|
sx: {
|
|
@@ -3599,7 +3771,7 @@ function Component(props, apiRef) {
|
|
|
3599
3771
|
flexDirection: "column"
|
|
3600
3772
|
}
|
|
3601
3773
|
},
|
|
3602
|
-
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */
|
|
3774
|
+
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react28.default.createElement(
|
|
3603
3775
|
Stack_default,
|
|
3604
3776
|
{
|
|
3605
3777
|
direction: "row",
|
|
@@ -3609,10 +3781,10 @@ function Component(props, apiRef) {
|
|
|
3609
3781
|
justifyContent: "space-between",
|
|
3610
3782
|
alignItems: "center"
|
|
3611
3783
|
},
|
|
3612
|
-
!!checkboxSelection && /* @__PURE__ */
|
|
3613
|
-
Toolbar && /* @__PURE__ */
|
|
3784
|
+
!!checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react28.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react28.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react28.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react28.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ import_react28.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react28.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ import_react28.default.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
|
|
3785
|
+
Toolbar && /* @__PURE__ */ import_react28.default.createElement(Toolbar, { ...toolbarProps || {} })
|
|
3614
3786
|
),
|
|
3615
|
-
/* @__PURE__ */
|
|
3787
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3616
3788
|
Sheet_default,
|
|
3617
3789
|
{
|
|
3618
3790
|
variant: "outlined",
|
|
@@ -3623,7 +3795,8 @@ function Component(props, apiRef) {
|
|
|
3623
3795
|
boxShadow: "sm",
|
|
3624
3796
|
borderRadius: "sm",
|
|
3625
3797
|
"--DataTableSheet-width": parentRef.current?.clientWidth + "px",
|
|
3626
|
-
backgroundColor: "white"
|
|
3798
|
+
backgroundColor: "white",
|
|
3799
|
+
"--TableCell-cornerRadius": "0px"
|
|
3627
3800
|
},
|
|
3628
3801
|
className: [
|
|
3629
3802
|
...(parentRef.current?.scrollLeft || 0) > 0 ? ["ScrollableRight"] : [],
|
|
@@ -3632,15 +3805,33 @@ function Component(props, apiRef) {
|
|
|
3632
3805
|
ref: parentRef,
|
|
3633
3806
|
...backgroundProps
|
|
3634
3807
|
},
|
|
3635
|
-
/* @__PURE__ */
|
|
3808
|
+
/* @__PURE__ */ import_react28.default.createElement(Table, { ...innerProps }, /* @__PURE__ */ import_react28.default.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
|
|
3809
|
+
"col",
|
|
3810
|
+
{
|
|
3811
|
+
style: {
|
|
3812
|
+
width: "40px"
|
|
3813
|
+
}
|
|
3814
|
+
}
|
|
3815
|
+
), columns.map((c) => /* @__PURE__ */ import_react28.default.createElement(
|
|
3816
|
+
"col",
|
|
3817
|
+
{
|
|
3818
|
+
ref: c.tableColRef,
|
|
3819
|
+
key: `${c.field.toString()}_${c.width}`,
|
|
3820
|
+
style: {
|
|
3821
|
+
width: c.width
|
|
3822
|
+
}
|
|
3823
|
+
}
|
|
3824
|
+
))), /* @__PURE__ */ import_react28.default.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ import_react28.default.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ import_react28.default.createElement(
|
|
3636
3825
|
"th",
|
|
3637
3826
|
{
|
|
3827
|
+
rowSpan: processedColumnGroups.maxLevel + 2,
|
|
3638
3828
|
style: {
|
|
3639
3829
|
width: "40px",
|
|
3640
|
-
textAlign: "center"
|
|
3830
|
+
textAlign: "center",
|
|
3831
|
+
verticalAlign: "middle"
|
|
3641
3832
|
}
|
|
3642
3833
|
},
|
|
3643
|
-
/* @__PURE__ */
|
|
3834
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3644
3835
|
RenderCheckbox,
|
|
3645
3836
|
{
|
|
3646
3837
|
onChange: onAllCheckboxChange,
|
|
@@ -3650,17 +3841,56 @@ function Component(props, apiRef) {
|
|
|
3650
3841
|
...checkboxProps
|
|
3651
3842
|
}
|
|
3652
3843
|
)
|
|
3653
|
-
),
|
|
3654
|
-
|
|
3844
|
+
), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.map((group, groupIndex) => {
|
|
3845
|
+
const nextGroup = levelGroups[groupIndex + 1];
|
|
3846
|
+
const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
|
|
3847
|
+
const params = { groupId: group.groupId };
|
|
3848
|
+
const computedHeaderClassName = group.headerClassName ? typeof group.headerClassName === "function" ? group.headerClassName(params) : group.headerClassName : void 0;
|
|
3849
|
+
return /* @__PURE__ */ import_react28.default.createElement(import_react28.Fragment, { key: group.groupId }, /* @__PURE__ */ import_react28.default.createElement(
|
|
3850
|
+
"th",
|
|
3851
|
+
{
|
|
3852
|
+
colSpan: group.colspan,
|
|
3853
|
+
style: {
|
|
3854
|
+
textAlign: "center",
|
|
3855
|
+
fontWeight: "bold",
|
|
3856
|
+
verticalAlign: "middle"
|
|
3857
|
+
},
|
|
3858
|
+
className: computedHeaderClassName
|
|
3859
|
+
},
|
|
3860
|
+
group.headerName ?? group.groupId
|
|
3861
|
+
), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
|
|
3862
|
+
}))), /* @__PURE__ */ import_react28.default.createElement("tr", null, !processedColumnGroups && checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
|
|
3863
|
+
"th",
|
|
3655
3864
|
{
|
|
3656
|
-
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3663
|
-
|
|
3865
|
+
style: {
|
|
3866
|
+
width: "40px",
|
|
3867
|
+
textAlign: "center"
|
|
3868
|
+
}
|
|
3869
|
+
},
|
|
3870
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3871
|
+
RenderCheckbox,
|
|
3872
|
+
{
|
|
3873
|
+
onChange: onAllCheckboxChange,
|
|
3874
|
+
checked: isAllSelected,
|
|
3875
|
+
indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
|
|
3876
|
+
disabled: dataInPage.length > 0 && !selectableRowCount,
|
|
3877
|
+
...checkboxProps
|
|
3878
|
+
}
|
|
3879
|
+
)
|
|
3880
|
+
), columns.map((c, i) => (
|
|
3881
|
+
// @ts-ignore
|
|
3882
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3883
|
+
HeadCell2,
|
|
3884
|
+
{
|
|
3885
|
+
tableId,
|
|
3886
|
+
key: `${c.field.toString()}_${i}`,
|
|
3887
|
+
stickyHeader: props.stickyHeader,
|
|
3888
|
+
editMode: !!c.isCellEditable,
|
|
3889
|
+
onSortChange: handleSortChange,
|
|
3890
|
+
...c
|
|
3891
|
+
}
|
|
3892
|
+
)
|
|
3893
|
+
)))), /* @__PURE__ */ import_react28.default.createElement(
|
|
3664
3894
|
VirtualizedTableBody,
|
|
3665
3895
|
{
|
|
3666
3896
|
ref: tableBodyRef,
|
|
@@ -3670,7 +3900,7 @@ function Component(props, apiRef) {
|
|
|
3670
3900
|
role: "rowgroup",
|
|
3671
3901
|
"aria-label": "DataTableBody"
|
|
3672
3902
|
},
|
|
3673
|
-
!!loading && /* @__PURE__ */
|
|
3903
|
+
!!loading && /* @__PURE__ */ import_react28.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react28.default.createElement(
|
|
3674
3904
|
"td",
|
|
3675
3905
|
{
|
|
3676
3906
|
style: {
|
|
@@ -3679,7 +3909,7 @@ function Component(props, apiRef) {
|
|
|
3679
3909
|
overflow: "visible"
|
|
3680
3910
|
}
|
|
3681
3911
|
},
|
|
3682
|
-
/* @__PURE__ */
|
|
3912
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3683
3913
|
Box_default,
|
|
3684
3914
|
{
|
|
3685
3915
|
sx: {
|
|
@@ -3689,7 +3919,7 @@ function Component(props, apiRef) {
|
|
|
3689
3919
|
right: 0
|
|
3690
3920
|
}
|
|
3691
3921
|
},
|
|
3692
|
-
/* @__PURE__ */
|
|
3922
|
+
/* @__PURE__ */ import_react28.default.createElement(LoadingOverlay, null)
|
|
3693
3923
|
)
|
|
3694
3924
|
)),
|
|
3695
3925
|
virtualizedItems.map((virtualizedRow, index) => {
|
|
@@ -3697,7 +3927,7 @@ function Component(props, apiRef) {
|
|
|
3697
3927
|
const row = dataInPage[rowIndex];
|
|
3698
3928
|
const rowId = getId(row, rowIndex);
|
|
3699
3929
|
const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
|
|
3700
|
-
return /* @__PURE__ */
|
|
3930
|
+
return /* @__PURE__ */ import_react28.default.createElement(
|
|
3701
3931
|
VirtualizedTableRow,
|
|
3702
3932
|
{
|
|
3703
3933
|
key: virtualizedRow.key,
|
|
@@ -3715,7 +3945,7 @@ function Component(props, apiRef) {
|
|
|
3715
3945
|
transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
|
|
3716
3946
|
}
|
|
3717
3947
|
},
|
|
3718
|
-
checkboxSelection && /* @__PURE__ */
|
|
3948
|
+
checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
|
|
3719
3949
|
"th",
|
|
3720
3950
|
{
|
|
3721
3951
|
scope: "row",
|
|
@@ -3723,7 +3953,7 @@ function Component(props, apiRef) {
|
|
|
3723
3953
|
textAlign: "center"
|
|
3724
3954
|
}
|
|
3725
3955
|
},
|
|
3726
|
-
/* @__PURE__ */
|
|
3956
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3727
3957
|
RenderCheckbox,
|
|
3728
3958
|
{
|
|
3729
3959
|
onClick: getCheckboxClickHandler(),
|
|
@@ -3734,7 +3964,7 @@ function Component(props, apiRef) {
|
|
|
3734
3964
|
}
|
|
3735
3965
|
)
|
|
3736
3966
|
),
|
|
3737
|
-
/* @__PURE__ */
|
|
3967
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3738
3968
|
BodyRow2,
|
|
3739
3969
|
{
|
|
3740
3970
|
tableId,
|
|
@@ -3747,9 +3977,9 @@ function Component(props, apiRef) {
|
|
|
3747
3977
|
)
|
|
3748
3978
|
);
|
|
3749
3979
|
})
|
|
3750
|
-
), Footer && /* @__PURE__ */
|
|
3980
|
+
), Footer && /* @__PURE__ */ import_react28.default.createElement(Footer, null))
|
|
3751
3981
|
),
|
|
3752
|
-
pagination && /* @__PURE__ */
|
|
3982
|
+
pagination && /* @__PURE__ */ import_react28.default.createElement(
|
|
3753
3983
|
Pagination_default,
|
|
3754
3984
|
{
|
|
3755
3985
|
pt: 2,
|
|
@@ -3762,16 +3992,16 @@ function Component(props, apiRef) {
|
|
|
3762
3992
|
)
|
|
3763
3993
|
);
|
|
3764
3994
|
}
|
|
3765
|
-
var DataTable = (0,
|
|
3995
|
+
var DataTable = (0, import_react28.forwardRef)(Component);
|
|
3766
3996
|
DataTable.displayName = "DataTable";
|
|
3767
3997
|
|
|
3768
3998
|
// src/components/DateRangePicker/DateRangePicker.tsx
|
|
3769
|
-
var
|
|
3999
|
+
var import_react29 = __toESM(require("react"));
|
|
3770
4000
|
var import_react_imask2 = require("react-imask");
|
|
3771
4001
|
var import_CalendarToday2 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
3772
|
-
var
|
|
4002
|
+
var import_joy36 = require("@mui/joy");
|
|
3773
4003
|
var import_base3 = require("@mui/base");
|
|
3774
|
-
var CalendarButton2 = (0,
|
|
4004
|
+
var CalendarButton2 = (0, import_joy36.styled)(IconButton_default, {
|
|
3775
4005
|
name: "DateRangePicker",
|
|
3776
4006
|
slot: "calendarButton"
|
|
3777
4007
|
})(({ theme }) => ({
|
|
@@ -3781,13 +4011,13 @@ var CalendarButton2 = (0, import_joy34.styled)(IconButton_default, {
|
|
|
3781
4011
|
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
|
|
3782
4012
|
}
|
|
3783
4013
|
}));
|
|
3784
|
-
var StyledPopper2 = (0,
|
|
4014
|
+
var StyledPopper2 = (0, import_joy36.styled)(import_base3.Popper, {
|
|
3785
4015
|
name: "DateRangePicker",
|
|
3786
4016
|
slot: "popper"
|
|
3787
4017
|
})(({ theme }) => ({
|
|
3788
4018
|
zIndex: theme.zIndex.tooltip
|
|
3789
4019
|
}));
|
|
3790
|
-
var CalendarSheet2 = (0,
|
|
4020
|
+
var CalendarSheet2 = (0, import_joy36.styled)(Sheet_default, {
|
|
3791
4021
|
name: "DateRangePicker",
|
|
3792
4022
|
slot: "sheet",
|
|
3793
4023
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -3797,7 +4027,7 @@ var CalendarSheet2 = (0, import_joy34.styled)(Sheet_default, {
|
|
|
3797
4027
|
boxShadow: theme.shadow.md,
|
|
3798
4028
|
borderRadius: theme.radius.md
|
|
3799
4029
|
}));
|
|
3800
|
-
var DateRangePickerRoot = (0,
|
|
4030
|
+
var DateRangePickerRoot = (0, import_joy36.styled)("div", {
|
|
3801
4031
|
name: "DateRangePicker",
|
|
3802
4032
|
slot: "root",
|
|
3803
4033
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -3867,9 +4097,9 @@ var parseDates = (str, format) => {
|
|
|
3867
4097
|
var formatToPattern2 = (format) => {
|
|
3868
4098
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
3869
4099
|
};
|
|
3870
|
-
var TextMaskAdapter5 =
|
|
4100
|
+
var TextMaskAdapter5 = import_react29.default.forwardRef(function TextMaskAdapter6(props, ref) {
|
|
3871
4101
|
const { onChange, format, ...other } = props;
|
|
3872
|
-
return /* @__PURE__ */
|
|
4102
|
+
return /* @__PURE__ */ import_react29.default.createElement(
|
|
3873
4103
|
import_react_imask2.IMaskInput,
|
|
3874
4104
|
{
|
|
3875
4105
|
...other,
|
|
@@ -3903,8 +4133,8 @@ var TextMaskAdapter5 = import_react26.default.forwardRef(function TextMaskAdapte
|
|
|
3903
4133
|
}
|
|
3904
4134
|
);
|
|
3905
4135
|
});
|
|
3906
|
-
var DateRangePicker = (0,
|
|
3907
|
-
const props = (0,
|
|
4136
|
+
var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
4137
|
+
const props = (0, import_joy36.useThemeProps)({ props: inProps, name: "DateRangePicker" });
|
|
3908
4138
|
const {
|
|
3909
4139
|
onChange,
|
|
3910
4140
|
disabled,
|
|
@@ -3927,23 +4157,23 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
3927
4157
|
readOnly,
|
|
3928
4158
|
...innerProps
|
|
3929
4159
|
} = props;
|
|
3930
|
-
const innerRef = (0,
|
|
3931
|
-
const buttonRef = (0,
|
|
4160
|
+
const innerRef = (0, import_react29.useRef)(null);
|
|
4161
|
+
const buttonRef = (0, import_react29.useRef)(null);
|
|
3932
4162
|
const [value, setValue] = useControlledState(
|
|
3933
4163
|
props.value,
|
|
3934
4164
|
props.defaultValue || "",
|
|
3935
|
-
(0,
|
|
4165
|
+
(0, import_react29.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
3936
4166
|
);
|
|
3937
|
-
const [displayValue, setDisplayValue] = (0,
|
|
4167
|
+
const [displayValue, setDisplayValue] = (0, import_react29.useState)(
|
|
3938
4168
|
() => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
|
|
3939
4169
|
);
|
|
3940
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
4170
|
+
const [anchorEl, setAnchorEl] = (0, import_react29.useState)(null);
|
|
3941
4171
|
const open = Boolean(anchorEl);
|
|
3942
|
-
const calendarValue = (0,
|
|
4172
|
+
const calendarValue = (0, import_react29.useMemo)(
|
|
3943
4173
|
() => value ? parseDates(value, format) : void 0,
|
|
3944
4174
|
[value, format]
|
|
3945
4175
|
);
|
|
3946
|
-
(0,
|
|
4176
|
+
(0, import_react29.useEffect)(() => {
|
|
3947
4177
|
if (value) {
|
|
3948
4178
|
try {
|
|
3949
4179
|
const dates = parseDates(value, format);
|
|
@@ -3955,13 +4185,13 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
3955
4185
|
setDisplayValue("");
|
|
3956
4186
|
}
|
|
3957
4187
|
}, [displayFormat, value, format]);
|
|
3958
|
-
(0,
|
|
4188
|
+
(0, import_react29.useEffect)(() => {
|
|
3959
4189
|
if (!anchorEl) {
|
|
3960
4190
|
innerRef.current?.blur();
|
|
3961
4191
|
}
|
|
3962
4192
|
}, [anchorEl, innerRef]);
|
|
3963
|
-
(0,
|
|
3964
|
-
const handleChange = (0,
|
|
4193
|
+
(0, import_react29.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
4194
|
+
const handleChange = (0, import_react29.useCallback)(
|
|
3965
4195
|
(event) => {
|
|
3966
4196
|
const value2 = event.target.value;
|
|
3967
4197
|
setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2);
|
|
@@ -3969,7 +4199,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
3969
4199
|
},
|
|
3970
4200
|
[displayFormat, format, setValue]
|
|
3971
4201
|
);
|
|
3972
|
-
const handleDisplayInputChange = (0,
|
|
4202
|
+
const handleDisplayInputChange = (0, import_react29.useCallback)(
|
|
3973
4203
|
(event) => {
|
|
3974
4204
|
if (event.target.value === "") {
|
|
3975
4205
|
handleChange({
|
|
@@ -3994,14 +4224,14 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
3994
4224
|
},
|
|
3995
4225
|
[displayFormat, format, handleChange, props.name]
|
|
3996
4226
|
);
|
|
3997
|
-
const handleCalendarToggle = (0,
|
|
4227
|
+
const handleCalendarToggle = (0, import_react29.useCallback)(
|
|
3998
4228
|
(event) => {
|
|
3999
4229
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
4000
4230
|
innerRef.current?.focus();
|
|
4001
4231
|
},
|
|
4002
4232
|
[anchorEl, setAnchorEl, innerRef]
|
|
4003
4233
|
);
|
|
4004
|
-
const handleCalendarChange = (0,
|
|
4234
|
+
const handleCalendarChange = (0, import_react29.useCallback)(
|
|
4005
4235
|
([date1, date2]) => {
|
|
4006
4236
|
if (!date1 || !date2) return;
|
|
4007
4237
|
const formattedValue = formatValueString2([date1, date2], format);
|
|
@@ -4015,7 +4245,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4015
4245
|
},
|
|
4016
4246
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
|
|
4017
4247
|
);
|
|
4018
|
-
const handleInputMouseDown = (0,
|
|
4248
|
+
const handleInputMouseDown = (0, import_react29.useCallback)(
|
|
4019
4249
|
(event) => {
|
|
4020
4250
|
if (inputReadOnly) {
|
|
4021
4251
|
event.preventDefault();
|
|
@@ -4024,7 +4254,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4024
4254
|
},
|
|
4025
4255
|
[inputReadOnly, buttonRef]
|
|
4026
4256
|
);
|
|
4027
|
-
return /* @__PURE__ */
|
|
4257
|
+
return /* @__PURE__ */ import_react29.default.createElement(DateRangePickerRoot, null, /* @__PURE__ */ import_react29.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, /* @__PURE__ */ import_react29.default.createElement(
|
|
4028
4258
|
Input_default,
|
|
4029
4259
|
{
|
|
4030
4260
|
...innerProps,
|
|
@@ -4052,7 +4282,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4052
4282
|
error,
|
|
4053
4283
|
className,
|
|
4054
4284
|
sx,
|
|
4055
|
-
endDecorator: /* @__PURE__ */
|
|
4285
|
+
endDecorator: /* @__PURE__ */ import_react29.default.createElement(
|
|
4056
4286
|
CalendarButton2,
|
|
4057
4287
|
{
|
|
4058
4288
|
ref: buttonRef,
|
|
@@ -4064,13 +4294,13 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4064
4294
|
"aria-expanded": open,
|
|
4065
4295
|
disabled
|
|
4066
4296
|
},
|
|
4067
|
-
/* @__PURE__ */
|
|
4297
|
+
/* @__PURE__ */ import_react29.default.createElement(import_CalendarToday2.default, null)
|
|
4068
4298
|
),
|
|
4069
4299
|
label,
|
|
4070
4300
|
helperText,
|
|
4071
4301
|
readOnly: readOnly || inputReadOnly
|
|
4072
4302
|
}
|
|
4073
|
-
), open && /* @__PURE__ */
|
|
4303
|
+
), open && /* @__PURE__ */ import_react29.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4074
4304
|
StyledPopper2,
|
|
4075
4305
|
{
|
|
4076
4306
|
id: "date-range-picker-popper",
|
|
@@ -4089,7 +4319,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4089
4319
|
"aria-label": "Calendar Tooltip",
|
|
4090
4320
|
"aria-expanded": open
|
|
4091
4321
|
},
|
|
4092
|
-
/* @__PURE__ */
|
|
4322
|
+
/* @__PURE__ */ import_react29.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4093
4323
|
Calendar_default,
|
|
4094
4324
|
{
|
|
4095
4325
|
rangeSelection: true,
|
|
@@ -4100,14 +4330,14 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4100
4330
|
disableFuture,
|
|
4101
4331
|
disablePast
|
|
4102
4332
|
}
|
|
4103
|
-
), !hideClearButton && /* @__PURE__ */
|
|
4333
|
+
), !hideClearButton && /* @__PURE__ */ import_react29.default.createElement(
|
|
4104
4334
|
DialogActions_default,
|
|
4105
4335
|
{
|
|
4106
4336
|
sx: {
|
|
4107
4337
|
p: 1
|
|
4108
4338
|
}
|
|
4109
4339
|
},
|
|
4110
|
-
/* @__PURE__ */
|
|
4340
|
+
/* @__PURE__ */ import_react29.default.createElement(
|
|
4111
4341
|
Button_default,
|
|
4112
4342
|
{
|
|
4113
4343
|
size,
|
|
@@ -4127,17 +4357,17 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4127
4357
|
DateRangePicker.displayName = "DateRangePicker";
|
|
4128
4358
|
|
|
4129
4359
|
// src/components/Drawer/Drawer.tsx
|
|
4130
|
-
var
|
|
4131
|
-
var
|
|
4132
|
-
var
|
|
4133
|
-
var MotionDrawer = (0,
|
|
4134
|
-
var StyledDrawer = (0,
|
|
4360
|
+
var import_react30 = __toESM(require("react"));
|
|
4361
|
+
var import_joy37 = require("@mui/joy");
|
|
4362
|
+
var import_framer_motion23 = require("framer-motion");
|
|
4363
|
+
var MotionDrawer = (0, import_framer_motion23.motion)(import_joy37.Drawer);
|
|
4364
|
+
var StyledDrawer = (0, import_joy37.styled)(MotionDrawer)(({ theme, size = "md" }) => ({
|
|
4135
4365
|
"--Drawer-horizontalSize": {
|
|
4136
4366
|
sm: "360px",
|
|
4137
4367
|
md: "600px",
|
|
4138
4368
|
lg: "900px"
|
|
4139
4369
|
}[size],
|
|
4140
|
-
[`& .${
|
|
4370
|
+
[`& .${import_joy37.drawerClasses.content}`]: {
|
|
4141
4371
|
[theme.breakpoints.down("md")]: {
|
|
4142
4372
|
width: "100%"
|
|
4143
4373
|
}
|
|
@@ -4145,15 +4375,15 @@ var StyledDrawer = (0, import_joy35.styled)(MotionDrawer)(({ theme, size = "md"
|
|
|
4145
4375
|
}));
|
|
4146
4376
|
var Drawer = (props) => {
|
|
4147
4377
|
const { children, ...innerProps } = props;
|
|
4148
|
-
return /* @__PURE__ */
|
|
4378
|
+
return /* @__PURE__ */ import_react30.default.createElement(StyledDrawer, { ...innerProps }, children);
|
|
4149
4379
|
};
|
|
4150
4380
|
Drawer.displayName = "Drawer";
|
|
4151
4381
|
|
|
4152
4382
|
// src/components/DialogContent/DialogContent.tsx
|
|
4153
|
-
var
|
|
4154
|
-
var
|
|
4155
|
-
var MotionDialogContent = (0,
|
|
4156
|
-
var StyledDialogContent = (0,
|
|
4383
|
+
var import_joy38 = require("@mui/joy");
|
|
4384
|
+
var import_framer_motion24 = require("framer-motion");
|
|
4385
|
+
var MotionDialogContent = (0, import_framer_motion24.motion)(import_joy38.DialogContent);
|
|
4386
|
+
var StyledDialogContent = (0, import_joy38.styled)(MotionDialogContent)(({ theme }) => ({
|
|
4157
4387
|
padding: theme.spacing(0, 6, 5)
|
|
4158
4388
|
}));
|
|
4159
4389
|
var DialogContent = StyledDialogContent;
|
|
@@ -4163,10 +4393,10 @@ DialogContent.displayName = "DialogContent";
|
|
|
4163
4393
|
var DialogContent_default = DialogContent;
|
|
4164
4394
|
|
|
4165
4395
|
// src/components/DialogTitle/DialogTitle.tsx
|
|
4166
|
-
var
|
|
4167
|
-
var
|
|
4168
|
-
var MotionDialogTitle = (0,
|
|
4169
|
-
var StyledDialogTitle = (0,
|
|
4396
|
+
var import_joy39 = require("@mui/joy");
|
|
4397
|
+
var import_framer_motion25 = require("framer-motion");
|
|
4398
|
+
var MotionDialogTitle = (0, import_framer_motion25.motion)(import_joy39.DialogTitle);
|
|
4399
|
+
var StyledDialogTitle = (0, import_joy39.styled)(MotionDialogTitle)(({ theme }) => ({
|
|
4170
4400
|
padding: theme.spacing(4, 6)
|
|
4171
4401
|
}));
|
|
4172
4402
|
var DialogTitle = StyledDialogTitle;
|
|
@@ -4176,58 +4406,58 @@ DialogTitle.displayName = "DialogTitle";
|
|
|
4176
4406
|
var DialogTitle_default = DialogTitle;
|
|
4177
4407
|
|
|
4178
4408
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
4179
|
-
var
|
|
4409
|
+
var import_react32 = __toESM(require("react"));
|
|
4180
4410
|
|
|
4181
4411
|
// src/components/Modal/Modal.tsx
|
|
4182
|
-
var
|
|
4183
|
-
var
|
|
4184
|
-
var
|
|
4185
|
-
var MotionModal = (0,
|
|
4412
|
+
var import_react31 = __toESM(require("react"));
|
|
4413
|
+
var import_joy40 = require("@mui/joy");
|
|
4414
|
+
var import_framer_motion26 = require("framer-motion");
|
|
4415
|
+
var MotionModal = (0, import_framer_motion26.motion)(import_joy40.Modal);
|
|
4186
4416
|
var Modal = MotionModal;
|
|
4187
4417
|
Modal.displayName = "Modal";
|
|
4188
|
-
var StyledModalDialog = (0,
|
|
4418
|
+
var StyledModalDialog = (0, import_joy40.styled)(import_joy40.ModalDialog)({
|
|
4189
4419
|
padding: 0
|
|
4190
4420
|
});
|
|
4191
4421
|
var ModalDialog = StyledModalDialog;
|
|
4192
4422
|
ModalDialog.displayName = "ModalDialog";
|
|
4193
|
-
var ModalClose =
|
|
4194
|
-
var MotionModalOverflow = (0,
|
|
4423
|
+
var ModalClose = import_joy40.ModalClose;
|
|
4424
|
+
var MotionModalOverflow = (0, import_framer_motion26.motion)(import_joy40.ModalOverflow);
|
|
4195
4425
|
var ModalOverflow = MotionModalOverflow;
|
|
4196
4426
|
ModalOverflow.displayName = "ModalOverflow";
|
|
4197
4427
|
function ModalFrame(props) {
|
|
4198
4428
|
const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
|
|
4199
|
-
return /* @__PURE__ */
|
|
4429
|
+
return /* @__PURE__ */ import_react31.default.createElement(StyledModalDialog, { ...innerProps }, /* @__PURE__ */ import_react31.default.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ import_react31.default.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ import_react31.default.createElement(DialogContent_default, null, children));
|
|
4200
4430
|
}
|
|
4201
4431
|
ModalFrame.displayName = "ModalFrame";
|
|
4202
4432
|
|
|
4203
4433
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
4204
|
-
var
|
|
4205
|
-
var StyledDialogFrame = (0,
|
|
4434
|
+
var import_joy41 = require("@mui/joy");
|
|
4435
|
+
var StyledDialogFrame = (0, import_joy41.styled)(ModalDialog, {
|
|
4206
4436
|
name: "Dialog",
|
|
4207
4437
|
slot: "Root"
|
|
4208
4438
|
})({
|
|
4209
4439
|
padding: 0
|
|
4210
4440
|
});
|
|
4211
|
-
var DialogFrame =
|
|
4441
|
+
var DialogFrame = import_react32.default.forwardRef((props, ref) => {
|
|
4212
4442
|
const { title, children, actions, fullscreen, ...innerProps } = props;
|
|
4213
|
-
return /* @__PURE__ */
|
|
4443
|
+
return /* @__PURE__ */ import_react32.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...innerProps }, /* @__PURE__ */ import_react32.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react32.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react32.default.createElement(DialogActions_default, null, actions));
|
|
4214
4444
|
});
|
|
4215
4445
|
DialogFrame.displayName = "DialogFrame";
|
|
4216
4446
|
|
|
4217
4447
|
// src/components/Divider/Divider.tsx
|
|
4218
|
-
var
|
|
4219
|
-
var
|
|
4220
|
-
var
|
|
4221
|
-
var MotionDivider = (0,
|
|
4448
|
+
var import_react33 = __toESM(require("react"));
|
|
4449
|
+
var import_joy42 = require("@mui/joy");
|
|
4450
|
+
var import_framer_motion27 = require("framer-motion");
|
|
4451
|
+
var MotionDivider = (0, import_framer_motion27.motion)(import_joy42.Divider);
|
|
4222
4452
|
var Divider = (props) => {
|
|
4223
|
-
return /* @__PURE__ */
|
|
4453
|
+
return /* @__PURE__ */ import_react33.default.createElement(MotionDivider, { ...props });
|
|
4224
4454
|
};
|
|
4225
4455
|
Divider.displayName = "Divider";
|
|
4226
4456
|
|
|
4227
4457
|
// src/components/InsetDrawer/InsetDrawer.tsx
|
|
4228
|
-
var
|
|
4229
|
-
var InsetDrawer = (0,
|
|
4230
|
-
[`& .${
|
|
4458
|
+
var import_joy43 = require("@mui/joy");
|
|
4459
|
+
var InsetDrawer = (0, import_joy43.styled)(import_joy43.Drawer)(({ theme }) => ({
|
|
4460
|
+
[`& .${import_joy43.drawerClasses.content}`]: {
|
|
4231
4461
|
backgroundColor: "transparent",
|
|
4232
4462
|
boxShadow: "none",
|
|
4233
4463
|
[theme.breakpoints.down("md")]: {
|
|
@@ -4241,11 +4471,11 @@ var InsetDrawer = (0, import_joy41.styled)(import_joy41.Drawer)(({ theme }) => (
|
|
|
4241
4471
|
}));
|
|
4242
4472
|
|
|
4243
4473
|
// src/components/Grid/Grid.tsx
|
|
4244
|
-
var
|
|
4474
|
+
var import_joy44 = require("@mui/joy");
|
|
4245
4475
|
|
|
4246
4476
|
// src/components/IconMenuButton/IconMenuButton.tsx
|
|
4247
|
-
var
|
|
4248
|
-
var
|
|
4477
|
+
var import_react34 = __toESM(require("react"));
|
|
4478
|
+
var import_joy45 = require("@mui/joy");
|
|
4249
4479
|
function IconMenuButton(props) {
|
|
4250
4480
|
const {
|
|
4251
4481
|
size,
|
|
@@ -4258,8 +4488,8 @@ function IconMenuButton(props) {
|
|
|
4258
4488
|
placement = "bottom"
|
|
4259
4489
|
} = props;
|
|
4260
4490
|
if (!items.length) {
|
|
4261
|
-
return /* @__PURE__ */
|
|
4262
|
-
|
|
4491
|
+
return /* @__PURE__ */ import_react34.default.createElement(
|
|
4492
|
+
import_joy45.IconButton,
|
|
4263
4493
|
{
|
|
4264
4494
|
component: props.buttonComponent ?? "button",
|
|
4265
4495
|
size,
|
|
@@ -4272,10 +4502,10 @@ function IconMenuButton(props) {
|
|
|
4272
4502
|
icon
|
|
4273
4503
|
);
|
|
4274
4504
|
}
|
|
4275
|
-
return /* @__PURE__ */
|
|
4276
|
-
|
|
4505
|
+
return /* @__PURE__ */ import_react34.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react34.default.createElement(
|
|
4506
|
+
import_joy45.MenuButton,
|
|
4277
4507
|
{
|
|
4278
|
-
slots: { root:
|
|
4508
|
+
slots: { root: import_joy45.IconButton },
|
|
4279
4509
|
slotProps: {
|
|
4280
4510
|
root: {
|
|
4281
4511
|
component: props.buttonComponent ?? "button",
|
|
@@ -4289,19 +4519,19 @@ function IconMenuButton(props) {
|
|
|
4289
4519
|
}
|
|
4290
4520
|
},
|
|
4291
4521
|
icon
|
|
4292
|
-
), /* @__PURE__ */
|
|
4522
|
+
), /* @__PURE__ */ import_react34.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react34.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
|
|
4293
4523
|
}
|
|
4294
4524
|
IconMenuButton.displayName = "IconMenuButton";
|
|
4295
4525
|
|
|
4296
4526
|
// src/components/Markdown/Markdown.tsx
|
|
4297
|
-
var
|
|
4298
|
-
var
|
|
4299
|
-
var
|
|
4527
|
+
var import_react35 = __toESM(require("react"));
|
|
4528
|
+
var import_joy46 = require("@mui/joy");
|
|
4529
|
+
var import_joy47 = require("@mui/joy");
|
|
4300
4530
|
var import_remark_gfm = __toESM(require("remark-gfm"));
|
|
4301
|
-
var LazyReactMarkdown = (0,
|
|
4531
|
+
var LazyReactMarkdown = (0, import_react35.lazy)(() => import("react-markdown"));
|
|
4302
4532
|
var Markdown = (props) => {
|
|
4303
|
-
const [rehypeAccent2, setRehypeAccent] = (0,
|
|
4304
|
-
(0,
|
|
4533
|
+
const [rehypeAccent2, setRehypeAccent] = (0, import_react35.useState)(null);
|
|
4534
|
+
(0, import_react35.useEffect)(() => {
|
|
4305
4535
|
const loadRehypeAccent = async () => {
|
|
4306
4536
|
const module2 = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
|
|
4307
4537
|
setRehypeAccent(() => module2.rehypeAccent);
|
|
@@ -4323,12 +4553,12 @@ var Markdown = (props) => {
|
|
|
4323
4553
|
if (!rehypeAccent2) {
|
|
4324
4554
|
return null;
|
|
4325
4555
|
}
|
|
4326
|
-
return /* @__PURE__ */
|
|
4327
|
-
|
|
4556
|
+
return /* @__PURE__ */ import_react35.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react35.default.createElement(
|
|
4557
|
+
import_react35.Suspense,
|
|
4328
4558
|
{
|
|
4329
|
-
fallback: fallback || /* @__PURE__ */
|
|
4559
|
+
fallback: fallback || /* @__PURE__ */ import_react35.default.createElement(Typography, null, /* @__PURE__ */ import_react35.default.createElement(import_joy46.Skeleton, null, content || ""))
|
|
4330
4560
|
},
|
|
4331
|
-
/* @__PURE__ */
|
|
4561
|
+
/* @__PURE__ */ import_react35.default.createElement(
|
|
4332
4562
|
LazyReactMarkdown,
|
|
4333
4563
|
{
|
|
4334
4564
|
...markdownOptions,
|
|
@@ -4336,15 +4566,15 @@ var Markdown = (props) => {
|
|
|
4336
4566
|
rehypePlugins: [[rehypeAccent2, { accentColor }]],
|
|
4337
4567
|
remarkPlugins: [import_remark_gfm.default],
|
|
4338
4568
|
components: {
|
|
4339
|
-
h1: ({ children }) => /* @__PURE__ */
|
|
4340
|
-
h2: ({ children }) => /* @__PURE__ */
|
|
4341
|
-
h3: ({ children }) => /* @__PURE__ */
|
|
4342
|
-
h4: ({ children }) => /* @__PURE__ */
|
|
4343
|
-
p: ({ children, node }) => /* @__PURE__ */
|
|
4344
|
-
a: ({ children, href }) => /* @__PURE__ */
|
|
4345
|
-
hr: () => /* @__PURE__ */
|
|
4346
|
-
b: ({ children }) => /* @__PURE__ */
|
|
4347
|
-
strong: ({ children }) => /* @__PURE__ */
|
|
4569
|
+
h1: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { color, textColor, level: "h1" }, children),
|
|
4570
|
+
h2: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { color, textColor, level: "h2" }, children),
|
|
4571
|
+
h3: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { color, textColor, level: "h3" }, children),
|
|
4572
|
+
h4: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { color, textColor, level: "h4" }, children),
|
|
4573
|
+
p: ({ children, node }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { color, textColor, level: defaultLevel, ...node?.properties }, children),
|
|
4574
|
+
a: ({ children, href }) => /* @__PURE__ */ import_react35.default.createElement(import_joy47.Link, { href, target: defaultLinkAction }, children),
|
|
4575
|
+
hr: () => /* @__PURE__ */ import_react35.default.createElement(Divider, null),
|
|
4576
|
+
b: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
|
|
4577
|
+
strong: ({ children }) => /* @__PURE__ */ import_react35.default.createElement(Typography, { fontWeight: boldFontWeight }, children),
|
|
4348
4578
|
...markdownOptions?.components
|
|
4349
4579
|
}
|
|
4350
4580
|
}
|
|
@@ -4354,8 +4584,8 @@ var Markdown = (props) => {
|
|
|
4354
4584
|
Markdown.displayName = "Markdown";
|
|
4355
4585
|
|
|
4356
4586
|
// src/components/MenuButton/MenuButton.tsx
|
|
4357
|
-
var
|
|
4358
|
-
var
|
|
4587
|
+
var import_react36 = __toESM(require("react"));
|
|
4588
|
+
var import_joy48 = require("@mui/joy");
|
|
4359
4589
|
var import_ExpandMore = __toESM(require("@mui/icons-material/ExpandMore"));
|
|
4360
4590
|
function MenuButton(props) {
|
|
4361
4591
|
const {
|
|
@@ -4372,8 +4602,8 @@ function MenuButton(props) {
|
|
|
4372
4602
|
placement = "bottom"
|
|
4373
4603
|
} = props;
|
|
4374
4604
|
if (!items.length) {
|
|
4375
|
-
return /* @__PURE__ */
|
|
4376
|
-
|
|
4605
|
+
return /* @__PURE__ */ import_react36.default.createElement(
|
|
4606
|
+
import_joy48.Button,
|
|
4377
4607
|
{
|
|
4378
4608
|
component: props.buttonComponent ?? "button",
|
|
4379
4609
|
size,
|
|
@@ -4383,13 +4613,13 @@ function MenuButton(props) {
|
|
|
4383
4613
|
loading,
|
|
4384
4614
|
startDecorator,
|
|
4385
4615
|
...props.buttonComponentProps ?? {},
|
|
4386
|
-
endDecorator: showIcon ? /* @__PURE__ */
|
|
4616
|
+
endDecorator: showIcon ? /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react36.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, endDecorator)
|
|
4387
4617
|
},
|
|
4388
4618
|
buttonText
|
|
4389
4619
|
);
|
|
4390
4620
|
}
|
|
4391
|
-
return /* @__PURE__ */
|
|
4392
|
-
|
|
4621
|
+
return /* @__PURE__ */ import_react36.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react36.default.createElement(
|
|
4622
|
+
import_joy48.MenuButton,
|
|
4393
4623
|
{
|
|
4394
4624
|
component: props.buttonComponent ?? "button",
|
|
4395
4625
|
size,
|
|
@@ -4399,25 +4629,25 @@ function MenuButton(props) {
|
|
|
4399
4629
|
loading,
|
|
4400
4630
|
startDecorator,
|
|
4401
4631
|
...props.buttonComponentProps ?? {},
|
|
4402
|
-
endDecorator: showIcon ? /* @__PURE__ */
|
|
4632
|
+
endDecorator: showIcon ? /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react36.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react36.default.createElement(import_react36.default.Fragment, null, endDecorator)
|
|
4403
4633
|
},
|
|
4404
4634
|
buttonText
|
|
4405
|
-
), /* @__PURE__ */
|
|
4635
|
+
), /* @__PURE__ */ import_react36.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react36.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
|
|
4406
4636
|
}
|
|
4407
4637
|
MenuButton.displayName = "MenuButton";
|
|
4408
4638
|
|
|
4409
4639
|
// src/components/MonthPicker/MonthPicker.tsx
|
|
4410
|
-
var
|
|
4640
|
+
var import_react37 = __toESM(require("react"));
|
|
4411
4641
|
var import_CalendarToday3 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
4412
|
-
var
|
|
4642
|
+
var import_joy49 = require("@mui/joy");
|
|
4413
4643
|
var import_base4 = require("@mui/base");
|
|
4414
|
-
var StyledPopper3 = (0,
|
|
4644
|
+
var StyledPopper3 = (0, import_joy49.styled)(import_base4.Popper, {
|
|
4415
4645
|
name: "MonthPicker",
|
|
4416
4646
|
slot: "popper"
|
|
4417
4647
|
})(({ theme }) => ({
|
|
4418
4648
|
zIndex: theme.zIndex.tooltip
|
|
4419
4649
|
}));
|
|
4420
|
-
var CalendarSheet3 = (0,
|
|
4650
|
+
var CalendarSheet3 = (0, import_joy49.styled)(Sheet_default, {
|
|
4421
4651
|
name: "MonthPicker",
|
|
4422
4652
|
slot: "sheet",
|
|
4423
4653
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -4426,7 +4656,7 @@ var CalendarSheet3 = (0, import_joy47.styled)(Sheet_default, {
|
|
|
4426
4656
|
boxShadow: theme.shadow.md,
|
|
4427
4657
|
borderRadius: theme.radius.md
|
|
4428
4658
|
}));
|
|
4429
|
-
var MonthPickerRoot = (0,
|
|
4659
|
+
var MonthPickerRoot = (0, import_joy49.styled)("div", {
|
|
4430
4660
|
name: "MonthPicker",
|
|
4431
4661
|
slot: "root",
|
|
4432
4662
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -4462,8 +4692,8 @@ function parseDate3(dateString, format) {
|
|
|
4462
4692
|
const result = new Date(year, month, day);
|
|
4463
4693
|
return result;
|
|
4464
4694
|
}
|
|
4465
|
-
var MonthPicker = (0,
|
|
4466
|
-
const props = (0,
|
|
4695
|
+
var MonthPicker = (0, import_react37.forwardRef)((inProps, ref) => {
|
|
4696
|
+
const props = (0, import_joy49.useThemeProps)({ props: inProps, name: "MonthPicker" });
|
|
4467
4697
|
const {
|
|
4468
4698
|
onChange,
|
|
4469
4699
|
disabled,
|
|
@@ -4489,14 +4719,14 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4489
4719
|
locale,
|
|
4490
4720
|
...innerProps
|
|
4491
4721
|
} = props;
|
|
4492
|
-
const innerRef = (0,
|
|
4493
|
-
const buttonRef = (0,
|
|
4722
|
+
const innerRef = (0, import_react37.useRef)(null);
|
|
4723
|
+
const buttonRef = (0, import_react37.useRef)(null);
|
|
4494
4724
|
const [value, setValue, isControlled] = useControlledState(
|
|
4495
4725
|
props.value,
|
|
4496
4726
|
props.defaultValue || "",
|
|
4497
|
-
(0,
|
|
4727
|
+
(0, import_react37.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
4498
4728
|
);
|
|
4499
|
-
const getFormattedDisplayValue = (0,
|
|
4729
|
+
const getFormattedDisplayValue = (0, import_react37.useCallback)(
|
|
4500
4730
|
(inputValue) => {
|
|
4501
4731
|
if (!inputValue) return "";
|
|
4502
4732
|
try {
|
|
@@ -4507,19 +4737,19 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4507
4737
|
},
|
|
4508
4738
|
[format, displayFormat, locale]
|
|
4509
4739
|
);
|
|
4510
|
-
const [displayValue, setDisplayValue] = (0,
|
|
4511
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
4740
|
+
const [displayValue, setDisplayValue] = (0, import_react37.useState)(() => getFormattedDisplayValue(value));
|
|
4741
|
+
const [anchorEl, setAnchorEl] = (0, import_react37.useState)(null);
|
|
4512
4742
|
const open = Boolean(anchorEl);
|
|
4513
|
-
(0,
|
|
4743
|
+
(0, import_react37.useEffect)(() => {
|
|
4514
4744
|
if (!anchorEl) {
|
|
4515
4745
|
innerRef.current?.blur();
|
|
4516
4746
|
}
|
|
4517
4747
|
}, [anchorEl, innerRef]);
|
|
4518
|
-
(0,
|
|
4519
|
-
(0,
|
|
4748
|
+
(0, import_react37.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
4749
|
+
(0, import_react37.useEffect)(() => {
|
|
4520
4750
|
setDisplayValue(getFormattedDisplayValue(value));
|
|
4521
4751
|
}, [value, getFormattedDisplayValue]);
|
|
4522
|
-
const handleChange = (0,
|
|
4752
|
+
const handleChange = (0, import_react37.useCallback)(
|
|
4523
4753
|
(event) => {
|
|
4524
4754
|
const newValue = event.target.value;
|
|
4525
4755
|
setValue(newValue);
|
|
@@ -4529,21 +4759,21 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4529
4759
|
},
|
|
4530
4760
|
[setValue, getFormattedDisplayValue, isControlled]
|
|
4531
4761
|
);
|
|
4532
|
-
const handleCalendarToggle = (0,
|
|
4762
|
+
const handleCalendarToggle = (0, import_react37.useCallback)(
|
|
4533
4763
|
(event) => {
|
|
4534
4764
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
4535
4765
|
innerRef.current?.focus();
|
|
4536
4766
|
},
|
|
4537
4767
|
[anchorEl, setAnchorEl, innerRef]
|
|
4538
4768
|
);
|
|
4539
|
-
const handleInputMouseDown = (0,
|
|
4769
|
+
const handleInputMouseDown = (0, import_react37.useCallback)(
|
|
4540
4770
|
(event) => {
|
|
4541
4771
|
event.preventDefault();
|
|
4542
4772
|
buttonRef.current?.focus();
|
|
4543
4773
|
},
|
|
4544
4774
|
[buttonRef]
|
|
4545
4775
|
);
|
|
4546
|
-
return /* @__PURE__ */
|
|
4776
|
+
return /* @__PURE__ */ import_react37.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react37.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react37.default.createElement(import_react37.default.Fragment, null, /* @__PURE__ */ import_react37.default.createElement(
|
|
4547
4777
|
Input_default,
|
|
4548
4778
|
{
|
|
4549
4779
|
...innerProps,
|
|
@@ -4573,7 +4803,7 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4573
4803
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
4574
4804
|
fontFamily: "monospace"
|
|
4575
4805
|
},
|
|
4576
|
-
endDecorator: /* @__PURE__ */
|
|
4806
|
+
endDecorator: /* @__PURE__ */ import_react37.default.createElement(
|
|
4577
4807
|
IconButton_default,
|
|
4578
4808
|
{
|
|
4579
4809
|
ref: buttonRef,
|
|
@@ -4585,12 +4815,12 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4585
4815
|
"aria-expanded": open,
|
|
4586
4816
|
disabled
|
|
4587
4817
|
},
|
|
4588
|
-
/* @__PURE__ */
|
|
4818
|
+
/* @__PURE__ */ import_react37.default.createElement(import_CalendarToday3.default, null)
|
|
4589
4819
|
),
|
|
4590
4820
|
label,
|
|
4591
4821
|
helperText
|
|
4592
4822
|
}
|
|
4593
|
-
), open && /* @__PURE__ */
|
|
4823
|
+
), open && /* @__PURE__ */ import_react37.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react37.default.createElement(
|
|
4594
4824
|
StyledPopper3,
|
|
4595
4825
|
{
|
|
4596
4826
|
id: "month-picker-popper",
|
|
@@ -4609,7 +4839,7 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4609
4839
|
"aria-label": "Calendar Tooltip",
|
|
4610
4840
|
"aria-expanded": open
|
|
4611
4841
|
},
|
|
4612
|
-
/* @__PURE__ */
|
|
4842
|
+
/* @__PURE__ */ import_react37.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react37.default.createElement(
|
|
4613
4843
|
Calendar_default,
|
|
4614
4844
|
{
|
|
4615
4845
|
view: "month",
|
|
@@ -4630,14 +4860,14 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4630
4860
|
disablePast,
|
|
4631
4861
|
locale
|
|
4632
4862
|
}
|
|
4633
|
-
), /* @__PURE__ */
|
|
4863
|
+
), /* @__PURE__ */ import_react37.default.createElement(
|
|
4634
4864
|
DialogActions_default,
|
|
4635
4865
|
{
|
|
4636
4866
|
sx: {
|
|
4637
4867
|
p: 1
|
|
4638
4868
|
}
|
|
4639
4869
|
},
|
|
4640
|
-
/* @__PURE__ */
|
|
4870
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
4641
4871
|
Button_default,
|
|
4642
4872
|
{
|
|
4643
4873
|
size,
|
|
@@ -4660,18 +4890,18 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4660
4890
|
});
|
|
4661
4891
|
|
|
4662
4892
|
// src/components/MonthRangePicker/MonthRangePicker.tsx
|
|
4663
|
-
var
|
|
4893
|
+
var import_react38 = __toESM(require("react"));
|
|
4664
4894
|
var import_react_imask3 = require("react-imask");
|
|
4665
4895
|
var import_CalendarToday4 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
4666
|
-
var
|
|
4896
|
+
var import_joy50 = require("@mui/joy");
|
|
4667
4897
|
var import_base5 = require("@mui/base");
|
|
4668
|
-
var StyledPopper4 = (0,
|
|
4898
|
+
var StyledPopper4 = (0, import_joy50.styled)(import_base5.Popper, {
|
|
4669
4899
|
name: "MonthRangePicker",
|
|
4670
4900
|
slot: "popper"
|
|
4671
4901
|
})(({ theme }) => ({
|
|
4672
4902
|
zIndex: theme.zIndex.tooltip
|
|
4673
4903
|
}));
|
|
4674
|
-
var CalendarSheet4 = (0,
|
|
4904
|
+
var CalendarSheet4 = (0, import_joy50.styled)(Sheet_default, {
|
|
4675
4905
|
name: "MonthRangePicker",
|
|
4676
4906
|
slot: "sheet",
|
|
4677
4907
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -4681,7 +4911,7 @@ var CalendarSheet4 = (0, import_joy48.styled)(Sheet_default, {
|
|
|
4681
4911
|
boxShadow: theme.shadow.md,
|
|
4682
4912
|
borderRadius: theme.radius.md
|
|
4683
4913
|
}));
|
|
4684
|
-
var MonthRangePickerRoot = (0,
|
|
4914
|
+
var MonthRangePickerRoot = (0, import_joy50.styled)("div", {
|
|
4685
4915
|
name: "MonthRangePicker",
|
|
4686
4916
|
slot: "root",
|
|
4687
4917
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -4718,9 +4948,9 @@ var parseDates2 = (str) => {
|
|
|
4718
4948
|
var formatToPattern3 = (format) => {
|
|
4719
4949
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
|
|
4720
4950
|
};
|
|
4721
|
-
var TextMaskAdapter7 =
|
|
4951
|
+
var TextMaskAdapter7 = import_react38.default.forwardRef(function TextMaskAdapter8(props, ref) {
|
|
4722
4952
|
const { onChange, format, ...other } = props;
|
|
4723
|
-
return /* @__PURE__ */
|
|
4953
|
+
return /* @__PURE__ */ import_react38.default.createElement(
|
|
4724
4954
|
import_react_imask3.IMaskInput,
|
|
4725
4955
|
{
|
|
4726
4956
|
...other,
|
|
@@ -4748,8 +4978,8 @@ var TextMaskAdapter7 = import_react35.default.forwardRef(function TextMaskAdapte
|
|
|
4748
4978
|
}
|
|
4749
4979
|
);
|
|
4750
4980
|
});
|
|
4751
|
-
var MonthRangePicker = (0,
|
|
4752
|
-
const props = (0,
|
|
4981
|
+
var MonthRangePicker = (0, import_react38.forwardRef)((inProps, ref) => {
|
|
4982
|
+
const props = (0, import_joy50.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
|
|
4753
4983
|
const {
|
|
4754
4984
|
onChange,
|
|
4755
4985
|
disabled,
|
|
@@ -4768,35 +4998,35 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
4768
4998
|
size,
|
|
4769
4999
|
...innerProps
|
|
4770
5000
|
} = props;
|
|
4771
|
-
const innerRef = (0,
|
|
5001
|
+
const innerRef = (0, import_react38.useRef)(null);
|
|
4772
5002
|
const [value, setValue] = useControlledState(
|
|
4773
5003
|
props.value,
|
|
4774
5004
|
props.defaultValue || "",
|
|
4775
|
-
(0,
|
|
5005
|
+
(0, import_react38.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
4776
5006
|
);
|
|
4777
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
5007
|
+
const [anchorEl, setAnchorEl] = (0, import_react38.useState)(null);
|
|
4778
5008
|
const open = Boolean(anchorEl);
|
|
4779
|
-
const calendarValue = (0,
|
|
4780
|
-
(0,
|
|
5009
|
+
const calendarValue = (0, import_react38.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
|
|
5010
|
+
(0, import_react38.useEffect)(() => {
|
|
4781
5011
|
if (!anchorEl) {
|
|
4782
5012
|
innerRef.current?.blur();
|
|
4783
5013
|
}
|
|
4784
5014
|
}, [anchorEl, innerRef]);
|
|
4785
|
-
(0,
|
|
4786
|
-
const handleChange = (0,
|
|
5015
|
+
(0, import_react38.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
5016
|
+
const handleChange = (0, import_react38.useCallback)(
|
|
4787
5017
|
(event) => {
|
|
4788
5018
|
setValue(event.target.value);
|
|
4789
5019
|
},
|
|
4790
5020
|
[setValue]
|
|
4791
5021
|
);
|
|
4792
|
-
const handleCalendarToggle = (0,
|
|
5022
|
+
const handleCalendarToggle = (0, import_react38.useCallback)(
|
|
4793
5023
|
(event) => {
|
|
4794
5024
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
4795
5025
|
innerRef.current?.focus();
|
|
4796
5026
|
},
|
|
4797
5027
|
[anchorEl, setAnchorEl, innerRef]
|
|
4798
5028
|
);
|
|
4799
|
-
const handleCalendarChange = (0,
|
|
5029
|
+
const handleCalendarChange = (0, import_react38.useCallback)(
|
|
4800
5030
|
([date1, date2]) => {
|
|
4801
5031
|
if (!date1 || !date2) return;
|
|
4802
5032
|
setValue(formatValueString4([date1, date2], format));
|
|
@@ -4804,7 +5034,7 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
4804
5034
|
},
|
|
4805
5035
|
[setValue, setAnchorEl, format]
|
|
4806
5036
|
);
|
|
4807
|
-
return /* @__PURE__ */
|
|
5037
|
+
return /* @__PURE__ */ import_react38.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react38.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react38.default.createElement(import_react38.default.Fragment, null, /* @__PURE__ */ import_react38.default.createElement(
|
|
4808
5038
|
Input_default,
|
|
4809
5039
|
{
|
|
4810
5040
|
...innerProps,
|
|
@@ -4826,7 +5056,7 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
4826
5056
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
4827
5057
|
fontFamily: "monospace"
|
|
4828
5058
|
},
|
|
4829
|
-
endDecorator: /* @__PURE__ */
|
|
5059
|
+
endDecorator: /* @__PURE__ */ import_react38.default.createElement(
|
|
4830
5060
|
IconButton_default,
|
|
4831
5061
|
{
|
|
4832
5062
|
variant: "plain",
|
|
@@ -4836,12 +5066,12 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
4836
5066
|
"aria-haspopup": "dialog",
|
|
4837
5067
|
"aria-expanded": open
|
|
4838
5068
|
},
|
|
4839
|
-
/* @__PURE__ */
|
|
5069
|
+
/* @__PURE__ */ import_react38.default.createElement(import_CalendarToday4.default, null)
|
|
4840
5070
|
),
|
|
4841
5071
|
label,
|
|
4842
5072
|
helperText
|
|
4843
5073
|
}
|
|
4844
|
-
), open && /* @__PURE__ */
|
|
5074
|
+
), open && /* @__PURE__ */ import_react38.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react38.default.createElement(
|
|
4845
5075
|
StyledPopper4,
|
|
4846
5076
|
{
|
|
4847
5077
|
id: "month-range-picker-popper",
|
|
@@ -4860,7 +5090,7 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
4860
5090
|
"aria-label": "Calendar Tooltip",
|
|
4861
5091
|
"aria-expanded": open
|
|
4862
5092
|
},
|
|
4863
|
-
/* @__PURE__ */
|
|
5093
|
+
/* @__PURE__ */ import_react38.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react38.default.createElement(
|
|
4864
5094
|
Calendar_default,
|
|
4865
5095
|
{
|
|
4866
5096
|
view: "month",
|
|
@@ -4873,14 +5103,14 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
4873
5103
|
disableFuture,
|
|
4874
5104
|
disablePast
|
|
4875
5105
|
}
|
|
4876
|
-
), /* @__PURE__ */
|
|
5106
|
+
), /* @__PURE__ */ import_react38.default.createElement(
|
|
4877
5107
|
DialogActions_default,
|
|
4878
5108
|
{
|
|
4879
5109
|
sx: {
|
|
4880
5110
|
p: 1
|
|
4881
5111
|
}
|
|
4882
5112
|
},
|
|
4883
|
-
/* @__PURE__ */
|
|
5113
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
4884
5114
|
Button_default,
|
|
4885
5115
|
{
|
|
4886
5116
|
size,
|
|
@@ -4899,22 +5129,22 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
4899
5129
|
MonthRangePicker.displayName = "MonthRangePicker";
|
|
4900
5130
|
|
|
4901
5131
|
// src/components/NavigationGroup/NavigationGroup.tsx
|
|
4902
|
-
var
|
|
4903
|
-
var
|
|
4904
|
-
var AccordionSummary2 = (0,
|
|
5132
|
+
var import_react39 = __toESM(require("react"));
|
|
5133
|
+
var import_joy51 = require("@mui/joy");
|
|
5134
|
+
var AccordionSummary2 = (0, import_joy51.styled)(import_joy51.AccordionSummary, {
|
|
4905
5135
|
name: "NavigationGroup",
|
|
4906
5136
|
slot: "Summary",
|
|
4907
5137
|
shouldForwardProp: (prop) => prop !== "useIcon" && prop !== "level"
|
|
4908
5138
|
})(({ theme, useIcon, level }) => ({
|
|
4909
|
-
[`& .${
|
|
5139
|
+
[`& .${import_joy51.accordionSummaryClasses.button}`]: {
|
|
4910
5140
|
padding: theme.spacing(4, 6, 4, (useIcon ? 6 : 8) + (level || 0) * 8),
|
|
4911
|
-
[`&.${
|
|
5141
|
+
[`&.${import_joy51.accordionSummaryClasses.expanded}`]: {
|
|
4912
5142
|
color: theme.palette.primary.plainColor,
|
|
4913
5143
|
"--Icon-color": theme.palette.primary.plainColor
|
|
4914
5144
|
}
|
|
4915
5145
|
}
|
|
4916
5146
|
}));
|
|
4917
|
-
var AccordionDetails2 = (0,
|
|
5147
|
+
var AccordionDetails2 = (0, import_joy51.styled)(import_joy51.AccordionDetails, {
|
|
4918
5148
|
name: "NavigationGroup",
|
|
4919
5149
|
slot: "Details"
|
|
4920
5150
|
})(({ theme }) => ({
|
|
@@ -4923,13 +5153,13 @@ var AccordionDetails2 = (0, import_joy49.styled)(import_joy49.AccordionDetails,
|
|
|
4923
5153
|
}));
|
|
4924
5154
|
function NavigationGroup(props) {
|
|
4925
5155
|
const { title, children, startDecorator, level, ...rest } = props;
|
|
4926
|
-
return /* @__PURE__ */
|
|
5156
|
+
return /* @__PURE__ */ import_react39.default.createElement(import_joy51.Accordion, { ...rest }, /* @__PURE__ */ import_react39.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react39.default.createElement(import_joy51.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react39.default.createElement(AccordionDetails2, null, children));
|
|
4927
5157
|
}
|
|
4928
5158
|
|
|
4929
5159
|
// src/components/NavigationItem/NavigationItem.tsx
|
|
4930
|
-
var
|
|
4931
|
-
var
|
|
4932
|
-
var ListItemButton = (0,
|
|
5160
|
+
var import_react40 = __toESM(require("react"));
|
|
5161
|
+
var import_joy52 = require("@mui/joy");
|
|
5162
|
+
var ListItemButton = (0, import_joy52.styled)(import_joy52.ListItemButton, {
|
|
4933
5163
|
name: "NavigationItem",
|
|
4934
5164
|
slot: "Button",
|
|
4935
5165
|
shouldForwardProp: (prop) => prop !== "useIcon" && prop !== "level"
|
|
@@ -4943,7 +5173,7 @@ var ListItemButton = (0, import_joy50.styled)(import_joy50.ListItemButton, {
|
|
|
4943
5173
|
"&:active": {
|
|
4944
5174
|
backgroundColor: theme.palette.neutral.plainActiveBg
|
|
4945
5175
|
},
|
|
4946
|
-
[`&.${
|
|
5176
|
+
[`&.${import_joy52.listItemButtonClasses.selected}`]: {
|
|
4947
5177
|
color: theme.palette.primary.plainColor,
|
|
4948
5178
|
"--Icon-color": theme.palette.primary.plainColor,
|
|
4949
5179
|
"&:not(:hover):not(:active)": {
|
|
@@ -4956,7 +5186,7 @@ function NavigationItem(props) {
|
|
|
4956
5186
|
const handleClick = () => {
|
|
4957
5187
|
onClick?.(id);
|
|
4958
5188
|
};
|
|
4959
|
-
return /* @__PURE__ */
|
|
5189
|
+
return /* @__PURE__ */ import_react40.default.createElement(import_joy52.ListItem, { ...rest }, /* @__PURE__ */ import_react40.default.createElement(
|
|
4960
5190
|
ListItemButton,
|
|
4961
5191
|
{
|
|
4962
5192
|
level,
|
|
@@ -4965,21 +5195,21 @@ function NavigationItem(props) {
|
|
|
4965
5195
|
"aria-current": selected,
|
|
4966
5196
|
onClick: handleClick
|
|
4967
5197
|
},
|
|
4968
|
-
startDecorator && /* @__PURE__ */
|
|
5198
|
+
startDecorator && /* @__PURE__ */ import_react40.default.createElement(import_joy52.ListItemDecorator, null, startDecorator),
|
|
4969
5199
|
children
|
|
4970
5200
|
));
|
|
4971
5201
|
}
|
|
4972
5202
|
|
|
4973
5203
|
// src/components/Navigator/Navigator.tsx
|
|
4974
|
-
var
|
|
5204
|
+
var import_react41 = __toESM(require("react"));
|
|
4975
5205
|
function Navigator(props) {
|
|
4976
5206
|
const { items, level = 0, onSelect } = props;
|
|
4977
5207
|
const handleItemClick = (id) => {
|
|
4978
5208
|
onSelect?.(id);
|
|
4979
5209
|
};
|
|
4980
|
-
return /* @__PURE__ */
|
|
5210
|
+
return /* @__PURE__ */ import_react41.default.createElement("div", null, items.map((item, index) => {
|
|
4981
5211
|
if (item.type === "item") {
|
|
4982
|
-
return /* @__PURE__ */
|
|
5212
|
+
return /* @__PURE__ */ import_react41.default.createElement(
|
|
4983
5213
|
NavigationItem,
|
|
4984
5214
|
{
|
|
4985
5215
|
key: item.id,
|
|
@@ -4992,7 +5222,7 @@ function Navigator(props) {
|
|
|
4992
5222
|
item.title
|
|
4993
5223
|
);
|
|
4994
5224
|
} else if (item.type === "group") {
|
|
4995
|
-
return /* @__PURE__ */
|
|
5225
|
+
return /* @__PURE__ */ import_react41.default.createElement(
|
|
4996
5226
|
NavigationGroup,
|
|
4997
5227
|
{
|
|
4998
5228
|
key: `${item.title}-${index}`,
|
|
@@ -5010,16 +5240,16 @@ function Navigator(props) {
|
|
|
5010
5240
|
Navigator.displayName = "Navigator";
|
|
5011
5241
|
|
|
5012
5242
|
// src/components/PercentageInput/PercentageInput.tsx
|
|
5013
|
-
var
|
|
5243
|
+
var import_react42 = __toESM(require("react"));
|
|
5014
5244
|
var import_react_number_format2 = require("react-number-format");
|
|
5015
|
-
var
|
|
5245
|
+
var import_joy53 = require("@mui/joy");
|
|
5016
5246
|
var padDecimal = (value, decimalScale) => {
|
|
5017
5247
|
const [integer, decimal = ""] = `${value}`.split(".");
|
|
5018
5248
|
return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
|
|
5019
5249
|
};
|
|
5020
|
-
var TextMaskAdapter9 =
|
|
5250
|
+
var TextMaskAdapter9 = import_react42.default.forwardRef(function TextMaskAdapter10(props, ref) {
|
|
5021
5251
|
const { onChange, min, max, ...innerProps } = props;
|
|
5022
|
-
return /* @__PURE__ */
|
|
5252
|
+
return /* @__PURE__ */ import_react42.default.createElement(
|
|
5023
5253
|
import_react_number_format2.NumericFormat,
|
|
5024
5254
|
{
|
|
5025
5255
|
...innerProps,
|
|
@@ -5039,14 +5269,14 @@ var TextMaskAdapter9 = import_react39.default.forwardRef(function TextMaskAdapte
|
|
|
5039
5269
|
}
|
|
5040
5270
|
);
|
|
5041
5271
|
});
|
|
5042
|
-
var PercentageInputRoot = (0,
|
|
5272
|
+
var PercentageInputRoot = (0, import_joy53.styled)(Input_default, {
|
|
5043
5273
|
name: "PercentageInput",
|
|
5044
5274
|
slot: "Root",
|
|
5045
5275
|
overridesResolver: (props, styles) => styles.root
|
|
5046
5276
|
})({});
|
|
5047
|
-
var PercentageInput =
|
|
5277
|
+
var PercentageInput = import_react42.default.forwardRef(
|
|
5048
5278
|
function PercentageInput2(inProps, ref) {
|
|
5049
|
-
const props = (0,
|
|
5279
|
+
const props = (0, import_joy53.useThemeProps)({ props: inProps, name: "PercentageInput" });
|
|
5050
5280
|
const {
|
|
5051
5281
|
name,
|
|
5052
5282
|
onChange,
|
|
@@ -5067,18 +5297,18 @@ var PercentageInput = import_react39.default.forwardRef(
|
|
|
5067
5297
|
const [_value, setValue] = useControlledState(
|
|
5068
5298
|
props.value,
|
|
5069
5299
|
props.defaultValue,
|
|
5070
|
-
(0,
|
|
5300
|
+
(0, import_react42.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
5071
5301
|
);
|
|
5072
|
-
const [internalError, setInternalError] = (0,
|
|
5302
|
+
const [internalError, setInternalError] = (0, import_react42.useState)(
|
|
5073
5303
|
max && _value && _value > max || min && _value && _value < min
|
|
5074
5304
|
);
|
|
5075
|
-
const value = (0,
|
|
5305
|
+
const value = (0, import_react42.useMemo)(() => {
|
|
5076
5306
|
if (_value && useMinorUnit) {
|
|
5077
5307
|
return _value / Math.pow(10, maxDecimalScale);
|
|
5078
5308
|
}
|
|
5079
5309
|
return _value;
|
|
5080
5310
|
}, [_value, useMinorUnit, maxDecimalScale]);
|
|
5081
|
-
const handleChange = (0,
|
|
5311
|
+
const handleChange = (0, import_react42.useCallback)(
|
|
5082
5312
|
(event) => {
|
|
5083
5313
|
if (event.target.value === "") {
|
|
5084
5314
|
setValue(void 0);
|
|
@@ -5095,7 +5325,7 @@ var PercentageInput = import_react39.default.forwardRef(
|
|
|
5095
5325
|
},
|
|
5096
5326
|
[setValue, useMinorUnit, maxDecimalScale, min, max]
|
|
5097
5327
|
);
|
|
5098
|
-
return /* @__PURE__ */
|
|
5328
|
+
return /* @__PURE__ */ import_react42.default.createElement(
|
|
5099
5329
|
PercentageInputRoot,
|
|
5100
5330
|
{
|
|
5101
5331
|
...innerProps,
|
|
@@ -5126,41 +5356,41 @@ var PercentageInput = import_react39.default.forwardRef(
|
|
|
5126
5356
|
PercentageInput.displayName = "PercentageInput";
|
|
5127
5357
|
|
|
5128
5358
|
// src/components/Radio/Radio.tsx
|
|
5129
|
-
var
|
|
5130
|
-
var
|
|
5131
|
-
var MotionRadio = (0,
|
|
5359
|
+
var import_joy54 = require("@mui/joy");
|
|
5360
|
+
var import_framer_motion28 = require("framer-motion");
|
|
5361
|
+
var MotionRadio = (0, import_framer_motion28.motion)(import_joy54.Radio);
|
|
5132
5362
|
var Radio = MotionRadio;
|
|
5133
5363
|
Radio.displayName = "Radio";
|
|
5134
|
-
var MotionRadioGroup = (0,
|
|
5364
|
+
var MotionRadioGroup = (0, import_framer_motion28.motion)(import_joy54.RadioGroup);
|
|
5135
5365
|
var RadioGroup = MotionRadioGroup;
|
|
5136
5366
|
RadioGroup.displayName = "RadioGroup";
|
|
5137
5367
|
|
|
5138
5368
|
// src/components/RadioList/RadioList.tsx
|
|
5139
|
-
var
|
|
5369
|
+
var import_react43 = __toESM(require("react"));
|
|
5140
5370
|
function RadioList(props) {
|
|
5141
5371
|
const { items, ...innerProps } = props;
|
|
5142
|
-
return /* @__PURE__ */
|
|
5372
|
+
return /* @__PURE__ */ import_react43.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react43.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
|
|
5143
5373
|
}
|
|
5144
5374
|
RadioList.displayName = "RadioList";
|
|
5145
5375
|
|
|
5146
5376
|
// src/components/Stepper/Stepper.tsx
|
|
5147
|
-
var
|
|
5148
|
-
var
|
|
5377
|
+
var import_react44 = __toESM(require("react"));
|
|
5378
|
+
var import_joy55 = require("@mui/joy");
|
|
5149
5379
|
var import_Check = __toESM(require("@mui/icons-material/Check"));
|
|
5150
|
-
var
|
|
5151
|
-
var Step = (0,
|
|
5380
|
+
var import_framer_motion29 = require("framer-motion");
|
|
5381
|
+
var Step = (0, import_joy55.styled)(import_joy55.Step)({});
|
|
5152
5382
|
Step.displayName = "Step";
|
|
5153
|
-
var StepIndicator = (0,
|
|
5383
|
+
var StepIndicator = (0, import_joy55.styled)(import_joy55.StepIndicator)({});
|
|
5154
5384
|
StepIndicator.displayName = "StepIndicator";
|
|
5155
|
-
var StyledStepper = (0,
|
|
5385
|
+
var StyledStepper = (0, import_joy55.styled)(import_joy55.Stepper)(({ theme }) => ({
|
|
5156
5386
|
"--StepIndicator-size": "24px",
|
|
5157
5387
|
"--Step-gap": theme.spacing(2),
|
|
5158
5388
|
"--joy-palette-success-solidBg": "var(--joy-palette-success-400)",
|
|
5159
|
-
[`& .${
|
|
5389
|
+
[`& .${import_joy55.stepIndicatorClasses.root}`]: {
|
|
5160
5390
|
fontSize: "var(--ceed-fontSize-xs)"
|
|
5161
5391
|
}
|
|
5162
5392
|
}));
|
|
5163
|
-
var MotionStepper = (0,
|
|
5393
|
+
var MotionStepper = (0, import_framer_motion29.motion)(StyledStepper);
|
|
5164
5394
|
function Stepper(props) {
|
|
5165
5395
|
const {
|
|
5166
5396
|
steps,
|
|
@@ -5170,30 +5400,30 @@ function Stepper(props) {
|
|
|
5170
5400
|
inactiveLineColor = "neutral.300",
|
|
5171
5401
|
activeStep
|
|
5172
5402
|
} = props;
|
|
5173
|
-
return /* @__PURE__ */
|
|
5403
|
+
return /* @__PURE__ */ import_react44.default.createElement(
|
|
5174
5404
|
MotionStepper,
|
|
5175
5405
|
{
|
|
5176
5406
|
sx: (theme) => ({
|
|
5177
5407
|
"--StepIndicator-size": "24px",
|
|
5178
5408
|
"--Step-gap": theme.spacing(2),
|
|
5179
|
-
[`& .${
|
|
5409
|
+
[`& .${import_joy55.stepIndicatorClasses.root}`]: {
|
|
5180
5410
|
fontSize: "var(--ceed-fontSize-xs)"
|
|
5181
5411
|
},
|
|
5182
|
-
[`& .${
|
|
5412
|
+
[`& .${import_joy55.stepClasses.completed}`]: {
|
|
5183
5413
|
"&::after": { bgcolor: activeLineColor },
|
|
5184
|
-
[`& .${
|
|
5414
|
+
[`& .${import_joy55.stepIndicatorClasses.root}`]: {
|
|
5185
5415
|
bgcolor: activeColor
|
|
5186
5416
|
}
|
|
5187
5417
|
},
|
|
5188
|
-
[`& .${
|
|
5418
|
+
[`& .${import_joy55.stepClasses.active}`]: {
|
|
5189
5419
|
"&::after": { bgcolor: inactiveLineColor },
|
|
5190
|
-
[`& .${
|
|
5420
|
+
[`& .${import_joy55.stepIndicatorClasses.root}`]: {
|
|
5191
5421
|
bgcolor: activeColor
|
|
5192
5422
|
}
|
|
5193
5423
|
},
|
|
5194
|
-
[`& .${
|
|
5424
|
+
[`& .${import_joy55.stepClasses.disabled}`]: {
|
|
5195
5425
|
"&::after": { bgcolor: inactiveLineColor },
|
|
5196
|
-
[`& .${
|
|
5426
|
+
[`& .${import_joy55.stepIndicatorClasses.root}`]: {
|
|
5197
5427
|
bgcolor: inactiveColor
|
|
5198
5428
|
}
|
|
5199
5429
|
}
|
|
@@ -5204,16 +5434,16 @@ function Stepper(props) {
|
|
|
5204
5434
|
const completed = activeStep > i + 1;
|
|
5205
5435
|
const disabled = activeStep < i + 1;
|
|
5206
5436
|
const hasContent = step.label || step.extraContent;
|
|
5207
|
-
return /* @__PURE__ */
|
|
5437
|
+
return /* @__PURE__ */ import_react44.default.createElement(
|
|
5208
5438
|
Step,
|
|
5209
5439
|
{
|
|
5210
5440
|
key: `step-${i}`,
|
|
5211
|
-
indicator: /* @__PURE__ */
|
|
5441
|
+
indicator: /* @__PURE__ */ import_react44.default.createElement(StepIndicator, { variant: "solid", color: "primary" }, completed ? /* @__PURE__ */ import_react44.default.createElement(import_Check.default, null) : step.indicatorContent),
|
|
5212
5442
|
active,
|
|
5213
5443
|
completed,
|
|
5214
5444
|
disabled
|
|
5215
5445
|
},
|
|
5216
|
-
hasContent && /* @__PURE__ */
|
|
5446
|
+
hasContent && /* @__PURE__ */ import_react44.default.createElement(Stack_default, null, step.label && /* @__PURE__ */ import_react44.default.createElement(Typography_default, { level: "title-sm" }, step.label), step.extraContent && /* @__PURE__ */ import_react44.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent))
|
|
5217
5447
|
);
|
|
5218
5448
|
})
|
|
5219
5449
|
);
|
|
@@ -5221,11 +5451,11 @@ function Stepper(props) {
|
|
|
5221
5451
|
Stepper.displayName = "Stepper";
|
|
5222
5452
|
|
|
5223
5453
|
// src/components/Switch/Switch.tsx
|
|
5224
|
-
var
|
|
5225
|
-
var
|
|
5226
|
-
var
|
|
5227
|
-
var MotionSwitch = (0,
|
|
5228
|
-
var StyledThumb = (0,
|
|
5454
|
+
var import_react45 = __toESM(require("react"));
|
|
5455
|
+
var import_joy56 = require("@mui/joy");
|
|
5456
|
+
var import_framer_motion30 = require("framer-motion");
|
|
5457
|
+
var MotionSwitch = (0, import_framer_motion30.motion)(import_joy56.Switch);
|
|
5458
|
+
var StyledThumb = (0, import_joy56.styled)(import_framer_motion30.motion.div)({
|
|
5229
5459
|
"--Icon-fontSize": "calc(var(--Switch-thumbSize) * 0.75)",
|
|
5230
5460
|
display: "inline-flex",
|
|
5231
5461
|
justifyContent: "center",
|
|
@@ -5238,19 +5468,19 @@ var StyledThumb = (0, import_joy54.styled)(import_framer_motion29.motion.div)({
|
|
|
5238
5468
|
boxShadow: "var(--Switch-thumbShadow)",
|
|
5239
5469
|
color: "var(--Switch-thumbColor)",
|
|
5240
5470
|
backgroundColor: "var(--Switch-thumbBackground)",
|
|
5241
|
-
[`&.${
|
|
5471
|
+
[`&.${import_joy56.switchClasses.checked}`]: {
|
|
5242
5472
|
left: "unset",
|
|
5243
5473
|
right: "var(--Switch-thumbOffset)"
|
|
5244
5474
|
}
|
|
5245
5475
|
});
|
|
5246
|
-
var Thumb = (props) => /* @__PURE__ */
|
|
5476
|
+
var Thumb = (props) => /* @__PURE__ */ import_react45.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
|
|
5247
5477
|
var spring = {
|
|
5248
5478
|
type: "spring",
|
|
5249
5479
|
stiffness: 700,
|
|
5250
5480
|
damping: 30
|
|
5251
5481
|
};
|
|
5252
5482
|
var Switch = (props) => {
|
|
5253
|
-
return /* @__PURE__ */
|
|
5483
|
+
return /* @__PURE__ */ import_react45.default.createElement(
|
|
5254
5484
|
MotionSwitch,
|
|
5255
5485
|
{
|
|
5256
5486
|
...props,
|
|
@@ -5264,32 +5494,32 @@ var Switch = (props) => {
|
|
|
5264
5494
|
Switch.displayName = "Switch";
|
|
5265
5495
|
|
|
5266
5496
|
// src/components/Tabs/Tabs.tsx
|
|
5267
|
-
var
|
|
5268
|
-
var
|
|
5269
|
-
var StyledTabs = (0,
|
|
5497
|
+
var import_react46 = __toESM(require("react"));
|
|
5498
|
+
var import_joy57 = require("@mui/joy");
|
|
5499
|
+
var StyledTabs = (0, import_joy57.styled)(import_joy57.Tabs)(({ theme }) => ({
|
|
5270
5500
|
backgroundColor: theme.palette.background.body
|
|
5271
5501
|
}));
|
|
5272
5502
|
var Tabs = StyledTabs;
|
|
5273
5503
|
Tabs.displayName = "Tabs";
|
|
5274
|
-
var StyledTab = (0,
|
|
5504
|
+
var StyledTab = (0, import_joy57.styled)(import_joy57.Tab)(({ theme }) => ({
|
|
5275
5505
|
gap: theme.spacing(2),
|
|
5276
|
-
[`&:not(.${
|
|
5506
|
+
[`&:not(.${import_joy57.tabClasses.selected})`]: {
|
|
5277
5507
|
color: theme.palette.neutral[700]
|
|
5278
5508
|
},
|
|
5279
|
-
[`&.${
|
|
5509
|
+
[`&.${import_joy57.tabClasses.variantPlain}`]: {
|
|
5280
5510
|
backgroundColor: theme.palette.background.body
|
|
5281
5511
|
}
|
|
5282
5512
|
}));
|
|
5283
|
-
var Tab = (0,
|
|
5284
|
-
return /* @__PURE__ */
|
|
5513
|
+
var Tab = (0, import_react46.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
|
|
5514
|
+
return /* @__PURE__ */ import_react46.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
|
|
5285
5515
|
});
|
|
5286
5516
|
Tab.displayName = "Tab";
|
|
5287
|
-
var TabList =
|
|
5288
|
-
var TabPanel =
|
|
5517
|
+
var TabList = import_joy57.TabList;
|
|
5518
|
+
var TabPanel = import_joy57.TabPanel;
|
|
5289
5519
|
|
|
5290
5520
|
// src/components/ThemeProvider/ThemeProvider.tsx
|
|
5291
|
-
var
|
|
5292
|
-
var
|
|
5521
|
+
var import_react47 = __toESM(require("react"));
|
|
5522
|
+
var import_joy58 = require("@mui/joy");
|
|
5293
5523
|
var colorScheme = {
|
|
5294
5524
|
palette: {
|
|
5295
5525
|
danger: {
|
|
@@ -5342,7 +5572,7 @@ var colorScheme = {
|
|
|
5342
5572
|
}
|
|
5343
5573
|
}
|
|
5344
5574
|
};
|
|
5345
|
-
var defaultTheme = (0,
|
|
5575
|
+
var defaultTheme = (0, import_joy58.extendTheme)({
|
|
5346
5576
|
cssVarPrefix: "ceed",
|
|
5347
5577
|
spacing: 4,
|
|
5348
5578
|
breakpoints: {
|
|
@@ -5394,7 +5624,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5394
5624
|
},
|
|
5395
5625
|
styleOverrides: {
|
|
5396
5626
|
root: {
|
|
5397
|
-
[`.${
|
|
5627
|
+
[`.${import_joy58.inputClasses.root}`]: {
|
|
5398
5628
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5399
5629
|
"font-family": "monospace"
|
|
5400
5630
|
}
|
|
@@ -5407,7 +5637,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5407
5637
|
},
|
|
5408
5638
|
styleOverrides: {
|
|
5409
5639
|
root: {
|
|
5410
|
-
[`.${
|
|
5640
|
+
[`.${import_joy58.inputClasses.root}`]: {
|
|
5411
5641
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5412
5642
|
"font-family": "monospace"
|
|
5413
5643
|
}
|
|
@@ -5420,7 +5650,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5420
5650
|
},
|
|
5421
5651
|
styleOverrides: {
|
|
5422
5652
|
root: {
|
|
5423
|
-
[`.${
|
|
5653
|
+
[`.${import_joy58.inputClasses.root}`]: {
|
|
5424
5654
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5425
5655
|
"font-family": "monospace"
|
|
5426
5656
|
}
|
|
@@ -5433,7 +5663,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5433
5663
|
},
|
|
5434
5664
|
styleOverrides: {
|
|
5435
5665
|
root: {
|
|
5436
|
-
[`.${
|
|
5666
|
+
[`.${import_joy58.inputClasses.root}`]: {
|
|
5437
5667
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5438
5668
|
"font-family": "monospace"
|
|
5439
5669
|
}
|
|
@@ -5446,7 +5676,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5446
5676
|
},
|
|
5447
5677
|
styleOverrides: {
|
|
5448
5678
|
root: {
|
|
5449
|
-
[`.${
|
|
5679
|
+
[`.${import_joy58.inputClasses.root}`]: {
|
|
5450
5680
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5451
5681
|
"font-family": "monospace"
|
|
5452
5682
|
}
|
|
@@ -5488,7 +5718,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5488
5718
|
outline: `${theme.palette.primary[500]} solid 2px`,
|
|
5489
5719
|
outlineOffset: "-2px"
|
|
5490
5720
|
},
|
|
5491
|
-
[`& .${
|
|
5721
|
+
[`& .${import_joy58.checkboxClasses.root}`]: {
|
|
5492
5722
|
verticalAlign: "middle"
|
|
5493
5723
|
}
|
|
5494
5724
|
})
|
|
@@ -5538,13 +5768,13 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5538
5768
|
});
|
|
5539
5769
|
function ThemeProvider(props) {
|
|
5540
5770
|
const theme = props.theme || defaultTheme;
|
|
5541
|
-
return /* @__PURE__ */
|
|
5771
|
+
return /* @__PURE__ */ import_react47.default.createElement(import_react47.default.Fragment, null, /* @__PURE__ */ import_react47.default.createElement(import_joy58.CssVarsProvider, { theme }, /* @__PURE__ */ import_react47.default.createElement(import_joy58.CssBaseline, null), props.children));
|
|
5542
5772
|
}
|
|
5543
5773
|
ThemeProvider.displayName = "ThemeProvider";
|
|
5544
5774
|
|
|
5545
5775
|
// src/components/Uploader/Uploader.tsx
|
|
5546
|
-
var
|
|
5547
|
-
var
|
|
5776
|
+
var import_react48 = __toESM(require("react"));
|
|
5777
|
+
var import_joy59 = require("@mui/joy");
|
|
5548
5778
|
var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
|
|
5549
5779
|
var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
|
|
5550
5780
|
var import_ClearRounded = __toESM(require("@mui/icons-material/ClearRounded"));
|
|
@@ -5566,7 +5796,7 @@ var esmFiles = {
|
|
|
5566
5796
|
"@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js"
|
|
5567
5797
|
)
|
|
5568
5798
|
};
|
|
5569
|
-
var VisuallyHiddenInput = (0,
|
|
5799
|
+
var VisuallyHiddenInput = (0, import_joy59.styled)(import_joy59.Input)({
|
|
5570
5800
|
width: "1px",
|
|
5571
5801
|
height: "1px",
|
|
5572
5802
|
overflow: "hidden",
|
|
@@ -5575,18 +5805,18 @@ var VisuallyHiddenInput = (0, import_joy57.styled)(import_joy57.Input)({
|
|
|
5575
5805
|
clipPath: "inset(50%)",
|
|
5576
5806
|
position: "absolute"
|
|
5577
5807
|
});
|
|
5578
|
-
var PreviewRoot = (0,
|
|
5808
|
+
var PreviewRoot = (0, import_joy59.styled)(Stack_default, {
|
|
5579
5809
|
name: "Uploader",
|
|
5580
5810
|
slot: "PreviewRoot"
|
|
5581
5811
|
})({});
|
|
5582
|
-
var UploadCard = (0,
|
|
5812
|
+
var UploadCard = (0, import_joy59.styled)(Card, {
|
|
5583
5813
|
name: "Uploader",
|
|
5584
5814
|
slot: "UploadCard"
|
|
5585
5815
|
})(({ theme }) => ({
|
|
5586
5816
|
padding: theme.spacing(2.5),
|
|
5587
5817
|
border: `1px solid ${theme.palette.neutral.outlinedBorder}`
|
|
5588
5818
|
}));
|
|
5589
|
-
var UploadFileIcon = (0,
|
|
5819
|
+
var UploadFileIcon = (0, import_joy59.styled)(import_UploadFileRounded.default, {
|
|
5590
5820
|
name: "Uploader",
|
|
5591
5821
|
slot: "UploadFileIcon"
|
|
5592
5822
|
})(({ theme }) => ({
|
|
@@ -5594,7 +5824,7 @@ var UploadFileIcon = (0, import_joy57.styled)(import_UploadFileRounded.default,
|
|
|
5594
5824
|
width: "32px",
|
|
5595
5825
|
height: "32px"
|
|
5596
5826
|
}));
|
|
5597
|
-
var ClearIcon2 = (0,
|
|
5827
|
+
var ClearIcon2 = (0, import_joy59.styled)(import_ClearRounded.default, {
|
|
5598
5828
|
name: "Uploader",
|
|
5599
5829
|
slot: "ClearIcon"
|
|
5600
5830
|
})(({ theme }) => ({
|
|
@@ -5620,15 +5850,15 @@ var getFileSize = (n) => {
|
|
|
5620
5850
|
};
|
|
5621
5851
|
var Preview = (props) => {
|
|
5622
5852
|
const { files, uploaded, onDelete } = props;
|
|
5623
|
-
return /* @__PURE__ */
|
|
5853
|
+
return /* @__PURE__ */ import_react48.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react48.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react48.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react48.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react48.default.createElement(Stack_default, { flex: "1" }, /* @__PURE__ */ import_react48.default.createElement(Typography_default, { level: "body-sm", textColor: "common.black" }, file.name), !!file.size && /* @__PURE__ */ import_react48.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react48.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react48.default.createElement(ClearIcon2, null))))));
|
|
5624
5854
|
};
|
|
5625
|
-
var UploaderRoot = (0,
|
|
5855
|
+
var UploaderRoot = (0, import_joy59.styled)(Stack_default, {
|
|
5626
5856
|
name: "Uploader",
|
|
5627
5857
|
slot: "root"
|
|
5628
5858
|
})(({ theme }) => ({
|
|
5629
5859
|
gap: theme.spacing(2)
|
|
5630
5860
|
}));
|
|
5631
|
-
var FileDropZone = (0,
|
|
5861
|
+
var FileDropZone = (0, import_joy59.styled)(Sheet_default, {
|
|
5632
5862
|
name: "Uploader",
|
|
5633
5863
|
slot: "dropZone",
|
|
5634
5864
|
shouldForwardProp: (prop) => prop !== "error"
|
|
@@ -5644,7 +5874,7 @@ var FileDropZone = (0, import_joy57.styled)(Sheet_default, {
|
|
|
5644
5874
|
backgroundColor: theme.palette.background.surface,
|
|
5645
5875
|
border: error ? `1px solid ${theme.palette.danger.outlinedBorder}` : state === "idle" ? `1px solid ${theme.palette.neutral.outlinedBorder}` : `1px solid ${theme.palette.primary.outlinedBorder}`
|
|
5646
5876
|
}));
|
|
5647
|
-
var UploaderIcon = (0,
|
|
5877
|
+
var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
|
|
5648
5878
|
name: "Uploader",
|
|
5649
5879
|
slot: "iconContainer",
|
|
5650
5880
|
shouldForwardProp: (prop) => prop !== "error"
|
|
@@ -5653,7 +5883,7 @@ var UploaderIcon = (0, import_joy57.styled)(import_CloudUploadRounded.default, {
|
|
|
5653
5883
|
width: "32px",
|
|
5654
5884
|
height: "32px"
|
|
5655
5885
|
}));
|
|
5656
|
-
var Uploader =
|
|
5886
|
+
var Uploader = import_react48.default.memo(
|
|
5657
5887
|
(props) => {
|
|
5658
5888
|
const {
|
|
5659
5889
|
accept,
|
|
@@ -5668,14 +5898,14 @@ var Uploader = import_react45.default.memo(
|
|
|
5668
5898
|
disabled,
|
|
5669
5899
|
onDelete
|
|
5670
5900
|
} = props;
|
|
5671
|
-
const dropZoneRef = (0,
|
|
5672
|
-
const inputRef = (0,
|
|
5673
|
-
const [errorText, setErrorText] = (0,
|
|
5674
|
-
const [files, setFiles] = (0,
|
|
5675
|
-
const [uploaded, setUploaded] = (0,
|
|
5676
|
-
const [previewState, setPreviewState] = (0,
|
|
5677
|
-
const accepts = (0,
|
|
5678
|
-
const parsedAccepts = (0,
|
|
5901
|
+
const dropZoneRef = (0, import_react48.useRef)(null);
|
|
5902
|
+
const inputRef = (0, import_react48.useRef)(null);
|
|
5903
|
+
const [errorText, setErrorText] = (0, import_react48.useState)();
|
|
5904
|
+
const [files, setFiles] = (0, import_react48.useState)([]);
|
|
5905
|
+
const [uploaded, setUploaded] = (0, import_react48.useState)(props.uploaded || []);
|
|
5906
|
+
const [previewState, setPreviewState] = (0, import_react48.useState)("idle");
|
|
5907
|
+
const accepts = (0, import_react48.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
|
|
5908
|
+
const parsedAccepts = (0, import_react48.useMemo)(
|
|
5679
5909
|
() => accepts.flatMap((type) => {
|
|
5680
5910
|
if (["image/*", "video/*", "audio/*"].includes(type)) {
|
|
5681
5911
|
return ALL_EXTENSIONS_BY_TYPE[type];
|
|
@@ -5684,7 +5914,7 @@ var Uploader = import_react45.default.memo(
|
|
|
5684
5914
|
}),
|
|
5685
5915
|
[accepts]
|
|
5686
5916
|
);
|
|
5687
|
-
const helperText = (0,
|
|
5917
|
+
const helperText = (0, import_react48.useMemo)(() => {
|
|
5688
5918
|
const [allAcceptedTypes, acceptedTypes] = [
|
|
5689
5919
|
accepts.filter((accept2) => ["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
|
|
5690
5920
|
const [type] = accept2.split("/");
|
|
@@ -5711,12 +5941,12 @@ var Uploader = import_react45.default.memo(
|
|
|
5711
5941
|
}
|
|
5712
5942
|
return helperTexts.join(", ");
|
|
5713
5943
|
}, [accepts, maxFileTotalSize, maxCount]);
|
|
5714
|
-
const error = (0,
|
|
5715
|
-
const showDropZone = (0,
|
|
5944
|
+
const error = (0, import_react48.useMemo)(() => !!errorText || props.error, [props.error, errorText]);
|
|
5945
|
+
const showDropZone = (0, import_react48.useMemo)(
|
|
5716
5946
|
() => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
|
|
5717
5947
|
[files, maxCount, uploaded]
|
|
5718
5948
|
);
|
|
5719
|
-
const addFiles = (0,
|
|
5949
|
+
const addFiles = (0, import_react48.useCallback)(
|
|
5720
5950
|
(uploads) => {
|
|
5721
5951
|
try {
|
|
5722
5952
|
const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
|
|
@@ -5761,7 +5991,7 @@ var Uploader = import_react45.default.memo(
|
|
|
5761
5991
|
},
|
|
5762
5992
|
[files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
|
|
5763
5993
|
);
|
|
5764
|
-
(0,
|
|
5994
|
+
(0, import_react48.useEffect)(() => {
|
|
5765
5995
|
if (!dropZoneRef.current || disabled) {
|
|
5766
5996
|
return;
|
|
5767
5997
|
}
|
|
@@ -5799,7 +6029,7 @@ var Uploader = import_react45.default.memo(
|
|
|
5799
6029
|
);
|
|
5800
6030
|
return () => cleanup?.();
|
|
5801
6031
|
}, [disabled, addFiles]);
|
|
5802
|
-
(0,
|
|
6032
|
+
(0, import_react48.useEffect)(() => {
|
|
5803
6033
|
if (inputRef.current && minCount) {
|
|
5804
6034
|
if (files.length < minCount) {
|
|
5805
6035
|
inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
|
|
@@ -5808,14 +6038,14 @@ var Uploader = import_react45.default.memo(
|
|
|
5808
6038
|
}
|
|
5809
6039
|
}
|
|
5810
6040
|
}, [inputRef, files, minCount]);
|
|
5811
|
-
const handleFileChanged = (0,
|
|
6041
|
+
const handleFileChanged = (0, import_react48.useCallback)(
|
|
5812
6042
|
(event) => {
|
|
5813
6043
|
const files2 = Array.from(event.target.files || []);
|
|
5814
6044
|
addFiles(files2);
|
|
5815
6045
|
},
|
|
5816
6046
|
[addFiles]
|
|
5817
6047
|
);
|
|
5818
|
-
const handleDeleteFile = (0,
|
|
6048
|
+
const handleDeleteFile = (0, import_react48.useCallback)(
|
|
5819
6049
|
(deletedFile) => {
|
|
5820
6050
|
if (deletedFile instanceof File) {
|
|
5821
6051
|
setFiles((current) => {
|
|
@@ -5835,10 +6065,10 @@ var Uploader = import_react45.default.memo(
|
|
|
5835
6065
|
},
|
|
5836
6066
|
[name, onChange, onDelete]
|
|
5837
6067
|
);
|
|
5838
|
-
const handleUploaderButtonClick = (0,
|
|
6068
|
+
const handleUploaderButtonClick = (0, import_react48.useCallback)(() => {
|
|
5839
6069
|
inputRef.current?.click();
|
|
5840
6070
|
}, []);
|
|
5841
|
-
const uploader = /* @__PURE__ */
|
|
6071
|
+
const uploader = /* @__PURE__ */ import_react48.default.createElement(
|
|
5842
6072
|
FileDropZone,
|
|
5843
6073
|
{
|
|
5844
6074
|
state: previewState,
|
|
@@ -5846,8 +6076,8 @@ var Uploader = import_react45.default.memo(
|
|
|
5846
6076
|
ref: dropZoneRef,
|
|
5847
6077
|
onClick: handleUploaderButtonClick
|
|
5848
6078
|
},
|
|
5849
|
-
/* @__PURE__ */
|
|
5850
|
-
/* @__PURE__ */
|
|
6079
|
+
/* @__PURE__ */ import_react48.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react48.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText) })),
|
|
6080
|
+
/* @__PURE__ */ import_react48.default.createElement(
|
|
5851
6081
|
VisuallyHiddenInput,
|
|
5852
6082
|
{
|
|
5853
6083
|
disabled,
|
|
@@ -5870,7 +6100,7 @@ var Uploader = import_react45.default.memo(
|
|
|
5870
6100
|
}
|
|
5871
6101
|
)
|
|
5872
6102
|
);
|
|
5873
|
-
return /* @__PURE__ */
|
|
6103
|
+
return /* @__PURE__ */ import_react48.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react48.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react48.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react48.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react48.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react48.default.createElement("div", null, errorText), /* @__PURE__ */ import_react48.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react48.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
|
|
5874
6104
|
}
|
|
5875
6105
|
);
|
|
5876
6106
|
Uploader.displayName = "Uploader";
|