es-grid-template 0.0.8 → 0.0.13

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 (114) hide show
  1. package/LICENSE +21 -19
  2. package/es/{CheckboxFilter.js → grid-component/CheckboxFilter.js} +0 -1
  3. package/es/{ColumnsChoose.js → grid-component/ColumnsChoose.js} +1 -1
  4. package/es/grid-component/EditableCell.d.ts +19 -0
  5. package/es/grid-component/EditableCell.js +842 -0
  6. package/es/{FilterSearch.js → grid-component/FilterSearch.js} +1 -1
  7. package/es/grid-component/GridStyle.d.ts +4 -0
  8. package/es/grid-component/GridStyle.js +5 -0
  9. package/es/{InternalTable.d.ts → grid-component/InternalTable.d.ts} +1 -2
  10. package/es/grid-component/InternalTable.js +283 -0
  11. package/es/{LoadingSpinner.js → grid-component/LoadingSpinner.js} +1 -1
  12. package/es/grid-component/Message/Message.d.ts +2 -0
  13. package/es/grid-component/Message/Message.js +16 -0
  14. package/es/grid-component/Message/index.d.ts +1 -0
  15. package/es/grid-component/Message/index.js +1 -0
  16. package/{lib → es/grid-component}/TableGrid.d.ts +2 -2
  17. package/es/grid-component/TableGrid.js +375 -0
  18. package/es/grid-component/async-table-select/index.d.ts +9 -0
  19. package/es/grid-component/async-table-select/index.js +37 -0
  20. package/{lib → es/grid-component}/hooks/constant.d.ts +14 -0
  21. package/es/{hooks → grid-component/hooks}/constant.js +16 -1
  22. package/es/grid-component/hooks/useColumns/index.d.ts +6 -0
  23. package/es/grid-component/hooks/useColumns/index.js +422 -0
  24. package/es/grid-component/hooks/utils.d.ts +35 -0
  25. package/es/{hooks → grid-component/hooks}/utils.js +124 -16
  26. package/es/grid-component/index.d.ts +2 -0
  27. package/es/grid-component/index.js +2 -0
  28. package/es/grid-component/rc-table/Grid.d.ts +8 -0
  29. package/es/grid-component/rc-table/Grid.js +99 -0
  30. package/es/grid-component/rc-table/GridEdit.d.ts +9 -0
  31. package/es/grid-component/rc-table/GridEdit.js +706 -0
  32. package/es/grid-component/type.d.ts +225 -0
  33. package/es/grid-component/useContext.d.ts +27 -0
  34. package/es/grid-component/useContext.js +4 -0
  35. package/es/index.d.ts +1 -2
  36. package/es/index.js +2 -2
  37. package/es/table-grid/styles.scss +551 -0
  38. package/lib/{CheckboxFilter.js → grid-component/CheckboxFilter.js} +0 -1
  39. package/lib/{ColumnsChoose.js → grid-component/ColumnsChoose.js} +1 -1
  40. package/lib/grid-component/EditableCell.d.ts +19 -0
  41. package/lib/grid-component/EditableCell.js +844 -0
  42. package/lib/{FilterSearch.js → grid-component/FilterSearch.js} +1 -1
  43. package/lib/grid-component/GridStyle.d.ts +4 -0
  44. package/lib/grid-component/GridStyle.js +12 -0
  45. package/lib/{InternalTable.d.ts → grid-component/InternalTable.d.ts} +1 -2
  46. package/lib/grid-component/InternalTable.js +292 -0
  47. package/lib/{LoadingSpinner.js → grid-component/LoadingSpinner.js} +1 -1
  48. package/lib/grid-component/Message/Message.d.ts +2 -0
  49. package/lib/grid-component/Message/Message.js +25 -0
  50. package/lib/grid-component/Message/index.d.ts +1 -0
  51. package/lib/grid-component/Message/index.js +16 -0
  52. package/{es → lib/grid-component}/TableGrid.d.ts +2 -2
  53. package/lib/grid-component/TableGrid.js +382 -0
  54. package/lib/grid-component/async-table-select/index.d.ts +9 -0
  55. package/lib/grid-component/async-table-select/index.js +46 -0
  56. package/{es → lib/grid-component}/hooks/constant.d.ts +14 -0
  57. package/lib/{hooks → grid-component/hooks}/constant.js +17 -2
  58. package/lib/grid-component/hooks/useColumns/index.d.ts +6 -0
  59. package/lib/grid-component/hooks/useColumns/index.js +435 -0
  60. package/lib/grid-component/hooks/utils.d.ts +35 -0
  61. package/lib/{hooks → grid-component/hooks}/utils.js +140 -19
  62. package/lib/grid-component/index.d.ts +2 -0
  63. package/lib/grid-component/index.js +9 -0
  64. package/lib/grid-component/rc-table/Grid.d.ts +8 -0
  65. package/lib/grid-component/rc-table/Grid.js +108 -0
  66. package/lib/grid-component/rc-table/GridEdit.d.ts +9 -0
  67. package/lib/grid-component/rc-table/GridEdit.js +715 -0
  68. package/lib/grid-component/type.d.ts +225 -0
  69. package/lib/grid-component/useContext.d.ts +27 -0
  70. package/lib/grid-component/useContext.js +10 -0
  71. package/lib/index.d.ts +1 -2
  72. package/lib/index.js +7 -3
  73. package/lib/table-grid/styles.scss +551 -0
  74. package/package.json +15 -6
  75. package/es/InternalTable.js +0 -185
  76. package/es/TableGrid.js +0 -1055
  77. package/es/hooks/useColumns/index.d.ts +0 -2
  78. package/es/hooks/useColumns/index.js +0 -25
  79. package/es/hooks/utils.d.ts +0 -19
  80. package/es/styles.scss +0 -296
  81. package/es/type.d.ts +0 -100
  82. package/lib/InternalTable.js +0 -194
  83. package/lib/TableGrid.js +0 -1063
  84. package/lib/hooks/useColumns/index.d.ts +0 -2
  85. package/lib/hooks/useColumns/index.js +0 -31
  86. package/lib/hooks/utils.d.ts +0 -19
  87. package/lib/styles.scss +0 -296
  88. package/lib/type.d.ts +0 -100
  89. /package/es/{CheckboxFilter.d.ts → grid-component/CheckboxFilter.d.ts} +0 -0
  90. /package/es/{ColumnsChoose.d.ts → grid-component/ColumnsChoose.d.ts} +0 -0
  91. /package/es/{ContextMenu.d.ts → grid-component/ContextMenu.d.ts} +0 -0
  92. /package/es/{ContextMenu.js → grid-component/ContextMenu.js} +0 -0
  93. /package/es/{FilterSearch.d.ts → grid-component/FilterSearch.d.ts} +0 -0
  94. /package/es/{LoadingSpinner.d.ts → grid-component/LoadingSpinner.d.ts} +0 -0
  95. /package/es/{hooks → grid-component/hooks}/index.d.ts +0 -0
  96. /package/es/{hooks → grid-component/hooks}/index.js +0 -0
  97. /package/es/{hooks → grid-component/hooks}/useIsOverflow.d.ts +0 -0
  98. /package/es/{hooks → grid-component/hooks}/useIsOverflow.js +0 -0
  99. /package/es/{hooks → grid-component/hooks}/useOnClickOutside.d.ts +0 -0
  100. /package/es/{hooks → grid-component/hooks}/useOnClickOutside.js +0 -0
  101. /package/es/{type.js → grid-component/type.js} +0 -0
  102. /package/lib/{CheckboxFilter.d.ts → grid-component/CheckboxFilter.d.ts} +0 -0
  103. /package/lib/{ColumnsChoose.d.ts → grid-component/ColumnsChoose.d.ts} +0 -0
  104. /package/lib/{ContextMenu.d.ts → grid-component/ContextMenu.d.ts} +0 -0
  105. /package/lib/{ContextMenu.js → grid-component/ContextMenu.js} +0 -0
  106. /package/lib/{FilterSearch.d.ts → grid-component/FilterSearch.d.ts} +0 -0
  107. /package/lib/{LoadingSpinner.d.ts → grid-component/LoadingSpinner.d.ts} +0 -0
  108. /package/lib/{hooks → grid-component/hooks}/index.d.ts +0 -0
  109. /package/lib/{hooks → grid-component/hooks}/index.js +0 -0
  110. /package/lib/{hooks → grid-component/hooks}/useIsOverflow.d.ts +0 -0
  111. /package/lib/{hooks → grid-component/hooks}/useIsOverflow.js +0 -0
  112. /package/lib/{hooks → grid-component/hooks}/useOnClickOutside.d.ts +0 -0
  113. /package/lib/{hooks → grid-component/hooks}/useOnClickOutside.js +0 -0
  114. /package/lib/{type.js → grid-component/type.js} +0 -0
package/lib/TableGrid.js DELETED
@@ -1,1063 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _reactResizable = require("react-resizable");
11
- var _antdStyle = require("antd-style");
12
- var _reactNumericComponent = require("react-numeric-component");
13
- var _icons = require("@ant-design/icons");
14
- var _rcMasterUi = require("rc-master-ui");
15
- var _dayjs = _interopRequireDefault(require("dayjs"));
16
- require("dayjs/locale/es");
17
- require("dayjs/locale/vi");
18
- require("./styles.scss");
19
- var _en_US = _interopRequireDefault(require("rc-master-ui/es/date-picker/locale/en_US"));
20
- var _vi_VN = _interopRequireDefault(require("rc-master-ui/es/date-picker/locale/vi_VN"));
21
- var _moment = _interopRequireDefault(require("moment"));
22
- var _CheckboxFilter = _interopRequireDefault(require("./CheckboxFilter"));
23
- var _ContextMenu = _interopRequireDefault(require("./ContextMenu"));
24
- var _classnames = _interopRequireDefault(require("classnames"));
25
- var _hooks = require("./hooks");
26
- var _antd = require("antd");
27
- var _useColumns = require("./hooks/useColumns");
28
- var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customParseFormat"));
29
- var _pagination = _interopRequireDefault(require("rc-master-ui/es/pagination"));
30
- var _space = _interopRequireDefault(require("rc-master-ui/es/space"));
31
- var _becoxyIcons = require("becoxy-icons");
32
- var _LoadingSpinner = _interopRequireDefault(require("./LoadingSpinner"));
33
- var _ColumnsChoose = require("./ColumnsChoose");
34
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
35
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
36
- // import styled from "styled-components";
37
-
38
- _dayjs.default.extend(_customParseFormat.default);
39
- const {
40
- RangePicker
41
- } = _rcMasterUi.DatePicker;
42
- const convertFilters = filters => {
43
- const result = [];
44
- filters.forEach(({
45
- key,
46
- column,
47
- filteredKeys,
48
- operator
49
- }) => {
50
- if (!filteredKeys || filteredKeys.length === 0) return;
51
- if (column?.typeFilter === "DateRange" && filteredKeys.length === 2) {
52
- result.push({
53
- key,
54
- field: column?.dataIndex,
55
- value: filteredKeys[0],
56
- predicate: "and",
57
- operator: "greaterthanorequal"
58
- }, {
59
- key,
60
- field: column?.dataIndex,
61
- value: filteredKeys[1],
62
- predicate: "and",
63
- operator: "lessthanorequal"
64
- });
65
- } else if (column?.typeFilter === 'Checkbox') {
66
- filteredKeys.forEach(value => {
67
- result.push({
68
- key,
69
- field: column?.dataIndex,
70
- value,
71
- predicate: "or",
72
- operator
73
- });
74
- });
75
- } else {
76
- result.push({
77
- key,
78
- field: column?.dataIndex,
79
- value: filteredKeys[0],
80
- predicate: 'and',
81
- operator
82
- });
83
- }
84
- });
85
- return result;
86
- };
87
- const ResizableTitle = props => {
88
- const {
89
- onResize,
90
- width,
91
- ...restProps
92
- } = props;
93
- if (!width) {
94
- return /*#__PURE__*/_react.default.createElement("th", restProps);
95
- }
96
- return (
97
- /*#__PURE__*/
98
- // @ts-ignore
99
- _react.default.createElement(_reactResizable.Resizable, {
100
- width: width,
101
- height: 0,
102
- handle: /*#__PURE__*/_react.default.createElement("span", {
103
- className: "react-resizable-handle",
104
- onClick: e => {
105
- e.stopPropagation();
106
- }
107
- }),
108
- onResize: onResize,
109
- draggableOpts: {
110
- enableUserSelectHack: false
111
- }
112
- }, /*#__PURE__*/_react.default.createElement("th", restProps))
113
- );
114
- };
115
- const useStyle = (0, _antdStyle.createStyles)(({
116
- css
117
- }) => {
118
- // const { antCls } = token
119
- const antCls = 'ui-rc';
120
- return {
121
- customTable: css`
122
- ${antCls}-table {
123
- ${antCls}-table-container {
124
- ${antCls}-table-body,
125
- ${antCls}-table-content {
126
- scrollbar-width: thin;
127
- scrollbar-color: #eaeaea transparent;
128
- scrollbar-gutter: stable;
129
- }
130
- }
131
- }
132
- `
133
- };
134
- });
135
- // type OnChange = NonNullable<TableProps<any>['onChange']>;
136
-
137
- const TableGrid = props => {
138
- const {
139
- columns: defaultColumns,
140
- dataSource,
141
- title,
142
- format,
143
- virtual = true,
144
- t,
145
- lang,
146
- contextMenuOpen,
147
- contextMenuItems: propContextMenuItems,
148
- contextMenuHidden,
149
- contextMenuClick,
150
- recordDoubleClick,
151
- toolbarItems,
152
- showColumnChoose,
153
- onFilter,
154
- selectionSettings,
155
- rowSelection,
156
- rowSelected,
157
- rowKey = 'id',
158
- pagination,
159
- scroll,
160
- onFilterClick,
161
- dataSourceFilter: propDataSourceFilter,
162
- loading,
163
- setColumns,
164
- // dataSourceFilter,
165
- ...rest
166
- } = props;
167
- const {
168
- styles
169
- } = useStyle();
170
- const locale = lang && lang === 'en' ? _en_US.default : _vi_VN.default;
171
- // const locale = vi
172
-
173
- const buddhistLocale = {
174
- ...locale,
175
- lang: {
176
- ...locale.lang
177
- }
178
- };
179
- const clickRef = (0, _react.useRef)(null);
180
- const searchInput = (0, _react.useRef)(null);
181
- const menuRef = (0, _react.useRef)(null);
182
- const viewportWidth = window.innerWidth;
183
- const viewportHeight = window.innerHeight;
184
- const defaultSelected = (0, _react.useMemo)(() => {
185
- return selectionSettings?.defaultSelectedRowKeys ?? [];
186
- }, [selectionSettings?.defaultSelectedRowKeys]);
187
- const [menuVisible, setMenuVisible] = _react.default.useState(false);
188
- const [selectedRowData, setSelectedRowData] = _react.default.useState(null);
189
- const [position, setPosition] = _react.default.useState({
190
- x: 0,
191
- y: 0,
192
- viewportWidth,
193
- viewportHeight
194
- });
195
- const [selectedRowKeys, setSelectedRowKeys] = (0, _react.useState)(defaultSelected);
196
- const [dataSourceFilter, setDataSourceFilter] = (0, _react.useState)(propDataSourceFilter ?? []);
197
- _react.default.useEffect(() => {
198
- setDataSourceFilter(propDataSourceFilter ?? []);
199
- }, [propDataSourceFilter]);
200
- const contextMenuItems = _react.default.useMemo(() => {
201
- if (typeof contextMenuHidden === "function" && propContextMenuItems && selectedRowData) {
202
- const hiddenItems = contextMenuHidden({
203
- rowInfo: {
204
- rowData: selectedRowData
205
- }
206
- });
207
- return propContextMenuItems.filter(item => !hiddenItems.includes(item?.key));
208
- }
209
- if (contextMenuHidden && typeof contextMenuHidden !== 'function' && propContextMenuItems) {
210
- return propContextMenuItems.filter(item => !contextMenuHidden.includes(item?.key));
211
- }
212
- return propContextMenuItems;
213
- }, [propContextMenuItems, contextMenuHidden, selectedRowData]);
214
- (0, _react.useLayoutEffect)(() => {
215
- setMenuVisible(false);
216
- }, []);
217
- const handleSearch = (selectedKeys, confirm) => {
218
- confirm();
219
- };
220
- const renderFilter = (column, selectedKeys, setSelectedKeys, confirm, visible, searchValue, setSearchValue) => {
221
- const type = (0, _hooks.getTypeFilter)(column);
222
- const dateFormat = (0, _hooks.getDatepickerFormat)(column?.typeFilter ?? column?.type, column) ?? 'DD/MM/YYYY';
223
- const dateRangeFormat = (0, _hooks.getDatepickerFormat)(column?.type, column) ?? 'DD/MM/YYYY';
224
- const find = dataSourceFilter?.find(it => it.key === column?.key);
225
- const options = find ? find.data : [];
226
- switch (type) {
227
- case 'Number':
228
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
229
- className: 'mb-1'
230
- }, /*#__PURE__*/_react.default.createElement(_reactNumericComponent.NumericFormat, {
231
- value: selectedKeys[0]
232
- // thousandSeparator={checkThousandSeparator(thousandSeparator, decimalSeparator)}
233
- // decimalSeparator={checkDecimalSeparator(thousandSeparator, decimalSeparator)}
234
- // allowNegative={col.format && col.format.allowNegative === true}
235
- ,
236
- allowNegative: true,
237
- customInput: _rcMasterUi.Input,
238
- className: ' rounded-0 input-element form-control',
239
- onValueChange: values => {
240
- // onChangeValueFilter(type, values.floatValue)
241
- setSelectedKeys(values.floatValue || values.floatValue === 0 ? [values.floatValue] : []);
242
- }
243
- }))));
244
- case 'NumberRange':
245
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
246
- className: 'mb-1 d-flex flex-column gap-1'
247
- }, /*#__PURE__*/_react.default.createElement("div", {
248
- style: {
249
- marginBottom: 8
250
- }
251
- }, /*#__PURE__*/_react.default.createElement(_reactNumericComponent.NumericFormat, {
252
- value: selectedKeys[0]
253
- // thousandSeparator={checkThousandSeparator(thousandSeparator, decimalSeparator)}
254
- // decimalSeparator={checkDecimalSeparator(thousandSeparator, decimalSeparator)}
255
- ,
256
- allowNegative: true,
257
- customInput: _rcMasterUi.Input,
258
- className: ' rounded-0 input-element form-control'
259
- // onValueChange={(values: any) => {
260
- // onChangeValueFilter(type, values.floatValue, 'min')
261
- // }}
262
- ,
263
- placeholder: 'Min',
264
- autoFocus: true
265
- })), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactNumericComponent.NumericFormat, {
266
- value: selectedKeys[1]
267
- // thousandSeparator={checkThousandSeparator(thousandSeparator, decimalSeparator)}
268
- // decimalSeparator={checkDecimalSeparator(thousandSeparator, decimalSeparator)}
269
- ,
270
- allowNegative: true,
271
- customInput: _rcMasterUi.Input,
272
- className: ' rounded-0 input-element form-control',
273
- onValueChange: () => {
274
- // onChangeValueFilter(type, values.floatValue, 'max')
275
- },
276
- placeholder: 'Max'
277
- })))));
278
- case 'Date':
279
- const dateValue = selectedKeys[0] ? (0, _hooks.convertDateToDayjs)(new Date(selectedKeys[0]), dateFormat) : null;
280
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
281
- className: 'mb-1'
282
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.DatePicker, {
283
- format: {
284
- format: dateFormat,
285
- type: 'mask'
286
- },
287
- locale: buddhistLocale,
288
- style: {
289
- width: '100%',
290
- height: '100%'
291
- },
292
- value: dateValue,
293
- defaultValue: dateValue,
294
- placeholder: column?.placeholder,
295
- onChange: (date, dateString) => {
296
- const newDateValue = dateString ? (0, _moment.default)((0, _hooks.convertDayjsToDate)(dateString, dateFormat)).format() : null;
297
- setSelectedKeys(newDateValue ? [newDateValue] : []);
298
- }
299
- }))));
300
- case 'DateRange':
301
- const dateRangeValue = [selectedKeys[0] ? (0, _hooks.convertDateToDayjs)(new Date(selectedKeys[0]), dateRangeFormat) : '', selectedKeys[1] ? (0, _hooks.convertDateToDayjs)(new Date(selectedKeys[1]), dateRangeFormat) : ''];
302
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
303
- className: 'mb-1'
304
- }, /*#__PURE__*/_react.default.createElement(RangePicker, {
305
- format: {
306
- format: dateRangeFormat,
307
- type: 'mask'
308
- }
309
- // defaultValue={dateRangeValue}
310
- ,
311
- value: dateRangeValue,
312
- placeholder: ['Ngày bắt đầu', 'Ngày kết thúc'],
313
- popupStyle: {
314
- zIndex: 9999
315
- },
316
- onChange: (value, dateString) => {
317
- const newDateRangeValue = dateString[0] ? [dateString[0] ? (0, _moment.default)((0, _hooks.convertDayjsToDate)(dateString[0], dateRangeFormat)).format() : '', dateString[1] ? (0, _moment.default)((0, _hooks.convertDayjsToDate)(dateString[1], dateRangeFormat)).format() : ''] : '';
318
-
319
- // setSelectedKeys(newDateValue ? [newDateValue] : [])
320
- setSelectedKeys(newDateRangeValue);
321
- },
322
- style: {
323
- width: '100%'
324
- }
325
- // popupClassName={'adv-popup-container'}
326
- // getPopupContainer={() => menuRef.current}
327
- }))));
328
- case 'Week':
329
- const weekValue = !(0, _hooks.isEmpty)(selectedKeys[0]) ? (0, _dayjs.default)(selectedKeys[0], dateFormat) : null;
330
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
331
- className: 'mb-1'
332
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.DatePicker, {
333
- format: {
334
- format: dateFormat,
335
- type: 'mask'
336
- },
337
- picker: 'week',
338
- locale: buddhistLocale,
339
- style: {
340
- width: '100%',
341
- height: '100%'
342
- },
343
- value: weekValue,
344
- defaultValue: weekValue,
345
- placeholder: column?.placeholder,
346
- onChange: (date, dateString) => {
347
- const newDateValue = dateString ?? null;
348
- setSelectedKeys(newDateValue ? [newDateValue] : []);
349
- }
350
- }))));
351
- case 'Month':
352
- const monthValue = !(0, _hooks.isEmpty)(selectedKeys[0]) ? (0, _dayjs.default)(selectedKeys[0], dateFormat) : null;
353
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
354
- className: 'mb-1'
355
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.DatePicker, {
356
- format: {
357
- format: dateFormat,
358
- type: 'mask'
359
- },
360
- picker: 'month',
361
- locale: buddhistLocale,
362
- style: {
363
- width: '100%',
364
- height: '100%'
365
- },
366
- value: monthValue,
367
- defaultValue: monthValue,
368
- placeholder: column?.placeholder,
369
- onChange: (date, dateString) => {
370
- const newDateValue = dateString ?? null;
371
- setSelectedKeys(newDateValue ? [newDateValue] : []);
372
- }
373
- })));
374
-
375
- // case 'Quarter':
376
- //
377
- // // const monthValue = selectedKeys[0] ? convertDateToDayjs(new Date(selectedKeys[0]), dateFormat) : null
378
- //
379
- // const pickerFormat = getDatepickerFormat(getEditType(col) as IEditType, col)
380
- // const pickerValue = !isEmpty(selectedKeys[0]) ? dayjs(selectedKeys[0], pickerFormat) : null
381
- //
382
- // return (
383
- // <Fragment>
384
- // <div>
385
- //
386
- //
387
- // <div className={'mb-1'}>
388
- //
389
- // <DatePicker
390
- // format={{
391
- // format: dateFormat,
392
- // type: 'mask'
393
- // }}
394
- // locale={buddhistLocale}
395
- // style={{width: '100%', height: '100%'}}
396
- // value={pickerValue}
397
- // defaultValue={pickerValue}
398
- // placeholder={column.placeholder}
399
- // onChange={(date, dateString) => {
400
- // const newDateValue = dateString ? moment(convertDayjsToDate(dateString as string, dateFormat)).format() : null
401
- // setSelectedKeys(newDateValue ? [newDateValue] : [])
402
- //
403
- // }}
404
- //
405
- // />
406
- // </div>
407
- //
408
- //
409
- // </div>
410
- // </Fragment>
411
- // )
412
- //
413
- // case 'Year':
414
- //
415
- // // const monthValue = selectedKeys[0] ? convertDateToDayjs(new Date(selectedKeys[0]), dateFormat) : null
416
- //
417
- // const pickerFormat = getDatepickerFormat(getEditType(col) as IEditType, col)
418
- // const pickerValue = !isEmpty(selectedKeys[0]) ? dayjs(selectedKeys[0], pickerFormat) : null
419
- //
420
- // return (
421
- // <Fragment>
422
- // <div>
423
- //
424
- //
425
- // <div className={'mb-1'}>
426
- //
427
- // <DatePicker
428
- // format={{
429
- // format: dateFormat,
430
- // type: 'mask'
431
- // }}
432
- // locale={buddhistLocale}
433
- // style={{width: '100%', height: '100%'}}
434
- // value={pickerValue}
435
- // defaultValue={pickerValue}
436
- // placeholder={column.placeholder}
437
- // onChange={(date, dateString) => {
438
- // const newDateValue = dateString ? moment(convertDayjsToDate(dateString as string, dateFormat)).format() : null
439
- // setSelectedKeys(newDateValue ? [newDateValue] : [])
440
- //
441
- // }}
442
- //
443
- // />
444
- // </div>
445
- //
446
- //
447
- // </div>
448
- // </Fragment>
449
- // )
450
-
451
- case 'Dropdown':
452
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
453
- className: 'mb-1'
454
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Select
455
- // options={translateOption(numberOperator, t)}
456
- , {
457
- options: options,
458
- style: {
459
- width: '100%',
460
- marginBottom: 8
461
- },
462
- value: selectedKeys[0],
463
- onChange: val => {
464
- // setOperatorKey(val)
465
- setSelectedKeys(val ? [val] : []);
466
- },
467
- showSearch: true,
468
- allowClear: true
469
- }))));
470
-
471
- // case 'DropTree':
472
- // return (
473
- // <Fragment>
474
- // <div>
475
- // {col.filterOption && col.filterOption.showOperator === false ? (
476
- // ''
477
- // ) : (
478
- // <div className={'mb-1'}>
479
- // <Select
480
- // options={translateOption(numberOperator, t)}
481
- // // options={t ? numberOperator.map((it: any) => ({...it, label: t(it.label)})) : numberOperator}
482
- //
483
- // classNamePrefix='select'
484
- // className={`react-select`}
485
- // value={translateOption(numberOperator, t).find(
486
- // ope => ope.value === (operator ? operator : getDefaultOperator(col))
487
- // )}
488
- // onChange={(val: any) => {
489
- // setCurrentFilter((prevState: any) => ({ ...prevState, operator: val.value }))
490
- // }}
491
- // />
492
- // </div>
493
- // )}
494
- //
495
- // <div className={'mb-1'}>
496
- // <Input
497
- // placeholder={'Nhập giá trị'}
498
- // value={value}
499
- // onChange={(val: any) => {
500
- // onChangeValueFilter(type, val.value)
501
- // }}
502
- // />
503
- // </div>
504
- //
505
- // <div className={'d-flex justify-content-end'}>
506
- // <Button color='flat-primary' className={'me-1 be-button'} onClick={(e: any) => handleOnFilter(e)}>
507
- // {t ? t('Filter') : 'Filter'}
508
- // </Button>
509
- // <Button color='flat-secondary' className={'be-button'} onClick={(e: any) => handleClearFilter(e)}>
510
- // {t ? t('Delete') : 'Delete'}
511
- // </Button>
512
- // </div>
513
- // </div>
514
- // </Fragment>
515
- // )
516
- //
517
- case 'Checkbox':
518
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
519
- className: 'mb-1'
520
- }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_CheckboxFilter.default
521
- // column={column}
522
- , {
523
- locale: {
524
- filterTitle: 'Chọn tất cả',
525
- filterCheckall: 'Chọn tất cả'
526
- },
527
- selectedKeys: selectedKeys,
528
- onSelect: setSelectedKeys
529
- // options={
530
- // [
531
- // {
532
- // text: 'Joe',
533
- // value: 'Joe',
534
- // },
535
- // {
536
- // text: 'Jim',
537
- // value: 'Jim',
538
- // },
539
- // {
540
- // text: 'Green',
541
- // value: 'Green',
542
- // },
543
- // {
544
- // text: 'Black',
545
- // value: 'Black',
546
- // },
547
- // {
548
- // text: 'Category 1',
549
- // value: 'Category 1'
550
- // },
551
- // {
552
- // text: 'Yellow',
553
- // value: 'Yellow',
554
- // },
555
- // {
556
- // text: 'Pink',
557
- // value: 'Pink',
558
- // },
559
- // {
560
- // text: 'Category 2',
561
- // value: 'Category 666'
562
- // },
563
- // {
564
- // text: 'Category 2',
565
- // value: 'Category 555'
566
- // },
567
- // {
568
- // text: 'Category 2',
569
- // value: 'Category 55'
570
- // },
571
- // {
572
- // text: 'Category 2',
573
- // value: 'Category 44'
574
- // },
575
- // {
576
- // text: 'Category 2',
577
- // value: 'Category 33'
578
- // },
579
- // {
580
- // text: 'Category 2',
581
- // value: 'Category 22'
582
- // },
583
- // {
584
- // text: 'Category 2',
585
- // value: 'Category 11'
586
- // }
587
- // // {
588
- // // text: 'Submenu',
589
- // // value: 'Submenu',
590
- // // children: [
591
- // // {
592
- // // text: 'Green',
593
- // // value: 'Green',
594
- // // },
595
- // // {
596
- // // text: 'Black',
597
- // // value: 'Black',
598
- // // },
599
- // // ],
600
- // // },
601
- // ]
602
- // }
603
- ,
604
-
605
- options: options,
606
- filterMultiple: true,
607
- open: visible,
608
- searchValue: searchValue,
609
- setSearchValue: setSearchValue
610
- })))));
611
- case 'Text':
612
- default:
613
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
614
- className: 'mb-1'
615
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Input, {
616
- ref: searchInput,
617
- placeholder: `Search ${column?.dataIndex}`,
618
- value: selectedKeys[0],
619
- onChange: e => setSelectedKeys(e.target.value ? [e.target.value] : []),
620
- onPressEnter: () => handleSearch(selectedKeys, confirm),
621
- allowClear: true
622
- }))));
623
- }
624
- };
625
- const onFilterCallback = (key, data) => {
626
- // console.log(key, data)
627
-
628
- const find = dataSourceFilter.find(it => it.key === key);
629
- if (find) {
630
- const newData = (0, _hooks.updateArrayByKey)(dataSourceFilter, {
631
- key,
632
- data
633
- }, 'key');
634
- setDataSourceFilter(newData);
635
- } else {
636
- const newData = [...dataSourceFilter, {
637
- key,
638
- data
639
- }];
640
- setDataSourceFilter(newData);
641
- }
642
-
643
- // setDataSourceFilter([{key, data}])
644
- };
645
-
646
- // eslint-disable-next-line react-hooks/exhaustive-deps
647
- const getColumnSearchProps = column => ({
648
- filterDropdown: ({
649
- setSelectedKeys,
650
- selectedKeys,
651
- confirm,
652
- close,
653
- setOperatorKey,
654
- operatorKey,
655
- visible,
656
- searchValue,
657
- setSearchValue
658
- }) => {
659
- return /*#__PURE__*/_react.default.createElement("div", {
660
- style: {
661
- padding: 8,
662
- minWidth: 275
663
- },
664
- onKeyDown: e => e.stopPropagation()
665
- }, (column?.showOperator !== false || column?.typeFilter !== 'DateRange' && column?.typeFilter !== 'NumberRange') && /*#__PURE__*/_react.default.createElement("div", {
666
- className: 'mb-1'
667
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Select, {
668
- options: (0, _hooks.translateOption)(_hooks.numberOperator, t),
669
- style: {
670
- width: '100%',
671
- marginBottom: 8
672
- },
673
- value: operatorKey,
674
- onChange: val => {
675
- setOperatorKey(val);
676
- }
677
- })), /*#__PURE__*/_react.default.createElement("div", {
678
- style: {
679
- marginBottom: 8
680
- }
681
- }, renderFilter(column, selectedKeys, setSelectedKeys, confirm, visible, searchValue, setSearchValue)), /*#__PURE__*/_react.default.createElement(_space.default, {
682
- style: {
683
- justifyContent: 'end',
684
- width: '100%'
685
- }
686
- }, /*#__PURE__*/_react.default.createElement(_antd.Button, {
687
- type: "primary",
688
- onClick: () => {
689
- confirm({
690
- closeDropdown: false
691
- });
692
- handleSearch(selectedKeys, confirm);
693
- },
694
- icon: /*#__PURE__*/_react.default.createElement(_icons.SearchOutlined, null),
695
- size: "small",
696
- style: {
697
- width: 90
698
- }
699
- }, "Filter"), /*#__PURE__*/_react.default.createElement(_antd.Button, {
700
- type: "link",
701
- size: "small",
702
- onClick: () => {
703
- close();
704
- }
705
- }, "close")));
706
- },
707
- filterIcon: filtered => /*#__PURE__*/_react.default.createElement(_becoxyIcons.FilterFill, {
708
- fontSize: 12,
709
- onClick: () => {
710
- console.log('onFilterClick', column);
711
- onFilterClick?.(column, onFilterCallback);
712
- },
713
- style: {
714
- color: filtered ? '#283046' : undefined
715
- }
716
- }),
717
- filterDropdownProps: {
718
- onOpenChange(open) {
719
- if (open) {
720
- setTimeout(() => searchInput.current?.select(), 100);
721
- }
722
- }
723
- }
724
- });
725
-
726
- // eslint-disable-next-line react-hooks/exhaustive-deps
727
- const renderContent = column => value => {
728
- switch (column?.type) {
729
- case 'number':
730
- const thousandSeparator = column?.format?.thousandSeparator ? column?.format?.thousandSeparator : format?.thousandSeparator;
731
- const decimalSeparator = column?.format?.decimalSeparator ? column?.format?.decimalSeparator : format?.decimalSeparator;
732
- const dec = column?.format?.decimalScale || column?.format?.decimalScale === 0 ? column?.format?.decimalScale : format?.decimalScale;
733
- const content = !(0, _hooks.isEmpty)(value) ? dec || dec === 0 ? parseFloat(Number(value).toFixed(dec)).toString() : value.toString() : '0';
734
- const numericFormatProps = {
735
- thousandSeparator: (0, _hooks.checkThousandSeparator)(thousandSeparator, decimalSeparator),
736
- decimalSeparator: (0, _hooks.checkDecimalSeparator)(thousandSeparator, decimalSeparator),
737
- allowNegative: (column?.format?.allowNegative ? column?.format?.allowNegative : format?.allowNegative) ?? true,
738
- prefix: column?.format?.prefix ? column?.format?.prefix : format?.prefix,
739
- suffix: column?.format?.suffix ? column?.format?.suffix : format?.suffix,
740
- decimalScale: column?.format?.decimalScale || column?.format?.decimalScale === 0 ? column?.format?.decimalScale : format?.decimalScale,
741
- fixedDecimalScale: (column?.format?.fixedDecimalScale ? column?.format?.fixedDecimalScale : format?.fixedDecimalScale) ?? false
742
- };
743
- return !(0, _hooks.isEmpty)(content) ? (0, _reactNumericComponent.numericFormatter)(content, numericFormatProps) : '';
744
- case 'date':
745
- return value ? (0, _dayjs.default)(value).format(column?.format?.dateFormat ?? format?.dateFormat ?? 'DD/MM/YYYY') : '';
746
- case 'time':
747
- return value ? value : '';
748
- case 'year':
749
- const year = value ? (0, _moment.default)(value).format('yyyy') : '';
750
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, year);
751
- case 'datetime':
752
- return value ? (0, _moment.default)(value).format(column?.format?.datetimeFormat ?? format?.datetimeFormat ?? 'DD/MM/YYYY HH:mm') : '';
753
- case 'boolean':
754
- return value ? 'true' : 'false';
755
- case 'color':
756
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, (0, _hooks.isColor)(value) ? /*#__PURE__*/_react.default.createElement("div", {
757
- className: 'w-100 h-100',
758
- style: {
759
- backgroundColor: value,
760
- border: '1px solid #f0f0f0'
761
- }
762
- }) : '');
763
- case 'checkbox':
764
- return /*#__PURE__*/_react.default.createElement(_rcMasterUi.Input, {
765
- checked: !!content,
766
- readOnly: true,
767
- type: "checkbox"
768
- });
769
- case 'file':
770
- const nameFile = typeof value === 'object' && !Array.isArray(value) ? value.name : Array.isArray(value) ? value.map(it => typeof it === 'object' ? it.name : it).filter(Boolean).join(", ") : '';
771
- return value ? nameFile : '';
772
- default:
773
- if (Array.isArray(value)) {
774
- return value.join(', ');
775
- }
776
- return value;
777
- }
778
- };
779
- const addFilter = _react.default.useCallback(cols => {
780
- return cols.map(column => {
781
- // @ts-ignore
782
- if (!column?.dataIndex && !column?.key) {
783
- return column;
784
- }
785
- // @ts-ignore
786
- if (column?.children && column?.children.length > 0) {
787
- return {
788
- ...column,
789
- // @ts-ignore
790
- children: addFilter(column?.children) // Xử lý đệ quy cho cấp con
791
- };
792
- }
793
- // @ts-ignore
794
- if (column?.dataIndex === 'index' || column?.allowFiltering === false) {
795
- return {
796
- ...column
797
- };
798
- }
799
- return {
800
- ...getColumnSearchProps(column),
801
- onFilter: (value, record) => {
802
- // @ts-ignore
803
- return record[column?.dataIndex];
804
- },
805
- render: renderContent(column),
806
- ...column,
807
- ellipsis: column?.ellipsis !== false,
808
- sorter: () => {
809
- // console.log('a, b, sortOrder', a, b, sortOrder)
810
- }
811
- };
812
- });
813
- }, [getColumnSearchProps, renderContent]);
814
- const tmpColumns = (0, _react.useMemo)(() => {
815
- // @ts-ignore
816
- return addFilter(defaultColumns ?? []);
817
- }, [addFilter, defaultColumns]);
818
- const onContextMenu = data => event => {
819
- event.preventDefault(); // Ngăn chặn menu mặc định của trình duyệt
820
-
821
- setSelectedRowData(data);
822
- contextMenuOpen?.({
823
- rowInfo: {
824
- rowData: data
825
- },
826
- event
827
- });
828
- setMenuVisible(true);
829
-
830
- // Đợi DOM cập nhật và lấy kích thước menu
831
- setTimeout(() => {
832
- const menuElement = menuRef.current; // Lấy menu từ DOM
833
- const menuWidth = menuElement?.offsetWidth || 200; // Mặc định 200px nếu chưa render
834
- const menuHeight = menuElement?.offsetHeight; // Mặc định 450px nếu chưa render
835
-
836
- // Điều chỉnh vị trí menu
837
- let x = event.clientX;
838
- let y = event.clientY;
839
- if (x + menuWidth > viewportWidth) {
840
- x = x - menuWidth - 10; // Cách cạnh phải 10px
841
- }
842
- if (y + menuHeight > viewportHeight) {
843
- if (y < menuHeight) {
844
- y = 10;
845
- } else {
846
- y = y - 10 - menuHeight; // Cách cạnh dưới 10px
847
- }
848
- }
849
- setPosition(prevState => ({
850
- ...prevState,
851
- x,
852
- y
853
- }));
854
- }, 100);
855
- if (!menuVisible) {
856
- document.addEventListener(`click`, function onClickOutside(e) {
857
- const element = e.target;
858
- const menuContainer = document.querySelector(".popup-context-menu");
859
- const isInsideContainer = element.closest(".popup-context-menu") && menuContainer;
860
- if (isInsideContainer) {
861
- return;
862
- }
863
- setMenuVisible(false);
864
- document.removeEventListener(`click`, onClickOutside);
865
- });
866
- }
867
- };
868
- const handleRowClick = () => {
869
- if (clickRef.current) return;
870
-
871
- // @ts-ignore
872
- clickRef.current = setTimeout(() => {
873
- // console.log("Single Click:", record);
874
- clickRef.current = null;
875
- }, 250);
876
- };
877
- const handleRowDoubleClick = (record, index) => e => {
878
- if (clickRef.current) {
879
- clearTimeout(clickRef.current);
880
- clickRef.current = null;
881
- }
882
- recordDoubleClick?.({
883
- e,
884
- rowIndex: index,
885
- rowData: record
886
- });
887
- };
888
- const onSelectChange = (keys, selectedRows, info, selectedRow) => {
889
- if (info.type === 'all') {
890
- // setSelectedRowKeys(keys)
891
- rowSelected?.({
892
- selected: selectedRows,
893
- type: 'rowSelected',
894
- rowData: {}
895
- });
896
- } else {
897
- if (selectionSettings?.type === 'multiple') {
898
- // setSelectedRowKeys(keys)
899
- rowSelected?.({
900
- selected: selectedRows,
901
- type: 'rowSelected',
902
- rowData: selectedRow
903
- });
904
- } else {
905
- // @ts-ignore
906
- setSelectedRowKeys([selectedRow[rowKey]]);
907
- rowSelected?.({
908
- selected: [selectedRow],
909
- type: 'rowSelected',
910
- rowData: selectedRow
911
- });
912
- }
913
- }
914
- };
915
- const handleChange = sorter => {
916
- console.log('Various parameters', sorter);
917
- // setFilteredInfo(filters);
918
- // setSortedInfo(sorter as Sorts);
919
- };
920
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.ConfigProvider, {
921
- theme: {
922
- components: {
923
- Table: {
924
- rowHoverBg: '#eb461912',
925
- rowSelectedBg: '#eb4619',
926
- rowSelectedHoverBg: '#eb4619'
927
- }
928
- }
929
- }
930
- }, /*#__PURE__*/_react.default.createElement(_ContextMenu.default, {
931
- open: menuVisible,
932
- pos: position,
933
- setOpen: setMenuVisible,
934
- menuRef: menuRef,
935
- contextMenuItems: contextMenuItems,
936
- contextMenuClick: contextMenuClick,
937
- rowData: selectedRowData
938
- }), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Table
939
- // loading={defaultColumns && defaultColumns.length === 0}
940
- // loading={true}
941
- , (0, _extends2.default)({
942
- loading: {
943
- spinning: defaultColumns && defaultColumns.length === 0 || loading === true,
944
- indicator: /*#__PURE__*/_react.default.createElement(_LoadingSpinner.default, null)
945
- },
946
- dataSource: dataSource
947
- // className={styles.customTable}
948
- ,
949
- className: (0, _classnames.default)('', {
950
- 'table-none-column-select': selectionSettings?.mode === undefined && selectionSettings?.type !== 'multiple'
951
- }, styles.customTable),
952
- bordered: true,
953
- virtual: virtual
954
- // columns={resizableColumns as any}
955
- ,
956
- columns: tmpColumns
957
- // scroll={{ y: 550 }}
958
- ,
959
- rowKey: rowKey,
960
- rowHoverable: true,
961
- components: {
962
- header: {
963
- cell: ResizableTitle
964
- }
965
- }
966
- // scroll={scroll}
967
- ,
968
- size: "small",
969
- scroll: scroll ? scroll : {
970
- y: 500
971
- },
972
- onRow: (data, index) => {
973
- return {
974
- onDoubleClick: handleRowDoubleClick(data, index),
975
- onClick: handleRowClick,
976
- onContextMenu: onContextMenu(data)
977
- };
978
- },
979
- rowSelection: {
980
- type: selectionSettings?.mode === 'checkbox' || selectionSettings?.type === 'multiple' ? 'checkbox' : "radio",
981
- // columnWidth: selectionSettings?.mode === 'checkbox' || selectionSettings?.mode === 'radio' || selectionSettings?.type === 'multiple' ? 50 : 0.000001,
982
- columnWidth: !selectionSettings?.mode ? 0.0000001 : selectionSettings?.columnWidth ?? 50,
983
- onChange: onSelectChange,
984
- // onChange: (selectedRowKeys, selectedRows, info, selectedRow) => {
985
- //
986
- // },
987
- // onSelect: (record, selected, selectedRows, nativeEvent)=> {
988
- // // console.log(record, selected, selectedRows, nativeEvent)
989
- // },
990
-
991
- selectedRowKeys: selectionSettings?.mode === 'checkbox' && selectionSettings?.type === 'single' ? selectedRowKeys : undefined,
992
- defaultSelectedRowKeys: selectionSettings?.defaultSelectedRowKeys,
993
- preserveSelectedRowKeys: true,
994
- ...rowSelection,
995
- // hideSelectAll: !selectionSettings?.type || selectionSettings?.type === 'single' || selectionSettings?.mode === 'radio' ? true : rowSelection?.hideSelectAll ?? selectionSettings?.type !== 'multiple',
996
- hideSelectAll: !selectionSettings?.type || selectionSettings?.type === 'single' || selectionSettings?.mode === 'radio' ? true : selectionSettings?.hideSelectAll ?? selectionSettings?.type !== 'multiple'
997
- },
998
- onScroll: () => {
999
- setMenuVisible(false);
1000
- },
1001
- summary: () => /*#__PURE__*/_react.default.createElement(_rcMasterUi.Table.Summary, {
1002
- fixed: true
1003
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Table.Summary.Row, null, (0, _useColumns.flatColumns)(tmpColumns).filter(col => col.hidden !== true).map((col, index) => {
1004
- const thousandSeparator = col.format?.thousandSeparator ? col.format?.thousandSeparator : format?.thousandSeparator;
1005
- const decimalSeparator = col.format?.decimalSeparator ? col.format?.decimalSeparator : format?.decimalSeparator;
1006
- const dec = col.format?.decimalScale || col.format?.decimalScale === 0 ? col.format?.decimalScale : format?.decimalScale;
1007
- const sumValue = col.type === 'number' ? (0, _hooks.sumDataByField)(dataSource, col?.key) : 0;
1008
- const value = !(0, _hooks.isEmpty)(sumValue) ? dec || dec === 0 ? parseFloat(Number(sumValue).toFixed(dec)).toString() : sumValue.toString() : '0';
1009
- const cellValue = col.type === 'number' && col.isSummary !== false ? value : '';
1010
- const numericFormatProps = {
1011
- thousandSeparator: (0, _hooks.checkThousandSeparator)(thousandSeparator, decimalSeparator),
1012
- decimalSeparator: (0, _hooks.checkDecimalSeparator)(thousandSeparator, decimalSeparator),
1013
- allowNegative: (col.format?.allowNegative ? col.format?.allowNegative : format?.allowNegative) ?? false,
1014
- prefix: col.format?.prefix ? col.format?.prefix : format?.prefix,
1015
- suffix: col.format?.suffix ? col.format?.suffix : format?.suffix,
1016
- decimalScale: dec,
1017
- fixedDecimalScale: (col.format?.fixedDecimalScale ? col.format?.fixedDecimalScale : format?.fixedDecimalScale) ?? false
1018
- };
1019
- return /*#__PURE__*/_react.default.createElement(_rcMasterUi.Table.Summary.Cell, {
1020
- key: col.key,
1021
- index: index
1022
- }, col.summaryTemplate ? col.summaryTemplate(cellValue, col.key) : (0, _reactNumericComponent.numericFormatter)(cellValue, numericFormatProps));
1023
- }))),
1024
- pagination: pagination && pagination.onChange ? false : {
1025
- showTotal: (total, range) => `${range[0]}-${range[1]} / ${total} items`,
1026
- ...pagination
1027
- },
1028
- onFilter: val => {
1029
- onFilter?.(convertFilters(val));
1030
- },
1031
- onChange: (paging, filters, sorter) => handleChange(sorter),
1032
- title: () => {
1033
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, title?.(dataSource)), (toolbarItems || showColumnChoose !== false) && /*#__PURE__*/_react.default.createElement("div", {
1034
- style: {
1035
- display: 'flex',
1036
- justifyContent: 'space-between'
1037
- }
1038
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
1039
- style: {
1040
- width: '100%'
1041
- },
1042
- items: toolbarItems ?? [],
1043
- mode: 'responsive'
1044
- // mode={'scroll'}
1045
- ,
1046
- onClick: val => {
1047
- console.log(val);
1048
- }
1049
- }), showColumnChoose && /*#__PURE__*/_react.default.createElement(_ColumnsChoose.ColumnsChoose, {
1050
- columns: tmpColumns,
1051
- setColumns: setColumns
1052
- }), /*#__PURE__*/_react.default.createElement("div", null)));
1053
- }
1054
- }, rest)), pagination && pagination.onChange && /*#__PURE__*/_react.default.createElement(_pagination.default
1055
- // style={{padding: '0.75rem 1rem'}}
1056
- , (0, _extends2.default)({
1057
- showSizeChanger: true,
1058
- responsive: true,
1059
- size: 'small',
1060
- showTotal: (total, range) => `${range[0]}-${range[1]} / ${total} items`
1061
- }, pagination))));
1062
- };
1063
- var _default = exports.default = TableGrid;