es-grid-template 1.8.71 → 1.8.73

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 (251) hide show
  1. package/es/grid-component/TempTable.js +2 -1
  2. package/es/grid-component/type.d.ts +1 -3
  3. package/es/group-component/ColumnsChoose.d.ts +13 -0
  4. package/es/group-component/ColumnsChoose.js +211 -0
  5. package/es/group-component/ColumnsGroup/ColumnsGroup.d.ts +12 -0
  6. package/es/group-component/ColumnsGroup/ColumnsGroup.js +230 -0
  7. package/es/group-component/ColumnsGroup/index.d.ts +1 -0
  8. package/es/group-component/ColumnsGroup/index.js +1 -0
  9. package/es/group-component/ContextMenu.d.ts +19 -0
  10. package/es/group-component/ContextMenu.js +74 -0
  11. package/es/group-component/InternalTable.d.ts +8 -0
  12. package/es/group-component/InternalTable.js +224 -0
  13. package/es/group-component/TableContainer.d.ts +49 -0
  14. package/es/group-component/TableContainer.js +375 -0
  15. package/es/group-component/TableContainerEdit.d.ts +48 -0
  16. package/es/group-component/TableContainerEdit.js +2068 -0
  17. package/es/group-component/body/EditableCell.d.ts +16 -0
  18. package/es/group-component/body/EditableCell.js +1066 -0
  19. package/es/group-component/body/TableBody.d.ts +14 -0
  20. package/es/group-component/body/TableBody.js +82 -0
  21. package/es/group-component/body/TableBodyCell.d.ts +12 -0
  22. package/es/group-component/body/TableBodyCell.js +587 -0
  23. package/es/group-component/body/TableBodyCellEdit.d.ts +17 -0
  24. package/es/group-component/body/TableBodyCellEdit.js +1398 -0
  25. package/es/group-component/body/TableBodyCellEmpty.d.ts +12 -0
  26. package/es/group-component/body/TableBodyCellEmpty.js +149 -0
  27. package/es/group-component/body/TableBodyRow.d.ts +21 -0
  28. package/es/group-component/body/TableBodyRow.js +199 -0
  29. package/es/group-component/body/TableBodyRowGroupCell.d.ts +12 -0
  30. package/es/group-component/body/TableBodyRowGroupCell.js +567 -0
  31. package/es/group-component/components/ControlCheckbox.d.ts +13 -0
  32. package/es/group-component/components/ControlCheckbox.js +84 -0
  33. package/es/group-component/components/EditForm/EditForm.d.ts +27 -0
  34. package/es/group-component/components/EditForm/EditForm.js +394 -0
  35. package/es/group-component/components/EditForm/index.d.ts +1 -0
  36. package/es/group-component/components/EditForm/index.js +1 -0
  37. package/es/group-component/components/InputControl/InputControl.d.ts +27 -0
  38. package/es/group-component/components/InputControl/InputControl.js +118 -0
  39. package/es/group-component/components/InputControl/index.d.ts +1 -0
  40. package/es/group-component/components/InputControl/index.js +1 -0
  41. package/es/group-component/components/async-select/index.d.ts +11 -0
  42. package/es/group-component/components/async-select/index.js +38 -0
  43. package/es/group-component/components/async-table-select/index.d.ts +11 -0
  44. package/es/group-component/components/async-table-select/index.js +40 -0
  45. package/es/group-component/components/checkbox-control/index.d.ts +13 -0
  46. package/es/group-component/components/checkbox-control/index.js +40 -0
  47. package/es/group-component/components/checkbox-filter/CheckboxFilter.d.ts +18 -0
  48. package/es/group-component/components/checkbox-filter/CheckboxFilter.js +258 -0
  49. package/es/group-component/components/checkbox-filter/FilterSearch.d.ts +12 -0
  50. package/es/group-component/components/checkbox-filter/FilterSearch.js +36 -0
  51. package/es/group-component/components/command/Command.d.ts +10 -0
  52. package/es/group-component/components/command/Command.js +35 -0
  53. package/es/group-component/components/number/index.d.ts +12 -0
  54. package/es/group-component/components/number/index.js +42 -0
  55. package/es/group-component/components/number-range/index.d.ts +13 -0
  56. package/es/group-component/components/number-range/index.js +79 -0
  57. package/es/group-component/features/operator.d.ts +24 -0
  58. package/es/group-component/features/operator.js +62 -0
  59. package/es/group-component/footer/TableFooter.d.ts +7 -0
  60. package/es/group-component/footer/TableFooter.js +34 -0
  61. package/es/group-component/footer/TableFooterCell.d.ts +7 -0
  62. package/es/group-component/footer/TableFooterCell.js +66 -0
  63. package/es/group-component/footer/TableFooterRow.d.ts +8 -0
  64. package/es/group-component/footer/TableFooterRow.js +30 -0
  65. package/es/group-component/header/TableHead.d.ts +15 -0
  66. package/es/group-component/header/TableHead.js +98 -0
  67. package/es/group-component/header/TableHeadCell.d.ts +15 -0
  68. package/es/group-component/header/TableHeadCell.js +310 -0
  69. package/es/group-component/header/TableHeadCell2.d.ts +17 -0
  70. package/es/group-component/header/TableHeadCell2.js +321 -0
  71. package/es/group-component/header/TableHeadGroupCell.d.ts +17 -0
  72. package/es/group-component/header/TableHeadGroupCell.js +94 -0
  73. package/es/group-component/header/TableHeadRow.d.ts +15 -0
  74. package/es/group-component/header/TableHeadRow.js +52 -0
  75. package/es/group-component/header/renderFilter.d.ts +20 -0
  76. package/es/group-component/header/renderFilter.js +291 -0
  77. package/es/group-component/hook/convert.d.ts +1 -0
  78. package/es/group-component/hook/convert.js +28 -0
  79. package/es/group-component/hook/useColumns.d.ts +28 -0
  80. package/es/group-component/hook/useColumns.js +306 -0
  81. package/es/group-component/hook/useFilterOperator.d.ts +7 -0
  82. package/es/group-component/hook/useFilterOperator.js +33 -0
  83. package/es/group-component/hook/utils.d.ts +220 -0
  84. package/es/group-component/hook/utils.js +2340 -0
  85. package/es/group-component/index.d.ts +2 -0
  86. package/es/group-component/index.js +2 -0
  87. package/es/group-component/style.d.ts +22 -0
  88. package/es/group-component/style.js +48 -0
  89. package/es/group-component/style.scss +1438 -0
  90. package/es/group-component/table/Grid.d.ts +33 -0
  91. package/es/group-component/table/Grid.js +439 -0
  92. package/es/group-component/table/TableWrapper.d.ts +33 -0
  93. package/es/group-component/table/TableWrapper.js +250 -0
  94. package/es/group-component/useContext.d.ts +100 -0
  95. package/es/group-component/useContext.js +21 -0
  96. package/es/table-component/InternalTable.js +9 -2
  97. package/es/table-component/TableContainer.d.ts +1 -0
  98. package/es/table-component/TableContainer.js +6 -2
  99. package/es/table-component/TableContainerEdit.d.ts +1 -0
  100. package/es/table-component/TableContainerEdit.js +4 -2
  101. package/es/table-component/body/TableBodyCell.js +49 -40
  102. package/es/table-component/body/TableBodyCellEdit.js +9 -6
  103. package/es/table-component/body/TableBodyRow.js +4 -1
  104. package/es/table-component/header/TableHeadCell2.js +39 -3
  105. package/es/table-component/hook/utils.d.ts +1 -0
  106. package/es/table-component/hook/utils.js +15 -7
  107. package/es/table-component/style.js +1 -1
  108. package/es/table-component/table/Grid.d.ts +1 -0
  109. package/es/table-component/table/Grid.js +10 -3
  110. package/es/table-component/useContext.d.ts +6 -0
  111. package/es/table-component/useContext.js +2 -1
  112. package/es/table-virtuoso/InternalTable.js +2 -2
  113. package/es/table-virtuoso/body/TableBodyCell.js +2 -7
  114. package/es/table-virtuoso/body/TableBodyCellRowGroup.d.ts +14 -0
  115. package/es/table-virtuoso/body/TableBodyCellRowGroup.js +196 -0
  116. package/es/table-virtuoso/body/TableBodyRow.d.ts +1 -1
  117. package/es/table-virtuoso/body/TableBodyRow.js +43 -1
  118. package/es/table-virtuoso/hook/utils.d.ts +1 -0
  119. package/es/table-virtuoso/hook/utils.js +29 -0
  120. package/es/table-virtuoso/style.js +3 -1
  121. package/es/table-virtuoso/table/Grid.js +2 -2
  122. package/es/table-virtuoso/table/TableWrapper.d.ts +7 -1
  123. package/es/table-virtuoso/table/TableWrapper.js +24 -5
  124. package/es/table-virtuoso/useContext.d.ts +6 -3
  125. package/es/table-virtuoso/useContext.js +18 -0
  126. package/lib/grid-component/TempTable.js +2 -1
  127. package/lib/grid-component/type.d.ts +1 -3
  128. package/lib/group-component/ColumnsChoose.d.ts +13 -0
  129. package/lib/group-component/ColumnsChoose.js +221 -0
  130. package/lib/group-component/ColumnsGroup/ColumnsGroup.d.ts +12 -0
  131. package/lib/group-component/ColumnsGroup/ColumnsGroup.js +241 -0
  132. package/lib/group-component/ColumnsGroup/index.d.ts +1 -0
  133. package/lib/group-component/ColumnsGroup/index.js +16 -0
  134. package/lib/group-component/ContextMenu.d.ts +19 -0
  135. package/lib/group-component/ContextMenu.js +83 -0
  136. package/lib/group-component/InternalTable.d.ts +8 -0
  137. package/lib/group-component/InternalTable.js +233 -0
  138. package/lib/group-component/TableContainer.d.ts +49 -0
  139. package/lib/group-component/TableContainer.js +382 -0
  140. package/lib/group-component/TableContainerEdit.d.ts +48 -0
  141. package/lib/group-component/TableContainerEdit.js +2075 -0
  142. package/lib/group-component/body/EditableCell.d.ts +16 -0
  143. package/lib/group-component/body/EditableCell.js +1075 -0
  144. package/lib/group-component/body/TableBody.d.ts +14 -0
  145. package/lib/group-component/body/TableBody.js +91 -0
  146. package/lib/group-component/body/TableBodyCell.d.ts +12 -0
  147. package/lib/group-component/body/TableBodyCell.js +595 -0
  148. package/lib/group-component/body/TableBodyCellEdit.d.ts +17 -0
  149. package/lib/group-component/body/TableBodyCellEdit.js +1405 -0
  150. package/lib/group-component/body/TableBodyCellEmpty.d.ts +12 -0
  151. package/lib/group-component/body/TableBodyCellEmpty.js +156 -0
  152. package/lib/group-component/body/TableBodyRow.d.ts +21 -0
  153. package/lib/group-component/body/TableBodyRow.js +206 -0
  154. package/lib/group-component/body/TableBodyRowGroupCell.d.ts +12 -0
  155. package/lib/group-component/body/TableBodyRowGroupCell.js +575 -0
  156. package/lib/group-component/components/ControlCheckbox.d.ts +13 -0
  157. package/lib/group-component/components/ControlCheckbox.js +92 -0
  158. package/lib/group-component/components/EditForm/EditForm.d.ts +27 -0
  159. package/lib/group-component/components/EditForm/EditForm.js +404 -0
  160. package/lib/group-component/components/EditForm/index.d.ts +1 -0
  161. package/lib/group-component/components/EditForm/index.js +16 -0
  162. package/lib/group-component/components/InputControl/InputControl.d.ts +27 -0
  163. package/lib/group-component/components/InputControl/InputControl.js +127 -0
  164. package/lib/group-component/components/InputControl/index.d.ts +1 -0
  165. package/lib/group-component/components/InputControl/index.js +16 -0
  166. package/lib/group-component/components/async-select/index.d.ts +11 -0
  167. package/lib/group-component/components/async-select/index.js +47 -0
  168. package/lib/group-component/components/async-table-select/index.d.ts +11 -0
  169. package/lib/group-component/components/async-table-select/index.js +49 -0
  170. package/lib/group-component/components/checkbox-control/index.d.ts +13 -0
  171. package/lib/group-component/components/checkbox-control/index.js +48 -0
  172. package/lib/group-component/components/checkbox-filter/CheckboxFilter.d.ts +18 -0
  173. package/lib/group-component/components/checkbox-filter/CheckboxFilter.js +267 -0
  174. package/lib/group-component/components/checkbox-filter/FilterSearch.d.ts +12 -0
  175. package/lib/group-component/components/checkbox-filter/FilterSearch.js +44 -0
  176. package/lib/group-component/components/command/Command.d.ts +10 -0
  177. package/lib/group-component/components/command/Command.js +44 -0
  178. package/lib/group-component/components/number/index.d.ts +12 -0
  179. package/lib/group-component/components/number/index.js +50 -0
  180. package/lib/group-component/components/number-range/index.d.ts +13 -0
  181. package/lib/group-component/components/number-range/index.js +87 -0
  182. package/lib/group-component/features/operator.d.ts +24 -0
  183. package/lib/group-component/features/operator.js +67 -0
  184. package/lib/group-component/footer/TableFooter.d.ts +7 -0
  185. package/lib/group-component/footer/TableFooter.js +44 -0
  186. package/lib/group-component/footer/TableFooterCell.d.ts +7 -0
  187. package/lib/group-component/footer/TableFooterCell.js +75 -0
  188. package/lib/group-component/footer/TableFooterRow.d.ts +8 -0
  189. package/lib/group-component/footer/TableFooterRow.js +37 -0
  190. package/lib/group-component/header/TableHead.d.ts +15 -0
  191. package/lib/group-component/header/TableHead.js +107 -0
  192. package/lib/group-component/header/TableHeadCell.d.ts +15 -0
  193. package/lib/group-component/header/TableHeadCell.js +319 -0
  194. package/lib/group-component/header/TableHeadCell2.d.ts +17 -0
  195. package/lib/group-component/header/TableHeadCell2.js +330 -0
  196. package/lib/group-component/header/TableHeadGroupCell.d.ts +17 -0
  197. package/lib/group-component/header/TableHeadGroupCell.js +103 -0
  198. package/lib/group-component/header/TableHeadRow.d.ts +15 -0
  199. package/lib/group-component/header/TableHeadRow.js +59 -0
  200. package/lib/group-component/header/renderFilter.d.ts +20 -0
  201. package/lib/group-component/header/renderFilter.js +301 -0
  202. package/lib/group-component/hook/convert.d.ts +1 -0
  203. package/lib/group-component/hook/convert.js +34 -0
  204. package/lib/group-component/hook/useColumns.d.ts +28 -0
  205. package/lib/group-component/hook/useColumns.js +318 -0
  206. package/lib/group-component/hook/useFilterOperator.d.ts +7 -0
  207. package/lib/group-component/hook/useFilterOperator.js +40 -0
  208. package/lib/group-component/hook/utils.d.ts +220 -0
  209. package/lib/group-component/hook/utils.js +2468 -0
  210. package/lib/group-component/index.d.ts +2 -0
  211. package/lib/group-component/index.js +9 -0
  212. package/lib/group-component/style.d.ts +22 -0
  213. package/lib/group-component/style.js +55 -0
  214. package/lib/group-component/style.scss +1438 -0
  215. package/lib/group-component/table/Grid.d.ts +33 -0
  216. package/lib/group-component/table/Grid.js +444 -0
  217. package/lib/group-component/table/TableWrapper.d.ts +33 -0
  218. package/lib/group-component/table/TableWrapper.js +259 -0
  219. package/lib/group-component/useContext.d.ts +100 -0
  220. package/lib/group-component/useContext.js +27 -0
  221. package/lib/table-component/InternalTable.js +9 -2
  222. package/lib/table-component/TableContainer.d.ts +1 -0
  223. package/lib/table-component/TableContainer.js +6 -2
  224. package/lib/table-component/TableContainerEdit.d.ts +1 -0
  225. package/lib/table-component/TableContainerEdit.js +4 -2
  226. package/lib/table-component/body/TableBodyCell.js +49 -40
  227. package/lib/table-component/body/TableBodyCellEdit.js +9 -6
  228. package/lib/table-component/body/TableBodyRow.js +4 -1
  229. package/lib/table-component/header/TableHeadCell2.js +38 -2
  230. package/lib/table-component/hook/utils.d.ts +1 -0
  231. package/lib/table-component/hook/utils.js +16 -7
  232. package/lib/table-component/style.js +1 -1
  233. package/lib/table-component/table/Grid.d.ts +1 -0
  234. package/lib/table-component/table/Grid.js +10 -3
  235. package/lib/table-component/useContext.d.ts +6 -0
  236. package/lib/table-component/useContext.js +2 -1
  237. package/lib/table-virtuoso/InternalTable.js +2 -2
  238. package/lib/table-virtuoso/body/TableBodyCell.js +2 -7
  239. package/lib/table-virtuoso/body/TableBodyCellRowGroup.d.ts +14 -0
  240. package/lib/table-virtuoso/body/TableBodyCellRowGroup.js +203 -0
  241. package/lib/table-virtuoso/body/TableBodyRow.d.ts +1 -1
  242. package/lib/table-virtuoso/body/TableBodyRow.js +43 -1
  243. package/lib/table-virtuoso/hook/utils.d.ts +1 -0
  244. package/lib/table-virtuoso/hook/utils.js +32 -1
  245. package/lib/table-virtuoso/style.js +3 -1
  246. package/lib/table-virtuoso/table/Grid.js +2 -2
  247. package/lib/table-virtuoso/table/TableWrapper.d.ts +7 -1
  248. package/lib/table-virtuoso/table/TableWrapper.js +24 -5
  249. package/lib/table-virtuoso/useContext.d.ts +6 -3
  250. package/lib/table-virtuoso/useContext.js +18 -0
  251. package/package.json +1 -1
@@ -0,0 +1,224 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import customParseFormat from 'dayjs/plugin/customParseFormat';
3
+ import React, { Fragment, useState } from 'react';
4
+ import 'react-resizable/css/styles.css';
5
+ import dayjs from 'dayjs';
6
+ import 'dayjs/locale/es';
7
+ import 'dayjs/locale/vi';
8
+ import "./style.scss";
9
+ import { faker } from '@faker-js/faker';
10
+ import useMergedState from "rc-util/es/hooks/useMergedState";
11
+ import Grid from "./table/Grid";
12
+ import { addRowIdArray, convertFlatColumn1, convertToObj, convertToObjTrue, filterDataByColumns, findAllChildrenKeys2, flatColumns2, getAllRowKey, getDiffent2Array, getFixedFields, getInvisibleColumns, isTreeArray, updateWidthsByOther } from "./hook/utils";
13
+ import { convertToTanStackColumns } from "./hook/useColumns";
14
+ import { convertColumns } from "./hook/convert";
15
+ import { removeInvisibleColumns } from "../grid-component/hooks";
16
+ import { groupArrayByColumns } from "../table-virtuoso/hook/utils";
17
+ dayjs.extend(customParseFormat);
18
+ const InternalTable = props => {
19
+ const {
20
+ t,
21
+ columns: propsColumns,
22
+ // columns,
23
+ lang,
24
+ locale,
25
+ dataSource,
26
+ editAble,
27
+ format,
28
+ groupAble,
29
+ groupSetting,
30
+ groupColumns,
31
+ selectionSettings,
32
+ expandable,
33
+ onChooseColumns,
34
+ // contextMenuClick,
35
+ // contextMenuOpen,
36
+ height,
37
+ ...rest
38
+ } = props;
39
+ const id = React.useMemo(() => {
40
+ return faker.string.alpha(20);
41
+ }, []);
42
+ const {
43
+ defaultExpandedRowKeys,
44
+ defaultExpandAllRows
45
+ } = expandable || {};
46
+ const rowKey = 'rowId';
47
+ const prefix = 'ui-rc';
48
+ const getWindowSize = () => {
49
+ const {
50
+ innerWidth,
51
+ innerHeight
52
+ } = window;
53
+ return {
54
+ innerWidth,
55
+ innerHeight
56
+ };
57
+ };
58
+ const [windowSize, setWindowSize] = useState(getWindowSize());
59
+ React.useEffect(() => {
60
+ const handleWindowResize = () => {
61
+ setWindowSize(getWindowSize());
62
+ };
63
+ window.addEventListener('resize', handleWindowResize);
64
+ return () => {
65
+ window.removeEventListener('resize', handleWindowResize);
66
+ };
67
+ }, []);
68
+ const [filterStates, setFilterState] = React.useState(null);
69
+ const [sorterStates, setSorterStates] = React.useState([]);
70
+ const [isFullScreen, setIsFullScreen] = React.useState(false);
71
+ const [columns, setColumns] = React.useState([]);
72
+ React.useEffect(() => {
73
+ // setColumns(propsColumns as any)
74
+
75
+ setColumns(updateWidthsByOther(propsColumns, columns));
76
+ }, [propsColumns]);
77
+ const originData = React.useMemo(() => {
78
+ return addRowIdArray(dataSource);
79
+ }, [dataSource]);
80
+ const [expanded, setExpanded] = React.useState({});
81
+ const [columnPinning, setColumnPinning] = React.useState({});
82
+ const [columnVisibility, setColumnVisibility] = React.useState({});
83
+ const convertData = React.useMemo(() => {
84
+ if (groupAble && groupSetting?.client !== false) {
85
+ return groupArrayByColumns(originData, groupColumns);
86
+ }
87
+ return originData;
88
+ }, [originData, groupAble, groupColumns, groupSetting?.client]);
89
+ const mergedColumns = React.useMemo(() => {
90
+ return convertToTanStackColumns({
91
+ t,
92
+ columns,
93
+ format,
94
+ editAble
95
+ });
96
+
97
+ // return convertToTanStackColumns<RecordType>(columns)
98
+ }, [t, columns, format, editAble, groupColumns]);
99
+ const isDataTree = React.useMemo(() => {
100
+ return isTreeArray(convertData);
101
+ }, [convertData]);
102
+
103
+ // const isDataOriginTree = React.useMemo(() => {
104
+
105
+ // return isTreeArray(originData)
106
+
107
+ // }, [originData])
108
+
109
+ // const columnPinning = React.useMemo(() => {
110
+ // return {
111
+ // left: groupColumns ? [...getFixedFields(columns, 'left'), ...groupColumns] : getFixedFields(columns, 'left'),
112
+ // right: getFixedFields(columns, 'right')
113
+ // }
114
+ // }, [columns, groupColumns])
115
+
116
+ React.useEffect(() => {
117
+ const abc = {
118
+ // left: groupColumns ? [...getFixedFields(columns, 'left'), ...groupColumns] : getFixedFields(columns, 'left'),
119
+ left: getFixedFields(columns, 'left'),
120
+ right: getFixedFields(columns, 'right')
121
+ };
122
+ setColumnPinning(abc);
123
+ }, [columns]);
124
+
125
+ // ========================= Keys =========================
126
+ const [mergedFilterKeys, setMergedFilterKeys] = useMergedState(getAllRowKey(convertData), {
127
+ value: undefined
128
+ });
129
+ React.useEffect(() => {
130
+ if (defaultExpandAllRows) {
131
+ const allKeys = findAllChildrenKeys2(convertData, rowKey, 'children');
132
+ setExpanded(convertToObjTrue(allKeys));
133
+ } else {
134
+ if (defaultExpandedRowKeys) {
135
+ setExpanded(convertToObjTrue(defaultExpandedRowKeys ?? []));
136
+ }
137
+ }
138
+ }, [defaultExpandAllRows, convertData, defaultExpandedRowKeys]);
139
+
140
+ // ========================= Keys =========================
141
+
142
+ const {
143
+ selectedRowKeys,
144
+ defaultSelectedRowKeys
145
+ } = selectionSettings ?? {};
146
+ const [mergedSelectedKeys] = useMergedState(selectedRowKeys || defaultSelectedRowKeys || [], {
147
+ value: selectedRowKeys
148
+ });
149
+ const mergedData = React.useMemo(() => {
150
+ return filterDataByColumns(convertData, filterStates, sorterStates, mergedFilterKeys);
151
+ }, [convertData, filterStates, mergedFilterKeys, sorterStates]);
152
+ React.useEffect(() => {
153
+ const a = getInvisibleColumns(columns);
154
+
155
+ // const bcd = convertToObj(groupColumns)
156
+
157
+ setColumnVisibility({
158
+ ...a
159
+ });
160
+ }, [columns]);
161
+ const [columnsHiddenKeys, setColumnsHiddenKeys] = useMergedState(undefined, {
162
+ value: undefined
163
+ });
164
+ const triggerChangeColumns = (cols, keys, type) => {
165
+ if (type === 'cellClick') {
166
+ setColumns(cols);
167
+ } else {
168
+ const aa = flatColumns2(columns).map(it => it.field);
169
+ const rsss = getDiffent2Array(aa, keys);
170
+ setColumnsHiddenKeys(rsss);
171
+ onChooseColumns?.({
172
+ showColumns: removeInvisibleColumns([...cols]),
173
+ columns: [...cols],
174
+ flattenColumns: convertFlatColumn1([...cols])
175
+ });
176
+ }
177
+ };
178
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Grid, _extends({}, rest, {
179
+ t: t,
180
+ id: id,
181
+ prefix: prefix
182
+
183
+ // originData={convertData}
184
+ ,
185
+ originData: originData,
186
+ dataSource: mergedData,
187
+ locale: locale,
188
+ format: format
189
+ // columns={columns111 as any}
190
+ ,
191
+ columns: convertColumns(mergedColumns),
192
+ propsColumns: columns,
193
+ rowKey: rowKey,
194
+ groupSetting: groupSetting,
195
+ groupAble: groupAble,
196
+ groupColumns: groupColumns,
197
+ columnPinning: columnPinning,
198
+ setColumnPinning: setColumnPinning,
199
+ columnHidden: columnsHiddenKeys ? convertToObj(columnsHiddenKeys) : columnVisibility,
200
+ triggerFilter: setFilterState,
201
+ triggerSorter: setSorterStates,
202
+ setMergedFilterKeys: setMergedFilterKeys,
203
+ mergedFilterKeys: mergedFilterKeys,
204
+ expanded: expanded,
205
+ editAble: isFullScreen ? false : editAble,
206
+ triggerChangeColumns: triggerChangeColumns
207
+ // triggerGroupColumns={triggerGroupColumns}
208
+ ,
209
+
210
+ setExpanded: setExpanded,
211
+ isFullScreen: isFullScreen,
212
+ setIsFullScreen: setIsFullScreen,
213
+ windowSize: windowSize,
214
+ height: height,
215
+ isDataTree: isDataTree,
216
+ selectionSettings: selectionSettings,
217
+ mergedSelectedKeys: mergedSelectedKeys,
218
+ expandable: expandable,
219
+ setColumns: setColumns,
220
+ columnVisibility: columnVisibility,
221
+ setColumnVisibility: setColumnVisibility
222
+ })));
223
+ };
224
+ export default InternalTable;
@@ -0,0 +1,49 @@
1
+ import type { Dispatch, SetStateAction } from 'react';
2
+ import React from 'react';
3
+ import type { ColumnDef, ColumnSizingInfoState, ColumnSizingState, Table } from '@tanstack/react-table';
4
+ import type { ColumnsTable, TableProps } from './../grid-component/type';
5
+ type TableContainerProps<T> = Omit<TableProps<T>, 'columns'> & {
6
+ table: Table<T>;
7
+ prefix: string;
8
+ id: string;
9
+ rowKey: any;
10
+ originData: T[];
11
+ isSelectionChange?: {
12
+ isChange: boolean;
13
+ type: string;
14
+ rowData: T;
15
+ rowsData: T[];
16
+ };
17
+ setIsSelectionChange: Dispatch<SetStateAction<{
18
+ isChange: boolean;
19
+ type: string;
20
+ rowData: T;
21
+ rowsData: T[];
22
+ }>>;
23
+ setSorterChange: Dispatch<SetStateAction<boolean>>;
24
+ setFilterChange: Dispatch<SetStateAction<boolean>>;
25
+ onContextMenu?: (data: T) => (event: any) => void;
26
+ windowSize: {
27
+ innerHeight: number;
28
+ innerWidth: number;
29
+ };
30
+ triggerPaste?: (pastedRows: T[], pastedColumnsArray: string[], newData: T[], copyRows: T[]) => void;
31
+ mergedFilterKeys?: any;
32
+ setMergedFilterKeys?: any;
33
+ setExpanded?: any;
34
+ expanded?: any;
35
+ columns: ColumnDef<T>[];
36
+ propsColumns: ColumnsTable;
37
+ triggerChangeColumns: any;
38
+ columnHidden: any;
39
+ isFullScreen: boolean;
40
+ setIsFullScreen: Dispatch<SetStateAction<boolean>>;
41
+ isDataTree: boolean;
42
+ setColumnSizing: Dispatch<SetStateAction<any>>;
43
+ setColumns: Dispatch<SetStateAction<any>>;
44
+ columnSizingInfo: ColumnSizingInfoState;
45
+ columnSizing: ColumnSizingState;
46
+ triggerGroupColumns?: (groupedColumns: string[]) => void;
47
+ };
48
+ declare const TableContainer: <RecordType extends object>(props: TableContainerProps<RecordType>) => React.JSX.Element;
49
+ export default TableContainer;
@@ -0,0 +1,375 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import React from 'react';
3
+ import classNames from 'classnames';
4
+ import { TableContext } from "./useContext";
5
+ import Pagination from 'rc-master-ui/es/pagination';
6
+ import { Toolbar } from 'rc-master-ui';
7
+ import { Collapse2, Expand2, Maximize, Minimize } from 'becoxy-icons';
8
+ import { ColumnsChoose } from "./ColumnsChoose";
9
+ import { numericFormatter } from 'react-numeric-component';
10
+ import TableWrapper from "./table/TableWrapper";
11
+ import { getTableHeight, sumSize, updateColumnWidthsRecursive } from "./hook/utils";
12
+ import { useVirtualizer } from '@tanstack/react-virtual';
13
+ import { convertToObjTrue, findAllChildrenKeys2, flatColumns2, isObjEmpty } from "../table-component/hook/utils";
14
+ import { ColumnsGroup } from "./ColumnsGroup";
15
+ const TableContainer = props => {
16
+ const {
17
+ t,
18
+ table,
19
+ id,
20
+ prefix,
21
+ commandClick,
22
+ editAble,
23
+ rowKey,
24
+ format,
25
+ dataSource,
26
+ originData,
27
+ expandable,
28
+ wrapSettings,
29
+ recordDoubleClick,
30
+ // triggerFilter,
31
+ selectionSettings,
32
+ isSelectionChange,
33
+ setIsSelectionChange,
34
+ onContextMenu,
35
+ contextMenuItems,
36
+ setSorterChange,
37
+ setFilterChange,
38
+ height,
39
+ minHeight,
40
+ showToolbar,
41
+ toolbarItems,
42
+ actionTemplate,
43
+ pagination,
44
+ fullScreen,
45
+ showColumnChoose,
46
+ summary,
47
+ locale,
48
+ groupColumns,
49
+ columns,
50
+ propsColumns,
51
+ triggerChangeColumns,
52
+ columnHidden,
53
+ expanded,
54
+ setExpanded,
55
+ showEmptyText,
56
+ infiniteScroll,
57
+ next,
58
+ loading,
59
+ windowSize,
60
+ contextMenuOpen,
61
+ contextMenuClick,
62
+ contextMenuHidden,
63
+ isFullScreen,
64
+ setIsFullScreen,
65
+ isDataTree,
66
+ setColumns,
67
+ columnSizing,
68
+ columnSizingInfo,
69
+ rowClassName,
70
+ onRowStyles,
71
+ onRowFooterStyles,
72
+ onRowHeaderStyles,
73
+ title,
74
+ dataSourceFilter,
75
+ groupSetting,
76
+ triggerGroupColumns
77
+ } = props;
78
+ const tableContainerRef = React.useRef(null);
79
+ const containerRef = React.useRef(null);
80
+ const bottomToolbarRef = React.useRef(null);
81
+ const topToolbarRef = React.useRef(null);
82
+ const [tableHeight, settableHeight] = React.useState(0);
83
+ const [focusedCell, setFocusedCell] = React.useState(undefined);
84
+ React.useEffect(() => {
85
+ // const totalHeight = minHeight ?? height
86
+ const totalHeight = getTableHeight(height, minHeight);
87
+ if (totalHeight) {
88
+ const topHeight = topToolbarRef.current ? topToolbarRef.current.offsetHeight : 0;
89
+ const bottomHeight = bottomToolbarRef.current ? bottomToolbarRef.current.offsetHeight : 0;
90
+ settableHeight(totalHeight - topHeight - bottomHeight);
91
+ }
92
+ }, [id, height, editAble, minHeight]);
93
+ React.useEffect(() => {
94
+ const handleClickOutside = () => {
95
+ setFocusedCell(undefined);
96
+ setIsSelectionChange(prev => ({
97
+ ...prev,
98
+ isChange: false
99
+ }));
100
+ };
101
+ document.addEventListener('mousedown', handleClickOutside);
102
+ return () => {
103
+ document.removeEventListener('mousedown', handleClickOutside);
104
+ };
105
+ }, []);
106
+ const visibleColumns = table.getVisibleLeafColumns();
107
+ const fixedLeftColumns = table.getState().columnPinning.left ? visibleColumns.filter(vc => table.getState().columnPinning.left?.includes(vc.id)) : [];
108
+ const fixedRightColumns = table.getState().columnPinning.right ? visibleColumns.filter(vc => table.getState().columnPinning.right?.includes(vc.id)) : [];
109
+
110
+ //we are using a slightly different virtualization strategy for columns (compared to virtual rows) in order to support dynamic row heights
111
+ const columnVirtualizer = useVirtualizer({
112
+ count: visibleColumns.length,
113
+ estimateSize: index => visibleColumns[index].getSize(),
114
+ //estimate width of each column for accurate scrollbar dragging
115
+ getScrollElement: () => tableContainerRef.current,
116
+ horizontal: true,
117
+ // measureElement(element) {
118
+
119
+ // return element?.getBoundingClientRect().width;
120
+ // },
121
+
122
+ measureElement: typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1 ? element => element?.getBoundingClientRect().height : undefined,
123
+ overscan: 3 //how many columns to render on each side off screen each way (adjust this for performance)
124
+ });
125
+ const virtualColumns = columnVirtualizer.getVirtualItems();
126
+ const cacheColumns = columnVirtualizer.measurementsCache;
127
+ const rightCols = table.getState().columnPinning.right?.length ? [...cacheColumns].slice(-(table.getState().columnPinning.right?.length ?? 0)) : [];
128
+ const leftCols = [...cacheColumns].slice(0, table.getState().columnPinning.left?.length ?? 0);
129
+ const rightWidth = sumSize(rightCols);
130
+ const leftWidth = sumSize(leftCols);
131
+
132
+ //different virtualization strategy for columns - instead of absolute and translateY, we add empty columns to the left and right
133
+ let virtualPaddingLeft;
134
+ let virtualPaddingRight;
135
+ const pdRight = columnVirtualizer.getTotalSize() - (virtualColumns[virtualColumns.length - 1]?.end ?? 0);
136
+ if (columnVirtualizer && virtualColumns?.length) {
137
+ virtualPaddingLeft = fixedLeftColumns && fixedLeftColumns.length > 0 ? (virtualColumns[0]?.start ?? 0) - leftWidth > 0 ? (virtualColumns[0]?.start ?? 0) - leftWidth : 0 : virtualColumns[0]?.start ?? 0;
138
+
139
+ // virtualPaddingLeft = leftCols.length === rss.length ? (virtualColumns[0]?.start ?? 0) : 0;
140
+ // columnVirtualizer.getTotalSize() - (virtualColumns[virtualColumns.length - 1]?.end ?? 0) - rightWidth > 0 ? columnVirtualizer.getTotalSize() - (virtualColumns[virtualColumns.length - 1]?.end ?? 0) - rightWidth : 0;
141
+ virtualPaddingRight = fixedRightColumns && fixedRightColumns.length > 0 ? pdRight - rightWidth > 0 ? pdRight - rightWidth : 0 : pdRight;
142
+ // virtualPaddingRight = columnVirtualizer.getTotalSize() - (virtualColumns[virtualColumns.length - 1]?.end ?? 0)
143
+ }
144
+ const columnSizingState = table.getState().columnSizing;
145
+ React.useEffect(() => {
146
+ requestAnimationFrame(() => {
147
+ columnVirtualizer.measure();
148
+ });
149
+ }, [columnSizingState, columnVirtualizer]);
150
+ React.useEffect(() => {
151
+ if (!tableContainerRef.current) {
152
+ return;
153
+ }
154
+
155
+ // const containerWidth = tableContainerRef.current.offsetWidth
156
+ // const totalWidth = table.getTotalSize()
157
+
158
+ // if (totalWidth && totalWidth <= containerWidth) {
159
+
160
+ // return
161
+
162
+ // }
163
+
164
+ if (columnSizingInfo.isResizingColumn === false) {
165
+ const aa = updateColumnWidthsRecursive(propsColumns, columnSizing);
166
+ setColumns(aa);
167
+
168
+ // requestAnimationFrame(() => {
169
+
170
+ // columnVirtualizer.measure()
171
+ // })
172
+ }
173
+ }, [columnSizingInfo]);
174
+ const triggerCommandClick = args => {
175
+ // const { id: idCommand, rowId, rowData, index } = args
176
+
177
+ // const tmpData = [...dataSource]
178
+
179
+ if (commandClick) {
180
+ commandClick({
181
+ ...args,
182
+ rows: originData
183
+ });
184
+ }
185
+ };
186
+ const handleOnGroup = value => {
187
+ triggerGroupColumns?.(value);
188
+ };
189
+ const handleCollapseAllGroup = () => {
190
+ setExpanded({});
191
+ };
192
+ const handleExpandAllGroup = () => {
193
+ const allKeys = findAllChildrenKeys2(dataSource, rowKey, 'children');
194
+ setExpanded(convertToObjTrue(allKeys));
195
+ };
196
+ const groupToolbar = () => {
197
+ return /*#__PURE__*/React.createElement("div", {
198
+ style: {
199
+ display: 'flex',
200
+ gap: '10px',
201
+ marginRight: 10
202
+ }
203
+ }, groupSetting?.showGroupIcon !== false && /*#__PURE__*/React.createElement(ColumnsGroup, {
204
+ t: t
205
+ // defaultGroupColumns={['name']}
206
+ ,
207
+ unClearableLevel: groupSetting?.unClearableLevel
208
+ // unClearableLevel={2}
209
+ ,
210
+ columns: propsColumns ? flatColumns2(propsColumns) : [],
211
+ columnsGrouped: groupColumns,
212
+ onSubmit: handleOnGroup
213
+ }), /*#__PURE__*/React.createElement(React.Fragment, null, !isObjEmpty(expanded) ? /*#__PURE__*/React.createElement(Collapse2, {
214
+ fontSize: 16,
215
+ color: '#555555',
216
+ onClick: handleCollapseAllGroup
217
+ }) : /*#__PURE__*/React.createElement(Expand2, {
218
+ fontSize: 16,
219
+ color: '#555555',
220
+ onClick: handleExpandAllGroup
221
+ })));
222
+ };
223
+ return /*#__PURE__*/React.createElement("div", {
224
+ ref: containerRef,
225
+ id: id
226
+ }, (showToolbar !== false || fullScreen !== false || title) && /*#__PURE__*/React.createElement("div", {
227
+ ref: topToolbarRef,
228
+ className: classNames(`${prefix}-grid-top-toolbar`, {})
229
+ }, /*#__PURE__*/React.createElement("div", {
230
+ style: {
231
+ textAlign: 'center'
232
+ }
233
+ }, typeof title === 'function' ? title?.(originData) : title), /*#__PURE__*/React.createElement("div", {
234
+ style: {
235
+ display: 'flex',
236
+ justifyContent: 'space-between',
237
+ alignItems: 'center',
238
+ gap: '.75rem'
239
+ }
240
+ }, groupToolbar(), /*#__PURE__*/React.createElement("div", {
241
+ style: {
242
+ flex: 1,
243
+ overflow: 'hidden'
244
+ }
245
+ }, /*#__PURE__*/React.createElement(Toolbar, {
246
+ items: (toolbarItems ?? []).filter(it => it.position !== 'Bottom'),
247
+ mode: 'scroll'
248
+ })), /*#__PURE__*/React.createElement("div", {
249
+ style: {
250
+ display: 'flex',
251
+ justifyContent: 'space-between',
252
+ alignItems: 'center',
253
+ gap: '.75rem'
254
+ }
255
+ }, pagination && pagination.onChange && pagination?.position && pagination?.position[0] === 'topRight' && /*#__PURE__*/React.createElement(Pagination, _extends({
256
+ showSizeChanger: true,
257
+ responsive: true,
258
+ size: 'small',
259
+ rootClassName: 'top-pagination',
260
+ showTotal: (totalItems, range) =>
261
+ // @ts-ignore
262
+ `${range[0]}-${range[1]} / ${totalItems} ${t ? t(pagination?.locale?.items ?? 'items') : 'items'}`
263
+ }, pagination)), typeof actionTemplate === 'function' ? actionTemplate() : actionTemplate, fullScreen !== false && (isFullScreen ? /*#__PURE__*/React.createElement(Minimize, {
264
+ fontSize: 16,
265
+ onClick: () => {
266
+ setIsFullScreen(!isFullScreen);
267
+ },
268
+ "data-tooltip-id": `${id}-tooltip-content`,
269
+ "data-tooltip-content": t ? t('Minimized') : 'Minimized'
270
+ }) : /*#__PURE__*/React.createElement(Maximize, {
271
+ fontSize: 16,
272
+ onClick: () => {
273
+ setIsFullScreen(!isFullScreen);
274
+ },
275
+ "data-tooltip-id": `${id}-tooltip-content`,
276
+ "data-tooltip-content": t ? t('Full screen') : 'Full screen'
277
+ })), showColumnChoose && /*#__PURE__*/React.createElement(ColumnsChoose, {
278
+ columnHidden: columnHidden,
279
+ columns: columns,
280
+ originColumns: propsColumns,
281
+ t: t,
282
+ columnsGroup: groupColumns,
283
+ triggerChangeColumns: triggerChangeColumns
284
+ })))), /*#__PURE__*/React.createElement(TableContext.Provider, {
285
+ value: {
286
+ t,
287
+ locale,
288
+ prefix,
289
+ id,
290
+ rowKey,
291
+ format,
292
+ expandable,
293
+ expanded,
294
+ setExpanded,
295
+ dataSource,
296
+ originData,
297
+ // triggerFilter,
298
+ wrapSettings,
299
+ recordDoubleClick,
300
+ selectionSettings,
301
+ isSelectionChange,
302
+ setIsSelectionChange,
303
+ onContextMenu,
304
+ setSorterChange,
305
+ setFilterChange,
306
+ windowSize,
307
+ isDataTree,
308
+ focusedCell,
309
+ setFocusedCell,
310
+ rowClassName,
311
+ onRowStyles,
312
+ onRowFooterStyles,
313
+ onRowHeaderStyles,
314
+ table,
315
+ pagination,
316
+ dataSourceFilter,
317
+ groupColumns
318
+ }
319
+ }, /*#__PURE__*/React.createElement(TableWrapper, {
320
+ contextMenuItems: contextMenuItems,
321
+ height: tableHeight,
322
+ minHeight: minHeight,
323
+ id: id,
324
+ prefix: prefix,
325
+ table: table,
326
+ tableContainerRef: tableContainerRef,
327
+ commandClick: triggerCommandClick,
328
+ contextMenuClick: contextMenuClick,
329
+ contextMenuHidden: contextMenuHidden,
330
+ contextMenuOpen: contextMenuOpen,
331
+ editAble: editAble,
332
+ showEmptyText: showEmptyText,
333
+ summary: summary,
334
+ dataSource: dataSource,
335
+ infiniteScroll: infiniteScroll,
336
+ next: next,
337
+ loading: loading,
338
+ columnVirtualizer: columnVirtualizer,
339
+ virtualPaddingLeft: virtualPaddingLeft,
340
+ virtualPaddingRight: virtualPaddingRight,
341
+ fixedLeftColumns: fixedLeftColumns,
342
+ fixedRightColumns: fixedRightColumns
343
+ })), /*#__PURE__*/React.createElement("div", {
344
+ ref: bottomToolbarRef
345
+ }, pagination && !infiniteScroll && /*#__PURE__*/React.createElement(Pagination
346
+ // style={{padding: '0.75rem 1rem'}}
347
+ , _extends({
348
+ pageSizeOptions: [20, 50, 100, 1000, 10000]
349
+ }, pagination, {
350
+ rootClassName: 'pagination-template',
351
+ showSizeChanger: true,
352
+ responsive: true,
353
+ size: 'small',
354
+ total: pagination.total,
355
+ pageSize: pagination.onChange ? pagination.pageSize : table.getState().pagination.pageSize,
356
+ showTotal: (totalItems, range) => `${numericFormatter((range[0] ?? 0).toString(), {
357
+ thousandSeparator: '.'
358
+ })}-${numericFormatter((range[1] ?? 0).toString(), {
359
+ thousandSeparator: '.'
360
+ })} / ${numericFormatter((totalItems ?? 0).toString(), {
361
+ thousandSeparator: '.'
362
+ })} items`,
363
+ onChange: (page, pageSize1) => {
364
+ if (pagination.onChange) {
365
+ pagination.onChange(page, pageSize1);
366
+ table.setPageIndex(page - 1);
367
+ table.setPageSize(pageSize1);
368
+ } else {
369
+ table.setPageIndex(page - 1);
370
+ table.setPageSize(pageSize1);
371
+ }
372
+ }
373
+ }))));
374
+ };
375
+ export default TableContainer;
@@ -0,0 +1,48 @@
1
+ import type { Dispatch, SetStateAction } from "react";
2
+ import React from "react";
3
+ import type { ColumnDef, ColumnSizingInfoState, ColumnSizingState, Table } from "@tanstack/react-table";
4
+ import type { ColumnsTable, TableProps } from "./../grid-component/type";
5
+ type TableContainerProps<T> = Omit<TableProps<T>, 'columns'> & {
6
+ table: Table<T>;
7
+ prefix: string;
8
+ id: string;
9
+ rowKey: any;
10
+ originData: T[];
11
+ propsColumns: ColumnsTable;
12
+ isSelectionChange?: {
13
+ isChange: boolean;
14
+ type: string;
15
+ rowData: T;
16
+ rowsData: T[];
17
+ };
18
+ setIsSelectionChange: Dispatch<SetStateAction<{
19
+ isChange: boolean;
20
+ type: string;
21
+ rowData: T;
22
+ rowsData: T[];
23
+ }>>;
24
+ setSorterChange: Dispatch<SetStateAction<boolean>>;
25
+ setFilterChange: Dispatch<SetStateAction<boolean>>;
26
+ onContextMenu?: (data: T) => (event: any) => void;
27
+ isDataTree: boolean;
28
+ windowSize: {
29
+ innerHeight: number;
30
+ innerWidth: number;
31
+ };
32
+ mergedFilterKeys?: any;
33
+ setMergedFilterKeys?: any;
34
+ setExpanded?: any;
35
+ expanded?: any;
36
+ columns: ColumnDef<T>[];
37
+ triggerChangeColumns: any;
38
+ columnHidden: any;
39
+ isFullScreen: boolean;
40
+ setIsFullScreen: Dispatch<SetStateAction<boolean>>;
41
+ setColumnSizing: Dispatch<SetStateAction<any>>;
42
+ setColumns: Dispatch<SetStateAction<any>>;
43
+ columnSizingInfo: ColumnSizingInfoState;
44
+ columnSizing: ColumnSizingState;
45
+ triggerGroupColumns?: (groupedColumns: string[]) => void;
46
+ };
47
+ declare const TableContainerEdit: <RecordType extends object>(props: TableContainerProps<RecordType>) => React.JSX.Element;
48
+ export default TableContainerEdit;