@ceed/cds 0.0.125 → 0.0.127

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.
Files changed (101) hide show
  1. package/dist/components/Accordions/Accordions.js +72 -0
  2. package/dist/components/Accordions/index.js +19 -0
  3. package/dist/components/Autocomplete/Autocomplete.js +280 -0
  4. package/dist/components/Autocomplete/index.js +19 -0
  5. package/dist/components/Box/Box.js +9 -0
  6. package/dist/components/Box/index.js +19 -0
  7. package/dist/components/Breadcrumbs/Breadcrumbs.js +96 -0
  8. package/dist/components/Breadcrumbs/index.js +19 -0
  9. package/dist/components/Button/Button.js +54 -0
  10. package/dist/components/Button/index.js +19 -0
  11. package/dist/components/Calendar/Calendar.js +412 -0
  12. package/dist/components/Calendar/hooks/use-calendar-props.js +84 -0
  13. package/dist/components/Calendar/hooks/use-calendar.js +248 -0
  14. package/dist/components/Calendar/index.js +19 -0
  15. package/dist/components/Calendar/types.js +2 -0
  16. package/dist/components/Calendar/utils/index.js +84 -0
  17. package/dist/components/Card/Card.js +25 -0
  18. package/dist/components/Card/index.js +19 -0
  19. package/dist/components/Checkbox/Checkbox.js +34 -0
  20. package/dist/components/Checkbox/index.js +19 -0
  21. package/dist/components/Chip/Chip.js +9 -0
  22. package/dist/components/Chip/index.js +19 -0
  23. package/dist/components/Container/Container.js +91 -0
  24. package/dist/components/Container/index.js +19 -0
  25. package/dist/components/CurrencyInput/CurrencyInput.js +137 -0
  26. package/dist/components/CurrencyInput/hooks/use-currency-setting.js +172 -0
  27. package/dist/components/CurrencyInput/index.js +19 -0
  28. package/dist/components/DataTable/DataTable.js +466 -0
  29. package/dist/components/DataTable/index.js +19 -0
  30. package/dist/components/DataTable/types.js +2 -0
  31. package/dist/components/DatePicker/DatePicker.js +236 -0
  32. package/dist/components/DatePicker/index.js +19 -0
  33. package/dist/components/DateRangePicker/DateRangePicker.js +238 -0
  34. package/dist/components/DateRangePicker/index.js +19 -0
  35. package/dist/components/DialogActions/DialogActions.js +18 -0
  36. package/dist/components/DialogActions/index.js +19 -0
  37. package/dist/components/DialogContent/DialogContent.js +15 -0
  38. package/dist/components/DialogContent/index.js +19 -0
  39. package/dist/components/DialogFrame/DialogFrame.js +57 -0
  40. package/dist/components/DialogFrame/index.js +19 -0
  41. package/dist/components/DialogTitle/DialogTitle.js +15 -0
  42. package/dist/components/DialogTitle/index.js +19 -0
  43. package/dist/components/Divider/Divider.js +34 -0
  44. package/dist/components/Divider/index.js +19 -0
  45. package/dist/components/Dropdown/Dropdown.js +9 -0
  46. package/dist/components/Dropdown/index.js +19 -0
  47. package/dist/components/FormControl/FormControl.js +20 -0
  48. package/dist/components/FormControl/index.js +19 -0
  49. package/dist/components/FormHelperText/FormHelperText.js +9 -0
  50. package/dist/components/FormHelperText/index.js +19 -0
  51. package/dist/components/FormLabel/FormLabel.js +9 -0
  52. package/dist/components/FormLabel/index.js +19 -0
  53. package/dist/components/Grid/Grid.js +9 -0
  54. package/dist/components/Grid/index.js +19 -0
  55. package/dist/components/IconButton/IconButton.js +34 -0
  56. package/dist/components/IconButton/index.js +19 -0
  57. package/dist/components/Input/Input.js +57 -0
  58. package/dist/components/Input/index.js +19 -0
  59. package/dist/components/InsetDrawer/InsetDrawer.js +51 -0
  60. package/dist/components/InsetDrawer/index.js +19 -0
  61. package/dist/components/Markdown/Markdown.js +65 -0
  62. package/dist/components/Markdown/index.js +19 -0
  63. package/dist/components/Menu/Menu.js +62 -0
  64. package/dist/components/Menu/index.js +19 -0
  65. package/dist/components/Modal/Modal.js +69 -0
  66. package/dist/components/Modal/index.js +19 -0
  67. package/dist/components/MonthPicker/MonthPicker.js +232 -0
  68. package/dist/components/MonthPicker/index.js +19 -0
  69. package/dist/components/MonthRangePicker/MonthRangePicker.js +236 -0
  70. package/dist/components/MonthRangePicker/index.js +19 -0
  71. package/dist/components/Radio/Radio.js +13 -0
  72. package/dist/components/Radio/index.js +19 -0
  73. package/dist/components/RadioList/RadioList.js +44 -0
  74. package/dist/components/RadioList/index.js +19 -0
  75. package/dist/components/Select/Select.js +105 -0
  76. package/dist/components/Select/index.js +19 -0
  77. package/dist/components/Sheet/Sheet.js +9 -0
  78. package/dist/components/Sheet/index.js +19 -0
  79. package/dist/components/Stack/Stack.js +9 -0
  80. package/dist/components/Stack/index.js +19 -0
  81. package/dist/components/Switch/Switch.js +60 -0
  82. package/dist/components/Switch/index.js +19 -0
  83. package/dist/components/Table/Table.js +95 -0
  84. package/dist/components/Table/index.js +19 -0
  85. package/dist/components/Tabs/Tabs.js +21 -0
  86. package/dist/components/Tabs/index.js +19 -0
  87. package/dist/components/Textarea/Textarea.js +56 -0
  88. package/dist/components/Textarea/index.js +19 -0
  89. package/dist/components/ThemeProvider/ThemeProvider.js +165 -0
  90. package/dist/components/ThemeProvider/index.js +19 -0
  91. package/dist/components/Tooltip/Tooltip.js +34 -0
  92. package/dist/components/Tooltip/index.js +19 -0
  93. package/dist/components/Typography/Typography.js +34 -0
  94. package/dist/components/Typography/index.js +19 -0
  95. package/dist/components/Uploader/Uploader.js +378 -0
  96. package/dist/components/Uploader/index.js +19 -0
  97. package/dist/components/index.js +108 -0
  98. package/dist/index.js +169 -1
  99. package/dist/index.mjs +1 -0
  100. package/package.json +5 -6
  101. package/dist/index.cjs +0 -1
@@ -0,0 +1,412 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __rest = (this && this.__rest) || function (s, e) {
37
+ var t = {};
38
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
39
+ t[p] = s[p];
40
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
41
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
42
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
43
+ t[p[i]] = s[p[i]];
44
+ }
45
+ return t;
46
+ };
47
+ var __importDefault = (this && this.__importDefault) || function (mod) {
48
+ return (mod && mod.__esModule) ? mod : { "default": mod };
49
+ };
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.Calendar = void 0;
52
+ var react_1 = __importStar(require("react"));
53
+ var joy_1 = require("@mui/joy");
54
+ // @ts-ignore: ESM import 해야만 프레이머에서 정상적으로 동작한다. https://github.com/mui/material-ui/issues/35233
55
+ var ChevronLeft_js_1 = __importDefault(require("@mui/icons-material/esm/ChevronLeft.js"));
56
+ // @ts-ignore: ESM import 해야만 프레이머에서 정상적으로 동작한다. https://github.com/mui/material-ui/issues/35233
57
+ var ChevronRight_js_1 = __importDefault(require("@mui/icons-material/esm/ChevronRight.js"));
58
+ var framer_motion_1 = require("framer-motion");
59
+ var Button_1 = __importDefault(require("../Button"));
60
+ var Typography_1 = __importDefault(require("../Typography"));
61
+ var utils_1 = require("./utils");
62
+ var IconButton_1 = __importDefault(require("../IconButton"));
63
+ var use_calendar_props_1 = require("./hooks/use-calendar-props");
64
+ var use_calendar_1 = require("./hooks/use-calendar");
65
+ var CalendarRoot = (0, joy_1.styled)("div", {
66
+ name: "Calendar",
67
+ slot: "root",
68
+ })({
69
+ maxWidth: "264px",
70
+ });
71
+ var CalendarHeader = (0, joy_1.styled)("div", {
72
+ name: "Calendar",
73
+ slot: "calendarHeader",
74
+ })(function (_a) {
75
+ var theme = _a.theme;
76
+ return ({
77
+ display: "flex",
78
+ justifyContent: "space-between",
79
+ alignItems: "center",
80
+ padding: theme.spacing(1),
81
+ });
82
+ });
83
+ var CalendarViewContainer = (0, joy_1.styled)("div", {
84
+ name: "Calendar",
85
+ slot: "viewContainer",
86
+ })(function (_a) {
87
+ var theme = _a.theme, calendarType = _a.calendarType;
88
+ return ({
89
+ paddingLeft: theme.spacing(1),
90
+ paddingRight: theme.spacing(1),
91
+ position: "relative",
92
+ overflow: "hidden",
93
+ minHeight: calendarType === 'datePicker' ? "250px" : "unset",
94
+ });
95
+ });
96
+ var CalendarViewTable = (0, joy_1.styled)(framer_motion_1.motion.table, {
97
+ name: "Calendar",
98
+ slot: "viewTable",
99
+ })(function (_a) {
100
+ var theme = _a.theme;
101
+ return ({
102
+ borderSpacing: 0,
103
+ "& td, & th": {
104
+ padding: 0,
105
+ },
106
+ "& th": {
107
+ paddingTop: theme.spacing(1),
108
+ paddingBottom: theme.spacing(1),
109
+ },
110
+ });
111
+ });
112
+ var CalendarWeekHeaderContainer = (0, joy_1.styled)("thead", {
113
+ name: "Calendar",
114
+ slot: "weekHeaderContainer",
115
+ })({});
116
+ var CalendarDayPickerContainer = (0, joy_1.styled)("tbody", {
117
+ name: "Calendar",
118
+ slot: "dayPickerContainer",
119
+ })({});
120
+ var CalendarSwitchViewButton = (0, joy_1.styled)(Button_1.default, {
121
+ name: "Calendar",
122
+ slot: "switchViewButton",
123
+ })(function (_a) {
124
+ var ownerState = _a.ownerState;
125
+ return [
126
+ ownerState.view === "month" && {
127
+ pointerEvents: "none",
128
+ },
129
+ ];
130
+ });
131
+ var CalendarDayCell = (0, joy_1.styled)("td", {
132
+ name: "Calendar",
133
+ slot: "dayCell",
134
+ })(function (_a) {
135
+ var theme = _a.theme;
136
+ return ({
137
+ // aria-current=date === range에 포함된 버튼
138
+ "&[aria-current=date]": {
139
+ position: "relative",
140
+ "& button[aria-current=date]:not([aria-selected=true]):not(:hover):not(:active)": {
141
+ backgroundColor: "rgb(".concat(theme.palette.primary.lightChannel, ")"),
142
+ },
143
+ '& + td[aria-hidden] + td[aria-current="date"]::before': {
144
+ content: '""',
145
+ position: "absolute",
146
+ top: 0,
147
+ left: "-10px",
148
+ bottom: 0,
149
+ width: "16px",
150
+ backgroundColor: "rgb(".concat(theme.palette.primary.lightChannel, ")"),
151
+ zIndex: -1,
152
+ },
153
+ },
154
+ });
155
+ });
156
+ var CalendarMonthCell = (0, joy_1.styled)("td", {
157
+ name: "Calendar",
158
+ slot: "monthCell",
159
+ })(function (_a) {
160
+ var theme = _a.theme;
161
+ return ({
162
+ // aria-current=date === range에 포함된 버튼
163
+ "&[aria-current=date]": {
164
+ position: "relative",
165
+ "& button[aria-current=date]:not([aria-selected=true]):not(:hover):not(:active)": {
166
+ backgroundColor: "rgb(".concat(theme.palette.primary.lightChannel, ")"),
167
+ },
168
+ '& + td[aria-hidden] + td[aria-current="date"]::before': {
169
+ content: '""',
170
+ position: "absolute",
171
+ top: 0,
172
+ left: "-10px",
173
+ bottom: 0,
174
+ width: "16px",
175
+ backgroundColor: "rgb(".concat(theme.palette.primary.lightChannel, ")"),
176
+ zIndex: -1,
177
+ },
178
+ },
179
+ });
180
+ });
181
+ var CalendarMonth = (0, joy_1.styled)(Button_1.default, {
182
+ name: "Calendar",
183
+ slot: "month",
184
+ })(function (_a) {
185
+ var theme = _a.theme, isSelected = _a.isSelected, disabled = _a.disabled;
186
+ return [
187
+ {
188
+ width: "59px",
189
+ // height: "32px",
190
+ textAlign: "center",
191
+ "&:hover": {
192
+ color: theme.palette.primary.softColor,
193
+ backgroundColor: theme.palette.primary.softHoverBg,
194
+ },
195
+ "&:active": {
196
+ color: theme.palette.primary.softColor,
197
+ backgroundColor: theme.palette.primary.softActiveBg,
198
+ },
199
+ },
200
+ isSelected && {
201
+ backgroundColor: theme.palette.primary.solidBg,
202
+ color: theme.palette.primary.solidColor,
203
+ "&:hover": {
204
+ color: theme.palette.primary.solidColor,
205
+ backgroundColor: theme.palette.primary.solidHoverBg,
206
+ },
207
+ "&:active": {
208
+ color: theme.palette.primary.solidColor,
209
+ backgroundColor: theme.palette.primary.solidActiveBg,
210
+ },
211
+ },
212
+ disabled && {
213
+ color: theme.palette.neutral.solidDisabledColor,
214
+ backgroundColor: theme.palette.neutral.solidDisabledBg,
215
+ },
216
+ ];
217
+ });
218
+ var CalendarDay = (0, joy_1.styled)(Button_1.default, {
219
+ name: "Calendar",
220
+ slot: "day",
221
+ })(function (_a) {
222
+ var theme = _a.theme, isToday = _a.isToday, isSelected = _a.isSelected, disabled = _a.disabled;
223
+ return [
224
+ {
225
+ width: "32px",
226
+ height: "32px",
227
+ textAlign: "center",
228
+ "&:hover": {
229
+ color: theme.palette.primary.softColor,
230
+ backgroundColor: theme.palette.primary.softHoverBg,
231
+ },
232
+ "&:active": {
233
+ color: theme.palette.primary.softColor,
234
+ backgroundColor: theme.palette.primary.softActiveBg,
235
+ },
236
+ },
237
+ // NOTE: enabled, disabled 일때만 border 적용
238
+ isToday &&
239
+ !isSelected && {
240
+ "&:not([aria-current=date]):not(:hover)": {
241
+ border: "1px solid ".concat(theme.palette.neutral.outlinedBorder),
242
+ },
243
+ },
244
+ isSelected && {
245
+ backgroundColor: theme.palette.primary.solidBg,
246
+ color: theme.palette.primary.solidColor,
247
+ "&:hover": {
248
+ color: theme.palette.primary.solidColor,
249
+ backgroundColor: theme.palette.primary.solidHoverBg,
250
+ },
251
+ "&:active": {
252
+ color: theme.palette.primary.solidColor,
253
+ backgroundColor: theme.palette.primary.solidActiveBg,
254
+ },
255
+ },
256
+ disabled && {
257
+ color: theme.palette.neutral.solidDisabledColor,
258
+ backgroundColor: theme.palette.neutral.solidDisabledBg,
259
+ },
260
+ ];
261
+ });
262
+ var variants = {
263
+ enter: function (direction) {
264
+ return {
265
+ x: direction > 0 ? 300 : -300,
266
+ opacity: 0,
267
+ };
268
+ },
269
+ center: {
270
+ position: 'relative',
271
+ zIndex: 1,
272
+ x: 0,
273
+ opacity: 1,
274
+ },
275
+ exit: function (direction) {
276
+ return {
277
+ position: 'absolute',
278
+ zIndex: 0,
279
+ x: direction < 0 ? 300 : -300,
280
+ opacity: 0,
281
+ };
282
+ },
283
+ };
284
+ var swipeConfidenceThreshold = 10000;
285
+ var swipePower = function (offset, velocity) {
286
+ return Math.abs(offset) * velocity;
287
+ };
288
+ var PickerDays = function (props) {
289
+ // prop destruction
290
+ var ownerState = props.ownerState;
291
+ // lib hooks
292
+ var _a = (0, use_calendar_1.useCalendar)(ownerState), getPickerDayProps = _a.getPickerDayProps, getDayCellProps = _a.getDayCellProps;
293
+ // state, ref, querystring hooks
294
+ // form hooks
295
+ // query hooks
296
+ // calculated values
297
+ var calendarDates = (0, react_1.useMemo)(function () { return (0, utils_1.getCalendarDates)(ownerState.viewMonth); }, [ownerState.viewMonth]);
298
+ var weekdayNames = (0, react_1.useMemo)(function () { return (0, utils_1.getWeekdayNames)(ownerState.locale || "default"); }, [ownerState.locale]);
299
+ // effects
300
+ // handlers
301
+ return (react_1.default.createElement(CalendarViewContainer, { calendarType: "datePicker" },
302
+ react_1.default.createElement(framer_motion_1.AnimatePresence, { initial: false, custom: ownerState.direction },
303
+ react_1.default.createElement(CalendarViewTable
304
+ // #region framer-motion
305
+ , {
306
+ // #region framer-motion
307
+ key: "".concat(ownerState.viewMonth.toString(), "_").concat(ownerState.direction), custom: ownerState.direction, variants: variants, initial: "enter", animate: "center", exit: "exit", transition: {
308
+ x: { type: "spring", stiffness: 300, damping: 30 },
309
+ opacity: { duration: 0.2 },
310
+ }, drag: "x", dragConstraints: { left: 0, right: 0 }, dragElastic: 1, onDragEnd: function (e, _a) {
311
+ var _b, _c;
312
+ var offset = _a.offset, velocity = _a.velocity;
313
+ var swipe = swipePower(offset.x, velocity.x);
314
+ if (swipe < -swipeConfidenceThreshold) {
315
+ var date = new Date(ownerState.viewMonth || new Date());
316
+ date.setMonth(date.getMonth() + 1);
317
+ (_b = ownerState.onMonthChange) === null || _b === void 0 ? void 0 : _b.call(ownerState, date);
318
+ }
319
+ else if (swipe > swipeConfidenceThreshold) {
320
+ var date = new Date(ownerState.viewMonth || new Date());
321
+ date.setMonth(date.getMonth() - 1);
322
+ (_c = ownerState.onMonthChange) === null || _c === void 0 ? void 0 : _c.call(ownerState, date);
323
+ }
324
+ } },
325
+ react_1.default.createElement(CalendarWeekHeaderContainer, null,
326
+ react_1.default.createElement("tr", null, weekdayNames.map(function (name, i) { return (react_1.default.createElement(react_1.default.Fragment, null,
327
+ react_1.default.createElement("th", null,
328
+ react_1.default.createElement(Typography_1.default, { level: "body-xs", textAlign: "center" }, name)),
329
+ i < 6 && (react_1.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))); }))),
330
+ react_1.default.createElement(CalendarDayPickerContainer, null, calendarDates.map(function (weekDates, rowIndex) { return (react_1.default.createElement(react_1.Fragment, { key: "".concat(ownerState.viewMonth, "_").concat(rowIndex) },
331
+ react_1.default.createElement("tr", null, weekDates.map(function (date, i) {
332
+ return date ? (react_1.default.createElement(react_1.Fragment, { key: i },
333
+ react_1.default.createElement(CalendarDayCell, __assign({}, getDayCellProps(date)),
334
+ react_1.default.createElement(CalendarDay, __assign({ size: "sm", variant: "plain", color: "neutral" }, getPickerDayProps(date)), date)),
335
+ i < 6 && (react_1.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })))) : (react_1.default.createElement(react_1.Fragment, { key: i },
336
+ react_1.default.createElement("td", null),
337
+ i < 6 && (react_1.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))));
338
+ })),
339
+ rowIndex < calendarDates.length - 1 && (react_1.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" },
340
+ react_1.default.createElement("td", { colSpan: 13, style: { height: 4 } }))))); }))))));
341
+ };
342
+ var PickerMonths = function (props) {
343
+ var _a;
344
+ var ownerState = props.ownerState;
345
+ var _b = (0, use_calendar_1.useCalendar)(ownerState), getPickerMonthProps = _b.getPickerMonthProps, getMonthCellProps = _b.getMonthCellProps;
346
+ var chunkedMonths = Array.from({ length: 12 }, function (_, i) { return i; }).reduce(function (acc, month) {
347
+ if (acc[acc.length - 1].length === 4) {
348
+ acc.push([]);
349
+ }
350
+ acc[acc.length - 1].push(month);
351
+ return acc;
352
+ }, [[]]);
353
+ var isMonthRangeSelection = !((_a = ownerState.views) === null || _a === void 0 ? void 0 : _a.find(function (view) { return view === 'day'; })) && ownerState.rangeSelection;
354
+ return (react_1.default.createElement(CalendarViewContainer, { calendarType: isMonthRangeSelection ? 'monthPicker' : 'datePicker' },
355
+ react_1.default.createElement(framer_motion_1.AnimatePresence, { initial: false, custom: ownerState.direction },
356
+ react_1.default.createElement(CalendarViewTable
357
+ // #region framer-motion
358
+ , {
359
+ // #region framer-motion
360
+ key: "".concat(ownerState.viewMonth.getFullYear(), "_").concat(ownerState.direction), custom: ownerState.direction, variants: variants, initial: "enter", animate: "center", exit: "exit", transition: {
361
+ x: { type: "spring", stiffness: 300, damping: 30 },
362
+ opacity: { duration: 0.2 },
363
+ }, drag: "x", dragConstraints: { left: 0, right: 0 }, dragElastic: 1, onDragEnd: function (e, _a) {
364
+ var _b, _c;
365
+ var offset = _a.offset, velocity = _a.velocity;
366
+ var swipe = swipePower(offset.x, velocity.x);
367
+ if (swipe < -swipeConfidenceThreshold) {
368
+ var date = new Date(ownerState.viewMonth || new Date());
369
+ date.setMonth(date.getMonth() + 1);
370
+ (_b = ownerState.onMonthChange) === null || _b === void 0 ? void 0 : _b.call(ownerState, date);
371
+ }
372
+ else if (swipe > swipeConfidenceThreshold) {
373
+ var date = new Date(ownerState.viewMonth || new Date());
374
+ date.setMonth(date.getMonth() - 1);
375
+ (_c = ownerState.onMonthChange) === null || _c === void 0 ? void 0 : _c.call(ownerState, date);
376
+ }
377
+ } },
378
+ react_1.default.createElement("tbody", null, chunkedMonths.map(function (months, i) { return (react_1.default.createElement(react_1.Fragment, { key: i },
379
+ react_1.default.createElement("tr", null, months.map(function (monthIndex, j) { return (react_1.default.createElement(react_1.Fragment, { key: monthIndex },
380
+ react_1.default.createElement(CalendarMonthCell, __assign({}, getMonthCellProps(monthIndex)),
381
+ react_1.default.createElement(CalendarMonth, __assign({ size: "sm", variant: "plain", color: "neutral" }, getPickerMonthProps(monthIndex)), (0, utils_1.getMonthNameFromIndex)(monthIndex, ownerState.locale))),
382
+ j < 3 && (react_1.default.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))); })),
383
+ i < chunkedMonths.length - 1 && (react_1.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" },
384
+ react_1.default.createElement("td", { colSpan: 7, style: { height: 4 } }))))); }))))));
385
+ };
386
+ /**
387
+ * @see https://mui.com/x/api/date-pickers/date-calendar/ 인터페이스 참고
388
+ */
389
+ var Calendar = (0, react_1.forwardRef)(function (inProps, ref) {
390
+ // prop destruction
391
+ var _a = (0, use_calendar_props_1.useCalendarProps)(inProps), props = _a[0], ownerState = _a[1];
392
+ var value = props.value, defaultValue = props.defaultValue, onChange = props.onChange, locale = props.locale, onViewChange = props.onViewChange, onMonthChange = props.onMonthChange, view = props.view, views = props.views, rangeSelection = props.rangeSelection, others = __rest(props, ["value", "defaultValue", "onChange", "locale", "onViewChange", "onMonthChange", "view", "views", "rangeSelection"]);
393
+ // lib hooks
394
+ var _b = (0, use_calendar_1.useCalendar)(ownerState), calendarTitle = _b.calendarTitle, onPrev = _b.onPrev, onNext = _b.onNext;
395
+ // state, ref, querystring hooks
396
+ // form hooks
397
+ // query hooks
398
+ // calculated values
399
+ // effects
400
+ // handlers
401
+ return (react_1.default.createElement(CalendarRoot, __assign({ ref: ref }, others),
402
+ react_1.default.createElement(CalendarHeader, null,
403
+ react_1.default.createElement(IconButton_1.default, { size: "sm", onClick: onPrev },
404
+ react_1.default.createElement(ChevronLeft_js_1.default, null)),
405
+ react_1.default.createElement(CalendarSwitchViewButton, { ownerState: ownerState, variant: "plain", color: "neutral", onClick: onViewChange }, calendarTitle),
406
+ react_1.default.createElement(IconButton_1.default, { size: "sm", onClick: onNext },
407
+ react_1.default.createElement(ChevronRight_js_1.default, null))),
408
+ view === "day" && react_1.default.createElement(PickerDays, { ownerState: ownerState }),
409
+ view === "month" && react_1.default.createElement(PickerMonths, { ownerState: ownerState })));
410
+ });
411
+ exports.Calendar = Calendar;
412
+ Calendar.displayName = "Calendar";
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.useCalendarProps = void 0;
15
+ var react_1 = require("react");
16
+ var joy_1 = require("@mui/joy");
17
+ var resolveView = function (view, views) {
18
+ return views.includes(view) ? view : views[0];
19
+ };
20
+ var useCalendarProps = function (inProps) {
21
+ var _a, _b;
22
+ var _c = (0, react_1.useState)(function () {
23
+ return resolveView(inProps.view || "day", inProps.views || ["day", "month"]);
24
+ }), uncontrolledView = _c[0], setUncontrolledView = _c[1];
25
+ var _d = (0, react_1.useState)(inProps.defaultValue), uncontrolledValue = _d[0], setUncontrolledValue = _d[1];
26
+ var _e = (0, react_1.useState)(function () {
27
+ var _a, _b;
28
+ var today = new Date();
29
+ today.setDate(1);
30
+ today.setHours(0, 0, 0, 0);
31
+ return ((_a = inProps.value) === null || _a === void 0 ? void 0 : _a[0]) || ((_b = inProps.defaultValue) === null || _b === void 0 ? void 0 : _b[0]) || today;
32
+ }), viewMonth = _e[0], setViewMonth = _e[1];
33
+ var _f = (0, react_1.useState)([0, 0]), _g = _f[0], page = _g[0], direction = _g[1], setPage = _f[1];
34
+ var resolvedView = (_a = inProps.view) !== null && _a !== void 0 ? _a : uncontrolledView;
35
+ var paginate = function (newDirection) {
36
+ setPage([page + newDirection, newDirection]);
37
+ };
38
+ var handleViewMonthChange = (0, react_1.useCallback)(function (newMonth) {
39
+ var _a;
40
+ setViewMonth(newMonth);
41
+ if (resolvedView === "month") {
42
+ if (viewMonth.getFullYear() !== newMonth.getFullYear()) {
43
+ paginate(newMonth > viewMonth ? 1 : -1);
44
+ }
45
+ }
46
+ else {
47
+ paginate(newMonth > viewMonth ? 1 : -1);
48
+ }
49
+ (_a = inProps.onMonthChange) === null || _a === void 0 ? void 0 : _a.call(inProps, newMonth);
50
+ }, [inProps.onMonthChange, viewMonth, resolvedView]);
51
+ var props = (0, joy_1.useThemeProps)({
52
+ props: __assign(__assign({ locale: "default", views: ["day", "month"], view: resolvedView, value: (_b = inProps.value) !== null && _b !== void 0 ? _b : uncontrolledValue }, inProps), {
53
+ // overrides
54
+ onChange: inProps.value
55
+ ? // Controlled
56
+ inProps.onChange
57
+ : // Uncontrolled
58
+ function (value) {
59
+ var _a;
60
+ setUncontrolledValue(value);
61
+ (_a = inProps.onChange) === null || _a === void 0 ? void 0 : _a.call(inProps, value);
62
+ }, onMonthChange: handleViewMonthChange, onViewChange: function () {
63
+ var newView = resolvedView === "month" ? "day" : "month";
64
+ var isAllowedView = !inProps.views
65
+ ? true
66
+ : inProps.views.includes(newView);
67
+ if (!isAllowedView || inProps.view === newView)
68
+ return;
69
+ if (inProps.onViewChange) {
70
+ inProps.onViewChange(newView);
71
+ }
72
+ else {
73
+ setUncontrolledView(newView);
74
+ }
75
+ } }),
76
+ name: "Calendar",
77
+ });
78
+ /**
79
+ * For ownerState
80
+ */
81
+ var ownerState = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props), { viewMonth: viewMonth, direction: direction })); }, [props, viewMonth, direction]);
82
+ return [props, ownerState];
83
+ };
84
+ exports.useCalendarProps = useCalendarProps;