es-grid-template 1.7.24 → 1.7.26

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 (73) hide show
  1. package/es/table-component/ColumnsChoose.d.ts +6 -3
  2. package/es/table-component/ColumnsChoose.js +31 -382
  3. package/es/table-component/InternalTable.js +32 -19
  4. package/es/table-component/TableContainer.d.ts +11 -2
  5. package/es/table-component/TableContainer.js +134 -14
  6. package/es/table-component/TableContainerEdit.d.ts +10 -7
  7. package/es/table-component/TableContainerEdit.js +158 -65
  8. package/es/table-component/body/EditableCell.js +14 -11
  9. package/es/table-component/body/TableBody.d.ts +2 -1
  10. package/es/table-component/body/TableBody.js +25 -6
  11. package/es/table-component/body/TableBodyCell.d.ts +2 -0
  12. package/es/table-component/body/TableBodyCell.js +13 -3
  13. package/es/table-component/body/TableBodyCellEdit.d.ts +2 -1
  14. package/es/table-component/body/TableBodyCellEdit.js +159 -34
  15. package/es/table-component/body/TableBodyRow.js +9 -4
  16. package/es/table-component/components/ControlCheckbox.js +0 -3
  17. package/es/table-component/components/async-table-select/index.d.ts +1 -1
  18. package/es/table-component/components/async-table-select/index.js +1 -0
  19. package/es/table-component/components/command/Command.d.ts +1 -0
  20. package/es/table-component/components/command/Command.js +6 -1
  21. package/es/table-component/footer/TableFooterCell.js +45 -3
  22. package/es/table-component/footer/TableFooterRow.js +3 -1
  23. package/es/table-component/header/TableHeadCell.js +31 -12
  24. package/es/table-component/header/TableHeadRow.js +5 -1
  25. package/es/table-component/hook/useColumns.d.ts +5 -7
  26. package/es/table-component/hook/useColumns.js +18 -58
  27. package/es/table-component/hook/utils.d.ts +12 -0
  28. package/es/table-component/hook/utils.js +140 -2
  29. package/es/table-component/style.scss +72 -7
  30. package/es/table-component/table/Grid.d.ts +3 -2
  31. package/es/table-component/table/Grid.js +25 -100
  32. package/es/table-component/type.d.ts +34 -3
  33. package/es/table-component/useContext.d.ts +5 -50
  34. package/es/table-component/useContext.js +3 -49
  35. package/lib/table-component/ColumnsChoose.d.ts +6 -3
  36. package/lib/table-component/ColumnsChoose.js +29 -381
  37. package/lib/table-component/InternalTable.js +30 -16
  38. package/lib/table-component/TableContainer.d.ts +11 -2
  39. package/lib/table-component/TableContainer.js +135 -14
  40. package/lib/table-component/TableContainerEdit.d.ts +10 -7
  41. package/lib/table-component/TableContainerEdit.js +157 -64
  42. package/lib/table-component/body/EditableCell.js +14 -11
  43. package/lib/table-component/body/TableBody.d.ts +2 -1
  44. package/lib/table-component/body/TableBody.js +27 -6
  45. package/lib/table-component/body/TableBodyCell.d.ts +2 -0
  46. package/lib/table-component/body/TableBodyCell.js +13 -3
  47. package/lib/table-component/body/TableBodyCellEdit.d.ts +2 -1
  48. package/lib/table-component/body/TableBodyCellEdit.js +159 -34
  49. package/lib/table-component/body/TableBodyRow.js +9 -4
  50. package/lib/table-component/components/ControlCheckbox.js +0 -3
  51. package/lib/table-component/components/async-table-select/index.d.ts +1 -1
  52. package/lib/table-component/components/async-table-select/index.js +2 -0
  53. package/lib/table-component/components/command/Command.d.ts +1 -0
  54. package/lib/table-component/components/command/Command.js +6 -1
  55. package/lib/table-component/footer/TableFooterCell.js +46 -2
  56. package/lib/table-component/footer/TableFooterRow.js +3 -1
  57. package/lib/table-component/header/TableHeadCell.js +31 -12
  58. package/lib/table-component/header/TableHeadRow.js +5 -1
  59. package/lib/table-component/hook/useColumns.d.ts +5 -7
  60. package/lib/table-component/hook/useColumns.js +17 -57
  61. package/lib/table-component/hook/utils.d.ts +12 -0
  62. package/lib/table-component/hook/utils.js +156 -9
  63. package/lib/table-component/style.scss +72 -7
  64. package/lib/table-component/table/Grid.d.ts +3 -2
  65. package/lib/table-component/table/Grid.js +24 -100
  66. package/lib/table-component/type.d.ts +34 -3
  67. package/lib/table-component/useContext.d.ts +5 -50
  68. package/lib/table-component/useContext.js +4 -50
  69. package/package.json +2 -2
  70. package/es/table-component/table/GridEdit.d.ts +0 -23
  71. package/es/table-component/table/GridEdit.js +0 -282
  72. package/lib/table-component/table/GridEdit.d.ts +0 -23
  73. package/lib/table-component/table/GridEdit.js +0 -284
@@ -5,18 +5,27 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
9
  var _react = _interopRequireDefault(require("react"));
9
10
  var _TableHead = _interopRequireDefault(require("./header/TableHead"));
10
11
  var _utils = require("./hook/utils");
11
12
  var _reactVirtual = require("@tanstack/react-virtual");
12
13
  var _classnames = _interopRequireDefault(require("classnames"));
13
- var _TableBody = _interopRequireDefault(require("./body/TableBody"));
14
14
  var _useContext = require("./useContext");
15
+ var _pagination = _interopRequireDefault(require("rc-master-ui/es/pagination"));
16
+ var _rcMasterUi = require("rc-master-ui");
17
+ var _becoxyIcons = require("becoxy-icons");
18
+ var _ColumnsChoose = require("./ColumnsChoose");
19
+ var _TableFooter = _interopRequireDefault(require("./footer/TableFooter"));
20
+ var _TableBody = _interopRequireDefault(require("./body/TableBody"));
21
+ var _reactNumericComponent = require("react-numeric-component");
15
22
  // import type { Dispatch, SetStateAction } from "react";
16
23
 
24
+ // import TableBody from './body/TableBody'
25
+
17
26
  const TableContainer = props => {
18
27
  const {
19
- // t,
28
+ t,
20
29
  table,
21
30
  id,
22
31
  prefix,
@@ -36,10 +45,37 @@ const TableContainer = props => {
36
45
  contextMenuItems,
37
46
  setSorterChange,
38
47
  setFilterChange,
39
- tableHeight
48
+ height,
49
+ showToolbar,
50
+ toolbarItems,
51
+ actionTemplate,
52
+ pagination,
53
+ fullScreen,
54
+ showColumnChoose,
55
+ summary,
56
+ locale,
57
+ groupColumns,
58
+ columns,
59
+ propsColumns,
60
+ triggerChangeColumns,
61
+ columnHidden,
62
+ expanded,
63
+ setExpanded,
64
+ showEmptyText
40
65
  } = props;
41
66
  const tableContainerRef = _react.default.useRef(null);
67
+ const containerRef = _react.default.useRef(null);
68
+ const bottomToolbarRef = _react.default.useRef(null);
69
+ const topToolbarRef = _react.default.useRef(null);
42
70
  const visibleColumns = table.getVisibleLeafColumns();
71
+ const [isFullScreen] = _react.default.useState(false);
72
+ const [tableHeight, settableHeight] = _react.default.useState(0);
73
+ _react.default.useEffect(() => {
74
+ const totalHeight = height;
75
+ if (totalHeight && topToolbarRef.current && bottomToolbarRef.current) {
76
+ settableHeight(totalHeight - topToolbarRef.current.offsetHeight - bottomToolbarRef.current.offsetHeight);
77
+ }
78
+ }, [id, height, editAble]);
43
79
  const fixedLeftColumns = table.getState().columnPinning.left ? visibleColumns.filter(vc => table.getState().columnPinning.left?.includes(vc.id)) : [];
44
80
  const fixedRightColumns = table.getState().columnPinning.right ? visibleColumns.filter(vc => table.getState().columnPinning.right?.includes(vc.id)) : [];
45
81
  const columnVirtualizer = (0, _reactVirtual.useVirtualizer)({
@@ -50,15 +86,6 @@ const TableContainer = props => {
50
86
  measureElement: typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1 ? element => element?.getBoundingClientRect().height : undefined,
51
87
  overscan: 3 //how many columns to render on each side off screen each way (adjust this for performance)
52
88
  });
53
-
54
- // const columnSizingState = table.getState().columnSizing
55
-
56
- // React.useEffect(() => {
57
- // requestAnimationFrame(() => {
58
- // columnVirtualizer.measure()
59
- // })
60
- // }, [columnSizingState, columnVirtualizer])
61
-
62
89
  const virtualColumns = columnVirtualizer.getVirtualItems();
63
90
  const cacheColumns = columnVirtualizer.measurementsCache;
64
91
  const rightCols = table.getState().columnPinning.right?.length ? [...cacheColumns].slice(-(table.getState().columnPinning.right?.length ?? 0)) : [];
@@ -75,6 +102,61 @@ const TableContainer = props => {
75
102
  virtualPaddingRight = fixedRightColumns && fixedRightColumns.length > 0 ? pdRight - rightWidth > 0 ? pdRight - rightWidth : 0 : pdRight;
76
103
  }
77
104
  return /*#__PURE__*/_react.default.createElement("div", {
105
+ ref: containerRef,
106
+ id: id
107
+ }, (showToolbar !== false || fullScreen !== false) && /*#__PURE__*/_react.default.createElement("div", {
108
+ ref: topToolbarRef,
109
+ className: (0, _classnames.default)(`${prefix}-grid-top-toolbar`, {})
110
+ }, /*#__PURE__*/_react.default.createElement("div", {
111
+ style: {
112
+ display: 'flex',
113
+ justifyContent: 'space-between',
114
+ alignItems: 'center',
115
+ gap: '.75rem'
116
+ }
117
+ }, toolbarItems && toolbarItems?.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
118
+ style: {
119
+ flex: 1,
120
+ overflow: 'hidden'
121
+ }
122
+ }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
123
+ items: (toolbarItems ?? []).filter(it => it.position !== 'Bottom'),
124
+ mode: 'scroll'
125
+ })), fullScreen !== false && (isFullScreen ? /*#__PURE__*/_react.default.createElement(_becoxyIcons.Minimize, {
126
+ fontSize: 16
127
+ // onClick={() => handleFullScreen?.()}
128
+ ,
129
+ "data-tooltip-id": "tooltip-icon",
130
+ "data-tooltip-content": t ? t('Minimized') : 'Minimized'
131
+ }) : /*#__PURE__*/_react.default.createElement(_becoxyIcons.Maximize, {
132
+ fontSize: 16
133
+ // onClick={() => handleFullScreen?.()}
134
+ ,
135
+ "data-tooltip-id": "tooltip-icon",
136
+ "data-tooltip-content": t ? t('Full screen') : 'Full screen'
137
+ })), /*#__PURE__*/_react.default.createElement("div", {
138
+ style: {
139
+ display: 'flex',
140
+ justifyContent: 'space-between',
141
+ alignItems: 'center',
142
+ gap: '.75rem'
143
+ }
144
+ }, pagination && pagination.onChange && pagination?.position && pagination?.position[0] === 'topRight' && /*#__PURE__*/_react.default.createElement(_pagination.default, (0, _extends2.default)({
145
+ showSizeChanger: true,
146
+ responsive: true,
147
+ size: 'small',
148
+ rootClassName: 'top-pagination',
149
+ showTotal: (total, range) =>
150
+ // @ts-ignore
151
+ `${range[0]}-${range[1]} / ${total} ${t ? t(pagination?.locale?.items ?? 'items') : 'items'}`
152
+ }, pagination)), typeof actionTemplate === 'function' ? actionTemplate() : actionTemplate, showColumnChoose && /*#__PURE__*/_react.default.createElement(_ColumnsChoose.ColumnsChoose, {
153
+ columnHidden: columnHidden,
154
+ columns: columns,
155
+ originColumns: propsColumns,
156
+ t: t,
157
+ columnsGroup: groupColumns,
158
+ triggerChangeColumns: triggerChangeColumns
159
+ })))), /*#__PURE__*/_react.default.createElement("div", {
78
160
  className: (0, _classnames.default)(`${prefix}-grid-container`, {
79
161
  'ui-rc-table-ping-right': tableContainerRef && (tableContainerRef.current?.scrollLeft ?? 0) >= 0 && (tableContainerRef.current?.scrollLeft ?? 0) + (tableContainerRef.current?.clientWidth ?? 0) < (tableContainerRef.current?.scrollWidth ?? 0),
80
162
  'ui-rc-table-ping-left': tableContainerRef && (tableContainerRef.current?.scrollLeft ?? 0) > 0
@@ -86,16 +168,20 @@ const TableContainer = props => {
86
168
  //our scrollable table container
87
169
  position: 'relative',
88
170
  //needed for sticky header
89
- height: tableHeight ?? '500px' //should be a fixed height
171
+ // height: tableHeight ?? '500px' //should be a fixed height
172
+ maxHeight: tableHeight //should be a fixed height
90
173
  // minWidth: table.getTotalSize()
91
174
  }
92
175
  }, /*#__PURE__*/_react.default.createElement(_useContext.TableContext.Provider, {
93
176
  value: {
177
+ locale,
94
178
  prefix,
95
179
  id,
96
180
  rowKey,
97
181
  format,
98
182
  expandable,
183
+ expanded,
184
+ setExpanded,
99
185
  dataSource,
100
186
  originData,
101
187
  // triggerFilter,
@@ -131,7 +217,42 @@ const TableContainer = props => {
131
217
  fixedRightColumns: fixedRightColumns,
132
218
  commandClick: commandClick,
133
219
  editAble: editAble,
134
- contextMenuItems: contextMenuItems
220
+ contextMenuItems: contextMenuItems,
221
+ showEmptyText: showEmptyText
222
+ }), summary && /*#__PURE__*/_react.default.createElement(_TableFooter.default, {
223
+ columnVirtualizer: columnVirtualizer,
224
+ table: table,
225
+ virtualPaddingLeft: virtualPaddingLeft,
226
+ virtualPaddingRight: virtualPaddingRight,
227
+ fixedLeftColumns: fixedLeftColumns,
228
+ fixedRightColumns: fixedRightColumns
229
+ })))), /*#__PURE__*/_react.default.createElement("div", {
230
+ ref: bottomToolbarRef
231
+ }, pagination && /*#__PURE__*/_react.default.createElement(_pagination.default
232
+ // style={{padding: '0.75rem 1rem'}}
233
+ , (0, _extends2.default)({}, pagination, {
234
+ rootClassName: 'pagination-template',
235
+ showSizeChanger: true,
236
+ responsive: true,
237
+ size: 'small',
238
+ total: pagination.total,
239
+ pageSize: pagination.onChange ? pagination.pageSize : table.getState().pagination.pageSize,
240
+ showTotal: (total, range) => `${(0, _reactNumericComponent.numericFormatter)((range[0] ?? 0).toString(), {
241
+ thousandSeparator: '.'
242
+ })}-${(0, _reactNumericComponent.numericFormatter)((range[1] ?? 0).toString(), {
243
+ thousandSeparator: '.'
244
+ })} / ${(0, _reactNumericComponent.numericFormatter)((total ?? 0).toString(), {
245
+ thousandSeparator: '.'
246
+ })} items`,
247
+ pageSizeOptions: [20, 50, 100, 1000, 10000],
248
+ onChange: (page, pageSize) => {
249
+ if (pagination.onChange) {
250
+ pagination.onChange(page, pageSize);
251
+ } else {
252
+ table.setPageIndex(page - 1);
253
+ table.setPageSize(pageSize);
254
+ }
255
+ }
135
256
  }))));
136
257
  };
137
258
  var _default = exports.default = TableContainer;
@@ -1,13 +1,14 @@
1
1
  import type { Dispatch, SetStateAction } from "react";
2
2
  import React from "react";
3
- import type { Table } from "@tanstack/react-table";
4
- import type { TableProps } from "./type";
3
+ import type { ColumnDef, Table } from "@tanstack/react-table";
4
+ import type { ColumnsTable, TableProps } from "./type";
5
5
  type TableContainerProps<T> = Omit<TableProps<T>, 'columns'> & {
6
6
  table: Table<T>;
7
7
  prefix: string;
8
8
  id: string;
9
9
  rowKey: any;
10
10
  originData: T[];
11
+ propsColumns: ColumnsTable;
11
12
  setIsSelectionChange: Dispatch<SetStateAction<{
12
13
  isChange: boolean;
13
14
  type: string;
@@ -18,11 +19,13 @@ type TableContainerProps<T> = Omit<TableProps<T>, 'columns'> & {
18
19
  onContextMenu?: (data: T) => (event: any) => void;
19
20
  tableHeight?: number;
20
21
  triggerPaste?: (pastedRows: T[], pastedColumnsArray: string[], newData: T[], copyRows: T[]) => void;
21
- triggerChangeData?: (newData: T[], type: string) => void;
22
- mergedFilterKeys: any;
23
- setMergedFilterKeys: any;
24
- setExpanded: any;
25
- expanded: any;
22
+ mergedFilterKeys?: any;
23
+ setMergedFilterKeys?: any;
24
+ setExpanded?: any;
25
+ expanded?: any;
26
+ columns: ColumnDef<T>[];
27
+ triggerChangeColumns: any;
28
+ columnHidden: any;
26
29
  };
27
30
  declare const TableContainerEdit: <RecordType extends object>(props: TableContainerProps<RecordType>) => React.JSX.Element;
28
31
  export default TableContainerEdit;