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,33 @@
1
+ import type { ColumnDef, ColumnPinningState, ExpandedState, VisibilityState } from '@tanstack/react-table';
2
+ import type { ColumnsTable, Sorter, TableProps } from '../../grid-component/type';
3
+ import type { Dispatch, Key, SetStateAction } from 'react';
4
+ import React from 'react';
5
+ type Props<T> = Omit<TableProps<T>, 'columns'> & {
6
+ id: string;
7
+ rowKey: string;
8
+ prefix: string;
9
+ columns: ColumnDef<T>[];
10
+ propsColumns: ColumnsTable<T>;
11
+ setColumns: Dispatch<SetStateAction<ColumnsTable<T>>>;
12
+ columnHidden: VisibilityState;
13
+ expanded: ExpandedState;
14
+ setExpanded: any;
15
+ columnPinning: ColumnPinningState;
16
+ setColumnPinning: Dispatch<SetStateAction<ColumnPinningState>>;
17
+ originData: T[];
18
+ mergedFilterKeys: any;
19
+ setMergedFilterKeys: any;
20
+ isFullScreen: boolean;
21
+ setIsFullScreen: Dispatch<SetStateAction<boolean>>;
22
+ triggerFilter: Dispatch<SetStateAction<any>>;
23
+ triggerSorter: Dispatch<SetStateAction<Sorter[]>>;
24
+ onContextMenu?: (data: T) => (event: any) => void;
25
+ triggerChangeColumns?: (args: any, keys: any, type: string) => void;
26
+ windowSize: any;
27
+ isDataTree: boolean;
28
+ mergedSelectedKeys: Key[];
29
+ columnVisibility?: any;
30
+ setColumnVisibility?: Dispatch<SetStateAction<any>>;
31
+ };
32
+ declare const Grid: <RecordType extends object>(props: Props<RecordType>) => React.JSX.Element;
33
+ export default Grid;
@@ -0,0 +1,439 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { Modal } from 'antd';
3
+ import { faker } from '@faker-js/faker';
4
+ import { getCoreRowModel, getExpandedRowModel,
5
+ // getFilteredRowModel,
6
+ getGroupedRowModel, getPaginationRowModel,
7
+ // getSortedRowModel,
8
+ useReactTable } from '@tanstack/react-table';
9
+ // import { makeData } from "../default/makeData";
10
+
11
+ import { DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, useSensor, useSensors } from '@dnd-kit/core';
12
+ import { restrictToHorizontalAxis } from '@dnd-kit/modifiers';
13
+ import { arrayMove } from '@dnd-kit/sortable';
14
+ import React, { Fragment } from 'react';
15
+ import TableContainer from "../TableContainer";
16
+ import { OperatorFeature } from "../features/operator";
17
+ import { convertFilters, convertToObjTrue, filterByIds, filterDataByColumns, fixColumnsLeft, getAllRowKey, isObjEqual, sortByType, sortColumnsByField } from "../hook/utils";
18
+ import TableContainerEdit from "../TableContainerEdit";
19
+ import classNames from 'classnames';
20
+ import { GridStyle } from "../style";
21
+ import { flatColumns2, removeColumns } from "../../table-component/hook/utils";
22
+ const Grid = props => {
23
+ const {
24
+ theme,
25
+ t,
26
+ id,
27
+ prefix,
28
+ dataSource,
29
+ originData,
30
+ columns,
31
+ propsColumns,
32
+ setColumns,
33
+ pagination,
34
+ expanded,
35
+ setExpanded,
36
+ columnHidden,
37
+ columnPinning,
38
+ setColumnPinning,
39
+ selectionSettings,
40
+ rowSelected,
41
+ sortMultiple,
42
+ triggerSorter,
43
+ triggerFilter,
44
+ setMergedFilterKeys,
45
+ onSorter,
46
+ onFilter,
47
+ allowFiltering,
48
+ allowSortering,
49
+ groupColumns,
50
+ // height= 700,
51
+ height,
52
+ minHeight,
53
+ editAble,
54
+ triggerChangeColumns,
55
+ infiniteScroll,
56
+ mergedSelectedKeys,
57
+ allowResizing,
58
+ windowSize,
59
+ fullScreenTitle,
60
+ className: tableClassNames,
61
+ groupSetting,
62
+ ...rest
63
+ } = props;
64
+ const [columnResizeMode] = React.useState('onChange');
65
+ const [columnResizeDirection] = React.useState('ltr');
66
+ const [paginationState, setPagination] = React.useState({
67
+ pageIndex: pagination && pagination.currentPage ? pagination.currentPage - 1 : 0,
68
+ pageSize: pagination && pagination.pageSize ? pagination.pageSize : 20
69
+ });
70
+
71
+ // const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})
72
+
73
+ // const [rowSelection, setRowSelection] = React.useState<RowSelectionState>(convertToObjTrue(selectionSettings?.selectedRowKeys ?? []))
74
+ const [rowSelection, setRowSelection] = React.useState({});
75
+ // const [rowsSelected, setRowsSelected] = React.useState<RecordType[]>([])
76
+
77
+ const [grouping, setGrouping] = React.useState([]);
78
+ const [columnSizing, setColumnSizing] = React.useState({});
79
+ const [columnSizingInfo, setColumnSizingInfo] = React.useState({});
80
+ // const [manualUpdate, setManualUpdate] = React.useState(false)
81
+ // const [manualResize, setManualResize] = React.useState(false)
82
+
83
+ const [columnFilters, setColumnFilters] = React.useState([]);
84
+ const [operator, setOperator] = React.useState([]);
85
+ const [sorting, setSorting] = React.useState([]);
86
+ const [columnOrder, setColumnOrder] = React.useState(() => columns.map(c => c.id));
87
+ const [isSelectionChange, setIsSelectionChange] = React.useState({
88
+ isChange: false,
89
+ type: '',
90
+ rowData: {},
91
+ rowsData: []
92
+ });
93
+ const [sorterChange, setSorterChange] = React.useState(false);
94
+ const [filterChange, setFilterChange] = React.useState(false);
95
+ const [isFullScreen, setIsFullScreen] = React.useState(false);
96
+ const table = useReactTable({
97
+ _features: [OperatorFeature],
98
+ data: dataSource,
99
+ columns: columns,
100
+ state: {
101
+ rowSelection,
102
+ expanded,
103
+ columnPinning,
104
+ columnVisibility: columnHidden,
105
+ pagination: pagination && !infiniteScroll ? paginationState : undefined,
106
+ grouping,
107
+ columnSizing,
108
+ columnOrder,
109
+ columnFilters,
110
+ operator,
111
+ sorting
112
+ },
113
+ getCoreRowModel: getCoreRowModel(),
114
+ getRowId(originalRow) {
115
+ return originalRow.rowId;
116
+ },
117
+ getSubRows: row => row.children,
118
+ // RowSelection
119
+ enableSubRowSelection: selectionSettings && selectionSettings.mode === 'checkbox' && selectionSettings.type !== 'single',
120
+ enableMultiRowSelection: selectionSettings && (selectionSettings.mode === 'checkbox' || selectionSettings.type !== 'single'),
121
+ // enableRowSelection: true,
122
+ enableRowSelection: row => {
123
+ if (selectionSettings?.getCheckboxProps) {
124
+ return !selectionSettings?.getCheckboxProps(row.original)?.disabled;
125
+ }
126
+ return true;
127
+ },
128
+ initialState: {
129
+ rowSelection: {}
130
+ },
131
+ onRowSelectionChange: setRowSelection,
132
+ // RowSelection
133
+
134
+ // ColumnSizing
135
+ enableColumnResizing: allowResizing !== false,
136
+ columnResizeMode,
137
+ columnResizeDirection,
138
+ onColumnSizingChange: setColumnSizing,
139
+ onColumnSizingInfoChange: setColumnSizingInfo,
140
+ // ColumnSizing
141
+
142
+ // ColumnSorting
143
+ // getSortedRowModel: getSortedRowModel(),
144
+ onSortingChange: setSorting,
145
+ enableMultiSort: sortMultiple !== false,
146
+ isMultiSortEvent: () => sortMultiple === false ? false : true,
147
+ enableSorting: allowSortering !== false,
148
+ // ColumnSorting
149
+
150
+ enableFilters: allowFiltering !== false,
151
+ onColumnFiltersChange: setColumnFilters,
152
+ onColumnOperatorChange: setOperator,
153
+ // getFilteredRowModel: getFilteredRowModel(),
154
+
155
+ onColumnOrderChange: setColumnOrder,
156
+ onGroupingChange: setGrouping,
157
+ getGroupedRowModel: getGroupedRowModel(),
158
+ // onExpandedChange: setExpanded,
159
+ getExpandedRowModel: getExpandedRowModel(),
160
+ getPaginationRowModel: pagination && !infiniteScroll ? getPaginationRowModel() : undefined,
161
+ onPaginationChange: setPagination,
162
+ // onColumnVisibilityChange: setColumnVisibility,
163
+ onColumnPinningChange: setColumnPinning
164
+
165
+ // debugTable: true
166
+ });
167
+ React.useEffect(() => {
168
+ if (columnHidden) {
169
+ const abb = table.getVisibleLeafColumns()?.[0];
170
+ if (abb && Object.keys(columnSizingInfo).length === 0) {
171
+ setColumnSizing({
172
+ [abb.id]: abb.getSize()
173
+ });
174
+ }
175
+ }
176
+ }, [columnHidden, columnSizingInfo]);
177
+ React.useEffect(() => {
178
+ const isEqual = isObjEqual(convertToObjTrue(mergedSelectedKeys), rowSelection);
179
+ if (!isEqual) {
180
+ setRowSelection(convertToObjTrue(mergedSelectedKeys));
181
+ }
182
+ }, [mergedSelectedKeys]);
183
+ React.useEffect(() => {
184
+ if (isSelectionChange.isChange) {
185
+ const aa = table.getState().rowSelection;
186
+ const ids = Object.keys(aa);
187
+
188
+ // const ssss = dataTable.filter(it => ids.includes(it.id)) // lấy rowsData của trang hiện tại
189
+ const ssss = filterByIds(ids, isSelectionChange.rowsData ?? []); // lấy rowsData của trang hiện tại
190
+
191
+ const rs = ssss.map(it => it.original);
192
+ rowSelected?.({
193
+ type: isSelectionChange.type,
194
+ rowData: isSelectionChange.rowData,
195
+ selected: rs
196
+ });
197
+ }
198
+ }, [isSelectionChange, rowSelection, table.getState().rowSelection]);
199
+ React.useEffect(() => {
200
+ if (sorterChange) {
201
+ const aa = table.getState().sorting;
202
+ const rs = aa.map(it => {
203
+ return {
204
+ columnKey: it.id,
205
+ field: it.id,
206
+ order: it.desc ? 'descend' : 'ascend'
207
+ };
208
+ });
209
+ if (onSorter) {
210
+ onSorter?.(rs);
211
+ } else {
212
+ triggerSorter(rs);
213
+ }
214
+ }
215
+ }, [sorterChange, sorting, table]);
216
+ React.useEffect(() => {
217
+ if (filterChange) {
218
+ // const filterState = table.getState().columnFilters
219
+ const operatorState = table.getState().operator;
220
+ const merged = columnFilters.map(filter => {
221
+ const match = operatorState.find(op => op.id === filter.id);
222
+ const col = table.getVisibleFlatColumns().find(it => it.id === filter.id)?.columnDef.meta;
223
+ return {
224
+ field: filter.id,
225
+ key: filter.id,
226
+ column: col,
227
+ filteredKeys: filter.value,
228
+ operator: match ? match.operator : undefined
229
+ // ...(match && { operator: match.operator })
230
+ };
231
+ });
232
+ if (onFilter) {
233
+ onFilter?.(convertFilters(merged));
234
+ } else {
235
+ triggerFilter(convertFilters(merged));
236
+ const b = filterDataByColumns(originData, convertFilters(merged), [], []);
237
+ setMergedFilterKeys(getAllRowKey(b));
238
+ }
239
+ }
240
+ }, [filterChange, onFilter, originData, setMergedFilterKeys, table, triggerFilter, columnFilters]);
241
+
242
+ // reorder columns after drag & drop
243
+ function handleDragEnd(event) {
244
+ const {
245
+ active,
246
+ over
247
+ } = event;
248
+ if (active && over && active.id !== over.id) {
249
+ setColumnOrder(cols => {
250
+ const oldIndex = cols.indexOf(active.id);
251
+ const newIndex = cols.indexOf(over.id);
252
+ return arrayMove(cols, oldIndex, newIndex); //this is just a splice util
253
+ });
254
+ }
255
+ }
256
+ const triggerGroupColumns = groupedColumns => {
257
+ // const abcd = updateColumnsByGroup(columns, groupedColumns)
258
+
259
+ const aaa = fixColumnsLeft(propsColumns, groupedColumns);
260
+ const abc = sortColumnsByField(aaa, groupedColumns);
261
+
262
+ // const bcd = convertToObj(groupedColumns)
263
+
264
+ // const bbb = updateWidthsByOther(propsColumns, abc)
265
+
266
+ setColumns(sortByType(abc));
267
+
268
+ // const a = getInvisibleColumns(columns)
269
+
270
+ // const prev = groupColumns ?? []
271
+
272
+ // const bbb = prev.filter(item => !groupedColumns.includes(item))
273
+
274
+ // const ccc = removeKeys(columnVisibility, bbb)
275
+
276
+ // const rs = { ...ccc, ...bcd }
277
+
278
+ // setColumnVisibility(rs)
279
+
280
+ // table.setColumnVisibility(rs)
281
+
282
+ if (groupSetting) {
283
+ if (groupSetting.onGroup) {
284
+ groupSetting.onGroup({
285
+ columnGrouped: groupedColumns,
286
+ columns: removeColumns(columns, groupedColumns),
287
+ flattenColumns: flatColumns2(removeColumns(columns, groupedColumns))
288
+ });
289
+ }
290
+ if (groupSetting.client === false) {
291
+
292
+ // group server => không xử lý gì
293
+ } else {
294
+ // group client
295
+
296
+ table.resetRowSelection();
297
+ table.resetExpanded();
298
+ setRowSelection({});
299
+ setExpanded({});
300
+ }
301
+ }
302
+ };
303
+ const sensors = useSensors(useSensor(MouseSensor, {}), useSensor(TouchSensor, {}), useSensor(KeyboardSensor, {}));
304
+ const ContainerComponent = editAble ? TableContainerEdit : TableContainer;
305
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(GridStyle, {
306
+ $prefix: prefix,
307
+ $theme: {
308
+ theme: theme?.theme,
309
+ ...theme
310
+ },
311
+ className: classNames(`${prefix}-grid ${tableClassNames}`, {
312
+ [`${prefix}-grid-light`]: !theme || theme.theme === 'light',
313
+ [`${prefix}-grid-dark`]: theme?.theme === 'dark',
314
+ [`${prefix}-grid-editable`]: editAble
315
+ }),
316
+ style: {
317
+ minHeight: minHeight ?? undefined,
318
+ maxHeight: height ?? undefined,
319
+ backgroundColor: theme?.backgroundColor ?? undefined
320
+ }
321
+ }, /*#__PURE__*/React.createElement(DndContext, {
322
+ collisionDetection: closestCenter,
323
+ modifiers: [restrictToHorizontalAxis],
324
+ onDragEnd: handleDragEnd,
325
+ sensors: sensors
326
+ }, /*#__PURE__*/React.createElement(ContainerComponent, _extends({}, rest, {
327
+ id: id,
328
+ t: t,
329
+ windowSize: windowSize,
330
+ table: table,
331
+ editAble: editAble,
332
+ dataSource: dataSource,
333
+ originData: originData,
334
+ prefix: prefix,
335
+ selectionSettings: selectionSettings,
336
+ isSelectionChange: isSelectionChange,
337
+ setIsSelectionChange: setIsSelectionChange,
338
+ setSorterChange: setSorterChange,
339
+ setFilterChange: setFilterChange,
340
+ height: height ?? minHeight ?? 700,
341
+ minHeight: minHeight,
342
+ pagination: pagination,
343
+ columns: columns,
344
+ groupColumns: groupColumns,
345
+ propsColumns: propsColumns,
346
+ triggerChangeColumns: triggerChangeColumns,
347
+ columnHidden: columnHidden,
348
+ setExpanded: setExpanded,
349
+ expanded: expanded,
350
+ infiniteScroll: infiniteScroll,
351
+ setMergedFilterKeys: setMergedFilterKeys,
352
+ triggerGroupColumns: triggerGroupColumns,
353
+ setColumnSizing: setColumnSizing,
354
+ setColumns: setColumns,
355
+ columnSizing: columnSizing,
356
+ columnSizingInfo: columnSizingInfo,
357
+ isFullScreen: isFullScreen,
358
+ setIsFullScreen: setIsFullScreen
359
+ })))), /*#__PURE__*/React.createElement(Modal, {
360
+ open: isFullScreen,
361
+ footer: null,
362
+ centered: true,
363
+ closable: true,
364
+ width: '100%',
365
+ style: {
366
+ maxWidth: '100%',
367
+ height: '100%'
368
+ },
369
+ onCancel: () => setIsFullScreen(false)
370
+
371
+ // destroyOnClose
372
+ ,
373
+ styles: {
374
+ content: {
375
+ height: '100vh',
376
+ borderRadius: 0,
377
+ padding: '15px 10px'
378
+ },
379
+ wrapper: {
380
+ zIndex: 1050
381
+ }
382
+ },
383
+ title: /*#__PURE__*/React.createElement(React.Fragment, null, " ", typeof fullScreenTitle === 'function' ? fullScreenTitle?.() : fullScreenTitle, " "),
384
+ destroyOnClose: true
385
+ }, /*#__PURE__*/React.createElement("div", {
386
+ style: {}
387
+ }, /*#__PURE__*/React.createElement(GridStyle, {
388
+ $prefix: prefix,
389
+ $theme: {
390
+ theme: theme?.theme,
391
+ ...theme
392
+ },
393
+ className: classNames(`${prefix}-grid ${tableClassNames}`, {
394
+ [`${prefix}-grid-light`]: !theme || theme.theme === 'light',
395
+ [`${prefix}-grid-dark`]: theme?.theme === 'dark'
396
+ }),
397
+ style: {
398
+ // minHeight: minHeight ?? undefined,
399
+ maxHeight: windowSize.innerHeight - 70
400
+ }
401
+ }, /*#__PURE__*/React.createElement(DndContext, {
402
+ collisionDetection: closestCenter,
403
+ modifiers: [restrictToHorizontalAxis],
404
+ onDragEnd: handleDragEnd,
405
+ sensors: sensors
406
+ }, /*#__PURE__*/React.createElement(ContainerComponent, _extends({}, rest, {
407
+ id: faker.string.alpha(20),
408
+ t: t,
409
+ table: table,
410
+ editAble: editAble,
411
+ dataSource: dataSource,
412
+ originData: originData,
413
+ prefix: prefix,
414
+ selectionSettings: selectionSettings,
415
+ isSelectionChange: isSelectionChange,
416
+ setIsSelectionChange: setIsSelectionChange,
417
+ setSorterChange: setSorterChange,
418
+ setFilterChange: setFilterChange,
419
+ height: windowSize.innerHeight - 70,
420
+ minHeight: minHeight,
421
+ pagination: pagination,
422
+ columns: columns,
423
+ windowSize: windowSize,
424
+ propsColumns: propsColumns,
425
+ triggerChangeColumns: triggerChangeColumns,
426
+ columnHidden: columnHidden,
427
+ setExpanded: setExpanded,
428
+ expanded: expanded,
429
+ infiniteScroll: infiniteScroll,
430
+ setMergedFilterKeys: setMergedFilterKeys,
431
+ setColumnSizing: setColumnSizing,
432
+ setColumns: setColumns,
433
+ columnSizing: columnSizing,
434
+ columnSizingInfo: columnSizingInfo,
435
+ isFullScreen: isFullScreen,
436
+ setIsFullScreen: setIsFullScreen
437
+ })))))));
438
+ };
439
+ export default Grid;
@@ -0,0 +1,33 @@
1
+ import { type Table } from "@tanstack/react-table";
2
+ import type { CommandClick, ContextInfo, ContextMenuItem, PaginationConfig } from "../../grid-component/type";
3
+ import React from "react";
4
+ import type { Virtualizer } from "@tanstack/react-virtual";
5
+ import type { Column } from "@tanstack/react-table";
6
+ type Props<T> = {
7
+ prefix: string;
8
+ id: string;
9
+ tableContainerRef: React.RefObject<HTMLDivElement>;
10
+ height: number;
11
+ minHeight?: number;
12
+ table: Table<T>;
13
+ summary?: boolean;
14
+ loading?: boolean;
15
+ commandClick?: (args: Omit<CommandClick<T>, 'rows'>) => void;
16
+ editAble?: boolean;
17
+ contextMenuItems?: ContextMenuItem[];
18
+ showEmptyText?: boolean;
19
+ contextMenuClick?: any;
20
+ contextMenuOpen?: (args: Omit<ContextInfo<T>, 'item'>) => void;
21
+ contextMenuHidden?: string[] | ((args?: Omit<ContextInfo<T>, 'item' | 'event'>) => string[]);
22
+ next?: () => void;
23
+ dataSource: T[];
24
+ pagination?: false | PaginationConfig;
25
+ infiniteScroll?: boolean;
26
+ columnVirtualizer: Virtualizer<HTMLDivElement, HTMLTableCellElement>;
27
+ virtualPaddingLeft: number | undefined;
28
+ virtualPaddingRight: number | undefined;
29
+ fixedLeftColumns: Column<T, unknown>[];
30
+ fixedRightColumns: Column<T, unknown>[];
31
+ };
32
+ declare const TableWrapper: <RecordType extends object>(props: Props<RecordType>) => React.JSX.Element;
33
+ export default TableWrapper;