@ceed/cds 1.24.1-next.3 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/rehype-accent-FZRUD7VI.js +39 -0
- package/dist/components/CurrencyInput/CurrencyInput.d.ts +1 -1
- package/dist/components/CurrencyInput/hooks/use-currency-setting.d.ts +2 -2
- package/dist/components/DataTable/components.d.ts +2 -1
- package/dist/components/DataTable/hooks.d.ts +1 -1
- package/dist/components/DataTable/styled.d.ts +3 -1
- package/dist/components/DataTable/types.d.ts +11 -0
- package/dist/components/DataTable/utils.d.ts +2 -2
- package/dist/components/RadioTileGroup/RadioTileGroup.d.ts +56 -0
- package/dist/components/RadioTileGroup/index.d.ts +3 -0
- package/dist/components/data-display/DataTable.md +177 -1
- package/dist/components/data-display/InfoSign.md +74 -91
- package/dist/components/data-display/Typography.md +411 -94
- package/dist/components/feedback/CircularProgress.md +257 -0
- package/dist/components/feedback/Dialog.md +76 -62
- package/dist/components/feedback/Modal.md +430 -138
- package/dist/components/feedback/Skeleton.md +280 -0
- package/dist/components/feedback/llms.txt +2 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/inputs/Autocomplete.md +356 -107
- package/dist/components/inputs/ButtonGroup.md +115 -104
- package/dist/components/inputs/CurrencyInput.md +183 -5
- package/dist/components/inputs/DatePicker.md +108 -431
- package/dist/components/inputs/DateRangePicker.md +131 -492
- package/dist/components/inputs/FilterableCheckboxGroup.md +145 -19
- package/dist/components/inputs/FormControl.md +361 -0
- package/dist/components/inputs/IconButton.md +137 -88
- package/dist/components/inputs/Input.md +204 -73
- package/dist/components/inputs/MonthPicker.md +95 -422
- package/dist/components/inputs/MonthRangePicker.md +89 -466
- package/dist/components/inputs/PercentageInput.md +185 -16
- package/dist/components/inputs/RadioButton.md +163 -35
- package/dist/components/inputs/RadioList.md +241 -0
- package/dist/components/inputs/RadioTileGroup.md +507 -0
- package/dist/components/inputs/Select.md +222 -326
- package/dist/components/inputs/Slider.md +334 -0
- package/dist/components/inputs/Switch.md +143 -376
- package/dist/components/inputs/Textarea.md +213 -10
- package/dist/components/inputs/Uploader/Uploader.md +145 -66
- package/dist/components/inputs/llms.txt +4 -0
- package/dist/components/navigation/Breadcrumbs.md +57 -308
- package/dist/components/navigation/Drawer.md +180 -0
- package/dist/components/navigation/Dropdown.md +98 -215
- package/dist/components/navigation/IconMenuButton.md +40 -502
- package/dist/components/navigation/InsetDrawer.md +281 -650
- package/dist/components/navigation/Link.md +31 -348
- package/dist/components/navigation/Menu.md +92 -285
- package/dist/components/navigation/MenuButton.md +55 -448
- package/dist/components/navigation/Pagination.md +47 -338
- package/dist/components/navigation/Stepper.md +160 -28
- package/dist/components/navigation/Tabs.md +57 -316
- package/dist/components/surfaces/Accordions.md +49 -804
- package/dist/components/surfaces/Card.md +97 -157
- package/dist/components/surfaces/Divider.md +83 -234
- package/dist/components/surfaces/Sheet.md +153 -328
- package/dist/guides/ThemeProvider.md +89 -0
- package/dist/guides/llms.txt +9 -0
- package/dist/index.browser.js +224 -0
- package/dist/index.browser.js.map +7 -0
- package/dist/index.cjs +726 -425
- package/dist/index.d.ts +1 -1
- package/dist/index.js +641 -396
- package/dist/llms.txt +9 -0
- package/framer/index.js +1 -163
- package/package.json +22 -17
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_joy61.AspectRatio,
|
|
89
89
|
Autocomplete: () => Autocomplete,
|
|
90
|
-
AutocompleteListbox: () =>
|
|
91
|
-
AutocompleteOption: () =>
|
|
90
|
+
AutocompleteListbox: () => import_joy61.AutocompleteListbox,
|
|
91
|
+
AutocompleteOption: () => import_joy61.AutocompleteOption,
|
|
92
92
|
Avatar: () => Avatar,
|
|
93
93
|
AvatarGroup: () => import_joy11.AvatarGroup,
|
|
94
|
-
Badge: () =>
|
|
94
|
+
Badge: () => import_joy61.Badge,
|
|
95
95
|
Box: () => Box,
|
|
96
96
|
Breadcrumbs: () => Breadcrumbs,
|
|
97
97
|
Button: () => Button,
|
|
98
|
-
ButtonGroup: () =>
|
|
98
|
+
ButtonGroup: () => import_joy61.ButtonGroup,
|
|
99
99
|
Calendar: () => Calendar,
|
|
100
|
-
Card: () =>
|
|
101
|
-
CardActions: () =>
|
|
102
|
-
CardContent: () =>
|
|
103
|
-
CardCover: () =>
|
|
104
|
-
CardOverflow: () =>
|
|
100
|
+
Card: () => import_joy61.Card,
|
|
101
|
+
CardActions: () => import_joy61.CardActions,
|
|
102
|
+
CardContent: () => import_joy61.CardContent,
|
|
103
|
+
CardCover: () => import_joy61.CardCover,
|
|
104
|
+
CardOverflow: () => import_joy61.CardOverflow,
|
|
105
105
|
Checkbox: () => Checkbox,
|
|
106
|
-
Chip: () =>
|
|
107
|
-
CircularProgress: () =>
|
|
106
|
+
Chip: () => import_joy61.Chip,
|
|
107
|
+
CircularProgress: () => import_joy61.CircularProgress,
|
|
108
108
|
Container: () => Container,
|
|
109
109
|
CurrencyInput: () => CurrencyInput,
|
|
110
110
|
DataTable: () => DataTable,
|
|
@@ -127,15 +127,15 @@ __export(index_exports, {
|
|
|
127
127
|
InfoSign: () => InfoSign,
|
|
128
128
|
Input: () => Input,
|
|
129
129
|
InsetDrawer: () => InsetDrawer,
|
|
130
|
-
LinearProgress: () =>
|
|
131
|
-
Link: () =>
|
|
132
|
-
List: () =>
|
|
133
|
-
ListDivider: () =>
|
|
134
|
-
ListItem: () =>
|
|
135
|
-
ListItemButton: () =>
|
|
136
|
-
ListItemContent: () =>
|
|
137
|
-
ListItemDecorator: () =>
|
|
138
|
-
ListSubheader: () =>
|
|
130
|
+
LinearProgress: () => import_joy61.LinearProgress,
|
|
131
|
+
Link: () => import_joy61.Link,
|
|
132
|
+
List: () => import_joy61.List,
|
|
133
|
+
ListDivider: () => import_joy61.ListDivider,
|
|
134
|
+
ListItem: () => import_joy61.ListItem,
|
|
135
|
+
ListItemButton: () => import_joy61.ListItemButton,
|
|
136
|
+
ListItemContent: () => import_joy61.ListItemContent,
|
|
137
|
+
ListItemDecorator: () => import_joy61.ListItemDecorator,
|
|
138
|
+
ListSubheader: () => import_joy61.ListSubheader,
|
|
139
139
|
Markdown: () => Markdown,
|
|
140
140
|
Menu: () => Menu,
|
|
141
141
|
MenuButton: () => MenuButton,
|
|
@@ -156,13 +156,14 @@ __export(index_exports, {
|
|
|
156
156
|
Radio: () => Radio,
|
|
157
157
|
RadioGroup: () => RadioGroup,
|
|
158
158
|
RadioList: () => RadioList,
|
|
159
|
+
RadioTileGroup: () => RadioTileGroup,
|
|
159
160
|
Select: () => Select,
|
|
160
161
|
Sheet: () => Sheet,
|
|
161
|
-
Skeleton: () =>
|
|
162
|
-
Slider: () =>
|
|
162
|
+
Skeleton: () => import_joy61.Skeleton,
|
|
163
|
+
Slider: () => import_joy61.Slider,
|
|
163
164
|
Stack: () => import_joy3.Stack,
|
|
164
165
|
Step: () => Step,
|
|
165
|
-
StepButton: () =>
|
|
166
|
+
StepButton: () => import_joy61.StepButton,
|
|
166
167
|
StepIndicator: () => StepIndicator,
|
|
167
168
|
Stepper: () => Stepper,
|
|
168
169
|
Switch: () => Switch,
|
|
@@ -178,84 +179,84 @@ __export(index_exports, {
|
|
|
178
179
|
Tooltip: () => Tooltip,
|
|
179
180
|
Typography: () => Typography,
|
|
180
181
|
Uploader: () => Uploader,
|
|
181
|
-
accordionClasses: () =>
|
|
182
|
-
accordionDetailsClasses: () =>
|
|
183
|
-
accordionSummaryClasses: () =>
|
|
184
|
-
accordionsClasses: () =>
|
|
185
|
-
alertClasses: () =>
|
|
186
|
-
aspectRatioClasses: () =>
|
|
187
|
-
autocompleteClasses: () =>
|
|
188
|
-
autocompleteListboxClasses: () =>
|
|
189
|
-
autocompleteOptionClasses: () =>
|
|
190
|
-
avatarClasses: () =>
|
|
191
|
-
avatarGroupClasses: () =>
|
|
192
|
-
badgeClasses: () =>
|
|
193
|
-
boxClasses: () =>
|
|
194
|
-
breadcrumbsClasses: () =>
|
|
195
|
-
buttonClasses: () =>
|
|
196
|
-
cardActionsClasses: () =>
|
|
197
|
-
cardClasses: () =>
|
|
198
|
-
cardContentClasses: () =>
|
|
199
|
-
cardCoverClasses: () =>
|
|
200
|
-
cardOverflowClasses: () =>
|
|
201
|
-
checkboxClasses: () =>
|
|
202
|
-
chipClasses: () =>
|
|
203
|
-
circularProgressClasses: () =>
|
|
204
|
-
dialogActionsClasses: () =>
|
|
205
|
-
dialogContentClasses: () =>
|
|
206
|
-
dialogTitleClasses: () =>
|
|
207
|
-
dividerClasses: () =>
|
|
208
|
-
drawerClasses: () =>
|
|
209
|
-
extendTheme: () =>
|
|
210
|
-
formControlClasses: () =>
|
|
211
|
-
formHelperTextClasses: () =>
|
|
212
|
-
formLabelClasses: () =>
|
|
213
|
-
gridClasses: () =>
|
|
214
|
-
iconButtonClasses: () =>
|
|
215
|
-
inputClasses: () =>
|
|
216
|
-
linearProgressClasses: () =>
|
|
217
|
-
linkClasses: () =>
|
|
218
|
-
listClasses: () =>
|
|
219
|
-
listDividerClasses: () =>
|
|
220
|
-
listItemButtonClasses: () =>
|
|
221
|
-
listItemClasses: () =>
|
|
222
|
-
listItemContentClasses: () =>
|
|
223
|
-
listItemDecoratorClasses: () =>
|
|
224
|
-
listSubheaderClasses: () =>
|
|
225
|
-
menuButtonClasses: () =>
|
|
226
|
-
menuClasses: () =>
|
|
227
|
-
menuItemClasses: () =>
|
|
228
|
-
modalClasses: () =>
|
|
229
|
-
modalCloseClasses: () =>
|
|
230
|
-
modalDialogClasses: () =>
|
|
231
|
-
modalOverflowClasses: () =>
|
|
232
|
-
optionClasses: () =>
|
|
233
|
-
radioClasses: () =>
|
|
234
|
-
radioGroupClasses: () =>
|
|
235
|
-
selectClasses: () =>
|
|
236
|
-
sheetClasses: () =>
|
|
237
|
-
skeletonClasses: () =>
|
|
238
|
-
sliderClasses: () =>
|
|
239
|
-
stackClasses: () =>
|
|
240
|
-
stepButtonClasses: () =>
|
|
241
|
-
stepClasses: () =>
|
|
242
|
-
stepperClasses: () =>
|
|
243
|
-
styled: () =>
|
|
244
|
-
switchClasses: () =>
|
|
245
|
-
tabListClasses: () =>
|
|
246
|
-
tabPanelClasses: () =>
|
|
247
|
-
tableClasses: () =>
|
|
248
|
-
tabsClasses: () =>
|
|
249
|
-
textareaClasses: () =>
|
|
182
|
+
accordionClasses: () => import_joy61.accordionClasses,
|
|
183
|
+
accordionDetailsClasses: () => import_joy61.accordionDetailsClasses,
|
|
184
|
+
accordionSummaryClasses: () => import_joy61.accordionSummaryClasses,
|
|
185
|
+
accordionsClasses: () => import_joy61.accordionGroupClasses,
|
|
186
|
+
alertClasses: () => import_joy61.alertClasses,
|
|
187
|
+
aspectRatioClasses: () => import_joy61.aspectRatioClasses,
|
|
188
|
+
autocompleteClasses: () => import_joy61.autocompleteClasses,
|
|
189
|
+
autocompleteListboxClasses: () => import_joy61.autocompleteListboxClasses,
|
|
190
|
+
autocompleteOptionClasses: () => import_joy61.autocompleteOptionClasses,
|
|
191
|
+
avatarClasses: () => import_joy61.avatarClasses,
|
|
192
|
+
avatarGroupClasses: () => import_joy61.avatarGroupClasses,
|
|
193
|
+
badgeClasses: () => import_joy61.badgeClasses,
|
|
194
|
+
boxClasses: () => import_joy61.boxClasses,
|
|
195
|
+
breadcrumbsClasses: () => import_joy61.breadcrumbsClasses,
|
|
196
|
+
buttonClasses: () => import_joy61.buttonClasses,
|
|
197
|
+
cardActionsClasses: () => import_joy61.cardActionsClasses,
|
|
198
|
+
cardClasses: () => import_joy61.cardClasses,
|
|
199
|
+
cardContentClasses: () => import_joy61.cardContentClasses,
|
|
200
|
+
cardCoverClasses: () => import_joy61.cardCoverClasses,
|
|
201
|
+
cardOverflowClasses: () => import_joy61.cardOverflowClasses,
|
|
202
|
+
checkboxClasses: () => import_joy61.checkboxClasses,
|
|
203
|
+
chipClasses: () => import_joy61.chipClasses,
|
|
204
|
+
circularProgressClasses: () => import_joy61.circularProgressClasses,
|
|
205
|
+
dialogActionsClasses: () => import_joy61.dialogActionsClasses,
|
|
206
|
+
dialogContentClasses: () => import_joy61.dialogContentClasses,
|
|
207
|
+
dialogTitleClasses: () => import_joy61.dialogTitleClasses,
|
|
208
|
+
dividerClasses: () => import_joy61.dividerClasses,
|
|
209
|
+
drawerClasses: () => import_joy61.drawerClasses,
|
|
210
|
+
extendTheme: () => import_joy59.extendTheme,
|
|
211
|
+
formControlClasses: () => import_joy61.formControlClasses,
|
|
212
|
+
formHelperTextClasses: () => import_joy61.formHelperTextClasses,
|
|
213
|
+
formLabelClasses: () => import_joy61.formLabelClasses,
|
|
214
|
+
gridClasses: () => import_joy61.gridClasses,
|
|
215
|
+
iconButtonClasses: () => import_joy61.iconButtonClasses,
|
|
216
|
+
inputClasses: () => import_joy61.inputClasses,
|
|
217
|
+
linearProgressClasses: () => import_joy61.linearProgressClasses,
|
|
218
|
+
linkClasses: () => import_joy61.linkClasses,
|
|
219
|
+
listClasses: () => import_joy61.listClasses,
|
|
220
|
+
listDividerClasses: () => import_joy61.listDividerClasses,
|
|
221
|
+
listItemButtonClasses: () => import_joy61.listItemButtonClasses,
|
|
222
|
+
listItemClasses: () => import_joy61.listItemClasses,
|
|
223
|
+
listItemContentClasses: () => import_joy61.listItemContentClasses,
|
|
224
|
+
listItemDecoratorClasses: () => import_joy61.listItemDecoratorClasses,
|
|
225
|
+
listSubheaderClasses: () => import_joy61.listSubheaderClasses,
|
|
226
|
+
menuButtonClasses: () => import_joy61.menuButtonClasses,
|
|
227
|
+
menuClasses: () => import_joy61.menuClasses,
|
|
228
|
+
menuItemClasses: () => import_joy61.menuItemClasses,
|
|
229
|
+
modalClasses: () => import_joy61.modalClasses,
|
|
230
|
+
modalCloseClasses: () => import_joy61.modalCloseClasses,
|
|
231
|
+
modalDialogClasses: () => import_joy61.modalDialogClasses,
|
|
232
|
+
modalOverflowClasses: () => import_joy61.modalOverflowClasses,
|
|
233
|
+
optionClasses: () => import_joy61.optionClasses,
|
|
234
|
+
radioClasses: () => import_joy61.radioClasses,
|
|
235
|
+
radioGroupClasses: () => import_joy61.radioGroupClasses,
|
|
236
|
+
selectClasses: () => import_joy61.selectClasses,
|
|
237
|
+
sheetClasses: () => import_joy61.sheetClasses,
|
|
238
|
+
skeletonClasses: () => import_joy61.skeletonClasses,
|
|
239
|
+
sliderClasses: () => import_joy61.sliderClasses,
|
|
240
|
+
stackClasses: () => import_joy61.stackClasses,
|
|
241
|
+
stepButtonClasses: () => import_joy61.stepButtonClasses,
|
|
242
|
+
stepClasses: () => import_joy61.stepClasses,
|
|
243
|
+
stepperClasses: () => import_joy61.stepperClasses,
|
|
244
|
+
styled: () => import_joy61.styled,
|
|
245
|
+
switchClasses: () => import_joy61.switchClasses,
|
|
246
|
+
tabListClasses: () => import_joy61.tabListClasses,
|
|
247
|
+
tabPanelClasses: () => import_joy61.tabPanelClasses,
|
|
248
|
+
tableClasses: () => import_joy61.tableClasses,
|
|
249
|
+
tabsClasses: () => import_joy61.tabsClasses,
|
|
250
|
+
textareaClasses: () => import_joy61.textareaClasses,
|
|
250
251
|
theme: () => defaultTheme,
|
|
251
|
-
tooltipClasses: () =>
|
|
252
|
-
typographyClasses: () =>
|
|
253
|
-
useColorScheme: () =>
|
|
254
|
-
useTheme: () =>
|
|
255
|
-
useThemeProps: () =>
|
|
252
|
+
tooltipClasses: () => import_joy61.tooltipClasses,
|
|
253
|
+
typographyClasses: () => import_joy61.typographyClasses,
|
|
254
|
+
useColorScheme: () => import_joy61.useColorScheme,
|
|
255
|
+
useTheme: () => import_joy61.useTheme,
|
|
256
|
+
useThemeProps: () => import_joy61.useThemeProps
|
|
256
257
|
});
|
|
257
258
|
module.exports = __toCommonJS(index_exports);
|
|
258
|
-
var
|
|
259
|
+
var import_joy61 = require("@mui/joy");
|
|
259
260
|
|
|
260
261
|
// src/components/Accordions/Accordions.tsx
|
|
261
262
|
var import_react = __toESM(require("react"));
|
|
@@ -842,11 +843,24 @@ Button.displayName = "Button";
|
|
|
842
843
|
var Button_default = Button;
|
|
843
844
|
|
|
844
845
|
// src/components/Calendar/Calendar.tsx
|
|
845
|
-
var
|
|
846
|
-
var
|
|
846
|
+
var import_react14 = __toESM(require("react"));
|
|
847
|
+
var import_joy19 = require("@mui/joy");
|
|
847
848
|
var import_ChevronLeft = __toESM(require("@mui/icons-material/ChevronLeft"));
|
|
848
849
|
var import_ChevronRight = __toESM(require("@mui/icons-material/ChevronRight"));
|
|
850
|
+
var import_framer_motion13 = require("framer-motion");
|
|
851
|
+
|
|
852
|
+
// src/components/Tooltip/Tooltip.tsx
|
|
853
|
+
var import_react11 = __toESM(require("react"));
|
|
854
|
+
var import_joy17 = require("@mui/joy");
|
|
849
855
|
var import_framer_motion12 = require("framer-motion");
|
|
856
|
+
var MotionTooltip = (0, import_framer_motion12.motion)(import_joy17.Tooltip);
|
|
857
|
+
var Tooltip = (props) => {
|
|
858
|
+
return /* @__PURE__ */ import_react11.default.createElement(MotionTooltip, { ...props });
|
|
859
|
+
};
|
|
860
|
+
Tooltip.displayName = "Tooltip";
|
|
861
|
+
|
|
862
|
+
// src/components/Tooltip/index.ts
|
|
863
|
+
var Tooltip_default = Tooltip;
|
|
850
864
|
|
|
851
865
|
// src/components/Calendar/utils/index.ts
|
|
852
866
|
var getCalendarDates = (date) => {
|
|
@@ -920,43 +934,43 @@ var isSameMonth = (date1, date2) => {
|
|
|
920
934
|
};
|
|
921
935
|
|
|
922
936
|
// src/components/Calendar/hooks/use-calendar-props.ts
|
|
923
|
-
var
|
|
924
|
-
var
|
|
937
|
+
var import_react12 = require("react");
|
|
938
|
+
var import_joy18 = require("@mui/joy");
|
|
925
939
|
var resolveView = (view, views) => {
|
|
926
940
|
return views.includes(view) ? view : views[0];
|
|
927
941
|
};
|
|
928
942
|
var useCalendarProps = (inProps) => {
|
|
929
|
-
const [uncontrolledView, setUncontrolledView] = (0,
|
|
943
|
+
const [uncontrolledView, setUncontrolledView] = (0, import_react12.useState)(
|
|
930
944
|
() => resolveView(inProps.view || "day", inProps.views || ["day", "month"])
|
|
931
945
|
);
|
|
932
|
-
const [uncontrolledValue, setUncontrolledValue] = (0,
|
|
946
|
+
const [uncontrolledValue, setUncontrolledValue] = (0, import_react12.useState)(
|
|
933
947
|
inProps.defaultValue
|
|
934
948
|
);
|
|
935
|
-
const [viewMonth, setViewMonth] = (0,
|
|
949
|
+
const [viewMonth, setViewMonth] = (0, import_react12.useState)(() => {
|
|
936
950
|
const today = /* @__PURE__ */ new Date();
|
|
937
951
|
today.setDate(1);
|
|
938
952
|
today.setHours(0, 0, 0, 0);
|
|
939
953
|
return inProps.value?.[0] || inProps.defaultValue?.[0] || today;
|
|
940
954
|
});
|
|
941
|
-
const [[page, direction], setPage] = (0,
|
|
955
|
+
const [[page, direction], setPage] = (0, import_react12.useState)([0, 0]);
|
|
942
956
|
const resolvedView = inProps.view ?? uncontrolledView;
|
|
943
|
-
const resolvedMinDate = (0,
|
|
957
|
+
const resolvedMinDate = (0, import_react12.useMemo)(() => {
|
|
944
958
|
const minDate = inProps.minDate || /* @__PURE__ */ new Date(0);
|
|
945
959
|
minDate.setHours(0, 0, 0, 0);
|
|
946
960
|
return minDate;
|
|
947
961
|
}, [inProps.minDate]);
|
|
948
|
-
const resolvedMaxDate = (0,
|
|
962
|
+
const resolvedMaxDate = (0, import_react12.useMemo)(() => {
|
|
949
963
|
const maxDate = inProps.maxDate || /* @__PURE__ */ new Date(864e13);
|
|
950
964
|
maxDate.setHours(0, 0, 0, 0);
|
|
951
965
|
return maxDate;
|
|
952
966
|
}, [inProps.maxDate]);
|
|
953
|
-
const paginate = (0,
|
|
967
|
+
const paginate = (0, import_react12.useCallback)(
|
|
954
968
|
(newDirection) => {
|
|
955
969
|
setPage([page + newDirection, newDirection]);
|
|
956
970
|
},
|
|
957
971
|
[page]
|
|
958
972
|
);
|
|
959
|
-
const handleViewMonthChange = (0,
|
|
973
|
+
const handleViewMonthChange = (0, import_react12.useCallback)(
|
|
960
974
|
(newMonth) => {
|
|
961
975
|
setViewMonth(newMonth);
|
|
962
976
|
if (resolvedView === "month") {
|
|
@@ -970,7 +984,7 @@ var useCalendarProps = (inProps) => {
|
|
|
970
984
|
},
|
|
971
985
|
[resolvedView, inProps, viewMonth, paginate]
|
|
972
986
|
);
|
|
973
|
-
const props = (0,
|
|
987
|
+
const props = (0, import_joy18.useThemeProps)({
|
|
974
988
|
props: {
|
|
975
989
|
locale: "default",
|
|
976
990
|
views: ["day", "month"],
|
|
@@ -1004,18 +1018,18 @@ var useCalendarProps = (inProps) => {
|
|
|
1004
1018
|
},
|
|
1005
1019
|
name: "Calendar"
|
|
1006
1020
|
});
|
|
1007
|
-
const ownerState = (0,
|
|
1021
|
+
const ownerState = (0, import_react12.useMemo)(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
|
|
1008
1022
|
return [props, ownerState];
|
|
1009
1023
|
};
|
|
1010
1024
|
|
|
1011
1025
|
// src/components/Calendar/hooks/use-calendar.ts
|
|
1012
|
-
var
|
|
1026
|
+
var import_react13 = require("react");
|
|
1013
1027
|
var useCalendar = (ownerState) => {
|
|
1014
|
-
const [hoverDay, setHoverDay] = (0,
|
|
1015
|
-
const [hoverMonth, setHoverMonth] = (0,
|
|
1028
|
+
const [hoverDay, setHoverDay] = (0, import_react13.useState)(null);
|
|
1029
|
+
const [hoverMonth, setHoverMonth] = (0, import_react13.useState)(null);
|
|
1016
1030
|
return {
|
|
1017
1031
|
calendarTitle: ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default"),
|
|
1018
|
-
onPrev: (0,
|
|
1032
|
+
onPrev: (0, import_react13.useCallback)(() => {
|
|
1019
1033
|
if (ownerState.view === "day") {
|
|
1020
1034
|
const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1021
1035
|
const currentYear = currentDate.getFullYear();
|
|
@@ -1032,7 +1046,7 @@ var useCalendar = (ownerState) => {
|
|
|
1032
1046
|
ownerState.onMonthChange?.(prevYear);
|
|
1033
1047
|
}
|
|
1034
1048
|
}, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
|
|
1035
|
-
onNext: (0,
|
|
1049
|
+
onNext: (0, import_react13.useCallback)(() => {
|
|
1036
1050
|
if (ownerState.view === "day") {
|
|
1037
1051
|
const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1038
1052
|
const currentYear = currentDate.getFullYear();
|
|
@@ -1049,7 +1063,7 @@ var useCalendar = (ownerState) => {
|
|
|
1049
1063
|
ownerState.onMonthChange?.(nextYear);
|
|
1050
1064
|
}
|
|
1051
1065
|
}, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
|
|
1052
|
-
getDayCellProps: (0,
|
|
1066
|
+
getDayCellProps: (0, import_react13.useCallback)(
|
|
1053
1067
|
(day) => {
|
|
1054
1068
|
const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1055
1069
|
thisDay.setHours(0, 0, 0, 0);
|
|
@@ -1064,7 +1078,7 @@ var useCalendar = (ownerState) => {
|
|
|
1064
1078
|
},
|
|
1065
1079
|
[ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverDay]
|
|
1066
1080
|
),
|
|
1067
|
-
getMonthCellProps: (0,
|
|
1081
|
+
getMonthCellProps: (0, import_react13.useCallback)(
|
|
1068
1082
|
(monthIndex) => {
|
|
1069
1083
|
const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1070
1084
|
thisMonth.setDate(1);
|
|
@@ -1081,7 +1095,7 @@ var useCalendar = (ownerState) => {
|
|
|
1081
1095
|
},
|
|
1082
1096
|
[ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverMonth]
|
|
1083
1097
|
),
|
|
1084
|
-
getPickerDayProps: (0,
|
|
1098
|
+
getPickerDayProps: (0, import_react13.useCallback)(
|
|
1085
1099
|
(day) => {
|
|
1086
1100
|
const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1087
1101
|
thisDay.setHours(0, 0, 0, 0);
|
|
@@ -1135,7 +1149,7 @@ var useCalendar = (ownerState) => {
|
|
|
1135
1149
|
hoverDay
|
|
1136
1150
|
]
|
|
1137
1151
|
),
|
|
1138
|
-
getPickerMonthProps: (0,
|
|
1152
|
+
getPickerMonthProps: (0, import_react13.useCallback)(
|
|
1139
1153
|
(monthIndex) => {
|
|
1140
1154
|
const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1141
1155
|
thisMonth.setDate(1);
|
|
@@ -1205,13 +1219,19 @@ var useCalendar = (ownerState) => {
|
|
|
1205
1219
|
};
|
|
1206
1220
|
|
|
1207
1221
|
// src/components/Calendar/Calendar.tsx
|
|
1208
|
-
var
|
|
1222
|
+
var MONTH_VIEW_HINT_MESSAGE = "Click the month title to view all months.";
|
|
1223
|
+
var MONTH_NAV_CLICK_WINDOW_MS = 1200;
|
|
1224
|
+
var MONTH_NAV_CLICK_THRESHOLD = 3;
|
|
1225
|
+
var MONTH_VIEW_HINT_DURATION_MS = 5e3;
|
|
1226
|
+
var MONTH_VIEW_HINT_COOLDOWN_MS = 3e4;
|
|
1227
|
+
var lastMonthViewAssistHintShownAt = 0;
|
|
1228
|
+
var CalendarRoot = (0, import_joy19.styled)("div", {
|
|
1209
1229
|
name: "Calendar",
|
|
1210
1230
|
slot: "root"
|
|
1211
1231
|
})({
|
|
1212
1232
|
maxWidth: "264px"
|
|
1213
1233
|
});
|
|
1214
|
-
var CalendarHeader = (0,
|
|
1234
|
+
var CalendarHeader = (0, import_joy19.styled)("div", {
|
|
1215
1235
|
name: "Calendar",
|
|
1216
1236
|
slot: "calendarHeader"
|
|
1217
1237
|
})(({ theme }) => ({
|
|
@@ -1220,7 +1240,7 @@ var CalendarHeader = (0, import_joy18.styled)("div", {
|
|
|
1220
1240
|
alignItems: "center",
|
|
1221
1241
|
padding: theme.spacing(2)
|
|
1222
1242
|
}));
|
|
1223
|
-
var CalendarViewContainer = (0,
|
|
1243
|
+
var CalendarViewContainer = (0, import_joy19.styled)("div", {
|
|
1224
1244
|
name: "Calendar",
|
|
1225
1245
|
slot: "viewContainer",
|
|
1226
1246
|
shouldForwardProp: (prop) => prop !== "calendarType"
|
|
@@ -1231,7 +1251,7 @@ var CalendarViewContainer = (0, import_joy18.styled)("div", {
|
|
|
1231
1251
|
overflow: "hidden",
|
|
1232
1252
|
minHeight: calendarType === "datePicker" ? "250px" : "unset"
|
|
1233
1253
|
}));
|
|
1234
|
-
var CalendarViewTable = (0,
|
|
1254
|
+
var CalendarViewTable = (0, import_joy19.styled)(import_framer_motion13.motion.table, {
|
|
1235
1255
|
name: "Calendar",
|
|
1236
1256
|
slot: "viewTable"
|
|
1237
1257
|
})(({ theme }) => ({
|
|
@@ -1244,15 +1264,15 @@ var CalendarViewTable = (0, import_joy18.styled)(import_framer_motion12.motion.t
|
|
|
1244
1264
|
paddingBottom: theme.spacing(2)
|
|
1245
1265
|
}
|
|
1246
1266
|
}));
|
|
1247
|
-
var CalendarWeekHeaderContainer = (0,
|
|
1267
|
+
var CalendarWeekHeaderContainer = (0, import_joy19.styled)("thead", {
|
|
1248
1268
|
name: "Calendar",
|
|
1249
1269
|
slot: "weekHeaderContainer"
|
|
1250
1270
|
})({});
|
|
1251
|
-
var CalendarDayPickerContainer = (0,
|
|
1271
|
+
var CalendarDayPickerContainer = (0, import_joy19.styled)("tbody", {
|
|
1252
1272
|
name: "Calendar",
|
|
1253
1273
|
slot: "dayPickerContainer"
|
|
1254
1274
|
})({});
|
|
1255
|
-
var CalendarSwitchViewButton = (0,
|
|
1275
|
+
var CalendarSwitchViewButton = (0, import_joy19.styled)(Button_default, {
|
|
1256
1276
|
name: "Calendar",
|
|
1257
1277
|
slot: "switchViewButton"
|
|
1258
1278
|
})(({ ownerState }) => [
|
|
@@ -1260,7 +1280,7 @@ var CalendarSwitchViewButton = (0, import_joy18.styled)(Button_default, {
|
|
|
1260
1280
|
pointerEvents: "none"
|
|
1261
1281
|
}
|
|
1262
1282
|
]);
|
|
1263
|
-
var CalendarDayCell = (0,
|
|
1283
|
+
var CalendarDayCell = (0, import_joy19.styled)("td", {
|
|
1264
1284
|
name: "Calendar",
|
|
1265
1285
|
slot: "dayCell"
|
|
1266
1286
|
})(({ theme }) => ({
|
|
@@ -1282,7 +1302,7 @@ var CalendarDayCell = (0, import_joy18.styled)("td", {
|
|
|
1282
1302
|
}
|
|
1283
1303
|
}
|
|
1284
1304
|
}));
|
|
1285
|
-
var CalendarMonthCell = (0,
|
|
1305
|
+
var CalendarMonthCell = (0, import_joy19.styled)("td", {
|
|
1286
1306
|
name: "Calendar",
|
|
1287
1307
|
slot: "monthCell"
|
|
1288
1308
|
})(({ theme }) => ({
|
|
@@ -1304,7 +1324,7 @@ var CalendarMonthCell = (0, import_joy18.styled)("td", {
|
|
|
1304
1324
|
}
|
|
1305
1325
|
}
|
|
1306
1326
|
}));
|
|
1307
|
-
var CalendarMonth = (0,
|
|
1327
|
+
var CalendarMonth = (0, import_joy19.styled)(Button_default, {
|
|
1308
1328
|
name: "Calendar",
|
|
1309
1329
|
slot: "month",
|
|
1310
1330
|
shouldForwardProp: (prop) => prop !== "isSelected"
|
|
@@ -1339,7 +1359,7 @@ var CalendarMonth = (0, import_joy18.styled)(Button_default, {
|
|
|
1339
1359
|
backgroundColor: theme.palette.neutral.solidDisabledBg
|
|
1340
1360
|
}
|
|
1341
1361
|
]);
|
|
1342
|
-
var CalendarDay = (0,
|
|
1362
|
+
var CalendarDay = (0, import_joy19.styled)(Button_default, {
|
|
1343
1363
|
name: "Calendar",
|
|
1344
1364
|
slot: "day",
|
|
1345
1365
|
shouldForwardProp: (prop) => !["isToday", "isSelected"].includes(prop)
|
|
@@ -1409,9 +1429,9 @@ var swipePower = (offset, velocity) => {
|
|
|
1409
1429
|
var PickerDays = (props) => {
|
|
1410
1430
|
const { ownerState } = props;
|
|
1411
1431
|
const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
|
|
1412
|
-
const calendarDates = (0,
|
|
1413
|
-
const weekdayNames = (0,
|
|
1414
|
-
return /* @__PURE__ */
|
|
1432
|
+
const calendarDates = (0, import_react14.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
|
|
1433
|
+
const weekdayNames = (0, import_react14.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
|
|
1434
|
+
return /* @__PURE__ */ import_react14.default.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ import_react14.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react14.default.createElement(
|
|
1415
1435
|
CalendarViewTable,
|
|
1416
1436
|
{
|
|
1417
1437
|
key: `${ownerState.viewMonth.toString()}_${ownerState.direction}`,
|
|
@@ -1440,10 +1460,10 @@ var PickerDays = (props) => {
|
|
|
1440
1460
|
}
|
|
1441
1461
|
}
|
|
1442
1462
|
},
|
|
1443
|
-
/* @__PURE__ */
|
|
1444
|
-
/* @__PURE__ */
|
|
1445
|
-
(date, i) => date ? /* @__PURE__ */
|
|
1446
|
-
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */
|
|
1463
|
+
/* @__PURE__ */ import_react14.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react14.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react14.default.createElement("th", null, /* @__PURE__ */ import_react14.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react14.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
|
|
1464
|
+
/* @__PURE__ */ import_react14.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react14.default.createElement("tr", null, weekDates.map(
|
|
1465
|
+
(date, i) => date ? /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react14.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react14.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react14.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react14.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react14.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
|
|
1466
|
+
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react14.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react14.default.createElement("td", { colSpan: 13, style: { height: 4 } })))))
|
|
1447
1467
|
)));
|
|
1448
1468
|
};
|
|
1449
1469
|
var PickerMonths = (props) => {
|
|
@@ -1460,7 +1480,7 @@ var PickerMonths = (props) => {
|
|
|
1460
1480
|
[[]]
|
|
1461
1481
|
);
|
|
1462
1482
|
const isMonthPicker = !ownerState.views?.find((view) => view === "day");
|
|
1463
|
-
return /* @__PURE__ */
|
|
1483
|
+
return /* @__PURE__ */ import_react14.default.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ import_react14.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react14.default.createElement(
|
|
1464
1484
|
CalendarViewTable,
|
|
1465
1485
|
{
|
|
1466
1486
|
key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
|
|
@@ -1489,10 +1509,10 @@ var PickerMonths = (props) => {
|
|
|
1489
1509
|
}
|
|
1490
1510
|
}
|
|
1491
1511
|
},
|
|
1492
|
-
/* @__PURE__ */
|
|
1512
|
+
/* @__PURE__ */ import_react14.default.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: months.join("_") }, /* @__PURE__ */ import_react14.default.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ import_react14.default.createElement(import_react14.Fragment, { key: monthIndex }, /* @__PURE__ */ import_react14.default.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ import_react14.default.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ import_react14.default.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ import_react14.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react14.default.createElement("td", { colSpan: 7, style: { height: 4 } })))))
|
|
1493
1513
|
)));
|
|
1494
1514
|
};
|
|
1495
|
-
var Calendar = (0,
|
|
1515
|
+
var Calendar = (0, import_react14.forwardRef)((inProps, ref) => {
|
|
1496
1516
|
const [props, ownerState] = useCalendarProps(inProps);
|
|
1497
1517
|
const {
|
|
1498
1518
|
value,
|
|
@@ -1511,17 +1531,96 @@ var Calendar = (0, import_react13.forwardRef)((inProps, ref) => {
|
|
|
1511
1531
|
...others
|
|
1512
1532
|
} = props;
|
|
1513
1533
|
const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
|
|
1514
|
-
|
|
1515
|
-
|
|
1534
|
+
const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = (0, import_react14.useState)(false);
|
|
1535
|
+
const monthNavClickTimestampsRef = (0, import_react14.useRef)([]);
|
|
1536
|
+
const monthViewAssistHintShownInSessionRef = (0, import_react14.useRef)(false);
|
|
1537
|
+
const monthViewAssistHintTimeoutRef = (0, import_react14.useRef)(null);
|
|
1538
|
+
const hasEndDate = Boolean(value?.[1]);
|
|
1539
|
+
const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
|
|
1540
|
+
const isHintEligible = Boolean(view === "day" && (!rangeSelection || isRangeHintEligible));
|
|
1541
|
+
const monthViewHintMessage = MONTH_VIEW_HINT_MESSAGE;
|
|
1542
|
+
(0, import_react14.useEffect)(() => {
|
|
1543
|
+
if (!isHintEligible) {
|
|
1544
|
+
monthNavClickTimestampsRef.current = [];
|
|
1545
|
+
setIsMonthViewAssistHintOpen(false);
|
|
1546
|
+
}
|
|
1547
|
+
}, [isHintEligible]);
|
|
1548
|
+
(0, import_react14.useEffect)(() => {
|
|
1549
|
+
return () => {
|
|
1550
|
+
if (monthViewAssistHintTimeoutRef.current) {
|
|
1551
|
+
clearTimeout(monthViewAssistHintTimeoutRef.current);
|
|
1552
|
+
}
|
|
1553
|
+
};
|
|
1554
|
+
}, []);
|
|
1555
|
+
const closeMonthViewAssistHint = (0, import_react14.useCallback)(() => {
|
|
1556
|
+
if (monthViewAssistHintTimeoutRef.current) {
|
|
1557
|
+
clearTimeout(monthViewAssistHintTimeoutRef.current);
|
|
1558
|
+
monthViewAssistHintTimeoutRef.current = null;
|
|
1559
|
+
}
|
|
1560
|
+
setIsMonthViewAssistHintOpen(false);
|
|
1561
|
+
}, []);
|
|
1562
|
+
const showMonthViewAssistHint = (0, import_react14.useCallback)(() => {
|
|
1563
|
+
const now = Date.now();
|
|
1564
|
+
if (monthViewAssistHintShownInSessionRef.current) return;
|
|
1565
|
+
if (now - lastMonthViewAssistHintShownAt < MONTH_VIEW_HINT_COOLDOWN_MS) return;
|
|
1566
|
+
monthViewAssistHintShownInSessionRef.current = true;
|
|
1567
|
+
lastMonthViewAssistHintShownAt = now;
|
|
1568
|
+
setIsMonthViewAssistHintOpen(true);
|
|
1569
|
+
if (monthViewAssistHintTimeoutRef.current) {
|
|
1570
|
+
clearTimeout(monthViewAssistHintTimeoutRef.current);
|
|
1571
|
+
}
|
|
1572
|
+
monthViewAssistHintTimeoutRef.current = setTimeout(() => {
|
|
1573
|
+
setIsMonthViewAssistHintOpen(false);
|
|
1574
|
+
monthViewAssistHintTimeoutRef.current = null;
|
|
1575
|
+
}, MONTH_VIEW_HINT_DURATION_MS);
|
|
1576
|
+
}, []);
|
|
1577
|
+
const trackFastMonthNavigation = (0, import_react14.useCallback)(() => {
|
|
1578
|
+
if (!isHintEligible) return;
|
|
1579
|
+
const now = Date.now();
|
|
1580
|
+
monthNavClickTimestampsRef.current = [
|
|
1581
|
+
...monthNavClickTimestampsRef.current.filter((timestamp) => now - timestamp <= MONTH_NAV_CLICK_WINDOW_MS),
|
|
1582
|
+
now
|
|
1583
|
+
];
|
|
1584
|
+
if (monthNavClickTimestampsRef.current.length >= MONTH_NAV_CLICK_THRESHOLD) {
|
|
1585
|
+
showMonthViewAssistHint();
|
|
1586
|
+
}
|
|
1587
|
+
}, [isHintEligible, showMonthViewAssistHint]);
|
|
1588
|
+
const handlePrevClick = (0, import_react14.useCallback)(() => {
|
|
1589
|
+
onPrev();
|
|
1590
|
+
trackFastMonthNavigation();
|
|
1591
|
+
}, [onPrev, trackFastMonthNavigation]);
|
|
1592
|
+
const handleNextClick = (0, import_react14.useCallback)(() => {
|
|
1593
|
+
onNext();
|
|
1594
|
+
trackFastMonthNavigation();
|
|
1595
|
+
}, [onNext, trackFastMonthNavigation]);
|
|
1596
|
+
const handleSwitchViewClick = (0, import_react14.useCallback)(() => {
|
|
1597
|
+
closeMonthViewAssistHint();
|
|
1598
|
+
onViewChange?.();
|
|
1599
|
+
}, [closeMonthViewAssistHint, onViewChange]);
|
|
1600
|
+
return /* @__PURE__ */ import_react14.default.createElement(CalendarRoot, { ref, ...others }, /* @__PURE__ */ import_react14.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react14.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react14.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react14.default.createElement(
|
|
1601
|
+
Tooltip_default,
|
|
1516
1602
|
{
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1603
|
+
title: monthViewHintMessage,
|
|
1604
|
+
arrow: true,
|
|
1605
|
+
open: isMonthViewAssistHintOpen,
|
|
1606
|
+
placement: "bottom",
|
|
1607
|
+
disableFocusListener: true,
|
|
1608
|
+
disableHoverListener: true,
|
|
1609
|
+
disableTouchListener: true,
|
|
1610
|
+
variant: "solid"
|
|
1522
1611
|
},
|
|
1523
|
-
|
|
1524
|
-
|
|
1612
|
+
/* @__PURE__ */ import_react14.default.createElement(
|
|
1613
|
+
CalendarSwitchViewButton,
|
|
1614
|
+
{
|
|
1615
|
+
ownerState,
|
|
1616
|
+
variant: "plain",
|
|
1617
|
+
color: "neutral",
|
|
1618
|
+
onClick: handleSwitchViewClick,
|
|
1619
|
+
"aria-label": "Switch Calendar View"
|
|
1620
|
+
},
|
|
1621
|
+
calendarTitle
|
|
1622
|
+
)
|
|
1623
|
+
), /* @__PURE__ */ import_react14.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react14.default.createElement(import_ChevronRight.default, null))), view === "day" && /* @__PURE__ */ import_react14.default.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ import_react14.default.createElement(PickerMonths, { ownerState }));
|
|
1525
1624
|
});
|
|
1526
1625
|
Calendar.displayName = "Calendar";
|
|
1527
1626
|
|
|
@@ -1529,31 +1628,31 @@ Calendar.displayName = "Calendar";
|
|
|
1529
1628
|
var Calendar_default = Calendar;
|
|
1530
1629
|
|
|
1531
1630
|
// src/components/Card/Card.tsx
|
|
1532
|
-
var
|
|
1533
|
-
var
|
|
1534
|
-
var MotionCard = (0,
|
|
1631
|
+
var import_joy20 = require("@mui/joy");
|
|
1632
|
+
var import_framer_motion14 = require("framer-motion");
|
|
1633
|
+
var MotionCard = (0, import_framer_motion14.motion)(import_joy20.Card);
|
|
1535
1634
|
var Card = MotionCard;
|
|
1536
1635
|
Card.displayName = "Card";
|
|
1537
|
-
var MotionCardContent = (0,
|
|
1636
|
+
var MotionCardContent = (0, import_framer_motion14.motion)(import_joy20.CardContent);
|
|
1538
1637
|
var CardContent = MotionCardContent;
|
|
1539
1638
|
CardContent.displayName = "CardContent";
|
|
1540
|
-
var MotionCardCover = (0,
|
|
1639
|
+
var MotionCardCover = (0, import_framer_motion14.motion)(import_joy20.CardCover);
|
|
1541
1640
|
var CardCover = MotionCardCover;
|
|
1542
1641
|
CardCover.displayName = "CardCover";
|
|
1543
|
-
var MotionCardActions = (0,
|
|
1642
|
+
var MotionCardActions = (0, import_framer_motion14.motion)(import_joy20.CardActions);
|
|
1544
1643
|
var CardActions = MotionCardActions;
|
|
1545
1644
|
CardActions.displayName = "CardActions";
|
|
1546
|
-
var MotionCardOverflow = (0,
|
|
1645
|
+
var MotionCardOverflow = (0, import_framer_motion14.motion)(import_joy20.CardOverflow);
|
|
1547
1646
|
var CardOverflow = MotionCardOverflow;
|
|
1548
1647
|
CardOverflow.displayName = "CardOverflow";
|
|
1549
1648
|
|
|
1550
1649
|
// src/components/Checkbox/Checkbox.tsx
|
|
1551
|
-
var
|
|
1552
|
-
var
|
|
1553
|
-
var
|
|
1554
|
-
var MotionCheckbox = (0,
|
|
1650
|
+
var import_react15 = __toESM(require("react"));
|
|
1651
|
+
var import_joy21 = require("@mui/joy");
|
|
1652
|
+
var import_framer_motion15 = require("framer-motion");
|
|
1653
|
+
var MotionCheckbox = (0, import_framer_motion15.motion)(import_joy21.Checkbox);
|
|
1555
1654
|
var Checkbox = (props) => {
|
|
1556
|
-
return /* @__PURE__ */
|
|
1655
|
+
return /* @__PURE__ */ import_react15.default.createElement(MotionCheckbox, { ...props });
|
|
1557
1656
|
};
|
|
1558
1657
|
Checkbox.displayName = "Checkbox";
|
|
1559
1658
|
|
|
@@ -1561,9 +1660,9 @@ Checkbox.displayName = "Checkbox";
|
|
|
1561
1660
|
var Checkbox_default = Checkbox;
|
|
1562
1661
|
|
|
1563
1662
|
// src/components/Container/Container.tsx
|
|
1564
|
-
var
|
|
1565
|
-
var
|
|
1566
|
-
var ContainerRoot = (0,
|
|
1663
|
+
var import_joy22 = require("@mui/joy");
|
|
1664
|
+
var import_react16 = __toESM(require("react"));
|
|
1665
|
+
var ContainerRoot = (0, import_joy22.styled)("div", {
|
|
1567
1666
|
name: "Container",
|
|
1568
1667
|
slot: "root",
|
|
1569
1668
|
shouldForwardProp: (prop) => prop !== "maxWidth" && prop !== "overrideBreakpoint"
|
|
@@ -1588,25 +1687,24 @@ var ContainerRoot = (0, import_joy21.styled)("div", {
|
|
|
1588
1687
|
paddingRight: theme.breakpoints.values[overrideBreakpoint] >= theme.breakpoints.values.lg ? theme.spacing(8) : theme.spacing(4)
|
|
1589
1688
|
} : null
|
|
1590
1689
|
]);
|
|
1591
|
-
var Container = (0,
|
|
1592
|
-
return /* @__PURE__ */
|
|
1690
|
+
var Container = (0, import_react16.forwardRef)(function Container2(props, ref) {
|
|
1691
|
+
return /* @__PURE__ */ import_react16.default.createElement(ContainerRoot, { ref, ...props });
|
|
1593
1692
|
});
|
|
1594
1693
|
Container.displayName = "Container";
|
|
1595
1694
|
|
|
1596
1695
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
1597
|
-
var
|
|
1598
|
-
var import_intl_messageformat2 = require("intl-messageformat");
|
|
1696
|
+
var import_react18 = __toESM(require("react"));
|
|
1599
1697
|
var import_react_number_format = require("react-number-format");
|
|
1600
1698
|
|
|
1601
1699
|
// src/components/Input/Input.tsx
|
|
1602
|
-
var
|
|
1603
|
-
var
|
|
1604
|
-
var
|
|
1700
|
+
var import_react17 = __toESM(require("react"));
|
|
1701
|
+
var import_joy23 = require("@mui/joy");
|
|
1702
|
+
var import_framer_motion16 = require("framer-motion");
|
|
1605
1703
|
var import_Close2 = __toESM(require("@mui/icons-material/Close"));
|
|
1606
1704
|
var import_Visibility = __toESM(require("@mui/icons-material/Visibility"));
|
|
1607
1705
|
var import_VisibilityOff = __toESM(require("@mui/icons-material/VisibilityOff"));
|
|
1608
|
-
var MotionInput = (0,
|
|
1609
|
-
var Input =
|
|
1706
|
+
var MotionInput = (0, import_framer_motion16.motion)(import_joy23.Input);
|
|
1707
|
+
var Input = import_react17.default.forwardRef((props, ref) => {
|
|
1610
1708
|
const {
|
|
1611
1709
|
label,
|
|
1612
1710
|
helperText,
|
|
@@ -1629,11 +1727,11 @@ var Input = import_react16.default.forwardRef((props, ref) => {
|
|
|
1629
1727
|
if (type === "password" && innerProps.endDecorator) {
|
|
1630
1728
|
console.warn('Input: endDecorator is not supported when type="password"');
|
|
1631
1729
|
}
|
|
1632
|
-
const [passwordVisible, setPasswordVisible] = (0,
|
|
1730
|
+
const [passwordVisible, setPasswordVisible] = (0, import_react17.useState)(false);
|
|
1633
1731
|
const [value, setValue] = useControlledState(
|
|
1634
1732
|
props.value,
|
|
1635
1733
|
props.defaultValue,
|
|
1636
|
-
(0,
|
|
1734
|
+
(0, import_react17.useCallback)(
|
|
1637
1735
|
(value2) => {
|
|
1638
1736
|
onChange?.({
|
|
1639
1737
|
/**
|
|
@@ -1659,7 +1757,7 @@ var Input = import_react16.default.forwardRef((props, ref) => {
|
|
|
1659
1757
|
const actualType = type === "password" && passwordVisible ? "text" : type;
|
|
1660
1758
|
const isPasswordType = type === "password";
|
|
1661
1759
|
const showPasswordToggle = isPasswordType && !disableTogglePasswordButton;
|
|
1662
|
-
const input = /* @__PURE__ */
|
|
1760
|
+
const input = /* @__PURE__ */ import_react17.default.createElement(
|
|
1663
1761
|
MotionInput,
|
|
1664
1762
|
{
|
|
1665
1763
|
value,
|
|
@@ -1674,7 +1772,7 @@ var Input = import_react16.default.forwardRef((props, ref) => {
|
|
|
1674
1772
|
...innerProps.slotProps
|
|
1675
1773
|
},
|
|
1676
1774
|
...innerProps,
|
|
1677
|
-
endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */
|
|
1775
|
+
endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ import_react17.default.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ import_react17.default.createElement(
|
|
1678
1776
|
IconButton_default,
|
|
1679
1777
|
{
|
|
1680
1778
|
onMouseDown: (e) => e.preventDefault(),
|
|
@@ -1682,19 +1780,19 @@ var Input = import_react16.default.forwardRef((props, ref) => {
|
|
|
1682
1780
|
disabled,
|
|
1683
1781
|
"aria-label": passwordVisible ? "Hide password" : "Show password"
|
|
1684
1782
|
},
|
|
1685
|
-
passwordVisible ? /* @__PURE__ */
|
|
1686
|
-
)) : null : enableClearable ? /* @__PURE__ */
|
|
1783
|
+
passwordVisible ? /* @__PURE__ */ import_react17.default.createElement(import_VisibilityOff.default, null) : /* @__PURE__ */ import_react17.default.createElement(import_Visibility.default, null)
|
|
1784
|
+
)) : null : enableClearable ? /* @__PURE__ */ import_react17.default.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, value && /* @__PURE__ */ import_react17.default.createElement(
|
|
1687
1785
|
IconButton_default,
|
|
1688
1786
|
{
|
|
1689
1787
|
onMouseDown: (e) => e.preventDefault(),
|
|
1690
1788
|
onClick: handleClear,
|
|
1691
1789
|
"aria-label": "Clear"
|
|
1692
1790
|
},
|
|
1693
|
-
/* @__PURE__ */
|
|
1791
|
+
/* @__PURE__ */ import_react17.default.createElement(import_Close2.default, null)
|
|
1694
1792
|
)) : innerProps.endDecorator
|
|
1695
1793
|
}
|
|
1696
1794
|
);
|
|
1697
|
-
return /* @__PURE__ */
|
|
1795
|
+
return /* @__PURE__ */ import_react17.default.createElement(
|
|
1698
1796
|
FormControl_default,
|
|
1699
1797
|
{
|
|
1700
1798
|
required,
|
|
@@ -1705,9 +1803,9 @@ var Input = import_react16.default.forwardRef((props, ref) => {
|
|
|
1705
1803
|
sx,
|
|
1706
1804
|
className
|
|
1707
1805
|
},
|
|
1708
|
-
label && /* @__PURE__ */
|
|
1806
|
+
label && /* @__PURE__ */ import_react17.default.createElement(FormLabel_default, null, label),
|
|
1709
1807
|
input,
|
|
1710
|
-
helperText && /* @__PURE__ */
|
|
1808
|
+
helperText && /* @__PURE__ */ import_react17.default.createElement(FormHelperText_default, null, helperText)
|
|
1711
1809
|
);
|
|
1712
1810
|
});
|
|
1713
1811
|
Input.displayName = "Input";
|
|
@@ -1716,10 +1814,9 @@ Input.displayName = "Input";
|
|
|
1716
1814
|
var Input_default = Input;
|
|
1717
1815
|
|
|
1718
1816
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
1719
|
-
var
|
|
1817
|
+
var import_joy24 = require("@mui/joy");
|
|
1720
1818
|
|
|
1721
1819
|
// src/components/CurrencyInput/hooks/use-currency-setting.ts
|
|
1722
|
-
var import_intl_messageformat = __toESM(require("intl-messageformat"));
|
|
1723
1820
|
var CURRENCY_DECIMAL_MAP = {
|
|
1724
1821
|
AED: 2,
|
|
1725
1822
|
ALL: 2,
|
|
@@ -1864,9 +1961,10 @@ var CURRENCY_DECIMAL_MAP = {
|
|
|
1864
1961
|
};
|
|
1865
1962
|
var useCurrencySetting = (props) => {
|
|
1866
1963
|
const { currency = "USD", placeholder } = props;
|
|
1867
|
-
const
|
|
1868
|
-
|
|
1869
|
-
|
|
1964
|
+
const parts = new Intl.NumberFormat("en-US", { style: "currency", currency }).formatToParts(1000.01);
|
|
1965
|
+
const symbol = parts.find((p) => p.type === "currency")?.value ?? "$";
|
|
1966
|
+
const thousandSeparator = parts.find((p) => p.type === "group")?.value ?? ",";
|
|
1967
|
+
const decimalSeparator = parts.find((p) => p.type === "decimal")?.value;
|
|
1870
1968
|
const decimalScale = CURRENCY_DECIMAL_MAP[currency];
|
|
1871
1969
|
return {
|
|
1872
1970
|
symbol: `${symbol} `,
|
|
@@ -1879,9 +1977,9 @@ var useCurrencySetting = (props) => {
|
|
|
1879
1977
|
};
|
|
1880
1978
|
|
|
1881
1979
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
1882
|
-
var TextMaskAdapter =
|
|
1980
|
+
var TextMaskAdapter = import_react18.default.forwardRef(function TextMaskAdapter2(props, ref) {
|
|
1883
1981
|
const { onChange, ...innerProps } = props;
|
|
1884
|
-
return /* @__PURE__ */
|
|
1982
|
+
return /* @__PURE__ */ import_react18.default.createElement(
|
|
1885
1983
|
import_react_number_format.NumericFormat,
|
|
1886
1984
|
{
|
|
1887
1985
|
...innerProps,
|
|
@@ -1896,13 +1994,13 @@ var TextMaskAdapter = import_react17.default.forwardRef(function TextMaskAdapter
|
|
|
1896
1994
|
}
|
|
1897
1995
|
);
|
|
1898
1996
|
});
|
|
1899
|
-
var CurrencyInputRoot = (0,
|
|
1997
|
+
var CurrencyInputRoot = (0, import_joy24.styled)(Input_default, {
|
|
1900
1998
|
name: "CurrencyInput",
|
|
1901
1999
|
slot: "root",
|
|
1902
2000
|
overridesResolver: (props, styles) => styles.root
|
|
1903
2001
|
})({});
|
|
1904
|
-
var CurrencyInput =
|
|
1905
|
-
const props = (0,
|
|
2002
|
+
var CurrencyInput = import_react18.default.forwardRef(function CurrencyInput2(inProps, ref) {
|
|
2003
|
+
const props = (0, import_joy24.useThemeProps)({ props: inProps, name: "CurrencyInput" });
|
|
1906
2004
|
const {
|
|
1907
2005
|
currency = "USD",
|
|
1908
2006
|
name,
|
|
@@ -1922,28 +2020,28 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
|
|
|
1922
2020
|
const [_value, setValue] = useControlledState(
|
|
1923
2021
|
props.value,
|
|
1924
2022
|
props.defaultValue,
|
|
1925
|
-
(0,
|
|
2023
|
+
(0, import_react18.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
1926
2024
|
);
|
|
1927
|
-
const value = (0,
|
|
2025
|
+
const value = (0, import_react18.useMemo)(() => {
|
|
1928
2026
|
if (_value && useMinorUnit) {
|
|
1929
2027
|
return _value / Math.pow(10, decimalScale);
|
|
1930
2028
|
}
|
|
1931
2029
|
return _value;
|
|
1932
2030
|
}, [_value, useMinorUnit, decimalScale]);
|
|
1933
|
-
const max = (0,
|
|
2031
|
+
const max = (0, import_react18.useMemo)(() => {
|
|
1934
2032
|
if (props.max && useMinorUnit) {
|
|
1935
2033
|
return props.max / Math.pow(10, decimalScale);
|
|
1936
2034
|
}
|
|
1937
2035
|
return props.max;
|
|
1938
2036
|
}, [props.max, useMinorUnit, decimalScale]);
|
|
1939
|
-
const [isOverLimit, setIsOverLimit] = (0,
|
|
1940
|
-
const handleChange = (0,
|
|
2037
|
+
const [isOverLimit, setIsOverLimit] = (0, import_react18.useState)(!!max && !!value && value > max);
|
|
2038
|
+
const handleChange = (0, import_react18.useCallback)(
|
|
1941
2039
|
(event) => {
|
|
1942
2040
|
if (event.target.value === "") {
|
|
1943
2041
|
setValue(void 0);
|
|
1944
2042
|
return;
|
|
1945
2043
|
}
|
|
1946
|
-
const amount = useMinorUnit ? Number(event.target.value?.replace(decimalSeparator, "")) : Number(event.target.value);
|
|
2044
|
+
const amount = useMinorUnit ? Number(decimalSeparator ? event.target.value?.replace(decimalSeparator, "") : event.target.value) : Number(event.target.value);
|
|
1947
2045
|
if (!!max && Number(event.target.value) > max) {
|
|
1948
2046
|
setIsOverLimit(true);
|
|
1949
2047
|
} else {
|
|
@@ -1953,7 +2051,7 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
|
|
|
1953
2051
|
},
|
|
1954
2052
|
[decimalSeparator, max, useMinorUnit, setValue]
|
|
1955
2053
|
);
|
|
1956
|
-
return /* @__PURE__ */
|
|
2054
|
+
return /* @__PURE__ */ import_react18.default.createElement(
|
|
1957
2055
|
CurrencyInputRoot,
|
|
1958
2056
|
{
|
|
1959
2057
|
...innerProps,
|
|
@@ -1966,9 +2064,7 @@ var CurrencyInput = import_react17.default.forwardRef(function CurrencyInput2(in
|
|
|
1966
2064
|
required,
|
|
1967
2065
|
color: error || isOverLimit ? "danger" : props.color,
|
|
1968
2066
|
label,
|
|
1969
|
-
helperText: isOverLimit ?
|
|
1970
|
-
amount: max
|
|
1971
|
-
}) : helperText,
|
|
2067
|
+
helperText: isOverLimit ? `limit: ${new Intl.NumberFormat("en-US", { style: "currency", currency }).format(max)}` : helperText,
|
|
1972
2068
|
slotProps: {
|
|
1973
2069
|
input: {
|
|
1974
2070
|
component: TextMaskAdapter,
|
|
@@ -2040,14 +2136,15 @@ function reorderColumnsByGroupingModel(columns, columnGroupingModel) {
|
|
|
2040
2136
|
}
|
|
2041
2137
|
return reorderedColumns;
|
|
2042
2138
|
}
|
|
2043
|
-
function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }) {
|
|
2139
|
+
function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }, visibleFields) {
|
|
2044
2140
|
const result = [];
|
|
2045
2141
|
for (const item of items) {
|
|
2046
2142
|
if ("groupId" in item) {
|
|
2047
2143
|
const newPath = [...groupPath, item.groupId];
|
|
2048
2144
|
const children = Array.isArray(item.children) ? item.children : [item.children];
|
|
2049
|
-
result.push(...flattenColumnGroups(children, newPath, columnIndex));
|
|
2145
|
+
result.push(...flattenColumnGroups(children, newPath, columnIndex, visibleFields));
|
|
2050
2146
|
} else {
|
|
2147
|
+
if (visibleFields && !visibleFields.has(item.field)) continue;
|
|
2051
2148
|
result.push({
|
|
2052
2149
|
...item,
|
|
2053
2150
|
groupPath,
|
|
@@ -2057,9 +2154,9 @@ function flattenColumnGroups(items, groupPath = [], columnIndex = { current: 0 }
|
|
|
2057
2154
|
}
|
|
2058
2155
|
return result;
|
|
2059
2156
|
}
|
|
2060
|
-
function calculateColumnGroups(columnGroupingModel, columns) {
|
|
2157
|
+
function calculateColumnGroups(columnGroupingModel, columns, visibleFields) {
|
|
2061
2158
|
const fieldsInGroupingModel = extractFieldsFromGroupingModel(columnGroupingModel);
|
|
2062
|
-
const flattenedColumns = flattenColumnGroups(columnGroupingModel);
|
|
2159
|
+
const flattenedColumns = flattenColumnGroups(columnGroupingModel, [], { current: 0 }, visibleFields);
|
|
2063
2160
|
const columnIndexMap = new Map(flattenedColumns.map((col) => [col.field, col.columnIndex]));
|
|
2064
2161
|
const processedGroups = /* @__PURE__ */ new Map();
|
|
2065
2162
|
const groupsByLevel = [];
|
|
@@ -2107,7 +2204,9 @@ function calculateColumnGroups(columnGroupingModel, columns) {
|
|
|
2107
2204
|
groupsByLevel.forEach((level) => {
|
|
2108
2205
|
level.sort((a, b) => a.startIndex - b.startIndex);
|
|
2109
2206
|
});
|
|
2110
|
-
|
|
2207
|
+
const filteredGroupsByLevel = groupsByLevel.map((level) => level.filter((g) => g.colspan > 0)).filter((level) => level.length > 0);
|
|
2208
|
+
const correctedMaxLevel = filteredGroupsByLevel.length > 0 ? filteredGroupsByLevel.length - 1 : -1;
|
|
2209
|
+
return { groups: filteredGroupsByLevel, maxLevel: correctedMaxLevel, fieldsInGroupingModel };
|
|
2111
2210
|
}
|
|
2112
2211
|
function getTextAlign(props) {
|
|
2113
2212
|
return !props.editMode && ["number", "date", "currency"].includes(props.type || "") ? "end" : "start";
|
|
@@ -2115,19 +2214,29 @@ function getTextAlign(props) {
|
|
|
2115
2214
|
var numberFormatter = (value) => "Intl" in window ? new Intl.NumberFormat().format(value) : value;
|
|
2116
2215
|
|
|
2117
2216
|
// src/components/DataTable/styled.tsx
|
|
2118
|
-
var
|
|
2119
|
-
var
|
|
2120
|
-
var
|
|
2217
|
+
var import_react19 = __toESM(require("react"));
|
|
2218
|
+
var import_joy25 = require("@mui/joy");
|
|
2219
|
+
var import_framer_motion17 = require("framer-motion");
|
|
2121
2220
|
var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
|
|
2122
|
-
var EllipsisDiv = (0,
|
|
2221
|
+
var EllipsisDiv = (0, import_joy25.styled)("div", {
|
|
2123
2222
|
name: "DataTable",
|
|
2124
|
-
slot: "textEllipsis"
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2223
|
+
slot: "textEllipsis",
|
|
2224
|
+
shouldForwardProp: (prop) => prop !== "lineClamp"
|
|
2225
|
+
})(
|
|
2226
|
+
({ lineClamp }) => lineClamp && lineClamp > 1 ? {
|
|
2227
|
+
overflow: "hidden",
|
|
2228
|
+
display: "-webkit-box !important",
|
|
2229
|
+
WebkitBoxOrient: "vertical",
|
|
2230
|
+
WebkitLineClamp: lineClamp,
|
|
2231
|
+
whiteSpace: "normal",
|
|
2232
|
+
overflowWrap: "anywhere"
|
|
2233
|
+
} : {
|
|
2234
|
+
overflow: "hidden",
|
|
2235
|
+
textOverflow: "ellipsis",
|
|
2236
|
+
whiteSpace: "nowrap"
|
|
2237
|
+
}
|
|
2238
|
+
);
|
|
2239
|
+
var OverlayWrapper = (0, import_joy25.styled)("tr", {
|
|
2131
2240
|
name: "DataTable",
|
|
2132
2241
|
slot: "overlayWrapper"
|
|
2133
2242
|
})({
|
|
@@ -2142,7 +2251,7 @@ var OverlayWrapper = (0, import_joy24.styled)("tr", {
|
|
|
2142
2251
|
border: "none !important"
|
|
2143
2252
|
}
|
|
2144
2253
|
});
|
|
2145
|
-
var VirtualizedTableBody = (0,
|
|
2254
|
+
var VirtualizedTableBody = (0, import_joy25.styled)("tbody", {
|
|
2146
2255
|
name: "DataTable",
|
|
2147
2256
|
slot: "tableBody"
|
|
2148
2257
|
})({
|
|
@@ -2151,21 +2260,21 @@ var VirtualizedTableBody = (0, import_joy24.styled)("tbody", {
|
|
|
2151
2260
|
display: "block",
|
|
2152
2261
|
height: "0.01em"
|
|
2153
2262
|
},
|
|
2154
|
-
[`& .${
|
|
2263
|
+
[`& .${import_joy25.buttonClasses.root}`]: {
|
|
2155
2264
|
"--Button-minHeight": "26px",
|
|
2156
2265
|
"--Button-paddingBlock": "0.25rem",
|
|
2157
2266
|
lineHeight: 1,
|
|
2158
2267
|
marginTop: "-2px",
|
|
2159
2268
|
marginBottom: "-2px"
|
|
2160
2269
|
},
|
|
2161
|
-
[`& .${
|
|
2270
|
+
[`& .${import_joy25.iconButtonClasses.root}`]: {
|
|
2162
2271
|
"--IconButton-size": "26px",
|
|
2163
2272
|
verticalAlign: "middle",
|
|
2164
2273
|
marginTop: "-2px",
|
|
2165
2274
|
marginBottom: "-2px"
|
|
2166
2275
|
}
|
|
2167
2276
|
});
|
|
2168
|
-
var StyledTableRow = (0,
|
|
2277
|
+
var StyledTableRow = (0, import_joy25.styled)("tr", {
|
|
2169
2278
|
name: "DataTable",
|
|
2170
2279
|
slot: "tableRow",
|
|
2171
2280
|
shouldForwardProp: (prop) => prop !== "striped"
|
|
@@ -2184,17 +2293,17 @@ var StyledTableRow = (0, import_joy24.styled)("tr", {
|
|
|
2184
2293
|
}
|
|
2185
2294
|
}
|
|
2186
2295
|
}));
|
|
2187
|
-
var Asterisk = (0,
|
|
2296
|
+
var Asterisk = (0, import_joy25.styled)("span", {
|
|
2188
2297
|
name: "DataTable",
|
|
2189
2298
|
slot: "headCellAsterisk"
|
|
2190
2299
|
})(({ theme }) => ({
|
|
2191
2300
|
color: "var(--ceed-palette-danger-500)",
|
|
2192
2301
|
marginLeft: theme.spacing(0.5)
|
|
2193
2302
|
}));
|
|
2194
|
-
var StyledTh = (0,
|
|
2303
|
+
var StyledTh = (0, import_joy25.styled)(import_framer_motion17.motion.th)(({ theme }) => ({
|
|
2195
2304
|
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
2196
2305
|
}));
|
|
2197
|
-
var StyledTd = (0,
|
|
2306
|
+
var StyledTd = (0, import_joy25.styled)("td")(({ theme }) => ({
|
|
2198
2307
|
transition: `box-shadow 0.3s`,
|
|
2199
2308
|
"&:not(.is-last-left):not(.is-last-right)": {
|
|
2200
2309
|
boxShadow: "1px 0 var(--TableCell-borderColor)"
|
|
@@ -2210,9 +2319,9 @@ var StyledTd = (0, import_joy24.styled)("td")(({ theme }) => ({
|
|
|
2210
2319
|
}
|
|
2211
2320
|
}
|
|
2212
2321
|
}));
|
|
2213
|
-
var MotionSortIcon = (0,
|
|
2214
|
-
var DefaultLoadingOverlay = () => /* @__PURE__ */
|
|
2215
|
-
var Resizer = (ref, targetRef = ref) => /* @__PURE__ */
|
|
2322
|
+
var MotionSortIcon = (0, import_framer_motion17.motion)(import_ArrowUpwardRounded.default);
|
|
2323
|
+
var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react19.default.createElement(import_joy25.LinearProgress, { value: 8, variant: "plain" });
|
|
2324
|
+
var Resizer = (ref, targetRef = ref) => /* @__PURE__ */ import_react19.default.createElement(
|
|
2216
2325
|
Box_default,
|
|
2217
2326
|
{
|
|
2218
2327
|
sx: {
|
|
@@ -2249,24 +2358,24 @@ var import_joy32 = require("@mui/joy");
|
|
|
2249
2358
|
var import_framer_motion21 = require("framer-motion");
|
|
2250
2359
|
|
|
2251
2360
|
// src/components/DatePicker/DatePicker.tsx
|
|
2252
|
-
var
|
|
2361
|
+
var import_react20 = __toESM(require("react"));
|
|
2253
2362
|
var import_react_imask = require("react-imask");
|
|
2254
2363
|
var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
2255
|
-
var
|
|
2364
|
+
var import_joy28 = require("@mui/joy");
|
|
2256
2365
|
var import_base3 = require("@mui/base");
|
|
2257
2366
|
|
|
2258
2367
|
// src/components/Sheet/Sheet.tsx
|
|
2259
|
-
var
|
|
2260
|
-
var Sheet =
|
|
2368
|
+
var import_joy26 = require("@mui/joy");
|
|
2369
|
+
var Sheet = import_joy26.Sheet;
|
|
2261
2370
|
|
|
2262
2371
|
// src/components/Sheet/index.ts
|
|
2263
2372
|
var Sheet_default = Sheet;
|
|
2264
2373
|
|
|
2265
2374
|
// src/components/DialogActions/DialogActions.tsx
|
|
2266
|
-
var
|
|
2267
|
-
var
|
|
2268
|
-
var MotionDialogActions = (0,
|
|
2269
|
-
var StyledDialogActions = (0,
|
|
2375
|
+
var import_joy27 = require("@mui/joy");
|
|
2376
|
+
var import_framer_motion18 = require("framer-motion");
|
|
2377
|
+
var MotionDialogActions = (0, import_framer_motion18.motion)(import_joy27.DialogActions);
|
|
2378
|
+
var StyledDialogActions = (0, import_joy27.styled)(MotionDialogActions)(({ theme }) => ({
|
|
2270
2379
|
padding: theme.spacing(2),
|
|
2271
2380
|
gap: theme.spacing(2),
|
|
2272
2381
|
flexDirection: "row",
|
|
@@ -2279,7 +2388,7 @@ DialogActions.displayName = "DialogActions";
|
|
|
2279
2388
|
var DialogActions_default = DialogActions;
|
|
2280
2389
|
|
|
2281
2390
|
// src/components/DatePicker/DatePicker.tsx
|
|
2282
|
-
var CalendarButton = (0,
|
|
2391
|
+
var CalendarButton = (0, import_joy28.styled)(IconButton_default, {
|
|
2283
2392
|
name: "DatePicker",
|
|
2284
2393
|
slot: "calendarButton"
|
|
2285
2394
|
})(({ theme }) => ({
|
|
@@ -2289,13 +2398,13 @@ var CalendarButton = (0, import_joy27.styled)(IconButton_default, {
|
|
|
2289
2398
|
outline: `${theme.getCssVar("focus-thickness")} solid ${theme.getCssVar("palette-focusVisible")}`
|
|
2290
2399
|
}
|
|
2291
2400
|
}));
|
|
2292
|
-
var StyledPopper = (0,
|
|
2401
|
+
var StyledPopper = (0, import_joy28.styled)(import_base3.Popper, {
|
|
2293
2402
|
name: "DatePicker",
|
|
2294
2403
|
slot: "popper"
|
|
2295
2404
|
})(({ theme }) => ({
|
|
2296
2405
|
zIndex: theme.zIndex.tooltip
|
|
2297
2406
|
}));
|
|
2298
|
-
var CalendarSheet = (0,
|
|
2407
|
+
var CalendarSheet = (0, import_joy28.styled)(Sheet_default, {
|
|
2299
2408
|
name: "DatePicker",
|
|
2300
2409
|
slot: "sheet",
|
|
2301
2410
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -2304,7 +2413,7 @@ var CalendarSheet = (0, import_joy27.styled)(Sheet_default, {
|
|
|
2304
2413
|
boxShadow: theme.shadow.md,
|
|
2305
2414
|
borderRadius: theme.radius.md
|
|
2306
2415
|
}));
|
|
2307
|
-
var DatePickerRoot = (0,
|
|
2416
|
+
var DatePickerRoot = (0, import_joy28.styled)("div", {
|
|
2308
2417
|
name: "DatePicker",
|
|
2309
2418
|
slot: "root",
|
|
2310
2419
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -2361,9 +2470,9 @@ function parseDate(dateString, format) {
|
|
|
2361
2470
|
var formatToPattern = (format) => {
|
|
2362
2471
|
return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
2363
2472
|
};
|
|
2364
|
-
var TextMaskAdapter3 =
|
|
2473
|
+
var TextMaskAdapter3 = import_react20.default.forwardRef(function TextMaskAdapter4(props, ref) {
|
|
2365
2474
|
const { onChange, format, ...other } = props;
|
|
2366
|
-
return /* @__PURE__ */
|
|
2475
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
2367
2476
|
import_react_imask.IMaskInput,
|
|
2368
2477
|
{
|
|
2369
2478
|
...other,
|
|
@@ -2398,8 +2507,8 @@ var TextMaskAdapter3 = import_react19.default.forwardRef(function TextMaskAdapte
|
|
|
2398
2507
|
}
|
|
2399
2508
|
);
|
|
2400
2509
|
});
|
|
2401
|
-
var DatePicker = (0,
|
|
2402
|
-
const props = (0,
|
|
2510
|
+
var DatePicker = (0, import_react20.forwardRef)((inProps, ref) => {
|
|
2511
|
+
const props = (0, import_joy28.useThemeProps)({ props: inProps, name: "DatePicker" });
|
|
2403
2512
|
const {
|
|
2404
2513
|
onChange,
|
|
2405
2514
|
disabled,
|
|
@@ -2423,24 +2532,24 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2423
2532
|
shouldDisableDate,
|
|
2424
2533
|
...innerProps
|
|
2425
2534
|
} = props;
|
|
2426
|
-
const innerRef = (0,
|
|
2427
|
-
const buttonRef = (0,
|
|
2535
|
+
const innerRef = (0, import_react20.useRef)(null);
|
|
2536
|
+
const buttonRef = (0, import_react20.useRef)(null);
|
|
2428
2537
|
const [value, setValue] = useControlledState(
|
|
2429
2538
|
props.value,
|
|
2430
2539
|
props.defaultValue || "",
|
|
2431
|
-
(0,
|
|
2540
|
+
(0, import_react20.useCallback)((value2) => onChange?.({ target: { name: props.name, value: value2 } }), [props.name, onChange])
|
|
2432
2541
|
);
|
|
2433
|
-
const [displayValue, setDisplayValue] = (0,
|
|
2542
|
+
const [displayValue, setDisplayValue] = (0, import_react20.useState)(
|
|
2434
2543
|
() => value ? formatValueString(parseDate(value, format), displayFormat) : ""
|
|
2435
2544
|
);
|
|
2436
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
2545
|
+
const [anchorEl, setAnchorEl] = (0, import_react20.useState)(null);
|
|
2437
2546
|
const open = Boolean(anchorEl);
|
|
2438
|
-
(0,
|
|
2547
|
+
(0, import_react20.useEffect)(() => {
|
|
2439
2548
|
if (!anchorEl) {
|
|
2440
2549
|
innerRef.current?.blur();
|
|
2441
2550
|
}
|
|
2442
2551
|
}, [anchorEl, innerRef]);
|
|
2443
|
-
(0,
|
|
2552
|
+
(0, import_react20.useEffect)(() => {
|
|
2444
2553
|
if (value === "") {
|
|
2445
2554
|
setDisplayValue("");
|
|
2446
2555
|
return;
|
|
@@ -2450,8 +2559,8 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2450
2559
|
setDisplayValue(formattedValue);
|
|
2451
2560
|
}
|
|
2452
2561
|
}, [displayFormat, displayValue, format, value]);
|
|
2453
|
-
(0,
|
|
2454
|
-
const handleChange = (0,
|
|
2562
|
+
(0, import_react20.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
2563
|
+
const handleChange = (0, import_react20.useCallback)(
|
|
2455
2564
|
(event) => {
|
|
2456
2565
|
const value2 = event.target.value;
|
|
2457
2566
|
setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat) : value2);
|
|
@@ -2459,7 +2568,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2459
2568
|
},
|
|
2460
2569
|
[displayFormat, format, setValue]
|
|
2461
2570
|
);
|
|
2462
|
-
const handleDisplayInputChange = (0,
|
|
2571
|
+
const handleDisplayInputChange = (0, import_react20.useCallback)(
|
|
2463
2572
|
(event) => {
|
|
2464
2573
|
if (event.target.value === "") {
|
|
2465
2574
|
handleChange({
|
|
@@ -2484,7 +2593,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2484
2593
|
},
|
|
2485
2594
|
[displayFormat, format, handleChange, props.name]
|
|
2486
2595
|
);
|
|
2487
|
-
const handleCalendarToggle = (0,
|
|
2596
|
+
const handleCalendarToggle = (0, import_react20.useCallback)(
|
|
2488
2597
|
(event) => {
|
|
2489
2598
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
2490
2599
|
setTimeout(() => {
|
|
@@ -2493,7 +2602,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2493
2602
|
},
|
|
2494
2603
|
[anchorEl, setAnchorEl, innerRef]
|
|
2495
2604
|
);
|
|
2496
|
-
const handleInputMouseDown = (0,
|
|
2605
|
+
const handleInputMouseDown = (0, import_react20.useCallback)(
|
|
2497
2606
|
(event) => {
|
|
2498
2607
|
if (inputReadOnly) {
|
|
2499
2608
|
event.preventDefault();
|
|
@@ -2502,7 +2611,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2502
2611
|
},
|
|
2503
2612
|
[inputReadOnly, buttonRef]
|
|
2504
2613
|
);
|
|
2505
|
-
return /* @__PURE__ */
|
|
2614
|
+
return /* @__PURE__ */ import_react20.default.createElement(DatePickerRoot, null, /* @__PURE__ */ import_react20.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement(
|
|
2506
2615
|
Input_default,
|
|
2507
2616
|
{
|
|
2508
2617
|
...innerProps,
|
|
@@ -2530,7 +2639,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2530
2639
|
},
|
|
2531
2640
|
className,
|
|
2532
2641
|
sx,
|
|
2533
|
-
endDecorator: /* @__PURE__ */
|
|
2642
|
+
endDecorator: /* @__PURE__ */ import_react20.default.createElement(
|
|
2534
2643
|
CalendarButton,
|
|
2535
2644
|
{
|
|
2536
2645
|
ref: buttonRef,
|
|
@@ -2542,13 +2651,13 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2542
2651
|
"aria-expanded": open,
|
|
2543
2652
|
disabled
|
|
2544
2653
|
},
|
|
2545
|
-
/* @__PURE__ */
|
|
2654
|
+
/* @__PURE__ */ import_react20.default.createElement(import_CalendarToday.default, null)
|
|
2546
2655
|
),
|
|
2547
2656
|
label,
|
|
2548
2657
|
helperText,
|
|
2549
2658
|
readOnly: readOnly || inputReadOnly
|
|
2550
2659
|
}
|
|
2551
|
-
), open && /* @__PURE__ */
|
|
2660
|
+
), open && /* @__PURE__ */ import_react20.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react20.default.createElement(
|
|
2552
2661
|
StyledPopper,
|
|
2553
2662
|
{
|
|
2554
2663
|
id: "date-picker-popper",
|
|
@@ -2567,7 +2676,7 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2567
2676
|
"aria-label": "Calendar Tooltip",
|
|
2568
2677
|
"aria-expanded": open
|
|
2569
2678
|
},
|
|
2570
|
-
/* @__PURE__ */
|
|
2679
|
+
/* @__PURE__ */ import_react20.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react20.default.createElement(
|
|
2571
2680
|
Calendar_default,
|
|
2572
2681
|
{
|
|
2573
2682
|
value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
|
|
@@ -2586,14 +2695,14 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2586
2695
|
disablePast,
|
|
2587
2696
|
shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0
|
|
2588
2697
|
}
|
|
2589
|
-
), !hideClearButton && /* @__PURE__ */
|
|
2698
|
+
), !hideClearButton && /* @__PURE__ */ import_react20.default.createElement(
|
|
2590
2699
|
DialogActions_default,
|
|
2591
2700
|
{
|
|
2592
2701
|
sx: {
|
|
2593
2702
|
p: 1
|
|
2594
2703
|
}
|
|
2595
2704
|
},
|
|
2596
|
-
/* @__PURE__ */
|
|
2705
|
+
/* @__PURE__ */ import_react20.default.createElement(
|
|
2597
2706
|
Button_default,
|
|
2598
2707
|
{
|
|
2599
2708
|
size,
|
|
@@ -2619,10 +2728,10 @@ var DatePicker = (0, import_react19.forwardRef)((inProps, ref) => {
|
|
|
2619
2728
|
var DatePicker_default = DatePicker;
|
|
2620
2729
|
|
|
2621
2730
|
// src/components/Textarea/Textarea.tsx
|
|
2622
|
-
var
|
|
2623
|
-
var
|
|
2624
|
-
var
|
|
2625
|
-
var MotionTextarea = (0,
|
|
2731
|
+
var import_react21 = __toESM(require("react"));
|
|
2732
|
+
var import_joy29 = require("@mui/joy");
|
|
2733
|
+
var import_framer_motion19 = require("framer-motion");
|
|
2734
|
+
var MotionTextarea = (0, import_framer_motion19.motion)(import_joy29.Textarea);
|
|
2626
2735
|
var Textarea = (props) => {
|
|
2627
2736
|
const {
|
|
2628
2737
|
label,
|
|
@@ -2639,7 +2748,7 @@ var Textarea = (props) => {
|
|
|
2639
2748
|
className,
|
|
2640
2749
|
...innerProps
|
|
2641
2750
|
} = props;
|
|
2642
|
-
const textarea = /* @__PURE__ */
|
|
2751
|
+
const textarea = /* @__PURE__ */ import_react21.default.createElement(
|
|
2643
2752
|
MotionTextarea,
|
|
2644
2753
|
{
|
|
2645
2754
|
required,
|
|
@@ -2651,7 +2760,7 @@ var Textarea = (props) => {
|
|
|
2651
2760
|
...innerProps
|
|
2652
2761
|
}
|
|
2653
2762
|
);
|
|
2654
|
-
return /* @__PURE__ */
|
|
2763
|
+
return /* @__PURE__ */ import_react21.default.createElement(
|
|
2655
2764
|
FormControl_default,
|
|
2656
2765
|
{
|
|
2657
2766
|
required,
|
|
@@ -2662,9 +2771,9 @@ var Textarea = (props) => {
|
|
|
2662
2771
|
sx,
|
|
2663
2772
|
className
|
|
2664
2773
|
},
|
|
2665
|
-
label && /* @__PURE__ */
|
|
2774
|
+
label && /* @__PURE__ */ import_react21.default.createElement(FormLabel_default, null, label),
|
|
2666
2775
|
textarea,
|
|
2667
|
-
helperText && /* @__PURE__ */
|
|
2776
|
+
helperText && /* @__PURE__ */ import_react21.default.createElement(FormHelperText_default, null, helperText)
|
|
2668
2777
|
);
|
|
2669
2778
|
};
|
|
2670
2779
|
Textarea.displayName = "Textarea";
|
|
@@ -2673,10 +2782,10 @@ Textarea.displayName = "Textarea";
|
|
|
2673
2782
|
var Textarea_default = Textarea;
|
|
2674
2783
|
|
|
2675
2784
|
// src/components/Select/Select.tsx
|
|
2676
|
-
var
|
|
2677
|
-
var
|
|
2678
|
-
var
|
|
2679
|
-
var MotionOption = (0,
|
|
2785
|
+
var import_react22 = __toESM(require("react"));
|
|
2786
|
+
var import_joy30 = require("@mui/joy");
|
|
2787
|
+
var import_framer_motion20 = require("framer-motion");
|
|
2788
|
+
var MotionOption = (0, import_framer_motion20.motion)(import_joy30.Option);
|
|
2680
2789
|
var Option = MotionOption;
|
|
2681
2790
|
var secondaryTextLevelMap2 = {
|
|
2682
2791
|
sm: "body-xs",
|
|
@@ -2699,7 +2808,7 @@ function Select(props) {
|
|
|
2699
2808
|
className,
|
|
2700
2809
|
...innerProps
|
|
2701
2810
|
} = props;
|
|
2702
|
-
const options = (0,
|
|
2811
|
+
const options = (0, import_react22.useMemo)(
|
|
2703
2812
|
() => props.options.map((option) => {
|
|
2704
2813
|
if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
|
|
2705
2814
|
return option;
|
|
@@ -2724,15 +2833,15 @@ function Select(props) {
|
|
|
2724
2833
|
};
|
|
2725
2834
|
onChange?.(newEvent, newValue);
|
|
2726
2835
|
};
|
|
2727
|
-
const optionMap = (0,
|
|
2836
|
+
const optionMap = (0, import_react22.useMemo)(() => {
|
|
2728
2837
|
const map = /* @__PURE__ */ new Map();
|
|
2729
2838
|
options.forEach((option) => {
|
|
2730
2839
|
map.set(option.value, option);
|
|
2731
2840
|
});
|
|
2732
2841
|
return map;
|
|
2733
2842
|
}, [options]);
|
|
2734
|
-
const select = /* @__PURE__ */
|
|
2735
|
-
|
|
2843
|
+
const select = /* @__PURE__ */ import_react22.default.createElement(
|
|
2844
|
+
import_joy30.Select,
|
|
2736
2845
|
{
|
|
2737
2846
|
...innerProps,
|
|
2738
2847
|
required,
|
|
@@ -2748,9 +2857,9 @@ function Select(props) {
|
|
|
2748
2857
|
return optionMap.get(selected.value)?.label;
|
|
2749
2858
|
}
|
|
2750
2859
|
},
|
|
2751
|
-
options.map((option) => /* @__PURE__ */
|
|
2860
|
+
options.map((option) => /* @__PURE__ */ import_react22.default.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ import_react22.default.createElement(import_joy30.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react22.default.createElement(import_joy30.Typography, { level: "inherit" }, option.label), /* @__PURE__ */ import_react22.default.createElement(import_joy30.Typography, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
|
|
2752
2861
|
);
|
|
2753
|
-
return /* @__PURE__ */
|
|
2862
|
+
return /* @__PURE__ */ import_react22.default.createElement(
|
|
2754
2863
|
FormControl_default,
|
|
2755
2864
|
{
|
|
2756
2865
|
required,
|
|
@@ -2761,9 +2870,9 @@ function Select(props) {
|
|
|
2761
2870
|
sx,
|
|
2762
2871
|
className
|
|
2763
2872
|
},
|
|
2764
|
-
label && /* @__PURE__ */
|
|
2873
|
+
label && /* @__PURE__ */ import_react22.default.createElement(FormLabel_default, null, label),
|
|
2765
2874
|
select,
|
|
2766
|
-
helperText && /* @__PURE__ */
|
|
2875
|
+
helperText && /* @__PURE__ */ import_react22.default.createElement(FormHelperText_default, null, helperText)
|
|
2767
2876
|
);
|
|
2768
2877
|
}
|
|
2769
2878
|
Select.displayName = "Select";
|
|
@@ -2774,19 +2883,6 @@ var Select_default = Select;
|
|
|
2774
2883
|
// src/components/DataTable/components.tsx
|
|
2775
2884
|
var import_joy33 = require("@mui/joy");
|
|
2776
2885
|
|
|
2777
|
-
// src/components/Tooltip/Tooltip.tsx
|
|
2778
|
-
var import_react22 = __toESM(require("react"));
|
|
2779
|
-
var import_joy30 = require("@mui/joy");
|
|
2780
|
-
var import_framer_motion20 = require("framer-motion");
|
|
2781
|
-
var MotionTooltip = (0, import_framer_motion20.motion)(import_joy30.Tooltip);
|
|
2782
|
-
var Tooltip = (props) => {
|
|
2783
|
-
return /* @__PURE__ */ import_react22.default.createElement(MotionTooltip, { ...props });
|
|
2784
|
-
};
|
|
2785
|
-
Tooltip.displayName = "Tooltip";
|
|
2786
|
-
|
|
2787
|
-
// src/components/Tooltip/index.ts
|
|
2788
|
-
var Tooltip_default = Tooltip;
|
|
2789
|
-
|
|
2790
2886
|
// src/components/InfoSign/InfoSign.tsx
|
|
2791
2887
|
var import_react23 = __toESM(require("react"));
|
|
2792
2888
|
var import_joy31 = require("@mui/joy");
|
|
@@ -2821,21 +2917,22 @@ function InfoSign(props) {
|
|
|
2821
2917
|
var InfoSign_default = InfoSign;
|
|
2822
2918
|
|
|
2823
2919
|
// src/components/DataTable/components.tsx
|
|
2824
|
-
var TextEllipsis = ({ children }) => {
|
|
2920
|
+
var TextEllipsis = ({ children, lineClamp }) => {
|
|
2825
2921
|
const textRef = (0, import_react24.useRef)(null);
|
|
2826
2922
|
const [showTooltip, setShowTooltip] = (0, import_react24.useState)(false);
|
|
2827
2923
|
(0, import_react24.useLayoutEffect)(() => {
|
|
2828
2924
|
const element = textRef.current;
|
|
2829
|
-
if (element)
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2925
|
+
if (!element) return;
|
|
2926
|
+
const checkTruncation = () => {
|
|
2927
|
+
const isTruncated = lineClamp && lineClamp > 1 ? element.scrollHeight > element.clientHeight + 1 : element.scrollWidth > element.clientWidth;
|
|
2928
|
+
setShowTooltip(isTruncated);
|
|
2929
|
+
};
|
|
2930
|
+
checkTruncation();
|
|
2931
|
+
const ro = new ResizeObserver(checkTruncation);
|
|
2932
|
+
ro.observe(element);
|
|
2933
|
+
return () => ro.disconnect();
|
|
2934
|
+
}, [children, lineClamp]);
|
|
2935
|
+
return /* @__PURE__ */ import_react24.default.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ import_react24.default.createElement(EllipsisDiv, { ref: textRef, lineClamp }, children));
|
|
2839
2936
|
};
|
|
2840
2937
|
var CellTextEllipsis = ({ children }) => {
|
|
2841
2938
|
const textRef = (0, import_react24.useRef)(null);
|
|
@@ -2886,7 +2983,8 @@ var HeadCell = (props) => {
|
|
|
2886
2983
|
pinnedEndPosition,
|
|
2887
2984
|
headerRef,
|
|
2888
2985
|
tableColRef,
|
|
2889
|
-
headerClassName
|
|
2986
|
+
headerClassName,
|
|
2987
|
+
headerLineClamp
|
|
2890
2988
|
} = props;
|
|
2891
2989
|
const theme = (0, import_joy32.useTheme)();
|
|
2892
2990
|
const ref = headerRef;
|
|
@@ -2980,7 +3078,7 @@ var HeadCell = (props) => {
|
|
|
2980
3078
|
initial: "initial",
|
|
2981
3079
|
className: computedHeaderClassName
|
|
2982
3080
|
},
|
|
2983
|
-
/* @__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,
|
|
3081
|
+
/* @__PURE__ */ import_react24.default.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center", sx: { minWidth: 0 } }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ import_react24.default.createElement(TextEllipsis, { lineClamp: headerLineClamp }, headerName ?? field, editMode && required && /* @__PURE__ */ import_react24.default.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
|
|
2984
3082
|
resizer
|
|
2985
3083
|
);
|
|
2986
3084
|
};
|
|
@@ -3272,7 +3370,9 @@ function useDataTableRenderer({
|
|
|
3272
3370
|
getId: _getId,
|
|
3273
3371
|
isTotalSelected: _isTotalSelected,
|
|
3274
3372
|
isRowSelectable,
|
|
3275
|
-
columnGroupingModel
|
|
3373
|
+
columnGroupingModel,
|
|
3374
|
+
columnVisibilityModel,
|
|
3375
|
+
onColumnVisibilityModelChange
|
|
3276
3376
|
}) {
|
|
3277
3377
|
if (pinnedColumns && columnGroupingModel) {
|
|
3278
3378
|
throw new Error(
|
|
@@ -3288,12 +3388,35 @@ function useDataTableRenderer({
|
|
|
3288
3388
|
initialState?.sorting?.sortModel ?? [],
|
|
3289
3389
|
(0, import_react25.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
|
|
3290
3390
|
);
|
|
3391
|
+
const [visibilityModel] = useControlledState(
|
|
3392
|
+
columnVisibilityModel,
|
|
3393
|
+
initialState?.columns?.columnVisibilityModel ?? {},
|
|
3394
|
+
(0, import_react25.useCallback)(
|
|
3395
|
+
(model) => onColumnVisibilityModelChange?.(model),
|
|
3396
|
+
[onColumnVisibilityModelChange]
|
|
3397
|
+
)
|
|
3398
|
+
);
|
|
3291
3399
|
const reorderedColumns = (0, import_react25.useMemo)(() => {
|
|
3292
3400
|
if (!columnGroupingModel) return columnsProp;
|
|
3293
3401
|
return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
|
|
3294
3402
|
}, [columnsProp, columnGroupingModel]);
|
|
3295
|
-
const
|
|
3403
|
+
const visibleColumns = (0, import_react25.useMemo)(
|
|
3404
|
+
() => reorderedColumns.filter((col) => visibilityModel[col.field] !== false),
|
|
3405
|
+
[reorderedColumns, visibilityModel]
|
|
3406
|
+
);
|
|
3407
|
+
const visibleFieldSet = (0, import_react25.useMemo)(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
|
|
3408
|
+
const allColumnsByField = (0, import_react25.useMemo)(
|
|
3296
3409
|
() => reorderedColumns.reduce(
|
|
3410
|
+
(acc, curr) => ({
|
|
3411
|
+
...acc,
|
|
3412
|
+
[curr.field]: curr
|
|
3413
|
+
}),
|
|
3414
|
+
{}
|
|
3415
|
+
),
|
|
3416
|
+
[reorderedColumns]
|
|
3417
|
+
);
|
|
3418
|
+
const visibleColumnsByField = (0, import_react25.useMemo)(
|
|
3419
|
+
() => visibleColumns.reduce(
|
|
3297
3420
|
(acc, curr) => ({
|
|
3298
3421
|
...acc,
|
|
3299
3422
|
[curr.field]: {
|
|
@@ -3304,7 +3427,7 @@ function useDataTableRenderer({
|
|
|
3304
3427
|
}),
|
|
3305
3428
|
{}
|
|
3306
3429
|
),
|
|
3307
|
-
[
|
|
3430
|
+
[visibleColumns]
|
|
3308
3431
|
);
|
|
3309
3432
|
const sortComparator = (0, import_react25.useCallback)(
|
|
3310
3433
|
(rowA, rowB) => {
|
|
@@ -3312,7 +3435,8 @@ function useDataTableRenderer({
|
|
|
3312
3435
|
const { field, sort: direction } = sort;
|
|
3313
3436
|
const a = rowA[field];
|
|
3314
3437
|
const b = rowB[field];
|
|
3315
|
-
const column =
|
|
3438
|
+
const column = allColumnsByField[field];
|
|
3439
|
+
if (!column) continue;
|
|
3316
3440
|
let comparison = 0;
|
|
3317
3441
|
if (column.sortComparator) {
|
|
3318
3442
|
comparison = column.sortComparator({
|
|
@@ -3332,7 +3456,7 @@ function useDataTableRenderer({
|
|
|
3332
3456
|
}
|
|
3333
3457
|
return 0;
|
|
3334
3458
|
},
|
|
3335
|
-
[sortModel,
|
|
3459
|
+
[sortModel, allColumnsByField]
|
|
3336
3460
|
);
|
|
3337
3461
|
const rows = (0, import_react25.useMemo)(
|
|
3338
3462
|
() => sortModel.length ? [..._rows].sort(sortComparator) : _rows,
|
|
@@ -3396,44 +3520,54 @@ function useDataTableRenderer({
|
|
|
3396
3520
|
() => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
|
|
3397
3521
|
[_isTotalSelected, selectionModel, selectableRowCount]
|
|
3398
3522
|
);
|
|
3399
|
-
const columnWidths = useColumnWidths(
|
|
3523
|
+
const columnWidths = useColumnWidths(visibleColumnsByField);
|
|
3400
3524
|
const getWidth = (0, import_react25.useCallback)(
|
|
3401
|
-
(f) => columnWidths[f] ??
|
|
3402
|
-
|
|
3403
|
-
[columnWidths,
|
|
3525
|
+
(f) => columnWidths[f] ?? allColumnsByField[f]?.width ?? // Column prop 으로 지정된 width
|
|
3526
|
+
allColumnsByField[f]?.minWidth ?? 0,
|
|
3527
|
+
[columnWidths, allColumnsByField]
|
|
3404
3528
|
);
|
|
3405
3529
|
const processedColumnGroups = (0, import_react25.useMemo)(() => {
|
|
3406
3530
|
if (!columnGroupingModel) return null;
|
|
3407
|
-
return calculateColumnGroups(columnGroupingModel,
|
|
3408
|
-
}, [columnGroupingModel,
|
|
3531
|
+
return calculateColumnGroups(columnGroupingModel, visibleColumns, visibleFieldSet);
|
|
3532
|
+
}, [columnGroupingModel, visibleColumns, visibleFieldSet]);
|
|
3533
|
+
const effectivePinnedLeft = (0, import_react25.useMemo)(
|
|
3534
|
+
() => pinnedColumns?.left?.filter((f) => visibleFieldSet.has(f)),
|
|
3535
|
+
[pinnedColumns?.left, visibleFieldSet]
|
|
3536
|
+
);
|
|
3537
|
+
const effectivePinnedRight = (0, import_react25.useMemo)(
|
|
3538
|
+
() => pinnedColumns?.right?.filter((f) => visibleFieldSet.has(f)),
|
|
3539
|
+
[pinnedColumns?.right, visibleFieldSet]
|
|
3540
|
+
);
|
|
3409
3541
|
const columns = (0, import_react25.useMemo)(() => {
|
|
3410
|
-
const baseColumns =
|
|
3542
|
+
const baseColumns = visibleColumns.length > 0 ? visibleColumns : reorderedColumns.length > 0 ? [] : Object.keys(rows[0] || {}).map((key) => ({
|
|
3411
3543
|
field: key
|
|
3412
3544
|
}));
|
|
3413
3545
|
return baseColumns.map((column) => {
|
|
3414
|
-
const isLeftPinned =
|
|
3415
|
-
const isRightPinned =
|
|
3546
|
+
const isLeftPinned = effectivePinnedLeft?.includes(column.field);
|
|
3547
|
+
const isRightPinned = effectivePinnedRight?.includes(column.field);
|
|
3416
3548
|
const isPinned = isLeftPinned || isRightPinned;
|
|
3417
3549
|
return {
|
|
3418
3550
|
...column,
|
|
3419
|
-
headerRef:
|
|
3420
|
-
tableColRef:
|
|
3551
|
+
headerRef: visibleColumnsByField[column.field]?.headerRef,
|
|
3552
|
+
tableColRef: visibleColumnsByField[column.field]?.tableColRef,
|
|
3421
3553
|
isCellEditable: editMode && (typeof column.isCellEditable === "function" ? column.isCellEditable : column.isCellEditable ?? true),
|
|
3422
3554
|
sort: sortModel.find((sort) => sort.field === column.field)?.sort,
|
|
3423
|
-
sortOrder:
|
|
3555
|
+
sortOrder: allColumnsByField[column.field]?.sortOrder || sortOrder,
|
|
3424
3556
|
isPinned,
|
|
3425
|
-
isLastStartPinnedColumn: isLeftPinned && [...
|
|
3426
|
-
isLastEndPinnedColumn: isRightPinned && (
|
|
3427
|
-
pinnedStartPosition:
|
|
3428
|
-
pinnedEndPosition:
|
|
3557
|
+
isLastStartPinnedColumn: isLeftPinned && [...effectivePinnedLeft || []].pop() === column.field,
|
|
3558
|
+
isLastEndPinnedColumn: isRightPinned && (effectivePinnedRight?.[0] ?? null) === column.field,
|
|
3559
|
+
pinnedStartPosition: effectivePinnedLeft?.slice(0, isLeftPinned ? effectivePinnedLeft.indexOf(column.field) : effectivePinnedLeft.length).reduce((acc, curr) => acc + getWidth(curr), 0),
|
|
3560
|
+
pinnedEndPosition: effectivePinnedRight?.slice(isRightPinned ? effectivePinnedRight.indexOf(column.field) + 1 : 0).reduce((acc, curr) => acc + getWidth(curr), 0)
|
|
3429
3561
|
};
|
|
3430
3562
|
});
|
|
3431
3563
|
}, [
|
|
3564
|
+
visibleColumns,
|
|
3432
3565
|
reorderedColumns,
|
|
3433
3566
|
rows,
|
|
3434
|
-
|
|
3435
|
-
|
|
3436
|
-
|
|
3567
|
+
effectivePinnedLeft,
|
|
3568
|
+
effectivePinnedRight,
|
|
3569
|
+
visibleColumnsByField,
|
|
3570
|
+
allColumnsByField,
|
|
3437
3571
|
editMode,
|
|
3438
3572
|
sortModel,
|
|
3439
3573
|
sortOrder,
|
|
@@ -3449,8 +3583,8 @@ function useDataTableRenderer({
|
|
|
3449
3583
|
const handleSortChange = (0, import_react25.useCallback)(
|
|
3450
3584
|
(props) => {
|
|
3451
3585
|
const { field, currentSort, multiple } = props;
|
|
3452
|
-
const column =
|
|
3453
|
-
const columnSortOrder = column
|
|
3586
|
+
const column = allColumnsByField[field];
|
|
3587
|
+
const columnSortOrder = column?.sortOrder || sortOrder;
|
|
3454
3588
|
if (currentSort !== void 0) {
|
|
3455
3589
|
const currentOrderIndex = columnSortOrder.indexOf(currentSort);
|
|
3456
3590
|
const nextSortOrderIndex = (currentOrderIndex + 1) % columnSortOrder.length;
|
|
@@ -3467,7 +3601,7 @@ function useDataTableRenderer({
|
|
|
3467
3601
|
setSortModel(newSortModel);
|
|
3468
3602
|
}
|
|
3469
3603
|
},
|
|
3470
|
-
[sortOrder,
|
|
3604
|
+
[sortOrder, allColumnsByField, sortModel, setSortModel]
|
|
3471
3605
|
);
|
|
3472
3606
|
(0, import_react25.useEffect)(() => {
|
|
3473
3607
|
if (!paginationModel) {
|
|
@@ -3893,6 +4027,10 @@ function Component(props, apiRef) {
|
|
|
3893
4027
|
loading,
|
|
3894
4028
|
columnGroupingModel: _________________,
|
|
3895
4029
|
// columnGroupingModel is used in useDataTableRenderer
|
|
4030
|
+
columnVisibilityModel: __________________,
|
|
4031
|
+
// columnVisibilityModel is used in useDataTableRenderer
|
|
4032
|
+
onColumnVisibilityModelChange: ___________________,
|
|
4033
|
+
// onColumnVisibilityModelChange is used in useDataTableRenderer
|
|
3896
4034
|
slots: {
|
|
3897
4035
|
checkbox: RenderCheckbox = Checkbox_default,
|
|
3898
4036
|
toolbar: Toolbar,
|
|
@@ -4132,7 +4270,7 @@ function Component(props, apiRef) {
|
|
|
4132
4270
|
width: c.width
|
|
4133
4271
|
}
|
|
4134
4272
|
}
|
|
4135
|
-
))), /* @__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(
|
|
4273
|
+
))), /* @__PURE__ */ import_react28.default.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.length > 0 && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ import_react28.default.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ import_react28.default.createElement(
|
|
4136
4274
|
"th",
|
|
4137
4275
|
{
|
|
4138
4276
|
rowSpan: processedColumnGroups.maxLevel + 2,
|
|
@@ -4152,7 +4290,7 @@ function Component(props, apiRef) {
|
|
|
4152
4290
|
...checkboxProps
|
|
4153
4291
|
}
|
|
4154
4292
|
)
|
|
4155
|
-
), 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) => {
|
|
4293
|
+
), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.filter((g) => g.colspan > 0).map((group, groupIndex) => {
|
|
4156
4294
|
const nextGroup = levelGroups[groupIndex + 1];
|
|
4157
4295
|
const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
|
|
4158
4296
|
const params = { groupId: group.groupId };
|
|
@@ -4170,7 +4308,7 @@ function Component(props, apiRef) {
|
|
|
4170
4308
|
},
|
|
4171
4309
|
group.headerName ?? group.groupId
|
|
4172
4310
|
), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react28.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
|
|
4173
|
-
}))), /* @__PURE__ */ import_react28.default.createElement("tr", null, !processedColumnGroups && checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
|
|
4311
|
+
}))), /* @__PURE__ */ import_react28.default.createElement("tr", null, (!processedColumnGroups || processedColumnGroups.groups.length === 0) && checkboxSelection && /* @__PURE__ */ import_react28.default.createElement(
|
|
4174
4312
|
"th",
|
|
4175
4313
|
{
|
|
4176
4314
|
style: {
|
|
@@ -5968,28 +6106,191 @@ var MotionRadioGroup = (0, import_framer_motion27.motion)(import_joy54.RadioGrou
|
|
|
5968
6106
|
var RadioGroup = MotionRadioGroup;
|
|
5969
6107
|
RadioGroup.displayName = "RadioGroup";
|
|
5970
6108
|
|
|
5971
|
-
// src/components/
|
|
6109
|
+
// src/components/RadioTileGroup/RadioTileGroup.tsx
|
|
5972
6110
|
var import_react44 = __toESM(require("react"));
|
|
6111
|
+
var import_joy55 = require("@mui/joy");
|
|
6112
|
+
var RadioTileGroupRoot = (0, import_joy55.styled)(RadioGroup, {
|
|
6113
|
+
name: "RadioTileGroup",
|
|
6114
|
+
slot: "root",
|
|
6115
|
+
shouldForwardProp: (prop) => prop !== "flex" && prop !== "columns"
|
|
6116
|
+
})(({ theme, flex, columns }) => ({
|
|
6117
|
+
flexDirection: "row",
|
|
6118
|
+
gap: theme.spacing(2),
|
|
6119
|
+
...flex && { flex: 1 },
|
|
6120
|
+
...columns && {
|
|
6121
|
+
display: "grid",
|
|
6122
|
+
gridTemplateColumns: `repeat(${columns}, 1fr)`
|
|
6123
|
+
},
|
|
6124
|
+
[`& .${import_joy55.sheetClasses.root}.${import_joy55.radioClasses.disabled}`]: {
|
|
6125
|
+
borderColor: theme.palette.neutral.outlinedDisabledBorder
|
|
6126
|
+
},
|
|
6127
|
+
[`& .${import_joy55.radioClasses.root}`]: {
|
|
6128
|
+
[`& .${import_joy55.radioClasses.action}`]: {
|
|
6129
|
+
borderRadius: theme.radius.md
|
|
6130
|
+
},
|
|
6131
|
+
[`&.${import_joy55.radioClasses.checked}`]: {
|
|
6132
|
+
[`& .${import_joy55.radioClasses.action}`]: {
|
|
6133
|
+
inset: -1,
|
|
6134
|
+
border: "2px solid",
|
|
6135
|
+
borderColor: theme.palette.primary.outlinedColor
|
|
6136
|
+
},
|
|
6137
|
+
[`&.${import_joy55.radioClasses.disabled}`]: {
|
|
6138
|
+
[`& .${import_joy55.radioClasses.action}`]: {
|
|
6139
|
+
borderColor: theme.palette.neutral.outlinedBorder
|
|
6140
|
+
}
|
|
6141
|
+
}
|
|
6142
|
+
}
|
|
6143
|
+
}
|
|
6144
|
+
}));
|
|
6145
|
+
var RadioTileSheet = (0, import_joy55.styled)(Sheet, {
|
|
6146
|
+
name: "RadioTileGroup",
|
|
6147
|
+
slot: "tile",
|
|
6148
|
+
shouldForwardProp: (prop) => prop !== "disabled" && prop !== "size" && prop !== "flex" && prop !== "textAlign"
|
|
6149
|
+
})(({
|
|
6150
|
+
theme,
|
|
6151
|
+
disabled,
|
|
6152
|
+
size = "sm",
|
|
6153
|
+
flex,
|
|
6154
|
+
textAlign
|
|
6155
|
+
}) => {
|
|
6156
|
+
const px = { sm: theme.spacing(3), md: theme.spacing(3), lg: theme.spacing(4) }[size];
|
|
6157
|
+
const py = { sm: theme.spacing(3), md: theme.spacing(4), lg: theme.spacing(4) }[size];
|
|
6158
|
+
return {
|
|
6159
|
+
borderRadius: theme.radius.md,
|
|
6160
|
+
display: "flex",
|
|
6161
|
+
gap: { sm: theme.spacing(2), md: theme.spacing(3), lg: theme.spacing(4) }[size],
|
|
6162
|
+
padding: `${py} ${px}`,
|
|
6163
|
+
// NOTE: Radio에도 Label과의 정렬을 맞추기 위해 중복 코드가 있지만 Icon과 RadioButton 의 정렬도 일치시켜야 해서 코드가 중복으로 존재할수밖에 없다.
|
|
6164
|
+
flexDirection: textAlign === "start" ? "row-reverse" : "column-reverse",
|
|
6165
|
+
justifyContent: textAlign === "start" ? "space-between" : "center",
|
|
6166
|
+
alignItems: "center",
|
|
6167
|
+
...flex ? { flex: 1 } : {},
|
|
6168
|
+
...disabled ? { borderColor: theme.palette.neutral.outlinedDisabledBorder } : {
|
|
6169
|
+
":hover": {
|
|
6170
|
+
backgroundColor: theme.palette.neutral.outlinedHoverBg
|
|
6171
|
+
},
|
|
6172
|
+
":active": {
|
|
6173
|
+
backgroundColor: theme.palette.neutral.outlinedActiveBg
|
|
6174
|
+
}
|
|
6175
|
+
}
|
|
6176
|
+
};
|
|
6177
|
+
});
|
|
6178
|
+
function RadioTileGroup(props) {
|
|
6179
|
+
const {
|
|
6180
|
+
options,
|
|
6181
|
+
value,
|
|
6182
|
+
defaultValue,
|
|
6183
|
+
onChange,
|
|
6184
|
+
name,
|
|
6185
|
+
disabled: allDisabled,
|
|
6186
|
+
sx,
|
|
6187
|
+
className,
|
|
6188
|
+
useIndicator,
|
|
6189
|
+
textAlign = "center",
|
|
6190
|
+
size = "sm",
|
|
6191
|
+
flex,
|
|
6192
|
+
columns,
|
|
6193
|
+
label,
|
|
6194
|
+
helperText,
|
|
6195
|
+
error,
|
|
6196
|
+
required
|
|
6197
|
+
} = props;
|
|
6198
|
+
const radioGroup = /* @__PURE__ */ import_react44.default.createElement(
|
|
6199
|
+
RadioTileGroupRoot,
|
|
6200
|
+
{
|
|
6201
|
+
overlay: true,
|
|
6202
|
+
name,
|
|
6203
|
+
value,
|
|
6204
|
+
defaultValue,
|
|
6205
|
+
onChange,
|
|
6206
|
+
flex,
|
|
6207
|
+
columns
|
|
6208
|
+
},
|
|
6209
|
+
options.map((option) => /* @__PURE__ */ import_react44.default.createElement(
|
|
6210
|
+
RadioTileSheet,
|
|
6211
|
+
{
|
|
6212
|
+
key: option.value,
|
|
6213
|
+
variant: "outlined",
|
|
6214
|
+
disabled: allDisabled ?? option.disabled,
|
|
6215
|
+
size,
|
|
6216
|
+
flex,
|
|
6217
|
+
textAlign
|
|
6218
|
+
},
|
|
6219
|
+
/* @__PURE__ */ import_react44.default.createElement(
|
|
6220
|
+
Radio,
|
|
6221
|
+
{
|
|
6222
|
+
id: `${option.value}`,
|
|
6223
|
+
value: option.value,
|
|
6224
|
+
label: option.label,
|
|
6225
|
+
disableIcon: !useIndicator,
|
|
6226
|
+
disabled: allDisabled ?? option.disabled,
|
|
6227
|
+
size,
|
|
6228
|
+
slotProps: {
|
|
6229
|
+
root: {
|
|
6230
|
+
sx: {
|
|
6231
|
+
width: "100%",
|
|
6232
|
+
flexDirection: textAlign === "start" ? "row-reverse" : "column-reverse",
|
|
6233
|
+
justifyContent: textAlign === "start" ? "space-between" : "center",
|
|
6234
|
+
alignItems: "center",
|
|
6235
|
+
gap: { sm: 2, md: 3, lg: 4 }[size]
|
|
6236
|
+
}
|
|
6237
|
+
},
|
|
6238
|
+
label: ({ disabled }) => ({
|
|
6239
|
+
sx: (theme) => ({
|
|
6240
|
+
...theme.typography[{ sm: "body-sm", md: "body-md", lg: "body-lg" }[size]],
|
|
6241
|
+
color: disabled ? theme.palette.neutral.outlinedDisabledColor : theme.palette.neutral.outlinedColor
|
|
6242
|
+
})
|
|
6243
|
+
})
|
|
6244
|
+
}
|
|
6245
|
+
}
|
|
6246
|
+
),
|
|
6247
|
+
option.startDecorator && /* @__PURE__ */ import_react44.default.createElement(
|
|
6248
|
+
Box_default,
|
|
6249
|
+
{
|
|
6250
|
+
sx: {
|
|
6251
|
+
zIndex: 2,
|
|
6252
|
+
// HACK: Radio의 overlay가 decorator를 덮어버리기 때문에 문제 예방을 위해 적용해야 한다.
|
|
6253
|
+
width: { sm: "20px", md: "24px", lg: "24px" }[size],
|
|
6254
|
+
height: { sm: "20px", md: "24px", lg: "24px" }[size],
|
|
6255
|
+
color: "inherit",
|
|
6256
|
+
"& > .MuiSvgIcon-root": {
|
|
6257
|
+
width: "inherit",
|
|
6258
|
+
height: "inherit",
|
|
6259
|
+
fill: "currentColor",
|
|
6260
|
+
color: "inherit"
|
|
6261
|
+
}
|
|
6262
|
+
}
|
|
6263
|
+
},
|
|
6264
|
+
option.startDecorator
|
|
6265
|
+
)
|
|
6266
|
+
))
|
|
6267
|
+
);
|
|
6268
|
+
return /* @__PURE__ */ import_react44.default.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ import_react44.default.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ import_react44.default.createElement(FormHelperText_default, null, helperText));
|
|
6269
|
+
}
|
|
6270
|
+
RadioTileGroup.displayName = "RadioTileGroup";
|
|
6271
|
+
|
|
6272
|
+
// src/components/RadioList/RadioList.tsx
|
|
6273
|
+
var import_react45 = __toESM(require("react"));
|
|
5973
6274
|
function RadioList(props) {
|
|
5974
6275
|
const { items, ...innerProps } = props;
|
|
5975
|
-
return /* @__PURE__ */
|
|
6276
|
+
return /* @__PURE__ */ import_react45.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react45.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
|
|
5976
6277
|
}
|
|
5977
6278
|
RadioList.displayName = "RadioList";
|
|
5978
6279
|
|
|
5979
6280
|
// src/components/Stepper/Stepper.tsx
|
|
5980
|
-
var
|
|
5981
|
-
var
|
|
6281
|
+
var import_react46 = __toESM(require("react"));
|
|
6282
|
+
var import_joy56 = require("@mui/joy");
|
|
5982
6283
|
var import_Check = __toESM(require("@mui/icons-material/Check"));
|
|
5983
6284
|
var import_framer_motion28 = require("framer-motion");
|
|
5984
|
-
var Step = (0,
|
|
6285
|
+
var Step = (0, import_joy56.styled)(import_joy56.Step)({});
|
|
5985
6286
|
Step.displayName = "Step";
|
|
5986
|
-
var StepIndicator = (0,
|
|
6287
|
+
var StepIndicator = (0, import_joy56.styled)(import_joy56.StepIndicator)({});
|
|
5987
6288
|
StepIndicator.displayName = "StepIndicator";
|
|
5988
|
-
var StyledStepper = (0,
|
|
6289
|
+
var StyledStepper = (0, import_joy56.styled)(import_joy56.Stepper)(({ theme }) => ({
|
|
5989
6290
|
"--StepIndicator-size": "24px",
|
|
5990
6291
|
"--Step-gap": theme.spacing(2),
|
|
5991
6292
|
"--joy-palette-success-solidBg": "var(--joy-palette-success-400)",
|
|
5992
|
-
[`& .${
|
|
6293
|
+
[`& .${import_joy56.stepIndicatorClasses.root}`]: {
|
|
5993
6294
|
fontSize: "var(--ceed-fontSize-xs)"
|
|
5994
6295
|
}
|
|
5995
6296
|
}));
|
|
@@ -6006,31 +6307,31 @@ function Stepper(props) {
|
|
|
6006
6307
|
stepOrientation = "horizontal"
|
|
6007
6308
|
} = props;
|
|
6008
6309
|
const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
|
|
6009
|
-
return /* @__PURE__ */
|
|
6310
|
+
return /* @__PURE__ */ import_react46.default.createElement(
|
|
6010
6311
|
MotionStepper,
|
|
6011
6312
|
{
|
|
6012
6313
|
orientation,
|
|
6013
6314
|
sx: (theme) => ({
|
|
6014
6315
|
"--StepIndicator-size": "24px",
|
|
6015
6316
|
"--Step-gap": theme.spacing(2),
|
|
6016
|
-
[`& .${
|
|
6317
|
+
[`& .${import_joy56.stepIndicatorClasses.root}`]: {
|
|
6017
6318
|
fontSize: "var(--ceed-fontSize-xs)"
|
|
6018
6319
|
},
|
|
6019
|
-
[`& .${
|
|
6320
|
+
[`& .${import_joy56.stepClasses.completed}`]: {
|
|
6020
6321
|
"&::after": { bgcolor: activeLineColor },
|
|
6021
|
-
[`& .${
|
|
6322
|
+
[`& .${import_joy56.stepIndicatorClasses.root}`]: {
|
|
6022
6323
|
bgcolor: activeColor
|
|
6023
6324
|
}
|
|
6024
6325
|
},
|
|
6025
|
-
[`& .${
|
|
6326
|
+
[`& .${import_joy56.stepClasses.active}`]: {
|
|
6026
6327
|
"&::after": { bgcolor: inactiveLineColor },
|
|
6027
|
-
[`& .${
|
|
6328
|
+
[`& .${import_joy56.stepIndicatorClasses.root}`]: {
|
|
6028
6329
|
bgcolor: activeColor
|
|
6029
6330
|
}
|
|
6030
6331
|
},
|
|
6031
|
-
[`& .${
|
|
6332
|
+
[`& .${import_joy56.stepClasses.disabled}`]: {
|
|
6032
6333
|
"&::after": { bgcolor: inactiveLineColor },
|
|
6033
|
-
[`& .${
|
|
6334
|
+
[`& .${import_joy56.stepIndicatorClasses.root}`]: {
|
|
6034
6335
|
bgcolor: theme.vars.palette.background.surface,
|
|
6035
6336
|
borderColor: theme.vars.palette.neutral.outlinedBorder,
|
|
6036
6337
|
borderWidth: "1px",
|
|
@@ -6045,23 +6346,23 @@ function Stepper(props) {
|
|
|
6045
6346
|
const completed = activeStep > i + 1;
|
|
6046
6347
|
const disabled = activeStep < i + 1;
|
|
6047
6348
|
const hasContent = step.label || step.extraContent;
|
|
6048
|
-
return /* @__PURE__ */
|
|
6349
|
+
return /* @__PURE__ */ import_react46.default.createElement(
|
|
6049
6350
|
Step,
|
|
6050
6351
|
{
|
|
6051
6352
|
key: `step-${i}`,
|
|
6052
|
-
indicator: /* @__PURE__ */
|
|
6353
|
+
indicator: /* @__PURE__ */ import_react46.default.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ import_react46.default.createElement(import_Check.default, null) : step.indicatorContent),
|
|
6053
6354
|
active,
|
|
6054
6355
|
completed,
|
|
6055
6356
|
disabled,
|
|
6056
6357
|
orientation: effectiveStepOrientation
|
|
6057
6358
|
},
|
|
6058
|
-
hasContent && /* @__PURE__ */
|
|
6359
|
+
hasContent && /* @__PURE__ */ import_react46.default.createElement(
|
|
6059
6360
|
Stack_default,
|
|
6060
6361
|
{
|
|
6061
6362
|
sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
|
|
6062
6363
|
},
|
|
6063
|
-
step.label && /* @__PURE__ */
|
|
6064
|
-
step.extraContent && /* @__PURE__ */
|
|
6364
|
+
step.label && /* @__PURE__ */ import_react46.default.createElement(Typography_default, { level: "title-sm" }, step.label),
|
|
6365
|
+
step.extraContent && /* @__PURE__ */ import_react46.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
|
|
6065
6366
|
)
|
|
6066
6367
|
);
|
|
6067
6368
|
})
|
|
@@ -6070,11 +6371,11 @@ function Stepper(props) {
|
|
|
6070
6371
|
Stepper.displayName = "Stepper";
|
|
6071
6372
|
|
|
6072
6373
|
// src/components/Switch/Switch.tsx
|
|
6073
|
-
var
|
|
6074
|
-
var
|
|
6374
|
+
var import_react47 = __toESM(require("react"));
|
|
6375
|
+
var import_joy57 = require("@mui/joy");
|
|
6075
6376
|
var import_framer_motion29 = require("framer-motion");
|
|
6076
|
-
var MotionSwitch = (0, import_framer_motion29.motion)(
|
|
6077
|
-
var StyledThumb = (0,
|
|
6377
|
+
var MotionSwitch = (0, import_framer_motion29.motion)(import_joy57.Switch);
|
|
6378
|
+
var StyledThumb = (0, import_joy57.styled)(import_framer_motion29.motion.div)({
|
|
6078
6379
|
"--Icon-fontSize": "calc(var(--Switch-thumbSize) * 0.75)",
|
|
6079
6380
|
display: "inline-flex",
|
|
6080
6381
|
justifyContent: "center",
|
|
@@ -6087,19 +6388,19 @@ var StyledThumb = (0, import_joy56.styled)(import_framer_motion29.motion.div)({
|
|
|
6087
6388
|
boxShadow: "var(--Switch-thumbShadow)",
|
|
6088
6389
|
color: "var(--Switch-thumbColor)",
|
|
6089
6390
|
backgroundColor: "var(--Switch-thumbBackground)",
|
|
6090
|
-
[`&.${
|
|
6391
|
+
[`&.${import_joy57.switchClasses.checked}`]: {
|
|
6091
6392
|
left: "unset",
|
|
6092
6393
|
right: "var(--Switch-thumbOffset)"
|
|
6093
6394
|
}
|
|
6094
6395
|
});
|
|
6095
|
-
var Thumb = (props) => /* @__PURE__ */
|
|
6396
|
+
var Thumb = (props) => /* @__PURE__ */ import_react47.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
|
|
6096
6397
|
var spring = {
|
|
6097
6398
|
type: "spring",
|
|
6098
6399
|
stiffness: 700,
|
|
6099
6400
|
damping: 30
|
|
6100
6401
|
};
|
|
6101
6402
|
var Switch = (props) => {
|
|
6102
|
-
return /* @__PURE__ */
|
|
6403
|
+
return /* @__PURE__ */ import_react47.default.createElement(
|
|
6103
6404
|
MotionSwitch,
|
|
6104
6405
|
{
|
|
6105
6406
|
...props,
|
|
@@ -6113,32 +6414,32 @@ var Switch = (props) => {
|
|
|
6113
6414
|
Switch.displayName = "Switch";
|
|
6114
6415
|
|
|
6115
6416
|
// src/components/Tabs/Tabs.tsx
|
|
6116
|
-
var
|
|
6117
|
-
var
|
|
6118
|
-
var StyledTabs = (0,
|
|
6417
|
+
var import_react48 = __toESM(require("react"));
|
|
6418
|
+
var import_joy58 = require("@mui/joy");
|
|
6419
|
+
var StyledTabs = (0, import_joy58.styled)(import_joy58.Tabs)(({ theme }) => ({
|
|
6119
6420
|
backgroundColor: theme.palette.background.body
|
|
6120
6421
|
}));
|
|
6121
6422
|
var Tabs = StyledTabs;
|
|
6122
6423
|
Tabs.displayName = "Tabs";
|
|
6123
|
-
var StyledTab = (0,
|
|
6424
|
+
var StyledTab = (0, import_joy58.styled)(import_joy58.Tab)(({ theme }) => ({
|
|
6124
6425
|
gap: theme.spacing(2),
|
|
6125
|
-
[`&:not(.${
|
|
6426
|
+
[`&:not(.${import_joy58.tabClasses.selected})`]: {
|
|
6126
6427
|
color: theme.palette.neutral[700]
|
|
6127
6428
|
},
|
|
6128
|
-
[`&.${
|
|
6429
|
+
[`&.${import_joy58.tabClasses.variantPlain}`]: {
|
|
6129
6430
|
backgroundColor: theme.palette.background.body
|
|
6130
6431
|
}
|
|
6131
6432
|
}));
|
|
6132
|
-
var Tab = (0,
|
|
6133
|
-
return /* @__PURE__ */
|
|
6433
|
+
var Tab = (0, import_react48.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
|
|
6434
|
+
return /* @__PURE__ */ import_react48.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
|
|
6134
6435
|
});
|
|
6135
6436
|
Tab.displayName = "Tab";
|
|
6136
|
-
var TabList =
|
|
6137
|
-
var TabPanel =
|
|
6437
|
+
var TabList = import_joy58.TabList;
|
|
6438
|
+
var TabPanel = import_joy58.TabPanel;
|
|
6138
6439
|
|
|
6139
6440
|
// src/components/ThemeProvider/ThemeProvider.tsx
|
|
6140
|
-
var
|
|
6141
|
-
var
|
|
6441
|
+
var import_react49 = __toESM(require("react"));
|
|
6442
|
+
var import_joy59 = require("@mui/joy");
|
|
6142
6443
|
var colorScheme = {
|
|
6143
6444
|
palette: {
|
|
6144
6445
|
danger: {
|
|
@@ -6191,7 +6492,7 @@ var colorScheme = {
|
|
|
6191
6492
|
}
|
|
6192
6493
|
}
|
|
6193
6494
|
};
|
|
6194
|
-
var defaultTheme = (0,
|
|
6495
|
+
var defaultTheme = (0, import_joy59.extendTheme)({
|
|
6195
6496
|
cssVarPrefix: "ceed",
|
|
6196
6497
|
spacing: 4,
|
|
6197
6498
|
breakpoints: {
|
|
@@ -6243,7 +6544,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
|
|
|
6243
6544
|
},
|
|
6244
6545
|
styleOverrides: {
|
|
6245
6546
|
root: {
|
|
6246
|
-
[`.${
|
|
6547
|
+
[`.${import_joy59.inputClasses.root}`]: {
|
|
6247
6548
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
6248
6549
|
"font-family": "monospace"
|
|
6249
6550
|
}
|
|
@@ -6256,7 +6557,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
|
|
|
6256
6557
|
},
|
|
6257
6558
|
styleOverrides: {
|
|
6258
6559
|
root: {
|
|
6259
|
-
[`.${
|
|
6560
|
+
[`.${import_joy59.inputClasses.root}`]: {
|
|
6260
6561
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
6261
6562
|
"font-family": "monospace"
|
|
6262
6563
|
}
|
|
@@ -6269,7 +6570,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
|
|
|
6269
6570
|
},
|
|
6270
6571
|
styleOverrides: {
|
|
6271
6572
|
root: {
|
|
6272
|
-
[`.${
|
|
6573
|
+
[`.${import_joy59.inputClasses.root}`]: {
|
|
6273
6574
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
6274
6575
|
"font-family": "monospace"
|
|
6275
6576
|
}
|
|
@@ -6282,7 +6583,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
|
|
|
6282
6583
|
},
|
|
6283
6584
|
styleOverrides: {
|
|
6284
6585
|
root: {
|
|
6285
|
-
[`.${
|
|
6586
|
+
[`.${import_joy59.inputClasses.root}`]: {
|
|
6286
6587
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
6287
6588
|
"font-family": "monospace"
|
|
6288
6589
|
}
|
|
@@ -6295,7 +6596,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
|
|
|
6295
6596
|
},
|
|
6296
6597
|
styleOverrides: {
|
|
6297
6598
|
root: {
|
|
6298
|
-
[`.${
|
|
6599
|
+
[`.${import_joy59.inputClasses.root}`]: {
|
|
6299
6600
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
6300
6601
|
"font-family": "monospace"
|
|
6301
6602
|
}
|
|
@@ -6337,7 +6638,7 @@ var defaultTheme = (0, import_joy58.extendTheme)({
|
|
|
6337
6638
|
outline: `${theme.palette.primary[500]} solid 2px`,
|
|
6338
6639
|
outlineOffset: "-2px"
|
|
6339
6640
|
},
|
|
6340
|
-
[`& .${
|
|
6641
|
+
[`& .${import_joy59.checkboxClasses.root}`]: {
|
|
6341
6642
|
verticalAlign: "middle"
|
|
6342
6643
|
}
|
|
6343
6644
|
})
|
|
@@ -6387,13 +6688,13 @@ var defaultTheme = (0, import_joy58.extendTheme)({
|
|
|
6387
6688
|
});
|
|
6388
6689
|
function ThemeProvider(props) {
|
|
6389
6690
|
const theme = props.theme || defaultTheme;
|
|
6390
|
-
return /* @__PURE__ */
|
|
6691
|
+
return /* @__PURE__ */ import_react49.default.createElement(import_react49.default.Fragment, null, /* @__PURE__ */ import_react49.default.createElement(import_joy59.CssVarsProvider, { theme }, /* @__PURE__ */ import_react49.default.createElement(import_joy59.CssBaseline, null), props.children));
|
|
6391
6692
|
}
|
|
6392
6693
|
ThemeProvider.displayName = "ThemeProvider";
|
|
6393
6694
|
|
|
6394
6695
|
// src/components/Uploader/Uploader.tsx
|
|
6395
|
-
var
|
|
6396
|
-
var
|
|
6696
|
+
var import_react50 = __toESM(require("react"));
|
|
6697
|
+
var import_joy60 = require("@mui/joy");
|
|
6397
6698
|
var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
|
|
6398
6699
|
var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
|
|
6399
6700
|
var import_ClearRounded = __toESM(require("@mui/icons-material/ClearRounded"));
|
|
@@ -6415,7 +6716,7 @@ var esmFiles = {
|
|
|
6415
6716
|
"@atlaskit/pragmatic-drag-and-drop/dist/esm/entry-point/prevent-unhandled.js"
|
|
6416
6717
|
)
|
|
6417
6718
|
};
|
|
6418
|
-
var VisuallyHiddenInput = (0,
|
|
6719
|
+
var VisuallyHiddenInput = (0, import_joy60.styled)(import_joy60.Input)({
|
|
6419
6720
|
width: "1px",
|
|
6420
6721
|
height: "1px",
|
|
6421
6722
|
overflow: "hidden",
|
|
@@ -6424,18 +6725,18 @@ var VisuallyHiddenInput = (0, import_joy59.styled)(import_joy59.Input)({
|
|
|
6424
6725
|
clipPath: "inset(50%)",
|
|
6425
6726
|
position: "absolute"
|
|
6426
6727
|
});
|
|
6427
|
-
var PreviewRoot = (0,
|
|
6728
|
+
var PreviewRoot = (0, import_joy60.styled)(Stack_default, {
|
|
6428
6729
|
name: "Uploader",
|
|
6429
6730
|
slot: "PreviewRoot"
|
|
6430
6731
|
})({});
|
|
6431
|
-
var UploadCard = (0,
|
|
6732
|
+
var UploadCard = (0, import_joy60.styled)(Card, {
|
|
6432
6733
|
name: "Uploader",
|
|
6433
6734
|
slot: "UploadCard"
|
|
6434
6735
|
})(({ theme }) => ({
|
|
6435
6736
|
padding: theme.spacing(2.5),
|
|
6436
6737
|
border: `1px solid ${theme.palette.neutral.outlinedBorder}`
|
|
6437
6738
|
}));
|
|
6438
|
-
var UploadFileIcon = (0,
|
|
6739
|
+
var UploadFileIcon = (0, import_joy60.styled)(import_UploadFileRounded.default, {
|
|
6439
6740
|
name: "Uploader",
|
|
6440
6741
|
slot: "UploadFileIcon"
|
|
6441
6742
|
})(({ theme }) => ({
|
|
@@ -6443,7 +6744,7 @@ var UploadFileIcon = (0, import_joy59.styled)(import_UploadFileRounded.default,
|
|
|
6443
6744
|
width: "32px",
|
|
6444
6745
|
height: "32px"
|
|
6445
6746
|
}));
|
|
6446
|
-
var ClearIcon2 = (0,
|
|
6747
|
+
var ClearIcon2 = (0, import_joy60.styled)(import_ClearRounded.default, {
|
|
6447
6748
|
name: "Uploader",
|
|
6448
6749
|
slot: "ClearIcon"
|
|
6449
6750
|
})(({ theme }) => ({
|
|
@@ -6469,7 +6770,7 @@ var getFileSize = (n) => {
|
|
|
6469
6770
|
};
|
|
6470
6771
|
var Preview = (props) => {
|
|
6471
6772
|
const { files, uploaded, onDelete } = props;
|
|
6472
|
-
return /* @__PURE__ */
|
|
6773
|
+
return /* @__PURE__ */ import_react50.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react50.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react50.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react50.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react50.default.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ import_react50.default.createElement(
|
|
6473
6774
|
Typography_default,
|
|
6474
6775
|
{
|
|
6475
6776
|
level: "body-sm",
|
|
@@ -6481,15 +6782,15 @@ var Preview = (props) => {
|
|
|
6481
6782
|
}
|
|
6482
6783
|
},
|
|
6483
6784
|
file.name
|
|
6484
|
-
), !!file.size && /* @__PURE__ */
|
|
6785
|
+
), !!file.size && /* @__PURE__ */ import_react50.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react50.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react50.default.createElement(ClearIcon2, null))))));
|
|
6485
6786
|
};
|
|
6486
|
-
var UploaderRoot = (0,
|
|
6787
|
+
var UploaderRoot = (0, import_joy60.styled)(Stack_default, {
|
|
6487
6788
|
name: "Uploader",
|
|
6488
6789
|
slot: "root"
|
|
6489
6790
|
})(({ theme }) => ({
|
|
6490
6791
|
gap: theme.spacing(2)
|
|
6491
6792
|
}));
|
|
6492
|
-
var FileDropZone = (0,
|
|
6793
|
+
var FileDropZone = (0, import_joy60.styled)(Sheet_default, {
|
|
6493
6794
|
name: "Uploader",
|
|
6494
6795
|
slot: "dropZone",
|
|
6495
6796
|
shouldForwardProp: (prop) => prop !== "error" && prop !== "disabled"
|
|
@@ -6510,7 +6811,7 @@ var FileDropZone = (0, import_joy59.styled)(Sheet_default, {
|
|
|
6510
6811
|
}
|
|
6511
6812
|
})
|
|
6512
6813
|
);
|
|
6513
|
-
var UploaderIcon = (0,
|
|
6814
|
+
var UploaderIcon = (0, import_joy60.styled)(import_CloudUploadRounded.default, {
|
|
6514
6815
|
name: "Uploader",
|
|
6515
6816
|
slot: "iconContainer",
|
|
6516
6817
|
shouldForwardProp: (prop) => prop !== "error" && prop !== "disabled"
|
|
@@ -6524,7 +6825,7 @@ var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
|
|
|
6524
6825
|
}
|
|
6525
6826
|
})
|
|
6526
6827
|
);
|
|
6527
|
-
var Uploader =
|
|
6828
|
+
var Uploader = import_react50.default.memo(
|
|
6528
6829
|
(props) => {
|
|
6529
6830
|
const {
|
|
6530
6831
|
accept,
|
|
@@ -6541,14 +6842,14 @@ var Uploader = import_react49.default.memo(
|
|
|
6541
6842
|
error: errorProp,
|
|
6542
6843
|
helperText: helperTextProp
|
|
6543
6844
|
} = props;
|
|
6544
|
-
const dropZoneRef = (0,
|
|
6545
|
-
const inputRef = (0,
|
|
6546
|
-
const [errorText, setErrorText] = (0,
|
|
6547
|
-
const [files, setFiles] = (0,
|
|
6548
|
-
const [uploaded, setUploaded] = (0,
|
|
6549
|
-
const [previewState, setPreviewState] = (0,
|
|
6550
|
-
const accepts = (0,
|
|
6551
|
-
const parsedAccepts = (0,
|
|
6845
|
+
const dropZoneRef = (0, import_react50.useRef)(null);
|
|
6846
|
+
const inputRef = (0, import_react50.useRef)(null);
|
|
6847
|
+
const [errorText, setErrorText] = (0, import_react50.useState)();
|
|
6848
|
+
const [files, setFiles] = (0, import_react50.useState)([]);
|
|
6849
|
+
const [uploaded, setUploaded] = (0, import_react50.useState)(props.uploaded || []);
|
|
6850
|
+
const [previewState, setPreviewState] = (0, import_react50.useState)("idle");
|
|
6851
|
+
const accepts = (0, import_react50.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
|
|
6852
|
+
const parsedAccepts = (0, import_react50.useMemo)(
|
|
6552
6853
|
() => accepts.flatMap((type) => {
|
|
6553
6854
|
if (["image/*", "video/*", "audio/*"].includes(type)) {
|
|
6554
6855
|
return ALL_EXTENSIONS_BY_TYPE[type];
|
|
@@ -6557,7 +6858,7 @@ var Uploader = import_react49.default.memo(
|
|
|
6557
6858
|
}),
|
|
6558
6859
|
[accepts]
|
|
6559
6860
|
);
|
|
6560
|
-
const helperText = (0,
|
|
6861
|
+
const helperText = (0, import_react50.useMemo)(() => {
|
|
6561
6862
|
if (helperTextProp) {
|
|
6562
6863
|
return helperTextProp;
|
|
6563
6864
|
}
|
|
@@ -6587,12 +6888,12 @@ var Uploader = import_react49.default.memo(
|
|
|
6587
6888
|
}
|
|
6588
6889
|
return helperTexts.join(", ");
|
|
6589
6890
|
}, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
|
|
6590
|
-
const error = (0,
|
|
6591
|
-
const showDropZone = (0,
|
|
6891
|
+
const error = (0, import_react50.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
|
|
6892
|
+
const showDropZone = (0, import_react50.useMemo)(
|
|
6592
6893
|
() => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
|
|
6593
6894
|
[files, maxCount, uploaded]
|
|
6594
6895
|
);
|
|
6595
|
-
const addFiles = (0,
|
|
6896
|
+
const addFiles = (0, import_react50.useCallback)(
|
|
6596
6897
|
(uploads) => {
|
|
6597
6898
|
try {
|
|
6598
6899
|
const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
|
|
@@ -6637,7 +6938,7 @@ var Uploader = import_react49.default.memo(
|
|
|
6637
6938
|
},
|
|
6638
6939
|
[files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
|
|
6639
6940
|
);
|
|
6640
|
-
(0,
|
|
6941
|
+
(0, import_react50.useEffect)(() => {
|
|
6641
6942
|
if (!dropZoneRef.current || disabled) {
|
|
6642
6943
|
return;
|
|
6643
6944
|
}
|
|
@@ -6675,7 +6976,7 @@ var Uploader = import_react49.default.memo(
|
|
|
6675
6976
|
);
|
|
6676
6977
|
return () => cleanup?.();
|
|
6677
6978
|
}, [disabled, addFiles]);
|
|
6678
|
-
(0,
|
|
6979
|
+
(0, import_react50.useEffect)(() => {
|
|
6679
6980
|
if (inputRef.current && minCount) {
|
|
6680
6981
|
if (files.length < minCount) {
|
|
6681
6982
|
inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
|
|
@@ -6684,14 +6985,14 @@ var Uploader = import_react49.default.memo(
|
|
|
6684
6985
|
}
|
|
6685
6986
|
}
|
|
6686
6987
|
}, [inputRef, files, minCount]);
|
|
6687
|
-
const handleFileChanged = (0,
|
|
6988
|
+
const handleFileChanged = (0, import_react50.useCallback)(
|
|
6688
6989
|
(event) => {
|
|
6689
6990
|
const files2 = Array.from(event.target.files || []);
|
|
6690
6991
|
addFiles(files2);
|
|
6691
6992
|
},
|
|
6692
6993
|
[addFiles]
|
|
6693
6994
|
);
|
|
6694
|
-
const handleDeleteFile = (0,
|
|
6995
|
+
const handleDeleteFile = (0, import_react50.useCallback)(
|
|
6695
6996
|
(deletedFile) => {
|
|
6696
6997
|
if (deletedFile instanceof File) {
|
|
6697
6998
|
setFiles((current) => {
|
|
@@ -6711,10 +7012,10 @@ var Uploader = import_react49.default.memo(
|
|
|
6711
7012
|
},
|
|
6712
7013
|
[name, onChange, onDelete]
|
|
6713
7014
|
);
|
|
6714
|
-
const handleUploaderButtonClick = (0,
|
|
7015
|
+
const handleUploaderButtonClick = (0, import_react50.useCallback)(() => {
|
|
6715
7016
|
inputRef.current?.click();
|
|
6716
7017
|
}, []);
|
|
6717
|
-
const uploader = /* @__PURE__ */
|
|
7018
|
+
const uploader = /* @__PURE__ */ import_react50.default.createElement(
|
|
6718
7019
|
FileDropZone,
|
|
6719
7020
|
{
|
|
6720
7021
|
state: previewState,
|
|
@@ -6723,8 +7024,8 @@ var Uploader = import_react49.default.memo(
|
|
|
6723
7024
|
ref: dropZoneRef,
|
|
6724
7025
|
onClick: handleUploaderButtonClick
|
|
6725
7026
|
},
|
|
6726
|
-
/* @__PURE__ */
|
|
6727
|
-
/* @__PURE__ */
|
|
7027
|
+
/* @__PURE__ */ import_react50.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react50.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
|
|
7028
|
+
/* @__PURE__ */ import_react50.default.createElement(
|
|
6728
7029
|
VisuallyHiddenInput,
|
|
6729
7030
|
{
|
|
6730
7031
|
disabled,
|
|
@@ -6747,7 +7048,7 @@ var Uploader = import_react49.default.memo(
|
|
|
6747
7048
|
}
|
|
6748
7049
|
)
|
|
6749
7050
|
);
|
|
6750
|
-
return /* @__PURE__ */
|
|
7051
|
+
return /* @__PURE__ */ import_react50.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react50.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react50.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react50.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react50.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react50.default.createElement("div", null, errorText), /* @__PURE__ */ import_react50.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react50.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
|
|
6751
7052
|
}
|
|
6752
7053
|
);
|
|
6753
7054
|
Uploader.displayName = "Uploader";
|