es-grid-template 0.0.8 → 0.1.0

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