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.
Files changed (69) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +21 -21
  3. package/README.md +1 -1
  4. package/es/grid-component/hooks/constant.js +6 -6
  5. package/es/grid-component/hooks/useColumns.d.ts +1 -3
  6. package/es/grid-component/hooks/utils.d.ts +1 -1
  7. package/es/grid-component/styles.scss +1437 -1437
  8. package/es/table-component/ContextMenu.d.ts +3 -2
  9. package/es/table-component/ContextMenu.js +2 -2
  10. package/es/table-component/InternalTable.d.ts +6 -6
  11. package/es/table-component/InternalTable.js +25 -134
  12. package/es/table-component/TableContainer.d.ts +5 -5
  13. package/es/table-component/TableContainer.js +32 -31
  14. package/es/table-component/TableContainerEdit.d.ts +1 -1
  15. package/es/table-component/TableContainerEdit.js +247 -228
  16. package/es/table-component/body/EditableCell.js +146 -147
  17. package/es/table-component/body/TableBody.d.ts +1 -1
  18. package/es/table-component/body/TableBody.js +5 -5
  19. package/es/table-component/body/TableBodyCell.js +18 -37
  20. package/es/table-component/body/TableBodyCellEdit.d.ts +4 -4
  21. package/es/table-component/body/TableBodyCellEdit.js +64 -63
  22. package/es/table-component/body/TableBodyRow.js +1 -0
  23. package/es/table-component/footer/TableFooterCell.d.ts +3 -3
  24. package/es/table-component/footer/TableFooterCell.js +6 -8
  25. package/es/table-component/header/TableHead.d.ts +5 -5
  26. package/es/table-component/header/TableHead.js +2 -2
  27. package/es/table-component/hook/constant.js +6 -6
  28. package/es/table-component/hook/useFilterOperator.d.ts +1 -1
  29. package/es/table-component/hook/utils.d.ts +3 -2
  30. package/es/table-component/hook/utils.js +159 -202
  31. package/es/table-component/style.scss +1197 -1197
  32. package/es/table-component/table/TableWrapper.d.ts +4 -4
  33. package/es/table-component/table/TableWrapper.js +20 -23
  34. package/es/table-component/type.d.ts +40 -40
  35. package/es/table-component/useContext.d.ts +3 -4
  36. package/es/table-component/useContext.js +4 -4
  37. package/lib/grid-component/hooks/constant.js +6 -6
  38. package/lib/grid-component/hooks/useColumns.d.ts +1 -3
  39. package/lib/grid-component/hooks/utils.d.ts +1 -1
  40. package/lib/grid-component/styles.scss +1437 -1437
  41. package/lib/table-component/ContextMenu.d.ts +3 -2
  42. package/lib/table-component/InternalTable.d.ts +6 -6
  43. package/lib/table-component/InternalTable.js +18 -125
  44. package/lib/table-component/TableContainer.d.ts +5 -5
  45. package/lib/table-component/TableContainer.js +26 -24
  46. package/lib/table-component/TableContainerEdit.d.ts +1 -1
  47. package/lib/table-component/TableContainerEdit.js +246 -227
  48. package/lib/table-component/body/EditableCell.js +145 -146
  49. package/lib/table-component/body/TableBody.d.ts +1 -1
  50. package/lib/table-component/body/TableBody.js +5 -5
  51. package/lib/table-component/body/TableBodyCell.js +17 -36
  52. package/lib/table-component/body/TableBodyCellEdit.d.ts +4 -4
  53. package/lib/table-component/body/TableBodyCellEdit.js +60 -59
  54. package/lib/table-component/body/TableBodyRow.js +1 -0
  55. package/lib/table-component/footer/TableFooterCell.d.ts +3 -3
  56. package/lib/table-component/footer/TableFooterCell.js +5 -7
  57. package/lib/table-component/header/TableHead.d.ts +5 -5
  58. package/lib/table-component/header/TableHead.js +1 -1
  59. package/lib/table-component/hook/constant.js +6 -6
  60. package/lib/table-component/hook/useFilterOperator.d.ts +1 -1
  61. package/lib/table-component/hook/utils.d.ts +3 -2
  62. package/lib/table-component/hook/utils.js +159 -201
  63. package/lib/table-component/style.scss +1197 -1197
  64. package/lib/table-component/table/TableWrapper.d.ts +4 -4
  65. package/lib/table-component/table/TableWrapper.js +20 -23
  66. package/lib/table-component/type.d.ts +40 -40
  67. package/lib/table-component/useContext.d.ts +3 -4
  68. package/lib/table-component/useContext.js +3 -3
  69. 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 = "children";
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: "INSERT_BEFORE",
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 ?? "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: "INSERT_BEFORE",
152
- key: "INSERT_BEFORE_1",
153
- label: locale?.add_1 ?? "Add 1 rows",
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: "INSERT_BEFORE",
157
- key: "INSERT_BEFORE_10",
158
- label: locale?.add_10 ?? "Add 10 rows",
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: "INSERT_BEFORE",
162
- key: "INSERT_BEFORE_50",
163
- label: locale?.add_50 ?? "Add 50 rows",
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: "INSERT_BEFORE",
167
- key: "INSERT_BEFORE_100",
168
- label: locale?.add_100 ?? "Add 100 rows",
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: "INSERT_BEFORE",
172
- key: "INSERT_BEFORE_ADV",
173
- label: locale?.custom ?? "Custom"
171
+ parentKey: 'INSERT_BEFORE',
172
+ key: 'INSERT_BEFORE_ADV',
173
+ label: locale?.custom ?? 'Custom'
174
174
  }]
175
175
  }, {
176
- key: "INSERT_AFTER",
177
- label: locale?.add_rows_after ?? "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: "INSERT_AFTER",
183
- key: "INSERT_AFTER_1",
184
- label: locale?.add_1 ?? "Add 1 rows",
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: "INSERT_AFTER",
188
- key: "INSERT_AFTER_10",
189
- label: locale?.add_10 ?? "Add 10 rows",
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: "INSERT_AFTER",
193
- key: "INSERT_AFTER_50",
194
- label: locale?.add_50 ?? "Add 50 rows",
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: "INSERT_AFTER",
198
- key: "INSERT_AFTER_100",
199
- label: locale?.add_100 ?? "Add 100 rows",
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: "INSERT_AFTER",
203
- key: "INSERT_AFTER_ADV",
204
- label: locale?.custom ?? "Custom"
202
+ parentKey: 'INSERT_AFTER',
203
+ key: 'INSERT_AFTER_ADV',
204
+ label: locale?.custom ?? 'Custom'
205
205
  }]
206
206
  }, {
207
- key: "INSERT_CHILDREN",
207
+ key: 'INSERT_CHILDREN',
208
208
  // label: 'Insert item children',
209
- label: locale?.add_children ?? "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: "DELETE_CONTENT",
246
- label: locale?.delete_content ?? "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: "DELETE_ROWS",
252
- label: locale?.delete_rows ?? "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: "10",
261
- label: `10 ${t ? t("rows") : "rows"}`
260
+ key: '10',
261
+ label: `10 ${t ? t('rows') : 'rows'}`
262
262
  }, {
263
- key: "50",
264
- label: `50 ${t ? t("rows") : "rows"}`
263
+ key: '50',
264
+ label: `50 ${t ? t('rows') : 'rows'}`
265
265
  }, {
266
- key: "100",
267
- label: `100 ${t ? t("rows") : "rows"}`
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: "divider"
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 !== "undefined" && navigator.userAgent.indexOf("Firefox") === -1 ? element => element?.getBoundingClientRect().height : undefined,
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("\t")).join("\n");
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: "onPaste",
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: "onPaste",
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 === "function" ? columnOri.editEnable(newData[targetRow]) : 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 === "number" && (0, _utils.isFormattedNumber)(cellValue.trim())) {
476
- const colFormat = typeof columnOri.format === "function" ? columnOri.format(record) : 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 ?? "id"]
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 === "function" ? columnOri.editEnable(childData[targetRow]) : 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 !== "").map(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: ".25rem",
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: ".75rem"
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: "be-popup-container",
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
- console.log({
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("keydown", handleKeyDown);
625
- return () => window.removeEventListener("keydown", handleKeyDown);
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("text/plain") ?? "";
622
+ const clipboardText = e.clipboardData?.getData('text/plain') ?? '';
632
623
  handlePasteToTable(clipboardText);
633
624
  }
634
625
  };
635
- window.addEventListener("paste", handlePaste);
636
- return () => window.removeEventListener("paste", handlePaste);
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("mousedown", handleClickOutside);
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("mousedown", handleClickOutside);
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: "onChange",
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("Validate Failed:", errInfo);
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 === "blur") {
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: "onChange",
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: "onChange",
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 === "enter") {
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
- setStartCell(focusedCell);
833
- setEndCell(focusedCell);
834
- setRangeState((0, _utils.getSelectedCellMatrix)(table, focusedCell, focusedCell));
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("Confirm") : "Confirm",
1046
- text: t ? t("Do you want to delete item?") : "Do you want to delete item?",
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("Delete") : "Delete",
1051
- cancelButtonText: t ? t("Cancel") : "Cancel",
1044
+ confirmButtonText: t ? t('Delete') : 'Delete',
1045
+ cancelButtonText: t ? t('Cancel') : 'Cancel',
1052
1046
  customClass: {
1053
- confirmButton: "be-button btn-primary",
1054
- cancelButton: "be-button btn-danger ms-1"
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
- triggerChangeData?.([]);
1070
- }, [triggerChangeData]);
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: "blur"
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 === "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 => {
1108
- if (item.key === "ADD") {
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 === "ADD" && /*#__PURE__*/_react.default.createElement("div", {
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: "be-popup-container",
1116
- trigger: ["click"],
1136
+ overlayClassName: 'be-popup-container',
1137
+ trigger: ['click'],
1117
1138
  style: {
1118
- color: "#28c76f",
1119
- borderColor: "#28c76f"
1139
+ color: '#28c76f',
1140
+ borderColor: '#28c76f'
1120
1141
  },
1121
- className: "toolbar-button toolbar-dropdown-button",
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: "#28c76f"
1149
+ color: '#28c76f'
1129
1150
  },
1130
1151
  onClick: () => handleAddMulti(item, 1)
1131
- }, item.label ? t ? t(item.label) : item.label : t ? t("Add item") : "Add item"))));
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 === "DELETE") {
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: "#eb4619",
1144
- borderColor: "#eb4619"
1164
+ color: '#eb4619',
1165
+ borderColor: '#eb4619'
1145
1166
  },
1146
- variant: "outlined",
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("Delete all item") : "Delete all item"));
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 === "Bottom" && it.visible !== false).map(item => {
1159
- if (item.key === "ADD") {
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 === "ADD" && /*#__PURE__*/_react.default.createElement("div", {
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: "be-popup-container",
1187
+ overlayClassName: 'be-popup-container',
1167
1188
  style: {
1168
- color: "#28c76f",
1169
- borderColor: "#28c76f"
1189
+ color: '#28c76f',
1190
+ borderColor: '#28c76f'
1170
1191
  },
1171
- className: "toolbar-button toolbar-dropdown-button",
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: "#28c76f"
1199
+ color: '#28c76f'
1179
1200
  },
1180
1201
  onClick: () => handleAddMulti(item, 1)
1181
- }, item.label ? t ? t(item.label) : item.label : t ? t("Add item") : "Add item"))));
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 === "DUPLICATE") {
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 === "DUPLICATE" && item.visible !== false && rowsFocus.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
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: "#28c76f",
1194
- borderColor: "#28c76f"
1214
+ color: '#28c76f',
1215
+ borderColor: '#28c76f'
1195
1216
  },
1196
- variant: "outlined",
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("Duplicate") : "Duplicate")));
1220
+ }, item.label ? t ? t(item.label) : item.label : t ? t('Duplicate') : 'Duplicate')));
1200
1221
  }
1201
1222
  };
1202
1223
  }
1203
- if (item.key === "INSERT_BEFORE") {
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: "be-popup-container",
1231
+ overlayClassName: 'be-popup-container',
1211
1232
  style: {
1212
- color: "#28c76f",
1213
- borderColor: "#28c76f"
1233
+ color: '#28c76f',
1234
+ borderColor: '#28c76f'
1214
1235
  },
1215
- className: "toolbar-button toolbar-dropdown-button",
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: "#28c76f"
1243
+ color: '#28c76f'
1223
1244
  },
1224
1245
  onClick: () => handleInsertBefore(item, 1)
1225
- }, item.label ? t ? t(item.label) : item.label : t ? t("Insert item before") : "Insert item before"))));
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 === "INSERT_AFTER") {
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: "be-popup-container",
1257
+ overlayClassName: 'be-popup-container',
1237
1258
  style: {
1238
- color: "#28c76f",
1239
- borderColor: "#28c76f"
1259
+ color: '#28c76f',
1260
+ borderColor: '#28c76f'
1240
1261
  },
1241
- className: "toolbar-button toolbar-dropdown-button",
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: "#28c76f"
1269
+ color: '#28c76f'
1249
1270
  },
1250
1271
  onClick: () => handleInsertAfter(item, 1)
1251
- }, item.label ? t ? t(item.label) : item.label : t ? t("Insert item after") : "Insert item after"))));
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 === "INSERT_CHILDREN") {
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: "#28c76f",
1264
- borderColor: "#28c76f"
1284
+ color: '#28c76f',
1285
+ borderColor: '#28c76f'
1265
1286
  },
1266
- variant: "outlined",
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("Insert item children") : "Insert item children")));
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 === "DELETE") {
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: "#eb4619",
1282
- borderColor: "#eb4619"
1302
+ color: '#eb4619',
1303
+ borderColor: '#eb4619'
1283
1304
  },
1284
- variant: "outlined",
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("Delete all item") : "Delete all item"));
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 === "DELETE_ROWS") {
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: "#eb4619",
1300
- borderColor: "#eb4619"
1320
+ color: '#eb4619',
1321
+ borderColor: '#eb4619'
1301
1322
  },
1302
- variant: "outlined",
1323
+ variant: 'outlined',
1303
1324
  onClick: () => handleDeleteRows(item),
1304
1325
  className: "d-flex toolbar-button"
1305
- }, t ? `${t("Delete")} ${rowsFocus.length} ${t("row")}` : `Delete ${rowsFocus.length} item`));
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 === "DELETE") {
1343
+ if (idCommand === 'DELETE') {
1323
1344
  // bật modal confirm
1324
1345
  if (commandSettings && commandSettings.confirmDialog) {
1325
1346
  MySwal.fire({
1326
- title: t ? t("Confirm") : "Confirm",
1327
- text: t ? t("Do you want to delete item?") : "Do you want to delete item?",
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("Delete") : "Delete",
1332
- cancelButtonText: t ? t("Cancel") : "Cancel",
1352
+ confirmButtonText: t ? t('Delete') : 'Delete',
1353
+ cancelButtonText: t ? t('Cancel') : 'Cancel',
1333
1354
  customClass: {
1334
- confirmButton: "be-button btn-primary",
1335
- cancelButton: "be-button btn-danger ms-1"
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 === "INSERT_BEFORE") {
1438
- if (args.item.key === "INSERT_BEFORE_ADV") {
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 === "INSERT_AFTER") {
1453
- if (args.item.key === "INSERT_AFTER_ADV") {
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 === "INSERT_CHILDREN") {
1489
+ if (args.item.key === 'INSERT_CHILDREN') {
1467
1490
  handleInsertChild(args.item);
1468
1491
  return;
1469
1492
  }
1470
- if (args.item.key === "DELETE_ROWS") {
1493
+ if (args.item.key === 'DELETE_ROWS') {
1471
1494
  handleDeleteRows(args.item);
1472
1495
  return;
1473
1496
  }
1474
- if (args.item.key === "DELETE_CONTENT") {
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, "field");
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
- // id={id}
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: "flex",
1517
- justifyContent: "space-between",
1518
- alignItems: "center",
1519
- gap: ".75rem"
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: "hidden"
1546
+ overflow: 'hidden'
1525
1547
  }
1526
1548
  }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Toolbar, {
1527
- items: (toolbarItems ?? []).filter(it => it.position !== "Bottom"),
1528
- mode: "scroll"
1549
+ items: (toolbarItems ?? []).filter(it => it.position !== 'Bottom'),
1550
+ mode: 'scroll'
1529
1551
  })), /*#__PURE__*/_react.default.createElement("div", {
1530
1552
  style: {
1531
- display: "flex",
1532
- justifyContent: "space-between",
1533
- alignItems: "center",
1534
- gap: ".75rem"
1553
+ display: 'flex',
1554
+ justifyContent: 'space-between',
1555
+ alignItems: 'center',
1556
+ gap: '.75rem'
1535
1557
  }
1536
- }, pagination && pagination.onChange && pagination?.position && pagination?.position[0] === "topRight" && /*#__PURE__*/_react.default.createElement(_pagination.default, (0, _extends2.default)({
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: "small",
1540
- rootClassName: "top-pagination",
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 ?? "items") : "items"}`
1544
- }, pagination)), typeof actionTemplate === "function" ? actionTemplate() : actionTemplate, fullScreen !== false && (isFullScreen ? /*#__PURE__*/_react.default.createElement(_becoxyIcons.Minimize, {
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("Minimized") : "Minimized"
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("Full screen") : "Full screen"
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: "ui-rc-toolbar-bottom"
1672
+ className: 'ui-rc-toolbar-bottom'
1654
1673
  // style={{ border: '0 1px 1px 1px solid #e0e0e0' }}
1655
1674
  ,
1656
1675
  style: {
1657
- borderBottom: "1px solid #e0e0e0",
1658
- borderRight: "1px solid #e0e0e0",
1659
- borderLeft: "1px solid #e0e0e0"
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: "100%"
1682
+ width: '100%'
1664
1683
  },
1665
1684
  items: toolbarItemsBottom ?? [],
1666
- mode: "scroll",
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: "pagination-template",
1692
+ rootClassName: 'pagination-template',
1674
1693
  showSizeChanger: true,
1675
1694
  responsive: true,
1676
- size: "small",
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
  };