es-grid-template 1.8.71 → 1.8.72

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