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.
@@ -1,3 +1,4 @@
1
+ import { ClipboardEvent } from 'react';
1
2
  interface IFFormInput {
2
3
  id?: string;
3
4
  onKeyDown: any;
@@ -5,6 +6,7 @@ interface IFFormInput {
5
6
  onChange: any;
6
7
  className?: string;
7
8
  value: Date;
9
+ onPaste?: (e: ClipboardEvent<HTMLElement>) => void;
8
10
  }
9
11
  declare const DateInput: (props: IFFormInput) => import("react/jsx-runtime").JSX.Element;
10
12
  export default DateInput;
package/dist/index.js CHANGED
@@ -39911,13 +39911,18 @@ if (process.env.NODE_ENV === 'production') {
39911
39911
  var InputMask = reactInputMask.exports;
39912
39912
 
39913
39913
  const DateInput = (props) => {
39914
- const { id, onKeyDown, dateFormat, className, onChange, value } = props;
39914
+ const { id, onKeyDown, dateFormat, className, onChange, value, onPaste } = props;
39915
39915
  const [open, setOpen] = React$5.useState(false);
39916
39916
  return (jsxRuntime.jsx(DatePicker, { id: id, open: open, className: className, selected: value, onChange: (date) => {
39917
39917
  if (onChange) {
39918
39918
  onChange(date);
39919
39919
  }
39920
- }, dateFormat: dateFormat, locale: "vi", showMonthDropdown: true, showYearDropdown: true, dropdownMode: "select", isClearable: true, onCalendarClose: () => setOpen(false), onCalendarOpen: () => setOpen(true), customInput: jsxRuntime.jsx(InputMask, { mask: "99/99/9999", placeholder: dateFormat }), onKeyDown: (e) => {
39920
+ }, dateFormat: dateFormat, locale: "vi", showMonthDropdown: true, showYearDropdown: true, dropdownMode: "select", isClearable: true, onCalendarClose: () => setOpen(false), onCalendarOpen: () => setOpen(true), customInput: jsxRuntime.jsx(InputMask, { mask: "99/99/9999", placeholder: dateFormat, onPaste: (e) => {
39921
+ if (onPaste) {
39922
+ onPaste(e);
39923
+ setOpen(false);
39924
+ }
39925
+ } }), onKeyDown: (e) => {
39921
39926
  if (e.code === 'Space') {
39922
39927
  setOpen(!open);
39923
39928
  setTimeout(() => {
@@ -39927,12 +39932,10 @@ const DateInput = (props) => {
39927
39932
  }
39928
39933
  }, 100);
39929
39934
  }
39930
- else {
39931
- if (onKeyDown && !open) {
39932
- const rs = onKeyDown(e);
39933
- if (rs) {
39934
- setOpen(false);
39935
- }
39935
+ else if (onKeyDown && (!open || ((e.ctrlKey || e.metaKey || e.altKey) && e.shiftKey))) {
39936
+ const rs = onKeyDown(e);
39937
+ if (rs) {
39938
+ setOpen(false);
39936
39939
  }
39937
39940
  }
39938
39941
  } }));
@@ -42791,6 +42794,11 @@ const TableEdit = React$5.forwardRef((props, ref) => {
42791
42794
  if (checkKeyDown(e, row, col, indexRow + 1, indexCol + 1)) {
42792
42795
  return true;
42793
42796
  }
42797
+ }, onPaste: (e) => {
42798
+ if (toolbarSetting?.showBottomToolbar && !editDisable && !addDisable) {
42799
+ pasteDataFromExcel(indexRow, indexCol, e);
42800
+ e.preventDefault();
42801
+ }
42794
42802
  } }));
42795
42803
  case 'datetime':
42796
42804
  return (jsxRuntime.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) => {
@@ -42801,6 +42809,11 @@ const TableEdit = React$5.forwardRef((props, ref) => {
42801
42809
  handleDataChange(row, col, indexRow);
42802
42810
  }, dateFormat: "dd/MM/yyyy HH:mm", onKeyDown: (e) => {
42803
42811
  checkKeyDown(e, row, col, indexRow + 1, indexCol + 1);
42812
+ }, onPaste: (e) => {
42813
+ if (toolbarSetting?.showBottomToolbar && !editDisable && !addDisable) {
42814
+ pasteDataFromExcel(indexRow, indexCol, e);
42815
+ e.preventDefault();
42816
+ }
42804
42817
  } }));
42805
42818
  case 'select':
42806
42819
  let valueSelect;
@@ -43183,7 +43196,28 @@ const TableEdit = React$5.forwardRef((props, ref) => {
43183
43196
  }
43184
43197
  else {
43185
43198
  if (column.editType === 'date') {
43186
- const date = new Date(stringData);
43199
+ const [day, month, year] = stringData.split('/');
43200
+ const date = new Date(`${year}-${month}-${day}`);
43201
+ if (!isNaN(date.getTime())) {
43202
+ if (column.onPaste) {
43203
+ dataRow[column.field] = column.onPaste(dataRow, date);
43204
+ }
43205
+ else {
43206
+ dataRow[column.field] = date;
43207
+ }
43208
+ if (column.callback) {
43209
+ column.callback(date, currenRowIndex + indexRow, dataRow);
43210
+ }
43211
+ }
43212
+ else {
43213
+ notificationError(t('PasteExcelIncorrectFormat', { index: (currenRowIndex + indexRow + 1), field: t(column.headerText ?? ''), value: stringData }));
43214
+ }
43215
+ }
43216
+ else if (column.editType === 'datetime') {
43217
+ const [datePart, timePart] = stringData.split(' ');
43218
+ const [day, month, year] = datePart.split('/');
43219
+ const [hour, minute] = timePart.split(':');
43220
+ const date = new Date(year, month - 1, day, hour, minute);
43187
43221
  if (!isNaN(date.getTime())) {
43188
43222
  if (column.onPaste) {
43189
43223
  dataRow[column.field] = column.onPaste(dataRow, date);
@@ -65522,19 +65556,14 @@ const RenderFilterElement = ({ filter, optionsFilter, formatSetting, filterBy, s
65522
65556
  }, placeholder: t('Select') }) }));
65523
65557
  };
65524
65558
  const handleSave = () => {
65525
- if (valueFilter || valueFilter === 0) {
65526
- if (filter) {
65527
- filter.ope = operator;
65528
- filter.value = valueFilter;
65529
- }
65530
- else {
65531
- filterBy.push({ key: column.field, ope: operator, value: valueFilter });
65532
- }
65533
- changeFilter([...filterBy]);
65559
+ if (filter) {
65560
+ filter.ope = operator;
65561
+ filter.value = valueFilter ?? '';
65534
65562
  }
65535
65563
  else {
65536
- changeFilter(filterBy.filter((x) => x.key !== column.field));
65564
+ filterBy.push({ key: column.field, ope: operator, value: valueFilter ?? '' });
65537
65565
  }
65566
+ changeFilter([...filterBy]);
65538
65567
  setOpenFilter(false);
65539
65568
  };
65540
65569
  return (jsxRuntime.jsxs("div", { className: 'r-filter-popup', onKeyDown: (e) => {
@@ -65542,7 +65571,7 @@ const RenderFilterElement = ({ filter, optionsFilter, formatSetting, filterBy, s
65542
65571
  handleSave();
65543
65572
  e.stopPropagation();
65544
65573
  }
65545
- }, children: [((!column.filterType && column.type === 'numeric') || column.filterType === 'numeric') ? jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [RenderNumberFilter(), " "] }) : (column.filterType === 'select' ? jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [RenderSelectFilter(), " "] }) : RenderStringFilter()), jsxRuntime.jsxs("div", { className: 'd-flex justify-content-end', children: [jsxRuntime.jsx(Button$1, { outline: true, color: 'primary', style: { borderRadius: 3 }, className: 'me-50 py-25 px-50', onClick: handleSave, children: t('Filter') }), jsxRuntime.jsx(Button$1, { className: 'py-25 px-50', outline: true, style: { borderRadius: 3 }, onClick: () => {
65574
+ }, children: [((!column.filterType && column.type === 'numeric') || column.filterType === 'numeric') ? jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [RenderNumberFilter(), " "] }) : (column.filterType === 'select' ? jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [RenderSelectFilter(), " "] }) : RenderStringFilter()), jsxRuntime.jsxs("div", { className: 'd-flex justify-content-end', children: [jsxRuntime.jsx(Button$1, { color: 'primary', style: { borderRadius: 3 }, className: 'me-50 py-25 px-50 fw-bold', onClick: handleSave, children: t('Filter') }), jsxRuntime.jsx(Button$1, { className: 'py-25 px-50 fw-bold', outline: true, style: { borderRadius: 3 }, onClick: () => {
65546
65575
  if (filterBy) {
65547
65576
  changeFilter(filterBy.filter((x) => x.key !== column.field));
65548
65577
  }
@@ -65725,7 +65754,7 @@ const VirtualTable = ({ idTable, dataSource, rowHeight = 33, height = 400, colum
65725
65754
  }
65726
65755
  }
65727
65756
  };
65728
- return (jsxRuntime.jsxs("div", { className: "react-table-edit", children: [jsxRuntime.jsxs("div", { className: 'r-grid', children: [toolbarSetting?.showTopToolbar && jsxRuntime.jsx(RenderToolbarTop, { toolbarTopOption: toolbarTopOption }), jsxRuntime.jsxs("div", { ref: gridRef, className: "r-gridtable", onScroll: handleScroll, style: { height: `${height ? `${height}px` : 'auto'}` }, children: [jsxRuntime.jsxs("table", { style: { width: '100%' }, children: [jsxRuntime.jsx(RenderColGroup, { contentColumns: flatVisble }), jsxRuntime.jsx("thead", { className: 'r-gridheader', children: headerColumns.map((rowColumn, indexParent) => (jsxRuntime.jsx("tr", { className: "r-row", role: "row", children: rowColumn.map((column, indexColumn) => (jsxRuntime.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) => {
65757
+ return (jsxRuntime.jsxs("div", { className: "react-table-edit r-virtualized-table", children: [jsxRuntime.jsxs("div", { className: 'r-grid', children: [toolbarSetting?.showTopToolbar && jsxRuntime.jsx(RenderToolbarTop, { toolbarTopOption: toolbarTopOption }), jsxRuntime.jsxs("div", { ref: gridRef, className: "r-gridtable", onScroll: handleScroll, style: { height: `${height ? `${height}px` : 'auto'}` }, children: [jsxRuntime.jsxs("table", { style: { width: '100%' }, children: [jsxRuntime.jsx(RenderColGroup, { contentColumns: flatVisble }), jsxRuntime.jsx("thead", { className: 'r-gridheader', children: headerColumns.map((rowColumn, indexParent) => (jsxRuntime.jsx("tr", { className: "r-row", role: "row", children: rowColumn.map((column, indexColumn) => (jsxRuntime.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
65758
  setFilterBy([...val]);
65730
65759
  if (changeFilter) {
65731
65760
  changeFilter(val);