es-grid-template 1.8.64 → 1.8.66

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 (222) hide show
  1. package/es/grid-component/TempTable.d.ts +2 -2
  2. package/es/grid-component/TempTable.js +5 -5
  3. package/es/grid-component/hooks/index.js +0 -1
  4. package/es/grid-component/hooks/useLazyKVMap.d.ts +1 -1
  5. package/es/grid-component/hooks/useLazyKVMap.js +0 -4
  6. package/es/grid-component/hooks/utils.d.ts +1 -8
  7. package/es/grid-component/hooks/utils.js +176 -144
  8. package/es/grid-component/index.d.ts +1 -1
  9. package/es/grid-component/index.js +0 -4
  10. package/es/grid-component/styles.scss +1394 -1394
  11. package/es/grid-component/type.d.ts +0 -407
  12. package/es/grid-component/type.js +490 -1
  13. package/es/table-component/type.d.ts +10 -0
  14. package/es/{grid-component → table-virtuoso}/ColumnsGroup/ColumnsGroup.js +4 -3
  15. package/es/{grid-component → table-virtuoso}/InternalTable.d.ts +2 -3
  16. package/es/table-virtuoso/InternalTable.js +391 -0
  17. package/es/table-virtuoso/body/TableBodyCell.d.ts +14 -0
  18. package/es/table-virtuoso/body/TableBodyCell.js +457 -0
  19. package/es/table-virtuoso/body/TableBodyRow.d.ts +13 -0
  20. package/es/table-virtuoso/body/TableBodyRow.js +112 -0
  21. package/es/table-virtuoso/footer/TableFooterCell.d.ts +7 -0
  22. package/es/table-virtuoso/footer/TableFooterCell.js +54 -0
  23. package/es/table-virtuoso/header/TableHeadCell.d.ts +14 -0
  24. package/es/table-virtuoso/header/TableHeadCell.js +265 -0
  25. package/es/table-virtuoso/header/renderFilter.d.ts +20 -0
  26. package/es/table-virtuoso/header/renderFilter.js +289 -0
  27. package/es/table-virtuoso/hook/constant.d.ts +73 -0
  28. package/es/table-virtuoso/hook/constant.js +240 -0
  29. package/es/table-virtuoso/hook/convert.d.ts +1 -0
  30. package/es/table-virtuoso/hook/convert.js +28 -0
  31. package/es/table-virtuoso/hook/useColumns.d.ts +28 -0
  32. package/es/table-virtuoso/hook/useColumns.js +302 -0
  33. package/es/table-virtuoso/hook/useFilterOperator.d.ts +7 -0
  34. package/es/table-virtuoso/hook/useFilterOperator.js +33 -0
  35. package/es/table-virtuoso/hook/utils.d.ts +159 -0
  36. package/es/table-virtuoso/hook/utils.js +2263 -0
  37. package/es/table-virtuoso/index.d.ts +2 -0
  38. package/es/table-virtuoso/index.js +2 -0
  39. package/es/table-virtuoso/style.d.ts +22 -0
  40. package/es/table-virtuoso/style.js +12 -0
  41. package/es/table-virtuoso/style.scss +1441 -0
  42. package/es/table-virtuoso/table/Grid.d.ts +37 -0
  43. package/es/table-virtuoso/table/Grid.js +298 -0
  44. package/es/table-virtuoso/table/TableContainer.d.ts +49 -0
  45. package/es/table-virtuoso/table/TableContainer.js +292 -0
  46. package/es/table-virtuoso/table/TableWrapper.d.ts +22 -0
  47. package/es/table-virtuoso/table/TableWrapper.js +161 -0
  48. package/es/table-virtuoso/type.d.ts +0 -0
  49. package/es/table-virtuoso/type.js +785 -0
  50. package/es/table-virtuoso/useContext.d.ts +97 -0
  51. package/es/table-virtuoso/useContext.js +21 -0
  52. package/lib/grid-component/TempTable.d.ts +2 -2
  53. package/lib/grid-component/TempTable.js +5 -7
  54. package/lib/grid-component/hooks/useLazyKVMap.d.ts +1 -1
  55. package/lib/grid-component/hooks/useLazyKVMap.js +0 -3
  56. package/lib/grid-component/hooks/utils.d.ts +1 -8
  57. package/lib/grid-component/hooks/utils.js +179 -152
  58. package/lib/grid-component/index.d.ts +1 -1
  59. package/lib/grid-component/index.js +0 -3
  60. package/lib/grid-component/styles.scss +1394 -1394
  61. package/lib/grid-component/type.d.ts +0 -407
  62. package/lib/grid-component/type.js +490 -4
  63. package/lib/table-component/type.d.ts +10 -0
  64. package/lib/{grid-component → table-virtuoso}/ColumnsGroup/ColumnsGroup.js +4 -3
  65. package/lib/{grid-component → table-virtuoso}/InternalTable.d.ts +2 -3
  66. package/lib/table-virtuoso/InternalTable.js +400 -0
  67. package/lib/table-virtuoso/body/TableBodyCell.d.ts +14 -0
  68. package/lib/table-virtuoso/body/TableBodyCell.js +464 -0
  69. package/lib/table-virtuoso/body/TableBodyRow.d.ts +13 -0
  70. package/lib/table-virtuoso/body/TableBodyRow.js +119 -0
  71. package/lib/table-virtuoso/footer/TableFooterCell.d.ts +7 -0
  72. package/lib/table-virtuoso/footer/TableFooterCell.js +63 -0
  73. package/lib/table-virtuoso/header/TableHeadCell.d.ts +14 -0
  74. package/lib/table-virtuoso/header/TableHeadCell.js +274 -0
  75. package/lib/table-virtuoso/header/renderFilter.d.ts +20 -0
  76. package/lib/table-virtuoso/header/renderFilter.js +299 -0
  77. package/lib/table-virtuoso/hook/constant.d.ts +73 -0
  78. package/lib/table-virtuoso/hook/constant.js +247 -0
  79. package/lib/table-virtuoso/hook/convert.d.ts +1 -0
  80. package/lib/table-virtuoso/hook/convert.js +34 -0
  81. package/lib/table-virtuoso/hook/useColumns.d.ts +28 -0
  82. package/lib/table-virtuoso/hook/useColumns.js +315 -0
  83. package/lib/table-virtuoso/hook/useFilterOperator.d.ts +7 -0
  84. package/lib/table-virtuoso/hook/useFilterOperator.js +40 -0
  85. package/lib/table-virtuoso/hook/utils.d.ts +159 -0
  86. package/lib/table-virtuoso/hook/utils.js +2389 -0
  87. package/lib/table-virtuoso/index.d.ts +2 -0
  88. package/lib/table-virtuoso/index.js +9 -0
  89. package/lib/table-virtuoso/style.d.ts +22 -0
  90. package/lib/table-virtuoso/style.js +19 -0
  91. package/lib/table-virtuoso/style.scss +1441 -0
  92. package/lib/table-virtuoso/table/Grid.d.ts +37 -0
  93. package/lib/table-virtuoso/table/Grid.js +307 -0
  94. package/lib/table-virtuoso/table/TableContainer.d.ts +49 -0
  95. package/lib/table-virtuoso/table/TableContainer.js +300 -0
  96. package/lib/table-virtuoso/table/TableWrapper.d.ts +22 -0
  97. package/lib/table-virtuoso/table/TableWrapper.js +166 -0
  98. package/lib/table-virtuoso/type.d.ts +0 -0
  99. package/lib/table-virtuoso/type.js +786 -0
  100. package/lib/table-virtuoso/useContext.d.ts +97 -0
  101. package/lib/table-virtuoso/useContext.js +27 -0
  102. package/package.json +2 -1
  103. package/es/grid-component/AdvanceFilter.d.ts +0 -14
  104. package/es/grid-component/AdvanceFilter.js +0 -454
  105. package/es/grid-component/CheckboxFilter.d.ts +0 -20
  106. package/es/grid-component/CheckboxFilter.js +0 -244
  107. package/es/grid-component/CheckboxFilter2.d.ts +0 -20
  108. package/es/grid-component/CheckboxFilter2.js +0 -244
  109. package/es/grid-component/ColumnsChoose.d.ts +0 -10
  110. package/es/grid-component/ColumnsChoose.js +0 -230
  111. package/es/grid-component/Command.d.ts +0 -8
  112. package/es/grid-component/Command.js +0 -80
  113. package/es/grid-component/ContextMenu.d.ts +0 -20
  114. package/es/grid-component/ContextMenu.js +0 -130
  115. package/es/grid-component/ConvertColumnTable.d.ts +0 -7
  116. package/es/grid-component/ConvertColumnTable.js +0 -144
  117. package/es/grid-component/EditForm/EditForm.d.ts +0 -27
  118. package/es/grid-component/EditForm/EditForm.js +0 -394
  119. package/es/grid-component/EditForm/index.d.ts +0 -1
  120. package/es/grid-component/EditForm/index.js +0 -1
  121. package/es/grid-component/EditableCell.d.ts +0 -20
  122. package/es/grid-component/EditableCell.js +0 -1030
  123. package/es/grid-component/FilterSearch.d.ts +0 -12
  124. package/es/grid-component/FilterSearch.js +0 -33
  125. package/es/grid-component/GridStyle.d.ts +0 -8
  126. package/es/grid-component/GridStyle.js +0 -5
  127. package/es/grid-component/InternalTable.js +0 -1170
  128. package/es/grid-component/TableGrid.d.ts +0 -21
  129. package/es/grid-component/TableGrid.js +0 -493
  130. package/es/grid-component/async-select/index.d.ts +0 -11
  131. package/es/grid-component/async-select/index.js +0 -38
  132. package/es/grid-component/async-table-select/index.d.ts +0 -11
  133. package/es/grid-component/async-table-select/index.js +0 -40
  134. package/es/grid-component/checkbox-control/index.d.ts +0 -13
  135. package/es/grid-component/checkbox-control/index.js +0 -40
  136. package/es/grid-component/hooks/columns/index.d.ts +0 -10
  137. package/es/grid-component/hooks/columns/index.js +0 -503
  138. package/es/grid-component/hooks/content/ControlCheckbox.d.ts +0 -13
  139. package/es/grid-component/hooks/content/ControlCheckbox.js +0 -87
  140. package/es/grid-component/hooks/content/HeaderContent.d.ts +0 -14
  141. package/es/grid-component/hooks/content/HeaderContent.js +0 -44
  142. package/es/grid-component/hooks/content/TooltipContent.d.ts +0 -13
  143. package/es/grid-component/hooks/content/TooltipContent.js +0 -74
  144. package/es/grid-component/hooks/useColumns.d.ts +0 -19
  145. package/es/grid-component/hooks/useColumns.js +0 -317
  146. package/es/grid-component/number/index.d.ts +0 -10
  147. package/es/grid-component/number/index.js +0 -39
  148. package/es/grid-component/number-range/index.d.ts +0 -11
  149. package/es/grid-component/number-range/index.js +0 -63
  150. package/es/grid-component/table/Grid.d.ts +0 -23
  151. package/es/grid-component/table/Grid.js +0 -49
  152. package/es/grid-component/table/GridEdit.d.ts +0 -23
  153. package/es/grid-component/table/GridEdit.js +0 -2726
  154. package/es/grid-component/table/Group.d.ts +0 -21
  155. package/es/grid-component/table/Group.js +0 -195
  156. package/es/grid-component/table/InfiniteTable.d.ts +0 -23
  157. package/es/grid-component/table/InfiniteTable.js +0 -101
  158. package/es/grid-component/useContext.d.ts +0 -34
  159. package/es/grid-component/useContext.js +0 -8
  160. package/lib/grid-component/AdvanceFilter.d.ts +0 -14
  161. package/lib/grid-component/AdvanceFilter.js +0 -463
  162. package/lib/grid-component/CheckboxFilter.d.ts +0 -20
  163. package/lib/grid-component/CheckboxFilter.js +0 -253
  164. package/lib/grid-component/CheckboxFilter2.d.ts +0 -20
  165. package/lib/grid-component/CheckboxFilter2.js +0 -253
  166. package/lib/grid-component/ColumnsChoose.d.ts +0 -10
  167. package/lib/grid-component/ColumnsChoose.js +0 -240
  168. package/lib/grid-component/Command.d.ts +0 -8
  169. package/lib/grid-component/Command.js +0 -88
  170. package/lib/grid-component/ContextMenu.d.ts +0 -20
  171. package/lib/grid-component/ContextMenu.js +0 -140
  172. package/lib/grid-component/ConvertColumnTable.d.ts +0 -7
  173. package/lib/grid-component/ConvertColumnTable.js +0 -153
  174. package/lib/grid-component/EditForm/EditForm.d.ts +0 -27
  175. package/lib/grid-component/EditForm/EditForm.js +0 -404
  176. package/lib/grid-component/EditForm/index.d.ts +0 -1
  177. package/lib/grid-component/EditForm/index.js +0 -16
  178. package/lib/grid-component/EditableCell.d.ts +0 -20
  179. package/lib/grid-component/EditableCell.js +0 -1032
  180. package/lib/grid-component/FilterSearch.d.ts +0 -12
  181. package/lib/grid-component/FilterSearch.js +0 -42
  182. package/lib/grid-component/GridStyle.d.ts +0 -8
  183. package/lib/grid-component/GridStyle.js +0 -12
  184. package/lib/grid-component/InternalTable.js +0 -1178
  185. package/lib/grid-component/TableGrid.d.ts +0 -21
  186. package/lib/grid-component/TableGrid.js +0 -493
  187. package/lib/grid-component/async-select/index.d.ts +0 -11
  188. package/lib/grid-component/async-select/index.js +0 -47
  189. package/lib/grid-component/async-table-select/index.d.ts +0 -11
  190. package/lib/grid-component/async-table-select/index.js +0 -49
  191. package/lib/grid-component/checkbox-control/index.d.ts +0 -13
  192. package/lib/grid-component/checkbox-control/index.js +0 -48
  193. package/lib/grid-component/hooks/columns/index.d.ts +0 -10
  194. package/lib/grid-component/hooks/columns/index.js +0 -518
  195. package/lib/grid-component/hooks/content/ControlCheckbox.d.ts +0 -13
  196. package/lib/grid-component/hooks/content/ControlCheckbox.js +0 -95
  197. package/lib/grid-component/hooks/content/HeaderContent.d.ts +0 -14
  198. package/lib/grid-component/hooks/content/HeaderContent.js +0 -53
  199. package/lib/grid-component/hooks/content/TooltipContent.d.ts +0 -13
  200. package/lib/grid-component/hooks/content/TooltipContent.js +0 -81
  201. package/lib/grid-component/hooks/useColumns.d.ts +0 -19
  202. package/lib/grid-component/hooks/useColumns.js +0 -328
  203. package/lib/grid-component/number/index.d.ts +0 -10
  204. package/lib/grid-component/number/index.js +0 -47
  205. package/lib/grid-component/number-range/index.d.ts +0 -11
  206. package/lib/grid-component/number-range/index.js +0 -71
  207. package/lib/grid-component/table/Grid.d.ts +0 -23
  208. package/lib/grid-component/table/Grid.js +0 -58
  209. package/lib/grid-component/table/GridEdit.d.ts +0 -23
  210. package/lib/grid-component/table/GridEdit.js +0 -2723
  211. package/lib/grid-component/table/Group.d.ts +0 -21
  212. package/lib/grid-component/table/Group.js +0 -204
  213. package/lib/grid-component/table/InfiniteTable.d.ts +0 -23
  214. package/lib/grid-component/table/InfiniteTable.js +0 -109
  215. package/lib/grid-component/useContext.d.ts +0 -34
  216. package/lib/grid-component/useContext.js +0 -13
  217. /package/es/{grid-component → table-virtuoso}/ColumnsGroup/ColumnsGroup.d.ts +0 -0
  218. /package/es/{grid-component → table-virtuoso}/ColumnsGroup/index.d.ts +0 -0
  219. /package/es/{grid-component → table-virtuoso}/ColumnsGroup/index.js +0 -0
  220. /package/lib/{grid-component → table-virtuoso}/ColumnsGroup/ColumnsGroup.d.ts +0 -0
  221. /package/lib/{grid-component → table-virtuoso}/ColumnsGroup/index.d.ts +0 -0
  222. /package/lib/{grid-component → table-virtuoso}/ColumnsGroup/index.js +0 -0
@@ -0,0 +1,37 @@
1
+ import type { ColumnDef, ColumnFiltersState, ColumnPinningState, ColumnSizingInfoState, ColumnSizingState, ExpandedState, Table, VisibilityState } from '@tanstack/react-table';
2
+ import type { ColumnsTable, Sorter, TableProps } from '../../table-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
+ table: Table<T>;
8
+ rowKey: string;
9
+ prefix: string;
10
+ columns: ColumnDef<T>[];
11
+ propsColumns: ColumnsTable<T>;
12
+ setColumns: Dispatch<SetStateAction<ColumnsTable<T>>>;
13
+ columnHidden: VisibilityState;
14
+ expanded: ExpandedState;
15
+ setExpanded: any;
16
+ columnPinning: ColumnPinningState;
17
+ originData: T[];
18
+ mergedFilterKeys: any;
19
+ setMergedFilterKeys: any;
20
+ isFullScreen: boolean;
21
+ setIsFullScreen: Dispatch<SetStateAction<boolean>>;
22
+ triggerFilter: (args: any) => void;
23
+ triggerSorter: (args: Sorter[]) => void;
24
+ onContextMenu?: (data: T) => (event: any) => void;
25
+ triggerChangeColumns?: (args: any, keys: any, type: string) => void;
26
+ triggerGroupColumns?: (groupedColumns: string[]) => void;
27
+ windowSize: any;
28
+ isDataTree: boolean;
29
+ mergedSelectedKeys: Key[];
30
+ setColumnSizing: Dispatch<SetStateAction<any>>;
31
+ columnSizingInfo: ColumnSizingInfoState;
32
+ columnSizing: ColumnSizingState;
33
+ columnFilters: ColumnFiltersState;
34
+ setColumnOrder?: Dispatch<SetStateAction<string[]>>;
35
+ };
36
+ declare const Grid: <RecordType extends object>(props: Props<RecordType>) => React.JSX.Element;
37
+ export default Grid;
@@ -0,0 +1,298 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import { Modal } from 'antd';
3
+ import { faker } from '@faker-js/faker';
4
+ import { DndContext, KeyboardSensor, MouseSensor, TouchSensor, closestCenter, useSensor, useSensors } from '@dnd-kit/core';
5
+ import { restrictToHorizontalAxis } from '@dnd-kit/modifiers';
6
+ import { arrayMove } from '@dnd-kit/sortable';
7
+ import React, { Fragment } from 'react';
8
+ import { convertFilters, filterByIds, filterDataByColumns, getAllRowKey } from "../hook/utils";
9
+ import classNames from 'classnames';
10
+ import TableContainer from "./TableContainer";
11
+ import { GridStyle } from "../style";
12
+ const Grid = props => {
13
+ const {
14
+ theme,
15
+ t,
16
+ id,
17
+ prefix,
18
+ dataSource,
19
+ originData,
20
+ columns,
21
+ propsColumns,
22
+ setColumns,
23
+ pagination,
24
+ expanded,
25
+ setExpanded,
26
+ columnHidden,
27
+ columnPinning,
28
+ selectionSettings,
29
+ rowSelected,
30
+ sortMultiple,
31
+ triggerSorter,
32
+ triggerFilter,
33
+ setMergedFilterKeys,
34
+ onSorter,
35
+ onFilter,
36
+ allowFiltering,
37
+ allowSortering,
38
+ // groupColumns,
39
+ // height= 700,
40
+ height,
41
+ minHeight,
42
+ editAble,
43
+ triggerChangeColumns,
44
+ infiniteScroll,
45
+ mergedSelectedKeys,
46
+ allowResizing,
47
+ windowSize,
48
+ table,
49
+ columnSizing,
50
+ columnSizingInfo,
51
+ setColumnSizing,
52
+ columnFilters,
53
+ setColumnOrder,
54
+ rowSelection,
55
+ ...rest
56
+ } = props;
57
+
58
+ // const [columnResizeMode] = React.useState<ColumnResizeMode>('onChange')
59
+
60
+ // const [columnResizeDirection] = React.useState<ColumnResizeDirection>('ltr')
61
+
62
+ // const [paginationState, setPagination] = React.useState<PaginationState>({
63
+ // pageIndex: pagination && pagination.currentPage ? pagination.currentPage - 1 : 0,
64
+ // pageSize: pagination && pagination.pageSize ? pagination.pageSize : 20
65
+ // })
66
+
67
+ // const [rowSelection, setRowSelection] = React.useState<RowSelectionState>({})
68
+
69
+ // const [grouping, setGrouping] = React.useState<GroupingState>([])
70
+
71
+ // const [columnSizing, setColumnSizing] = React.useState<ColumnSizingState>({})
72
+ // const [columnSizingInfo, setColumnSizingInfo] = React.useState<ColumnSizingInfoState>({} as ColumnSizingInfoState)
73
+
74
+ // const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>([])
75
+
76
+ // const [operator, setOperator] = React.useState<ColumnOperatorState>([])
77
+ // const [sorting, setSorting] = React.useState<SortingState>([])
78
+
79
+ // const [columnOrder, setColumnOrder] = React.useState<string[]>(() => columns.map(c => c.id!))
80
+
81
+ const [isSelectionChange, setIsSelectionChange] = React.useState({
82
+ isChange: false,
83
+ type: '',
84
+ rowData: {},
85
+ rowsData: []
86
+ });
87
+ const [sorterChange, setSorterChange] = React.useState(false);
88
+ const [filterChange, setFilterChange] = React.useState(false);
89
+ const [isFullScreen, setIsFullScreen] = React.useState(false);
90
+
91
+ // React.useEffect(() => {
92
+
93
+ // const isEqual = isObjEqual(convertToObjTrue(mergedSelectedKeys), rowSelection)
94
+
95
+ // if (!isEqual) {
96
+
97
+ // setRowSelection(convertToObjTrue(mergedSelectedKeys))
98
+ // }
99
+
100
+ // }, [mergedSelectedKeys])
101
+
102
+ React.useEffect(() => {
103
+ if (isSelectionChange.isChange) {
104
+ const aa = table.getState().rowSelection;
105
+ const ids = Object.keys(aa);
106
+ const ssss = filterByIds(ids, isSelectionChange.rowsData ?? []); // lấy rowsData của trang hiện tại
107
+
108
+ const rs = ssss.map(it => it.original);
109
+ rowSelected?.({
110
+ type: isSelectionChange.type,
111
+ rowData: isSelectionChange.rowData,
112
+ selected: rs
113
+ });
114
+ }
115
+ }, [isSelectionChange, rowSelection, table.getState().rowSelection]);
116
+ React.useEffect(() => {
117
+ if (sorterChange) {
118
+ const aa = table.getState().sorting;
119
+ const rs = aa.map(it => {
120
+ return {
121
+ columnKey: it.id,
122
+ field: it.id,
123
+ order: it.desc ? 'descend' : 'ascend'
124
+ };
125
+ });
126
+ if (onSorter) {
127
+ onSorter?.(rs);
128
+ } else {
129
+ triggerSorter(rs);
130
+ }
131
+ setSorterChange(false);
132
+ }
133
+ }, [onSorter, sorterChange, table, triggerSorter]);
134
+ React.useEffect(() => {
135
+ if (filterChange) {
136
+ const operatorState = table.getState().operator;
137
+ const merged = columnFilters.map(filter => {
138
+ const match = operatorState.find(op => op.id === filter.id);
139
+ const col = table.getVisibleFlatColumns().find(it => it.id === filter.id)?.columnDef.meta;
140
+ return {
141
+ field: filter.id,
142
+ key: filter.id,
143
+ column: col,
144
+ filteredKeys: filter.value,
145
+ operator: match ? match.operator : undefined
146
+ };
147
+ });
148
+ if (onFilter) {
149
+ onFilter?.(convertFilters(merged));
150
+ } else {
151
+ triggerFilter(convertFilters(merged));
152
+ const b = filterDataByColumns(originData, convertFilters(merged), [], []);
153
+ setMergedFilterKeys(getAllRowKey(b));
154
+ }
155
+ }
156
+ }, [filterChange, onFilter, originData, setMergedFilterKeys, table, triggerFilter, columnFilters]);
157
+
158
+ // reorder columns after drag & drop
159
+ function handleDragEnd(event) {
160
+ const {
161
+ active,
162
+ over
163
+ } = event;
164
+ if (active && over && active.id !== over.id) {
165
+ setColumnOrder?.(cols => {
166
+ const oldIndex = cols.indexOf(active.id);
167
+ const newIndex = cols.indexOf(over.id);
168
+ return arrayMove(cols, oldIndex, newIndex); //this is just a splice util
169
+ });
170
+ }
171
+ }
172
+ const sensors = useSensors(useSensor(MouseSensor, {}), useSensor(TouchSensor, {}), useSensor(KeyboardSensor, {}));
173
+ const ContainerComponent = TableContainer;
174
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(GridStyle, {
175
+ $prefix: prefix,
176
+ $theme: {
177
+ theme: theme?.theme,
178
+ ...theme
179
+ },
180
+ className: classNames(`${prefix}-grid`, {
181
+ [`${prefix}-grid-light`]: !theme || theme.theme === 'light',
182
+ [`${prefix}-grid-dark`]: theme?.theme === 'dark'
183
+ }),
184
+ style: {
185
+ minHeight: minHeight ?? undefined,
186
+ maxHeight: height ?? undefined,
187
+ backgroundColor: theme?.backgroundColor ?? undefined
188
+ }
189
+ }, /*#__PURE__*/React.createElement(DndContext, {
190
+ collisionDetection: closestCenter,
191
+ modifiers: [restrictToHorizontalAxis],
192
+ onDragEnd: handleDragEnd,
193
+ sensors: sensors
194
+ }, /*#__PURE__*/React.createElement(ContainerComponent, _extends({}, rest, {
195
+ id: id,
196
+ t: t,
197
+ windowSize: windowSize,
198
+ table: table,
199
+ editAble: editAble,
200
+ dataSource: dataSource,
201
+ originData: originData,
202
+ prefix: prefix,
203
+ selectionSettings: selectionSettings,
204
+ isSelectionChange: isSelectionChange,
205
+ setIsSelectionChange: setIsSelectionChange,
206
+ setSorterChange: setSorterChange,
207
+ setFilterChange: setFilterChange,
208
+ height: height ?? minHeight ?? 700,
209
+ minHeight: minHeight,
210
+ pagination: pagination,
211
+ columns: columns,
212
+ propsColumns: propsColumns,
213
+ triggerChangeColumns: triggerChangeColumns,
214
+ columnHidden: columnHidden,
215
+ setExpanded: setExpanded,
216
+ expanded: expanded,
217
+ infiniteScroll: infiniteScroll,
218
+ setMergedFilterKeys: setMergedFilterKeys,
219
+ setColumnSizing: setColumnSizing,
220
+ setColumns: setColumns,
221
+ columnSizing: columnSizing,
222
+ columnSizingInfo: columnSizingInfo,
223
+ isFullScreen: isFullScreen,
224
+ setIsFullScreen: setIsFullScreen
225
+ })))), /*#__PURE__*/React.createElement(Modal, {
226
+ open: isFullScreen,
227
+ footer: null,
228
+ centered: true,
229
+ closable: true,
230
+ width: '100%',
231
+ style: {
232
+ maxWidth: '100%',
233
+ height: '100%'
234
+ },
235
+ onCancel: () => setIsFullScreen(false),
236
+ styles: {
237
+ content: {
238
+ height: '100vh',
239
+ borderRadius: 0,
240
+ padding: '15px 10px'
241
+ },
242
+ wrapper: {
243
+ zIndex: 1050
244
+ }
245
+ },
246
+ destroyOnClose: true
247
+ }, /*#__PURE__*/React.createElement("div", {
248
+ style: {
249
+ paddingTop: 40
250
+ }
251
+ }, /*#__PURE__*/React.createElement("div", {
252
+ className: classNames(`${prefix}-grid`, {
253
+ [`${prefix}-grid-light`]: !theme || theme.theme === 'light',
254
+ [`${prefix}-grid-dark`]: theme?.theme === 'dark'
255
+ }),
256
+ style: {
257
+ // minHeight: minHeight ?? undefined,
258
+ maxHeight: windowSize.innerHeight - 70
259
+ }
260
+ }, /*#__PURE__*/React.createElement(DndContext, {
261
+ collisionDetection: closestCenter,
262
+ modifiers: [restrictToHorizontalAxis],
263
+ onDragEnd: handleDragEnd,
264
+ sensors: sensors
265
+ }, /*#__PURE__*/React.createElement(ContainerComponent, _extends({}, rest, {
266
+ id: faker.string.alpha(20),
267
+ t: t,
268
+ table: table,
269
+ editAble: editAble,
270
+ dataSource: dataSource,
271
+ originData: originData,
272
+ prefix: prefix,
273
+ selectionSettings: selectionSettings,
274
+ isSelectionChange: isSelectionChange,
275
+ setIsSelectionChange: setIsSelectionChange,
276
+ setSorterChange: setSorterChange,
277
+ setFilterChange: setFilterChange,
278
+ height: windowSize.innerHeight - 70,
279
+ minHeight: minHeight,
280
+ pagination: pagination,
281
+ columns: columns,
282
+ windowSize: windowSize,
283
+ propsColumns: propsColumns,
284
+ triggerChangeColumns: triggerChangeColumns,
285
+ columnHidden: columnHidden,
286
+ setExpanded: setExpanded,
287
+ expanded: expanded,
288
+ infiniteScroll: infiniteScroll,
289
+ setMergedFilterKeys: setMergedFilterKeys,
290
+ setColumns: setColumns,
291
+ isFullScreen: isFullScreen,
292
+ setIsFullScreen: setIsFullScreen,
293
+ setColumnSizing: setColumnSizing,
294
+ columnSizing: columnSizing,
295
+ columnSizingInfo: columnSizingInfo
296
+ })))))));
297
+ };
298
+ export default Grid;
@@ -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 '../../table-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,292 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ // import type { Dispatch, SetStateAction } from 'react'
3
+
4
+ import React from 'react';
5
+ import classNames from 'classnames';
6
+ import Pagination from 'rc-master-ui/es/pagination';
7
+ import { Toolbar } from 'rc-master-ui';
8
+ import { Collapse2, Expand2, Maximize, Minimize } from 'becoxy-icons';
9
+ import { numericFormatter } from 'react-numeric-component';
10
+ import TableWrapper from "./TableWrapper";
11
+ import { ColumnsChoose } from "../../table-component/ColumnsChoose";
12
+ import { convertToObjTrue, findAllChildrenKeys2, getTableHeight, isObjEmpty } from "../hook/utils";
13
+ import { TableContext } from "../useContext";
14
+ // import { ColumnsGroup } from '../../grid-component/ColumnsGroup';
15
+ import { flatColumns2 } from "../../table-component/hook/utils";
16
+ import { ColumnsGroup } from "../ColumnsGroup";
17
+ const TableContainer = props => {
18
+ const {
19
+ t,
20
+ table,
21
+ id,
22
+ prefix,
23
+ commandClick,
24
+ editAble,
25
+ rowKey,
26
+ format,
27
+ dataSource,
28
+ originData,
29
+ expandable,
30
+ wrapSettings,
31
+ recordDoubleClick,
32
+ // triggerFilter,
33
+ selectionSettings,
34
+ isSelectionChange,
35
+ setIsSelectionChange,
36
+ onContextMenu,
37
+ // contextMenuItems,
38
+ setSorterChange,
39
+ setFilterChange,
40
+ height,
41
+ minHeight,
42
+ showToolbar,
43
+ toolbarItems,
44
+ actionTemplate,
45
+ pagination,
46
+ fullScreen,
47
+ showColumnChoose,
48
+ // summary,
49
+ locale,
50
+ groupColumns,
51
+ columns,
52
+ propsColumns,
53
+ triggerChangeColumns,
54
+ triggerGroupColumns,
55
+ columnHidden,
56
+ expanded,
57
+ setExpanded,
58
+ // showEmptyText,
59
+ infiniteScroll,
60
+ // next,
61
+ // loading,
62
+ windowSize,
63
+ // contextMenuOpen,
64
+ // contextMenuClick,
65
+ // contextMenuHidden,
66
+ isFullScreen,
67
+ setIsFullScreen,
68
+ isDataTree,
69
+ // setColumns,
70
+ // columnSizing,
71
+ // columnSizingInfo,
72
+ rowClassName,
73
+ onRowStyles,
74
+ onRowFooterStyles,
75
+ onRowHeaderStyles,
76
+ title,
77
+ groupSetting
78
+ } = props;
79
+ const tableContainerRef = React.useRef(null);
80
+ const containerRef = React.useRef(null);
81
+ const bottomToolbarRef = React.useRef(null);
82
+ const topToolbarRef = React.useRef(null);
83
+ const [tableHeight, settableHeight] = React.useState(0);
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
+
96
+ // setFocusedCell(undefined)
97
+ // setIsSelectionChange((prev) => (
98
+ // {
99
+ // ...prev,
100
+ // isChange: false
101
+ // }
102
+ // ))
103
+ };
104
+ document.addEventListener('mousedown', handleClickOutside);
105
+ return () => {
106
+ document.removeEventListener('mousedown', handleClickOutside);
107
+ };
108
+ }, []);
109
+ const triggerCommandClick = args => {
110
+ // const { id: idCommand, rowId, rowData, index } = args
111
+
112
+ // const tmpData = [...dataSource]
113
+
114
+ if (commandClick) {
115
+ commandClick({
116
+ ...args,
117
+ rows: originData
118
+ });
119
+ }
120
+ };
121
+ const handleOnGroup = value => {
122
+ triggerGroupColumns?.(value);
123
+ };
124
+ const handleCollapseAllGroup = () => {
125
+ setExpanded({});
126
+ };
127
+ const handleExpandAllGroup = () => {
128
+ const allKeys = findAllChildrenKeys2(dataSource, rowKey, 'children');
129
+ setExpanded(convertToObjTrue(allKeys));
130
+ };
131
+ const groupToolbar = () => {
132
+ return /*#__PURE__*/React.createElement("div", {
133
+ style: {
134
+ display: 'flex',
135
+ gap: '10px',
136
+ marginRight: 10
137
+ }
138
+ }, groupSetting?.showGroupIcon !== false && /*#__PURE__*/React.createElement(ColumnsGroup, {
139
+ t: t
140
+ // defaultGroupColumns={['name']}
141
+ ,
142
+ unClearableLevel: groupSetting?.unClearableLevel
143
+ // unClearableLevel={2}
144
+ ,
145
+ columns: propsColumns ? flatColumns2(propsColumns) : [],
146
+ columnsGrouped: groupColumns,
147
+ onSubmit: handleOnGroup
148
+ }), /*#__PURE__*/React.createElement(React.Fragment, null, !isObjEmpty(expanded) ? /*#__PURE__*/React.createElement(Collapse2, {
149
+ fontSize: 16,
150
+ color: '#555555',
151
+ onClick: handleCollapseAllGroup
152
+ }) : /*#__PURE__*/React.createElement(Expand2, {
153
+ fontSize: 16,
154
+ color: '#555555',
155
+ onClick: handleExpandAllGroup
156
+ })));
157
+ };
158
+ return /*#__PURE__*/React.createElement("div", {
159
+ ref: containerRef,
160
+ id: id
161
+ }, (showToolbar !== false || fullScreen !== false || title) && /*#__PURE__*/React.createElement("div", {
162
+ ref: topToolbarRef,
163
+ className: classNames(`${prefix}-grid-top-toolbar`, {})
164
+ }, /*#__PURE__*/React.createElement("div", {
165
+ style: {
166
+ textAlign: 'center'
167
+ }
168
+ }, typeof title === 'function' ? title?.(originData) : title), /*#__PURE__*/React.createElement("div", {
169
+ style: {
170
+ display: 'flex',
171
+ justifyContent: 'space-between',
172
+ alignItems: 'center',
173
+ gap: '.75rem'
174
+ }
175
+ }, groupToolbar(), /*#__PURE__*/React.createElement("div", {
176
+ style: {
177
+ flex: 1,
178
+ overflow: 'hidden'
179
+ }
180
+ }, /*#__PURE__*/React.createElement(Toolbar, {
181
+ items: (toolbarItems ?? []).filter(it => it.position !== 'Bottom'),
182
+ mode: 'scroll'
183
+ })), /*#__PURE__*/React.createElement("div", {
184
+ style: {
185
+ display: 'flex',
186
+ justifyContent: 'space-between',
187
+ alignItems: 'center',
188
+ gap: '.75rem'
189
+ }
190
+ }, pagination && pagination.onChange && pagination?.position && pagination?.position[0] === 'topRight' && /*#__PURE__*/React.createElement(Pagination, _extends({
191
+ showSizeChanger: true,
192
+ responsive: true,
193
+ size: 'small',
194
+ rootClassName: 'top-pagination',
195
+ showTotal: (totalItems, range) =>
196
+ // @ts-ignore
197
+ `${range[0]}-${range[1]} / ${totalItems} ${t ? t(pagination?.locale?.items ?? 'items') : 'items'}`
198
+ }, pagination)), typeof actionTemplate === 'function' ? actionTemplate() : actionTemplate, fullScreen !== false && (isFullScreen ? /*#__PURE__*/React.createElement(Minimize, {
199
+ fontSize: 16,
200
+ onClick: () => {
201
+ setIsFullScreen(!isFullScreen);
202
+ },
203
+ "data-tooltip-id": `${id}-tooltip-content`,
204
+ "data-tooltip-content": t ? t('Minimized') : 'Minimized'
205
+ }) : /*#__PURE__*/React.createElement(Maximize, {
206
+ fontSize: 16,
207
+ onClick: () => {
208
+ setIsFullScreen(!isFullScreen);
209
+ },
210
+ "data-tooltip-id": `${id}-tooltip-content`,
211
+ "data-tooltip-content": t ? t('Full screen') : 'Full screen'
212
+ })), showColumnChoose && /*#__PURE__*/React.createElement(ColumnsChoose, {
213
+ columnHidden: columnHidden,
214
+ columns: columns,
215
+ originColumns: propsColumns,
216
+ t: t,
217
+ columnsGroup: groupColumns,
218
+ triggerChangeColumns: triggerChangeColumns
219
+ })))), /*#__PURE__*/React.createElement(TableContext.Provider, {
220
+ value: {
221
+ t,
222
+ locale,
223
+ prefix,
224
+ id,
225
+ rowKey,
226
+ format,
227
+ expandable,
228
+ expanded,
229
+ setExpanded,
230
+ dataSource,
231
+ originData,
232
+ wrapSettings,
233
+ recordDoubleClick,
234
+ selectionSettings,
235
+ isSelectionChange,
236
+ setIsSelectionChange,
237
+ onContextMenu,
238
+ setSorterChange,
239
+ setFilterChange,
240
+ windowSize,
241
+ isDataTree,
242
+ rowClassName,
243
+ onRowStyles,
244
+ onRowFooterStyles,
245
+ onRowHeaderStyles,
246
+ table,
247
+ pagination,
248
+ groupSetting
249
+ }
250
+ }, /*#__PURE__*/React.createElement(TableWrapper, {
251
+ tableContainerRef: tableContainerRef,
252
+ prefix: prefix,
253
+ id: id,
254
+ height: tableHeight,
255
+ minHeight: minHeight,
256
+ dataSource: dataSource,
257
+ table: table,
258
+ columns: columns,
259
+ commandClick: triggerCommandClick
260
+ })), /*#__PURE__*/React.createElement("div", {
261
+ ref: bottomToolbarRef
262
+ }, pagination && !infiniteScroll && /*#__PURE__*/React.createElement(Pagination
263
+ // style={{padding: '0.75rem 1rem'}}
264
+ , _extends({
265
+ pageSizeOptions: [20, 50, 100, 1000, 10000]
266
+ }, pagination, {
267
+ rootClassName: 'pagination-template',
268
+ showSizeChanger: true,
269
+ responsive: true,
270
+ size: 'small',
271
+ total: pagination.total,
272
+ pageSize: pagination.onChange ? pagination.pageSize : table.getState().pagination.pageSize,
273
+ showTotal: (totalItems, range) => `${numericFormatter((range[0] ?? 0).toString(), {
274
+ thousandSeparator: '.'
275
+ })}-${numericFormatter((range[1] ?? 0).toString(), {
276
+ thousandSeparator: '.'
277
+ })} / ${numericFormatter((totalItems ?? 0).toString(), {
278
+ thousandSeparator: '.'
279
+ })} items`,
280
+ onChange: (page, pageSize1) => {
281
+ if (pagination.onChange) {
282
+ pagination.onChange(page, pageSize1);
283
+ table.setPageIndex(page - 1);
284
+ table.setPageSize(pageSize1);
285
+ } else {
286
+ table.setPageIndex(page - 1);
287
+ table.setPageSize(pageSize1);
288
+ }
289
+ }
290
+ }))));
291
+ };
292
+ export default TableContainer;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import type { ColumnDef, Table } from "@tanstack/react-table";
3
+ import type { CommandClick } from '../../table-component/type';
4
+ type Props<T> = {
5
+ tableContainerRef: React.RefObject<HTMLDivElement>;
6
+ table: Table<T>;
7
+ prefix: string;
8
+ id: string;
9
+ columns: ColumnDef<T>[];
10
+ height: number;
11
+ minHeight?: number;
12
+ dataSource: T[];
13
+ summary?: boolean;
14
+ loading?: boolean;
15
+ commandClick?: (args: Omit<CommandClick<T>, 'rows'>) => void;
16
+ editAble?: boolean;
17
+ showEmptyText?: boolean;
18
+ contextMenuClick?: any;
19
+ next?: () => void;
20
+ };
21
+ declare const TableWrapper: <RecordType extends object>(props: Props<RecordType>) => React.JSX.Element;
22
+ export default TableWrapper;