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.
- package/es/table-component/ColumnsChoose.d.ts +6 -3
- package/es/table-component/ColumnsChoose.js +31 -382
- package/es/table-component/InternalTable.js +32 -19
- package/es/table-component/TableContainer.d.ts +11 -2
- package/es/table-component/TableContainer.js +134 -14
- package/es/table-component/TableContainerEdit.d.ts +10 -7
- package/es/table-component/TableContainerEdit.js +158 -65
- package/es/table-component/body/EditableCell.js +14 -11
- package/es/table-component/body/TableBody.d.ts +2 -1
- package/es/table-component/body/TableBody.js +25 -6
- package/es/table-component/body/TableBodyCell.d.ts +2 -0
- package/es/table-component/body/TableBodyCell.js +13 -3
- package/es/table-component/body/TableBodyCellEdit.d.ts +2 -1
- package/es/table-component/body/TableBodyCellEdit.js +159 -34
- package/es/table-component/body/TableBodyRow.js +9 -4
- package/es/table-component/components/ControlCheckbox.js +0 -3
- package/es/table-component/components/async-table-select/index.d.ts +1 -1
- package/es/table-component/components/async-table-select/index.js +1 -0
- package/es/table-component/components/command/Command.d.ts +1 -0
- package/es/table-component/components/command/Command.js +6 -1
- package/es/table-component/footer/TableFooterCell.js +45 -3
- package/es/table-component/footer/TableFooterRow.js +3 -1
- package/es/table-component/header/TableHeadCell.js +31 -12
- package/es/table-component/header/TableHeadRow.js +5 -1
- package/es/table-component/hook/useColumns.d.ts +5 -7
- package/es/table-component/hook/useColumns.js +18 -58
- package/es/table-component/hook/utils.d.ts +12 -0
- package/es/table-component/hook/utils.js +140 -2
- package/es/table-component/style.scss +72 -7
- package/es/table-component/table/Grid.d.ts +3 -2
- package/es/table-component/table/Grid.js +25 -100
- package/es/table-component/type.d.ts +34 -3
- package/es/table-component/useContext.d.ts +5 -50
- package/es/table-component/useContext.js +3 -49
- package/lib/table-component/ColumnsChoose.d.ts +6 -3
- package/lib/table-component/ColumnsChoose.js +29 -381
- package/lib/table-component/InternalTable.js +30 -16
- package/lib/table-component/TableContainer.d.ts +11 -2
- package/lib/table-component/TableContainer.js +135 -14
- package/lib/table-component/TableContainerEdit.d.ts +10 -7
- package/lib/table-component/TableContainerEdit.js +157 -64
- package/lib/table-component/body/EditableCell.js +14 -11
- package/lib/table-component/body/TableBody.d.ts +2 -1
- package/lib/table-component/body/TableBody.js +27 -6
- package/lib/table-component/body/TableBodyCell.d.ts +2 -0
- package/lib/table-component/body/TableBodyCell.js +13 -3
- package/lib/table-component/body/TableBodyCellEdit.d.ts +2 -1
- package/lib/table-component/body/TableBodyCellEdit.js +159 -34
- package/lib/table-component/body/TableBodyRow.js +9 -4
- package/lib/table-component/components/ControlCheckbox.js +0 -3
- package/lib/table-component/components/async-table-select/index.d.ts +1 -1
- package/lib/table-component/components/async-table-select/index.js +2 -0
- package/lib/table-component/components/command/Command.d.ts +1 -0
- package/lib/table-component/components/command/Command.js +6 -1
- package/lib/table-component/footer/TableFooterCell.js +46 -2
- package/lib/table-component/footer/TableFooterRow.js +3 -1
- package/lib/table-component/header/TableHeadCell.js +31 -12
- package/lib/table-component/header/TableHeadRow.js +5 -1
- package/lib/table-component/hook/useColumns.d.ts +5 -7
- package/lib/table-component/hook/useColumns.js +17 -57
- package/lib/table-component/hook/utils.d.ts +12 -0
- package/lib/table-component/hook/utils.js +156 -9
- package/lib/table-component/style.scss +72 -7
- package/lib/table-component/table/Grid.d.ts +3 -2
- package/lib/table-component/table/Grid.js +24 -100
- package/lib/table-component/type.d.ts +34 -3
- package/lib/table-component/useContext.d.ts +5 -50
- package/lib/table-component/useContext.js +4 -50
- package/package.json +2 -2
- package/es/table-component/table/GridEdit.d.ts +0 -23
- package/es/table-component/table/GridEdit.js +0 -282
- package/lib/table-component/table/GridEdit.d.ts +0 -23
- 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:
|
|
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
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
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
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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]
|
|
871
|
+
triggerChangeData?.([...newDaa]);
|
|
802
872
|
}
|
|
803
873
|
}, [originData, rowKey, rowsFocus, triggerChangeData]);
|
|
804
874
|
const handleDeleteAll = _react.default.useCallback(() => {
|
|
805
|
-
triggerChangeData?.([]
|
|
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]
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 =
|
|
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:
|
|
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
|
-
},
|
|
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;
|