@ceed/cds 0.0.126 → 0.0.128

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 (100) hide show
  1. package/dist/index.js +1 -6
  2. package/package.json +2 -3
  3. package/dist/components/Accordions/Accordions.js +0 -66
  4. package/dist/components/Accordions/index.js +0 -3
  5. package/dist/components/Autocomplete/Autocomplete.js +0 -251
  6. package/dist/components/Autocomplete/index.js +0 -3
  7. package/dist/components/Box/Box.js +0 -6
  8. package/dist/components/Box/index.js +0 -3
  9. package/dist/components/Breadcrumbs/Breadcrumbs.js +0 -67
  10. package/dist/components/Breadcrumbs/index.js +0 -3
  11. package/dist/components/Button/Button.js +0 -28
  12. package/dist/components/Button/index.js +0 -3
  13. package/dist/components/Calendar/Calendar.js +0 -383
  14. package/dist/components/Calendar/hooks/use-calendar-props.js +0 -80
  15. package/dist/components/Calendar/hooks/use-calendar.js +0 -244
  16. package/dist/components/Calendar/index.js +0 -3
  17. package/dist/components/Calendar/types.js +0 -1
  18. package/dist/components/Calendar/utils/index.js +0 -72
  19. package/dist/components/Card/Card.js +0 -22
  20. package/dist/components/Card/index.js +0 -3
  21. package/dist/components/Checkbox/Checkbox.js +0 -28
  22. package/dist/components/Checkbox/index.js +0 -3
  23. package/dist/components/Chip/Chip.js +0 -6
  24. package/dist/components/Chip/index.js +0 -3
  25. package/dist/components/Container/Container.js +0 -65
  26. package/dist/components/Container/index.js +0 -3
  27. package/dist/components/CurrencyInput/CurrencyInput.js +0 -108
  28. package/dist/components/CurrencyInput/hooks/use-currency-setting.js +0 -165
  29. package/dist/components/CurrencyInput/index.js +0 -3
  30. package/dist/components/DataTable/DataTable.js +0 -437
  31. package/dist/components/DataTable/index.js +0 -3
  32. package/dist/components/DataTable/types.js +0 -1
  33. package/dist/components/DatePicker/DatePicker.js +0 -207
  34. package/dist/components/DatePicker/index.js +0 -3
  35. package/dist/components/DateRangePicker/DateRangePicker.js +0 -209
  36. package/dist/components/DateRangePicker/index.js +0 -3
  37. package/dist/components/DialogActions/DialogActions.js +0 -15
  38. package/dist/components/DialogActions/index.js +0 -3
  39. package/dist/components/DialogContent/DialogContent.js +0 -12
  40. package/dist/components/DialogContent/index.js +0 -3
  41. package/dist/components/DialogFrame/DialogFrame.js +0 -51
  42. package/dist/components/DialogFrame/index.js +0 -3
  43. package/dist/components/DialogTitle/DialogTitle.js +0 -12
  44. package/dist/components/DialogTitle/index.js +0 -3
  45. package/dist/components/Divider/Divider.js +0 -28
  46. package/dist/components/Divider/index.js +0 -3
  47. package/dist/components/Dropdown/Dropdown.js +0 -6
  48. package/dist/components/Dropdown/index.js +0 -3
  49. package/dist/components/FormControl/FormControl.js +0 -17
  50. package/dist/components/FormControl/index.js +0 -3
  51. package/dist/components/FormHelperText/FormHelperText.js +0 -6
  52. package/dist/components/FormHelperText/index.js +0 -3
  53. package/dist/components/FormLabel/FormLabel.js +0 -6
  54. package/dist/components/FormLabel/index.js +0 -3
  55. package/dist/components/Grid/Grid.js +0 -6
  56. package/dist/components/Grid/index.js +0 -3
  57. package/dist/components/IconButton/IconButton.js +0 -28
  58. package/dist/components/IconButton/index.js +0 -3
  59. package/dist/components/Input/Input.js +0 -51
  60. package/dist/components/Input/index.js +0 -3
  61. package/dist/components/InsetDrawer/InsetDrawer.js +0 -45
  62. package/dist/components/InsetDrawer/index.js +0 -3
  63. package/dist/components/Markdown/Markdown.js +0 -59
  64. package/dist/components/Markdown/index.js +0 -3
  65. package/dist/components/Menu/Menu.js +0 -56
  66. package/dist/components/Menu/index.js +0 -3
  67. package/dist/components/Modal/Modal.js +0 -63
  68. package/dist/components/Modal/index.js +0 -3
  69. package/dist/components/MonthPicker/MonthPicker.js +0 -203
  70. package/dist/components/MonthPicker/index.js +0 -3
  71. package/dist/components/MonthRangePicker/MonthRangePicker.js +0 -207
  72. package/dist/components/MonthRangePicker/index.js +0 -3
  73. package/dist/components/Radio/Radio.js +0 -10
  74. package/dist/components/Radio/index.js +0 -3
  75. package/dist/components/RadioList/RadioList.js +0 -38
  76. package/dist/components/RadioList/index.js +0 -3
  77. package/dist/components/Select/Select.js +0 -76
  78. package/dist/components/Select/index.js +0 -3
  79. package/dist/components/Sheet/Sheet.js +0 -6
  80. package/dist/components/Sheet/index.js +0 -3
  81. package/dist/components/Stack/Stack.js +0 -6
  82. package/dist/components/Stack/index.js +0 -3
  83. package/dist/components/Switch/Switch.js +0 -54
  84. package/dist/components/Switch/index.js +0 -3
  85. package/dist/components/Table/Table.js +0 -89
  86. package/dist/components/Table/index.js +0 -3
  87. package/dist/components/Tabs/Tabs.js +0 -18
  88. package/dist/components/Tabs/index.js +0 -3
  89. package/dist/components/Textarea/Textarea.js +0 -50
  90. package/dist/components/Textarea/index.js +0 -3
  91. package/dist/components/ThemeProvider/ThemeProvider.js +0 -159
  92. package/dist/components/ThemeProvider/index.js +0 -3
  93. package/dist/components/Tooltip/Tooltip.js +0 -28
  94. package/dist/components/Tooltip/index.js +0 -3
  95. package/dist/components/Typography/Typography.js +0 -28
  96. package/dist/components/Typography/index.js +0 -3
  97. package/dist/components/Uploader/Uploader.js +0 -353
  98. package/dist/components/Uploader/index.js +0 -3
  99. package/dist/components/index.js +0 -44
  100. package/dist/index.mjs +0 -1
@@ -1,165 +0,0 @@
1
- import IntlMessageFormat from "intl-messageformat";
2
- /**
3
- * @see https://docs.adyen.com/development-resources/currency-codes/
4
- */
5
- var CURRENCY_DECIMAL_MAP = {
6
- AED: 2,
7
- ALL: 2,
8
- AMD: 2,
9
- ANG: 2,
10
- AOA: 2,
11
- ARS: 2,
12
- AUD: 2,
13
- AWG: 2,
14
- AZN: 2,
15
- BAM: 2,
16
- BBD: 2,
17
- BDT: 2,
18
- BGN: 2,
19
- BHD: 3,
20
- BMD: 2,
21
- BND: 2,
22
- BOB: 2,
23
- BRL: 2,
24
- BSD: 2,
25
- BWP: 2,
26
- BYN: 2,
27
- BZD: 2,
28
- CAD: 2,
29
- CHF: 2,
30
- CLP: 2,
31
- CNH: 2,
32
- CNY: 2,
33
- COP: 2,
34
- CRC: 2,
35
- CUP: 2,
36
- CVE: 0,
37
- CZK: 2,
38
- DJF: 0,
39
- DKK: 2,
40
- DOP: 2,
41
- DZD: 2,
42
- EGP: 2,
43
- ETB: 2,
44
- EUR: 2,
45
- FJD: 2,
46
- FKP: 2,
47
- GBP: 2,
48
- GEL: 2,
49
- GHS: 2,
50
- GIP: 2,
51
- GMD: 2,
52
- GNF: 0,
53
- GTQ: 2,
54
- GYD: 2,
55
- HKD: 2,
56
- HNL: 2,
57
- HTG: 2,
58
- HUF: 2,
59
- IDR: 0,
60
- ILS: 2,
61
- INR: 2,
62
- IQD: 3,
63
- ISK: 2,
64
- JMD: 2,
65
- JOD: 3,
66
- JPY: 0,
67
- KES: 2,
68
- KGS: 2,
69
- KHR: 2,
70
- KMF: 0,
71
- KRW: 0,
72
- KWD: 3,
73
- KYD: 2,
74
- KZT: 2,
75
- LAK: 2,
76
- LBP: 2,
77
- LKR: 2,
78
- LYD: 3,
79
- MAD: 2,
80
- MDL: 2,
81
- MKD: 2,
82
- MMK: 2,
83
- MNT: 2,
84
- MOP: 2,
85
- MRU: 2,
86
- MUR: 2,
87
- MVR: 2,
88
- MWK: 2,
89
- MXN: 2,
90
- MYR: 2,
91
- MZN: 2,
92
- NAD: 2,
93
- NGN: 2,
94
- NIO: 2,
95
- NOK: 2,
96
- NPR: 2,
97
- NZD: 2,
98
- OMR: 3,
99
- PAB: 2,
100
- PEN: 2,
101
- PGK: 2,
102
- PHP: 2,
103
- PKR: 2,
104
- PLN: 2,
105
- PYG: 0,
106
- QAR: 2,
107
- RON: 2,
108
- RSD: 2,
109
- RUB: 2,
110
- RWF: 0,
111
- SAR: 2,
112
- SBD: 2,
113
- SCR: 2,
114
- SEK: 2,
115
- SGD: 2,
116
- SHP: 2,
117
- SLE: 2,
118
- SOS: 2,
119
- SRD: 2,
120
- STN: 2,
121
- SVC: 2,
122
- SZL: 2,
123
- THB: 2,
124
- TND: 3,
125
- TOP: 2,
126
- TRY: 2,
127
- TTD: 2,
128
- TWD: 2,
129
- TZS: 2,
130
- UAH: 2,
131
- UGX: 0,
132
- USD: 2,
133
- UYU: 2,
134
- UZS: 2,
135
- VEF: 2,
136
- VND: 0,
137
- VUV: 0,
138
- WST: 2,
139
- XAF: 0,
140
- XCD: 2,
141
- XOF: 0,
142
- XPF: 0,
143
- YER: 2,
144
- ZAR: 2,
145
- ZMW: 2,
146
- };
147
- export var useCurrencySetting = function (currencyCode) {
148
- if (currencyCode === void 0) { currencyCode = "USD"; }
149
- var _a = new IntlMessageFormat("{amount, number, ::currency/".concat(currencyCode, " unit-width-narrow}"))
150
- .format({ amount: 1000 })
151
- .toString()
152
- .replace(/\d/g, "")
153
- .split(""), symbol = _a[0], thousandSeparator = _a[1], decimalSeparator = _a[2], rest = _a.slice(3);
154
- var decimalScale = CURRENCY_DECIMAL_MAP[currencyCode];
155
- return {
156
- symbol: "".concat(symbol, " "),
157
- thousandSeparator: thousandSeparator,
158
- decimalSeparator: decimalSeparator,
159
- placeholder: decimalSeparator
160
- ? "".concat(symbol, " 0").concat(decimalSeparator).concat(Array.from(Array(decimalScale)).map(function () { return 0; }).join(''))
161
- : "".concat(symbol, " 0"),
162
- fixedDecimalScale: !!decimalSeparator,
163
- decimalScale: decimalScale,
164
- };
165
- };
@@ -1,3 +0,0 @@
1
- import { CurrencyInput } from './CurrencyInput';
2
- export * from './CurrencyInput';
3
- export default CurrencyInput;
@@ -1,437 +0,0 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __rest = (this && this.__rest) || function (s, e) {
13
- var t = {};
14
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
- t[p] = s[p];
16
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
- t[p[i]] = s[p[i]];
20
- }
21
- return t;
22
- };
23
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
24
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
25
- if (ar || !(i in from)) {
26
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
27
- ar[i] = from[i];
28
- }
29
- }
30
- return to.concat(ar || Array.prototype.slice.call(from));
31
- };
32
- import React, { useCallback, useEffect, useMemo, useRef, useState, useId, } from "react";
33
- import { styled, LinearProgress, Link } from "@mui/joy";
34
- // @ts-ignore: ESM import 해야만 프레이머에서 정상적으로 동작한다. https://github.com/mui/material-ui/issues/35233
35
- import PreviousIcon from "@mui/icons-material/esm/ChevronLeft.js";
36
- // @ts-ignore: ESM import 해야만 프레이머에서 정상적으로 동작한다. https://github.com/mui/material-ui/issues/35233
37
- import NextIcon from "@mui/icons-material/esm/ChevronRight.js";
38
- import Sheet from "../Sheet";
39
- import { Table } from "../Table";
40
- import Checkbox from "../Checkbox";
41
- import Box from "../Box";
42
- import Stack from "../Stack";
43
- import Typography from "../Typography";
44
- import Button from "../Button";
45
- import IconButton from "../IconButton";
46
- import CurrencyInput from "../CurrencyInput";
47
- import DatePicker from "../DatePicker";
48
- import Input from "../Input";
49
- import Textarea from "../Textarea";
50
- import Autocomplete from "../Autocomplete";
51
- import Select from "../Select";
52
- import Tooltip from "../Tooltip";
53
- function getTextAlign(props) {
54
- return !props.editMode &&
55
- ["number", "date", "currency"].includes(props.type || "")
56
- ? "end"
57
- : "start";
58
- }
59
- var OverlayWrapper = styled("tr", {
60
- name: "DataTable",
61
- slot: "overlayWrapper",
62
- })({
63
- position: "sticky",
64
- top: "calc(var(--unstable_TableCell-height, 32px))",
65
- left: 0,
66
- right: 0,
67
- zIndex: 1,
68
- "& > td": {
69
- height: 0,
70
- padding: 0,
71
- border: "none !important",
72
- },
73
- });
74
- var numberFormatter = function (value) {
75
- return "Intl" in window ? new Intl.NumberFormat().format(value) : value;
76
- };
77
- function TablePagination(props) {
78
- // prop destruction
79
- var _a = props.paginationModel, page = _a.page, pageSize = _a.pageSize, rowCount = props.rowCount, onPageChange = props.onPageChange;
80
- // lib hooks
81
- // state, ref, querystring hooks
82
- // form hooks
83
- // query hooks
84
- // calculated values
85
- var firstPage = 1;
86
- var lastPage = Math.ceil(rowCount / pageSize);
87
- var beforePages = [page - 2, page - 1].filter(function (p) { return p > 1; });
88
- var afterPages = [page + 1, page + 2].filter(function (p) { return p <= lastPage - 1; });
89
- var isMoreAfterPages = lastPage > 1 && page < lastPage - 3;
90
- var isMoreBeforePages = lastPage > 1 && page > 4;
91
- // effects
92
- // handlers
93
- return (React.createElement(Stack, { direction: "row", spacing: 1, sx: {
94
- pt: 1,
95
- pb: 1,
96
- }, justifyContent: "end", alignItems: "center" },
97
- React.createElement(Stack, { direction: "row", spacing: 0.5, alignItems: "center" },
98
- React.createElement(IconButton, { size: "sm", variant: "plain", color: "neutral", onClick: function () { return onPageChange(page - 1); }, disabled: page === firstPage, "aria-label": "Previous page" },
99
- React.createElement(PreviousIcon, null)),
100
- page !== firstPage && (React.createElement(Button, { size: "sm", variant: "plain", color: "neutral", onClick: function () { return onPageChange(firstPage); } }, firstPage)),
101
- isMoreBeforePages && (React.createElement(Button, { size: "sm", variant: "plain", color: "neutral", onClick: function () { return onPageChange(page - 3); } }, "...")),
102
- beforePages.map(function (p) { return (React.createElement(Button, { key: p, size: "sm", variant: "plain", color: "neutral", onClick: function () { return onPageChange(p); } }, p)); }),
103
- React.createElement(Button, { variant: "soft", size: "sm" }, page),
104
- afterPages.map(function (p) { return (React.createElement(Button, { key: p, size: "sm", variant: "plain", color: "neutral", onClick: function () { return onPageChange(p); } }, p)); }),
105
- isMoreAfterPages && (React.createElement(Button, { size: "sm", variant: "plain", color: "neutral", onClick: function () { return onPageChange(page + 3); } }, "...")),
106
- page !== lastPage && (React.createElement(Button, { size: "sm", variant: "plain", color: "neutral", onClick: function () { return onPageChange(lastPage); } }, lastPage)),
107
- React.createElement(IconButton, { size: "sm", variant: "plain", color: "neutral", onClick: function () { return onPageChange(page + 1); }, disabled: page === lastPage, "aria-label": "Next page" },
108
- React.createElement(NextIcon, null)))));
109
- }
110
- var Resizer = function (ref) { return (React.createElement(Box, { sx: {
111
- position: "absolute",
112
- top: 0,
113
- right: 0,
114
- bottom: 0,
115
- width: "4px",
116
- cursor: "col-resize",
117
- }, onMouseDown: function (e) {
118
- var _a;
119
- var initialX = e.clientX;
120
- var initialWidth = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width;
121
- var onMouseMove = function (e) {
122
- if (initialWidth && initialX) {
123
- ref.current.style.width = "".concat(initialWidth + (e.clientX - initialX), "px");
124
- }
125
- };
126
- var onMouseUp = function () {
127
- document.removeEventListener("mousemove", onMouseMove);
128
- document.removeEventListener("mouseup", onMouseUp);
129
- };
130
- document.addEventListener("mousemove", onMouseMove);
131
- document.addEventListener("mouseup", onMouseUp);
132
- } })); };
133
- var Asterisk = styled("span", {
134
- name: "DataTable",
135
- slot: "headCellAsterisk",
136
- })(function (_a) {
137
- var theme = _a.theme;
138
- return ({
139
- color: "var(--ceed-palette-danger-500)",
140
- marginLeft: theme.spacing(0.5),
141
- });
142
- });
143
- var HeadCell = function (props) {
144
- var _a, _b, _c, _d, _e;
145
- var ref = useRef(null);
146
- var style = {
147
- width: props.width,
148
- minWidth: (_a = props.minWidth) !== null && _a !== void 0 ? _a : "50px",
149
- maxWidth: props.maxWidth,
150
- textAlign: getTextAlign(props),
151
- position: props.stickyHeader ? undefined : "relative",
152
- };
153
- var resizer = ((_b = props.resizable) !== null && _b !== void 0 ? _b : true) ? Resizer(ref) : null;
154
- return (React.createElement("th", { id: "".concat(props.tableId, "_header_").concat((_c = props.headerName) !== null && _c !== void 0 ? _c : props.field), "aria-label": (_d = props.headerName) !== null && _d !== void 0 ? _d : props.field, ref: ref, key: props.field, style: style }, (_e = props.headerName) !== null && _e !== void 0 ? _e : props.field,
155
- props.editMode && props.required && React.createElement(Asterisk, null, "*"),
156
- resizer));
157
- };
158
- var BodyCell = function (props) {
159
- var _a;
160
- // prop destruction
161
- var tableId = props.tableId, field = props.field, type = props.type, renderCell = props.renderCell, renderEditCell = props.renderEditCell, isCellEditable = props.isCellEditable, noWrap = props.noWrap, row = props.row, rowId = props.rowId;
162
- // lib hooks
163
- // state, ref, querystring hooks
164
- var _b = useState(row[field]), value = _b[0], setValue = _b[1];
165
- var cellRef = useRef(null);
166
- // form hooks
167
- // query hooks
168
- // calculated values
169
- var params = useMemo(function () { return ({
170
- row: row,
171
- value: value,
172
- id: rowId,
173
- }); }, [row, rowId, value]);
174
- var editMode = useMemo(function () {
175
- return !!(props.editMode &&
176
- (typeof isCellEditable === "function"
177
- ? isCellEditable(params)
178
- : isCellEditable !== null && isCellEditable !== void 0 ? isCellEditable : true));
179
- }, [props.editMode, isCellEditable, params]);
180
- var componentProps = useMemo(function () { return (__assign(__assign({}, (typeof props.componentProps === "function"
181
- ? props.componentProps(params)
182
- : props.componentProps || {})), { size: "sm" })); }, [props, params]);
183
- var editModeComponentProps = useMemo(function () { return (__assign(__assign(__assign({}, componentProps), { onChange: function (e) {
184
- var _a;
185
- var _b, _c;
186
- (_b = componentProps.onChange) === null || _b === void 0 ? void 0 : _b.call(componentProps, e);
187
- setValue(e.target.value);
188
- if (type === "select") {
189
- (_c = props.onCellEditStop) === null || _c === void 0 ? void 0 : _c.call(props, __assign(__assign({}, params), { originalRow: row, row: __assign(__assign({}, params.row), (_a = {}, _a[field] = e.target.value, _a)), value: e.target.value }));
190
- }
191
- }, onFocus: function (e) {
192
- var _a, _b;
193
- (_a = componentProps.onFocus) === null || _a === void 0 ? void 0 : _a.call(componentProps, e);
194
- (_b = props.onCellEditStart) === null || _b === void 0 ? void 0 : _b.call(props, __assign(__assign({}, params), { originalRow: row, row: __assign(__assign({}, params.row), { value: value }), value: value }));
195
- }, onBlur: function (e) {
196
- var _a;
197
- var _b, _c;
198
- (_b = componentProps.onBlur) === null || _b === void 0 ? void 0 : _b.call(componentProps, e);
199
- if (type &&
200
- ["number", "text", "longText", "currency", "date"].includes(type)) {
201
- (_c = props.onCellEditStop) === null || _c === void 0 ? void 0 : _c.call(props, __assign(__assign({}, params), { originalRow: row, row: __assign(__assign({}, params.row), (_a = {}, _a[field] = value, _a)), value: value }));
202
- }
203
- } }), (type === "autocomplete" && {
204
- onChangeComplete: function (e) {
205
- var _a;
206
- var _b, _c, _d;
207
- (_c = (_b = componentProps).onChangeComplete) === null || _c === void 0 ? void 0 : _c.call(_b, e);
208
- setValue(e.target.value);
209
- (_d = props.onCellEditStop) === null || _d === void 0 ? void 0 : _d.call(props, __assign(__assign({}, params), { originalRow: row, row: __assign(__assign({}, params.row), (_a = {}, _a[field] = e.target.value, _a)), value: e.target.value }));
210
- },
211
- }))); }, [params, row, field, value, componentProps, type, props]);
212
- var EditModeComponent = useMemo(function () {
213
- if (renderEditCell) {
214
- return renderEditCell(params);
215
- }
216
- return {
217
- date: (React.createElement(DatePicker, __assign({ value: value }, editModeComponentProps))),
218
- currency: (React.createElement(CurrencyInput, __assign({ value: value }, editModeComponentProps))),
219
- number: (React.createElement(Input, __assign({ value: value, type: "number" }, editModeComponentProps))),
220
- text: (React.createElement(Input, __assign({ value: value, type: "text" }, editModeComponentProps))),
221
- longText: (React.createElement(Textarea, __assign({ value: value }, editModeComponentProps))),
222
- autocomplete: (React.createElement(Autocomplete, __assign({ value: value,
223
- // @ts-expect-error NOTE: editComponentProps로 option이 넘어오면 Override되어야 한다
224
- options: editModeComponentProps.options || [value] }, editModeComponentProps))),
225
- select: (React.createElement(Select, __assign({ value: value,
226
- // @ts-expect-error NOTE: editComponentProps로 option이 넘어오면 Override되어야 한다
227
- options: editModeComponentProps.options || [value] }, editModeComponentProps))),
228
- }[type || "text"];
229
- }, [value, editModeComponentProps, type]);
230
- var ReadModeComponent = useMemo(function () {
231
- if (renderCell) {
232
- return renderCell(params);
233
- }
234
- var innerText = value;
235
- var typedComponent = {
236
- link: React.createElement(props.component || Link, __assign({ children: innerText }, componentProps)),
237
- }[type || "text"];
238
- return typedComponent || innerText;
239
- }, [value, renderCell, params, type, componentProps, props]);
240
- var CellComponent = useMemo(function () {
241
- return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
242
- }, [editMode, EditModeComponent, ReadModeComponent]);
243
- var showTooltip = useMemo(function () { return noWrap && props.type === "longText"; }, [noWrap, props.type]);
244
- // effects
245
- useEffect(function () {
246
- setValue(row[field]);
247
- }, [row, field]);
248
- // handlers
249
- return (React.createElement("td", { ref: cellRef, key: field, headers: "".concat(tableId, "_header_").concat((_a = props.headerName) !== null && _a !== void 0 ? _a : field), style: {
250
- textAlign: getTextAlign({ type: type }),
251
- verticalAlign: editMode ? "top" : "middle",
252
- overflow: "auto",
253
- } }, showTooltip ? (React.createElement(Tooltip, { title: value, placement: "bottom", style: { maxWidth: "100%" }, enterDelay: 1500, enterNextDelay: 1500 },
254
- React.createElement("div", { style: {
255
- overflow: "hidden",
256
- textOverflow: "ellipsis",
257
- } }, CellComponent))) : (CellComponent)));
258
- };
259
- var BodyRow = function (props) {
260
- // prop destruction
261
- var tableId = props.tableId, columns = props.columns, rowId = props.rowId, editMode = props.editMode, noWrap = props.noWrap, row = props.row;
262
- // lib hooks
263
- // state, ref, querystring hooks
264
- // form hooks
265
- // query hooks
266
- // calculated values
267
- // effects
268
- // handlers
269
- return (React.createElement(React.Fragment, null, columns.map(function (column, i) { return (React.createElement(BodyCell, __assign({}, column, { tableId: tableId, key: "".concat(rowId, "_").concat(column.field.toString(), "_").concat(i), row: row, rowId: rowId, editMode: editMode, noWrap: noWrap }))); })));
270
- };
271
- function useDataTableRenderer(_a) {
272
- var rows = _a.rows, columnsProp = _a.columns, totalRowsProp = _a.rowCount, pagination = _a.pagination, paginationMode = _a.paginationMode, paginationModel = _a.paginationModel, onPaginationModelChange = _a.onPaginationModelChange, _b = _a.selectionModel, selectionModel = _b === void 0 ? [] : _b, onSelectionModelChange = _a.onSelectionModelChange, editMode = _a.editMode, _getId = _a.getId, _isTotalSelected = _a.isTotalSelected;
273
- var _c = useState((paginationModel === null || paginationModel === void 0 ? void 0 : paginationModel.page) || 1), page = _c[0], setPage = _c[1];
274
- var pageSize = (paginationModel === null || paginationModel === void 0 ? void 0 : paginationModel.pageSize) || 20;
275
- var getId = useCallback(function (row, index) {
276
- var _a, _b;
277
- return (_b = (_a = _getId === null || _getId === void 0 ? void 0 : _getId(row)) !== null && _a !== void 0 ? _a : row === null || row === void 0 ? void 0 : row.id) !== null && _b !== void 0 ? _b : "".concat((index || 0) + (page - 1) * pageSize);
278
- }, [_getId !== null && _getId !== void 0 ? _getId : page, pageSize]);
279
- var selectedModelSet = useMemo(function () { return new Set(selectionModel); }, [selectionModel]);
280
- var dataInPage = useMemo(function () {
281
- return !pagination || paginationMode === "server"
282
- ? rows
283
- : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize);
284
- }, [rows, page, pageSize, paginationMode, pagination]);
285
- var isAllSelected = useMemo(function () {
286
- return dataInPage.length > 0 &&
287
- dataInPage.every(function (row, i) { return selectedModelSet.has(getId(row, i)); });
288
- }, [dataInPage, selectedModelSet, getId]);
289
- var rowCount = totalRowsProp || rows.length;
290
- var isTotalSelected = useMemo(function () {
291
- return _isTotalSelected !== null && _isTotalSelected !== void 0 ? _isTotalSelected : (rowCount > 0 && selectionModel.length === rowCount);
292
- }, [_isTotalSelected, selectionModel, rowCount]);
293
- var columns = useMemo(function () {
294
- var baseColumns = columnsProp ||
295
- // fallback
296
- Object.keys(rows[0] || {}).map(function (key) { return ({
297
- field: key,
298
- }); });
299
- return baseColumns.map(function (column) {
300
- var _a;
301
- return (__assign(__assign({}, column), { isCellEditable: editMode &&
302
- (typeof column.isCellEditable === "function"
303
- ? column.isCellEditable
304
- : (_a = column.isCellEditable) !== null && _a !== void 0 ? _a : true) }));
305
- });
306
- }, [rows, columnsProp, editMode]);
307
- var handlePageChange = useCallback(function (newPage) {
308
- setPage(newPage);
309
- onPaginationModelChange === null || onPaginationModelChange === void 0 ? void 0 : onPaginationModelChange({ page: newPage, pageSize: pageSize });
310
- }, [onPaginationModelChange, pageSize]);
311
- useEffect(function () {
312
- handlePageChange(1);
313
- }, [rowCount, handlePageChange]);
314
- useEffect(function () {
315
- var lastPage = Math.max(1, Math.ceil(rowCount / pageSize));
316
- if (page > lastPage) {
317
- handlePageChange(lastPage);
318
- }
319
- }, [page, rowCount, pageSize, handlePageChange]);
320
- useEffect(function () {
321
- onSelectionModelChange === null || onSelectionModelChange === void 0 ? void 0 : onSelectionModelChange([]);
322
- }, [page]);
323
- return {
324
- rowCount: rowCount,
325
- page: page,
326
- pageSize: pageSize,
327
- onPaginationModelChange: handlePageChange,
328
- getId: getId,
329
- HeadCell: HeadCell,
330
- BodyRow: BodyRow,
331
- dataInPage: dataInPage,
332
- isAllSelected: isAllSelected, // all rows are selected on this page
333
- isTotalSelected: isTotalSelected,
334
- isSelectedRow: useCallback(function (model) { return selectedModelSet.has(model); }, [selectedModelSet]),
335
- onAllCheckboxChange: useCallback(function () {
336
- onSelectionModelChange === null || onSelectionModelChange === void 0 ? void 0 : onSelectionModelChange(isAllSelected ? [] : dataInPage.map(getId));
337
- }, [isAllSelected, dataInPage, onSelectionModelChange, getId]),
338
- onCheckboxChange: useCallback(function (event, selectedModel) {
339
- if (selectedModelSet.has(selectedModel)) {
340
- var newSelectionModel = selectionModel.filter(function (model) { return model !== selectedModel; });
341
- onSelectionModelChange === null || onSelectionModelChange === void 0 ? void 0 : onSelectionModelChange(newSelectionModel);
342
- }
343
- else {
344
- var newSelectionModel = __spreadArray(__spreadArray([], selectionModel, true), [selectedModel], false);
345
- onSelectionModelChange === null || onSelectionModelChange === void 0 ? void 0 : onSelectionModelChange(newSelectionModel);
346
- }
347
- }, [selectionModel, onSelectionModelChange, selectedModelSet]),
348
- columns: columns,
349
- onTotalSelect: useCallback(function () {
350
- onSelectionModelChange === null || onSelectionModelChange === void 0 ? void 0 : onSelectionModelChange(isTotalSelected ? [] : rows.map(getId), !isTotalSelected);
351
- }, [isTotalSelected, rows, onSelectionModelChange, getId]),
352
- };
353
- }
354
- function DataTable(props) {
355
- // prop destruction
356
- var rows = props.rows, checkboxSelection = props.checkboxSelection, editMode = props.editMode, selectionModel = props.selectionModel, onSelectionModelChange = props.onSelectionModelChange, _ = props.rowCount, // rowCount is used in useDataTableRenderer
357
- __ = props.columns, // columns is used in useDataTableRenderer
358
- ___ = props.onPaginationModelChange, // onPaginationModelChange is used in useDataTableRenderer
359
- pagination = props.pagination, ____ = props.paginationMode, // paginationMode is used in useDataTableRenderer
360
- _____ = props.paginationModel, // paginationModel is used in useDataTableRenderer
361
- loading = props.loading, _a = props.slots, _b = _a === void 0 ? {} : _a, _c = _b.checkbox, RenderCheckbox = _c === void 0 ? Checkbox : _c, Toolbar = _b.toolbar, Footer = _b.footer, _d = _b.loadingOverlay, LoadingOverlay = _d === void 0 ? function () { return (React.createElement(LinearProgress, { value: 8, variant: "plain" })); } : _d, _e = props.slotProps, _f = _e === void 0 ? {} : _e, _g = _f.checkbox, checkboxProps = _g === void 0 ? {} : _g, toolbarProps = _f.toolbar, _h = _f.background, backgroundProps = _h === void 0 ? {} : _h, innerProps = __rest(props, ["rows", "checkboxSelection", "editMode", "selectionModel", "onSelectionModelChange", "rowCount", "columns", "onPaginationModelChange", "pagination", "paginationMode", "paginationModel", "loading", "slots", "slotProps"]);
362
- // lib hooks
363
- var _j = useDataTableRenderer(props), columns = _j.columns, isAllSelected = _j.isAllSelected, isSelectedRow = _j.isSelectedRow, onAllCheckboxChange = _j.onAllCheckboxChange, onCheckboxChange = _j.onCheckboxChange, getId = _j.getId, rowCount = _j.rowCount, page = _j.page, pageSize = _j.pageSize, onPaginationModelChange = _j.onPaginationModelChange, dataInPage = _j.dataInPage, isTotalSelected = _j.isTotalSelected, onTotalSelect = _j.onTotalSelect, HeadCell = _j.HeadCell, BodyRow = _j.BodyRow;
364
- // state, ref, querystring hooks
365
- var tableId = useId();
366
- // form hooks
367
- // query hooks
368
- // calculated values
369
- var paginationModel = useMemo(function () { return ({ page: page, pageSize: pageSize }); }, [page, pageSize]);
370
- // effects
371
- // handlers
372
- return (React.createElement(Box, null,
373
- (!!checkboxSelection || !!Toolbar) && (React.createElement(Stack, { direction: "row", sx: {
374
- pt: 1,
375
- pb: 1,
376
- }, justifyContent: "space-between", alignItems: "center" },
377
- !!checkboxSelection && (React.createElement(Stack, { direction: "row", spacing: 1 },
378
- !isAllSelected && (React.createElement(Typography, { level: "body-xs" },
379
- numberFormatter((selectionModel === null || selectionModel === void 0 ? void 0 : selectionModel.length) || 0),
380
- " items selected")),
381
- isAllSelected && !isTotalSelected && (React.createElement(Stack, { direction: "row", spacing: 1, alignItems: "center" },
382
- React.createElement(Typography, { level: "body-xs" },
383
- "All ",
384
- numberFormatter((selectionModel === null || selectionModel === void 0 ? void 0 : selectionModel.length) || 0),
385
- " items on this page are selected."),
386
- React.createElement(Button, { size: "sm", variant: "plain", onClick: onTotalSelect },
387
- "Select all ",
388
- numberFormatter(rowCount !== null && rowCount !== void 0 ? rowCount : rows.length),
389
- " items"))),
390
- isTotalSelected && (React.createElement(Stack, { direction: "row", spacing: 1, alignItems: "center" },
391
- React.createElement(Typography, { level: "body-xs" },
392
- "All ",
393
- numberFormatter(rowCount !== null && rowCount !== void 0 ? rowCount : rows.length),
394
- " items are selected."),
395
- React.createElement(Button, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))))),
396
- Toolbar && React.createElement(Toolbar, __assign({}, (toolbarProps || {}))))),
397
- React.createElement(Sheet, __assign({ variant: "outlined", sx: {
398
- overflow: "auto",
399
- width: "100%",
400
- boxShadow: "sm",
401
- borderRadius: "sm",
402
- } }, backgroundProps),
403
- React.createElement(Table, __assign({}, innerProps),
404
- React.createElement("thead", null,
405
- React.createElement("tr", null,
406
- checkboxSelection && (React.createElement("th", { style: {
407
- width: "40px",
408
- textAlign: "center",
409
- } },
410
- React.createElement(RenderCheckbox, __assign({ onChange: onAllCheckboxChange, checked: isAllSelected, indeterminate: (selectionModel || []).length > 0 && !isAllSelected }, checkboxProps)))),
411
- columns.map(function (c, i) { return (React.createElement(HeadCell, __assign({ tableId: tableId, key: "".concat(c.field.toString(), "_").concat(i), stickyHeader: props.stickyHeader, editMode: !!c.isCellEditable }, c))); }))),
412
- React.createElement("tbody", null,
413
- React.createElement(OverlayWrapper, null, !!loading && (React.createElement("td", null,
414
- React.createElement(Box, { sx: {
415
- position: "absolute",
416
- top: 0,
417
- left: 0,
418
- right: 0,
419
- } },
420
- React.createElement(LoadingOverlay, null))))),
421
- React.createElement(OverlayWrapper, null),
422
- dataInPage.map(function (row, rowIndex) {
423
- var rowId = getId(row, rowIndex);
424
- return (React.createElement("tr", { key: rowId, role: checkboxSelection ? "checkbox" : undefined, tabIndex: checkboxSelection ? -1 : undefined, onClick: checkboxSelection
425
- ? function (e) { return onCheckboxChange(e, rowId); }
426
- : undefined, "aria-checked": checkboxSelection ? isSelectedRow(rowId) : undefined },
427
- checkboxSelection && (React.createElement("th", { scope: "row", style: {
428
- textAlign: "center",
429
- } },
430
- React.createElement(RenderCheckbox, __assign({ onChange: function (e) { return onCheckboxChange(e, rowId); }, checked: isSelectedRow(rowId) }, checkboxProps)))),
431
- React.createElement(BodyRow, { tableId: tableId, columns: columns, row: row, rowId: rowId, editMode: editMode, noWrap: props.noWrap })));
432
- })),
433
- Footer && React.createElement(Footer, null))),
434
- pageSize < rowCount && pagination && (React.createElement(TablePagination, { paginationModel: paginationModel, rowCount: rowCount, onPageChange: onPaginationModelChange }))));
435
- }
436
- export { DataTable };
437
- DataTable.displayName = "DataTable";
@@ -1,3 +0,0 @@
1
- import { DataTable } from "./DataTable";
2
- export * from "./DataTable";
3
- export default DataTable;
@@ -1 +0,0 @@
1
- export {};