es-grid-template 1.6.0 → 1.6.2

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 (27) hide show
  1. package/es/grid-component/EditForm/EditForm.d.ts +27 -0
  2. package/es/grid-component/EditForm/EditForm.js +394 -0
  3. package/es/grid-component/EditForm/index.d.ts +1 -0
  4. package/es/grid-component/EditForm/index.js +1 -0
  5. package/es/grid-component/EditableCell.js +46 -43
  6. package/es/grid-component/InternalTable.js +11 -4
  7. package/es/grid-component/control/InputControl/InputControl.d.ts +27 -0
  8. package/es/grid-component/control/InputControl/InputControl.js +121 -0
  9. package/es/grid-component/control/InputControl/index.d.ts +1 -0
  10. package/es/grid-component/control/InputControl/index.js +1 -0
  11. package/es/grid-component/table/GridEdit.js +6 -6
  12. package/es/grid-component/type.d.ts +28 -0
  13. package/es/grid-component/useContext.d.ts +0 -1
  14. package/lib/grid-component/EditForm/EditForm.d.ts +27 -0
  15. package/lib/grid-component/EditForm/EditForm.js +404 -0
  16. package/lib/grid-component/EditForm/index.d.ts +1 -0
  17. package/lib/grid-component/EditForm/index.js +16 -0
  18. package/lib/grid-component/EditableCell.js +46 -43
  19. package/lib/grid-component/InternalTable.js +8 -3
  20. package/lib/grid-component/control/InputControl/InputControl.d.ts +27 -0
  21. package/lib/grid-component/control/InputControl/InputControl.js +131 -0
  22. package/lib/grid-component/control/InputControl/index.d.ts +1 -0
  23. package/lib/grid-component/control/InputControl/index.js +16 -0
  24. package/lib/grid-component/table/GridEdit.js +6 -5
  25. package/lib/grid-component/type.d.ts +28 -0
  26. package/lib/grid-component/useContext.d.ts +0 -1
  27. package/package.json +3 -2
@@ -19,6 +19,7 @@ var _rcMasterUi = require("rc-master-ui");
19
19
  var _asyncSelect = require("./async-select");
20
20
  var _asyncTableSelect = require("./async-table-select");
21
21
  var _colors = require("@ant-design/colors");
22
+ var _EditForm = require("./EditForm");
22
23
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
23
24
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
24
25
  // import moment from "moment";
@@ -150,16 +151,7 @@ const EditableCell = props => {
150
151
  placeholder: t ? t(column.placeholder ?? 'Select') : column.placeholder ?? 'Select',
151
152
  disabled: (0, _hooks.isDisable)(column, record) ?? false,
152
153
  maxDate: maxDate,
153
- minDate: minDate
154
-
155
- // onOpenChange={(open) => {
156
- // console.log(open)
157
- // if (open) {
158
- // handleSubmit(onSubmit)
159
- // }
160
- // }}
161
- ,
162
-
154
+ minDate: minDate,
163
155
  onChange: (newDate, dateString) => {
164
156
  const newDateValue = dateString ? (0, _moment.default)((0, _hooks.convertDayjsToDate)(dateString, dateFormat)).format() : null;
165
157
  onChange(newDateValue);
@@ -198,7 +190,6 @@ const EditableCell = props => {
198
190
  minDate: minDate,
199
191
  onChange: (newDate, dateString) => {
200
192
  const newDateValue = dateString ? (0, _moment.default)((0, _hooks.convertDayjsToDate)(dateString, dateFormat)).format() : null;
201
- // console.log('newDateValue', newDateValue)
202
193
  onChange(newDateValue);
203
194
  setTimeout(() => {
204
195
  // @ts-ignore
@@ -748,36 +739,51 @@ const EditableCell = props => {
748
739
  },
749
740
  disabled: (0, _hooks.isDisable)(column, record) ?? false
750
741
  }));
742
+ case 'form':
743
+ const valueForm = value;
744
+ return /*#__PURE__*/_react.default.createElement(_EditForm.EditForm, {
745
+ rowData: record,
746
+ column: column,
747
+ t: t,
748
+ id: `col${indexCol}-record${indexRow}`,
749
+ value: valueForm
750
+ // fieldKey={'name'}
751
+ ,
752
+ fieldKey: column.editFromSettings?.fieldKey
753
+ // recordData={record}
754
+ ,
755
+ indexRow: indexRow,
756
+ cellFocus: column.field === cellEditing?.column.field,
757
+ onChange: val => {
758
+ const formState = getValues();
751
759
 
752
- // case 'form':
753
- //
754
- // const valueForm = record[column.dataIndex]
755
- //
756
- // return (
757
- // <EditForm
758
- // column={col}
759
- // t={t}
760
- // id={`col${indexCol}-record${indexRow}`}
761
- // value={valueForm}
762
- // fieldKey={'name'}
763
- // recordData={record}
764
- // indexRow={indexRow}
765
- // cellFocus={cellFocus}
766
- // onChange={(val: any) => {
767
- // // record[column.dataIndex] = val
768
- // const newrecordData = {
769
- // ...record,
770
- // [column.dataIndex]: val
771
- // }
772
- // handleCellChange(val, val, newrecordData, col, indexRow, indexCol)
773
- // }}
774
- // menuPortalTarget={tableContainerRef}
775
- // classNamePrefix={column.classElement ?? 'select'}
776
- // placeholder={t ? t(column.placeholder ? column.placeholder : '') : (column.placeholder ? column.placeholder : '')}
777
- // menuWidth={column.editFromSettings?.menuWidth}
778
- // menuHeight={column.editFromSettings?.menuHeight}
779
- // />
780
- // )
760
+ // @ts-ignore
761
+ const prevState = record[dataIndex];
762
+ const newState = val;
763
+ handleCellChange?.({
764
+ key: getRowKey?.(record, index),
765
+ field: column.field ?? column.dataIndex,
766
+ record: {
767
+ ...formState,
768
+ [column.field ?? '']: val
769
+ },
770
+ prevState,
771
+ newState,
772
+ option: val,
773
+ indexCol,
774
+ indexRow,
775
+ type: 'blur'
776
+ });
777
+ }
778
+ // cellEditing={cellEditing}
779
+
780
+ // menuPortalTarget={tableContainerRef}
781
+ // classNamePrefix={column.classElement ?? 'select'}
782
+ ,
783
+ placeholder: t ? t(column.placeholder ? column.placeholder : '') : column.placeholder ? column.placeholder : '',
784
+ menuWidth: column.editFromSettings?.menuWidth,
785
+ menuHeight: column.editFromSettings?.menuHeight
786
+ });
781
787
 
782
788
  // case 'file':
783
789
  // const valueFile = record[column.dataIndex]
@@ -962,9 +968,6 @@ const EditableCell = props => {
962
968
  // @ts-ignore
963
969
  const prevState = record[dataIndex];
964
970
  const newState = value;
965
- //
966
- // console.log('newState', newState)
967
- // console.log('prevState', prevState)
968
971
  const key = getRowKey?.(record, index);
969
972
  // @ts-ignore
970
973
  if (newState !== prevState) {
@@ -337,7 +337,9 @@ const InternalTable = props => {
337
337
  setSearchValue
338
338
  }) => {
339
339
  const type = (0, _hooks.getTypeFilter)(column);
340
- const operatorOptions = type === ('Checkbox' || 'Dropdown' || 'DropTree' || 'CheckboxDropdown') ? _hooks.booleanOperator : !type || type === 'Text' ? _hooks.stringOperator : _hooks.numberOperator;
340
+ // const operatorOptions = type === ('Checkbox' || 'Dropdown' || 'DropTree' || 'CheckboxDropdown') ? booleanOperator : (!type || type === 'Text' ? stringOperator : numberOperator)
341
+
342
+ const operatorOptions = ['Checkbox', 'Dropdown', 'DropTree', 'CheckboxDropdown'].includes(type) ? _hooks.booleanOperator : !type || type === 'Text' ? _hooks.stringOperator : _hooks.numberOperator;
341
343
  return /*#__PURE__*/_react.default.createElement("div", {
342
344
  style: {
343
345
  padding: 8,
@@ -836,8 +838,11 @@ const InternalTable = props => {
836
838
  };
837
839
  const triggerPaste = (pastedRows, pastedColumnsArray, newData, copyRows) => {
838
840
  const handlePasteCallback = callbackData => {
839
- const newDataUpdate = (0, _hooks.updateData)(mergedData, callbackData, rowKey);
840
- triggerChangeData(newDataUpdate);
841
+ // const newDataUpdate = updateData(mergedData, callbackData, rowKey as any)
842
+
843
+ const rsFilterData = (0, _hooks.updateOrInsert)((0, _hooks.flattenArray)([...mergedData]), callbackData);
844
+ const rs = (0, _hooks.unFlattenData)(rsFilterData);
845
+ triggerChangeData(rs);
841
846
 
842
847
  // onCellPaste?.dataChange?.(newDataUpdate)
843
848
  };
@@ -0,0 +1,27 @@
1
+ import type { HTMLInputTypeAttribute } from "react";
2
+ import React from "react";
3
+ interface IFFormInput {
4
+ id?: any;
5
+ control: any;
6
+ name: string;
7
+ type?: HTMLInputTypeAttribute;
8
+ label: string;
9
+ labelSize?: string;
10
+ required?: boolean;
11
+ errors?: any;
12
+ height?: number | string;
13
+ disabled?: boolean;
14
+ row?: number;
15
+ isLabel?: boolean;
16
+ inLine?: boolean;
17
+ autoFocus?: boolean;
18
+ placeholder?: string;
19
+ classes?: string;
20
+ callback?: any;
21
+ readOnly?: boolean;
22
+ isView?: boolean;
23
+ t?: any;
24
+ onKeyDown?: (event: any) => void;
25
+ }
26
+ declare const InputControl: (props: IFFormInput) => React.JSX.Element;
27
+ export default InputControl;
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _reactHookForm = require("react-hook-form");
10
+ var _rcMasterUi = require("rc-master-ui");
11
+ var _antd = require("antd");
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+ var _react = _interopRequireWildcard(require("react"));
14
+ var _hooks = require("../../hooks");
15
+ var _grid = require("rc-master-ui/es/grid");
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ // import type { InputType } from "reactstrap/types/lib/Input"
19
+
20
+ // import {isNullOrUndefined} from "../../../hooks"
21
+
22
+ const {
23
+ Text
24
+ } = _antd.Typography;
25
+ const InputControl = props => {
26
+ const {
27
+ id,
28
+ control,
29
+ name,
30
+ type,
31
+ label,
32
+ labelSize,
33
+ required,
34
+ errors,
35
+ height,
36
+ disabled,
37
+ row,
38
+ isLabel,
39
+ placeholder,
40
+ autoFocus,
41
+ inLine,
42
+ callback,
43
+ readOnly,
44
+ classes,
45
+ isView,
46
+ t,
47
+ onKeyDown,
48
+ ...rest
49
+ } = props;
50
+ const renderLabel = () => {
51
+ return /*#__PURE__*/_react.default.createElement(_grid.Col, {
52
+ span: 8
53
+ }, isLabel === false ? '' : /*#__PURE__*/_react.default.createElement("label", {
54
+ className: "form-label"
55
+ }, t ? t(label ? label : '') : label ? label : '', " ", required ? /*#__PURE__*/_react.default.createElement("span", {
56
+ className: "text-danger"
57
+ }, "*") : '', " "));
58
+ };
59
+
60
+ // const renderText = () => {
61
+ // return (
62
+ // <Fragment>
63
+ // <Controller
64
+ // name={name}
65
+ // control={control}
66
+ // render={({ field: { value } }) => (
67
+ // <span>{value}</span>
68
+ // )}
69
+ // />
70
+ // </Fragment>
71
+ // )
72
+ // }
73
+
74
+ const renderInput = () => {
75
+ return /*#__PURE__*/_react.default.createElement("div", {
76
+ style: {
77
+ display: 'flex',
78
+ flexDirection: 'column'
79
+ }
80
+ }, /*#__PURE__*/_react.default.createElement(_reactHookForm.Controller, {
81
+ name: name,
82
+ control: control,
83
+ render: ({
84
+ field: {
85
+ value,
86
+ onChange
87
+ }
88
+ }) => /*#__PURE__*/_react.default.createElement(_rcMasterUi.Input, (0, _extends2.default)({}, rest, {
89
+ id: id,
90
+ value: !(0, _hooks.isNullOrUndefined)(value) ? value : '',
91
+ onChange: val => {
92
+ onChange(val.target.value);
93
+ if (callback) {
94
+ callback(val);
95
+ }
96
+ },
97
+ style: {
98
+ height: `${height}px`
99
+ },
100
+ autoFocus: autoFocus,
101
+ disabled: disabled,
102
+ placeholder: placeholder,
103
+ type: type ? type : 'text'
104
+ // invalid={errors && true}
105
+ ,
106
+ status: errors && true ? 'error' : undefined
107
+ // rows={row}
108
+ ,
109
+ readOnly: readOnly,
110
+ onKeyDown: onKeyDown
111
+ }))
112
+ }), errors && /*#__PURE__*/_react.default.createElement(Text, {
113
+ type: "danger"
114
+ }, errors?.message));
115
+ };
116
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_grid.Row, {
117
+ gutter: [4, 4]
118
+ // className={classnames(' align', {
119
+ // [labelSize ? labelSize : '']: labelSize,
120
+ // [classes ? classes : '']: classes,
121
+ // 'form-row-inline-error': errors
122
+ // }, inLine === false ? 'form-group ' : 'form-row-inline d-flex'
123
+ // )}
124
+ }, renderLabel(), /*#__PURE__*/_react.default.createElement(_grid.Col, {
125
+ span: 16,
126
+ className: (0, _classnames.default)('', {
127
+ 'hidden-label': isLabel === false
128
+ })
129
+ }, renderInput())));
130
+ };
131
+ var _default = exports.default = InputControl;
@@ -0,0 +1 @@
1
+ export * from './InputControl';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _InputControl = require("./InputControl");
7
+ Object.keys(_InputControl).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _InputControl[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _InputControl[key];
14
+ }
15
+ });
16
+ });
@@ -31,6 +31,8 @@ var _HeaderContent = _interopRequireDefault(require("../hooks/content/HeaderCont
31
31
  var _sortable = require("@dnd-kit/sortable");
32
32
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
33
33
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
34
+ // import {Button, Dropdown, Form, Modal, Typography} from "antd"
35
+
34
36
  // import {faker} from "@faker-js/faker";
35
37
 
36
38
  const {
@@ -413,7 +415,8 @@ const GridEdit = props => {
413
415
  })
414
416
  }];
415
417
  }, [t, locale]);
416
- const [form] = _antd.Form.useForm();
418
+
419
+ // const [form] = Form.useForm()
417
420
 
418
421
  // const [editingKey, setEditingKey] = useState<string | number>('')
419
422
 
@@ -1365,7 +1368,7 @@ const GridEdit = props => {
1365
1368
  const pasteData = e.clipboardData.getData("text/plain");
1366
1369
 
1367
1370
  // Chuyển đổi dữ liệu từ clipboard thành mảng
1368
- const rowsPasted = pasteData.split("\n").map(row =>
1371
+ const rowsPasted = pasteData.split("\n").filter(row => row !== '').map(row =>
1369
1372
  // const rows = pasteData.split("\n").map((row: any) =>
1370
1373
  row.replace(/\r/g, "").split("\t"));
1371
1374
  if (rowsPasted.length > (onCellPaste?.maxRowsPaste ?? 200)) {
@@ -1834,7 +1837,6 @@ const GridEdit = props => {
1834
1837
  indexRow,
1835
1838
  key
1836
1839
  } = args;
1837
- if (changeType === 'enter') {}
1838
1840
  if (changeType === 'blur') {
1839
1841
  const handleChangeCallback = callbackData => {
1840
1842
  const callbackRecord = callbackData;
@@ -2332,7 +2334,6 @@ const GridEdit = props => {
2332
2334
  // // },
2333
2335
  // //
2334
2336
  // // onPaste: (event: any) => {
2335
- // // console.log('3333', event)
2336
2337
  // //
2337
2338
  // // if (editingKey.current === '') {
2338
2339
  // //
@@ -2551,7 +2552,7 @@ const GridEdit = props => {
2551
2552
  value: {
2552
2553
  id: id ?? '',
2553
2554
  rowKey,
2554
- form,
2555
+ // form,
2555
2556
  format,
2556
2557
  control,
2557
2558
  trigger,
@@ -132,9 +132,37 @@ export type ColumnTable<RecordType = AnyObject> = Omit<RcColumnType<RecordType>,
132
132
  max?: number;
133
133
  min?: number;
134
134
  editSelectSettings?: IEditSelectSettings;
135
+ editFromSettings?: IEditFromSettings;
135
136
  fixedType?: FixedType;
136
137
  headerTextWrap?: boolean;
137
138
  };
139
+ export type IFormOpen = {
140
+ value?: any;
141
+ setValue?: any;
142
+ getValues?: any;
143
+ reset?: any;
144
+ rowData?: any;
145
+ };
146
+ export type IEditFromSettings = {
147
+ fieldKey: string;
148
+ formOpen?: (props: IFormOpen) => void;
149
+ formClose?: (props: IFormOpen) => void;
150
+ formatLabel?: (value: any) => string;
151
+ menuWidth?: number;
152
+ menuHeight?: number;
153
+ labelWith?: number;
154
+ items: any[];
155
+ layout?: {
156
+ xl?: IGrid;
157
+ lg?: IGrid;
158
+ md?: IGrid;
159
+ sm?: IGrid;
160
+ xs?: IGrid;
161
+ };
162
+ defaultValues?: Record<string, any>;
163
+ schema?: any;
164
+ };
165
+ type IGrid = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24;
138
166
  export type ColumnTemplate<RecordType> = {
139
167
  value: any;
140
168
  rowData: RecordType;
@@ -9,7 +9,6 @@ export interface IContext<RecordType> {
9
9
  setOpen?: any;
10
10
  rowKey: string | keyof RecordType | GetRowKey<RecordType>;
11
11
  onSave?: any;
12
- form?: any;
13
12
  format?: IFormat;
14
13
  control?: any;
15
14
  errors?: any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "es-grid-template",
3
- "version": "1.6.0",
3
+ "version": "1.6.2",
4
4
  "description": "es-grid-template",
5
5
  "keywords": [
6
6
  "react",
@@ -78,7 +78,8 @@
78
78
  "sweetalert2": "^11.4.14",
79
79
  "sweetalert2-react-content": "^5.0.0",
80
80
  "throttle-debounce": "^5.0.2",
81
- "vitest": "^2.0.5"
81
+ "vitest": "^2.0.5",
82
+ "yup": "^1.6.1"
82
83
  },
83
84
  "devDependencies": {
84
85
  "@babel/cli": "^7.26.4",