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/component/input/input-date/index.d.ts +2 -0
- package/dist/index.js +50 -21
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +50 -21
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
|
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
|
-
|
|
39932
|
-
|
|
39933
|
-
|
|
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
|
|
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 (
|
|
65526
|
-
|
|
65527
|
-
|
|
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
|
-
|
|
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, {
|
|
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);
|