react-table-edit 1.4.21 → 1.4.23

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/dist/index.mjs CHANGED
@@ -39883,13 +39883,18 @@ if (process.env.NODE_ENV === 'production') {
39883
39883
  var InputMask = reactInputMask.exports;
39884
39884
 
39885
39885
  const DateInput = (props) => {
39886
- const { id, onKeyDown, dateFormat, className, onChange, value } = props;
39886
+ const { id, onKeyDown, dateFormat, className, onChange, value, onPaste } = props;
39887
39887
  const [open, setOpen] = useState(false);
39888
39888
  return (jsx(DatePicker, { id: id, open: open, className: className, selected: value, onChange: (date) => {
39889
39889
  if (onChange) {
39890
39890
  onChange(date);
39891
39891
  }
39892
- }, dateFormat: dateFormat, locale: "vi", showMonthDropdown: true, showYearDropdown: true, dropdownMode: "select", isClearable: true, onCalendarClose: () => setOpen(false), onCalendarOpen: () => setOpen(true), customInput: jsx(InputMask, { mask: "99/99/9999", placeholder: dateFormat }), onKeyDown: (e) => {
39892
+ }, dateFormat: dateFormat, locale: "vi", showMonthDropdown: true, showYearDropdown: true, dropdownMode: "select", isClearable: true, onCalendarClose: () => setOpen(false), onCalendarOpen: () => setOpen(true), customInput: jsx(InputMask, { mask: "99/99/9999", placeholder: dateFormat, onPaste: (e) => {
39893
+ if (onPaste) {
39894
+ onPaste(e);
39895
+ setOpen(false);
39896
+ }
39897
+ } }), onKeyDown: (e) => {
39893
39898
  if (e.code === 'Space') {
39894
39899
  setOpen(!open);
39895
39900
  setTimeout(() => {
@@ -39899,12 +39904,10 @@ const DateInput = (props) => {
39899
39904
  }
39900
39905
  }, 100);
39901
39906
  }
39902
- else {
39903
- if (onKeyDown && !open) {
39904
- const rs = onKeyDown(e);
39905
- if (rs) {
39906
- setOpen(false);
39907
- }
39907
+ else if (onKeyDown && (!open || ((e.ctrlKey || e.metaKey || e.altKey) && e.shiftKey))) {
39908
+ const rs = onKeyDown(e);
39909
+ if (rs) {
39910
+ setOpen(false);
39908
39911
  }
39909
39912
  }
39910
39913
  } }));
@@ -42763,6 +42766,11 @@ const TableEdit = forwardRef((props, ref) => {
42763
42766
  if (checkKeyDown(e, row, col, indexRow + 1, indexCol + 1)) {
42764
42767
  return true;
42765
42768
  }
42769
+ }, onPaste: (e) => {
42770
+ if (toolbarSetting?.showBottomToolbar && !editDisable && !addDisable) {
42771
+ pasteDataFromExcel(indexRow, indexCol, e);
42772
+ e.preventDefault();
42773
+ }
42766
42774
  } }));
42767
42775
  case 'datetime':
42768
42776
  return (jsx(DateInput, { id: `${idTable}-col${indexCol + 1}-row${indexRow + 1}`, className: classNames$1('form-control border-0 rounded-0 input-numeric', { 'is-invalid': col.validate && col.validate(row[col.field], row) }), value: row[col.field], onChange: (date) => {
@@ -42773,6 +42781,11 @@ const TableEdit = forwardRef((props, ref) => {
42773
42781
  handleDataChange(row, col, indexRow);
42774
42782
  }, dateFormat: "dd/MM/yyyy HH:mm", onKeyDown: (e) => {
42775
42783
  checkKeyDown(e, row, col, indexRow + 1, indexCol + 1);
42784
+ }, onPaste: (e) => {
42785
+ if (toolbarSetting?.showBottomToolbar && !editDisable && !addDisable) {
42786
+ pasteDataFromExcel(indexRow, indexCol, e);
42787
+ e.preventDefault();
42788
+ }
42776
42789
  } }));
42777
42790
  case 'select':
42778
42791
  let valueSelect;
@@ -43155,7 +43168,28 @@ const TableEdit = forwardRef((props, ref) => {
43155
43168
  }
43156
43169
  else {
43157
43170
  if (column.editType === 'date') {
43158
- const date = new Date(stringData);
43171
+ const [day, month, year] = stringData.split('/');
43172
+ const date = new Date(`${year}-${month}-${day}`);
43173
+ if (!isNaN(date.getTime())) {
43174
+ if (column.onPaste) {
43175
+ dataRow[column.field] = column.onPaste(dataRow, date);
43176
+ }
43177
+ else {
43178
+ dataRow[column.field] = date;
43179
+ }
43180
+ if (column.callback) {
43181
+ column.callback(date, currenRowIndex + indexRow, dataRow);
43182
+ }
43183
+ }
43184
+ else {
43185
+ notificationError(t('PasteExcelIncorrectFormat', { index: (currenRowIndex + indexRow + 1), field: t(column.headerText ?? ''), value: stringData }));
43186
+ }
43187
+ }
43188
+ else if (column.editType === 'datetime') {
43189
+ const [datePart, timePart] = stringData.split(' ');
43190
+ const [day, month, year] = datePart.split('/');
43191
+ const [hour, minute] = timePart.split(':');
43192
+ const date = new Date(year, month - 1, day, hour, minute);
43159
43193
  if (!isNaN(date.getTime())) {
43160
43194
  if (column.onPaste) {
43161
43195
  dataRow[column.field] = column.onPaste(dataRow, date);
@@ -65494,19 +65528,14 @@ const RenderFilterElement = ({ filter, optionsFilter, formatSetting, filterBy, s
65494
65528
  }, placeholder: t('Select') }) }));
65495
65529
  };
65496
65530
  const handleSave = () => {
65497
- if (valueFilter || valueFilter === 0) {
65498
- if (filter) {
65499
- filter.ope = operator;
65500
- filter.value = valueFilter;
65501
- }
65502
- else {
65503
- filterBy.push({ key: column.field, ope: operator, value: valueFilter });
65504
- }
65505
- changeFilter([...filterBy]);
65531
+ if (filter) {
65532
+ filter.ope = operator;
65533
+ filter.value = valueFilter ?? '';
65506
65534
  }
65507
65535
  else {
65508
- changeFilter(filterBy.filter((x) => x.key !== column.field));
65536
+ filterBy.push({ key: column.field, ope: operator, value: valueFilter ?? '' });
65509
65537
  }
65538
+ changeFilter([...filterBy]);
65510
65539
  setOpenFilter(false);
65511
65540
  };
65512
65541
  return (jsxs("div", { className: 'r-filter-popup', onKeyDown: (e) => {
@@ -65514,7 +65543,7 @@ const RenderFilterElement = ({ filter, optionsFilter, formatSetting, filterBy, s
65514
65543
  handleSave();
65515
65544
  e.stopPropagation();
65516
65545
  }
65517
- }, children: [((!column.filterType && column.type === 'numeric') || column.filterType === 'numeric') ? jsxs(Fragment$1, { children: [RenderNumberFilter(), " "] }) : (column.filterType === 'select' ? jsxs(Fragment$1, { children: [RenderSelectFilter(), " "] }) : RenderStringFilter()), jsxs("div", { className: 'd-flex justify-content-end', children: [jsx(Button$1, { outline: true, color: 'primary', style: { borderRadius: 3 }, className: 'me-50 py-25 px-50', onClick: handleSave, children: t('Filter') }), jsx(Button$1, { className: 'py-25 px-50', outline: true, style: { borderRadius: 3 }, onClick: () => {
65546
+ }, children: [((!column.filterType && column.type === 'numeric') || column.filterType === 'numeric') ? jsxs(Fragment$1, { children: [RenderNumberFilter(), " "] }) : (column.filterType === 'select' ? jsxs(Fragment$1, { children: [RenderSelectFilter(), " "] }) : RenderStringFilter()), jsxs("div", { className: 'd-flex justify-content-end', children: [jsx(Button$1, { color: 'primary', style: { borderRadius: 3 }, className: 'me-50 py-25 px-50 fw-bold', onClick: handleSave, children: t('Filter') }), jsx(Button$1, { className: 'py-25 px-50 fw-bold', outline: true, style: { borderRadius: 3 }, onClick: () => {
65518
65547
  if (filterBy) {
65519
65548
  changeFilter(filterBy.filter((x) => x.key !== column.field));
65520
65549
  }
@@ -65697,7 +65726,7 @@ const VirtualTable = ({ idTable, dataSource, rowHeight = 33, height = 400, colum
65697
65726
  }
65698
65727
  }
65699
65728
  };
65700
- return (jsxs("div", { className: "react-table-edit", children: [jsxs("div", { className: 'r-grid', children: [toolbarSetting?.showTopToolbar && jsx(RenderToolbarTop, { toolbarTopOption: toolbarTopOption }), jsxs("div", { ref: gridRef, className: "r-gridtable", onScroll: handleScroll, style: { height: `${height ? `${height}px` : 'auto'}` }, children: [jsxs("table", { style: { width: '100%' }, children: [jsx(RenderColGroup, { contentColumns: flatVisble }), jsx("thead", { className: 'r-gridheader', children: headerColumns.map((rowColumn, indexParent) => (jsx("tr", { className: "r-row", role: "row", children: rowColumn.map((column, indexColumn) => (jsx(HeaderTableCol, { idTable: idTable, col: column, dataSource: dataSource, indexCol: indexColumn, indexParent: indexParent, isMulti: isMutil ?? false, selectEnable: selectEnable ?? false, selectedRows: selectedRows, setSelectedRows: setSelectedRows, columns: contentColumns, setColumns: setColumns, objWidthFixLeft: objWidthFixLeft, objWidthFixRight: objWidthFixRight, fisrtObjWidthFixRight: fisrtObjWidthFixRight, lastObjWidthFixLeft: lastObjWidthFixLeft, orderBy: orderBy, allowFilter: allowFilter, allowOrder: allowOrder, filterBy: filterBy, optionsFilter: optionsFilter, changeFilter: (val) => {
65729
+ return (jsxs("div", { className: "react-table-edit r-virtualized-table", children: [jsxs("div", { className: 'r-grid', children: [toolbarSetting?.showTopToolbar && jsx(RenderToolbarTop, { toolbarTopOption: toolbarTopOption }), jsxs("div", { ref: gridRef, className: "r-gridtable", onScroll: handleScroll, style: { height: `${height ? `${height}px` : 'auto'}` }, children: [jsxs("table", { style: { width: '100%' }, children: [jsx(RenderColGroup, { contentColumns: flatVisble }), jsx("thead", { className: 'r-gridheader', children: headerColumns.map((rowColumn, indexParent) => (jsx("tr", { className: "r-row", role: "row", children: rowColumn.map((column, indexColumn) => (jsx(HeaderTableCol, { idTable: idTable, col: column, dataSource: dataSource, indexCol: indexColumn, indexParent: indexParent, isMulti: isMutil ?? false, selectEnable: selectEnable ?? false, selectedRows: selectedRows, setSelectedRows: setSelectedRows, columns: contentColumns, setColumns: setColumns, objWidthFixLeft: objWidthFixLeft, objWidthFixRight: objWidthFixRight, fisrtObjWidthFixRight: fisrtObjWidthFixRight, lastObjWidthFixLeft: lastObjWidthFixLeft, orderBy: orderBy, allowFilter: allowFilter, allowOrder: allowOrder, filterBy: filterBy, optionsFilter: optionsFilter, changeFilter: (val) => {
65701
65730
  setFilterBy([...val]);
65702
65731
  if (changeFilter) {
65703
65732
  changeFilter(val);