@ceed/cds 1.9.0 → 1.11.0-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/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 +13 -3
- package/dist/components/DataTable/utils.d.ts +16 -0
- package/dist/index.cjs +1587 -1539
- package/dist/index.js +912 -860
- package/framer/index.js +39 -39
- package/package.json +3 -2
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,1066 +1924,861 @@ 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"
|
|
1997
|
-
}
|
|
1998
|
-
},
|
|
1999
|
-
/* @__PURE__ */ import_react18.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
|
|
2000
|
-
), cellOrder.map((cellKey) => /* @__PURE__ */ import_react18.default.createElement(
|
|
2001
|
-
"td",
|
|
2002
|
-
{
|
|
2003
|
-
key: cellKey,
|
|
2004
|
-
style: {
|
|
2005
|
-
textAlign: rowOptions?.[cellKey]?.numeric ? "right" : "left"
|
|
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
|
+
}
|
|
2006
1956
|
}
|
|
2007
|
-
},
|
|
2008
|
-
row[cellKey]
|
|
2009
|
-
)))));
|
|
2010
|
-
}
|
|
2011
|
-
TableBody.displayName = "TableBody";
|
|
2012
|
-
|
|
2013
|
-
// src/components/DatePicker/DatePicker.tsx
|
|
2014
|
-
var import_react19 = __toESM(require("react"));
|
|
2015
|
-
var import_react_imask = require("react-imask");
|
|
2016
|
-
var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
2017
|
-
var import_joy27 = require("@mui/joy");
|
|
2018
|
-
var import_base2 = require("@mui/base");
|
|
2019
|
-
|
|
2020
|
-
// src/components/DialogActions/DialogActions.tsx
|
|
2021
|
-
var import_joy26 = require("@mui/joy");
|
|
2022
|
-
var import_framer_motion17 = require("framer-motion");
|
|
2023
|
-
var MotionDialogActions = (0, import_framer_motion17.motion)(import_joy26.DialogActions);
|
|
2024
|
-
var StyledDialogActions = (0, import_joy26.styled)(MotionDialogActions)(({ theme }) => ({
|
|
2025
|
-
padding: theme.spacing(2),
|
|
2026
|
-
gap: theme.spacing(2),
|
|
2027
|
-
flexDirection: "row",
|
|
2028
|
-
justifyContent: "flex-end"
|
|
2029
|
-
}));
|
|
2030
|
-
var DialogActions = StyledDialogActions;
|
|
2031
|
-
DialogActions.displayName = "DialogActions";
|
|
2032
|
-
|
|
2033
|
-
// src/components/DialogActions/index.ts
|
|
2034
|
-
var DialogActions_default = DialogActions;
|
|
2035
|
-
|
|
2036
|
-
// src/components/DatePicker/DatePicker.tsx
|
|
2037
|
-
var CalendarButton = (0, import_joy27.styled)(IconButton_default, {
|
|
2038
|
-
name: "DatePicker",
|
|
2039
|
-
slot: "calendarButton"
|
|
2040
|
-
})(({ theme }) => ({
|
|
2041
|
-
"&:focus": {
|
|
2042
|
-
"--Icon-color": "currentColor",
|
|
2043
|
-
outlineOffset: `${theme.getCssVar("focus-thickness")}`,
|
|
2044
|
-
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
|
|
2045
|
-
}
|
|
2046
|
-
}));
|
|
2047
|
-
var StyledPopper = (0, import_joy27.styled)(import_base2.Popper, {
|
|
2048
|
-
name: "DatePicker",
|
|
2049
|
-
slot: "popper"
|
|
2050
|
-
})(({ theme }) => ({
|
|
2051
|
-
zIndex: theme.zIndex.tooltip
|
|
2052
|
-
}));
|
|
2053
|
-
var CalendarSheet = (0, import_joy27.styled)(Sheet_default, {
|
|
2054
|
-
name: "DatePicker",
|
|
2055
|
-
slot: "sheet",
|
|
2056
|
-
overridesResolver: (props, styles) => styles.root
|
|
2057
|
-
})(({ theme }) => ({
|
|
2058
|
-
width: "264px",
|
|
2059
|
-
boxShadow: theme.shadow.md,
|
|
2060
|
-
borderRadius: theme.radius.md
|
|
2061
|
-
}));
|
|
2062
|
-
var DatePickerRoot = (0, import_joy27.styled)("div", {
|
|
2063
|
-
name: "DatePicker",
|
|
2064
|
-
slot: "root",
|
|
2065
|
-
overridesResolver: (props, styles) => styles.root
|
|
2066
|
-
})({
|
|
2067
|
-
width: "100%"
|
|
2068
|
-
});
|
|
2069
|
-
var validValueFormat = (value, format) => {
|
|
2070
|
-
try {
|
|
2071
|
-
const parsedValue = parseDate(value, format);
|
|
2072
|
-
if (parsedValue.toString() === "Invalid Date") {
|
|
2073
|
-
return false;
|
|
2074
1957
|
}
|
|
2075
|
-
|
|
2076
|
-
|
|
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);
|
|
2077
1966
|
}
|
|
2078
|
-
const regex = new RegExp(`^${format.replace(/Y/g, "\\d").replace(/M/g, "\\d").replace(/D/g, "\\d")}$`);
|
|
2079
|
-
return regex.test(value);
|
|
2080
|
-
} catch (e) {
|
|
2081
|
-
return false;
|
|
2082
1967
|
}
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
const year = date.getFullYear();
|
|
2088
|
-
if (Number(day) < 10) day = "0" + day;
|
|
2089
|
-
if (Number(month) < 10) month = "0" + month;
|
|
2090
|
-
return format.replace(/YYYY/g, year.toString()).replace(/MM/g, month).replace(/DD/g, day);
|
|
2091
|
-
};
|
|
2092
|
-
function parseDate(dateString, format) {
|
|
2093
|
-
const formatParts = format.split(/[-./\s]/);
|
|
2094
|
-
const dateParts = dateString.split(/[-./\s]/);
|
|
2095
|
-
if (formatParts.length !== dateParts.length) {
|
|
2096
|
-
throw new Error("Invalid date string or format");
|
|
1968
|
+
for (const column of columns) {
|
|
1969
|
+
if (!fieldsInGroupingModel.has(column.field)) {
|
|
1970
|
+
reorderedColumns.push(column);
|
|
1971
|
+
}
|
|
2097
1972
|
}
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
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
|
+
});
|
|
2111
1988
|
}
|
|
2112
1989
|
}
|
|
2113
|
-
const result = new Date(year, month, day);
|
|
2114
1990
|
return result;
|
|
2115
1991
|
}
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
const
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
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
|
+
}
|
|
2031
|
+
}
|
|
2153
2032
|
}
|
|
2154
|
-
|
|
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 };
|
|
2043
|
+
}
|
|
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"
|
|
2155
2061
|
});
|
|
2156
|
-
var
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
}
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
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"
|
|
2196
2110
|
}
|
|
2197
|
-
},
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
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))"
|
|
2202
2116
|
}
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
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}`
|
|
2206
2137
|
}
|
|
2207
|
-
},
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
return;
|
|
2227
|
-
}
|
|
2228
|
-
const isValidDisplayValue = validValueFormat(event.target.value, displayFormat);
|
|
2229
|
-
if (isValidDisplayValue) {
|
|
2230
|
-
const parsedDate = parseDate(event.target.value, displayFormat);
|
|
2231
|
-
const formattedValue = formatValueString(parsedDate, format);
|
|
2232
|
-
handleChange({
|
|
2233
|
-
target: {
|
|
2234
|
-
name: props.name,
|
|
2235
|
-
value: formattedValue
|
|
2236
|
-
}
|
|
2237
|
-
});
|
|
2238
|
-
}
|
|
2239
|
-
},
|
|
2240
|
-
[displayFormat, format, handleChange, props.name]
|
|
2241
|
-
);
|
|
2242
|
-
const handleCalendarToggle = (0, import_react19.useCallback)(
|
|
2243
|
-
(event) => {
|
|
2244
|
-
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
2245
|
-
setTimeout(() => {
|
|
2246
|
-
innerRef.current?.focus();
|
|
2247
|
-
}, 0);
|
|
2248
|
-
},
|
|
2249
|
-
[anchorEl, setAnchorEl, innerRef]
|
|
2250
|
-
);
|
|
2251
|
-
const handleInputMouseDown = (0, import_react19.useCallback)(
|
|
2252
|
-
(event) => {
|
|
2253
|
-
if (inputReadOnly) {
|
|
2254
|
-
event.preventDefault();
|
|
2255
|
-
buttonRef.current?.focus();
|
|
2256
|
-
}
|
|
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"
|
|
2257
2157
|
},
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
size,
|
|
2267
|
-
value: displayValue,
|
|
2268
|
-
onChange: handleDisplayInputChange,
|
|
2269
|
-
placeholder: displayFormat,
|
|
2270
|
-
disabled,
|
|
2271
|
-
required,
|
|
2272
|
-
error,
|
|
2273
|
-
slotProps: {
|
|
2274
|
-
input: {
|
|
2275
|
-
component: TextMaskAdapter3,
|
|
2276
|
-
ref: innerRef,
|
|
2277
|
-
format: displayFormat,
|
|
2278
|
-
sx: {
|
|
2279
|
-
"&:hover": {
|
|
2280
|
-
cursor: inputReadOnly || readOnly ? "default" : "text"
|
|
2281
|
-
}
|
|
2282
|
-
},
|
|
2283
|
-
onMouseDown: handleInputMouseDown
|
|
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`;
|
|
2284
2166
|
}
|
|
2285
|
-
}
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
variant: "plain",
|
|
2293
|
-
onClick: readOnly ? void 0 : handleCalendarToggle,
|
|
2294
|
-
"aria-label": "Toggle Calendar",
|
|
2295
|
-
"aria-controls": "date-picker-popper",
|
|
2296
|
-
"aria-haspopup": "dialog",
|
|
2297
|
-
"aria-expanded": open,
|
|
2298
|
-
disabled
|
|
2299
|
-
},
|
|
2300
|
-
/* @__PURE__ */ import_react19.default.createElement(import_CalendarToday.default, null)
|
|
2301
|
-
),
|
|
2302
|
-
label,
|
|
2303
|
-
helperText,
|
|
2304
|
-
readOnly: readOnly || inputReadOnly
|
|
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);
|
|
2305
2174
|
}
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
{
|
|
2309
|
-
id: "date-picker-popper",
|
|
2310
|
-
open: true,
|
|
2311
|
-
anchorEl,
|
|
2312
|
-
placement: "bottom-end",
|
|
2313
|
-
onMouseDown: (e) => e.preventDefault(),
|
|
2314
|
-
modifiers: [
|
|
2315
|
-
{
|
|
2316
|
-
name: "offset",
|
|
2317
|
-
options: {
|
|
2318
|
-
offset: [4, 4]
|
|
2319
|
-
}
|
|
2320
|
-
}
|
|
2321
|
-
],
|
|
2322
|
-
"aria-label": "Calendar Tooltip",
|
|
2323
|
-
"aria-expanded": open
|
|
2324
|
-
},
|
|
2325
|
-
/* @__PURE__ */ import_react19.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react19.default.createElement(
|
|
2326
|
-
Calendar_default,
|
|
2327
|
-
{
|
|
2328
|
-
value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
|
|
2329
|
-
onChange: ([date]) => {
|
|
2330
|
-
handleChange({
|
|
2331
|
-
target: {
|
|
2332
|
-
name: props.name,
|
|
2333
|
-
value: formatValueString(date, format)
|
|
2334
|
-
}
|
|
2335
|
-
});
|
|
2336
|
-
setAnchorEl(null);
|
|
2337
|
-
},
|
|
2338
|
-
minDate: minDate ? new Date(minDate) : void 0,
|
|
2339
|
-
maxDate: maxDate ? new Date(maxDate) : void 0,
|
|
2340
|
-
disableFuture,
|
|
2341
|
-
disablePast,
|
|
2342
|
-
shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
|
|
2343
|
-
}
|
|
2344
|
-
), !hideClearButton && /* @__PURE__ */ import_react19.default.createElement(
|
|
2345
|
-
DialogActions_default,
|
|
2346
|
-
{
|
|
2347
|
-
sx: {
|
|
2348
|
-
p: 1
|
|
2349
|
-
}
|
|
2350
|
-
},
|
|
2351
|
-
/* @__PURE__ */ import_react19.default.createElement(
|
|
2352
|
-
Button_default,
|
|
2353
|
-
{
|
|
2354
|
-
size,
|
|
2355
|
-
variant: "plain",
|
|
2356
|
-
color: "neutral",
|
|
2357
|
-
onClick: () => {
|
|
2358
|
-
handleChange({
|
|
2359
|
-
target: {
|
|
2360
|
-
name: props.name,
|
|
2361
|
-
value: ""
|
|
2362
|
-
}
|
|
2363
|
-
});
|
|
2364
|
-
setAnchorEl(null);
|
|
2365
|
-
}
|
|
2366
|
-
},
|
|
2367
|
-
"Clear"
|
|
2368
|
-
)
|
|
2369
|
-
))
|
|
2370
|
-
)))));
|
|
2371
|
-
});
|
|
2175
|
+
}
|
|
2176
|
+
);
|
|
2372
2177
|
|
|
2373
|
-
// src/components/
|
|
2374
|
-
var
|
|
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");
|
|
2375
2182
|
|
|
2376
|
-
// src/components/
|
|
2377
|
-
var
|
|
2378
|
-
var
|
|
2183
|
+
// src/components/DatePicker/DatePicker.tsx
|
|
2184
|
+
var import_react19 = __toESM(require("react"));
|
|
2185
|
+
var import_react_imask = require("react-imask");
|
|
2186
|
+
var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
2187
|
+
var import_joy27 = require("@mui/joy");
|
|
2188
|
+
var import_base2 = require("@mui/base");
|
|
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
|
+
|
|
2200
|
+
// src/components/DialogActions/DialogActions.tsx
|
|
2201
|
+
var import_joy26 = require("@mui/joy");
|
|
2379
2202
|
var import_framer_motion18 = require("framer-motion");
|
|
2380
|
-
var
|
|
2381
|
-
var
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
required,
|
|
2390
|
-
minRows = 2,
|
|
2391
|
-
maxRows = 4,
|
|
2392
|
-
// NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
|
|
2393
|
-
sx,
|
|
2394
|
-
className,
|
|
2395
|
-
...innerProps
|
|
2396
|
-
} = props;
|
|
2397
|
-
const textarea = /* @__PURE__ */ import_react20.default.createElement(
|
|
2398
|
-
MotionTextarea,
|
|
2399
|
-
{
|
|
2400
|
-
required,
|
|
2401
|
-
disabled,
|
|
2402
|
-
color: error ? "danger" : color,
|
|
2403
|
-
size,
|
|
2404
|
-
minRows,
|
|
2405
|
-
maxRows,
|
|
2406
|
-
...innerProps
|
|
2407
|
-
}
|
|
2408
|
-
);
|
|
2409
|
-
return /* @__PURE__ */ import_react20.default.createElement(
|
|
2410
|
-
FormControl_default,
|
|
2411
|
-
{
|
|
2412
|
-
required,
|
|
2413
|
-
disabled,
|
|
2414
|
-
color,
|
|
2415
|
-
size,
|
|
2416
|
-
error,
|
|
2417
|
-
sx,
|
|
2418
|
-
className
|
|
2419
|
-
},
|
|
2420
|
-
label && /* @__PURE__ */ import_react20.default.createElement(FormLabel_default, null, label),
|
|
2421
|
-
textarea,
|
|
2422
|
-
helperText && /* @__PURE__ */ import_react20.default.createElement(FormHelperText_default, null, helperText)
|
|
2423
|
-
);
|
|
2424
|
-
};
|
|
2425
|
-
Textarea.displayName = "Textarea";
|
|
2203
|
+
var MotionDialogActions = (0, import_framer_motion18.motion)(import_joy26.DialogActions);
|
|
2204
|
+
var StyledDialogActions = (0, import_joy26.styled)(MotionDialogActions)(({ theme }) => ({
|
|
2205
|
+
padding: theme.spacing(2),
|
|
2206
|
+
gap: theme.spacing(2),
|
|
2207
|
+
flexDirection: "row",
|
|
2208
|
+
justifyContent: "flex-end"
|
|
2209
|
+
}));
|
|
2210
|
+
var DialogActions = StyledDialogActions;
|
|
2211
|
+
DialogActions.displayName = "DialogActions";
|
|
2426
2212
|
|
|
2427
|
-
// src/components/
|
|
2428
|
-
var
|
|
2213
|
+
// src/components/DialogActions/index.ts
|
|
2214
|
+
var DialogActions_default = DialogActions;
|
|
2429
2215
|
|
|
2430
|
-
// src/components/
|
|
2431
|
-
var
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
label,
|
|
2440
|
-
helperText,
|
|
2441
|
-
error,
|
|
2442
|
-
size,
|
|
2443
|
-
color,
|
|
2444
|
-
disabled,
|
|
2445
|
-
required,
|
|
2446
|
-
onChange,
|
|
2447
|
-
// NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
|
|
2448
|
-
sx,
|
|
2449
|
-
className,
|
|
2450
|
-
...innerProps
|
|
2451
|
-
} = props;
|
|
2452
|
-
const options = (0, import_react21.useMemo)(
|
|
2453
|
-
() => props.options.map((option) => {
|
|
2454
|
-
if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
|
|
2455
|
-
return option;
|
|
2456
|
-
}
|
|
2457
|
-
return {
|
|
2458
|
-
value: option,
|
|
2459
|
-
label: option
|
|
2460
|
-
};
|
|
2461
|
-
}),
|
|
2462
|
-
[props.options]
|
|
2463
|
-
);
|
|
2464
|
-
const handleChange = (event, newValue) => {
|
|
2465
|
-
const _event = event || { target: {} };
|
|
2466
|
-
const newEvent = {
|
|
2467
|
-
..._event,
|
|
2468
|
-
target: {
|
|
2469
|
-
..._event.target,
|
|
2470
|
-
// @ts-expect-error target에 name이 있을 수 있다.
|
|
2471
|
-
name: _event.target?.name || props.name,
|
|
2472
|
-
value: newValue
|
|
2473
|
-
}
|
|
2474
|
-
};
|
|
2475
|
-
onChange?.(newEvent, newValue);
|
|
2476
|
-
};
|
|
2477
|
-
const select = /* @__PURE__ */ import_react21.default.createElement(
|
|
2478
|
-
import_joy29.Select,
|
|
2479
|
-
{
|
|
2480
|
-
...innerProps,
|
|
2481
|
-
required,
|
|
2482
|
-
disabled,
|
|
2483
|
-
size,
|
|
2484
|
-
color: error ? "danger" : color,
|
|
2485
|
-
onChange: handleChange
|
|
2486
|
-
},
|
|
2487
|
-
options.map((option) => /* @__PURE__ */ import_react21.default.createElement(Option, { key: option.value, value: option.value }, option.label))
|
|
2488
|
-
);
|
|
2489
|
-
return /* @__PURE__ */ import_react21.default.createElement(
|
|
2490
|
-
FormControl_default,
|
|
2491
|
-
{
|
|
2492
|
-
required,
|
|
2493
|
-
disabled,
|
|
2494
|
-
size,
|
|
2495
|
-
color,
|
|
2496
|
-
error,
|
|
2497
|
-
sx,
|
|
2498
|
-
className
|
|
2499
|
-
},
|
|
2500
|
-
label && /* @__PURE__ */ import_react21.default.createElement(FormLabel_default, null, label),
|
|
2501
|
-
select,
|
|
2502
|
-
helperText && /* @__PURE__ */ import_react21.default.createElement(FormHelperText_default, null, helperText)
|
|
2503
|
-
);
|
|
2504
|
-
}
|
|
2505
|
-
Select.displayName = "Select";
|
|
2506
|
-
|
|
2507
|
-
// src/components/Select/index.ts
|
|
2508
|
-
var Select_default = Select;
|
|
2509
|
-
|
|
2510
|
-
// src/components/Tooltip/Tooltip.tsx
|
|
2511
|
-
var import_react22 = __toESM(require("react"));
|
|
2512
|
-
var import_joy30 = require("@mui/joy");
|
|
2513
|
-
var import_framer_motion20 = require("framer-motion");
|
|
2514
|
-
var MotionTooltip = (0, import_framer_motion20.motion)(import_joy30.Tooltip);
|
|
2515
|
-
var Tooltip = (props) => {
|
|
2516
|
-
return /* @__PURE__ */ import_react22.default.createElement(MotionTooltip, { ...props });
|
|
2517
|
-
};
|
|
2518
|
-
Tooltip.displayName = "Tooltip";
|
|
2519
|
-
|
|
2520
|
-
// src/components/Tooltip/index.ts
|
|
2521
|
-
var Tooltip_default = Tooltip;
|
|
2522
|
-
|
|
2523
|
-
// src/components/DataTable/DataTable.tsx
|
|
2524
|
-
var import_framer_motion21 = require("framer-motion");
|
|
2525
|
-
|
|
2526
|
-
// src/components/Pagination/Pagination.tsx
|
|
2527
|
-
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
|
-
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
|
|
2216
|
+
// src/components/DatePicker/DatePicker.tsx
|
|
2217
|
+
var CalendarButton = (0, import_joy27.styled)(IconButton_default, {
|
|
2218
|
+
name: "DatePicker",
|
|
2219
|
+
slot: "calendarButton"
|
|
2220
|
+
})(({ theme }) => ({
|
|
2221
|
+
"&:focus": {
|
|
2222
|
+
"--Icon-color": "currentColor",
|
|
2223
|
+
outlineOffset: `${theme.getCssVar("focus-thickness")}`,
|
|
2224
|
+
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
|
|
2565
2225
|
}
|
|
2566
2226
|
}));
|
|
2567
|
-
var
|
|
2568
|
-
name: "
|
|
2569
|
-
slot: "
|
|
2570
|
-
})({})
|
|
2571
|
-
|
|
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]
|
|
2227
|
+
var StyledPopper = (0, import_joy27.styled)(import_base2.Popper, {
|
|
2228
|
+
name: "DatePicker",
|
|
2229
|
+
slot: "popper"
|
|
2230
|
+
})(({ theme }) => ({
|
|
2231
|
+
zIndex: theme.zIndex.tooltip
|
|
2580
2232
|
}));
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
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
|
-
var import_Info = __toESM(require("@mui/icons-material/Info"));
|
|
2667
|
-
var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
|
|
2668
|
-
name: "InfoSign",
|
|
2669
|
-
slot: "InfoSign"
|
|
2233
|
+
var CalendarSheet = (0, import_joy27.styled)(Sheet_default, {
|
|
2234
|
+
name: "DatePicker",
|
|
2235
|
+
slot: "sheet",
|
|
2236
|
+
overridesResolver: (props, styles) => styles.root
|
|
2670
2237
|
})(({ theme }) => ({
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2238
|
+
width: "264px",
|
|
2239
|
+
boxShadow: theme.shadow.md,
|
|
2240
|
+
borderRadius: theme.radius.md
|
|
2674
2241
|
}));
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react24.default.createElement("div", { key: `info-sign-${i}` }, line))
|
|
2688
|
-
},
|
|
2689
|
-
/* @__PURE__ */ import_react24.default.createElement(InfoIcon, null)
|
|
2690
|
-
);
|
|
2691
|
-
}
|
|
2692
|
-
|
|
2693
|
-
// src/components/InfoSign/index.ts
|
|
2694
|
-
var InfoSign_default = InfoSign;
|
|
2695
|
-
|
|
2696
|
-
// src/components/DataTable/DataTable.tsx
|
|
2697
|
-
function extractFieldsFromGroupingModel(items) {
|
|
2698
|
-
const fields = /* @__PURE__ */ new Set();
|
|
2699
|
-
for (const item of items) {
|
|
2700
|
-
if ("groupId" in item) {
|
|
2701
|
-
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
2702
|
-
const childFields = extractFieldsFromGroupingModel(children);
|
|
2703
|
-
childFields.forEach((field) => fields.add(field));
|
|
2704
|
-
} else {
|
|
2705
|
-
fields.add(item.field);
|
|
2242
|
+
var DatePickerRoot = (0, import_joy27.styled)("div", {
|
|
2243
|
+
name: "DatePicker",
|
|
2244
|
+
slot: "root",
|
|
2245
|
+
overridesResolver: (props, styles) => styles.root
|
|
2246
|
+
})({
|
|
2247
|
+
width: "100%"
|
|
2248
|
+
});
|
|
2249
|
+
var validValueFormat = (value, format) => {
|
|
2250
|
+
try {
|
|
2251
|
+
const parsedValue = parseDate(value, format);
|
|
2252
|
+
if (parsedValue.toString() === "Invalid Date") {
|
|
2253
|
+
return false;
|
|
2706
2254
|
}
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
}
|
|
2710
|
-
function reorderColumnsByGroupingModel(columns, columnGroupingModel) {
|
|
2711
|
-
const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
|
|
2712
|
-
const orderedFields = [];
|
|
2713
|
-
function collectFieldsInOrder(items) {
|
|
2714
|
-
for (const item of items) {
|
|
2715
|
-
if ("groupId" in item) {
|
|
2716
|
-
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
2717
|
-
collectFieldsInOrder(children);
|
|
2718
|
-
} else {
|
|
2719
|
-
if (!orderedFields.includes(item.field)) {
|
|
2720
|
-
orderedFields.push(item.field);
|
|
2721
|
-
}
|
|
2722
|
-
}
|
|
2255
|
+
if (value !== formatValueString(parsedValue, format)) {
|
|
2256
|
+
return false;
|
|
2723
2257
|
}
|
|
2258
|
+
const regex = new RegExp(`^${format.replace(/Y/g, "\\d").replace(/M/g, "\\d").replace(/D/g, "\\d")}$`);
|
|
2259
|
+
return regex.test(value);
|
|
2260
|
+
} catch (e) {
|
|
2261
|
+
return false;
|
|
2724
2262
|
}
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2263
|
+
};
|
|
2264
|
+
var formatValueString = (date, format) => {
|
|
2265
|
+
let day = `${date.getDate()}`;
|
|
2266
|
+
let month = `${date.getMonth() + 1}`;
|
|
2267
|
+
const year = date.getFullYear();
|
|
2268
|
+
if (Number(day) < 10) day = "0" + day;
|
|
2269
|
+
if (Number(month) < 10) month = "0" + month;
|
|
2270
|
+
return format.replace(/YYYY/g, year.toString()).replace(/MM/g, month).replace(/DD/g, day);
|
|
2271
|
+
};
|
|
2272
|
+
function parseDate(dateString, format) {
|
|
2273
|
+
const formatParts = format.split(/[-./\s]/);
|
|
2274
|
+
const dateParts = dateString.split(/[-./\s]/);
|
|
2275
|
+
if (formatParts.length !== dateParts.length) {
|
|
2276
|
+
throw new Error("Invalid date string or format");
|
|
2738
2277
|
}
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
columnIndex: columnIndex.current++
|
|
2753
|
-
});
|
|
2278
|
+
let day, month, year;
|
|
2279
|
+
for (let i = 0; i < formatParts.length; i++) {
|
|
2280
|
+
const value = parseInt(dateParts[i], 10);
|
|
2281
|
+
switch (formatParts[i]) {
|
|
2282
|
+
case "DD":
|
|
2283
|
+
day = value;
|
|
2284
|
+
break;
|
|
2285
|
+
case "MM":
|
|
2286
|
+
month = value - 1;
|
|
2287
|
+
break;
|
|
2288
|
+
case "YYYY":
|
|
2289
|
+
year = value;
|
|
2290
|
+
break;
|
|
2754
2291
|
}
|
|
2755
2292
|
}
|
|
2293
|
+
const result = new Date(year, month, day);
|
|
2756
2294
|
return result;
|
|
2757
2295
|
}
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
const
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
|
|
2777
|
-
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
}
|
|
2790
|
-
} else {
|
|
2791
|
-
const columnIndex = columnIndexMap.get(item.field);
|
|
2792
|
-
if (columnIndex !== void 0) {
|
|
2793
|
-
minIndex = Math.min(minIndex, columnIndex);
|
|
2794
|
-
maxIndex = Math.max(maxIndex, columnIndex);
|
|
2296
|
+
var formatToPattern = (format) => {
|
|
2297
|
+
return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
2298
|
+
};
|
|
2299
|
+
var TextMaskAdapter3 = import_react19.default.forwardRef(function TextMaskAdapter4(props, ref) {
|
|
2300
|
+
const { onChange, format, ...other } = props;
|
|
2301
|
+
return /* @__PURE__ */ import_react19.default.createElement(
|
|
2302
|
+
import_react_imask.IMaskInput,
|
|
2303
|
+
{
|
|
2304
|
+
...other,
|
|
2305
|
+
inputRef: ref,
|
|
2306
|
+
onAccept: (value) => onChange({ target: { name: props.name, value } }),
|
|
2307
|
+
mask: Date,
|
|
2308
|
+
pattern: formatToPattern(format),
|
|
2309
|
+
blocks: {
|
|
2310
|
+
D: {
|
|
2311
|
+
mask: import_react_imask.IMask.MaskedRange,
|
|
2312
|
+
from: 1,
|
|
2313
|
+
to: 31,
|
|
2314
|
+
maxLength: 2
|
|
2315
|
+
},
|
|
2316
|
+
M: {
|
|
2317
|
+
mask: import_react_imask.IMask.MaskedRange,
|
|
2318
|
+
from: 1,
|
|
2319
|
+
to: 12,
|
|
2320
|
+
maxLength: 2
|
|
2321
|
+
},
|
|
2322
|
+
Y: {
|
|
2323
|
+
mask: import_react_imask.IMask.MaskedRange,
|
|
2324
|
+
from: 1900,
|
|
2325
|
+
to: 9999,
|
|
2326
|
+
maxLength: 4
|
|
2795
2327
|
}
|
|
2796
|
-
}
|
|
2328
|
+
},
|
|
2329
|
+
format: (date) => formatValueString(date, format),
|
|
2330
|
+
parse: (str) => parseDate(str, format),
|
|
2331
|
+
autofix: "pad",
|
|
2332
|
+
overwrite: true
|
|
2797
2333
|
}
|
|
2798
|
-
|
|
2799
|
-
startIndex: minIndex === Infinity ? 0 : minIndex,
|
|
2800
|
-
colspan: maxIndex === -Infinity ? 0 : maxIndex - minIndex + 1
|
|
2801
|
-
};
|
|
2802
|
-
}
|
|
2803
|
-
processGroup(columnGroupingModel, 0);
|
|
2804
|
-
groupsByLevel.forEach((level) => {
|
|
2805
|
-
level.sort((a, b) => a.startIndex - b.startIndex);
|
|
2806
|
-
});
|
|
2807
|
-
return { groups: groupsByLevel, maxLevel, fieldsInGroupingModel };
|
|
2808
|
-
}
|
|
2809
|
-
function getTextAlign(props) {
|
|
2810
|
-
return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
|
|
2811
|
-
}
|
|
2812
|
-
var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react25.default.createElement(import_joy33.LinearProgress, { value: 8, variant: "plain" });
|
|
2813
|
-
var EllipsisDiv = (0, import_joy33.styled)("div", {
|
|
2814
|
-
name: "DataTable",
|
|
2815
|
-
slot: "textEllipsis"
|
|
2816
|
-
})({
|
|
2817
|
-
overflow: "hidden",
|
|
2818
|
-
textOverflow: "ellipsis",
|
|
2819
|
-
whiteSpace: "nowrap"
|
|
2334
|
+
);
|
|
2820
2335
|
});
|
|
2821
|
-
var
|
|
2822
|
-
const
|
|
2823
|
-
const
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
2828
|
-
|
|
2336
|
+
var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
2337
|
+
const props = (0, import_joy27.useThemeProps)({ props: inProps, name: "DatePicker" });
|
|
2338
|
+
const {
|
|
2339
|
+
onChange,
|
|
2340
|
+
disabled,
|
|
2341
|
+
label,
|
|
2342
|
+
error,
|
|
2343
|
+
helperText,
|
|
2344
|
+
minDate,
|
|
2345
|
+
maxDate,
|
|
2346
|
+
disableFuture,
|
|
2347
|
+
disablePast,
|
|
2348
|
+
required,
|
|
2349
|
+
// NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
|
|
2350
|
+
sx,
|
|
2351
|
+
className,
|
|
2352
|
+
format = "YYYY/MM/DD",
|
|
2353
|
+
displayFormat = "YYYY/MM/DD",
|
|
2354
|
+
size,
|
|
2355
|
+
inputReadOnly,
|
|
2356
|
+
hideClearButton,
|
|
2357
|
+
readOnly,
|
|
2358
|
+
shouldDisableDate,
|
|
2359
|
+
...innerProps
|
|
2360
|
+
} = props;
|
|
2361
|
+
const innerRef = (0, import_react19.useRef)(null);
|
|
2362
|
+
const buttonRef = (0, import_react19.useRef)(null);
|
|
2363
|
+
const [value, setValue] = useControlledState(
|
|
2364
|
+
props.value,
|
|
2365
|
+
props.defaultValue || "",
|
|
2366
|
+
(0, import_react19.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
2367
|
+
);
|
|
2368
|
+
const [displayValue, setDisplayValue] = (0, import_react19.useState)(
|
|
2369
|
+
() => value ? formatValueString(parseDate(value, format), displayFormat) : ""
|
|
2370
|
+
);
|
|
2371
|
+
const [anchorEl, setAnchorEl] = (0, import_react19.useState)(null);
|
|
2372
|
+
const open = Boolean(anchorEl);
|
|
2373
|
+
(0, import_react19.useEffect)(() => {
|
|
2374
|
+
if (!anchorEl) {
|
|
2375
|
+
innerRef.current?.blur();
|
|
2829
2376
|
}
|
|
2830
|
-
}, [
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
return content;
|
|
2836
|
-
};
|
|
2837
|
-
var CellTextEllipsis = ({ children }) => {
|
|
2838
|
-
const textRef = (0, import_react25.useRef)(null);
|
|
2839
|
-
const [showTooltip, setShowTooltip] = (0, import_react25.useState)(false);
|
|
2840
|
-
(0, import_react25.useLayoutEffect)(() => {
|
|
2841
|
-
const element = textRef.current;
|
|
2842
|
-
if (element) {
|
|
2843
|
-
const isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
2844
|
-
setShowTooltip(isTextTruncated);
|
|
2377
|
+
}, [anchorEl, innerRef]);
|
|
2378
|
+
(0, import_react19.useEffect)(() => {
|
|
2379
|
+
if (value === "") {
|
|
2380
|
+
setDisplayValue("");
|
|
2381
|
+
return;
|
|
2845
2382
|
}
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
|
|
2870
|
-
|
|
2871
|
-
|
|
2872
|
-
|
|
2873
|
-
|
|
2874
|
-
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
|
|
2882
|
-
|
|
2883
|
-
|
|
2884
|
-
|
|
2885
|
-
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2383
|
+
const formattedValue = formatValueString(parseDate(value, format), displayFormat);
|
|
2384
|
+
if (validValueFormat(formattedValue, displayFormat) && formattedValue !== displayValue) {
|
|
2385
|
+
setDisplayValue(formattedValue);
|
|
2386
|
+
}
|
|
2387
|
+
}, [displayFormat, displayValue, format, value]);
|
|
2388
|
+
(0, import_react19.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
2389
|
+
const handleChange = (0, import_react19.useCallback)(
|
|
2390
|
+
(event) => {
|
|
2391
|
+
const value2 = event.target.value;
|
|
2392
|
+
setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat) : value2);
|
|
2393
|
+
setValue(value2);
|
|
2394
|
+
},
|
|
2395
|
+
[displayFormat, format, setValue]
|
|
2396
|
+
);
|
|
2397
|
+
const handleDisplayInputChange = (0, import_react19.useCallback)(
|
|
2398
|
+
(event) => {
|
|
2399
|
+
if (event.target.value === "") {
|
|
2400
|
+
handleChange({
|
|
2401
|
+
target: {
|
|
2402
|
+
name: props.name,
|
|
2403
|
+
value: ""
|
|
2404
|
+
}
|
|
2405
|
+
});
|
|
2406
|
+
return;
|
|
2407
|
+
}
|
|
2408
|
+
const isValidDisplayValue = validValueFormat(event.target.value, displayFormat);
|
|
2409
|
+
if (isValidDisplayValue) {
|
|
2410
|
+
const parsedDate = parseDate(event.target.value, displayFormat);
|
|
2411
|
+
const formattedValue = formatValueString(parsedDate, format);
|
|
2412
|
+
handleChange({
|
|
2413
|
+
target: {
|
|
2414
|
+
name: props.name,
|
|
2415
|
+
value: formattedValue
|
|
2416
|
+
}
|
|
2417
|
+
});
|
|
2418
|
+
}
|
|
2419
|
+
},
|
|
2420
|
+
[displayFormat, format, handleChange, props.name]
|
|
2421
|
+
);
|
|
2422
|
+
const handleCalendarToggle = (0, import_react19.useCallback)(
|
|
2423
|
+
(event) => {
|
|
2424
|
+
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
2425
|
+
setTimeout(() => {
|
|
2426
|
+
innerRef.current?.focus();
|
|
2427
|
+
}, 0);
|
|
2428
|
+
},
|
|
2429
|
+
[anchorEl, setAnchorEl, innerRef]
|
|
2430
|
+
);
|
|
2431
|
+
const handleInputMouseDown = (0, import_react19.useCallback)(
|
|
2432
|
+
(event) => {
|
|
2433
|
+
if (inputReadOnly) {
|
|
2434
|
+
event.preventDefault();
|
|
2435
|
+
buttonRef.current?.focus();
|
|
2436
|
+
}
|
|
2437
|
+
},
|
|
2438
|
+
[inputReadOnly, buttonRef]
|
|
2439
|
+
);
|
|
2440
|
+
return /* @__PURE__ */ import_react19.default.createElement(DatePickerRoot, null, /* @__PURE__ */ import_react19.default.createElement(import_base2.FocusTrap, { open: true }, /* @__PURE__ */ import_react19.default.createElement(import_react19.default.Fragment, null, /* @__PURE__ */ import_react19.default.createElement(
|
|
2441
|
+
Input_default,
|
|
2442
|
+
{
|
|
2443
|
+
...innerProps,
|
|
2444
|
+
color: error ? "danger" : innerProps.color,
|
|
2445
|
+
ref: innerRef,
|
|
2446
|
+
size,
|
|
2447
|
+
value: displayValue,
|
|
2448
|
+
onChange: handleDisplayInputChange,
|
|
2449
|
+
placeholder: displayFormat,
|
|
2450
|
+
disabled,
|
|
2451
|
+
required,
|
|
2452
|
+
error,
|
|
2453
|
+
slotProps: {
|
|
2454
|
+
input: {
|
|
2455
|
+
component: TextMaskAdapter3,
|
|
2456
|
+
ref: innerRef,
|
|
2457
|
+
format: displayFormat,
|
|
2458
|
+
sx: {
|
|
2459
|
+
"&:hover": {
|
|
2460
|
+
cursor: inputReadOnly || readOnly ? "default" : "text"
|
|
2461
|
+
}
|
|
2462
|
+
},
|
|
2463
|
+
onMouseDown: handleInputMouseDown
|
|
2898
2464
|
}
|
|
2899
|
-
}
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2465
|
+
},
|
|
2466
|
+
className,
|
|
2467
|
+
sx,
|
|
2468
|
+
endDecorator: /* @__PURE__ */ import_react19.default.createElement(
|
|
2469
|
+
CalendarButton,
|
|
2470
|
+
{
|
|
2471
|
+
ref: buttonRef,
|
|
2472
|
+
variant: "plain",
|
|
2473
|
+
onClick: readOnly ? void 0 : handleCalendarToggle,
|
|
2474
|
+
"aria-label": "Toggle Calendar",
|
|
2475
|
+
"aria-controls": "date-picker-popper",
|
|
2476
|
+
"aria-haspopup": "dialog",
|
|
2477
|
+
"aria-expanded": open,
|
|
2478
|
+
disabled
|
|
2479
|
+
},
|
|
2480
|
+
/* @__PURE__ */ import_react19.default.createElement(import_CalendarToday.default, null)
|
|
2481
|
+
),
|
|
2482
|
+
label,
|
|
2483
|
+
helperText,
|
|
2484
|
+
readOnly: readOnly || inputReadOnly
|
|
2906
2485
|
}
|
|
2907
|
-
}
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2486
|
+
), open && /* @__PURE__ */ import_react19.default.createElement(import_base2.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react19.default.createElement(
|
|
2487
|
+
StyledPopper,
|
|
2488
|
+
{
|
|
2489
|
+
id: "date-picker-popper",
|
|
2490
|
+
open: true,
|
|
2491
|
+
anchorEl,
|
|
2492
|
+
placement: "bottom-end",
|
|
2493
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
2494
|
+
modifiers: [
|
|
2495
|
+
{
|
|
2496
|
+
name: "offset",
|
|
2497
|
+
options: {
|
|
2498
|
+
offset: [4, 4]
|
|
2499
|
+
}
|
|
2500
|
+
}
|
|
2501
|
+
],
|
|
2502
|
+
"aria-label": "Calendar Tooltip",
|
|
2503
|
+
"aria-expanded": open
|
|
2504
|
+
},
|
|
2505
|
+
/* @__PURE__ */ import_react19.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react19.default.createElement(
|
|
2506
|
+
Calendar_default,
|
|
2507
|
+
{
|
|
2508
|
+
value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
|
|
2509
|
+
onChange: ([date]) => {
|
|
2510
|
+
handleChange({
|
|
2511
|
+
target: {
|
|
2512
|
+
name: props.name,
|
|
2513
|
+
value: formatValueString(date, format)
|
|
2514
|
+
}
|
|
2515
|
+
});
|
|
2516
|
+
setAnchorEl(null);
|
|
2517
|
+
},
|
|
2518
|
+
minDate: minDate ? new Date(minDate) : void 0,
|
|
2519
|
+
maxDate: maxDate ? new Date(maxDate) : void 0,
|
|
2520
|
+
disableFuture,
|
|
2521
|
+
disablePast,
|
|
2522
|
+
shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
|
|
2523
|
+
}
|
|
2524
|
+
), !hideClearButton && /* @__PURE__ */ import_react19.default.createElement(
|
|
2525
|
+
DialogActions_default,
|
|
2526
|
+
{
|
|
2527
|
+
sx: {
|
|
2528
|
+
p: 1
|
|
2529
|
+
}
|
|
2530
|
+
},
|
|
2531
|
+
/* @__PURE__ */ import_react19.default.createElement(
|
|
2532
|
+
Button_default,
|
|
2533
|
+
{
|
|
2534
|
+
size,
|
|
2535
|
+
variant: "plain",
|
|
2536
|
+
color: "neutral",
|
|
2537
|
+
onClick: () => {
|
|
2538
|
+
handleChange({
|
|
2539
|
+
target: {
|
|
2540
|
+
name: props.name,
|
|
2541
|
+
value: ""
|
|
2542
|
+
}
|
|
2543
|
+
});
|
|
2544
|
+
setAnchorEl(null);
|
|
2545
|
+
}
|
|
2546
|
+
},
|
|
2547
|
+
"Clear"
|
|
2548
|
+
)
|
|
2549
|
+
))
|
|
2550
|
+
)))));
|
|
2933
2551
|
});
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2552
|
+
|
|
2553
|
+
// src/components/DatePicker/index.ts
|
|
2554
|
+
var DatePicker_default = DatePicker;
|
|
2555
|
+
|
|
2556
|
+
// src/components/Textarea/Textarea.tsx
|
|
2557
|
+
var import_react20 = __toESM(require("react"));
|
|
2558
|
+
var import_joy28 = require("@mui/joy");
|
|
2559
|
+
var import_framer_motion19 = require("framer-motion");
|
|
2560
|
+
var MotionTextarea = (0, import_framer_motion19.motion)(import_joy28.Textarea);
|
|
2561
|
+
var Textarea = (props) => {
|
|
2562
|
+
const {
|
|
2563
|
+
label,
|
|
2564
|
+
error,
|
|
2565
|
+
helperText,
|
|
2566
|
+
color,
|
|
2567
|
+
size,
|
|
2568
|
+
disabled,
|
|
2569
|
+
required,
|
|
2570
|
+
minRows = 2,
|
|
2571
|
+
maxRows = 4,
|
|
2572
|
+
// NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
|
|
2573
|
+
sx,
|
|
2574
|
+
className,
|
|
2575
|
+
...innerProps
|
|
2576
|
+
} = props;
|
|
2577
|
+
const textarea = /* @__PURE__ */ import_react20.default.createElement(
|
|
2578
|
+
MotionTextarea,
|
|
2579
|
+
{
|
|
2580
|
+
required,
|
|
2581
|
+
disabled,
|
|
2582
|
+
color: error ? "danger" : color,
|
|
2583
|
+
size,
|
|
2584
|
+
minRows,
|
|
2585
|
+
maxRows,
|
|
2586
|
+
...innerProps
|
|
2950
2587
|
}
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2588
|
+
);
|
|
2589
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
2590
|
+
FormControl_default,
|
|
2591
|
+
{
|
|
2592
|
+
required,
|
|
2593
|
+
disabled,
|
|
2594
|
+
color,
|
|
2595
|
+
size,
|
|
2596
|
+
error,
|
|
2597
|
+
sx,
|
|
2598
|
+
className
|
|
2599
|
+
},
|
|
2600
|
+
label && /* @__PURE__ */ import_react20.default.createElement(FormLabel_default, null, label),
|
|
2601
|
+
textarea,
|
|
2602
|
+
helperText && /* @__PURE__ */ import_react20.default.createElement(FormHelperText_default, null, helperText)
|
|
2603
|
+
);
|
|
2604
|
+
};
|
|
2605
|
+
Textarea.displayName = "Textarea";
|
|
2606
|
+
|
|
2607
|
+
// src/components/Textarea/index.ts
|
|
2608
|
+
var Textarea_default = Textarea;
|
|
2609
|
+
|
|
2610
|
+
// src/components/Select/Select.tsx
|
|
2611
|
+
var import_react21 = __toESM(require("react"));
|
|
2612
|
+
var import_joy29 = require("@mui/joy");
|
|
2613
|
+
var import_framer_motion20 = require("framer-motion");
|
|
2614
|
+
var MotionOption = (0, import_framer_motion20.motion)(import_joy29.Option);
|
|
2615
|
+
var Option = MotionOption;
|
|
2616
|
+
Option.displayName = "Option";
|
|
2617
|
+
function Select(props) {
|
|
2618
|
+
const {
|
|
2619
|
+
label,
|
|
2620
|
+
helperText,
|
|
2621
|
+
error,
|
|
2622
|
+
size,
|
|
2623
|
+
color,
|
|
2624
|
+
disabled,
|
|
2625
|
+
required,
|
|
2626
|
+
onChange,
|
|
2627
|
+
// NOTE: 스타일 관련된 props는 최상위 엘리먼트에 적용한다.
|
|
2628
|
+
sx,
|
|
2629
|
+
className,
|
|
2630
|
+
...innerProps
|
|
2631
|
+
} = props;
|
|
2632
|
+
const options = (0, import_react21.useMemo)(
|
|
2633
|
+
() => props.options.map((option) => {
|
|
2634
|
+
if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
|
|
2635
|
+
return option;
|
|
2636
|
+
}
|
|
2637
|
+
return {
|
|
2638
|
+
value: option,
|
|
2639
|
+
label: option
|
|
2640
|
+
};
|
|
2641
|
+
}),
|
|
2642
|
+
[props.options]
|
|
2643
|
+
);
|
|
2644
|
+
const handleChange = (event, newValue) => {
|
|
2645
|
+
const _event = event || { target: {} };
|
|
2646
|
+
const newEvent = {
|
|
2647
|
+
..._event,
|
|
2648
|
+
target: {
|
|
2649
|
+
..._event.target,
|
|
2650
|
+
// @ts-expect-error target에 name이 있을 수 있다.
|
|
2651
|
+
name: _event.target?.name || props.name,
|
|
2652
|
+
value: newValue
|
|
2653
|
+
}
|
|
2654
|
+
};
|
|
2655
|
+
onChange?.(newEvent, newValue);
|
|
2656
|
+
};
|
|
2657
|
+
const select = /* @__PURE__ */ import_react21.default.createElement(
|
|
2658
|
+
import_joy29.Select,
|
|
2659
|
+
{
|
|
2660
|
+
...innerProps,
|
|
2661
|
+
required,
|
|
2662
|
+
disabled,
|
|
2663
|
+
size,
|
|
2664
|
+
color: error ? "danger" : color,
|
|
2665
|
+
onChange: handleChange
|
|
2666
|
+
},
|
|
2667
|
+
options.map((option) => /* @__PURE__ */ import_react21.default.createElement(Option, { key: option.value, value: option.value }, option.label))
|
|
2668
|
+
);
|
|
2669
|
+
return /* @__PURE__ */ import_react21.default.createElement(
|
|
2670
|
+
FormControl_default,
|
|
2671
|
+
{
|
|
2672
|
+
required,
|
|
2673
|
+
disabled,
|
|
2674
|
+
size,
|
|
2675
|
+
color,
|
|
2676
|
+
error,
|
|
2677
|
+
sx,
|
|
2678
|
+
className
|
|
2679
|
+
},
|
|
2680
|
+
label && /* @__PURE__ */ import_react21.default.createElement(FormLabel_default, null, label),
|
|
2681
|
+
select,
|
|
2682
|
+
helperText && /* @__PURE__ */ import_react21.default.createElement(FormHelperText_default, null, helperText)
|
|
2683
|
+
);
|
|
2684
|
+
}
|
|
2685
|
+
Select.displayName = "Select";
|
|
2686
|
+
|
|
2687
|
+
// src/components/Select/index.ts
|
|
2688
|
+
var Select_default = Select;
|
|
2689
|
+
|
|
2690
|
+
// src/components/DataTable/components.tsx
|
|
2691
|
+
var import_joy33 = require("@mui/joy");
|
|
2692
|
+
|
|
2693
|
+
// src/components/Tooltip/Tooltip.tsx
|
|
2694
|
+
var import_react22 = __toESM(require("react"));
|
|
2695
|
+
var import_joy30 = require("@mui/joy");
|
|
2696
|
+
var import_framer_motion21 = require("framer-motion");
|
|
2697
|
+
var MotionTooltip = (0, import_framer_motion21.motion)(import_joy30.Tooltip);
|
|
2698
|
+
var Tooltip = (props) => {
|
|
2699
|
+
return /* @__PURE__ */ import_react22.default.createElement(MotionTooltip, { ...props });
|
|
2700
|
+
};
|
|
2701
|
+
Tooltip.displayName = "Tooltip";
|
|
2702
|
+
|
|
2703
|
+
// src/components/Tooltip/index.ts
|
|
2704
|
+
var Tooltip_default = Tooltip;
|
|
2705
|
+
|
|
2706
|
+
// src/components/InfoSign/InfoSign.tsx
|
|
2707
|
+
var import_react23 = __toESM(require("react"));
|
|
2708
|
+
var import_joy31 = require("@mui/joy");
|
|
2709
|
+
var import_Info = __toESM(require("@mui/icons-material/Info"));
|
|
2710
|
+
var InfoIcon = (0, import_joy31.styled)(import_Info.default, {
|
|
2711
|
+
name: "InfoSign",
|
|
2712
|
+
slot: "InfoSign"
|
|
2962
2713
|
})(({ theme }) => ({
|
|
2963
|
-
color:
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
var StyledTh = (0, import_joy33.styled)(import_framer_motion21.motion.th)(({ theme }) => ({
|
|
2967
|
-
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
2968
|
-
// border 대신 box-shadow를 사용하여 stickyHeader와 함께 사용할 때 border가 겹치는 문제를 해결
|
|
2714
|
+
color: theme.palette.text.icon,
|
|
2715
|
+
width: "14px",
|
|
2716
|
+
height: "14px"
|
|
2969
2717
|
}));
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2718
|
+
function InfoSign(props) {
|
|
2719
|
+
const { message, placement } = props;
|
|
2720
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
2721
|
+
Tooltip_default,
|
|
2722
|
+
{
|
|
2723
|
+
arrow: true,
|
|
2724
|
+
placement,
|
|
2725
|
+
sx: {
|
|
2726
|
+
[`&.${import_joy31.tooltipClasses.root}`]: {
|
|
2727
|
+
maxWidth: "320px"
|
|
2728
|
+
}
|
|
2729
|
+
},
|
|
2730
|
+
title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react23.default.createElement("div", { key: `info-sign-${i}` }, line))
|
|
2731
|
+
},
|
|
2732
|
+
/* @__PURE__ */ import_react23.default.createElement(InfoIcon, null)
|
|
2733
|
+
);
|
|
2734
|
+
}
|
|
2735
|
+
|
|
2736
|
+
// src/components/InfoSign/index.ts
|
|
2737
|
+
var InfoSign_default = InfoSign;
|
|
2738
|
+
|
|
2739
|
+
// src/components/DataTable/components.tsx
|
|
2740
|
+
var TextEllipsis = ({ children }) => {
|
|
2741
|
+
const textRef = (0, import_react24.useRef)(null);
|
|
2742
|
+
const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
|
|
2743
|
+
(0, import_react24.useLayoutEffect)(() => {
|
|
2744
|
+
const element = textRef.current;
|
|
2745
|
+
if (element) {
|
|
2746
|
+
const isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
2747
|
+
setShowTooltip(isTextTruncated);
|
|
2978
2748
|
}
|
|
2979
|
-
},
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2749
|
+
}, [children]);
|
|
2750
|
+
const content = /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef }, children);
|
|
2751
|
+
if (showTooltip) {
|
|
2752
|
+
return /* @__PURE__ */ import_react24.default.createElement(Tooltip_default, { title: children, placement: "top", onClick: (e) => e.stopPropagation() }, content);
|
|
2753
|
+
}
|
|
2754
|
+
return content;
|
|
2755
|
+
};
|
|
2756
|
+
var CellTextEllipsis = ({ children }) => {
|
|
2757
|
+
const textRef = (0, import_react24.useRef)(null);
|
|
2758
|
+
const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
|
|
2759
|
+
(0, import_react24.useLayoutEffect)(() => {
|
|
2760
|
+
const element = textRef.current;
|
|
2761
|
+
if (element) {
|
|
2762
|
+
const isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
2763
|
+
setShowTooltip(isTextTruncated);
|
|
2983
2764
|
}
|
|
2765
|
+
}, [children]);
|
|
2766
|
+
const content = /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef }, children);
|
|
2767
|
+
if (showTooltip) {
|
|
2768
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
2769
|
+
Tooltip_default,
|
|
2770
|
+
{
|
|
2771
|
+
title: children,
|
|
2772
|
+
placement: "top",
|
|
2773
|
+
enterDelay: 800,
|
|
2774
|
+
enterNextDelay: 200,
|
|
2775
|
+
onClick: (e) => e.stopPropagation()
|
|
2776
|
+
},
|
|
2777
|
+
content
|
|
2778
|
+
);
|
|
2984
2779
|
}
|
|
2985
|
-
|
|
2986
|
-
|
|
2780
|
+
return content;
|
|
2781
|
+
};
|
|
2987
2782
|
var HeadCell = (props) => {
|
|
2988
2783
|
const {
|
|
2989
2784
|
width,
|
|
@@ -3006,19 +2801,20 @@ var HeadCell = (props) => {
|
|
|
3006
2801
|
pinnedStartPosition,
|
|
3007
2802
|
pinnedEndPosition,
|
|
3008
2803
|
headerRef,
|
|
3009
|
-
tableColRef
|
|
2804
|
+
tableColRef,
|
|
2805
|
+
headerClassName
|
|
3010
2806
|
} = props;
|
|
3011
|
-
const theme = (0,
|
|
2807
|
+
const theme = (0, import_joy32.useTheme)();
|
|
3012
2808
|
const ref = headerRef;
|
|
3013
2809
|
const colRef = tableColRef;
|
|
3014
|
-
const [isHovered, setIsHovered] = (0,
|
|
2810
|
+
const [isHovered, setIsHovered] = (0, import_react24.useState)(false);
|
|
3015
2811
|
const sortable = type === "actions" ? false : _sortable;
|
|
3016
|
-
const headId = (0,
|
|
2812
|
+
const headId = (0, import_react24.useMemo)(
|
|
3017
2813
|
() => `${tableId}_header_${headerName ?? field}`.trim(),
|
|
3018
2814
|
[tableId, headerName, field]
|
|
3019
2815
|
);
|
|
3020
|
-
const resizer = (0,
|
|
3021
|
-
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)(
|
|
3022
2818
|
() => ({
|
|
3023
2819
|
width,
|
|
3024
2820
|
minWidth: minWidth ?? "50px",
|
|
@@ -3036,10 +2832,10 @@ var HeadCell = (props) => {
|
|
|
3036
2832
|
);
|
|
3037
2833
|
const textAlign = getTextAlign(props);
|
|
3038
2834
|
const initialSort = sortOrder[0];
|
|
3039
|
-
const sortIcon = (0,
|
|
2835
|
+
const sortIcon = (0, import_react24.useMemo)(() => {
|
|
3040
2836
|
const isSorted = !!sort;
|
|
3041
2837
|
const isVisible = sortable && (isSorted || isHovered);
|
|
3042
|
-
return /* @__PURE__ */
|
|
2838
|
+
return /* @__PURE__ */ import_react24.default.createElement(import_framer_motion22.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react24.default.createElement(
|
|
3043
2839
|
MotionSortIcon,
|
|
3044
2840
|
{
|
|
3045
2841
|
key: "sort-icon",
|
|
@@ -3067,11 +2863,21 @@ var HeadCell = (props) => {
|
|
|
3067
2863
|
}
|
|
3068
2864
|
));
|
|
3069
2865
|
}, [headId, initialSort, sort, sortable, isHovered]);
|
|
3070
|
-
const infoSign = (0,
|
|
3071
|
-
() => description ? /* @__PURE__ */
|
|
2866
|
+
const infoSign = (0, import_react24.useMemo)(
|
|
2867
|
+
() => description ? /* @__PURE__ */ import_react24.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
|
|
3072
2868
|
[description]
|
|
3073
2869
|
);
|
|
3074
|
-
|
|
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(
|
|
3075
2881
|
StyledTh,
|
|
3076
2882
|
{
|
|
3077
2883
|
id: headId,
|
|
@@ -3080,16 +2886,17 @@ var HeadCell = (props) => {
|
|
|
3080
2886
|
ref,
|
|
3081
2887
|
key: field,
|
|
3082
2888
|
style,
|
|
3083
|
-
onClick: (0,
|
|
2889
|
+
onClick: (0, import_react24.useCallback)(
|
|
3084
2890
|
(e) => sortable && onSortChange?.({ field, currentSort: sort, multiple: e.shiftKey }),
|
|
3085
2891
|
[field, onSortChange, sort, sortable]
|
|
3086
2892
|
),
|
|
3087
2893
|
onMouseEnter: () => setIsHovered(true),
|
|
3088
2894
|
onMouseLeave: () => setIsHovered(false),
|
|
3089
2895
|
whileHover: "hover",
|
|
3090
|
-
initial: "initial"
|
|
2896
|
+
initial: "initial",
|
|
2897
|
+
className: computedHeaderClassName
|
|
3091
2898
|
},
|
|
3092
|
-
/* @__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),
|
|
3093
2900
|
resizer
|
|
3094
2901
|
);
|
|
3095
2902
|
};
|
|
@@ -3113,10 +2920,10 @@ var BodyCell = (props) => {
|
|
|
3113
2920
|
onCellEditStart,
|
|
3114
2921
|
onCellEditStop
|
|
3115
2922
|
} = props;
|
|
3116
|
-
const theme = (0,
|
|
3117
|
-
const [value, setValue] = (0,
|
|
3118
|
-
const cellRef = (0,
|
|
3119
|
-
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)(
|
|
3120
2927
|
() => ({
|
|
3121
2928
|
row,
|
|
3122
2929
|
value,
|
|
@@ -3125,19 +2932,19 @@ var BodyCell = (props) => {
|
|
|
3125
2932
|
}),
|
|
3126
2933
|
[row, rowId, value, field]
|
|
3127
2934
|
);
|
|
3128
|
-
const editMode = (0,
|
|
2935
|
+
const editMode = (0, import_react24.useMemo)(
|
|
3129
2936
|
() => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
|
|
3130
2937
|
[props.editMode, isCellEditable, params]
|
|
3131
2938
|
);
|
|
3132
2939
|
const propsComponentProps = "componentProps" in props ? props.componentProps : null;
|
|
3133
|
-
const componentProps = (0,
|
|
2940
|
+
const componentProps = (0, import_react24.useMemo)(
|
|
3134
2941
|
() => ({
|
|
3135
2942
|
..."componentProps" in props && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
|
|
3136
2943
|
size: "sm"
|
|
3137
2944
|
}),
|
|
3138
2945
|
[props, propsComponentProps, params]
|
|
3139
2946
|
);
|
|
3140
|
-
const editModeComponentProps = (0,
|
|
2947
|
+
const editModeComponentProps = (0, import_react24.useMemo)(
|
|
3141
2948
|
() => ({
|
|
3142
2949
|
...componentProps,
|
|
3143
2950
|
onChange: (e) => {
|
|
@@ -3199,23 +3006,23 @@ var BodyCell = (props) => {
|
|
|
3199
3006
|
}),
|
|
3200
3007
|
[params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
|
|
3201
3008
|
);
|
|
3202
|
-
const EditModeComponent = (0,
|
|
3009
|
+
const EditModeComponent = (0, import_react24.useMemo)(() => {
|
|
3203
3010
|
if (renderEditCell) {
|
|
3204
|
-
return (0,
|
|
3011
|
+
return (0, import_react24.createElement)((0, import_react24.memo)(renderEditCell), params);
|
|
3205
3012
|
}
|
|
3206
3013
|
return {
|
|
3207
|
-
date: /* @__PURE__ */
|
|
3208
|
-
currency: /* @__PURE__ */
|
|
3014
|
+
date: /* @__PURE__ */ import_react24.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
|
|
3015
|
+
currency: /* @__PURE__ */ import_react24.default.createElement(
|
|
3209
3016
|
CurrencyInput_default,
|
|
3210
3017
|
{
|
|
3211
3018
|
value,
|
|
3212
3019
|
...editModeComponentProps
|
|
3213
3020
|
}
|
|
3214
3021
|
),
|
|
3215
|
-
number: /* @__PURE__ */
|
|
3216
|
-
text: /* @__PURE__ */
|
|
3217
|
-
longText: /* @__PURE__ */
|
|
3218
|
-
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(
|
|
3219
3026
|
Autocomplete_default,
|
|
3220
3027
|
{
|
|
3221
3028
|
value,
|
|
@@ -3223,7 +3030,7 @@ var BodyCell = (props) => {
|
|
|
3223
3030
|
...editModeComponentProps
|
|
3224
3031
|
}
|
|
3225
3032
|
),
|
|
3226
|
-
select: /* @__PURE__ */
|
|
3033
|
+
select: /* @__PURE__ */ import_react24.default.createElement(
|
|
3227
3034
|
Select_default,
|
|
3228
3035
|
{
|
|
3229
3036
|
value,
|
|
@@ -3234,13 +3041,13 @@ var BodyCell = (props) => {
|
|
|
3234
3041
|
}[type || "text"];
|
|
3235
3042
|
}, [value, editModeComponentProps, type, renderEditCell, params]);
|
|
3236
3043
|
const linkComponentFromProps = props.component;
|
|
3237
|
-
const ReadModeComponent = (0,
|
|
3044
|
+
const ReadModeComponent = (0, import_react24.useMemo)(() => {
|
|
3238
3045
|
if (renderCell) {
|
|
3239
|
-
return (0,
|
|
3046
|
+
return (0, import_react24.createElement)((0, import_react24.memo)(renderCell), params);
|
|
3240
3047
|
}
|
|
3241
3048
|
const innerText = value;
|
|
3242
3049
|
const typedComponent = {
|
|
3243
|
-
link:
|
|
3050
|
+
link: import_react24.default.createElement(linkComponentFromProps || import_joy33.Link, {
|
|
3244
3051
|
children: innerText,
|
|
3245
3052
|
...componentProps
|
|
3246
3053
|
})
|
|
@@ -3248,22 +3055,22 @@ var BodyCell = (props) => {
|
|
|
3248
3055
|
return typedComponent || innerText;
|
|
3249
3056
|
}, [value, renderCell, params, type, componentProps, linkComponentFromProps]);
|
|
3250
3057
|
const getActions = props.getActions;
|
|
3251
|
-
const CellComponent = (0,
|
|
3058
|
+
const CellComponent = (0, import_react24.useMemo)(() => {
|
|
3252
3059
|
if (type === "actions") {
|
|
3253
|
-
return /* @__PURE__ */
|
|
3060
|
+
return /* @__PURE__ */ import_react24.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
|
|
3254
3061
|
}
|
|
3255
3062
|
return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
|
|
3256
3063
|
}, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
|
|
3257
|
-
const showTooltip = (0,
|
|
3064
|
+
const showTooltip = (0, import_react24.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
|
|
3258
3065
|
const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
|
|
3259
|
-
const computedCellClassName = (0,
|
|
3066
|
+
const computedCellClassName = (0, import_react24.useMemo)(
|
|
3260
3067
|
() => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
|
|
3261
3068
|
[cellClassName, params]
|
|
3262
3069
|
);
|
|
3263
|
-
(0,
|
|
3070
|
+
(0, import_react24.useEffect)(() => {
|
|
3264
3071
|
setValue(row[field]);
|
|
3265
3072
|
}, [row, field]);
|
|
3266
|
-
return /* @__PURE__ */
|
|
3073
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
3267
3074
|
StyledTd,
|
|
3268
3075
|
{
|
|
3269
3076
|
ref: cellRef,
|
|
@@ -3280,16 +3087,16 @@ var BodyCell = (props) => {
|
|
|
3280
3087
|
},
|
|
3281
3088
|
className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
|
|
3282
3089
|
},
|
|
3283
|
-
(0,
|
|
3284
|
-
() => showTooltip ? /* @__PURE__ */
|
|
3090
|
+
(0, import_react24.useMemo)(
|
|
3091
|
+
() => showTooltip ? /* @__PURE__ */ import_react24.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
|
|
3285
3092
|
[CellComponent, showTooltip]
|
|
3286
3093
|
)
|
|
3287
3094
|
);
|
|
3288
3095
|
};
|
|
3289
|
-
var BodyRow = (0,
|
|
3096
|
+
var BodyRow = (0, import_react24.memo)(
|
|
3290
3097
|
(props) => {
|
|
3291
3098
|
const { tableId, columns, rowId, editMode, noWrap, row } = props;
|
|
3292
|
-
return /* @__PURE__ */
|
|
3099
|
+
return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react24.default.createElement(
|
|
3293
3100
|
BodyCell,
|
|
3294
3101
|
{
|
|
3295
3102
|
key: `${rowId}_${column.field.toString()}_${i}`,
|
|
@@ -3303,6 +3110,34 @@ var BodyRow = (0, import_react25.memo)(
|
|
|
3303
3110
|
)));
|
|
3304
3111
|
}
|
|
3305
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");
|
|
3306
3141
|
function useColumnWidths(columnsByField) {
|
|
3307
3142
|
const [widths, setWidths] = (0, import_react25.useState)({});
|
|
3308
3143
|
const roRef = (0, import_react25.useRef)();
|
|
@@ -3354,7 +3189,6 @@ function useDataTableRenderer({
|
|
|
3354
3189
|
isTotalSelected: _isTotalSelected,
|
|
3355
3190
|
isRowSelectable,
|
|
3356
3191
|
columnGroupingModel
|
|
3357
|
-
// Add this prop
|
|
3358
3192
|
}) {
|
|
3359
3193
|
if (pinnedColumns && columnGroupingModel) {
|
|
3360
3194
|
throw new Error(
|
|
@@ -3379,8 +3213,8 @@ function useDataTableRenderer({
|
|
|
3379
3213
|
...acc,
|
|
3380
3214
|
[curr.field]: {
|
|
3381
3215
|
...curr,
|
|
3382
|
-
headerRef: import_react25.
|
|
3383
|
-
tableColRef: import_react25.
|
|
3216
|
+
headerRef: (0, import_react25.createRef)(),
|
|
3217
|
+
tableColRef: (0, import_react25.createRef)()
|
|
3384
3218
|
}
|
|
3385
3219
|
}),
|
|
3386
3220
|
{}
|
|
@@ -3420,7 +3254,6 @@ function useDataTableRenderer({
|
|
|
3420
3254
|
[_rows, sortModel, sortComparator]
|
|
3421
3255
|
);
|
|
3422
3256
|
const sortOrder = (0, import_react25.useMemo)(
|
|
3423
|
-
// NOTE: default value를 props destructuring에서 할당하면 렌더링 시점에 초기화가 되어버린다.
|
|
3424
3257
|
() => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
|
|
3425
3258
|
[_sortOrder]
|
|
3426
3259
|
);
|
|
@@ -3430,11 +3263,7 @@ function useDataTableRenderer({
|
|
|
3430
3263
|
(row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
|
|
3431
3264
|
[_getId, page, pageSize]
|
|
3432
3265
|
);
|
|
3433
|
-
const selectedModelSet = (0, import_react25.useMemo)(
|
|
3434
|
-
// NOTE: default value를 props destructuring에서 할당하면 렌더링 시점에 초기화가 되어버린다.
|
|
3435
|
-
() => new Set(selectionModel || []),
|
|
3436
|
-
[selectionModel]
|
|
3437
|
-
);
|
|
3266
|
+
const selectedModelSet = (0, import_react25.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
|
|
3438
3267
|
const dataInPage = (0, import_react25.useMemo)(
|
|
3439
3268
|
() => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
|
|
3440
3269
|
[rows, page, pageSize, paginationMode, pagination]
|
|
@@ -3470,12 +3299,9 @@ function useDataTableRenderer({
|
|
|
3470
3299
|
return calculateColumnGroups(columnGroupingModel, reorderedColumns);
|
|
3471
3300
|
}, [columnGroupingModel, reorderedColumns]);
|
|
3472
3301
|
const columns = (0, import_react25.useMemo)(() => {
|
|
3473
|
-
const baseColumns = reorderedColumns.length > 0 ? reorderedColumns : (
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
field: key
|
|
3477
|
-
}))
|
|
3478
|
-
);
|
|
3302
|
+
const baseColumns = reorderedColumns.length > 0 ? reorderedColumns : Object.keys(rows[0] || {}).map((key) => ({
|
|
3303
|
+
field: key
|
|
3304
|
+
}));
|
|
3479
3305
|
return baseColumns.map((column) => {
|
|
3480
3306
|
const isLeftPinned = pinnedColumns?.left?.includes(column.field);
|
|
3481
3307
|
const isRightPinned = pinnedColumns?.right?.includes(column.field);
|
|
@@ -3490,7 +3316,6 @@ function useDataTableRenderer({
|
|
|
3490
3316
|
isPinned,
|
|
3491
3317
|
isLastStartPinnedColumn: isLeftPinned && [...pinnedColumns?.left || []].pop() === column.field,
|
|
3492
3318
|
isLastEndPinnedColumn: isRightPinned && (pinnedColumns?.right?.[0] ?? null) === column.field,
|
|
3493
|
-
// pinned 관련 계산부
|
|
3494
3319
|
pinnedStartPosition: pinnedColumns?.left?.slice(0, isLeftPinned ? pinnedColumns.left.indexOf(column.field) : pinnedColumns.left.length).reduce((acc, curr) => acc + getWidth(curr), 0),
|
|
3495
3320
|
pinnedEndPosition: pinnedColumns?.right?.slice(isRightPinned ? pinnedColumns.right.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
|
|
3496
3321
|
};
|
|
@@ -3552,56 +3377,265 @@ function useDataTableRenderer({
|
|
|
3552
3377
|
}, [page]);
|
|
3553
3378
|
return {
|
|
3554
3379
|
rowCount,
|
|
3555
|
-
selectableRowCount,
|
|
3556
|
-
page,
|
|
3557
|
-
pageSize,
|
|
3558
|
-
onPaginationModelChange: handlePageChange,
|
|
3559
|
-
getId,
|
|
3560
|
-
HeadCell,
|
|
3561
|
-
BodyRow,
|
|
3562
|
-
dataInPage,
|
|
3563
|
-
handleSortChange,
|
|
3564
|
-
isAllSelected,
|
|
3565
|
-
|
|
3566
|
-
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
|
|
3572
|
-
|
|
3573
|
-
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3589
|
-
|
|
3590
|
-
|
|
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);
|
|
3591
3571
|
},
|
|
3592
|
-
[
|
|
3593
|
-
)
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3597
|
-
const selectableRows = rows.filter((row, i) => {
|
|
3598
|
-
if (!isRowSelectable) return true;
|
|
3599
|
-
return isRowSelectable({ row, id: getId(row, i) });
|
|
3600
|
-
});
|
|
3601
|
-
onSelectionModelChange?.(isTotalSelected ? [] : selectableRows.map(getId), !isTotalSelected);
|
|
3602
|
-
}, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
|
|
3572
|
+
[onPageChange]
|
|
3573
|
+
)
|
|
3574
|
+
);
|
|
3575
|
+
const handlePageChange = (newPage) => {
|
|
3576
|
+
setPaginationModel({ ...paginationModel, page: newPage });
|
|
3603
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
|
+
)));
|
|
3604
3632
|
}
|
|
3633
|
+
Pagination.displayName = "Pagination";
|
|
3634
|
+
|
|
3635
|
+
// src/components/Pagination/index.ts
|
|
3636
|
+
var Pagination_default = Pagination;
|
|
3637
|
+
|
|
3638
|
+
// src/components/DataTable/DataTable.tsx
|
|
3605
3639
|
function Component(props, apiRef) {
|
|
3606
3640
|
const {
|
|
3607
3641
|
rows,
|
|
@@ -3648,9 +3682,9 @@ function Component(props, apiRef) {
|
|
|
3648
3682
|
isTotalSelected: ___________,
|
|
3649
3683
|
...innerProps
|
|
3650
3684
|
} = props;
|
|
3651
|
-
const tableId = (0,
|
|
3652
|
-
const parentRef = (0,
|
|
3653
|
-
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);
|
|
3654
3688
|
const {
|
|
3655
3689
|
columns,
|
|
3656
3690
|
processedColumnGroups,
|
|
@@ -3681,29 +3715,29 @@ function Component(props, apiRef) {
|
|
|
3681
3715
|
measureElement: (element) => element.clientHeight,
|
|
3682
3716
|
overscan: 10
|
|
3683
3717
|
});
|
|
3684
|
-
const paginationModel = (0,
|
|
3718
|
+
const paginationModel = (0, import_react28.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
|
|
3685
3719
|
const totalSize = virtualizer.getTotalSize();
|
|
3686
3720
|
const virtualizedItems = virtualizer.getVirtualItems();
|
|
3687
|
-
const getRowClickHandler = (0,
|
|
3721
|
+
const getRowClickHandler = (0, import_react28.useCallback)(
|
|
3688
3722
|
(row, rowId) => (e) => {
|
|
3689
3723
|
onRowClick?.({ row, rowId }, e);
|
|
3690
3724
|
checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
|
|
3691
3725
|
},
|
|
3692
3726
|
[onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
|
|
3693
3727
|
);
|
|
3694
|
-
const getRowFocusHandler = (0,
|
|
3728
|
+
const getRowFocusHandler = (0, import_react28.useCallback)(
|
|
3695
3729
|
(rowId) => () => {
|
|
3696
3730
|
onRowFocus(rowId);
|
|
3697
3731
|
},
|
|
3698
3732
|
[onRowFocus]
|
|
3699
3733
|
);
|
|
3700
|
-
const getCheckboxClickHandler = (0,
|
|
3734
|
+
const getCheckboxClickHandler = (0, import_react28.useCallback)(
|
|
3701
3735
|
() => (e) => {
|
|
3702
3736
|
e.stopPropagation();
|
|
3703
3737
|
},
|
|
3704
3738
|
[]
|
|
3705
3739
|
);
|
|
3706
|
-
const getCheckboxChangeHandler = (0,
|
|
3740
|
+
const getCheckboxChangeHandler = (0, import_react28.useCallback)(
|
|
3707
3741
|
(rowId, row) => (e) => {
|
|
3708
3742
|
if (isRowSelectableCheck(rowId, row)) {
|
|
3709
3743
|
onCheckboxChange(e, rowId);
|
|
@@ -3711,7 +3745,7 @@ function Component(props, apiRef) {
|
|
|
3711
3745
|
},
|
|
3712
3746
|
[onCheckboxChange, isRowSelectableCheck]
|
|
3713
3747
|
);
|
|
3714
|
-
(0,
|
|
3748
|
+
(0, import_react28.useImperativeHandle)(apiRef, () => ({
|
|
3715
3749
|
getRowIndexRelativeToVisibleRows(rowId) {
|
|
3716
3750
|
return dataInPage.findIndex((row) => String(getId(row)) === rowId);
|
|
3717
3751
|
},
|
|
@@ -3727,7 +3761,7 @@ function Component(props, apiRef) {
|
|
|
3727
3761
|
});
|
|
3728
3762
|
}
|
|
3729
3763
|
}));
|
|
3730
|
-
return /* @__PURE__ */
|
|
3764
|
+
return /* @__PURE__ */ import_react28.default.createElement(
|
|
3731
3765
|
Box_default,
|
|
3732
3766
|
{
|
|
3733
3767
|
sx: {
|
|
@@ -3737,7 +3771,7 @@ function Component(props, apiRef) {
|
|
|
3737
3771
|
flexDirection: "column"
|
|
3738
3772
|
}
|
|
3739
3773
|
},
|
|
3740
|
-
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */
|
|
3774
|
+
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react28.default.createElement(
|
|
3741
3775
|
Stack_default,
|
|
3742
3776
|
{
|
|
3743
3777
|
direction: "row",
|
|
@@ -3747,10 +3781,10 @@ function Component(props, apiRef) {
|
|
|
3747
3781
|
justifyContent: "space-between",
|
|
3748
3782
|
alignItems: "center"
|
|
3749
3783
|
},
|
|
3750
|
-
!!checkboxSelection && /* @__PURE__ */
|
|
3751
|
-
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 || {} })
|
|
3752
3786
|
),
|
|
3753
|
-
/* @__PURE__ */
|
|
3787
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3754
3788
|
Sheet_default,
|
|
3755
3789
|
{
|
|
3756
3790
|
variant: "outlined",
|
|
@@ -3771,14 +3805,14 @@ function Component(props, apiRef) {
|
|
|
3771
3805
|
ref: parentRef,
|
|
3772
3806
|
...backgroundProps
|
|
3773
3807
|
},
|
|
3774
|
-
/* @__PURE__ */
|
|
3808
|
+
/* @__PURE__ */ import_react28.default.createElement(Table, { ...innerProps }, /* @__PURE__ */ import_react28.default.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
|
|
3775
3809
|
"col",
|
|
3776
3810
|
{
|
|
3777
3811
|
style: {
|
|
3778
3812
|
width: "40px"
|
|
3779
3813
|
}
|
|
3780
3814
|
}
|
|
3781
|
-
), columns.map((c) => /* @__PURE__ */
|
|
3815
|
+
), columns.map((c) => /* @__PURE__ */ import_react28.default.createElement(
|
|
3782
3816
|
"col",
|
|
3783
3817
|
{
|
|
3784
3818
|
ref: c.tableColRef,
|
|
@@ -3787,7 +3821,7 @@ function Component(props, apiRef) {
|
|
|
3787
3821
|
width: c.width
|
|
3788
3822
|
}
|
|
3789
3823
|
}
|
|
3790
|
-
))), /* @__PURE__ */
|
|
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(
|
|
3791
3825
|
"th",
|
|
3792
3826
|
{
|
|
3793
3827
|
rowSpan: processedColumnGroups.maxLevel + 2,
|
|
@@ -3797,7 +3831,7 @@ function Component(props, apiRef) {
|
|
|
3797
3831
|
verticalAlign: "middle"
|
|
3798
3832
|
}
|
|
3799
3833
|
},
|
|
3800
|
-
/* @__PURE__ */
|
|
3834
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3801
3835
|
RenderCheckbox,
|
|
3802
3836
|
{
|
|
3803
3837
|
onChange: onAllCheckboxChange,
|
|
@@ -3807,10 +3841,12 @@ function Component(props, apiRef) {
|
|
|
3807
3841
|
...checkboxProps
|
|
3808
3842
|
}
|
|
3809
3843
|
)
|
|
3810
|
-
), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */
|
|
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) => {
|
|
3811
3845
|
const nextGroup = levelGroups[groupIndex + 1];
|
|
3812
3846
|
const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
|
|
3813
|
-
|
|
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(
|
|
3814
3850
|
"th",
|
|
3815
3851
|
{
|
|
3816
3852
|
colSpan: group.colspan,
|
|
@@ -3818,11 +3854,12 @@ function Component(props, apiRef) {
|
|
|
3818
3854
|
textAlign: "center",
|
|
3819
3855
|
fontWeight: "bold",
|
|
3820
3856
|
verticalAlign: "middle"
|
|
3821
|
-
}
|
|
3857
|
+
},
|
|
3858
|
+
className: computedHeaderClassName
|
|
3822
3859
|
},
|
|
3823
3860
|
group.headerName ?? group.groupId
|
|
3824
|
-
), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */
|
|
3825
|
-
}))), /* @__PURE__ */
|
|
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(
|
|
3826
3863
|
"th",
|
|
3827
3864
|
{
|
|
3828
3865
|
style: {
|
|
@@ -3830,7 +3867,7 @@ function Component(props, apiRef) {
|
|
|
3830
3867
|
textAlign: "center"
|
|
3831
3868
|
}
|
|
3832
3869
|
},
|
|
3833
|
-
/* @__PURE__ */
|
|
3870
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3834
3871
|
RenderCheckbox,
|
|
3835
3872
|
{
|
|
3836
3873
|
onChange: onAllCheckboxChange,
|
|
@@ -3842,7 +3879,7 @@ function Component(props, apiRef) {
|
|
|
3842
3879
|
)
|
|
3843
3880
|
), columns.map((c, i) => (
|
|
3844
3881
|
// @ts-ignore
|
|
3845
|
-
/* @__PURE__ */
|
|
3882
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3846
3883
|
HeadCell2,
|
|
3847
3884
|
{
|
|
3848
3885
|
tableId,
|
|
@@ -3853,7 +3890,7 @@ function Component(props, apiRef) {
|
|
|
3853
3890
|
...c
|
|
3854
3891
|
}
|
|
3855
3892
|
)
|
|
3856
|
-
)))), /* @__PURE__ */
|
|
3893
|
+
)))), /* @__PURE__ */ import_react28.default.createElement(
|
|
3857
3894
|
VirtualizedTableBody,
|
|
3858
3895
|
{
|
|
3859
3896
|
ref: tableBodyRef,
|
|
@@ -3863,7 +3900,7 @@ function Component(props, apiRef) {
|
|
|
3863
3900
|
role: "rowgroup",
|
|
3864
3901
|
"aria-label": "DataTableBody"
|
|
3865
3902
|
},
|
|
3866
|
-
!!loading && /* @__PURE__ */
|
|
3903
|
+
!!loading && /* @__PURE__ */ import_react28.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react28.default.createElement(
|
|
3867
3904
|
"td",
|
|
3868
3905
|
{
|
|
3869
3906
|
style: {
|
|
@@ -3872,7 +3909,7 @@ function Component(props, apiRef) {
|
|
|
3872
3909
|
overflow: "visible"
|
|
3873
3910
|
}
|
|
3874
3911
|
},
|
|
3875
|
-
/* @__PURE__ */
|
|
3912
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3876
3913
|
Box_default,
|
|
3877
3914
|
{
|
|
3878
3915
|
sx: {
|
|
@@ -3882,7 +3919,7 @@ function Component(props, apiRef) {
|
|
|
3882
3919
|
right: 0
|
|
3883
3920
|
}
|
|
3884
3921
|
},
|
|
3885
|
-
/* @__PURE__ */
|
|
3922
|
+
/* @__PURE__ */ import_react28.default.createElement(LoadingOverlay, null)
|
|
3886
3923
|
)
|
|
3887
3924
|
)),
|
|
3888
3925
|
virtualizedItems.map((virtualizedRow, index) => {
|
|
@@ -3890,7 +3927,7 @@ function Component(props, apiRef) {
|
|
|
3890
3927
|
const row = dataInPage[rowIndex];
|
|
3891
3928
|
const rowId = getId(row, rowIndex);
|
|
3892
3929
|
const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
|
|
3893
|
-
return /* @__PURE__ */
|
|
3930
|
+
return /* @__PURE__ */ import_react28.default.createElement(
|
|
3894
3931
|
VirtualizedTableRow,
|
|
3895
3932
|
{
|
|
3896
3933
|
key: virtualizedRow.key,
|
|
@@ -3908,7 +3945,7 @@ function Component(props, apiRef) {
|
|
|
3908
3945
|
transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
|
|
3909
3946
|
}
|
|
3910
3947
|
},
|
|
3911
|
-
checkboxSelection && /* @__PURE__ */
|
|
3948
|
+
checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
|
|
3912
3949
|
"th",
|
|
3913
3950
|
{
|
|
3914
3951
|
scope: "row",
|
|
@@ -3916,7 +3953,7 @@ function Component(props, apiRef) {
|
|
|
3916
3953
|
textAlign: "center"
|
|
3917
3954
|
}
|
|
3918
3955
|
},
|
|
3919
|
-
/* @__PURE__ */
|
|
3956
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3920
3957
|
RenderCheckbox,
|
|
3921
3958
|
{
|
|
3922
3959
|
onClick: getCheckboxClickHandler(),
|
|
@@ -3927,7 +3964,7 @@ function Component(props, apiRef) {
|
|
|
3927
3964
|
}
|
|
3928
3965
|
)
|
|
3929
3966
|
),
|
|
3930
|
-
/* @__PURE__ */
|
|
3967
|
+
/* @__PURE__ */ import_react28.default.createElement(
|
|
3931
3968
|
BodyRow2,
|
|
3932
3969
|
{
|
|
3933
3970
|
tableId,
|
|
@@ -3940,9 +3977,9 @@ function Component(props, apiRef) {
|
|
|
3940
3977
|
)
|
|
3941
3978
|
);
|
|
3942
3979
|
})
|
|
3943
|
-
), Footer && /* @__PURE__ */
|
|
3980
|
+
), Footer && /* @__PURE__ */ import_react28.default.createElement(Footer, null))
|
|
3944
3981
|
),
|
|
3945
|
-
pagination && /* @__PURE__ */
|
|
3982
|
+
pagination && /* @__PURE__ */ import_react28.default.createElement(
|
|
3946
3983
|
Pagination_default,
|
|
3947
3984
|
{
|
|
3948
3985
|
pt: 2,
|
|
@@ -3955,16 +3992,16 @@ function Component(props, apiRef) {
|
|
|
3955
3992
|
)
|
|
3956
3993
|
);
|
|
3957
3994
|
}
|
|
3958
|
-
var DataTable = (0,
|
|
3995
|
+
var DataTable = (0, import_react28.forwardRef)(Component);
|
|
3959
3996
|
DataTable.displayName = "DataTable";
|
|
3960
3997
|
|
|
3961
3998
|
// src/components/DateRangePicker/DateRangePicker.tsx
|
|
3962
|
-
var
|
|
3999
|
+
var import_react29 = __toESM(require("react"));
|
|
3963
4000
|
var import_react_imask2 = require("react-imask");
|
|
3964
4001
|
var import_CalendarToday2 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
3965
|
-
var
|
|
4002
|
+
var import_joy36 = require("@mui/joy");
|
|
3966
4003
|
var import_base3 = require("@mui/base");
|
|
3967
|
-
var CalendarButton2 = (0,
|
|
4004
|
+
var CalendarButton2 = (0, import_joy36.styled)(IconButton_default, {
|
|
3968
4005
|
name: "DateRangePicker",
|
|
3969
4006
|
slot: "calendarButton"
|
|
3970
4007
|
})(({ theme }) => ({
|
|
@@ -3974,13 +4011,13 @@ var CalendarButton2 = (0, import_joy34.styled)(IconButton_default, {
|
|
|
3974
4011
|
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
|
|
3975
4012
|
}
|
|
3976
4013
|
}));
|
|
3977
|
-
var StyledPopper2 = (0,
|
|
4014
|
+
var StyledPopper2 = (0, import_joy36.styled)(import_base3.Popper, {
|
|
3978
4015
|
name: "DateRangePicker",
|
|
3979
4016
|
slot: "popper"
|
|
3980
4017
|
})(({ theme }) => ({
|
|
3981
4018
|
zIndex: theme.zIndex.tooltip
|
|
3982
4019
|
}));
|
|
3983
|
-
var CalendarSheet2 = (0,
|
|
4020
|
+
var CalendarSheet2 = (0, import_joy36.styled)(Sheet_default, {
|
|
3984
4021
|
name: "DateRangePicker",
|
|
3985
4022
|
slot: "sheet",
|
|
3986
4023
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -3990,7 +4027,7 @@ var CalendarSheet2 = (0, import_joy34.styled)(Sheet_default, {
|
|
|
3990
4027
|
boxShadow: theme.shadow.md,
|
|
3991
4028
|
borderRadius: theme.radius.md
|
|
3992
4029
|
}));
|
|
3993
|
-
var DateRangePickerRoot = (0,
|
|
4030
|
+
var DateRangePickerRoot = (0, import_joy36.styled)("div", {
|
|
3994
4031
|
name: "DateRangePicker",
|
|
3995
4032
|
slot: "root",
|
|
3996
4033
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -4060,9 +4097,9 @@ var parseDates = (str, format) => {
|
|
|
4060
4097
|
var formatToPattern2 = (format) => {
|
|
4061
4098
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
4062
4099
|
};
|
|
4063
|
-
var TextMaskAdapter5 =
|
|
4100
|
+
var TextMaskAdapter5 = import_react29.default.forwardRef(function TextMaskAdapter6(props, ref) {
|
|
4064
4101
|
const { onChange, format, ...other } = props;
|
|
4065
|
-
return /* @__PURE__ */
|
|
4102
|
+
return /* @__PURE__ */ import_react29.default.createElement(
|
|
4066
4103
|
import_react_imask2.IMaskInput,
|
|
4067
4104
|
{
|
|
4068
4105
|
...other,
|
|
@@ -4096,8 +4133,8 @@ var TextMaskAdapter5 = import_react26.default.forwardRef(function TextMaskAdapte
|
|
|
4096
4133
|
}
|
|
4097
4134
|
);
|
|
4098
4135
|
});
|
|
4099
|
-
var DateRangePicker = (0,
|
|
4100
|
-
const props = (0,
|
|
4136
|
+
var DateRangePicker = (0, import_react29.forwardRef)((inProps, ref) => {
|
|
4137
|
+
const props = (0, import_joy36.useThemeProps)({ props: inProps, name: "DateRangePicker" });
|
|
4101
4138
|
const {
|
|
4102
4139
|
onChange,
|
|
4103
4140
|
disabled,
|
|
@@ -4120,23 +4157,23 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4120
4157
|
readOnly,
|
|
4121
4158
|
...innerProps
|
|
4122
4159
|
} = props;
|
|
4123
|
-
const innerRef = (0,
|
|
4124
|
-
const buttonRef = (0,
|
|
4160
|
+
const innerRef = (0, import_react29.useRef)(null);
|
|
4161
|
+
const buttonRef = (0, import_react29.useRef)(null);
|
|
4125
4162
|
const [value, setValue] = useControlledState(
|
|
4126
4163
|
props.value,
|
|
4127
4164
|
props.defaultValue || "",
|
|
4128
|
-
(0,
|
|
4165
|
+
(0, import_react29.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
4129
4166
|
);
|
|
4130
|
-
const [displayValue, setDisplayValue] = (0,
|
|
4167
|
+
const [displayValue, setDisplayValue] = (0, import_react29.useState)(
|
|
4131
4168
|
() => value ? formatValueString2(parseDates(value, format), displayFormat) : ""
|
|
4132
4169
|
);
|
|
4133
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
4170
|
+
const [anchorEl, setAnchorEl] = (0, import_react29.useState)(null);
|
|
4134
4171
|
const open = Boolean(anchorEl);
|
|
4135
|
-
const calendarValue = (0,
|
|
4172
|
+
const calendarValue = (0, import_react29.useMemo)(
|
|
4136
4173
|
() => value ? parseDates(value, format) : void 0,
|
|
4137
4174
|
[value, format]
|
|
4138
4175
|
);
|
|
4139
|
-
(0,
|
|
4176
|
+
(0, import_react29.useEffect)(() => {
|
|
4140
4177
|
if (value) {
|
|
4141
4178
|
try {
|
|
4142
4179
|
const dates = parseDates(value, format);
|
|
@@ -4148,13 +4185,13 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4148
4185
|
setDisplayValue("");
|
|
4149
4186
|
}
|
|
4150
4187
|
}, [displayFormat, value, format]);
|
|
4151
|
-
(0,
|
|
4188
|
+
(0, import_react29.useEffect)(() => {
|
|
4152
4189
|
if (!anchorEl) {
|
|
4153
4190
|
innerRef.current?.blur();
|
|
4154
4191
|
}
|
|
4155
4192
|
}, [anchorEl, innerRef]);
|
|
4156
|
-
(0,
|
|
4157
|
-
const handleChange = (0,
|
|
4193
|
+
(0, import_react29.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
4194
|
+
const handleChange = (0, import_react29.useCallback)(
|
|
4158
4195
|
(event) => {
|
|
4159
4196
|
const value2 = event.target.value;
|
|
4160
4197
|
setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat) : value2);
|
|
@@ -4162,7 +4199,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4162
4199
|
},
|
|
4163
4200
|
[displayFormat, format, setValue]
|
|
4164
4201
|
);
|
|
4165
|
-
const handleDisplayInputChange = (0,
|
|
4202
|
+
const handleDisplayInputChange = (0, import_react29.useCallback)(
|
|
4166
4203
|
(event) => {
|
|
4167
4204
|
if (event.target.value === "") {
|
|
4168
4205
|
handleChange({
|
|
@@ -4187,14 +4224,14 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4187
4224
|
},
|
|
4188
4225
|
[displayFormat, format, handleChange, props.name]
|
|
4189
4226
|
);
|
|
4190
|
-
const handleCalendarToggle = (0,
|
|
4227
|
+
const handleCalendarToggle = (0, import_react29.useCallback)(
|
|
4191
4228
|
(event) => {
|
|
4192
4229
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
4193
4230
|
innerRef.current?.focus();
|
|
4194
4231
|
},
|
|
4195
4232
|
[anchorEl, setAnchorEl, innerRef]
|
|
4196
4233
|
);
|
|
4197
|
-
const handleCalendarChange = (0,
|
|
4234
|
+
const handleCalendarChange = (0, import_react29.useCallback)(
|
|
4198
4235
|
([date1, date2]) => {
|
|
4199
4236
|
if (!date1 || !date2) return;
|
|
4200
4237
|
const formattedValue = formatValueString2([date1, date2], format);
|
|
@@ -4208,7 +4245,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4208
4245
|
},
|
|
4209
4246
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat]
|
|
4210
4247
|
);
|
|
4211
|
-
const handleInputMouseDown = (0,
|
|
4248
|
+
const handleInputMouseDown = (0, import_react29.useCallback)(
|
|
4212
4249
|
(event) => {
|
|
4213
4250
|
if (inputReadOnly) {
|
|
4214
4251
|
event.preventDefault();
|
|
@@ -4217,7 +4254,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4217
4254
|
},
|
|
4218
4255
|
[inputReadOnly, buttonRef]
|
|
4219
4256
|
);
|
|
4220
|
-
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(
|
|
4221
4258
|
Input_default,
|
|
4222
4259
|
{
|
|
4223
4260
|
...innerProps,
|
|
@@ -4245,7 +4282,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4245
4282
|
error,
|
|
4246
4283
|
className,
|
|
4247
4284
|
sx,
|
|
4248
|
-
endDecorator: /* @__PURE__ */
|
|
4285
|
+
endDecorator: /* @__PURE__ */ import_react29.default.createElement(
|
|
4249
4286
|
CalendarButton2,
|
|
4250
4287
|
{
|
|
4251
4288
|
ref: buttonRef,
|
|
@@ -4257,13 +4294,13 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4257
4294
|
"aria-expanded": open,
|
|
4258
4295
|
disabled
|
|
4259
4296
|
},
|
|
4260
|
-
/* @__PURE__ */
|
|
4297
|
+
/* @__PURE__ */ import_react29.default.createElement(import_CalendarToday2.default, null)
|
|
4261
4298
|
),
|
|
4262
4299
|
label,
|
|
4263
4300
|
helperText,
|
|
4264
4301
|
readOnly: readOnly || inputReadOnly
|
|
4265
4302
|
}
|
|
4266
|
-
), open && /* @__PURE__ */
|
|
4303
|
+
), open && /* @__PURE__ */ import_react29.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4267
4304
|
StyledPopper2,
|
|
4268
4305
|
{
|
|
4269
4306
|
id: "date-range-picker-popper",
|
|
@@ -4282,7 +4319,7 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4282
4319
|
"aria-label": "Calendar Tooltip",
|
|
4283
4320
|
"aria-expanded": open
|
|
4284
4321
|
},
|
|
4285
|
-
/* @__PURE__ */
|
|
4322
|
+
/* @__PURE__ */ import_react29.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4286
4323
|
Calendar_default,
|
|
4287
4324
|
{
|
|
4288
4325
|
rangeSelection: true,
|
|
@@ -4293,14 +4330,14 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4293
4330
|
disableFuture,
|
|
4294
4331
|
disablePast
|
|
4295
4332
|
}
|
|
4296
|
-
), !hideClearButton && /* @__PURE__ */
|
|
4333
|
+
), !hideClearButton && /* @__PURE__ */ import_react29.default.createElement(
|
|
4297
4334
|
DialogActions_default,
|
|
4298
4335
|
{
|
|
4299
4336
|
sx: {
|
|
4300
4337
|
p: 1
|
|
4301
4338
|
}
|
|
4302
4339
|
},
|
|
4303
|
-
/* @__PURE__ */
|
|
4340
|
+
/* @__PURE__ */ import_react29.default.createElement(
|
|
4304
4341
|
Button_default,
|
|
4305
4342
|
{
|
|
4306
4343
|
size,
|
|
@@ -4320,17 +4357,17 @@ var DateRangePicker = (0, import_react26.forwardRef)((inProps, ref) => {
|
|
|
4320
4357
|
DateRangePicker.displayName = "DateRangePicker";
|
|
4321
4358
|
|
|
4322
4359
|
// src/components/Drawer/Drawer.tsx
|
|
4323
|
-
var
|
|
4324
|
-
var
|
|
4325
|
-
var
|
|
4326
|
-
var MotionDrawer = (0,
|
|
4327
|
-
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" }) => ({
|
|
4328
4365
|
"--Drawer-horizontalSize": {
|
|
4329
4366
|
sm: "360px",
|
|
4330
4367
|
md: "600px",
|
|
4331
4368
|
lg: "900px"
|
|
4332
4369
|
}[size],
|
|
4333
|
-
[`& .${
|
|
4370
|
+
[`& .${import_joy37.drawerClasses.content}`]: {
|
|
4334
4371
|
[theme.breakpoints.down("md")]: {
|
|
4335
4372
|
width: "100%"
|
|
4336
4373
|
}
|
|
@@ -4338,15 +4375,15 @@ var StyledDrawer = (0, import_joy35.styled)(MotionDrawer)(({ theme, size = "md"
|
|
|
4338
4375
|
}));
|
|
4339
4376
|
var Drawer = (props) => {
|
|
4340
4377
|
const { children, ...innerProps } = props;
|
|
4341
|
-
return /* @__PURE__ */
|
|
4378
|
+
return /* @__PURE__ */ import_react30.default.createElement(StyledDrawer, { ...innerProps }, children);
|
|
4342
4379
|
};
|
|
4343
4380
|
Drawer.displayName = "Drawer";
|
|
4344
4381
|
|
|
4345
4382
|
// src/components/DialogContent/DialogContent.tsx
|
|
4346
|
-
var
|
|
4347
|
-
var
|
|
4348
|
-
var MotionDialogContent = (0,
|
|
4349
|
-
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 }) => ({
|
|
4350
4387
|
padding: theme.spacing(0, 6, 5)
|
|
4351
4388
|
}));
|
|
4352
4389
|
var DialogContent = StyledDialogContent;
|
|
@@ -4356,10 +4393,10 @@ DialogContent.displayName = "DialogContent";
|
|
|
4356
4393
|
var DialogContent_default = DialogContent;
|
|
4357
4394
|
|
|
4358
4395
|
// src/components/DialogTitle/DialogTitle.tsx
|
|
4359
|
-
var
|
|
4360
|
-
var
|
|
4361
|
-
var MotionDialogTitle = (0,
|
|
4362
|
-
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 }) => ({
|
|
4363
4400
|
padding: theme.spacing(4, 6)
|
|
4364
4401
|
}));
|
|
4365
4402
|
var DialogTitle = StyledDialogTitle;
|
|
@@ -4369,58 +4406,58 @@ DialogTitle.displayName = "DialogTitle";
|
|
|
4369
4406
|
var DialogTitle_default = DialogTitle;
|
|
4370
4407
|
|
|
4371
4408
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
4372
|
-
var
|
|
4409
|
+
var import_react32 = __toESM(require("react"));
|
|
4373
4410
|
|
|
4374
4411
|
// src/components/Modal/Modal.tsx
|
|
4375
|
-
var
|
|
4376
|
-
var
|
|
4377
|
-
var
|
|
4378
|
-
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);
|
|
4379
4416
|
var Modal = MotionModal;
|
|
4380
4417
|
Modal.displayName = "Modal";
|
|
4381
|
-
var StyledModalDialog = (0,
|
|
4418
|
+
var StyledModalDialog = (0, import_joy40.styled)(import_joy40.ModalDialog)({
|
|
4382
4419
|
padding: 0
|
|
4383
4420
|
});
|
|
4384
4421
|
var ModalDialog = StyledModalDialog;
|
|
4385
4422
|
ModalDialog.displayName = "ModalDialog";
|
|
4386
|
-
var ModalClose =
|
|
4387
|
-
var MotionModalOverflow = (0,
|
|
4423
|
+
var ModalClose = import_joy40.ModalClose;
|
|
4424
|
+
var MotionModalOverflow = (0, import_framer_motion26.motion)(import_joy40.ModalOverflow);
|
|
4388
4425
|
var ModalOverflow = MotionModalOverflow;
|
|
4389
4426
|
ModalOverflow.displayName = "ModalOverflow";
|
|
4390
4427
|
function ModalFrame(props) {
|
|
4391
4428
|
const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
|
|
4392
|
-
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));
|
|
4393
4430
|
}
|
|
4394
4431
|
ModalFrame.displayName = "ModalFrame";
|
|
4395
4432
|
|
|
4396
4433
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
4397
|
-
var
|
|
4398
|
-
var StyledDialogFrame = (0,
|
|
4434
|
+
var import_joy41 = require("@mui/joy");
|
|
4435
|
+
var StyledDialogFrame = (0, import_joy41.styled)(ModalDialog, {
|
|
4399
4436
|
name: "Dialog",
|
|
4400
4437
|
slot: "Root"
|
|
4401
4438
|
})({
|
|
4402
4439
|
padding: 0
|
|
4403
4440
|
});
|
|
4404
|
-
var DialogFrame =
|
|
4441
|
+
var DialogFrame = import_react32.default.forwardRef((props, ref) => {
|
|
4405
4442
|
const { title, children, actions, fullscreen, ...innerProps } = props;
|
|
4406
|
-
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));
|
|
4407
4444
|
});
|
|
4408
4445
|
DialogFrame.displayName = "DialogFrame";
|
|
4409
4446
|
|
|
4410
4447
|
// src/components/Divider/Divider.tsx
|
|
4411
|
-
var
|
|
4412
|
-
var
|
|
4413
|
-
var
|
|
4414
|
-
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);
|
|
4415
4452
|
var Divider = (props) => {
|
|
4416
|
-
return /* @__PURE__ */
|
|
4453
|
+
return /* @__PURE__ */ import_react33.default.createElement(MotionDivider, { ...props });
|
|
4417
4454
|
};
|
|
4418
4455
|
Divider.displayName = "Divider";
|
|
4419
4456
|
|
|
4420
4457
|
// src/components/InsetDrawer/InsetDrawer.tsx
|
|
4421
|
-
var
|
|
4422
|
-
var InsetDrawer = (0,
|
|
4423
|
-
[`& .${
|
|
4458
|
+
var import_joy43 = require("@mui/joy");
|
|
4459
|
+
var InsetDrawer = (0, import_joy43.styled)(import_joy43.Drawer)(({ theme }) => ({
|
|
4460
|
+
[`& .${import_joy43.drawerClasses.content}`]: {
|
|
4424
4461
|
backgroundColor: "transparent",
|
|
4425
4462
|
boxShadow: "none",
|
|
4426
4463
|
[theme.breakpoints.down("md")]: {
|
|
@@ -4434,11 +4471,11 @@ var InsetDrawer = (0, import_joy41.styled)(import_joy41.Drawer)(({ theme }) => (
|
|
|
4434
4471
|
}));
|
|
4435
4472
|
|
|
4436
4473
|
// src/components/Grid/Grid.tsx
|
|
4437
|
-
var
|
|
4474
|
+
var import_joy44 = require("@mui/joy");
|
|
4438
4475
|
|
|
4439
4476
|
// src/components/IconMenuButton/IconMenuButton.tsx
|
|
4440
|
-
var
|
|
4441
|
-
var
|
|
4477
|
+
var import_react34 = __toESM(require("react"));
|
|
4478
|
+
var import_joy45 = require("@mui/joy");
|
|
4442
4479
|
function IconMenuButton(props) {
|
|
4443
4480
|
const {
|
|
4444
4481
|
size,
|
|
@@ -4451,8 +4488,8 @@ function IconMenuButton(props) {
|
|
|
4451
4488
|
placement = "bottom"
|
|
4452
4489
|
} = props;
|
|
4453
4490
|
if (!items.length) {
|
|
4454
|
-
return /* @__PURE__ */
|
|
4455
|
-
|
|
4491
|
+
return /* @__PURE__ */ import_react34.default.createElement(
|
|
4492
|
+
import_joy45.IconButton,
|
|
4456
4493
|
{
|
|
4457
4494
|
component: props.buttonComponent ?? "button",
|
|
4458
4495
|
size,
|
|
@@ -4465,10 +4502,10 @@ function IconMenuButton(props) {
|
|
|
4465
4502
|
icon
|
|
4466
4503
|
);
|
|
4467
4504
|
}
|
|
4468
|
-
return /* @__PURE__ */
|
|
4469
|
-
|
|
4505
|
+
return /* @__PURE__ */ import_react34.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react34.default.createElement(
|
|
4506
|
+
import_joy45.MenuButton,
|
|
4470
4507
|
{
|
|
4471
|
-
slots: { root:
|
|
4508
|
+
slots: { root: import_joy45.IconButton },
|
|
4472
4509
|
slotProps: {
|
|
4473
4510
|
root: {
|
|
4474
4511
|
component: props.buttonComponent ?? "button",
|
|
@@ -4482,19 +4519,19 @@ function IconMenuButton(props) {
|
|
|
4482
4519
|
}
|
|
4483
4520
|
},
|
|
4484
4521
|
icon
|
|
4485
|
-
), /* @__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))));
|
|
4486
4523
|
}
|
|
4487
4524
|
IconMenuButton.displayName = "IconMenuButton";
|
|
4488
4525
|
|
|
4489
4526
|
// src/components/Markdown/Markdown.tsx
|
|
4490
|
-
var
|
|
4491
|
-
var
|
|
4492
|
-
var
|
|
4527
|
+
var import_react35 = __toESM(require("react"));
|
|
4528
|
+
var import_joy46 = require("@mui/joy");
|
|
4529
|
+
var import_joy47 = require("@mui/joy");
|
|
4493
4530
|
var import_remark_gfm = __toESM(require("remark-gfm"));
|
|
4494
|
-
var LazyReactMarkdown = (0,
|
|
4531
|
+
var LazyReactMarkdown = (0, import_react35.lazy)(() => import("react-markdown"));
|
|
4495
4532
|
var Markdown = (props) => {
|
|
4496
|
-
const [rehypeAccent2, setRehypeAccent] = (0,
|
|
4497
|
-
(0,
|
|
4533
|
+
const [rehypeAccent2, setRehypeAccent] = (0, import_react35.useState)(null);
|
|
4534
|
+
(0, import_react35.useEffect)(() => {
|
|
4498
4535
|
const loadRehypeAccent = async () => {
|
|
4499
4536
|
const module2 = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
|
|
4500
4537
|
setRehypeAccent(() => module2.rehypeAccent);
|
|
@@ -4516,12 +4553,12 @@ var Markdown = (props) => {
|
|
|
4516
4553
|
if (!rehypeAccent2) {
|
|
4517
4554
|
return null;
|
|
4518
4555
|
}
|
|
4519
|
-
return /* @__PURE__ */
|
|
4520
|
-
|
|
4556
|
+
return /* @__PURE__ */ import_react35.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react35.default.createElement(
|
|
4557
|
+
import_react35.Suspense,
|
|
4521
4558
|
{
|
|
4522
|
-
fallback: fallback || /* @__PURE__ */
|
|
4559
|
+
fallback: fallback || /* @__PURE__ */ import_react35.default.createElement(Typography, null, /* @__PURE__ */ import_react35.default.createElement(import_joy46.Skeleton, null, content || ""))
|
|
4523
4560
|
},
|
|
4524
|
-
/* @__PURE__ */
|
|
4561
|
+
/* @__PURE__ */ import_react35.default.createElement(
|
|
4525
4562
|
LazyReactMarkdown,
|
|
4526
4563
|
{
|
|
4527
4564
|
...markdownOptions,
|
|
@@ -4529,15 +4566,15 @@ var Markdown = (props) => {
|
|
|
4529
4566
|
rehypePlugins: [[rehypeAccent2, { accentColor }]],
|
|
4530
4567
|
remarkPlugins: [import_remark_gfm.default],
|
|
4531
4568
|
components: {
|
|
4532
|
-
h1: ({ children }) => /* @__PURE__ */
|
|
4533
|
-
h2: ({ children }) => /* @__PURE__ */
|
|
4534
|
-
h3: ({ children }) => /* @__PURE__ */
|
|
4535
|
-
h4: ({ children }) => /* @__PURE__ */
|
|
4536
|
-
p: ({ children, node }) => /* @__PURE__ */
|
|
4537
|
-
a: ({ children, href }) => /* @__PURE__ */
|
|
4538
|
-
hr: () => /* @__PURE__ */
|
|
4539
|
-
b: ({ children }) => /* @__PURE__ */
|
|
4540
|
-
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),
|
|
4541
4578
|
...markdownOptions?.components
|
|
4542
4579
|
}
|
|
4543
4580
|
}
|
|
@@ -4547,8 +4584,8 @@ var Markdown = (props) => {
|
|
|
4547
4584
|
Markdown.displayName = "Markdown";
|
|
4548
4585
|
|
|
4549
4586
|
// src/components/MenuButton/MenuButton.tsx
|
|
4550
|
-
var
|
|
4551
|
-
var
|
|
4587
|
+
var import_react36 = __toESM(require("react"));
|
|
4588
|
+
var import_joy48 = require("@mui/joy");
|
|
4552
4589
|
var import_ExpandMore = __toESM(require("@mui/icons-material/ExpandMore"));
|
|
4553
4590
|
function MenuButton(props) {
|
|
4554
4591
|
const {
|
|
@@ -4565,8 +4602,8 @@ function MenuButton(props) {
|
|
|
4565
4602
|
placement = "bottom"
|
|
4566
4603
|
} = props;
|
|
4567
4604
|
if (!items.length) {
|
|
4568
|
-
return /* @__PURE__ */
|
|
4569
|
-
|
|
4605
|
+
return /* @__PURE__ */ import_react36.default.createElement(
|
|
4606
|
+
import_joy48.Button,
|
|
4570
4607
|
{
|
|
4571
4608
|
component: props.buttonComponent ?? "button",
|
|
4572
4609
|
size,
|
|
@@ -4576,13 +4613,13 @@ function MenuButton(props) {
|
|
|
4576
4613
|
loading,
|
|
4577
4614
|
startDecorator,
|
|
4578
4615
|
...props.buttonComponentProps ?? {},
|
|
4579
|
-
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)
|
|
4580
4617
|
},
|
|
4581
4618
|
buttonText
|
|
4582
4619
|
);
|
|
4583
4620
|
}
|
|
4584
|
-
return /* @__PURE__ */
|
|
4585
|
-
|
|
4621
|
+
return /* @__PURE__ */ import_react36.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react36.default.createElement(
|
|
4622
|
+
import_joy48.MenuButton,
|
|
4586
4623
|
{
|
|
4587
4624
|
component: props.buttonComponent ?? "button",
|
|
4588
4625
|
size,
|
|
@@ -4592,25 +4629,25 @@ function MenuButton(props) {
|
|
|
4592
4629
|
loading,
|
|
4593
4630
|
startDecorator,
|
|
4594
4631
|
...props.buttonComponentProps ?? {},
|
|
4595
|
-
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)
|
|
4596
4633
|
},
|
|
4597
4634
|
buttonText
|
|
4598
|
-
), /* @__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))));
|
|
4599
4636
|
}
|
|
4600
4637
|
MenuButton.displayName = "MenuButton";
|
|
4601
4638
|
|
|
4602
4639
|
// src/components/MonthPicker/MonthPicker.tsx
|
|
4603
|
-
var
|
|
4640
|
+
var import_react37 = __toESM(require("react"));
|
|
4604
4641
|
var import_CalendarToday3 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
4605
|
-
var
|
|
4642
|
+
var import_joy49 = require("@mui/joy");
|
|
4606
4643
|
var import_base4 = require("@mui/base");
|
|
4607
|
-
var StyledPopper3 = (0,
|
|
4644
|
+
var StyledPopper3 = (0, import_joy49.styled)(import_base4.Popper, {
|
|
4608
4645
|
name: "MonthPicker",
|
|
4609
4646
|
slot: "popper"
|
|
4610
4647
|
})(({ theme }) => ({
|
|
4611
4648
|
zIndex: theme.zIndex.tooltip
|
|
4612
4649
|
}));
|
|
4613
|
-
var CalendarSheet3 = (0,
|
|
4650
|
+
var CalendarSheet3 = (0, import_joy49.styled)(Sheet_default, {
|
|
4614
4651
|
name: "MonthPicker",
|
|
4615
4652
|
slot: "sheet",
|
|
4616
4653
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -4619,7 +4656,7 @@ var CalendarSheet3 = (0, import_joy47.styled)(Sheet_default, {
|
|
|
4619
4656
|
boxShadow: theme.shadow.md,
|
|
4620
4657
|
borderRadius: theme.radius.md
|
|
4621
4658
|
}));
|
|
4622
|
-
var MonthPickerRoot = (0,
|
|
4659
|
+
var MonthPickerRoot = (0, import_joy49.styled)("div", {
|
|
4623
4660
|
name: "MonthPicker",
|
|
4624
4661
|
slot: "root",
|
|
4625
4662
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -4655,8 +4692,8 @@ function parseDate3(dateString, format) {
|
|
|
4655
4692
|
const result = new Date(year, month, day);
|
|
4656
4693
|
return result;
|
|
4657
4694
|
}
|
|
4658
|
-
var MonthPicker = (0,
|
|
4659
|
-
const props = (0,
|
|
4695
|
+
var MonthPicker = (0, import_react37.forwardRef)((inProps, ref) => {
|
|
4696
|
+
const props = (0, import_joy49.useThemeProps)({ props: inProps, name: "MonthPicker" });
|
|
4660
4697
|
const {
|
|
4661
4698
|
onChange,
|
|
4662
4699
|
disabled,
|
|
@@ -4682,14 +4719,14 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4682
4719
|
locale,
|
|
4683
4720
|
...innerProps
|
|
4684
4721
|
} = props;
|
|
4685
|
-
const innerRef = (0,
|
|
4686
|
-
const buttonRef = (0,
|
|
4722
|
+
const innerRef = (0, import_react37.useRef)(null);
|
|
4723
|
+
const buttonRef = (0, import_react37.useRef)(null);
|
|
4687
4724
|
const [value, setValue, isControlled] = useControlledState(
|
|
4688
4725
|
props.value,
|
|
4689
4726
|
props.defaultValue || "",
|
|
4690
|
-
(0,
|
|
4727
|
+
(0, import_react37.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
4691
4728
|
);
|
|
4692
|
-
const getFormattedDisplayValue = (0,
|
|
4729
|
+
const getFormattedDisplayValue = (0, import_react37.useCallback)(
|
|
4693
4730
|
(inputValue) => {
|
|
4694
4731
|
if (!inputValue) return "";
|
|
4695
4732
|
try {
|
|
@@ -4700,19 +4737,19 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4700
4737
|
},
|
|
4701
4738
|
[format, displayFormat, locale]
|
|
4702
4739
|
);
|
|
4703
|
-
const [displayValue, setDisplayValue] = (0,
|
|
4704
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
4740
|
+
const [displayValue, setDisplayValue] = (0, import_react37.useState)(() => getFormattedDisplayValue(value));
|
|
4741
|
+
const [anchorEl, setAnchorEl] = (0, import_react37.useState)(null);
|
|
4705
4742
|
const open = Boolean(anchorEl);
|
|
4706
|
-
(0,
|
|
4743
|
+
(0, import_react37.useEffect)(() => {
|
|
4707
4744
|
if (!anchorEl) {
|
|
4708
4745
|
innerRef.current?.blur();
|
|
4709
4746
|
}
|
|
4710
4747
|
}, [anchorEl, innerRef]);
|
|
4711
|
-
(0,
|
|
4712
|
-
(0,
|
|
4748
|
+
(0, import_react37.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
4749
|
+
(0, import_react37.useEffect)(() => {
|
|
4713
4750
|
setDisplayValue(getFormattedDisplayValue(value));
|
|
4714
4751
|
}, [value, getFormattedDisplayValue]);
|
|
4715
|
-
const handleChange = (0,
|
|
4752
|
+
const handleChange = (0, import_react37.useCallback)(
|
|
4716
4753
|
(event) => {
|
|
4717
4754
|
const newValue = event.target.value;
|
|
4718
4755
|
setValue(newValue);
|
|
@@ -4722,21 +4759,21 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4722
4759
|
},
|
|
4723
4760
|
[setValue, getFormattedDisplayValue, isControlled]
|
|
4724
4761
|
);
|
|
4725
|
-
const handleCalendarToggle = (0,
|
|
4762
|
+
const handleCalendarToggle = (0, import_react37.useCallback)(
|
|
4726
4763
|
(event) => {
|
|
4727
4764
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
4728
4765
|
innerRef.current?.focus();
|
|
4729
4766
|
},
|
|
4730
4767
|
[anchorEl, setAnchorEl, innerRef]
|
|
4731
4768
|
);
|
|
4732
|
-
const handleInputMouseDown = (0,
|
|
4769
|
+
const handleInputMouseDown = (0, import_react37.useCallback)(
|
|
4733
4770
|
(event) => {
|
|
4734
4771
|
event.preventDefault();
|
|
4735
4772
|
buttonRef.current?.focus();
|
|
4736
4773
|
},
|
|
4737
4774
|
[buttonRef]
|
|
4738
4775
|
);
|
|
4739
|
-
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(
|
|
4740
4777
|
Input_default,
|
|
4741
4778
|
{
|
|
4742
4779
|
...innerProps,
|
|
@@ -4766,7 +4803,7 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4766
4803
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
4767
4804
|
fontFamily: "monospace"
|
|
4768
4805
|
},
|
|
4769
|
-
endDecorator: /* @__PURE__ */
|
|
4806
|
+
endDecorator: /* @__PURE__ */ import_react37.default.createElement(
|
|
4770
4807
|
IconButton_default,
|
|
4771
4808
|
{
|
|
4772
4809
|
ref: buttonRef,
|
|
@@ -4778,12 +4815,12 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4778
4815
|
"aria-expanded": open,
|
|
4779
4816
|
disabled
|
|
4780
4817
|
},
|
|
4781
|
-
/* @__PURE__ */
|
|
4818
|
+
/* @__PURE__ */ import_react37.default.createElement(import_CalendarToday3.default, null)
|
|
4782
4819
|
),
|
|
4783
4820
|
label,
|
|
4784
4821
|
helperText
|
|
4785
4822
|
}
|
|
4786
|
-
), open && /* @__PURE__ */
|
|
4823
|
+
), open && /* @__PURE__ */ import_react37.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react37.default.createElement(
|
|
4787
4824
|
StyledPopper3,
|
|
4788
4825
|
{
|
|
4789
4826
|
id: "month-picker-popper",
|
|
@@ -4802,7 +4839,7 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4802
4839
|
"aria-label": "Calendar Tooltip",
|
|
4803
4840
|
"aria-expanded": open
|
|
4804
4841
|
},
|
|
4805
|
-
/* @__PURE__ */
|
|
4842
|
+
/* @__PURE__ */ import_react37.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react37.default.createElement(
|
|
4806
4843
|
Calendar_default,
|
|
4807
4844
|
{
|
|
4808
4845
|
view: "month",
|
|
@@ -4823,14 +4860,14 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4823
4860
|
disablePast,
|
|
4824
4861
|
locale
|
|
4825
4862
|
}
|
|
4826
|
-
), /* @__PURE__ */
|
|
4863
|
+
), /* @__PURE__ */ import_react37.default.createElement(
|
|
4827
4864
|
DialogActions_default,
|
|
4828
4865
|
{
|
|
4829
4866
|
sx: {
|
|
4830
4867
|
p: 1
|
|
4831
4868
|
}
|
|
4832
4869
|
},
|
|
4833
|
-
/* @__PURE__ */
|
|
4870
|
+
/* @__PURE__ */ import_react37.default.createElement(
|
|
4834
4871
|
Button_default,
|
|
4835
4872
|
{
|
|
4836
4873
|
size,
|
|
@@ -4853,18 +4890,18 @@ var MonthPicker = (0, import_react34.forwardRef)((inProps, ref) => {
|
|
|
4853
4890
|
});
|
|
4854
4891
|
|
|
4855
4892
|
// src/components/MonthRangePicker/MonthRangePicker.tsx
|
|
4856
|
-
var
|
|
4893
|
+
var import_react38 = __toESM(require("react"));
|
|
4857
4894
|
var import_react_imask3 = require("react-imask");
|
|
4858
4895
|
var import_CalendarToday4 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
4859
|
-
var
|
|
4896
|
+
var import_joy50 = require("@mui/joy");
|
|
4860
4897
|
var import_base5 = require("@mui/base");
|
|
4861
|
-
var StyledPopper4 = (0,
|
|
4898
|
+
var StyledPopper4 = (0, import_joy50.styled)(import_base5.Popper, {
|
|
4862
4899
|
name: "MonthRangePicker",
|
|
4863
4900
|
slot: "popper"
|
|
4864
4901
|
})(({ theme }) => ({
|
|
4865
4902
|
zIndex: theme.zIndex.tooltip
|
|
4866
4903
|
}));
|
|
4867
|
-
var CalendarSheet4 = (0,
|
|
4904
|
+
var CalendarSheet4 = (0, import_joy50.styled)(Sheet_default, {
|
|
4868
4905
|
name: "MonthRangePicker",
|
|
4869
4906
|
slot: "sheet",
|
|
4870
4907
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -4874,7 +4911,7 @@ var CalendarSheet4 = (0, import_joy48.styled)(Sheet_default, {
|
|
|
4874
4911
|
boxShadow: theme.shadow.md,
|
|
4875
4912
|
borderRadius: theme.radius.md
|
|
4876
4913
|
}));
|
|
4877
|
-
var MonthRangePickerRoot = (0,
|
|
4914
|
+
var MonthRangePickerRoot = (0, import_joy50.styled)("div", {
|
|
4878
4915
|
name: "MonthRangePicker",
|
|
4879
4916
|
slot: "root",
|
|
4880
4917
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -4911,9 +4948,9 @@ var parseDates2 = (str) => {
|
|
|
4911
4948
|
var formatToPattern3 = (format) => {
|
|
4912
4949
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
|
|
4913
4950
|
};
|
|
4914
|
-
var TextMaskAdapter7 =
|
|
4951
|
+
var TextMaskAdapter7 = import_react38.default.forwardRef(function TextMaskAdapter8(props, ref) {
|
|
4915
4952
|
const { onChange, format, ...other } = props;
|
|
4916
|
-
return /* @__PURE__ */
|
|
4953
|
+
return /* @__PURE__ */ import_react38.default.createElement(
|
|
4917
4954
|
import_react_imask3.IMaskInput,
|
|
4918
4955
|
{
|
|
4919
4956
|
...other,
|
|
@@ -4941,8 +4978,8 @@ var TextMaskAdapter7 = import_react35.default.forwardRef(function TextMaskAdapte
|
|
|
4941
4978
|
}
|
|
4942
4979
|
);
|
|
4943
4980
|
});
|
|
4944
|
-
var MonthRangePicker = (0,
|
|
4945
|
-
const props = (0,
|
|
4981
|
+
var MonthRangePicker = (0, import_react38.forwardRef)((inProps, ref) => {
|
|
4982
|
+
const props = (0, import_joy50.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
|
|
4946
4983
|
const {
|
|
4947
4984
|
onChange,
|
|
4948
4985
|
disabled,
|
|
@@ -4961,35 +4998,35 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
4961
4998
|
size,
|
|
4962
4999
|
...innerProps
|
|
4963
5000
|
} = props;
|
|
4964
|
-
const innerRef = (0,
|
|
5001
|
+
const innerRef = (0, import_react38.useRef)(null);
|
|
4965
5002
|
const [value, setValue] = useControlledState(
|
|
4966
5003
|
props.value,
|
|
4967
5004
|
props.defaultValue || "",
|
|
4968
|
-
(0,
|
|
5005
|
+
(0, import_react38.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
4969
5006
|
);
|
|
4970
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
5007
|
+
const [anchorEl, setAnchorEl] = (0, import_react38.useState)(null);
|
|
4971
5008
|
const open = Boolean(anchorEl);
|
|
4972
|
-
const calendarValue = (0,
|
|
4973
|
-
(0,
|
|
5009
|
+
const calendarValue = (0, import_react38.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
|
|
5010
|
+
(0, import_react38.useEffect)(() => {
|
|
4974
5011
|
if (!anchorEl) {
|
|
4975
5012
|
innerRef.current?.blur();
|
|
4976
5013
|
}
|
|
4977
5014
|
}, [anchorEl, innerRef]);
|
|
4978
|
-
(0,
|
|
4979
|
-
const handleChange = (0,
|
|
5015
|
+
(0, import_react38.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
5016
|
+
const handleChange = (0, import_react38.useCallback)(
|
|
4980
5017
|
(event) => {
|
|
4981
5018
|
setValue(event.target.value);
|
|
4982
5019
|
},
|
|
4983
5020
|
[setValue]
|
|
4984
5021
|
);
|
|
4985
|
-
const handleCalendarToggle = (0,
|
|
5022
|
+
const handleCalendarToggle = (0, import_react38.useCallback)(
|
|
4986
5023
|
(event) => {
|
|
4987
5024
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
4988
5025
|
innerRef.current?.focus();
|
|
4989
5026
|
},
|
|
4990
5027
|
[anchorEl, setAnchorEl, innerRef]
|
|
4991
5028
|
);
|
|
4992
|
-
const handleCalendarChange = (0,
|
|
5029
|
+
const handleCalendarChange = (0, import_react38.useCallback)(
|
|
4993
5030
|
([date1, date2]) => {
|
|
4994
5031
|
if (!date1 || !date2) return;
|
|
4995
5032
|
setValue(formatValueString4([date1, date2], format));
|
|
@@ -4997,7 +5034,7 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
4997
5034
|
},
|
|
4998
5035
|
[setValue, setAnchorEl, format]
|
|
4999
5036
|
);
|
|
5000
|
-
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(
|
|
5001
5038
|
Input_default,
|
|
5002
5039
|
{
|
|
5003
5040
|
...innerProps,
|
|
@@ -5019,7 +5056,7 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
5019
5056
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5020
5057
|
fontFamily: "monospace"
|
|
5021
5058
|
},
|
|
5022
|
-
endDecorator: /* @__PURE__ */
|
|
5059
|
+
endDecorator: /* @__PURE__ */ import_react38.default.createElement(
|
|
5023
5060
|
IconButton_default,
|
|
5024
5061
|
{
|
|
5025
5062
|
variant: "plain",
|
|
@@ -5029,12 +5066,12 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
5029
5066
|
"aria-haspopup": "dialog",
|
|
5030
5067
|
"aria-expanded": open
|
|
5031
5068
|
},
|
|
5032
|
-
/* @__PURE__ */
|
|
5069
|
+
/* @__PURE__ */ import_react38.default.createElement(import_CalendarToday4.default, null)
|
|
5033
5070
|
),
|
|
5034
5071
|
label,
|
|
5035
5072
|
helperText
|
|
5036
5073
|
}
|
|
5037
|
-
), open && /* @__PURE__ */
|
|
5074
|
+
), open && /* @__PURE__ */ import_react38.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react38.default.createElement(
|
|
5038
5075
|
StyledPopper4,
|
|
5039
5076
|
{
|
|
5040
5077
|
id: "month-range-picker-popper",
|
|
@@ -5053,7 +5090,7 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
5053
5090
|
"aria-label": "Calendar Tooltip",
|
|
5054
5091
|
"aria-expanded": open
|
|
5055
5092
|
},
|
|
5056
|
-
/* @__PURE__ */
|
|
5093
|
+
/* @__PURE__ */ import_react38.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react38.default.createElement(
|
|
5057
5094
|
Calendar_default,
|
|
5058
5095
|
{
|
|
5059
5096
|
view: "month",
|
|
@@ -5066,14 +5103,14 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
5066
5103
|
disableFuture,
|
|
5067
5104
|
disablePast
|
|
5068
5105
|
}
|
|
5069
|
-
), /* @__PURE__ */
|
|
5106
|
+
), /* @__PURE__ */ import_react38.default.createElement(
|
|
5070
5107
|
DialogActions_default,
|
|
5071
5108
|
{
|
|
5072
5109
|
sx: {
|
|
5073
5110
|
p: 1
|
|
5074
5111
|
}
|
|
5075
5112
|
},
|
|
5076
|
-
/* @__PURE__ */
|
|
5113
|
+
/* @__PURE__ */ import_react38.default.createElement(
|
|
5077
5114
|
Button_default,
|
|
5078
5115
|
{
|
|
5079
5116
|
size,
|
|
@@ -5092,22 +5129,22 @@ var MonthRangePicker = (0, import_react35.forwardRef)((inProps, ref) => {
|
|
|
5092
5129
|
MonthRangePicker.displayName = "MonthRangePicker";
|
|
5093
5130
|
|
|
5094
5131
|
// src/components/NavigationGroup/NavigationGroup.tsx
|
|
5095
|
-
var
|
|
5096
|
-
var
|
|
5097
|
-
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, {
|
|
5098
5135
|
name: "NavigationGroup",
|
|
5099
5136
|
slot: "Summary",
|
|
5100
5137
|
shouldForwardProp: (prop) => prop !== "useIcon" && prop !== "level"
|
|
5101
5138
|
})(({ theme, useIcon, level }) => ({
|
|
5102
|
-
[`& .${
|
|
5139
|
+
[`& .${import_joy51.accordionSummaryClasses.button}`]: {
|
|
5103
5140
|
padding: theme.spacing(4, 6, 4, (useIcon ? 6 : 8) + (level || 0) * 8),
|
|
5104
|
-
[`&.${
|
|
5141
|
+
[`&.${import_joy51.accordionSummaryClasses.expanded}`]: {
|
|
5105
5142
|
color: theme.palette.primary.plainColor,
|
|
5106
5143
|
"--Icon-color": theme.palette.primary.plainColor
|
|
5107
5144
|
}
|
|
5108
5145
|
}
|
|
5109
5146
|
}));
|
|
5110
|
-
var AccordionDetails2 = (0,
|
|
5147
|
+
var AccordionDetails2 = (0, import_joy51.styled)(import_joy51.AccordionDetails, {
|
|
5111
5148
|
name: "NavigationGroup",
|
|
5112
5149
|
slot: "Details"
|
|
5113
5150
|
})(({ theme }) => ({
|
|
@@ -5116,13 +5153,13 @@ var AccordionDetails2 = (0, import_joy49.styled)(import_joy49.AccordionDetails,
|
|
|
5116
5153
|
}));
|
|
5117
5154
|
function NavigationGroup(props) {
|
|
5118
5155
|
const { title, children, startDecorator, level, ...rest } = props;
|
|
5119
|
-
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));
|
|
5120
5157
|
}
|
|
5121
5158
|
|
|
5122
5159
|
// src/components/NavigationItem/NavigationItem.tsx
|
|
5123
|
-
var
|
|
5124
|
-
var
|
|
5125
|
-
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, {
|
|
5126
5163
|
name: "NavigationItem",
|
|
5127
5164
|
slot: "Button",
|
|
5128
5165
|
shouldForwardProp: (prop) => prop !== "useIcon" && prop !== "level"
|
|
@@ -5136,7 +5173,7 @@ var ListItemButton = (0, import_joy50.styled)(import_joy50.ListItemButton, {
|
|
|
5136
5173
|
"&:active": {
|
|
5137
5174
|
backgroundColor: theme.palette.neutral.plainActiveBg
|
|
5138
5175
|
},
|
|
5139
|
-
[`&.${
|
|
5176
|
+
[`&.${import_joy52.listItemButtonClasses.selected}`]: {
|
|
5140
5177
|
color: theme.palette.primary.plainColor,
|
|
5141
5178
|
"--Icon-color": theme.palette.primary.plainColor,
|
|
5142
5179
|
"&:not(:hover):not(:active)": {
|
|
@@ -5149,7 +5186,7 @@ function NavigationItem(props) {
|
|
|
5149
5186
|
const handleClick = () => {
|
|
5150
5187
|
onClick?.(id);
|
|
5151
5188
|
};
|
|
5152
|
-
return /* @__PURE__ */
|
|
5189
|
+
return /* @__PURE__ */ import_react40.default.createElement(import_joy52.ListItem, { ...rest }, /* @__PURE__ */ import_react40.default.createElement(
|
|
5153
5190
|
ListItemButton,
|
|
5154
5191
|
{
|
|
5155
5192
|
level,
|
|
@@ -5158,21 +5195,21 @@ function NavigationItem(props) {
|
|
|
5158
5195
|
"aria-current": selected,
|
|
5159
5196
|
onClick: handleClick
|
|
5160
5197
|
},
|
|
5161
|
-
startDecorator && /* @__PURE__ */
|
|
5198
|
+
startDecorator && /* @__PURE__ */ import_react40.default.createElement(import_joy52.ListItemDecorator, null, startDecorator),
|
|
5162
5199
|
children
|
|
5163
5200
|
));
|
|
5164
5201
|
}
|
|
5165
5202
|
|
|
5166
5203
|
// src/components/Navigator/Navigator.tsx
|
|
5167
|
-
var
|
|
5204
|
+
var import_react41 = __toESM(require("react"));
|
|
5168
5205
|
function Navigator(props) {
|
|
5169
5206
|
const { items, level = 0, onSelect } = props;
|
|
5170
5207
|
const handleItemClick = (id) => {
|
|
5171
5208
|
onSelect?.(id);
|
|
5172
5209
|
};
|
|
5173
|
-
return /* @__PURE__ */
|
|
5210
|
+
return /* @__PURE__ */ import_react41.default.createElement("div", null, items.map((item, index) => {
|
|
5174
5211
|
if (item.type === "item") {
|
|
5175
|
-
return /* @__PURE__ */
|
|
5212
|
+
return /* @__PURE__ */ import_react41.default.createElement(
|
|
5176
5213
|
NavigationItem,
|
|
5177
5214
|
{
|
|
5178
5215
|
key: item.id,
|
|
@@ -5185,7 +5222,7 @@ function Navigator(props) {
|
|
|
5185
5222
|
item.title
|
|
5186
5223
|
);
|
|
5187
5224
|
} else if (item.type === "group") {
|
|
5188
|
-
return /* @__PURE__ */
|
|
5225
|
+
return /* @__PURE__ */ import_react41.default.createElement(
|
|
5189
5226
|
NavigationGroup,
|
|
5190
5227
|
{
|
|
5191
5228
|
key: `${item.title}-${index}`,
|
|
@@ -5203,16 +5240,16 @@ function Navigator(props) {
|
|
|
5203
5240
|
Navigator.displayName = "Navigator";
|
|
5204
5241
|
|
|
5205
5242
|
// src/components/PercentageInput/PercentageInput.tsx
|
|
5206
|
-
var
|
|
5243
|
+
var import_react42 = __toESM(require("react"));
|
|
5207
5244
|
var import_react_number_format2 = require("react-number-format");
|
|
5208
|
-
var
|
|
5245
|
+
var import_joy53 = require("@mui/joy");
|
|
5209
5246
|
var padDecimal = (value, decimalScale) => {
|
|
5210
5247
|
const [integer, decimal = ""] = `${value}`.split(".");
|
|
5211
5248
|
return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
|
|
5212
5249
|
};
|
|
5213
|
-
var TextMaskAdapter9 =
|
|
5250
|
+
var TextMaskAdapter9 = import_react42.default.forwardRef(function TextMaskAdapter10(props, ref) {
|
|
5214
5251
|
const { onChange, min, max, ...innerProps } = props;
|
|
5215
|
-
return /* @__PURE__ */
|
|
5252
|
+
return /* @__PURE__ */ import_react42.default.createElement(
|
|
5216
5253
|
import_react_number_format2.NumericFormat,
|
|
5217
5254
|
{
|
|
5218
5255
|
...innerProps,
|
|
@@ -5232,14 +5269,14 @@ var TextMaskAdapter9 = import_react39.default.forwardRef(function TextMaskAdapte
|
|
|
5232
5269
|
}
|
|
5233
5270
|
);
|
|
5234
5271
|
});
|
|
5235
|
-
var PercentageInputRoot = (0,
|
|
5272
|
+
var PercentageInputRoot = (0, import_joy53.styled)(Input_default, {
|
|
5236
5273
|
name: "PercentageInput",
|
|
5237
5274
|
slot: "Root",
|
|
5238
5275
|
overridesResolver: (props, styles) => styles.root
|
|
5239
5276
|
})({});
|
|
5240
|
-
var PercentageInput =
|
|
5277
|
+
var PercentageInput = import_react42.default.forwardRef(
|
|
5241
5278
|
function PercentageInput2(inProps, ref) {
|
|
5242
|
-
const props = (0,
|
|
5279
|
+
const props = (0, import_joy53.useThemeProps)({ props: inProps, name: "PercentageInput" });
|
|
5243
5280
|
const {
|
|
5244
5281
|
name,
|
|
5245
5282
|
onChange,
|
|
@@ -5260,18 +5297,18 @@ var PercentageInput = import_react39.default.forwardRef(
|
|
|
5260
5297
|
const [_value, setValue] = useControlledState(
|
|
5261
5298
|
props.value,
|
|
5262
5299
|
props.defaultValue,
|
|
5263
|
-
(0,
|
|
5300
|
+
(0, import_react42.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
5264
5301
|
);
|
|
5265
|
-
const [internalError, setInternalError] = (0,
|
|
5302
|
+
const [internalError, setInternalError] = (0, import_react42.useState)(
|
|
5266
5303
|
max && _value && _value > max || min && _value && _value < min
|
|
5267
5304
|
);
|
|
5268
|
-
const value = (0,
|
|
5305
|
+
const value = (0, import_react42.useMemo)(() => {
|
|
5269
5306
|
if (_value && useMinorUnit) {
|
|
5270
5307
|
return _value / Math.pow(10, maxDecimalScale);
|
|
5271
5308
|
}
|
|
5272
5309
|
return _value;
|
|
5273
5310
|
}, [_value, useMinorUnit, maxDecimalScale]);
|
|
5274
|
-
const handleChange = (0,
|
|
5311
|
+
const handleChange = (0, import_react42.useCallback)(
|
|
5275
5312
|
(event) => {
|
|
5276
5313
|
if (event.target.value === "") {
|
|
5277
5314
|
setValue(void 0);
|
|
@@ -5288,7 +5325,7 @@ var PercentageInput = import_react39.default.forwardRef(
|
|
|
5288
5325
|
},
|
|
5289
5326
|
[setValue, useMinorUnit, maxDecimalScale, min, max]
|
|
5290
5327
|
);
|
|
5291
|
-
return /* @__PURE__ */
|
|
5328
|
+
return /* @__PURE__ */ import_react42.default.createElement(
|
|
5292
5329
|
PercentageInputRoot,
|
|
5293
5330
|
{
|
|
5294
5331
|
...innerProps,
|
|
@@ -5319,41 +5356,41 @@ var PercentageInput = import_react39.default.forwardRef(
|
|
|
5319
5356
|
PercentageInput.displayName = "PercentageInput";
|
|
5320
5357
|
|
|
5321
5358
|
// src/components/Radio/Radio.tsx
|
|
5322
|
-
var
|
|
5323
|
-
var
|
|
5324
|
-
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);
|
|
5325
5362
|
var Radio = MotionRadio;
|
|
5326
5363
|
Radio.displayName = "Radio";
|
|
5327
|
-
var MotionRadioGroup = (0,
|
|
5364
|
+
var MotionRadioGroup = (0, import_framer_motion28.motion)(import_joy54.RadioGroup);
|
|
5328
5365
|
var RadioGroup = MotionRadioGroup;
|
|
5329
5366
|
RadioGroup.displayName = "RadioGroup";
|
|
5330
5367
|
|
|
5331
5368
|
// src/components/RadioList/RadioList.tsx
|
|
5332
|
-
var
|
|
5369
|
+
var import_react43 = __toESM(require("react"));
|
|
5333
5370
|
function RadioList(props) {
|
|
5334
5371
|
const { items, ...innerProps } = props;
|
|
5335
|
-
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 })));
|
|
5336
5373
|
}
|
|
5337
5374
|
RadioList.displayName = "RadioList";
|
|
5338
5375
|
|
|
5339
5376
|
// src/components/Stepper/Stepper.tsx
|
|
5340
|
-
var
|
|
5341
|
-
var
|
|
5377
|
+
var import_react44 = __toESM(require("react"));
|
|
5378
|
+
var import_joy55 = require("@mui/joy");
|
|
5342
5379
|
var import_Check = __toESM(require("@mui/icons-material/Check"));
|
|
5343
|
-
var
|
|
5344
|
-
var Step = (0,
|
|
5380
|
+
var import_framer_motion29 = require("framer-motion");
|
|
5381
|
+
var Step = (0, import_joy55.styled)(import_joy55.Step)({});
|
|
5345
5382
|
Step.displayName = "Step";
|
|
5346
|
-
var StepIndicator = (0,
|
|
5383
|
+
var StepIndicator = (0, import_joy55.styled)(import_joy55.StepIndicator)({});
|
|
5347
5384
|
StepIndicator.displayName = "StepIndicator";
|
|
5348
|
-
var StyledStepper = (0,
|
|
5385
|
+
var StyledStepper = (0, import_joy55.styled)(import_joy55.Stepper)(({ theme }) => ({
|
|
5349
5386
|
"--StepIndicator-size": "24px",
|
|
5350
5387
|
"--Step-gap": theme.spacing(2),
|
|
5351
5388
|
"--joy-palette-success-solidBg": "var(--joy-palette-success-400)",
|
|
5352
|
-
[`& .${
|
|
5389
|
+
[`& .${import_joy55.stepIndicatorClasses.root}`]: {
|
|
5353
5390
|
fontSize: "var(--ceed-fontSize-xs)"
|
|
5354
5391
|
}
|
|
5355
5392
|
}));
|
|
5356
|
-
var MotionStepper = (0,
|
|
5393
|
+
var MotionStepper = (0, import_framer_motion29.motion)(StyledStepper);
|
|
5357
5394
|
function Stepper(props) {
|
|
5358
5395
|
const {
|
|
5359
5396
|
steps,
|
|
@@ -5363,30 +5400,30 @@ function Stepper(props) {
|
|
|
5363
5400
|
inactiveLineColor = "neutral.300",
|
|
5364
5401
|
activeStep
|
|
5365
5402
|
} = props;
|
|
5366
|
-
return /* @__PURE__ */
|
|
5403
|
+
return /* @__PURE__ */ import_react44.default.createElement(
|
|
5367
5404
|
MotionStepper,
|
|
5368
5405
|
{
|
|
5369
5406
|
sx: (theme) => ({
|
|
5370
5407
|
"--StepIndicator-size": "24px",
|
|
5371
5408
|
"--Step-gap": theme.spacing(2),
|
|
5372
|
-
[`& .${
|
|
5409
|
+
[`& .${import_joy55.stepIndicatorClasses.root}`]: {
|
|
5373
5410
|
fontSize: "var(--ceed-fontSize-xs)"
|
|
5374
5411
|
},
|
|
5375
|
-
[`& .${
|
|
5412
|
+
[`& .${import_joy55.stepClasses.completed}`]: {
|
|
5376
5413
|
"&::after": { bgcolor: activeLineColor },
|
|
5377
|
-
[`& .${
|
|
5414
|
+
[`& .${import_joy55.stepIndicatorClasses.root}`]: {
|
|
5378
5415
|
bgcolor: activeColor
|
|
5379
5416
|
}
|
|
5380
5417
|
},
|
|
5381
|
-
[`& .${
|
|
5418
|
+
[`& .${import_joy55.stepClasses.active}`]: {
|
|
5382
5419
|
"&::after": { bgcolor: inactiveLineColor },
|
|
5383
|
-
[`& .${
|
|
5420
|
+
[`& .${import_joy55.stepIndicatorClasses.root}`]: {
|
|
5384
5421
|
bgcolor: activeColor
|
|
5385
5422
|
}
|
|
5386
5423
|
},
|
|
5387
|
-
[`& .${
|
|
5424
|
+
[`& .${import_joy55.stepClasses.disabled}`]: {
|
|
5388
5425
|
"&::after": { bgcolor: inactiveLineColor },
|
|
5389
|
-
[`& .${
|
|
5426
|
+
[`& .${import_joy55.stepIndicatorClasses.root}`]: {
|
|
5390
5427
|
bgcolor: inactiveColor
|
|
5391
5428
|
}
|
|
5392
5429
|
}
|
|
@@ -5397,16 +5434,16 @@ function Stepper(props) {
|
|
|
5397
5434
|
const completed = activeStep > i + 1;
|
|
5398
5435
|
const disabled = activeStep < i + 1;
|
|
5399
5436
|
const hasContent = step.label || step.extraContent;
|
|
5400
|
-
return /* @__PURE__ */
|
|
5437
|
+
return /* @__PURE__ */ import_react44.default.createElement(
|
|
5401
5438
|
Step,
|
|
5402
5439
|
{
|
|
5403
5440
|
key: `step-${i}`,
|
|
5404
|
-
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),
|
|
5405
5442
|
active,
|
|
5406
5443
|
completed,
|
|
5407
5444
|
disabled
|
|
5408
5445
|
},
|
|
5409
|
-
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))
|
|
5410
5447
|
);
|
|
5411
5448
|
})
|
|
5412
5449
|
);
|
|
@@ -5414,11 +5451,11 @@ function Stepper(props) {
|
|
|
5414
5451
|
Stepper.displayName = "Stepper";
|
|
5415
5452
|
|
|
5416
5453
|
// src/components/Switch/Switch.tsx
|
|
5417
|
-
var
|
|
5418
|
-
var
|
|
5419
|
-
var
|
|
5420
|
-
var MotionSwitch = (0,
|
|
5421
|
-
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)({
|
|
5422
5459
|
"--Icon-fontSize": "calc(var(--Switch-thumbSize) * 0.75)",
|
|
5423
5460
|
display: "inline-flex",
|
|
5424
5461
|
justifyContent: "center",
|
|
@@ -5431,19 +5468,19 @@ var StyledThumb = (0, import_joy54.styled)(import_framer_motion29.motion.div)({
|
|
|
5431
5468
|
boxShadow: "var(--Switch-thumbShadow)",
|
|
5432
5469
|
color: "var(--Switch-thumbColor)",
|
|
5433
5470
|
backgroundColor: "var(--Switch-thumbBackground)",
|
|
5434
|
-
[`&.${
|
|
5471
|
+
[`&.${import_joy56.switchClasses.checked}`]: {
|
|
5435
5472
|
left: "unset",
|
|
5436
5473
|
right: "var(--Switch-thumbOffset)"
|
|
5437
5474
|
}
|
|
5438
5475
|
});
|
|
5439
|
-
var Thumb = (props) => /* @__PURE__ */
|
|
5476
|
+
var Thumb = (props) => /* @__PURE__ */ import_react45.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
|
|
5440
5477
|
var spring = {
|
|
5441
5478
|
type: "spring",
|
|
5442
5479
|
stiffness: 700,
|
|
5443
5480
|
damping: 30
|
|
5444
5481
|
};
|
|
5445
5482
|
var Switch = (props) => {
|
|
5446
|
-
return /* @__PURE__ */
|
|
5483
|
+
return /* @__PURE__ */ import_react45.default.createElement(
|
|
5447
5484
|
MotionSwitch,
|
|
5448
5485
|
{
|
|
5449
5486
|
...props,
|
|
@@ -5457,32 +5494,32 @@ var Switch = (props) => {
|
|
|
5457
5494
|
Switch.displayName = "Switch";
|
|
5458
5495
|
|
|
5459
5496
|
// src/components/Tabs/Tabs.tsx
|
|
5460
|
-
var
|
|
5461
|
-
var
|
|
5462
|
-
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 }) => ({
|
|
5463
5500
|
backgroundColor: theme.palette.background.body
|
|
5464
5501
|
}));
|
|
5465
5502
|
var Tabs = StyledTabs;
|
|
5466
5503
|
Tabs.displayName = "Tabs";
|
|
5467
|
-
var StyledTab = (0,
|
|
5504
|
+
var StyledTab = (0, import_joy57.styled)(import_joy57.Tab)(({ theme }) => ({
|
|
5468
5505
|
gap: theme.spacing(2),
|
|
5469
|
-
[`&:not(.${
|
|
5506
|
+
[`&:not(.${import_joy57.tabClasses.selected})`]: {
|
|
5470
5507
|
color: theme.palette.neutral[700]
|
|
5471
5508
|
},
|
|
5472
|
-
[`&.${
|
|
5509
|
+
[`&.${import_joy57.tabClasses.variantPlain}`]: {
|
|
5473
5510
|
backgroundColor: theme.palette.background.body
|
|
5474
5511
|
}
|
|
5475
5512
|
}));
|
|
5476
|
-
var Tab = (0,
|
|
5477
|
-
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);
|
|
5478
5515
|
});
|
|
5479
5516
|
Tab.displayName = "Tab";
|
|
5480
|
-
var TabList =
|
|
5481
|
-
var TabPanel =
|
|
5517
|
+
var TabList = import_joy57.TabList;
|
|
5518
|
+
var TabPanel = import_joy57.TabPanel;
|
|
5482
5519
|
|
|
5483
5520
|
// src/components/ThemeProvider/ThemeProvider.tsx
|
|
5484
|
-
var
|
|
5485
|
-
var
|
|
5521
|
+
var import_react47 = __toESM(require("react"));
|
|
5522
|
+
var import_joy58 = require("@mui/joy");
|
|
5486
5523
|
var colorScheme = {
|
|
5487
5524
|
palette: {
|
|
5488
5525
|
danger: {
|
|
@@ -5535,7 +5572,7 @@ var colorScheme = {
|
|
|
5535
5572
|
}
|
|
5536
5573
|
}
|
|
5537
5574
|
};
|
|
5538
|
-
var defaultTheme = (0,
|
|
5575
|
+
var defaultTheme = (0, import_joy58.extendTheme)({
|
|
5539
5576
|
cssVarPrefix: "ceed",
|
|
5540
5577
|
spacing: 4,
|
|
5541
5578
|
breakpoints: {
|
|
@@ -5587,7 +5624,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5587
5624
|
},
|
|
5588
5625
|
styleOverrides: {
|
|
5589
5626
|
root: {
|
|
5590
|
-
[`.${
|
|
5627
|
+
[`.${import_joy58.inputClasses.root}`]: {
|
|
5591
5628
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5592
5629
|
"font-family": "monospace"
|
|
5593
5630
|
}
|
|
@@ -5600,7 +5637,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5600
5637
|
},
|
|
5601
5638
|
styleOverrides: {
|
|
5602
5639
|
root: {
|
|
5603
|
-
[`.${
|
|
5640
|
+
[`.${import_joy58.inputClasses.root}`]: {
|
|
5604
5641
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5605
5642
|
"font-family": "monospace"
|
|
5606
5643
|
}
|
|
@@ -5613,7 +5650,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5613
5650
|
},
|
|
5614
5651
|
styleOverrides: {
|
|
5615
5652
|
root: {
|
|
5616
|
-
[`.${
|
|
5653
|
+
[`.${import_joy58.inputClasses.root}`]: {
|
|
5617
5654
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5618
5655
|
"font-family": "monospace"
|
|
5619
5656
|
}
|
|
@@ -5626,7 +5663,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5626
5663
|
},
|
|
5627
5664
|
styleOverrides: {
|
|
5628
5665
|
root: {
|
|
5629
|
-
[`.${
|
|
5666
|
+
[`.${import_joy58.inputClasses.root}`]: {
|
|
5630
5667
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5631
5668
|
"font-family": "monospace"
|
|
5632
5669
|
}
|
|
@@ -5639,7 +5676,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5639
5676
|
},
|
|
5640
5677
|
styleOverrides: {
|
|
5641
5678
|
root: {
|
|
5642
|
-
[`.${
|
|
5679
|
+
[`.${import_joy58.inputClasses.root}`]: {
|
|
5643
5680
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
5644
5681
|
"font-family": "monospace"
|
|
5645
5682
|
}
|
|
@@ -5681,7 +5718,7 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5681
5718
|
outline: `${theme.palette.primary[500]} solid 2px`,
|
|
5682
5719
|
outlineOffset: "-2px"
|
|
5683
5720
|
},
|
|
5684
|
-
[`& .${
|
|
5721
|
+
[`& .${import_joy58.checkboxClasses.root}`]: {
|
|
5685
5722
|
verticalAlign: "middle"
|
|
5686
5723
|
}
|
|
5687
5724
|
})
|
|
@@ -5731,13 +5768,13 @@ var defaultTheme = (0, import_joy56.extendTheme)({
|
|
|
5731
5768
|
});
|
|
5732
5769
|
function ThemeProvider(props) {
|
|
5733
5770
|
const theme = props.theme || defaultTheme;
|
|
5734
|
-
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));
|
|
5735
5772
|
}
|
|
5736
5773
|
ThemeProvider.displayName = "ThemeProvider";
|
|
5737
5774
|
|
|
5738
5775
|
// src/components/Uploader/Uploader.tsx
|
|
5739
|
-
var
|
|
5740
|
-
var
|
|
5776
|
+
var import_react48 = __toESM(require("react"));
|
|
5777
|
+
var import_joy59 = require("@mui/joy");
|
|
5741
5778
|
var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
|
|
5742
5779
|
var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
|
|
5743
5780
|
var import_ClearRounded = __toESM(require("@mui/icons-material/ClearRounded"));
|
|
@@ -5759,7 +5796,7 @@ var esmFiles = {
|
|
|
5759
5796
|
"@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js"
|
|
5760
5797
|
)
|
|
5761
5798
|
};
|
|
5762
|
-
var VisuallyHiddenInput = (0,
|
|
5799
|
+
var VisuallyHiddenInput = (0, import_joy59.styled)(import_joy59.Input)({
|
|
5763
5800
|
width: "1px",
|
|
5764
5801
|
height: "1px",
|
|
5765
5802
|
overflow: "hidden",
|
|
@@ -5768,18 +5805,18 @@ var VisuallyHiddenInput = (0, import_joy57.styled)(import_joy57.Input)({
|
|
|
5768
5805
|
clipPath: "inset(50%)",
|
|
5769
5806
|
position: "absolute"
|
|
5770
5807
|
});
|
|
5771
|
-
var PreviewRoot = (0,
|
|
5808
|
+
var PreviewRoot = (0, import_joy59.styled)(Stack_default, {
|
|
5772
5809
|
name: "Uploader",
|
|
5773
5810
|
slot: "PreviewRoot"
|
|
5774
5811
|
})({});
|
|
5775
|
-
var UploadCard = (0,
|
|
5812
|
+
var UploadCard = (0, import_joy59.styled)(Card, {
|
|
5776
5813
|
name: "Uploader",
|
|
5777
5814
|
slot: "UploadCard"
|
|
5778
5815
|
})(({ theme }) => ({
|
|
5779
5816
|
padding: theme.spacing(2.5),
|
|
5780
5817
|
border: `1px solid ${theme.palette.neutral.outlinedBorder}`
|
|
5781
5818
|
}));
|
|
5782
|
-
var UploadFileIcon = (0,
|
|
5819
|
+
var UploadFileIcon = (0, import_joy59.styled)(import_UploadFileRounded.default, {
|
|
5783
5820
|
name: "Uploader",
|
|
5784
5821
|
slot: "UploadFileIcon"
|
|
5785
5822
|
})(({ theme }) => ({
|
|
@@ -5787,7 +5824,7 @@ var UploadFileIcon = (0, import_joy57.styled)(import_UploadFileRounded.default,
|
|
|
5787
5824
|
width: "32px",
|
|
5788
5825
|
height: "32px"
|
|
5789
5826
|
}));
|
|
5790
|
-
var ClearIcon2 = (0,
|
|
5827
|
+
var ClearIcon2 = (0, import_joy59.styled)(import_ClearRounded.default, {
|
|
5791
5828
|
name: "Uploader",
|
|
5792
5829
|
slot: "ClearIcon"
|
|
5793
5830
|
})(({ theme }) => ({
|
|
@@ -5813,40 +5850,50 @@ var getFileSize = (n) => {
|
|
|
5813
5850
|
};
|
|
5814
5851
|
var Preview = (props) => {
|
|
5815
5852
|
const { files, uploaded, onDelete } = props;
|
|
5816
|
-
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))))));
|
|
5817
5854
|
};
|
|
5818
|
-
var UploaderRoot = (0,
|
|
5855
|
+
var UploaderRoot = (0, import_joy59.styled)(Stack_default, {
|
|
5819
5856
|
name: "Uploader",
|
|
5820
5857
|
slot: "root"
|
|
5821
5858
|
})(({ theme }) => ({
|
|
5822
5859
|
gap: theme.spacing(2)
|
|
5823
5860
|
}));
|
|
5824
|
-
var FileDropZone = (0,
|
|
5861
|
+
var FileDropZone = (0, import_joy59.styled)(Sheet_default, {
|
|
5825
5862
|
name: "Uploader",
|
|
5826
5863
|
slot: "dropZone",
|
|
5827
|
-
shouldForwardProp: (prop) => prop !== "error"
|
|
5828
|
-
})(
|
|
5829
|
-
|
|
5830
|
-
|
|
5831
|
-
|
|
5832
|
-
|
|
5833
|
-
|
|
5834
|
-
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
}
|
|
5840
|
-
|
|
5864
|
+
shouldForwardProp: (prop) => prop !== "error" && prop !== "disabled"
|
|
5865
|
+
})(
|
|
5866
|
+
({ theme, state, error, disabled }) => ({
|
|
5867
|
+
width: "100%",
|
|
5868
|
+
display: "flex",
|
|
5869
|
+
flexDirection: "column",
|
|
5870
|
+
justifyContent: "center",
|
|
5871
|
+
alignItems: "center",
|
|
5872
|
+
padding: theme.spacing(5),
|
|
5873
|
+
gap: theme.spacing(4),
|
|
5874
|
+
cursor: disabled ? "not-allowed" : "pointer",
|
|
5875
|
+
backgroundColor: theme.palette.background.surface,
|
|
5876
|
+
border: disabled ? `1px solid ${theme.palette.danger.outlinedDisabledBorder}` : error ? `1px solid ${theme.palette.danger.outlinedBorder}` : state === "idle" ? `1px solid ${theme.palette.neutral.outlinedBorder}` : `1px solid ${theme.palette.primary.outlinedBorder}`,
|
|
5877
|
+
"&:hover": {
|
|
5878
|
+
border: disabled ? `1px solid ${theme.palette.danger.outlinedDisabledBorder}` : error ? `1px solid ${theme.palette.danger.outlinedBorder}` : `1px solid ${theme.palette.primary.outlinedBorder}`
|
|
5879
|
+
}
|
|
5880
|
+
})
|
|
5881
|
+
);
|
|
5882
|
+
var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
|
|
5841
5883
|
name: "Uploader",
|
|
5842
5884
|
slot: "iconContainer",
|
|
5843
|
-
shouldForwardProp: (prop) => prop !== "error"
|
|
5844
|
-
})(
|
|
5845
|
-
|
|
5846
|
-
|
|
5847
|
-
|
|
5848
|
-
|
|
5849
|
-
|
|
5885
|
+
shouldForwardProp: (prop) => prop !== "error" && prop !== "disabled"
|
|
5886
|
+
})(
|
|
5887
|
+
({ theme, state, error, disabled }) => ({
|
|
5888
|
+
color: disabled ? theme.palette.primary.outlinedDisabledBorder : error ? `rgba(${theme.vars.palette.danger.mainChannel} / 0.6)` : state === "over" ? `rgba(${theme.palette.primary.mainChannel} / 0.6)` : theme.palette.neutral.softActiveBg,
|
|
5889
|
+
width: "32px",
|
|
5890
|
+
height: "32px",
|
|
5891
|
+
".MuiSheet-root:hover &": {
|
|
5892
|
+
color: disabled ? theme.palette.primary.outlinedDisabledBorder : error ? `rgba(${theme.vars.palette.danger.mainChannel} / 0.6)` : `rgba(${theme.palette.primary.mainChannel} / 0.6)`
|
|
5893
|
+
}
|
|
5894
|
+
})
|
|
5895
|
+
);
|
|
5896
|
+
var Uploader = import_react48.default.memo(
|
|
5850
5897
|
(props) => {
|
|
5851
5898
|
const {
|
|
5852
5899
|
accept,
|
|
@@ -5861,14 +5908,14 @@ var Uploader = import_react45.default.memo(
|
|
|
5861
5908
|
disabled,
|
|
5862
5909
|
onDelete
|
|
5863
5910
|
} = props;
|
|
5864
|
-
const dropZoneRef = (0,
|
|
5865
|
-
const inputRef = (0,
|
|
5866
|
-
const [errorText, setErrorText] = (0,
|
|
5867
|
-
const [files, setFiles] = (0,
|
|
5868
|
-
const [uploaded, setUploaded] = (0,
|
|
5869
|
-
const [previewState, setPreviewState] = (0,
|
|
5870
|
-
const accepts = (0,
|
|
5871
|
-
const parsedAccepts = (0,
|
|
5911
|
+
const dropZoneRef = (0, import_react48.useRef)(null);
|
|
5912
|
+
const inputRef = (0, import_react48.useRef)(null);
|
|
5913
|
+
const [errorText, setErrorText] = (0, import_react48.useState)();
|
|
5914
|
+
const [files, setFiles] = (0, import_react48.useState)([]);
|
|
5915
|
+
const [uploaded, setUploaded] = (0, import_react48.useState)(props.uploaded || []);
|
|
5916
|
+
const [previewState, setPreviewState] = (0, import_react48.useState)("idle");
|
|
5917
|
+
const accepts = (0, import_react48.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
|
|
5918
|
+
const parsedAccepts = (0, import_react48.useMemo)(
|
|
5872
5919
|
() => accepts.flatMap((type) => {
|
|
5873
5920
|
if (["image/*", "video/*", "audio/*"].includes(type)) {
|
|
5874
5921
|
return ALL_EXTENSIONS_BY_TYPE[type];
|
|
@@ -5877,7 +5924,7 @@ var Uploader = import_react45.default.memo(
|
|
|
5877
5924
|
}),
|
|
5878
5925
|
[accepts]
|
|
5879
5926
|
);
|
|
5880
|
-
const helperText = (0,
|
|
5927
|
+
const helperText = (0, import_react48.useMemo)(() => {
|
|
5881
5928
|
const [allAcceptedTypes, acceptedTypes] = [
|
|
5882
5929
|
accepts.filter((accept2) => ["image/*", "video/*", "audio/*"].includes(accept2)).map((accept2) => {
|
|
5883
5930
|
const [type] = accept2.split("/");
|
|
@@ -5904,12 +5951,12 @@ var Uploader = import_react45.default.memo(
|
|
|
5904
5951
|
}
|
|
5905
5952
|
return helperTexts.join(", ");
|
|
5906
5953
|
}, [accepts, maxFileTotalSize, maxCount]);
|
|
5907
|
-
const error = (0,
|
|
5908
|
-
const showDropZone = (0,
|
|
5954
|
+
const error = (0, import_react48.useMemo)(() => !!errorText || props.error, [props.error, errorText]);
|
|
5955
|
+
const showDropZone = (0, import_react48.useMemo)(
|
|
5909
5956
|
() => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
|
|
5910
5957
|
[files, maxCount, uploaded]
|
|
5911
5958
|
);
|
|
5912
|
-
const addFiles = (0,
|
|
5959
|
+
const addFiles = (0, import_react48.useCallback)(
|
|
5913
5960
|
(uploads) => {
|
|
5914
5961
|
try {
|
|
5915
5962
|
const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
|
|
@@ -5954,7 +6001,7 @@ var Uploader = import_react45.default.memo(
|
|
|
5954
6001
|
},
|
|
5955
6002
|
[files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
|
|
5956
6003
|
);
|
|
5957
|
-
(0,
|
|
6004
|
+
(0, import_react48.useEffect)(() => {
|
|
5958
6005
|
if (!dropZoneRef.current || disabled) {
|
|
5959
6006
|
return;
|
|
5960
6007
|
}
|
|
@@ -5992,7 +6039,7 @@ var Uploader = import_react45.default.memo(
|
|
|
5992
6039
|
);
|
|
5993
6040
|
return () => cleanup?.();
|
|
5994
6041
|
}, [disabled, addFiles]);
|
|
5995
|
-
(0,
|
|
6042
|
+
(0, import_react48.useEffect)(() => {
|
|
5996
6043
|
if (inputRef.current && minCount) {
|
|
5997
6044
|
if (files.length < minCount) {
|
|
5998
6045
|
inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
|
|
@@ -6001,14 +6048,14 @@ var Uploader = import_react45.default.memo(
|
|
|
6001
6048
|
}
|
|
6002
6049
|
}
|
|
6003
6050
|
}, [inputRef, files, minCount]);
|
|
6004
|
-
const handleFileChanged = (0,
|
|
6051
|
+
const handleFileChanged = (0, import_react48.useCallback)(
|
|
6005
6052
|
(event) => {
|
|
6006
6053
|
const files2 = Array.from(event.target.files || []);
|
|
6007
6054
|
addFiles(files2);
|
|
6008
6055
|
},
|
|
6009
6056
|
[addFiles]
|
|
6010
6057
|
);
|
|
6011
|
-
const handleDeleteFile = (0,
|
|
6058
|
+
const handleDeleteFile = (0, import_react48.useCallback)(
|
|
6012
6059
|
(deletedFile) => {
|
|
6013
6060
|
if (deletedFile instanceof File) {
|
|
6014
6061
|
setFiles((current) => {
|
|
@@ -6028,19 +6075,20 @@ var Uploader = import_react45.default.memo(
|
|
|
6028
6075
|
},
|
|
6029
6076
|
[name, onChange, onDelete]
|
|
6030
6077
|
);
|
|
6031
|
-
const handleUploaderButtonClick = (0,
|
|
6078
|
+
const handleUploaderButtonClick = (0, import_react48.useCallback)(() => {
|
|
6032
6079
|
inputRef.current?.click();
|
|
6033
6080
|
}, []);
|
|
6034
|
-
const uploader = /* @__PURE__ */
|
|
6081
|
+
const uploader = /* @__PURE__ */ import_react48.default.createElement(
|
|
6035
6082
|
FileDropZone,
|
|
6036
6083
|
{
|
|
6037
6084
|
state: previewState,
|
|
6038
6085
|
error: !!(error || errorText),
|
|
6086
|
+
disabled,
|
|
6039
6087
|
ref: dropZoneRef,
|
|
6040
6088
|
onClick: handleUploaderButtonClick
|
|
6041
6089
|
},
|
|
6042
|
-
/* @__PURE__ */
|
|
6043
|
-
/* @__PURE__ */
|
|
6090
|
+
/* @__PURE__ */ import_react48.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react48.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
|
|
6091
|
+
/* @__PURE__ */ import_react48.default.createElement(
|
|
6044
6092
|
VisuallyHiddenInput,
|
|
6045
6093
|
{
|
|
6046
6094
|
disabled,
|
|
@@ -6063,7 +6111,7 @@ var Uploader = import_react45.default.memo(
|
|
|
6063
6111
|
}
|
|
6064
6112
|
)
|
|
6065
6113
|
);
|
|
6066
|
-
return /* @__PURE__ */
|
|
6114
|
+
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 }));
|
|
6067
6115
|
}
|
|
6068
6116
|
);
|
|
6069
6117
|
Uploader.displayName = "Uploader";
|