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
@@ -21,12 +21,45 @@ var _rcMasterUi = require("rc-master-ui");
21
21
  var _classnames = _interopRequireDefault(require("classnames"));
22
22
  var _becoxyIcons = require("becoxy-icons");
23
23
  var _ColumnsChoose = require("./ColumnsChoose");
24
+ var _TableFooter = _interopRequireDefault(require("./footer/TableFooter"));
24
25
  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
26
  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
27
  const {
27
28
  Paragraph,
28
29
  Title
29
30
  } = _antd.Typography;
31
+ const validateData = async (data, formSchema) => {
32
+ if (!formSchema) {
33
+ return [];
34
+ } else {
35
+ const errors = [];
36
+ for (let i = 0; i < data.length; i++) {
37
+ try {
38
+ await formSchema.validate(data[i], {
39
+ abortEarly: false
40
+ });
41
+ } catch (error) {
42
+ errors.push(error.inner.reduce((acc, err) => {
43
+ acc[err.path] = {
44
+ field: err.path,
45
+ index: i,
46
+ message: err.message,
47
+ type: err.type,
48
+ ref: {
49
+ name: err.path
50
+ }
51
+ };
52
+ return {
53
+ ...acc,
54
+ index: i,
55
+ id: data[i].rowId
56
+ };
57
+ }, {}));
58
+ }
59
+ }
60
+ return errors;
61
+ }
62
+ };
30
63
  const TableContainerEdit = props => {
31
64
  const {
32
65
  t,
@@ -51,14 +84,16 @@ const TableContainerEdit = props => {
51
84
  setFilterChange,
52
85
  // tableHeight,
53
86
  onCellPaste,
54
- triggerPaste,
87
+ // triggerPaste,
55
88
  validate,
56
- triggerChangeData,
89
+ // triggerChangeData,
57
90
  onCellChange,
91
+ onDataChange,
58
92
  defaultValue,
59
93
  toolbarItems,
60
94
  mergedFilterKeys,
61
95
  setMergedFilterKeys,
96
+ expanded,
62
97
  setExpanded,
63
98
  onBlur,
64
99
  fullScreen,
@@ -66,7 +101,15 @@ const TableContainerEdit = props => {
66
101
  showToolbar,
67
102
  actionTemplate,
68
103
  showColumnChoose,
69
- height
104
+ height,
105
+ summary,
106
+ locale,
107
+ groupColumns,
108
+ columns,
109
+ propsColumns,
110
+ triggerChangeColumns,
111
+ columnHidden,
112
+ showEmptyText
70
113
  } = props;
71
114
  const containerRef = _react.default.useRef(null);
72
115
  const bottomToolbarRef = _react.default.useRef(null);
@@ -94,7 +137,7 @@ const TableContainerEdit = props => {
94
137
  // },
95
138
 
96
139
  measureElement: typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1 ? element => element?.getBoundingClientRect().height : undefined,
97
- overscan: 3 //how many columns to render on each side off screen each way (adjust this for performance)
140
+ overscan: 1 //how many columns to render on each side off screen each way (adjust this for performance)
98
141
  });
99
142
  const columnSizingState = table.getState().columnSizing;
100
143
  const itemsAdd = _react.default.useMemo(() => {
@@ -109,11 +152,22 @@ const TableContainerEdit = props => {
109
152
  label: `100 ${t ? t('rows') : 'rows'}`
110
153
  }];
111
154
  }, [t]);
155
+ const [dataErrors, setDataErrors] = _react.default.useState([]);
112
156
  _react.default.useEffect(() => {
113
157
  requestAnimationFrame(() => {
114
158
  columnVirtualizer.measure();
115
159
  });
116
160
  }, [columnSizingState, columnVirtualizer]);
161
+ _react.default.useEffect(() => {
162
+ if (validate && dataSource && dataSource.length) {
163
+ validateData(dataSource, validate).then(error => {
164
+ setDataErrors([...error]);
165
+ // if (getErrors) {
166
+ // getErrors([...error])
167
+ // }
168
+ });
169
+ }
170
+ }, [validate, dataSource]);
117
171
  const virtualColumns = columnVirtualizer.getVirtualItems();
118
172
  const cacheColumns = columnVirtualizer.measurementsCache;
119
173
  const rightCols = table.getState().columnPinning.right?.length ? [...cacheColumns].slice(-(table.getState().columnPinning.right?.length ?? 0)) : [];
@@ -194,8 +248,41 @@ const TableContainerEdit = props => {
194
248
  // Copy to clipboard
195
249
  navigator.clipboard.writeText(tsv).then(() => {});
196
250
  }, [startCell, endCell, table]);
251
+ const triggerChangeData = _react.default.useCallback(newData => {
252
+ onDataChange?.(newData);
253
+ }, [onDataChange]);
254
+ const triggerPaste = _react.default.useCallback((pastedRows, pastedColumnsArray, newData, copyRows) => {
255
+ const handlePasteCallback = callbackData => {
256
+ const rsFilterData = (0, _utils.updateOrInsert)((0, _utils.flattenArray)([...dataSource]), callbackData);
257
+ const rs = (0, _utils.unFlattenData)(rsFilterData);
258
+ triggerChangeData(rs);
259
+ };
260
+ if (onCellPaste && onCellPaste.onPasted) {
261
+ if (onCellPaste.onPasted.length > 1) {
262
+ // có callback
263
+ onCellPaste.onPasted({
264
+ pasteData: pastedRows,
265
+ copyRows,
266
+ type: 'onPaste',
267
+ data: dataSource,
268
+ pastedColumns: pastedColumnsArray
269
+ }, handlePasteCallback);
270
+ } else {
271
+ // không có callback
272
+ onCellPaste.onPasted({
273
+ pasteData: pastedRows,
274
+ type: 'onPaste',
275
+ copyRows,
276
+ data: dataSource,
277
+ pastedColumns: pastedColumnsArray
278
+ }, handlePasteCallback);
279
+ triggerChangeData(newData);
280
+ }
281
+ } else {
282
+ triggerChangeData(newData);
283
+ }
284
+ }, [dataSource, onCellPaste, triggerChangeData]);
197
285
  const handlePasted = _react.default.useCallback(pasteData => {
198
- console.log('ooooooo');
199
286
  if (!startCell) {
200
287
  return;
201
288
  }
@@ -280,7 +367,6 @@ const TableContainerEdit = props => {
280
367
  const pastedColumnsArray = Array.from(pastedColumns) ?? [];
281
368
  const rsFilterData = (0, _utils.updateOrInsert)((0, _utils.flattenArray)([...originData]), newData);
282
369
  const rs = (0, _utils.unFlattenData)(rsFilterData);
283
- console.log('2');
284
370
  triggerPaste?.(pastedRows, pastedColumnsArray, rs, []);
285
371
  } else {
286
372
  // const parent = findItemByKey(dataSource, rowKey as any, record.parentId)
@@ -338,7 +424,6 @@ const TableContainerEdit = props => {
338
424
  }; // item đã được filter
339
425
 
340
426
  const newDataSource = (0, _utils.updateArrayByKey)(originData, newRowData, rowKey);
341
- console.log('1');
342
427
  triggerPaste?.(pastedRows, pastedColumnsArray, newDataSource, []);
343
428
  }
344
429
  }, [dataSource, format, onCellPaste?.maxRowsPaste, originData, rowKey, startCell, table, triggerPaste]);
@@ -383,38 +468,25 @@ const TableContainerEdit = props => {
383
468
  }
384
469
  }, [handlePasted, onCellPaste?.maxRowsPaste, startCell]);
385
470
  _react.default.useEffect(() => {
386
-
387
- // const handleKeyDown = (e: KeyboardEvent) => {
388
- // console.log('copySelectionToClipboard')
389
- // if (e.ctrlKey && e.key === 'c' && startCell && endCell) {
390
-
391
- // e.preventDefault();
392
- // copySelectionToClipboard();
393
-
394
- // }
395
- // };
396
-
397
- // window.addEventListener('keydown', handleKeyDown);
398
- // return () => window.removeEventListener('keydown', handleKeyDown);
471
+ const handleKeyDown = e => {
472
+ if (e.ctrlKey && e.key === 'c' && startCell && endCell) {
473
+ e.preventDefault();
474
+ copySelectionToClipboard();
475
+ }
476
+ };
477
+ window.addEventListener('keydown', handleKeyDown);
478
+ return () => window.removeEventListener('keydown', handleKeyDown);
399
479
  }, [startCell, endCell, table, copySelectionToClipboard]);
400
480
  _react.default.useEffect(() => {
401
-
402
- // console.log('handlePaste')
403
-
404
- // const handlePaste = (e: any) => {
405
-
406
- // if (startCell) {
407
-
408
- // e.preventDefault(); // Chặn hành vi mặc định
409
- // const clipboardText = e.clipboardData?.getData('text/plain') ?? '';
410
-
411
- // handlePasteToTable(clipboardText);
412
- // }
413
-
414
- // };
415
-
416
- // window.addEventListener('paste', handlePaste);
417
- // return () => window.removeEventListener('paste', handlePaste);
481
+ const handlePaste = e => {
482
+ if (startCell) {
483
+ e.preventDefault(); // Chặn hành vi mặc định
484
+ const clipboardText = e.clipboardData?.getData('text/plain') ?? '';
485
+ handlePasteToTable(clipboardText);
486
+ }
487
+ };
488
+ window.addEventListener('paste', handlePaste);
489
+ return () => window.removeEventListener('paste', handlePaste);
418
490
  }, [startCell, endCell, table, handlePasteToTable]);
419
491
  _react.default.useEffect(() => {
420
492
  const handleClickOutside = event => {
@@ -429,11 +501,9 @@ const TableContainerEdit = props => {
429
501
  const isInsideToolbar = element.closest(`.ui-rc-toolbar-selection-overflow-item`) && itemContainer;
430
502
  const isInsideHeader = itemHeader && itemHeader.contains(event.target);
431
503
  if (isInsideContainer || isInsideToolbar || isInsideHeader || isInsideContainerContext) {
432
- console.log('55555');
433
504
  return;
434
505
  }
435
506
  if (containerRef.current && tableBody && !tableBody.contains(event.target)) {
436
- console.log('55555');
437
507
  if (editingKey) {
438
508
  onBlur?.(dataSource);
439
509
  }
@@ -462,14 +532,14 @@ const TableContainerEdit = props => {
462
532
  if (totalHeight && topToolbarRef.current && bottomToolbarRef.current) {
463
533
  settableHeight(totalHeight - topToolbarRef.current.offsetHeight - bottomToolbarRef.current.offsetHeight);
464
534
  }
465
- }, [id, height]);
535
+ }, [id, height, editAble]);
466
536
  const {
467
537
  control,
468
538
  handleSubmit,
469
539
  setValue,
470
540
  // trigger,
471
541
  getValues,
472
- // reset,
542
+ reset,
473
543
  formState: {
474
544
  errors
475
545
  }
@@ -491,7 +561,7 @@ const TableContainerEdit = props => {
491
561
  const index = (0, _utils.flattenData)(childrenColumnName, newData).findIndex(item => formData[rowKey] === item[rowKey]);
492
562
  const rs = (0, _utils.updateArrayByKey)(newData, row, rowKey);
493
563
  if (index > -1) {
494
- triggerChangeData?.(rs, 'onChange');
564
+ triggerChangeData?.(rs);
495
565
  }
496
566
  } catch (errInfo) {
497
567
  console.log('Validate Failed:', errInfo);
@@ -575,7 +645,7 @@ const TableContainerEdit = props => {
575
645
  const rs = mergedFilterKeys ? [...mergedFilterKeys, ...kkk] : [...kkk];
576
646
  setMergedFilterKeys?.(rs);
577
647
  const newData = dataSource.concat(newRows);
578
- triggerChangeData?.(newData, 'Add');
648
+ triggerChangeData?.(newData);
579
649
  }
580
650
  }, [dataSource, defaultValue, mergedFilterKeys, setMergedFilterKeys, triggerChangeData]);
581
651
  const handleDuplicate = _react.default.useCallback(() => {
@@ -607,7 +677,7 @@ const TableContainerEdit = props => {
607
677
  const rs = (0, _utils.updateOrInsert)(originData, rsFilter);
608
678
  // const rs2 = mergeWithFilter(originData, rsFilter)
609
679
 
610
- triggerChangeData?.(rs, 'DUPLICATE');
680
+ triggerChangeData?.(rs);
611
681
  }, [dataSource, focusedCell, originData, rowKey, table, triggerChangeData]);
612
682
 
613
683
  // thêm n dòng bên trên
@@ -640,7 +710,7 @@ const TableContainerEdit = props => {
640
710
  setMergedFilterKeys?.(rs);
641
711
  const index = newData.findIndex(obj => obj[rowKey] === record[rowKey]);
642
712
  newData.splice(index, 0, ...newRows);
643
- triggerChangeData?.(newData, 'INSERT_BEFORE');
713
+ triggerChangeData?.(newData);
644
714
  } else {
645
715
  const newData = [...originData];
646
716
  const parent = (0, _utils.findItemByKey)(newData, rowKey, record.parentId);
@@ -666,7 +736,7 @@ const TableContainerEdit = props => {
666
736
  children: childData
667
737
  };
668
738
  const newDataSource = (0, _utils.updateArrayByKey)(newData, newRowData, rowKey);
669
- triggerChangeData?.(newDataSource, 'INSERT_BEFORE');
739
+ triggerChangeData?.(newDataSource);
670
740
  }
671
741
  }
672
742
  }, [defaultValue, mergedFilterKeys, originData, rowKey, rowsFocus, setMergedFilterKeys, table, triggerChangeData]);
@@ -704,7 +774,7 @@ const TableContainerEdit = props => {
704
774
  setMergedFilterKeys?.(rs);
705
775
  const index = newData.findIndex(obj => obj[rowKey] === record[rowKey]);
706
776
  newData.splice(index + 1, 0, ...newRows);
707
- triggerChangeData?.(newData, 'INSERT_AFTER');
777
+ triggerChangeData?.(newData);
708
778
  } else {
709
779
  const newData = [...originData];
710
780
  const parent = (0, _utils.findItemByKey)(newData, rowKey, record.parentId);
@@ -733,7 +803,7 @@ const TableContainerEdit = props => {
733
803
  children: childData
734
804
  };
735
805
  const newDataSource = (0, _utils.updateArrayByKey)(newData, newRowData, rowKey);
736
- triggerChangeData?.(newDataSource, 'INSERT_BEFORE');
806
+ triggerChangeData?.(newDataSource);
737
807
  }
738
808
  }
739
809
  }, [defaultValue, table, focusedCell?.rowId, originData, mergedFilterKeys, setMergedFilterKeys, triggerChangeData, rowKey]);
@@ -771,7 +841,7 @@ const TableContainerEdit = props => {
771
841
  const rs = mergedFilterKeys ? [...mergedFilterKeys, rowId] : [rowId];
772
842
  setMergedFilterKeys?.(rs);
773
843
  const newDataSource = (0, _utils.updateArrayByKey)(newData, newElement, rowKey);
774
- triggerChangeData?.(newDataSource, 'INSERT_CHILDREN');
844
+ triggerChangeData?.(newDataSource);
775
845
  }
776
846
  setTimeout(() => {
777
847
  const row = table.getRowModel().rows.find(it => it.id === focusedCell?.rowId);
@@ -798,11 +868,11 @@ const TableContainerEdit = props => {
798
868
  const filterData = (0, _utils.flattenArray)([...originData]);
799
869
  const rs = filterData.filter(it => !rowsFocus.includes(it[rowKey]));
800
870
  const newDaa = (0, _utils.unFlattenData)(rs);
801
- triggerChangeData?.([...newDaa], 'DELETE_ROWS');
871
+ triggerChangeData?.([...newDaa]);
802
872
  }
803
873
  }, [originData, rowKey, rowsFocus, triggerChangeData]);
804
874
  const handleDeleteAll = _react.default.useCallback(() => {
805
- triggerChangeData?.([], 'INSERT_BEFORE');
875
+ triggerChangeData?.([]);
806
876
  }, [triggerChangeData]);
807
877
  const handleDeleteContent = _react.default.useCallback(() => {
808
878
  if (startCell && endCell) {
@@ -823,7 +893,7 @@ const TableContainerEdit = props => {
823
893
  return updatedRow;
824
894
  });
825
895
  const newData = (0, _utils.unFlattenData)(rs);
826
- triggerChangeData?.([...newData], 'DELETE_CONTENT');
896
+ triggerChangeData?.([...newData]);
827
897
  }
828
898
  }, [dataSource, endCell, rangeState, startCell, table, triggerChangeData]);
829
899
  const toolbarItemsBottom = _react.default.useMemo(() => {
@@ -1038,7 +1108,7 @@ const TableContainerEdit = props => {
1038
1108
  return /*#__PURE__*/_react.default.createElement("div", {
1039
1109
  ref: containerRef,
1040
1110
  id: id
1041
- }, (showToolbar !== false || fullScreen !== false) && /*#__PURE__*/_react.default.createElement("div", {
1111
+ }, (showToolbar !== false || fullScreen !== false || showColumnChoose) && /*#__PURE__*/_react.default.createElement("div", {
1042
1112
  ref: topToolbarRef,
1043
1113
  className: (0, _classnames.default)(`${prefix}-grid-top-toolbar`, {})
1044
1114
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -1084,10 +1154,12 @@ const TableContainerEdit = props => {
1084
1154
  // @ts-ignore
1085
1155
  `${range[0]}-${range[1]} / ${total} ${t ? t(pagination?.locale?.items ?? 'items') : 'items'}`
1086
1156
  }, pagination)), typeof actionTemplate === 'function' ? actionTemplate() : actionTemplate, showColumnChoose && /*#__PURE__*/_react.default.createElement(_ColumnsChoose.ColumnsChoose, {
1087
- columns: [],
1157
+ columns: columns,
1158
+ originColumns: propsColumns,
1088
1159
  t: t,
1089
- columnsGroup: []
1090
- // triggerChangeColumns={triggerChangeColumns}
1160
+ columnsGroup: groupColumns,
1161
+ triggerChangeColumns: triggerChangeColumns,
1162
+ columnHidden: columnHidden
1091
1163
  })))), /*#__PURE__*/_react.default.createElement("form", {
1092
1164
  onSubmit: handleSubmit(onSubmit)
1093
1165
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -1102,15 +1174,19 @@ const TableContainerEdit = props => {
1102
1174
  //our scrollable table container
1103
1175
  position: 'relative',
1104
1176
  //needed for sticky header
1105
- height: tableHeight //should be a fixed height
1177
+ // height: tableHeight, //should be a fixed height
1178
+ maxHeight: tableHeight //should be a fixed height
1106
1179
  }
1107
1180
  }, /*#__PURE__*/_react.default.createElement(_useContext.TableContext.Provider, {
1108
1181
  value: {
1182
+ locale,
1109
1183
  prefix,
1110
1184
  id,
1111
1185
  rowKey,
1112
1186
  format,
1113
1187
  expandable,
1188
+ expanded,
1189
+ setExpanded,
1114
1190
  dataSource,
1115
1191
  originData,
1116
1192
  wrapSettings,
@@ -1146,16 +1222,18 @@ const TableContainerEdit = props => {
1146
1222
  errors,
1147
1223
  getValues,
1148
1224
  setValue,
1225
+ reset,
1149
1226
  handleCellChange,
1150
1227
  triggerPaste,
1151
1228
  handleDeleteContent,
1152
- handleAddMulti
1229
+ handleAddMulti,
1230
+ dataErrors
1153
1231
  }
1154
1232
  }, /*#__PURE__*/_react.default.createElement("table", {
1155
1233
  // className={`${prefix}-grid-container`}
1156
1234
  style: {
1157
- display: 'grid',
1158
- minWidth: table.getTotalSize()
1235
+ display: 'grid'
1236
+ // minWidth: table.getTotalSize()
1159
1237
  }
1160
1238
  }, /*#__PURE__*/_react.default.createElement(_TableHead.default, {
1161
1239
  tableContainerRef: tableContainerRef,
@@ -1176,7 +1254,15 @@ const TableContainerEdit = props => {
1176
1254
  fixedRightColumns: fixedRightColumns,
1177
1255
  commandClick: commandClick,
1178
1256
  editAble: editAble,
1179
- contextMenuItems: contextMenuItems
1257
+ contextMenuItems: contextMenuItems,
1258
+ showEmptyText: showEmptyText
1259
+ }), summary && /*#__PURE__*/_react.default.createElement(_TableFooter.default, {
1260
+ columnVirtualizer: columnVirtualizer,
1261
+ table: table,
1262
+ virtualPaddingLeft: virtualPaddingLeft,
1263
+ virtualPaddingRight: virtualPaddingRight,
1264
+ fixedLeftColumns: fixedLeftColumns,
1265
+ fixedRightColumns: fixedRightColumns
1180
1266
  }))))), /*#__PURE__*/_react.default.createElement("div", {
1181
1267
  ref: bottomToolbarRef
1182
1268
  }, toolbarItemsBottom && toolbarItemsBottom.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
@@ -1199,7 +1285,7 @@ const TableContainerEdit = props => {
1199
1285
  }
1200
1286
  })), pagination && /*#__PURE__*/_react.default.createElement(_pagination.default
1201
1287
  // style={{padding: '0.75rem 1rem'}}
1202
- , {
1288
+ , (0, _extends2.default)({}, pagination, {
1203
1289
  rootClassName: 'pagination-template',
1204
1290
  showSizeChanger: true,
1205
1291
  responsive: true,
@@ -1214,7 +1300,14 @@ const TableContainerEdit = props => {
1214
1300
  table.setPageIndex(page - 1);
1215
1301
  table.setPageSize(pageSize);
1216
1302
  }
1217
- }
1218
- })));
1303
+ },
1304
+ showTotal: (total, range) => `${(0, _reactNumericComponent.numericFormatter)((range[0] ?? 0).toString(), {
1305
+ thousandSeparator: '.'
1306
+ })}-${(0, _reactNumericComponent.numericFormatter)((range[1] ?? 0).toString(), {
1307
+ thousandSeparator: '.'
1308
+ })} / ${(0, _reactNumericComponent.numericFormatter)((total ?? 0).toString(), {
1309
+ thousandSeparator: '.'
1310
+ })} items`
1311
+ }))));
1219
1312
  };
1220
1313
  var _default = exports.default = TableContainerEdit;
@@ -172,7 +172,7 @@ const EditableCell = props => {
172
172
  popupClassName: 'be-popup-container',
173
173
  status: isInvalid ? 'error' : undefined,
174
174
  "data-tooltip-content": message,
175
- "data-tooltip-id": `${id}-tooltip-form-error`
175
+ "data-tooltip-id": `${id}-tooltip-content`
176
176
  });
177
177
  case 'datetime':
178
178
  return /*#__PURE__*/_react.default.createElement(_antd.DatePicker
@@ -228,7 +228,7 @@ const EditableCell = props => {
228
228
  popupClassName: 'be-popup-container',
229
229
  status: isInvalid ? 'error' : undefined,
230
230
  "data-tooltip-content": message,
231
- "data-tooltip-id": `${id}-tooltip-form-error`,
231
+ "data-tooltip-id": `${id}-tooltip-content`,
232
232
  autoFocus: column.field === startCell?.colId,
233
233
  defaultOpen: column.field === startCell?.colId
234
234
  });
@@ -256,7 +256,7 @@ const EditableCell = props => {
256
256
  popupClassName: 'be-popup-container',
257
257
  status: isInvalid ? 'error' : undefined,
258
258
  "data-tooltip-content": message,
259
- "data-tooltip-id": `${id}-tooltip-form-error`,
259
+ "data-tooltip-id": `${id}-tooltip-content`,
260
260
  autoFocus: column.field === startCell?.colId,
261
261
  defaultOpen: column.field === startCell?.colId
262
262
  });
@@ -278,7 +278,7 @@ const EditableCell = props => {
278
278
  popupClassName: 'be-popup-container',
279
279
  status: isInvalid ? 'error' : undefined,
280
280
  "data-tooltip-content": message,
281
- "data-tooltip-id": `${id}-tooltip-form-error`,
281
+ "data-tooltip-id": `${id}-tooltip-content`,
282
282
  autoFocus: column.field === startCell?.colId,
283
283
  defaultOpen: column.field === startCell?.colId
284
284
  });
@@ -307,7 +307,7 @@ const EditableCell = props => {
307
307
  popupClassName: 'be-popup-container',
308
308
  status: isInvalid ? 'error' : undefined,
309
309
  "data-tooltip-content": message,
310
- "data-tooltip-id": `${id}-tooltip-form-error`,
310
+ "data-tooltip-id": `${id}-tooltip-content`,
311
311
  autoFocus: column.field === startCell?.colId,
312
312
  defaultOpen: column.field === startCell?.colId
313
313
  });
@@ -348,6 +348,7 @@ const EditableCell = props => {
348
348
  defaultOptions: options,
349
349
  value: valueSelectTable,
350
350
  rowData: record,
351
+ autoDestroy: true,
351
352
  onChange: (val, option) => {
352
353
  onChange(val ?? '');
353
354
  const formState = getValues();
@@ -434,7 +435,7 @@ const EditableCell = props => {
434
435
  }
435
436
  },
436
437
  "data-tooltip-content": message,
437
- "data-tooltip-id": `${id}-tooltip-form-error`
438
+ "data-tooltip-id": `${id}-tooltip-content`
438
439
  });
439
440
  case 'select':
440
441
  let valueSelect = value;
@@ -468,6 +469,7 @@ const EditableCell = props => {
468
469
  type: 'blur'
469
470
  });
470
471
  },
472
+ autoDestroy: true,
471
473
  showSearch: true,
472
474
  mode: isMulti || selectMode === 'checkbox' ? 'multiple' : undefined,
473
475
  valueSelectAble: true,
@@ -519,7 +521,7 @@ const EditableCell = props => {
519
521
  }
520
522
  },
521
523
  "data-tooltip-content": message,
522
- "data-tooltip-id": `${id}-tooltip-form-error`
524
+ "data-tooltip-id": `${id}-tooltip-content`
523
525
  });
524
526
  case 'asyncSelect':
525
527
  let valueAsyncSelect = value;
@@ -554,6 +556,7 @@ const EditableCell = props => {
554
556
  type: 'blur'
555
557
  });
556
558
  },
559
+ autoDestroy: true,
557
560
  showSearch: true,
558
561
  defaultOpen: column.field === startCell?.colId,
559
562
  autoFocus: column.field === startCell?.colId
@@ -643,7 +646,7 @@ const EditableCell = props => {
643
646
  }
644
647
  },
645
648
  "data-tooltip-content": message,
646
- "data-tooltip-id": `${id}-tooltip-form-error`
649
+ "data-tooltip-id": `${id}-tooltip-content`
647
650
  });
648
651
  case 'treeSelect':
649
652
  // let valueTreeSelect
@@ -718,7 +721,7 @@ const EditableCell = props => {
718
721
  popupClassName: 'be-popup-container',
719
722
  status: isInvalid ? 'error' : undefined,
720
723
  "data-tooltip-content": message,
721
- "data-tooltip-id": `${id}-tooltip-form-error`
724
+ "data-tooltip-id": `${id}-tooltip-content`
722
725
  });
723
726
  case 'checkbox':
724
727
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -955,7 +958,7 @@ const EditableCell = props => {
955
958
  }
956
959
  },
957
960
  "data-tooltip-content": message,
958
- "data-tooltip-id": `${id}-tooltip-form-error`
961
+ "data-tooltip-id": `${id}-tooltip-content`
959
962
  }));
960
963
  default:
961
964
  return /*#__PURE__*/_react.default.createElement(TextArea, {
@@ -1016,7 +1019,7 @@ const EditableCell = props => {
1016
1019
  onChange: onChange,
1017
1020
  status: isInvalid ? 'error' : undefined,
1018
1021
  "data-tooltip-content": message,
1019
- "data-tooltip-id": `${id}-tooltip-form-error`,
1022
+ "data-tooltip-id": `${id}-tooltip-content`,
1020
1023
  autoSize: {
1021
1024
  minRows: 1,
1022
1025
  maxRows: 1
@@ -13,7 +13,8 @@ interface TableBodyProps<T> {
13
13
  commandClick?: (args: CommandClick) => void;
14
14
  editAble?: boolean;
15
15
  tableId: string;
16
+ showEmptyText?: boolean;
16
17
  [key: string]: any;
17
18
  }
18
- declare const TableBody: <RecordType extends object>({ columnVirtualizer, table, tableContainerRef, virtualPaddingLeft, virtualPaddingRight, fixedLeftColumns, fixedRightColumns, tableId, ...rest }: TableBodyProps<RecordType>) => React.JSX.Element;
19
+ declare const TableBody: <RecordType extends object>({ columnVirtualizer, table, tableContainerRef, virtualPaddingLeft, virtualPaddingRight, fixedLeftColumns, fixedRightColumns, tableId, showEmptyText, ...rest }: TableBodyProps<RecordType>) => React.JSX.Element;
19
20
  export default TableBody;
@@ -8,8 +8,11 @@ exports.default = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _TableBodyRow = _interopRequireDefault(require("./TableBodyRow"));
10
10
  var _reactVirtual = require("@tanstack/react-virtual");
11
- var _react = _interopRequireDefault(require("react"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
12
  var _useContext = require("../useContext");
13
+ var _rcMasterUi = require("rc-master-ui");
14
+ 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); }
15
+ 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; }
13
16
  // import type { Dispatch, SetStateAction } from "react";
14
17
 
15
18
  const TableBody = ({
@@ -21,6 +24,7 @@ const TableBody = ({
21
24
  fixedLeftColumns,
22
25
  fixedRightColumns,
23
26
  tableId,
27
+ showEmptyText,
24
28
  ...rest
25
29
  }) => {
26
30
  const {
@@ -28,7 +32,8 @@ const TableBody = ({
28
32
  } = table.getRowModel();
29
33
  const {
30
34
  editingKey,
31
- prefix
35
+ prefix,
36
+ locale
32
37
  } = _react.default.useContext(_useContext.TableContext);
33
38
 
34
39
  //dynamic row height virtualization - alternatively you could use a simpler fixed row height strategy without the need for `measureElement`
@@ -39,18 +44,34 @@ const TableBody = ({
39
44
  getScrollElement: () => tableContainerRef.current,
40
45
  //measure dynamic row height, except in firefox because it measures table border height incorrectly
41
46
  measureElement: typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1 ? element => element?.getBoundingClientRect().height : undefined,
42
- overscan: 3
47
+ overscan: 1
43
48
  });
44
49
  const virtualRows = rowVirtualizer.getVirtualItems();
45
50
  return /*#__PURE__*/_react.default.createElement("tbody", {
46
51
  className: `${prefix}-grid-tbody`,
47
52
  style: {
48
53
  display: 'grid',
49
- height: `${rowVirtualizer.getTotalSize()}px`,
54
+ // height: `${rowVirtualizer.getTotalSize()}px`, //tells scrollbar how big the table is
55
+ height: showEmptyText && rows.length === 0 ? `140px` : `${rowVirtualizer.getTotalSize()}px`,
50
56
  //tells scrollbar how big the table is
51
57
  position: 'relative' //needed for absolute positioning of rows
52
58
  }
53
- }, virtualRows.map(virtualRow => {
59
+ }, showEmptyText && rows.length === 0 ? /*#__PURE__*/_react.default.createElement("tr", {
60
+ style: {
61
+ // transform: `translateY(${virtualRow.start}px)`, //this should always be a `style` as it changes on scroll
62
+ }
63
+ }, /*#__PURE__*/_react.default.createElement("td", {
64
+ // colSpan={30}
65
+ style: {
66
+ position: "sticky",
67
+ left: 0,
68
+ width: tableContainerRef.current?.clientWidth,
69
+ overflow: 'hidden'
70
+ }
71
+ }, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Empty, {
72
+ image: _rcMasterUi.Empty.PRESENTED_IMAGE_SIMPLE,
73
+ description: locale?.emptyText
74
+ })))) : /*#__PURE__*/_react.default.createElement(_react.Fragment, null, virtualRows.map(virtualRow => {
54
75
  const row = rows[virtualRow.index];
55
76
  const isEditing = row.id === editingKey;
56
77
  return /*#__PURE__*/_react.default.createElement(_TableBodyRow.default, (0, _extends2.default)({}, rest, {
@@ -67,6 +88,6 @@ const TableBody = ({
67
88
  fixedRightColumns: fixedRightColumns,
68
89
  isEditing: isEditing
69
90
  }));
70
- }));
91
+ })));
71
92
  };
72
93
  var _default = exports.default = TableBody;
@@ -1,10 +1,12 @@
1
1
  import type { Cell, Table } from "@tanstack/react-table";
2
2
  import type { CommandClick } from "../type";
3
3
  import React from "react";
4
+ import type { VirtualItem } from "@tanstack/react-virtual";
4
5
  interface TableBodyCellProps<T> {
5
6
  cell: Cell<T, unknown>;
6
7
  commandClick?: (args: CommandClick) => void;
7
8
  table: Table<T>;
9
+ virtualRow?: VirtualItem;
8
10
  }
9
11
  declare const TableBodyCell: <RecordType extends object>(props: TableBodyCellProps<RecordType>) => React.JSX.Element;
10
12
  export default TableBodyCell;