es-grid-template 1.8.64 → 1.8.65

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 (125) hide show
  1. package/es/grid-component/ColumnsGroup/ColumnsGroup.js +4 -1
  2. package/es/grid-component/TempTable.js +2 -2
  3. package/es/grid-component/hooks/utils.d.ts +2 -8
  4. package/es/grid-component/hooks/utils.js +175 -144
  5. package/es/grid-component/index.d.ts +1 -1
  6. package/es/grid-component/index.js +0 -4
  7. package/es/grid-component/type.d.ts +7 -0
  8. package/es/table-component/type.d.ts +8 -0
  9. package/es/table-virtuoso/ColumnsGroup/ColumnsGroup.d.ts +12 -0
  10. package/es/table-virtuoso/ColumnsGroup/ColumnsGroup.js +232 -0
  11. package/es/table-virtuoso/ColumnsGroup/index.d.ts +1 -0
  12. package/es/table-virtuoso/ColumnsGroup/index.js +1 -0
  13. package/es/{grid-component → table-virtuoso}/InternalTable.d.ts +2 -3
  14. package/es/table-virtuoso/InternalTable.js +413 -0
  15. package/es/table-virtuoso/body/TableBody.d.ts +14 -0
  16. package/es/table-virtuoso/body/TableBody.js +84 -0
  17. package/es/table-virtuoso/body/TableBodyCell.d.ts +14 -0
  18. package/es/table-virtuoso/body/TableBodyCell.js +466 -0
  19. package/es/table-virtuoso/body/TableBodyRow.d.ts +13 -0
  20. package/es/table-virtuoso/body/TableBodyRow.js +116 -0
  21. package/es/table-virtuoso/footer/TableFooterCell.d.ts +7 -0
  22. package/es/table-virtuoso/footer/TableFooterCell.js +54 -0
  23. package/es/table-virtuoso/header/TableHeadCell.d.ts +14 -0
  24. package/es/table-virtuoso/header/TableHeadCell.js +265 -0
  25. package/es/table-virtuoso/header/renderFilter.d.ts +20 -0
  26. package/es/table-virtuoso/header/renderFilter.js +289 -0
  27. package/es/table-virtuoso/hook/constant.d.ts +73 -0
  28. package/es/table-virtuoso/hook/constant.js +240 -0
  29. package/es/table-virtuoso/hook/convert.d.ts +1 -0
  30. package/es/table-virtuoso/hook/convert.js +28 -0
  31. package/es/table-virtuoso/hook/useColumns.d.ts +28 -0
  32. package/es/table-virtuoso/hook/useColumns.js +302 -0
  33. package/es/table-virtuoso/hook/useFilterOperator.d.ts +7 -0
  34. package/es/table-virtuoso/hook/useFilterOperator.js +33 -0
  35. package/es/table-virtuoso/hook/utils.d.ts +159 -0
  36. package/es/table-virtuoso/hook/utils.js +2263 -0
  37. package/es/table-virtuoso/index.d.ts +2 -0
  38. package/es/table-virtuoso/index.js +2 -0
  39. package/es/table-virtuoso/style.d.ts +22 -0
  40. package/es/table-virtuoso/style.js +11 -0
  41. package/es/table-virtuoso/style.scss +1440 -0
  42. package/es/table-virtuoso/table/Grid.d.ts +37 -0
  43. package/es/table-virtuoso/table/Grid.js +302 -0
  44. package/es/table-virtuoso/table/TableContainer.d.ts +49 -0
  45. package/es/table-virtuoso/table/TableContainer.js +305 -0
  46. package/es/table-virtuoso/table/TableWrapper.d.ts +20 -0
  47. package/es/table-virtuoso/table/TableWrapper.js +158 -0
  48. package/es/table-virtuoso/type.d.ts +0 -0
  49. package/es/table-virtuoso/type.js +785 -0
  50. package/es/table-virtuoso/useContext.d.ts +97 -0
  51. package/es/table-virtuoso/useContext.js +21 -0
  52. package/lib/grid-component/ColumnsGroup/ColumnsGroup.js +4 -1
  53. package/lib/grid-component/TempTable.js +2 -2
  54. package/lib/grid-component/hooks/utils.d.ts +2 -8
  55. package/lib/grid-component/hooks/utils.js +176 -152
  56. package/lib/grid-component/index.d.ts +1 -1
  57. package/lib/grid-component/index.js +0 -3
  58. package/lib/grid-component/type.d.ts +7 -0
  59. package/lib/table-component/type.d.ts +8 -0
  60. package/lib/table-virtuoso/ColumnsGroup/ColumnsGroup.d.ts +12 -0
  61. package/lib/table-virtuoso/ColumnsGroup/ColumnsGroup.js +243 -0
  62. package/lib/table-virtuoso/ColumnsGroup/index.d.ts +1 -0
  63. package/lib/table-virtuoso/ColumnsGroup/index.js +16 -0
  64. package/lib/{grid-component → table-virtuoso}/InternalTable.d.ts +2 -3
  65. package/lib/table-virtuoso/InternalTable.js +422 -0
  66. package/lib/table-virtuoso/body/TableBody.d.ts +14 -0
  67. package/lib/table-virtuoso/body/TableBody.js +95 -0
  68. package/lib/table-virtuoso/body/TableBodyCell.d.ts +14 -0
  69. package/lib/table-virtuoso/body/TableBodyCell.js +473 -0
  70. package/lib/table-virtuoso/body/TableBodyRow.d.ts +13 -0
  71. package/lib/table-virtuoso/body/TableBodyRow.js +124 -0
  72. package/lib/table-virtuoso/footer/TableFooterCell.d.ts +7 -0
  73. package/lib/table-virtuoso/footer/TableFooterCell.js +63 -0
  74. package/lib/table-virtuoso/header/TableHeadCell.d.ts +14 -0
  75. package/lib/table-virtuoso/header/TableHeadCell.js +274 -0
  76. package/lib/table-virtuoso/header/renderFilter.d.ts +20 -0
  77. package/lib/table-virtuoso/header/renderFilter.js +299 -0
  78. package/lib/table-virtuoso/hook/constant.d.ts +73 -0
  79. package/lib/table-virtuoso/hook/constant.js +247 -0
  80. package/lib/table-virtuoso/hook/convert.d.ts +1 -0
  81. package/lib/table-virtuoso/hook/convert.js +34 -0
  82. package/lib/table-virtuoso/hook/useColumns.d.ts +28 -0
  83. package/lib/table-virtuoso/hook/useColumns.js +315 -0
  84. package/lib/table-virtuoso/hook/useFilterOperator.d.ts +7 -0
  85. package/lib/table-virtuoso/hook/useFilterOperator.js +40 -0
  86. package/lib/table-virtuoso/hook/utils.d.ts +159 -0
  87. package/lib/table-virtuoso/hook/utils.js +2389 -0
  88. package/lib/table-virtuoso/index.d.ts +2 -0
  89. package/lib/table-virtuoso/index.js +9 -0
  90. package/lib/table-virtuoso/style.d.ts +22 -0
  91. package/lib/table-virtuoso/style.js +18 -0
  92. package/lib/table-virtuoso/style.scss +1440 -0
  93. package/lib/table-virtuoso/table/Grid.d.ts +37 -0
  94. package/lib/table-virtuoso/table/Grid.js +311 -0
  95. package/lib/table-virtuoso/table/TableContainer.d.ts +49 -0
  96. package/lib/table-virtuoso/table/TableContainer.js +313 -0
  97. package/lib/table-virtuoso/table/TableWrapper.d.ts +20 -0
  98. package/lib/table-virtuoso/table/TableWrapper.js +164 -0
  99. package/lib/table-virtuoso/type.d.ts +0 -0
  100. package/lib/table-virtuoso/type.js +786 -0
  101. package/lib/table-virtuoso/useContext.d.ts +97 -0
  102. package/lib/table-virtuoso/useContext.js +27 -0
  103. package/package.json +2 -1
  104. package/es/grid-component/ConvertColumnTable.d.ts +0 -7
  105. package/es/grid-component/ConvertColumnTable.js +0 -144
  106. package/es/grid-component/InternalTable.js +0 -1170
  107. package/es/grid-component/table/Grid.d.ts +0 -23
  108. package/es/grid-component/table/Grid.js +0 -49
  109. package/es/grid-component/table/GridEdit.d.ts +0 -23
  110. package/es/grid-component/table/GridEdit.js +0 -2726
  111. package/es/grid-component/table/Group.d.ts +0 -21
  112. package/es/grid-component/table/Group.js +0 -195
  113. package/es/grid-component/table/InfiniteTable.d.ts +0 -23
  114. package/es/grid-component/table/InfiniteTable.js +0 -101
  115. package/lib/grid-component/ConvertColumnTable.d.ts +0 -7
  116. package/lib/grid-component/ConvertColumnTable.js +0 -153
  117. package/lib/grid-component/InternalTable.js +0 -1178
  118. package/lib/grid-component/table/Grid.d.ts +0 -23
  119. package/lib/grid-component/table/Grid.js +0 -58
  120. package/lib/grid-component/table/GridEdit.d.ts +0 -23
  121. package/lib/grid-component/table/GridEdit.js +0 -2723
  122. package/lib/grid-component/table/Group.d.ts +0 -21
  123. package/lib/grid-component/table/Group.js +0 -204
  124. package/lib/grid-component/table/InfiniteTable.d.ts +0 -23
  125. package/lib/grid-component/table/InfiniteTable.js +0 -109
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ColumnsGroup = void 0;
8
+ var _becoxyIcons = require("becoxy-icons");
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _antd = require("antd");
11
+ var _rcMasterUi = require("rc-master-ui");
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+ var _hooks = require("../../grid-component/hooks");
14
+ 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); }
15
+ 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; }
16
+ // import {
17
+ // // groupArrayByColumns,
18
+ // // ungroupArray,
19
+ // // useOnClickOutside
20
+ // } from "../../hooks"
21
+
22
+ // import {SettingOutlined} from "@ant-design/icons";
23
+
24
+ const BoxAction = _styledComponents.default.div.withConfig({
25
+ displayName: "BoxAction",
26
+ componentId: "es-grid-template__sc-z2q149-0"
27
+ })(["padding-top:.75rem;display:flex;justify-content:end;gap:10px;.btn-action{background:none !important;border:none !important;&.btn-action-submit{color:#df4318;&:disabled{background-color:#f0f0f0 !important;}&:hover{color:#df4318 !important;}}&:hover{background-color:#f0f0f0 !important;}}"]);
28
+ const ColumnsGroup = props => {
29
+ const {
30
+ columns,
31
+ columnsGrouped,
32
+ onSubmit,
33
+ unClearableLevel,
34
+ defaultGroupColumns,
35
+ t
36
+ } = props;
37
+ const menuRef = (0, _react.useRef)();
38
+ const [tempGroup, setTempGroup] = (0, _react.useState)([]);
39
+ const [clicked, setClicked] = (0, _react.useState)(false);
40
+ console.log('columns', columns);
41
+ console.log('columnsGrouped', columnsGrouped);
42
+ const rsCol = _react.default.useMemo(() => {
43
+ return columns.filter(it => it.visible !== false && !tempGroup.includes(it.field) && it.field !== '#' && it.field !== 'selection_column' && it.field !== 'command');
44
+ }, [columns, tempGroup]);
45
+ console.log('rsCol', rsCol);
46
+ const options = _react.default.useMemo(() => {
47
+ return rsCol.map(it => ({
48
+ ...it,
49
+ value: it.field,
50
+ label: t ? t(it?.columnGroupText ?? it?.headerText) : it?.columnGroupText ?? it?.headerText
51
+ }));
52
+ }, [rsCol, t]);
53
+
54
+ // React.useEffect(() => {
55
+ // if(columnsGrouped) {
56
+ // setTempGroup([...columnsGrouped])
57
+ // }
58
+ //
59
+ // }, [!!columnsGrouped])
60
+
61
+ const onChangeGroupColumns = (option, index) => {
62
+ // if (option) {
63
+ // tempGroup[index] = option
64
+ // } else {
65
+ // tempGroup.splice(index, 1)
66
+ // }
67
+ // setTempGroup([...tempGroup])
68
+
69
+ const cloneTemp = [...tempGroup];
70
+ if (option) {
71
+ cloneTemp[index] = option;
72
+ } else {
73
+ cloneTemp.splice(index, 1);
74
+ }
75
+ setTempGroup([...cloneTemp]);
76
+ };
77
+ const handleGroup = () => {
78
+ // setColumnsGrouped([...tempGroup])
79
+ setClicked(false);
80
+ // const dt = ungroupArray(dataSource)
81
+
82
+ // const rs = groupArrayByColumns(dt, [...tempGroup])
83
+
84
+ // setResource([...rs])
85
+ onSubmit([...tempGroup]);
86
+ };
87
+ const handleClear = () => {
88
+ // setColumnsGrouped([])
89
+ setTempGroup(defaultGroupColumns ? defaultGroupColumns : []);
90
+ // setIsOpen(false)
91
+ setClicked(false);
92
+ // const dt = ungroupArray(dataSource)
93
+
94
+ // const rs = groupArrayByColumns(dt, [])
95
+
96
+ // setResource([...rs])
97
+ onSubmit(defaultGroupColumns ? defaultGroupColumns : []);
98
+ };
99
+ const handleClickChange = open => {
100
+ setClicked(open);
101
+ if (open) {
102
+ if (columnsGrouped) {
103
+ setTempGroup([...columnsGrouped]);
104
+ }
105
+ }
106
+ if (!open) {
107
+ setTempGroup([]);
108
+ }
109
+ };
110
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.Popover, {
111
+ placement: 'bottomLeft',
112
+ content: /*#__PURE__*/_react.default.createElement("div", {
113
+ style: {
114
+ minWidth: 250
115
+ }
116
+ }, /*#__PURE__*/_react.default.createElement("div", {
117
+ ref: menuRef,
118
+ style: {
119
+ position: 'relative'
120
+ }
121
+ }, /*#__PURE__*/_react.default.createElement("p", {
122
+ className: 'fw-bold'
123
+ }, "Nh\xF3m d\u1EEF li\u1EC7u theo c\u1ED9t"), /*#__PURE__*/_react.default.createElement("div", {
124
+ className: 'mb-1',
125
+ style: {
126
+ marginBottom: '1rem'
127
+ }
128
+ }, /*#__PURE__*/_react.default.createElement("p", {
129
+ className: 'm-0',
130
+ style: {
131
+ margin: 0
132
+ }
133
+ }, "M\u1EE9c 1"), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Select, {
134
+ style: {
135
+ width: '100%'
136
+ },
137
+ showSearch: true
138
+ // labelInValue={true}
139
+ // options={columns.filter((it: any) => !tempGroup.includes(it.field))}
140
+ // options={columns && columns.length > 0 ? options : []}
141
+ ,
142
+ options: options,
143
+ value: tempGroup?.[0],
144
+ onChange: val => onChangeGroupColumns(val, 0),
145
+ allowClear: !tempGroup?.[1] && !(unClearableLevel && unClearableLevel - 1 >= 0)
146
+ // fieldNames={{
147
+ // value: 'field',
148
+ // label: 'headerText'
149
+ // }}
150
+ ,
151
+ labelRender: labelProps => {
152
+ const it = columns.find(col => col.field === labelProps.value);
153
+ return t ? t(it?.columnGroupText ?? it?.headerText) : it?.columnGroupText ?? it?.headerText;
154
+ },
155
+ filterOption: _hooks.customFilterOption
156
+ // hideSelectedOptions
157
+ })), /*#__PURE__*/_react.default.createElement("div", {
158
+ className: 'mb-1',
159
+ style: {
160
+ marginBottom: '1rem'
161
+ }
162
+ }, /*#__PURE__*/_react.default.createElement("p", {
163
+ className: 'm-0',
164
+ style: {
165
+ margin: 0
166
+ }
167
+ }, "M\u1EE9c 2"), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Select, {
168
+ showSearch: true,
169
+ style: {
170
+ width: '100%'
171
+ },
172
+ options: options,
173
+ value: tempGroup?.[1],
174
+ onChange: val => onChangeGroupColumns(val, 1),
175
+ allowClear: !tempGroup?.[2] && !(unClearableLevel && unClearableLevel - 2 >= 0)
176
+ // hideSelectedOptions
177
+ // fieldNames={{
178
+ // value: 'field',
179
+ // label: 'headerText'
180
+ // }}
181
+ ,
182
+ labelRender: labelProps => {
183
+ const it = columns.find(col => col.field === labelProps.value);
184
+ return t ? t(it?.columnGroupText ?? it?.headerText) : it?.columnGroupText ?? it?.headerText;
185
+ },
186
+ filterOption: _hooks.customFilterOption
187
+ })), /*#__PURE__*/_react.default.createElement("div", {
188
+ className: 'mb-1',
189
+ style: {
190
+ marginBottom: '1rem'
191
+ }
192
+ }, /*#__PURE__*/_react.default.createElement("p", {
193
+ className: 'm-0',
194
+ style: {
195
+ margin: 0
196
+ }
197
+ }, "M\u1EE9c 3"), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Select, {
198
+ style: {
199
+ width: '100%'
200
+ },
201
+ options: options,
202
+ showSearch: true,
203
+ value: tempGroup?.[2],
204
+ onChange: val => onChangeGroupColumns(val, 2),
205
+ allowClear: !!tempGroup?.[2] && !(unClearableLevel && unClearableLevel - 3 >= 0)
206
+ // fieldNames={{
207
+ // value: 'field',
208
+ // label: 'headerText'
209
+ // }}
210
+ ,
211
+ labelRender: labelProps => {
212
+ const it = columns.find(col => col.field === labelProps.value);
213
+ return t ? t(it?.columnGroupText ?? it?.headerText) : it?.columnGroupText ?? it?.headerText;
214
+ },
215
+ filterOption: _hooks.customFilterOption
216
+ }))), /*#__PURE__*/_react.default.createElement(BoxAction, {
217
+ className: 'px-1'
218
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button
219
+ // className={classnames('btn-action btn-action-submit', {
220
+ // // disable: !columns.find((item) => item.visible !== false || item.visible)
221
+ // })}
222
+ , {
223
+ onClick: handleGroup
224
+ // disabled={!columns.find((item) => item.visible !== false || item.visible)}
225
+ }, t ? t('Thực hiện') : 'Thực hiện'), /*#__PURE__*/_react.default.createElement(_antd.Button, {
226
+ className: 'btn-action btn-action-cancel',
227
+ onClick: handleClear
228
+ }, t ? t('Clear') : 'Clear'))),
229
+ trigger: "click",
230
+ open: clicked,
231
+ onOpenChange: handleClickChange,
232
+ arrow: false
233
+ }, /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
234
+ arrow: false,
235
+ title: 'Nhóm dữ liệu'
236
+ }, /*#__PURE__*/_react.default.createElement(_becoxyIcons.Group, {
237
+ fontSize: 18,
238
+ style: {
239
+ cursor: 'pointer'
240
+ }
241
+ }))));
242
+ };
243
+ exports.ColumnsGroup = ColumnsGroup;
@@ -0,0 +1 @@
1
+ export * from './ColumnsGroup';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _ColumnsGroup = require("./ColumnsGroup");
7
+ Object.keys(_ColumnsGroup).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _ColumnsGroup[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _ColumnsGroup[key];
14
+ }
15
+ });
16
+ });
@@ -1,9 +1,8 @@
1
1
  import React from 'react';
2
2
  import 'react-resizable/css/styles.css';
3
- import type { GridTableProps } from "./type";
4
3
  import 'dayjs/locale/es';
5
4
  import 'dayjs/locale/vi';
6
- import './styles.scss';
5
+ import type { TableProps } from '../table-component/type';
7
6
  export declare const SELECTION_COLUMN: {};
8
- declare const InternalTable: <RecordType extends object>(props: GridTableProps<RecordType>) => React.JSX.Element;
7
+ declare const InternalTable: <RecordType extends object>(props: TableProps<RecordType>) => React.JSX.Element;
9
8
  export default InternalTable;
@@ -0,0 +1,422 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.SELECTION_COLUMN = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customParseFormat"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ require("react-resizable/css/styles.css");
12
+ var _dayjs = _interopRequireDefault(require("dayjs"));
13
+ require("dayjs/locale/es");
14
+ require("dayjs/locale/vi");
15
+ var _faker = require("@faker-js/faker");
16
+ var _useMergedState = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
17
+ var _reactTable = require("@tanstack/react-table");
18
+ var _utils = require("./hook/utils");
19
+ var _useColumns = require("./hook/useColumns");
20
+ var _hooks = require("../grid-component/hooks");
21
+ var _Grid = _interopRequireDefault(require("./table/Grid"));
22
+ var _utils2 = require("../table-component/hook/utils");
23
+ var _operator = require("../table-component/features/operator");
24
+ 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); }
25
+ 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; }
26
+ // import './style.scss'
27
+
28
+ // import { convertColumns } from './hook/convert'
29
+
30
+ // import { ColumnsGroup } from '../grid-component/ColumnsGroup'
31
+
32
+ _dayjs.default.extend(_customParseFormat.default);
33
+ const SELECTION_COLUMN = exports.SELECTION_COLUMN = {};
34
+ const InternalTable = props => {
35
+ const {
36
+ t,
37
+ columns: propsColumns,
38
+ // columns,
39
+ lang,
40
+ locale,
41
+ dataSource,
42
+ editAble,
43
+ format,
44
+ groupAble,
45
+ groupSetting,
46
+ groupColumns,
47
+ selectionSettings,
48
+ expandable,
49
+ onChooseColumns,
50
+ height,
51
+ pagination,
52
+ allowResizing,
53
+ infiniteScroll,
54
+ sortMultiple,
55
+ allowSortering,
56
+ allowFiltering,
57
+ ...rest
58
+ } = props;
59
+ const id = _react.default.useMemo(() => {
60
+ return _faker.faker.string.alpha(20);
61
+ }, []);
62
+ const {
63
+ defaultExpandedRowKeys,
64
+ defaultExpandAllRows
65
+ } = expandable || {};
66
+ const rowKey = 'rowId';
67
+ const prefix = 'ui-rc';
68
+ const getWindowSize = () => {
69
+ const {
70
+ innerWidth,
71
+ innerHeight
72
+ } = window;
73
+ return {
74
+ innerWidth,
75
+ innerHeight
76
+ };
77
+ };
78
+ const [windowSize, setWindowSize] = (0, _react.useState)(getWindowSize());
79
+ _react.default.useEffect(() => {
80
+ const handleWindowResize = () => {
81
+ setWindowSize(getWindowSize());
82
+ };
83
+ window.addEventListener('resize', handleWindowResize);
84
+ return () => {
85
+ window.removeEventListener('resize', handleWindowResize);
86
+ };
87
+ }, []);
88
+ const [columnResizeMode] = _react.default.useState('onChange');
89
+ const [columnResizeDirection] = _react.default.useState('ltr');
90
+ const [rowSelection, setRowSelection] = _react.default.useState({});
91
+
92
+ // const [grouping, setGrouping] = React.useState<GroupingState>([])
93
+
94
+ const [paginationState, setPagination] = _react.default.useState({
95
+ pageIndex: pagination && pagination.currentPage ? pagination.currentPage - 1 : 0,
96
+ pageSize: pagination && pagination.pageSize ? pagination.pageSize : 20
97
+ });
98
+ const [columnSizing, setColumnSizing] = _react.default.useState({});
99
+ const [columnSizingInfo, setColumnSizingInfo] = _react.default.useState({});
100
+
101
+ // const [columnOrder, setColumnOrder] = React.useState<string[]>(() => columns.map(c => c.id!))
102
+
103
+ const [columnFilters, setColumnFilters] = _react.default.useState([]);
104
+ const [operator, setOperator] = _react.default.useState([]);
105
+ const [sorting, setSorting] = _react.default.useState([]);
106
+ const [filterStates, setFilterState] = _react.default.useState(null);
107
+ const [sorterStates, setSorterStates] = _react.default.useState([]);
108
+ const [isFullScreen, setIsFullScreen] = _react.default.useState(false);
109
+ const [columns, setColumns] = _react.default.useState([]);
110
+ const [tableData, setTableData] = _react.default.useState([]);
111
+ const [expanded, setExpanded] = _react.default.useState({});
112
+
113
+ // const [visible, setVisible] = React.useState({visible: false, column: ''})
114
+
115
+ const [columnVisibility, setColumnVisibility] = _react.default.useState({});
116
+ const originData = _react.default.useMemo(() => {
117
+ return (0, _utils.addRowIdArray)(dataSource);
118
+ }, [dataSource]);
119
+ const isDataOriginTree = _react.default.useMemo(() => {
120
+ return (0, _utils.isTreeArray)(originData);
121
+ }, [originData]);
122
+ _react.default.useEffect(() => {
123
+ if (groupColumns && groupColumns.length > 0 && groupSetting?.client !== false && isDataOriginTree === false) {
124
+ const abc = (0, _utils.groupArrayByColumns)(originData, groupColumns);
125
+ const rs = (0, _utils.filterDataByColumns)(abc, filterStates, sorterStates, []);
126
+ setTableData(rs);
127
+ } else {
128
+ const rs = (0, _utils.filterDataByColumns)(originData, filterStates, sorterStates, []);
129
+ setTableData(rs);
130
+ }
131
+ }, [groupColumns, originData, filterStates, sorterStates, groupSetting?.client, isDataOriginTree]);
132
+ // }, [groupColumns, originData, filterStates, sorterStates, groupSetting?.client])
133
+
134
+ _react.default.useEffect(() => {
135
+ // setColumns(updateWidthsByOther(propsColumns, columns))
136
+ setColumns(propsColumns);
137
+ }, [propsColumns]);
138
+
139
+ // const convertData = React.useMemo(() => {
140
+
141
+ // if (groupAble && groupSetting && groupSetting.client !== false) {
142
+
143
+ // const bbc = addRowIdArray(dataSource)
144
+
145
+ // const abc = groupArrayByColumns(bbc, groupColumns)
146
+
147
+ // return abc
148
+ // } else {
149
+
150
+ // return addRowIdArray(dataSource)
151
+
152
+ // }
153
+
154
+ // }, [dataSource, groupAble, groupColumns, groupSetting])
155
+
156
+ const mergedColumns = _react.default.useMemo(() => {
157
+ return (0, _useColumns.convertToTanStackColumns)({
158
+ t,
159
+ columns,
160
+ format,
161
+ editAble
162
+ });
163
+
164
+ // return convertToTanStackColumns<RecordType>(columns)
165
+ }, [t, columns, format, editAble]);
166
+ const isDataTree = _react.default.useMemo(() => {
167
+ return (0, _utils.isTreeArray)(tableData);
168
+ }, [tableData]);
169
+ const columnPinning = _react.default.useMemo(() => {
170
+ return {
171
+ left: (0, _utils.getFixedFields)(columns, 'left'),
172
+ right: (0, _utils.getFixedFields)(columns, 'right')
173
+ };
174
+ }, [columns]);
175
+
176
+ // ========================= Keys =========================
177
+ const [mergedFilterKeys, setMergedFilterKeys] = (0, _useMergedState.default)((0, _utils.getAllRowKey)(originData), {
178
+ value: undefined
179
+ });
180
+
181
+ // ========================= Keys =========================
182
+
183
+ const {
184
+ selectedRowKeys,
185
+ defaultSelectedRowKeys
186
+ } = selectionSettings ?? {};
187
+ const [mergedSelectedKeys] = (0, _useMergedState.default)(selectedRowKeys || defaultSelectedRowKeys || [], {
188
+ value: selectedRowKeys
189
+ });
190
+
191
+ // const mergedData = React.useMemo(() => {
192
+
193
+ // return filterDataByColumns(tableData, filterStates, sorterStates, mergedFilterKeys)
194
+
195
+ // }, [tableData, filterStates, mergedFilterKeys, sorterStates])
196
+
197
+ // const columnVisibility = React.useMemo(() => {
198
+ // return getInvisibleColumns(columns)
199
+ // }, [columns])
200
+
201
+ _react.default.useEffect(() => {
202
+ const a = (0, _utils.getInvisibleColumns)(columns);
203
+ setColumnVisibility(a);
204
+ }, [columns]);
205
+ const [columnsHiddenKeys, setColumnsHiddenKeys] = (0, _useMergedState.default)(undefined, {
206
+ value: undefined
207
+ });
208
+ const triggerChangeColumns = (cols, keys, type) => {
209
+ if (type === 'cellClick') {
210
+ setColumns(cols);
211
+ } else {
212
+ const aa = (0, _utils.flatColumns2)(columns).map(it => it.field);
213
+ const rsss = (0, _utils.getDiffent2Array)(aa, keys);
214
+ setColumnsHiddenKeys(rsss);
215
+ onChooseColumns?.({
216
+ showColumns: (0, _hooks.removeInvisibleColumns)([...cols]),
217
+ columns: [...cols],
218
+ flattenColumns: (0, _utils.convertFlatColumn1)([...cols])
219
+ });
220
+ }
221
+ };
222
+ const table = (0, _reactTable.useReactTable)({
223
+ _features: [_operator.OperatorFeature],
224
+ data: tableData,
225
+ // data: mergedData,
226
+ columns: mergedColumns,
227
+ state: {
228
+ rowSelection,
229
+ expanded,
230
+ columnPinning,
231
+ columnVisibility: columnsHiddenKeys ? (0, _utils.convertToObj)(columnsHiddenKeys) : columnVisibility,
232
+ pagination: pagination && !infiniteScroll ? paginationState : undefined,
233
+ // grouping,
234
+ columnSizing,
235
+ // columnOrder,
236
+ columnFilters,
237
+ operator,
238
+ sorting,
239
+ columnSizingInfo
240
+ },
241
+ getCoreRowModel: (0, _reactTable.getCoreRowModel)(),
242
+ getRowId(originalRow) {
243
+ return originalRow.rowId;
244
+ },
245
+ getSubRows: row => row.children,
246
+ // --------------RowSelection -----------------
247
+ enableSubRowSelection: selectionSettings && selectionSettings.mode === 'checkbox' && selectionSettings.type !== 'single',
248
+ enableMultiRowSelection: selectionSettings && (selectionSettings.mode === 'checkbox' || selectionSettings.type !== 'single'),
249
+ enableRowSelection: row => {
250
+ if (selectionSettings?.getCheckboxProps) {
251
+ return !selectionSettings?.getCheckboxProps(row.original)?.disabled;
252
+ }
253
+ return true;
254
+ },
255
+ onRowSelectionChange: setRowSelection,
256
+ // --------------RowSelection END-----------------
257
+
258
+ // ColumnSizing
259
+ enableColumnResizing: allowResizing !== false,
260
+ columnResizeMode,
261
+ columnResizeDirection,
262
+ onColumnSizingChange: setColumnSizing,
263
+ onColumnSizingInfoChange: setColumnSizingInfo,
264
+ // ColumnSizing
265
+
266
+ // ColumnSorting
267
+ // getSortedRowModel: getSortedRowModel(),
268
+ onSortingChange: setSorting,
269
+ enableMultiSort: sortMultiple !== false,
270
+ isMultiSortEvent: () => sortMultiple === false ? false : true,
271
+ enableSorting: allowSortering !== false,
272
+ // ColumnSorting
273
+
274
+ enableFilters: allowFiltering !== false,
275
+ onColumnFiltersChange: setColumnFilters,
276
+ onColumnOperatorChange: setOperator,
277
+ // getFilteredRowModel: getFilteredRowModel(),
278
+
279
+ // onColumnOrderChange: setColumnOrder,
280
+
281
+ // onGroupingChange: setGrouping,
282
+ getGroupedRowModel: (0, _reactTable.getGroupedRowModel)(),
283
+ // onExpandedChange: setExpanded,
284
+ getExpandedRowModel: (0, _reactTable.getExpandedRowModel)(),
285
+ getPaginationRowModel: pagination && !infiniteScroll ? (0, _reactTable.getPaginationRowModel)() : undefined,
286
+ onPaginationChange: setPagination,
287
+ onColumnVisibilityChange: setColumnVisibility
288
+ // onColumnPinningChange,
289
+
290
+ // debugTable: true
291
+ });
292
+ _react.default.useEffect(() => {
293
+ if (defaultExpandAllRows) {
294
+ const allKeys = (0, _utils.findAllChildrenKeys2)(tableData, rowKey, 'children');
295
+ setExpanded((0, _utils.convertToObjTrue)(allKeys));
296
+ } else {
297
+ if (defaultExpandedRowKeys) {
298
+ setExpanded((0, _utils.convertToObjTrue)(defaultExpandedRowKeys ?? []));
299
+ }
300
+ }
301
+ }, [defaultExpandAllRows, defaultExpandedRowKeys, tableData, table]);
302
+ const triggerGroupColumns = groupedColumns => {
303
+ // const abc = updateColumnsByGroup(columns, groupedColumns)
304
+
305
+ const bcd = (0, _utils.convertToObj)(groupedColumns);
306
+
307
+ // const a = getInvisibleColumns(columns)
308
+
309
+ const prev = groupColumns ?? [];
310
+ const bbb = prev.filter(item => !groupedColumns.includes(item));
311
+ const ccc = (0, _utils.removeKeys)(columnVisibility, bbb);
312
+ const rs = {
313
+ ...ccc,
314
+ ...bcd
315
+ };
316
+ setColumnVisibility(rs);
317
+
318
+ // table.setColumnVisibility(rs)
319
+
320
+ if (groupSetting) {
321
+ if (groupSetting.onGroup) {
322
+ groupSetting.onGroup({
323
+ columnGrouped: groupedColumns,
324
+ columns: (0, _utils2.removeColumns)(columns, groupedColumns),
325
+ flattenColumns: (0, _utils.flatColumns2)((0, _utils2.removeColumns)(columns, groupedColumns))
326
+ });
327
+ }
328
+ if (groupSetting.client === false) {
329
+
330
+ // group server => không xử lý gì
331
+ } else {
332
+ // group client
333
+
334
+ table.resetRowSelection();
335
+ table.resetExpanded();
336
+ setRowSelection({});
337
+ setExpanded({});
338
+ }
339
+ }
340
+ };
341
+
342
+ // useEffect(() => {
343
+
344
+ // table.toggleAllRowsExpanded(true)
345
+
346
+ // }, [tableData ])
347
+
348
+ const triggerFilter = args => {
349
+ // table.resetRowSelection()
350
+ // table.resetExpanded()
351
+
352
+ // setRowSelection({})
353
+ setExpanded({});
354
+ setFilterState(args);
355
+
356
+ // const rs = filterDataByColumns(originData, args, sorterStates, [])
357
+
358
+ // const allKeys = findAllChildrenKeys2<RecordType>(rs, rowKey, 'children')
359
+
360
+ // setExpanded(convertToObjTrue(allKeys))
361
+
362
+ // setTableData(rs)
363
+ };
364
+ const triggerSorter = args => {
365
+ // table.resetRowSelection()
366
+ // table.resetExpanded()
367
+
368
+ // setRowSelection({})
369
+ // setExpanded({})
370
+
371
+ setSorterStates(args);
372
+
373
+ // const rs = filterDataByColumns(originData, filterStates, args, [])
374
+ // setTableData(rs)
375
+ };
376
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_Grid.default, (0, _extends2.default)({}, rest, {
377
+ t: t,
378
+ id: id,
379
+ table: table,
380
+ prefix: prefix,
381
+ originData: originData
382
+ // dataSource={mergedData}
383
+ ,
384
+ dataSource: tableData,
385
+ locale: locale,
386
+ format: format
387
+ // columns={convertColumns(mergedColumns)}
388
+ ,
389
+ columns: mergedColumns,
390
+ propsColumns: columns,
391
+ rowKey: rowKey,
392
+ groupSetting: groupSetting,
393
+ groupAble: groupAble,
394
+ groupColumns: groupColumns,
395
+ columnPinning: columnPinning,
396
+ columnHidden: columnsHiddenKeys ? (0, _utils.convertToObj)(columnsHiddenKeys) : columnVisibility,
397
+ triggerFilter: triggerFilter,
398
+ triggerSorter: triggerSorter,
399
+ setMergedFilterKeys: setMergedFilterKeys,
400
+ mergedFilterKeys: mergedFilterKeys,
401
+ editAble: isFullScreen ? false : editAble,
402
+ triggerChangeColumns: triggerChangeColumns,
403
+ triggerGroupColumns: triggerGroupColumns,
404
+ expanded: expanded,
405
+ setExpanded: setExpanded,
406
+ isFullScreen: isFullScreen,
407
+ setIsFullScreen: setIsFullScreen,
408
+ windowSize: windowSize,
409
+ height: height,
410
+ isDataTree: isDataTree,
411
+ selectionSettings: selectionSettings,
412
+ mergedSelectedKeys: mergedSelectedKeys,
413
+ expandable: expandable,
414
+ setColumns: setColumns,
415
+ columnFilters: columnFilters,
416
+ columnSizing: columnSizing,
417
+ columnSizingInfo: columnSizingInfo,
418
+ setColumnSizing: setColumnSizing,
419
+ rowSelection: rowSelection
420
+ })));
421
+ };
422
+ var _default = exports.default = InternalTable;