es-grid-template 1.7.38 → 1.7.39
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/CHANGELOG.md +6 -0
- package/LICENSE +21 -21
- package/README.md +1 -1
- package/es/grid-component/hooks/constant.js +6 -6
- package/es/grid-component/hooks/useColumns.d.ts +1 -3
- package/es/grid-component/hooks/utils.d.ts +1 -1
- package/es/grid-component/styles.scss +1437 -1437
- package/es/table-component/ContextMenu.d.ts +3 -2
- package/es/table-component/ContextMenu.js +2 -2
- package/es/table-component/InternalTable.d.ts +6 -6
- package/es/table-component/InternalTable.js +25 -134
- package/es/table-component/TableContainer.d.ts +5 -5
- package/es/table-component/TableContainer.js +32 -31
- package/es/table-component/TableContainerEdit.d.ts +1 -1
- package/es/table-component/TableContainerEdit.js +247 -228
- package/es/table-component/body/EditableCell.js +146 -147
- package/es/table-component/body/TableBody.d.ts +1 -1
- package/es/table-component/body/TableBody.js +5 -5
- package/es/table-component/body/TableBodyCell.js +18 -37
- package/es/table-component/body/TableBodyCellEdit.d.ts +4 -4
- package/es/table-component/body/TableBodyCellEdit.js +64 -63
- package/es/table-component/body/TableBodyRow.js +1 -0
- package/es/table-component/footer/TableFooterCell.d.ts +3 -3
- package/es/table-component/footer/TableFooterCell.js +6 -8
- package/es/table-component/header/TableHead.d.ts +5 -5
- package/es/table-component/header/TableHead.js +2 -2
- package/es/table-component/hook/constant.js +6 -6
- package/es/table-component/hook/useFilterOperator.d.ts +1 -1
- package/es/table-component/hook/utils.d.ts +3 -2
- package/es/table-component/hook/utils.js +159 -202
- package/es/table-component/style.scss +1197 -1197
- package/es/table-component/table/TableWrapper.d.ts +4 -4
- package/es/table-component/table/TableWrapper.js +20 -23
- package/es/table-component/type.d.ts +40 -40
- package/es/table-component/useContext.d.ts +3 -4
- package/es/table-component/useContext.js +4 -4
- package/lib/grid-component/hooks/constant.js +6 -6
- package/lib/grid-component/hooks/useColumns.d.ts +1 -3
- package/lib/grid-component/hooks/utils.d.ts +1 -1
- package/lib/grid-component/styles.scss +1437 -1437
- package/lib/table-component/ContextMenu.d.ts +3 -2
- package/lib/table-component/InternalTable.d.ts +6 -6
- package/lib/table-component/InternalTable.js +18 -125
- package/lib/table-component/TableContainer.d.ts +5 -5
- package/lib/table-component/TableContainer.js +26 -24
- package/lib/table-component/TableContainerEdit.d.ts +1 -1
- package/lib/table-component/TableContainerEdit.js +246 -227
- package/lib/table-component/body/EditableCell.js +145 -146
- package/lib/table-component/body/TableBody.d.ts +1 -1
- package/lib/table-component/body/TableBody.js +5 -5
- package/lib/table-component/body/TableBodyCell.js +17 -36
- package/lib/table-component/body/TableBodyCellEdit.d.ts +4 -4
- package/lib/table-component/body/TableBodyCellEdit.js +60 -59
- package/lib/table-component/body/TableBodyRow.js +1 -0
- package/lib/table-component/footer/TableFooterCell.d.ts +3 -3
- package/lib/table-component/footer/TableFooterCell.js +5 -7
- package/lib/table-component/header/TableHead.d.ts +5 -5
- package/lib/table-component/header/TableHead.js +1 -1
- package/lib/table-component/hook/constant.js +6 -6
- package/lib/table-component/hook/useFilterOperator.d.ts +1 -1
- package/lib/table-component/hook/utils.d.ts +3 -2
- package/lib/table-component/hook/utils.js +159 -201
- package/lib/table-component/style.scss +1197 -1197
- package/lib/table-component/table/TableWrapper.d.ts +4 -4
- package/lib/table-component/table/TableWrapper.js +20 -23
- package/lib/table-component/type.d.ts +40 -40
- package/lib/table-component/useContext.d.ts +3 -4
- package/lib/table-component/useContext.js +3 -3
- package/package.json +116 -116
|
@@ -129,7 +129,7 @@ const TableContainerEdit = props => {
|
|
|
129
129
|
const containerRef = _react.default.useRef(null);
|
|
130
130
|
const bottomToolbarRef = _react.default.useRef(null);
|
|
131
131
|
const topToolbarRef = _react.default.useRef(null);
|
|
132
|
-
const childrenColumnName =
|
|
132
|
+
const childrenColumnName = 'children';
|
|
133
133
|
|
|
134
134
|
// const visibleColumns = table.getVisibleLeafColumns()
|
|
135
135
|
|
|
@@ -140,73 +140,73 @@ const TableContainerEdit = props => {
|
|
|
140
140
|
|
|
141
141
|
const defaultContext = _react.default.useMemo(() => {
|
|
142
142
|
return [{
|
|
143
|
-
key:
|
|
143
|
+
key: 'INSERT_BEFORE',
|
|
144
144
|
// label: 'Thêm dòng bên trên',
|
|
145
145
|
// label: `${t ? t(locale?.add_rows_before ?? 'Add rows before') : 'Add rows before'}`,
|
|
146
|
-
label: locale?.add_rows_before ??
|
|
146
|
+
label: locale?.add_rows_before ?? 'Add rows before',
|
|
147
147
|
icon: /*#__PURE__*/_react.default.createElement(_becoxyIcons.Plus, {
|
|
148
148
|
fontSize: 14
|
|
149
149
|
}),
|
|
150
150
|
children: [{
|
|
151
|
-
parentKey:
|
|
152
|
-
key:
|
|
153
|
-
label: locale?.add_1 ??
|
|
151
|
+
parentKey: 'INSERT_BEFORE',
|
|
152
|
+
key: 'INSERT_BEFORE_1',
|
|
153
|
+
label: locale?.add_1 ?? 'Add 1 rows',
|
|
154
154
|
row: 1
|
|
155
155
|
}, {
|
|
156
|
-
parentKey:
|
|
157
|
-
key:
|
|
158
|
-
label: locale?.add_10 ??
|
|
156
|
+
parentKey: 'INSERT_BEFORE',
|
|
157
|
+
key: 'INSERT_BEFORE_10',
|
|
158
|
+
label: locale?.add_10 ?? 'Add 10 rows',
|
|
159
159
|
row: 10
|
|
160
160
|
}, {
|
|
161
|
-
parentKey:
|
|
162
|
-
key:
|
|
163
|
-
label: locale?.add_50 ??
|
|
161
|
+
parentKey: 'INSERT_BEFORE',
|
|
162
|
+
key: 'INSERT_BEFORE_50',
|
|
163
|
+
label: locale?.add_50 ?? 'Add 50 rows',
|
|
164
164
|
row: 50
|
|
165
165
|
}, {
|
|
166
|
-
parentKey:
|
|
167
|
-
key:
|
|
168
|
-
label: locale?.add_100 ??
|
|
166
|
+
parentKey: 'INSERT_BEFORE',
|
|
167
|
+
key: 'INSERT_BEFORE_100',
|
|
168
|
+
label: locale?.add_100 ?? 'Add 100 rows',
|
|
169
169
|
row: 100
|
|
170
170
|
}, {
|
|
171
|
-
parentKey:
|
|
172
|
-
key:
|
|
173
|
-
label: locale?.custom ??
|
|
171
|
+
parentKey: 'INSERT_BEFORE',
|
|
172
|
+
key: 'INSERT_BEFORE_ADV',
|
|
173
|
+
label: locale?.custom ?? 'Custom'
|
|
174
174
|
}]
|
|
175
175
|
}, {
|
|
176
|
-
key:
|
|
177
|
-
label: locale?.add_rows_after ??
|
|
176
|
+
key: 'INSERT_AFTER',
|
|
177
|
+
label: locale?.add_rows_after ?? 'Add rows after',
|
|
178
178
|
icon: /*#__PURE__*/_react.default.createElement(_becoxyIcons.Plus, {
|
|
179
179
|
fontSize: 14
|
|
180
180
|
}),
|
|
181
181
|
children: [{
|
|
182
|
-
parentKey:
|
|
183
|
-
key:
|
|
184
|
-
label: locale?.add_1 ??
|
|
182
|
+
parentKey: 'INSERT_AFTER',
|
|
183
|
+
key: 'INSERT_AFTER_1',
|
|
184
|
+
label: locale?.add_1 ?? 'Add 1 rows',
|
|
185
185
|
row: 1
|
|
186
186
|
}, {
|
|
187
|
-
parentKey:
|
|
188
|
-
key:
|
|
189
|
-
label: locale?.add_10 ??
|
|
187
|
+
parentKey: 'INSERT_AFTER',
|
|
188
|
+
key: 'INSERT_AFTER_10',
|
|
189
|
+
label: locale?.add_10 ?? 'Add 10 rows',
|
|
190
190
|
row: 10
|
|
191
191
|
}, {
|
|
192
|
-
parentKey:
|
|
193
|
-
key:
|
|
194
|
-
label: locale?.add_50 ??
|
|
192
|
+
parentKey: 'INSERT_AFTER',
|
|
193
|
+
key: 'INSERT_AFTER_50',
|
|
194
|
+
label: locale?.add_50 ?? 'Add 50 rows',
|
|
195
195
|
row: 50
|
|
196
196
|
}, {
|
|
197
|
-
parentKey:
|
|
198
|
-
key:
|
|
199
|
-
label: locale?.add_100 ??
|
|
197
|
+
parentKey: 'INSERT_AFTER',
|
|
198
|
+
key: 'INSERT_AFTER_100',
|
|
199
|
+
label: locale?.add_100 ?? 'Add 100 rows',
|
|
200
200
|
row: 100
|
|
201
201
|
}, {
|
|
202
|
-
parentKey:
|
|
203
|
-
key:
|
|
204
|
-
label: locale?.custom ??
|
|
202
|
+
parentKey: 'INSERT_AFTER',
|
|
203
|
+
key: 'INSERT_AFTER_ADV',
|
|
204
|
+
label: locale?.custom ?? 'Custom'
|
|
205
205
|
}]
|
|
206
206
|
}, {
|
|
207
|
-
key:
|
|
207
|
+
key: 'INSERT_CHILDREN',
|
|
208
208
|
// label: 'Insert item children',
|
|
209
|
-
label: locale?.add_children ??
|
|
209
|
+
label: locale?.add_children ?? 'Add children',
|
|
210
210
|
icon: /*#__PURE__*/_react.default.createElement(_becoxyIcons.Plus, {
|
|
211
211
|
fontSize: 14
|
|
212
212
|
})
|
|
@@ -242,14 +242,14 @@ const TableContainerEdit = props => {
|
|
|
242
242
|
// }
|
|
243
243
|
// ]
|
|
244
244
|
}, {
|
|
245
|
-
key:
|
|
246
|
-
label: locale?.delete_content ??
|
|
245
|
+
key: 'DELETE_CONTENT',
|
|
246
|
+
label: locale?.delete_content ?? 'Delete content',
|
|
247
247
|
icon: /*#__PURE__*/_react.default.createElement(_becoxyIcons.Trash2, {
|
|
248
248
|
fontSize: 14
|
|
249
249
|
})
|
|
250
250
|
}, {
|
|
251
|
-
key:
|
|
252
|
-
label: locale?.delete_rows ??
|
|
251
|
+
key: 'DELETE_ROWS',
|
|
252
|
+
label: locale?.delete_rows ?? 'Delete rows',
|
|
253
253
|
icon: /*#__PURE__*/_react.default.createElement(_becoxyIcons.Trash2, {
|
|
254
254
|
fontSize: 14
|
|
255
255
|
})
|
|
@@ -257,20 +257,20 @@ const TableContainerEdit = props => {
|
|
|
257
257
|
}, [locale]);
|
|
258
258
|
const itemsAdd = _react.default.useMemo(() => {
|
|
259
259
|
return [{
|
|
260
|
-
key:
|
|
261
|
-
label: `10 ${t ? t(
|
|
260
|
+
key: '10',
|
|
261
|
+
label: `10 ${t ? t('rows') : 'rows'}`
|
|
262
262
|
}, {
|
|
263
|
-
key:
|
|
264
|
-
label: `50 ${t ? t(
|
|
263
|
+
key: '50',
|
|
264
|
+
label: `50 ${t ? t('rows') : 'rows'}`
|
|
265
265
|
}, {
|
|
266
|
-
key:
|
|
267
|
-
label: `100 ${t ? t(
|
|
266
|
+
key: '100',
|
|
267
|
+
label: `100 ${t ? t('rows') : 'rows'}`
|
|
268
268
|
}];
|
|
269
269
|
}, [t]);
|
|
270
270
|
const contextMenuItems = _react.default.useMemo(() => {
|
|
271
271
|
const a = showDefaultContext !== false ? [...defaultContext] : [];
|
|
272
272
|
const b = propsContext && propsContext.length > 0 ? [...propsContext, {
|
|
273
|
-
type:
|
|
273
|
+
type: 'divider'
|
|
274
274
|
}] : [];
|
|
275
275
|
return [...b, ...a];
|
|
276
276
|
}, [defaultContext, propsContext, showDefaultContext]);
|
|
@@ -303,7 +303,7 @@ const TableContainerEdit = props => {
|
|
|
303
303
|
// return element?.getBoundingClientRect().width;
|
|
304
304
|
// },
|
|
305
305
|
|
|
306
|
-
measureElement: typeof window !==
|
|
306
|
+
measureElement: typeof window !== 'undefined' && navigator.userAgent.indexOf('Firefox') === -1 ? element => element?.getBoundingClientRect().height : undefined,
|
|
307
307
|
overscan: 0 //how many columns to render on each side off screen each way (adjust this for performance)
|
|
308
308
|
});
|
|
309
309
|
const virtualColumns = columnVirtualizer.getVirtualItems();
|
|
@@ -325,7 +325,7 @@ const TableContainerEdit = props => {
|
|
|
325
325
|
virtualPaddingRight = fixedRightColumns && fixedRightColumns.length > 0 ? pdRight - rightWidth > 0 ? pdRight - rightWidth : 0 : pdRight;
|
|
326
326
|
// virtualPaddingRight = columnVirtualizer.getTotalSize() - (virtualColumns[virtualColumns.length - 1]?.end ?? 0)
|
|
327
327
|
}
|
|
328
|
-
const [editingKey, setEditingKey] = _react.default.useState(
|
|
328
|
+
const [editingKey, setEditingKey] = _react.default.useState('');
|
|
329
329
|
const [rangeState, setRangeState] = _react.default.useState({
|
|
330
330
|
startRowIndex: undefined,
|
|
331
331
|
endRowIndex: undefined,
|
|
@@ -359,9 +359,7 @@ const TableContainerEdit = props => {
|
|
|
359
359
|
return startCell && endCell ? (0, _utils.getRowIdsBetween)(table, startCell.rowId, endCell.rowId) : [];
|
|
360
360
|
}, [endCell, startCell, table]);
|
|
361
361
|
const copySelectionToClipboard = _react.default.useCallback(() => {
|
|
362
|
-
if (!startCell || !endCell)
|
|
363
|
-
return;
|
|
364
|
-
}
|
|
362
|
+
if (!startCell || !endCell) return;
|
|
365
363
|
|
|
366
364
|
// const allRows = table.getRowModel().rows;
|
|
367
365
|
const allRows = table.getRowModel().flatRows;
|
|
@@ -372,20 +370,18 @@ const TableContainerEdit = props => {
|
|
|
372
370
|
const dataToCopy = [];
|
|
373
371
|
rowIds.forEach(rowId => {
|
|
374
372
|
const row = allRows.find(r => r.id === rowId);
|
|
375
|
-
if (!row)
|
|
376
|
-
return;
|
|
377
|
-
}
|
|
373
|
+
if (!row) return;
|
|
378
374
|
const rowData = [];
|
|
379
375
|
colIds.forEach(colId => {
|
|
380
376
|
const cellll = row.getVisibleCells().find(c => c.column.id === colId);
|
|
381
377
|
const value = cellll?.getValue();
|
|
382
|
-
rowData.push(value !== undefined ? String(value) :
|
|
378
|
+
rowData.push(value !== undefined ? String(value) : '');
|
|
383
379
|
});
|
|
384
380
|
dataToCopy.push(rowData);
|
|
385
381
|
});
|
|
386
382
|
|
|
387
383
|
// Convert to TSV string
|
|
388
|
-
const tsv = dataToCopy.map(row => row.join(
|
|
384
|
+
const tsv = dataToCopy.map(row => row.join('\t')).join('\n');
|
|
389
385
|
|
|
390
386
|
// Copy to clipboard
|
|
391
387
|
navigator.clipboard.writeText(tsv).then(() => {});
|
|
@@ -405,7 +401,7 @@ const TableContainerEdit = props => {
|
|
|
405
401
|
onCellPaste.onPasted({
|
|
406
402
|
pasteData: pastedRows,
|
|
407
403
|
copyRows,
|
|
408
|
-
type:
|
|
404
|
+
type: 'onPaste',
|
|
409
405
|
data: originData,
|
|
410
406
|
pastedColumns: pastedColumnsArray
|
|
411
407
|
}, handlePasteCallback);
|
|
@@ -413,7 +409,7 @@ const TableContainerEdit = props => {
|
|
|
413
409
|
// không có callback
|
|
414
410
|
onCellPaste.onPasted({
|
|
415
411
|
pasteData: pastedRows,
|
|
416
|
-
type:
|
|
412
|
+
type: 'onPaste',
|
|
417
413
|
copyRows,
|
|
418
414
|
data: originData,
|
|
419
415
|
pastedColumns: pastedColumnsArray
|
|
@@ -469,11 +465,11 @@ const TableContainerEdit = props => {
|
|
|
469
465
|
}
|
|
470
466
|
const columnTarget = allCols[targetCol];
|
|
471
467
|
const columnOri = columnTarget.columnDef.meta ?? {};
|
|
472
|
-
const isEdit = typeof columnOri?.editEnable ===
|
|
468
|
+
const isEdit = typeof columnOri?.editEnable === 'function' ? columnOri.editEnable(newData[targetRow]) : columnOri.editEnable;
|
|
473
469
|
if (isEdit) {
|
|
474
470
|
const columnKey = allCols[targetCol].id;
|
|
475
|
-
if (columnOri.type ===
|
|
476
|
-
const colFormat = typeof columnOri.format ===
|
|
471
|
+
if (columnOri.type === 'number' && (0, _utils.isFormattedNumber)(cellValue.trim())) {
|
|
472
|
+
const colFormat = typeof columnOri.format === 'function' ? columnOri.format(record) : columnOri.format;
|
|
477
473
|
const valuePasteFormat = (0, _utils.detectSeparators)(cellValue.trim());
|
|
478
474
|
const cellFormat = (0, _utils.getFormat)(colFormat, format);
|
|
479
475
|
const thousandSeparator = valuePasteFormat?.thousandSeparator ?? cellFormat?.thousandSeparator;
|
|
@@ -531,7 +527,7 @@ const TableContainerEdit = props => {
|
|
|
531
527
|
childData.push({
|
|
532
528
|
id: undefined,
|
|
533
529
|
rowId: (0, _utils.newGuid)(),
|
|
534
|
-
parentId: parent[rowKey ??
|
|
530
|
+
parentId: parent[rowKey ?? 'id']
|
|
535
531
|
});
|
|
536
532
|
}
|
|
537
533
|
rowValues.forEach((cellValue, colIndex) => {
|
|
@@ -545,7 +541,7 @@ const TableContainerEdit = props => {
|
|
|
545
541
|
// const isEdit = typeof columnTarget.editEnable === 'function' ? columnTarget.editEnable(childData[targetRow]) : columnTarget.editEnable
|
|
546
542
|
|
|
547
543
|
const columnOri = columnTarget.columnDef.meta ?? {};
|
|
548
|
-
const isEdit = typeof columnOri?.editEnable ===
|
|
544
|
+
const isEdit = typeof columnOri?.editEnable === 'function' ? columnOri.editEnable(childData[targetRow]) : columnOri.editEnable;
|
|
549
545
|
if (isEdit) {
|
|
550
546
|
const columnKey = allCols[targetCol].id;
|
|
551
547
|
childData[targetRow] = {
|
|
@@ -570,14 +566,12 @@ const TableContainerEdit = props => {
|
|
|
570
566
|
}
|
|
571
567
|
}, [dataSource, format, onCellPaste?.maxRowsPaste, originData, rowKey, startCell, table, triggerPaste]);
|
|
572
568
|
const handlePasteToTable = _react.default.useCallback(pasteData => {
|
|
573
|
-
if (!startCell)
|
|
574
|
-
return;
|
|
575
|
-
}
|
|
569
|
+
if (!startCell) return;
|
|
576
570
|
|
|
577
571
|
// const pastedRows = pasted.trim().split('\n').map(row => row.split('\t'));
|
|
578
572
|
|
|
579
573
|
// Chuyển đổi dữ liệu từ clipboard thành mảng
|
|
580
|
-
const rowsPasted = pasteData.split("\n").filter(row => row !==
|
|
574
|
+
const rowsPasted = pasteData.split("\n").filter(row => row !== '').map(row =>
|
|
581
575
|
// const rows = pasteData.split("\n").map((row: any) =>
|
|
582
576
|
row.replace(/\r/g, "").split("\t"));
|
|
583
577
|
if (rowsPasted.length > (onCellPaste?.maxRowsPaste ?? 200)) {
|
|
@@ -586,17 +580,17 @@ const TableContainerEdit = props => {
|
|
|
586
580
|
_antd.Modal.confirm({
|
|
587
581
|
content: /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(Paragraph, {
|
|
588
582
|
style: {
|
|
589
|
-
marginBottom:
|
|
583
|
+
marginBottom: '.25rem',
|
|
590
584
|
fontSize: 14
|
|
591
585
|
}
|
|
592
586
|
}, "D\u1EEF li\u1EC7u sao ch\xE9p v\u01B0\u1EE3t qu\xE1 s\u1ED1 d\xF2ng cho ph\xE9p (500 d\xF2ng).Ph\u1EA7n m\u1EC1n s\u1EBD ch\u1EC9 l\u1EA5y 500 d\xF2ng \u0111\u1EA7u ti\xEAn."), /*#__PURE__*/_react.default.createElement(Title, {
|
|
593
587
|
level: 5,
|
|
594
588
|
style: {
|
|
595
|
-
marginTop:
|
|
589
|
+
marginTop: '.75rem'
|
|
596
590
|
}
|
|
597
591
|
}, "B\u1EA1n c\xF3 mu\u1ED1n ti\u1EBFp t\u1EE5c sao ch\xE9p kh\xF4ng?")),
|
|
598
592
|
centered: true,
|
|
599
|
-
className:
|
|
593
|
+
className: 'be-popup-container',
|
|
600
594
|
onOk: () => {
|
|
601
595
|
handlePasted(rowsPasted);
|
|
602
596
|
}
|
|
@@ -613,32 +607,28 @@ const TableContainerEdit = props => {
|
|
|
613
607
|
}, [handlePasted, onCellPaste?.maxRowsPaste, startCell]);
|
|
614
608
|
_react.default.useEffect(() => {
|
|
615
609
|
const handleKeyDown = e => {
|
|
616
|
-
|
|
617
|
-
e
|
|
618
|
-
});
|
|
619
|
-
if (e.ctrlKey && e.key === "c" && startCell && endCell) {
|
|
610
|
+
if (e.ctrlKey && e.key === 'c' && startCell && endCell) {
|
|
620
611
|
e.preventDefault();
|
|
621
612
|
copySelectionToClipboard();
|
|
622
613
|
}
|
|
623
614
|
};
|
|
624
|
-
window.addEventListener(
|
|
625
|
-
return () => window.removeEventListener(
|
|
615
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
616
|
+
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
626
617
|
}, [startCell, endCell, table, copySelectionToClipboard]);
|
|
627
618
|
_react.default.useEffect(() => {
|
|
628
619
|
const handlePaste = e => {
|
|
629
620
|
if (startCell && !editingKey) {
|
|
630
621
|
e.preventDefault(); // Chặn hành vi mặc định
|
|
631
|
-
const clipboardText = e.clipboardData?.getData(
|
|
622
|
+
const clipboardText = e.clipboardData?.getData('text/plain') ?? '';
|
|
632
623
|
handlePasteToTable(clipboardText);
|
|
633
624
|
}
|
|
634
625
|
};
|
|
635
|
-
window.addEventListener(
|
|
636
|
-
return () => window.removeEventListener(
|
|
626
|
+
window.addEventListener('paste', handlePaste);
|
|
627
|
+
return () => window.removeEventListener('paste', handlePaste);
|
|
637
628
|
}, [startCell, endCell, table, handlePasteToTable, editingKey]);
|
|
638
629
|
_react.default.useEffect(() => {
|
|
639
630
|
const handleClickOutside = event => {
|
|
640
631
|
const element = event.target;
|
|
641
|
-
console.log("event", event);
|
|
642
632
|
const container = document.querySelector(".be-popup-container");
|
|
643
633
|
const containerContextMenu = document.querySelector(".popup-context-menu");
|
|
644
634
|
const tableBody = document.querySelector(`#${id} .ui-rc-grid-tbody`);
|
|
@@ -656,7 +646,7 @@ const TableContainerEdit = props => {
|
|
|
656
646
|
onBlur?.(dataSource);
|
|
657
647
|
}
|
|
658
648
|
setTimeout(() => {
|
|
659
|
-
setEditingKey(
|
|
649
|
+
setEditingKey('');
|
|
660
650
|
// editingKey.current = ''
|
|
661
651
|
});
|
|
662
652
|
setEndCell(undefined);
|
|
@@ -666,12 +656,12 @@ const TableContainerEdit = props => {
|
|
|
666
656
|
};
|
|
667
657
|
|
|
668
658
|
// document.addEventListener('click', handleClickOutside)
|
|
669
|
-
document.addEventListener(
|
|
659
|
+
document.addEventListener('mousedown', handleClickOutside);
|
|
670
660
|
// document.addEventListener('touchstart', handleClickOutside)
|
|
671
661
|
|
|
672
662
|
return () => {
|
|
673
663
|
// document.removeEventListener('click', handleClickOutside)
|
|
674
|
-
document.removeEventListener(
|
|
664
|
+
document.removeEventListener('mousedown', handleClickOutside);
|
|
675
665
|
// document.removeEventListener('touchstart', handleClickOutside)
|
|
676
666
|
};
|
|
677
667
|
}, [dataSource, editingKey, id, onBlur]);
|
|
@@ -682,9 +672,7 @@ const TableContainerEdit = props => {
|
|
|
682
672
|
});
|
|
683
673
|
}, [columnSizingState, columnVirtualizer]);
|
|
684
674
|
_react.default.useEffect(() => {
|
|
685
|
-
if (!containerRef.current)
|
|
686
|
-
return;
|
|
687
|
-
}
|
|
675
|
+
if (!containerRef.current) return;
|
|
688
676
|
const containerWidth = containerRef.current.offsetWidth - 1;
|
|
689
677
|
const totalWidth = table.getTotalSize();
|
|
690
678
|
if (totalWidth && totalWidth < containerWidth) {
|
|
@@ -716,7 +704,7 @@ const TableContainerEdit = props => {
|
|
|
716
704
|
errors
|
|
717
705
|
}
|
|
718
706
|
} = (0, _reactHookForm.useForm)({
|
|
719
|
-
mode:
|
|
707
|
+
mode: 'onChange',
|
|
720
708
|
resolver: validate ? (0, _yup.yupResolver)(validate) : undefined
|
|
721
709
|
});
|
|
722
710
|
const onSubmit = formData => {
|
|
@@ -736,7 +724,7 @@ const TableContainerEdit = props => {
|
|
|
736
724
|
triggerChangeData?.(rs);
|
|
737
725
|
}
|
|
738
726
|
} catch (errInfo) {
|
|
739
|
-
console.log(
|
|
727
|
+
console.log('Validate Failed:', errInfo);
|
|
740
728
|
}
|
|
741
729
|
};
|
|
742
730
|
const handleCellChange = args => {
|
|
@@ -751,7 +739,7 @@ const TableContainerEdit = props => {
|
|
|
751
739
|
indexRow,
|
|
752
740
|
key
|
|
753
741
|
} = args;
|
|
754
|
-
if (changeType ===
|
|
742
|
+
if (changeType === 'blur') {
|
|
755
743
|
const handleChangeCallback = callbackData => {
|
|
756
744
|
const callbackRecord = callbackData;
|
|
757
745
|
Object.entries(callbackRecord).forEach(([name, value]) => {
|
|
@@ -764,7 +752,7 @@ const TableContainerEdit = props => {
|
|
|
764
752
|
onCellChange({
|
|
765
753
|
field,
|
|
766
754
|
indexCol,
|
|
767
|
-
type:
|
|
755
|
+
type: 'onChange',
|
|
768
756
|
value: newState,
|
|
769
757
|
option,
|
|
770
758
|
indexRow,
|
|
@@ -778,7 +766,7 @@ const TableContainerEdit = props => {
|
|
|
778
766
|
onCellChange({
|
|
779
767
|
field,
|
|
780
768
|
indexCol,
|
|
781
|
-
type:
|
|
769
|
+
type: 'onChange',
|
|
782
770
|
option,
|
|
783
771
|
value: newState,
|
|
784
772
|
indexRow,
|
|
@@ -792,7 +780,7 @@ const TableContainerEdit = props => {
|
|
|
792
780
|
}
|
|
793
781
|
}
|
|
794
782
|
}
|
|
795
|
-
if (prevState && newState && prevState !== newState && changeType ===
|
|
783
|
+
if (prevState && newState && prevState !== newState && changeType === 'enter') {
|
|
796
784
|
onSubmit(record);
|
|
797
785
|
}
|
|
798
786
|
};
|
|
@@ -829,9 +817,12 @@ const TableContainerEdit = props => {
|
|
|
829
817
|
// const duplicatedItems = rowsFocus.map(index => ({ ...newData[index], rowId: newGuid(), id: undefined, isDuplicate: true }))
|
|
830
818
|
|
|
831
819
|
const duplicatedItem = table.getRowModel().flatRows.find(it => it.id === focusedCell?.rowId);
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
820
|
+
|
|
821
|
+
// setStartCell(focusedCell)
|
|
822
|
+
// setEndCell(focusedCell)
|
|
823
|
+
|
|
824
|
+
// setRangeState(getSelectedCellMatrix(table, focusedCell, focusedCell))
|
|
825
|
+
|
|
835
826
|
const duplicatedItems = [{
|
|
836
827
|
...duplicatedItem?.original,
|
|
837
828
|
rowId: (0, _utils.newGuid)(),
|
|
@@ -855,6 +846,9 @@ const TableContainerEdit = props => {
|
|
|
855
846
|
// thêm n dòng bên trên
|
|
856
847
|
const handleInsertBefore = _react.default.useCallback((item, n) => {
|
|
857
848
|
const defaultRowValue = (0, _utils.getDefaultValue)(defaultValue);
|
|
849
|
+
setStartCell(focusedCell);
|
|
850
|
+
setEndCell(focusedCell);
|
|
851
|
+
setRangeState((0, _utils.getSelectedCellMatrix)(table, focusedCell, focusedCell));
|
|
858
852
|
|
|
859
853
|
// const record: any = table.getRowModel().rows.find((it) => it.id === rowsFocus[rowsFocus.length - 1])?.original
|
|
860
854
|
const record = table.getRowModel().flatRows.find(it => it.id === rowsFocus[rowsFocus.length - 1])?.original;
|
|
@@ -911,7 +905,7 @@ const TableContainerEdit = props => {
|
|
|
911
905
|
triggerChangeData?.(newDataSource);
|
|
912
906
|
}
|
|
913
907
|
}
|
|
914
|
-
}, [defaultValue, mergedFilterKeys, originData, rowKey, rowsFocus, setMergedFilterKeys, table, triggerChangeData]);
|
|
908
|
+
}, [defaultValue, focusedCell, mergedFilterKeys, originData, rowKey, rowsFocus, setMergedFilterKeys, table, triggerChangeData]);
|
|
915
909
|
|
|
916
910
|
//thêm 1 dòng bên dưới
|
|
917
911
|
const handleInsertAfter = _react.default.useCallback((item, n) => {
|
|
@@ -1042,16 +1036,16 @@ const TableContainerEdit = props => {
|
|
|
1042
1036
|
const newDaa = (0, _utils.unFlattenData)(rs);
|
|
1043
1037
|
if (commandSettings && commandSettings.confirmDialog) {
|
|
1044
1038
|
MySwal.fire({
|
|
1045
|
-
title: t ? t(
|
|
1046
|
-
text: t ? t(
|
|
1039
|
+
title: t ? t('Confirm') : 'Confirm',
|
|
1040
|
+
text: t ? t('Do you want to delete item?') : 'Do you want to delete item?',
|
|
1047
1041
|
// icon: 'warning',
|
|
1048
1042
|
allowOutsideClick: false,
|
|
1049
1043
|
showCancelButton: true,
|
|
1050
|
-
confirmButtonText: t ? t(
|
|
1051
|
-
cancelButtonText: t ? t(
|
|
1044
|
+
confirmButtonText: t ? t('Delete') : 'Delete',
|
|
1045
|
+
cancelButtonText: t ? t('Cancel') : 'Cancel',
|
|
1052
1046
|
customClass: {
|
|
1053
|
-
confirmButton:
|
|
1054
|
-
cancelButton:
|
|
1047
|
+
confirmButton: 'be-button btn-primary',
|
|
1048
|
+
cancelButton: 'be-button btn-danger ms-1'
|
|
1055
1049
|
},
|
|
1056
1050
|
buttonsStyling: false
|
|
1057
1051
|
}).then(async result => {
|
|
@@ -1060,14 +1054,41 @@ const TableContainerEdit = props => {
|
|
|
1060
1054
|
} else if (result.dismiss === MySwal.DismissReason.cancel) {}
|
|
1061
1055
|
});
|
|
1062
1056
|
} else {
|
|
1063
|
-
// không hiện dialog
|
|
1057
|
+
// không hiện dialog
|
|
1064
1058
|
triggerChangeData?.([...newDaa]);
|
|
1065
1059
|
}
|
|
1066
1060
|
}
|
|
1067
|
-
}, [originData, rowKey, rowsFocus, triggerChangeData]);
|
|
1068
|
-
const handleDeleteAll = _react.default.useCallback(
|
|
1069
|
-
|
|
1070
|
-
|
|
1061
|
+
}, [commandSettings, originData, rowKey, rowsFocus, t, triggerChangeData]);
|
|
1062
|
+
const handleDeleteAll = _react.default.useCallback(item => {
|
|
1063
|
+
if (item.onClick) {
|
|
1064
|
+
item.onClick({
|
|
1065
|
+
toolbar: item
|
|
1066
|
+
});
|
|
1067
|
+
} else {
|
|
1068
|
+
if (commandSettings && commandSettings.confirmDialog) {
|
|
1069
|
+
MySwal.fire({
|
|
1070
|
+
title: t ? t('Confirm') : 'Confirm',
|
|
1071
|
+
text: t ? t('Do you want to delete item?') : 'Do you want to delete item?',
|
|
1072
|
+
// icon: 'warning',
|
|
1073
|
+
allowOutsideClick: false,
|
|
1074
|
+
showCancelButton: true,
|
|
1075
|
+
confirmButtonText: t ? t('Delete') : 'Delete',
|
|
1076
|
+
cancelButtonText: t ? t('Cancel') : 'Cancel',
|
|
1077
|
+
customClass: {
|
|
1078
|
+
confirmButton: 'be-button btn-primary',
|
|
1079
|
+
cancelButton: 'be-button btn-danger ms-1'
|
|
1080
|
+
},
|
|
1081
|
+
buttonsStyling: false
|
|
1082
|
+
}).then(async result => {
|
|
1083
|
+
if (result.value) {
|
|
1084
|
+
triggerChangeData?.([]);
|
|
1085
|
+
} else if (result.dismiss === MySwal.DismissReason.cancel) {}
|
|
1086
|
+
});
|
|
1087
|
+
} else {
|
|
1088
|
+
triggerChangeData?.([]);
|
|
1089
|
+
}
|
|
1090
|
+
}
|
|
1091
|
+
}, [commandSettings, t, triggerChangeData]);
|
|
1071
1092
|
const handleDeleteContent = () => {
|
|
1072
1093
|
if (startCell && endCell) {
|
|
1073
1094
|
const tmpData = (0, _utils.flattenArray)([...dataSource]);
|
|
@@ -1082,17 +1103,17 @@ const TableContainerEdit = props => {
|
|
|
1082
1103
|
const column = table.getVisibleFlatColumns().find(it => it.id === colId)?.columnDef.meta;
|
|
1083
1104
|
const columnIndex = table.getVisibleFlatColumns().findIndex(it => it.id === colId);
|
|
1084
1105
|
if ((0, _utils.isEditable)(column, row)) {
|
|
1085
|
-
updatedRow[colId] =
|
|
1106
|
+
updatedRow[colId] = '';
|
|
1086
1107
|
handleCellChange({
|
|
1087
1108
|
key: row[rowKey],
|
|
1088
1109
|
field: column.field ?? column.dataIndex,
|
|
1089
1110
|
record: updatedRow,
|
|
1090
1111
|
prevState: row[column.field],
|
|
1091
|
-
newState:
|
|
1092
|
-
option:
|
|
1112
|
+
newState: '',
|
|
1113
|
+
option: '',
|
|
1093
1114
|
indexCol: columnIndex,
|
|
1094
1115
|
indexRow: index,
|
|
1095
|
-
type:
|
|
1116
|
+
type: 'blur'
|
|
1096
1117
|
});
|
|
1097
1118
|
}
|
|
1098
1119
|
}
|
|
@@ -1104,35 +1125,35 @@ const TableContainerEdit = props => {
|
|
|
1104
1125
|
};
|
|
1105
1126
|
const toolbarItemsBottom = _react.default.useMemo(() => {
|
|
1106
1127
|
if (!rowsFocus || rowsFocus.length === 0) {
|
|
1107
|
-
return toolbarItems?.filter(it => it.position ===
|
|
1108
|
-
if (item.key ===
|
|
1128
|
+
return toolbarItems?.filter(it => it.position === 'Bottom' && it.visible !== false && it.key !== 'DUPLICATE' && it.key !== 'INSERT_BEFORE' && it.key !== 'INSERT_AFTER' && it.key !== 'DELETE_ROWS' && it.key !== 'INSERT_CHILDREN').map(item => {
|
|
1129
|
+
if (item.key === 'ADD') {
|
|
1109
1130
|
return {
|
|
1110
1131
|
...item,
|
|
1111
1132
|
template: () => {
|
|
1112
|
-
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, item.key ===
|
|
1133
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, item.key === 'ADD' && /*#__PURE__*/_react.default.createElement("div", {
|
|
1113
1134
|
className: (0, _classnames.default)(`be-toolbar-item`, item?.className)
|
|
1114
1135
|
}, /*#__PURE__*/_react.default.createElement(_antd.Dropdown.Button, {
|
|
1115
|
-
overlayClassName:
|
|
1116
|
-
trigger: [
|
|
1136
|
+
overlayClassName: 'be-popup-container',
|
|
1137
|
+
trigger: ['click'],
|
|
1117
1138
|
style: {
|
|
1118
|
-
color:
|
|
1119
|
-
borderColor:
|
|
1139
|
+
color: '#28c76f',
|
|
1140
|
+
borderColor: '#28c76f'
|
|
1120
1141
|
},
|
|
1121
|
-
className:
|
|
1142
|
+
className: 'toolbar-button toolbar-dropdown-button',
|
|
1122
1143
|
menu: {
|
|
1123
1144
|
items: itemsAdd,
|
|
1124
1145
|
onClick: e => handleAddMulti(item, Number(e.key))
|
|
1125
1146
|
}
|
|
1126
1147
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
1127
1148
|
style: {
|
|
1128
|
-
color:
|
|
1149
|
+
color: '#28c76f'
|
|
1129
1150
|
},
|
|
1130
1151
|
onClick: () => handleAddMulti(item, 1)
|
|
1131
|
-
}, item.label ? t ? t(item.label) : item.label : t ? t(
|
|
1152
|
+
}, item.label ? t ? t(item.label) : item.label : t ? t('Add item') : 'Add item'))));
|
|
1132
1153
|
}
|
|
1133
1154
|
};
|
|
1134
1155
|
}
|
|
1135
|
-
if (item.key ===
|
|
1156
|
+
if (item.key === 'DELETE') {
|
|
1136
1157
|
return {
|
|
1137
1158
|
...item,
|
|
1138
1159
|
template: () => {
|
|
@@ -1140,13 +1161,13 @@ const TableContainerEdit = props => {
|
|
|
1140
1161
|
className: (0, _classnames.default)(`be-toolbar-item`, item?.className)
|
|
1141
1162
|
}, /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
1142
1163
|
style: {
|
|
1143
|
-
color:
|
|
1144
|
-
borderColor:
|
|
1164
|
+
color: '#eb4619',
|
|
1165
|
+
borderColor: '#eb4619'
|
|
1145
1166
|
},
|
|
1146
|
-
variant:
|
|
1147
|
-
onClick: handleDeleteAll,
|
|
1167
|
+
variant: 'outlined',
|
|
1168
|
+
onClick: () => handleDeleteAll(item),
|
|
1148
1169
|
className: "d-flex toolbar-button"
|
|
1149
|
-
}, item.label ? t ? t(item.label) : item.label : t ? t(
|
|
1170
|
+
}, item.label ? t ? t(item.label) : item.label : t ? t('Delete all item') : 'Delete all item'));
|
|
1150
1171
|
}
|
|
1151
1172
|
};
|
|
1152
1173
|
}
|
|
@@ -1155,104 +1176,104 @@ const TableContainerEdit = props => {
|
|
|
1155
1176
|
};
|
|
1156
1177
|
});
|
|
1157
1178
|
}
|
|
1158
|
-
return toolbarItems?.filter(it => it.position ===
|
|
1159
|
-
if (item.key ===
|
|
1179
|
+
return toolbarItems?.filter(it => it.position === 'Bottom' && it.visible !== false).map(item => {
|
|
1180
|
+
if (item.key === 'ADD') {
|
|
1160
1181
|
return {
|
|
1161
1182
|
...item,
|
|
1162
1183
|
template: () => {
|
|
1163
|
-
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, item.key ===
|
|
1184
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, item.key === 'ADD' && /*#__PURE__*/_react.default.createElement("div", {
|
|
1164
1185
|
className: (0, _classnames.default)(`be-toolbar-item`, item?.className)
|
|
1165
1186
|
}, /*#__PURE__*/_react.default.createElement(_antd.Dropdown.Button, {
|
|
1166
|
-
overlayClassName:
|
|
1187
|
+
overlayClassName: 'be-popup-container',
|
|
1167
1188
|
style: {
|
|
1168
|
-
color:
|
|
1169
|
-
borderColor:
|
|
1189
|
+
color: '#28c76f',
|
|
1190
|
+
borderColor: '#28c76f'
|
|
1170
1191
|
},
|
|
1171
|
-
className:
|
|
1192
|
+
className: 'toolbar-button toolbar-dropdown-button',
|
|
1172
1193
|
menu: {
|
|
1173
1194
|
items: itemsAdd,
|
|
1174
1195
|
onClick: e => handleAddMulti(item, Number(e.key))
|
|
1175
1196
|
}
|
|
1176
1197
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
1177
1198
|
style: {
|
|
1178
|
-
color:
|
|
1199
|
+
color: '#28c76f'
|
|
1179
1200
|
},
|
|
1180
1201
|
onClick: () => handleAddMulti(item, 1)
|
|
1181
|
-
}, item.label ? t ? t(item.label) : item.label : t ? t(
|
|
1202
|
+
}, item.label ? t ? t(item.label) : item.label : t ? t('Add item') : 'Add item'))));
|
|
1182
1203
|
}
|
|
1183
1204
|
};
|
|
1184
1205
|
}
|
|
1185
|
-
if (item.key ===
|
|
1206
|
+
if (item.key === 'DUPLICATE') {
|
|
1186
1207
|
return {
|
|
1187
1208
|
...item,
|
|
1188
1209
|
template: () => {
|
|
1189
|
-
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, item.key ===
|
|
1210
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, item.key === 'DUPLICATE' && item.visible !== false && rowsFocus.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
|
|
1190
1211
|
className: (0, _classnames.default)(`be-toolbar-item`, item?.className)
|
|
1191
1212
|
}, /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
1192
1213
|
style: {
|
|
1193
|
-
color:
|
|
1194
|
-
borderColor:
|
|
1214
|
+
color: '#28c76f',
|
|
1215
|
+
borderColor: '#28c76f'
|
|
1195
1216
|
},
|
|
1196
|
-
variant:
|
|
1217
|
+
variant: 'outlined',
|
|
1197
1218
|
onClick: handleDuplicate,
|
|
1198
1219
|
className: "d-flex toolbar-button"
|
|
1199
|
-
}, item.label ? t ? t(item.label) : item.label : t ? t(
|
|
1220
|
+
}, item.label ? t ? t(item.label) : item.label : t ? t('Duplicate') : 'Duplicate')));
|
|
1200
1221
|
}
|
|
1201
1222
|
};
|
|
1202
1223
|
}
|
|
1203
|
-
if (item.key ===
|
|
1224
|
+
if (item.key === 'INSERT_BEFORE') {
|
|
1204
1225
|
return {
|
|
1205
1226
|
...item,
|
|
1206
1227
|
template: () => {
|
|
1207
1228
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
1208
1229
|
className: (0, _classnames.default)(`be-toolbar-item`, item?.className)
|
|
1209
1230
|
}, /*#__PURE__*/_react.default.createElement(_antd.Dropdown.Button, {
|
|
1210
|
-
overlayClassName:
|
|
1231
|
+
overlayClassName: 'be-popup-container',
|
|
1211
1232
|
style: {
|
|
1212
|
-
color:
|
|
1213
|
-
borderColor:
|
|
1233
|
+
color: '#28c76f',
|
|
1234
|
+
borderColor: '#28c76f'
|
|
1214
1235
|
},
|
|
1215
|
-
className:
|
|
1236
|
+
className: 'toolbar-button toolbar-dropdown-button',
|
|
1216
1237
|
menu: {
|
|
1217
1238
|
items: itemsAdd,
|
|
1218
1239
|
onClick: e => handleInsertBefore(item, Number(e.key))
|
|
1219
1240
|
}
|
|
1220
1241
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
1221
1242
|
style: {
|
|
1222
|
-
color:
|
|
1243
|
+
color: '#28c76f'
|
|
1223
1244
|
},
|
|
1224
1245
|
onClick: () => handleInsertBefore(item, 1)
|
|
1225
|
-
}, item.label ? t ? t(item.label) : item.label : t ? t(
|
|
1246
|
+
}, item.label ? t ? t(item.label) : item.label : t ? t('Insert item before') : 'Insert item before'))));
|
|
1226
1247
|
}
|
|
1227
1248
|
};
|
|
1228
1249
|
}
|
|
1229
|
-
if (item.key ===
|
|
1250
|
+
if (item.key === 'INSERT_AFTER') {
|
|
1230
1251
|
return {
|
|
1231
1252
|
...item,
|
|
1232
1253
|
template: () => {
|
|
1233
1254
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
1234
1255
|
className: (0, _classnames.default)(`be-toolbar-item`, item?.className)
|
|
1235
1256
|
}, /*#__PURE__*/_react.default.createElement(_antd.Dropdown.Button, {
|
|
1236
|
-
overlayClassName:
|
|
1257
|
+
overlayClassName: 'be-popup-container',
|
|
1237
1258
|
style: {
|
|
1238
|
-
color:
|
|
1239
|
-
borderColor:
|
|
1259
|
+
color: '#28c76f',
|
|
1260
|
+
borderColor: '#28c76f'
|
|
1240
1261
|
},
|
|
1241
|
-
className:
|
|
1262
|
+
className: 'toolbar-button toolbar-dropdown-button',
|
|
1242
1263
|
menu: {
|
|
1243
1264
|
items: itemsAdd,
|
|
1244
1265
|
onClick: e => handleInsertAfter(item, Number(e.key))
|
|
1245
1266
|
}
|
|
1246
1267
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
1247
1268
|
style: {
|
|
1248
|
-
color:
|
|
1269
|
+
color: '#28c76f'
|
|
1249
1270
|
},
|
|
1250
1271
|
onClick: () => handleInsertAfter(item, 1)
|
|
1251
|
-
}, item.label ? t ? t(item.label) : item.label : t ? t(
|
|
1272
|
+
}, item.label ? t ? t(item.label) : item.label : t ? t('Insert item after') : 'Insert item after'))));
|
|
1252
1273
|
}
|
|
1253
1274
|
};
|
|
1254
1275
|
}
|
|
1255
|
-
if (item.key ===
|
|
1276
|
+
if (item.key === 'INSERT_CHILDREN') {
|
|
1256
1277
|
return {
|
|
1257
1278
|
...item,
|
|
1258
1279
|
template: () => {
|
|
@@ -1260,17 +1281,17 @@ const TableContainerEdit = props => {
|
|
|
1260
1281
|
className: (0, _classnames.default)(`be-toolbar-item`, item?.className)
|
|
1261
1282
|
}, /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
1262
1283
|
style: {
|
|
1263
|
-
color:
|
|
1264
|
-
borderColor:
|
|
1284
|
+
color: '#28c76f',
|
|
1285
|
+
borderColor: '#28c76f'
|
|
1265
1286
|
},
|
|
1266
|
-
variant:
|
|
1287
|
+
variant: 'outlined',
|
|
1267
1288
|
onClick: () => handleInsertChild(item),
|
|
1268
1289
|
className: "d-flex toolbar-button"
|
|
1269
|
-
}, item.label ? t ? t(item.label) : item.label : t ? t(
|
|
1290
|
+
}, item.label ? t ? t(item.label) : item.label : t ? t('Insert item children') : 'Insert item children')));
|
|
1270
1291
|
}
|
|
1271
1292
|
};
|
|
1272
1293
|
}
|
|
1273
|
-
if (item.key ===
|
|
1294
|
+
if (item.key === 'DELETE') {
|
|
1274
1295
|
return {
|
|
1275
1296
|
...item,
|
|
1276
1297
|
template: () => {
|
|
@@ -1278,17 +1299,17 @@ const TableContainerEdit = props => {
|
|
|
1278
1299
|
className: (0, _classnames.default)(`be-toolbar-item`, item?.className)
|
|
1279
1300
|
}, /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
1280
1301
|
style: {
|
|
1281
|
-
color:
|
|
1282
|
-
borderColor:
|
|
1302
|
+
color: '#eb4619',
|
|
1303
|
+
borderColor: '#eb4619'
|
|
1283
1304
|
},
|
|
1284
|
-
variant:
|
|
1305
|
+
variant: 'outlined',
|
|
1285
1306
|
onClick: handleDeleteAll,
|
|
1286
1307
|
className: "d-flex toolbar-button"
|
|
1287
|
-
}, item.label ? t ? t(item.label) : item.label : t ? t(
|
|
1308
|
+
}, item.label ? t ? t(item.label) : item.label : t ? t('Delete all item') : 'Delete all item'));
|
|
1288
1309
|
}
|
|
1289
1310
|
};
|
|
1290
1311
|
}
|
|
1291
|
-
if (item.key ===
|
|
1312
|
+
if (item.key === 'DELETE_ROWS') {
|
|
1292
1313
|
return {
|
|
1293
1314
|
...item,
|
|
1294
1315
|
template: () => {
|
|
@@ -1296,13 +1317,13 @@ const TableContainerEdit = props => {
|
|
|
1296
1317
|
className: (0, _classnames.default)(`be-toolbar-item`, item?.className)
|
|
1297
1318
|
}, /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
1298
1319
|
style: {
|
|
1299
|
-
color:
|
|
1300
|
-
borderColor:
|
|
1320
|
+
color: '#eb4619',
|
|
1321
|
+
borderColor: '#eb4619'
|
|
1301
1322
|
},
|
|
1302
|
-
variant:
|
|
1323
|
+
variant: 'outlined',
|
|
1303
1324
|
onClick: () => handleDeleteRows(item),
|
|
1304
1325
|
className: "d-flex toolbar-button"
|
|
1305
|
-
}, t ? `${t(
|
|
1326
|
+
}, t ? `${t('Delete')} ${rowsFocus.length} ${t('row')}` : `Delete ${rowsFocus.length} item`));
|
|
1306
1327
|
}
|
|
1307
1328
|
};
|
|
1308
1329
|
}
|
|
@@ -1319,20 +1340,20 @@ const TableContainerEdit = props => {
|
|
|
1319
1340
|
index
|
|
1320
1341
|
} = args;
|
|
1321
1342
|
const tmpData = [...dataSource];
|
|
1322
|
-
if (idCommand ===
|
|
1343
|
+
if (idCommand === 'DELETE') {
|
|
1323
1344
|
// bật modal confirm
|
|
1324
1345
|
if (commandSettings && commandSettings.confirmDialog) {
|
|
1325
1346
|
MySwal.fire({
|
|
1326
|
-
title: t ? t(
|
|
1327
|
-
text: t ? t(
|
|
1347
|
+
title: t ? t('Confirm') : 'Confirm',
|
|
1348
|
+
text: t ? t('Do you want to delete item?') : 'Do you want to delete item?',
|
|
1328
1349
|
// icon: 'warning',
|
|
1329
1350
|
allowOutsideClick: false,
|
|
1330
1351
|
showCancelButton: true,
|
|
1331
|
-
confirmButtonText: t ? t(
|
|
1332
|
-
cancelButtonText: t ? t(
|
|
1352
|
+
confirmButtonText: t ? t('Delete') : 'Delete',
|
|
1353
|
+
cancelButtonText: t ? t('Cancel') : 'Cancel',
|
|
1333
1354
|
customClass: {
|
|
1334
|
-
confirmButton:
|
|
1335
|
-
cancelButton:
|
|
1355
|
+
confirmButton: 'be-button btn-primary',
|
|
1356
|
+
cancelButton: 'be-button btn-danger ms-1'
|
|
1336
1357
|
},
|
|
1337
1358
|
buttonsStyling: false
|
|
1338
1359
|
}).then(async result => {
|
|
@@ -1434,9 +1455,10 @@ const TableContainerEdit = props => {
|
|
|
1434
1455
|
}
|
|
1435
1456
|
};
|
|
1436
1457
|
const triggerContextMenuClick = args => {
|
|
1437
|
-
if (args.item?.parentKey && args.item.parentKey ===
|
|
1438
|
-
if (args.item.key ===
|
|
1458
|
+
if (args.item?.parentKey && args.item.parentKey === 'INSERT_BEFORE') {
|
|
1459
|
+
if (args.item.key === 'INSERT_BEFORE_ADV') {
|
|
1439
1460
|
// mở Modal
|
|
1461
|
+
|
|
1440
1462
|
// setOpenModalAddRow((prev) => (
|
|
1441
1463
|
// {
|
|
1442
1464
|
// ...prev,
|
|
@@ -1449,8 +1471,9 @@ const TableContainerEdit = props => {
|
|
|
1449
1471
|
}
|
|
1450
1472
|
return;
|
|
1451
1473
|
}
|
|
1452
|
-
if (args.item?.parentKey && args.item.parentKey ===
|
|
1453
|
-
if (args.item.key ===
|
|
1474
|
+
if (args.item?.parentKey && args.item.parentKey === 'INSERT_AFTER') {
|
|
1475
|
+
if (args.item.key === 'INSERT_AFTER_ADV') {
|
|
1476
|
+
|
|
1454
1477
|
// setOpenModalAddRow((prev) => (
|
|
1455
1478
|
// {
|
|
1456
1479
|
// ...prev,
|
|
@@ -1463,15 +1486,15 @@ const TableContainerEdit = props => {
|
|
|
1463
1486
|
}
|
|
1464
1487
|
return;
|
|
1465
1488
|
}
|
|
1466
|
-
if (args.item.key ===
|
|
1489
|
+
if (args.item.key === 'INSERT_CHILDREN') {
|
|
1467
1490
|
handleInsertChild(args.item);
|
|
1468
1491
|
return;
|
|
1469
1492
|
}
|
|
1470
|
-
if (args.item.key ===
|
|
1493
|
+
if (args.item.key === 'DELETE_ROWS') {
|
|
1471
1494
|
handleDeleteRows(args.item);
|
|
1472
1495
|
return;
|
|
1473
1496
|
}
|
|
1474
|
-
if (args.item.key ===
|
|
1497
|
+
if (args.item.key === 'DELETE_CONTENT') {
|
|
1475
1498
|
handleDeleteContent();
|
|
1476
1499
|
return;
|
|
1477
1500
|
}
|
|
@@ -1479,7 +1502,6 @@ const TableContainerEdit = props => {
|
|
|
1479
1502
|
};
|
|
1480
1503
|
const handleCellClick = (rowNumber, record, column, rowId, cellValue) => {
|
|
1481
1504
|
const cellClickCallback = newOptions => {
|
|
1482
|
-
console.log("newOptions", newOptions);
|
|
1483
1505
|
if (newOptions) {
|
|
1484
1506
|
const newElem = {
|
|
1485
1507
|
...column,
|
|
@@ -1490,7 +1512,7 @@ const TableContainerEdit = props => {
|
|
|
1490
1512
|
options: newOptions
|
|
1491
1513
|
}
|
|
1492
1514
|
};
|
|
1493
|
-
const rrr = (0, _utils.updateArrayByKey)([...propsColumns], newElem,
|
|
1515
|
+
const rrr = (0, _utils.updateArrayByKey)([...propsColumns], newElem, 'field');
|
|
1494
1516
|
triggerChangeColumns?.(rrr, [], "cellClick");
|
|
1495
1517
|
}
|
|
1496
1518
|
};
|
|
@@ -1506,55 +1528,55 @@ const TableContainerEdit = props => {
|
|
|
1506
1528
|
}
|
|
1507
1529
|
};
|
|
1508
1530
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
1509
|
-
ref: containerRef
|
|
1510
|
-
|
|
1531
|
+
ref: containerRef,
|
|
1532
|
+
id: id
|
|
1511
1533
|
}, (showToolbar !== false || fullScreen !== false || showColumnChoose) && /*#__PURE__*/_react.default.createElement("div", {
|
|
1512
1534
|
ref: topToolbarRef,
|
|
1513
1535
|
className: (0, _classnames.default)(`${prefix}-grid-top-toolbar`, {})
|
|
1514
1536
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
1515
1537
|
style: {
|
|
1516
|
-
display:
|
|
1517
|
-
justifyContent:
|
|
1518
|
-
alignItems:
|
|
1519
|
-
gap:
|
|
1538
|
+
display: 'flex',
|
|
1539
|
+
justifyContent: 'space-between',
|
|
1540
|
+
alignItems: 'center',
|
|
1541
|
+
gap: '.75rem'
|
|
1520
1542
|
}
|
|
1521
1543
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
1522
1544
|
style: {
|
|
1523
1545
|
flex: 1,
|
|
1524
|
-
overflow:
|
|
1546
|
+
overflow: 'hidden'
|
|
1525
1547
|
}
|
|
1526
1548
|
}, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
|
|
1527
|
-
items: (toolbarItems ?? []).filter(it => it.position !==
|
|
1528
|
-
mode:
|
|
1549
|
+
items: (toolbarItems ?? []).filter(it => it.position !== 'Bottom'),
|
|
1550
|
+
mode: 'scroll'
|
|
1529
1551
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
1530
1552
|
style: {
|
|
1531
|
-
display:
|
|
1532
|
-
justifyContent:
|
|
1533
|
-
alignItems:
|
|
1534
|
-
gap:
|
|
1553
|
+
display: 'flex',
|
|
1554
|
+
justifyContent: 'space-between',
|
|
1555
|
+
alignItems: 'center',
|
|
1556
|
+
gap: '.75rem'
|
|
1535
1557
|
}
|
|
1536
|
-
}, pagination && pagination.onChange && pagination?.position && pagination?.position[0] ===
|
|
1558
|
+
}, pagination && pagination.onChange && pagination?.position && pagination?.position[0] === 'topRight' && /*#__PURE__*/_react.default.createElement(_pagination.default, (0, _extends2.default)({
|
|
1537
1559
|
showSizeChanger: true,
|
|
1538
1560
|
responsive: true,
|
|
1539
|
-
size:
|
|
1540
|
-
rootClassName:
|
|
1561
|
+
size: 'small',
|
|
1562
|
+
rootClassName: 'top-pagination',
|
|
1541
1563
|
showTotal: (total, range) =>
|
|
1542
1564
|
// @ts-ignore
|
|
1543
|
-
`${range[0]}-${range[1]} / ${total} ${t ? t(pagination?.locale?.items ??
|
|
1544
|
-
}, pagination)), typeof actionTemplate ===
|
|
1565
|
+
`${range[0]}-${range[1]} / ${total} ${t ? t(pagination?.locale?.items ?? 'items') : 'items'}`
|
|
1566
|
+
}, pagination)), typeof actionTemplate === 'function' ? actionTemplate() : actionTemplate, fullScreen !== false && (isFullScreen ? /*#__PURE__*/_react.default.createElement(_becoxyIcons.Minimize, {
|
|
1545
1567
|
fontSize: 16,
|
|
1546
1568
|
onClick: () => {
|
|
1547
1569
|
setIsFullScreen(!isFullScreen);
|
|
1548
1570
|
},
|
|
1549
1571
|
"data-tooltip-id": `${id}-tooltip-content`,
|
|
1550
|
-
"data-tooltip-content": t ? t(
|
|
1572
|
+
"data-tooltip-content": t ? t('Minimized') : 'Minimized'
|
|
1551
1573
|
}) : /*#__PURE__*/_react.default.createElement(_becoxyIcons.Maximize, {
|
|
1552
1574
|
fontSize: 16,
|
|
1553
1575
|
onClick: () => {
|
|
1554
1576
|
setIsFullScreen(!isFullScreen);
|
|
1555
1577
|
},
|
|
1556
1578
|
"data-tooltip-id": `${id}-tooltip-content`,
|
|
1557
|
-
"data-tooltip-content": t ? t(
|
|
1579
|
+
"data-tooltip-content": t ? t('Full screen') : 'Full screen'
|
|
1558
1580
|
})), showColumnChoose && /*#__PURE__*/_react.default.createElement(_ColumnsChoose.ColumnsChoose, {
|
|
1559
1581
|
columns: columns,
|
|
1560
1582
|
originColumns: propsColumns,
|
|
@@ -1605,7 +1627,7 @@ const TableContainerEdit = props => {
|
|
|
1605
1627
|
setIsPasting,
|
|
1606
1628
|
setEndPasteCell,
|
|
1607
1629
|
setStartPasteCell,
|
|
1608
|
-
//
|
|
1630
|
+
//
|
|
1609
1631
|
control,
|
|
1610
1632
|
// trigger,
|
|
1611
1633
|
errors,
|
|
@@ -1618,8 +1640,7 @@ const TableContainerEdit = props => {
|
|
|
1618
1640
|
handleAddMulti,
|
|
1619
1641
|
dataErrors,
|
|
1620
1642
|
windowSize,
|
|
1621
|
-
handleCellClick
|
|
1622
|
-
isFullScreen
|
|
1643
|
+
handleCellClick
|
|
1623
1644
|
}
|
|
1624
1645
|
}, /*#__PURE__*/_react.default.createElement(_TableWrapper.default, {
|
|
1625
1646
|
contextMenuItems: contextMenuItems,
|
|
@@ -1633,9 +1654,7 @@ const TableContainerEdit = props => {
|
|
|
1633
1654
|
contextMenuClick: triggerContextMenuClick,
|
|
1634
1655
|
contextMenuHidden: contextMenuHidden,
|
|
1635
1656
|
contextMenuOpen: contextMenuOpen,
|
|
1636
|
-
editAble: editAble
|
|
1637
|
-
// editAble={false}
|
|
1638
|
-
,
|
|
1657
|
+
editAble: editAble,
|
|
1639
1658
|
showEmptyText: showEmptyText,
|
|
1640
1659
|
summary: summary,
|
|
1641
1660
|
dataSource: dataSource,
|
|
@@ -1650,30 +1669,30 @@ const TableContainerEdit = props => {
|
|
|
1650
1669
|
}))), /*#__PURE__*/_react.default.createElement("div", {
|
|
1651
1670
|
ref: bottomToolbarRef
|
|
1652
1671
|
}, toolbarItemsBottom && toolbarItemsBottom.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
|
|
1653
|
-
className:
|
|
1672
|
+
className: 'ui-rc-toolbar-bottom'
|
|
1654
1673
|
// style={{ border: '0 1px 1px 1px solid #e0e0e0' }}
|
|
1655
1674
|
,
|
|
1656
1675
|
style: {
|
|
1657
|
-
borderBottom:
|
|
1658
|
-
borderRight:
|
|
1659
|
-
borderLeft:
|
|
1676
|
+
borderBottom: '1px solid #e0e0e0',
|
|
1677
|
+
borderRight: '1px solid #e0e0e0',
|
|
1678
|
+
borderLeft: '1px solid #e0e0e0'
|
|
1660
1679
|
}
|
|
1661
1680
|
}, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
|
|
1662
1681
|
style: {
|
|
1663
|
-
width:
|
|
1682
|
+
width: '100%'
|
|
1664
1683
|
},
|
|
1665
1684
|
items: toolbarItemsBottom ?? [],
|
|
1666
|
-
mode:
|
|
1685
|
+
mode: 'scroll',
|
|
1667
1686
|
onClick: ({}) => {
|
|
1668
|
-
setEditingKey(
|
|
1687
|
+
setEditingKey('');
|
|
1669
1688
|
}
|
|
1670
1689
|
})), pagination && !infiniteScroll && /*#__PURE__*/_react.default.createElement(_pagination.default
|
|
1671
1690
|
// style={{padding: '0.75rem 1rem'}}
|
|
1672
1691
|
, (0, _extends2.default)({}, pagination, {
|
|
1673
|
-
rootClassName:
|
|
1692
|
+
rootClassName: 'pagination-template',
|
|
1674
1693
|
showSizeChanger: true,
|
|
1675
1694
|
responsive: true,
|
|
1676
|
-
size:
|
|
1695
|
+
size: 'small',
|
|
1677
1696
|
total: pagination.total,
|
|
1678
1697
|
pageSize: pagination.onChange ? pagination?.pageSize : table.getState().pagination.pageSize,
|
|
1679
1698
|
pageSizeOptions: [20, 50, 100, 1000, 10000],
|
|
@@ -1686,11 +1705,11 @@ const TableContainerEdit = props => {
|
|
|
1686
1705
|
}
|
|
1687
1706
|
},
|
|
1688
1707
|
showTotal: (total, range) => `${(0, _reactNumericComponent.numericFormatter)((range[0] ?? 0).toString(), {
|
|
1689
|
-
thousandSeparator:
|
|
1708
|
+
thousandSeparator: '.'
|
|
1690
1709
|
})}-${(0, _reactNumericComponent.numericFormatter)((range[1] ?? 0).toString(), {
|
|
1691
|
-
thousandSeparator:
|
|
1710
|
+
thousandSeparator: '.'
|
|
1692
1711
|
})} / ${(0, _reactNumericComponent.numericFormatter)((total ?? 0).toString(), {
|
|
1693
|
-
thousandSeparator:
|
|
1712
|
+
thousandSeparator: '.'
|
|
1694
1713
|
})} items`
|
|
1695
1714
|
}))));
|
|
1696
1715
|
};
|