es-grid-template 1.2.0 → 1.2.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 (69) hide show
  1. package/assets/index.css +695 -0
  2. package/assets/index.scss +1063 -0
  3. package/es/grid-component/ColumnsChoose.d.ts +1 -0
  4. package/es/grid-component/ColumnsChoose.js +63 -28
  5. package/es/grid-component/ColumnsGroup/ColumnsGroup.d.ts +12 -0
  6. package/es/grid-component/ColumnsGroup/ColumnsGroup.js +223 -0
  7. package/es/grid-component/ColumnsGroup/index.d.ts +1 -0
  8. package/es/grid-component/ColumnsGroup/index.js +1 -0
  9. package/es/grid-component/ConvertColumnTable.d.ts +7 -0
  10. package/es/grid-component/ConvertColumnTable.js +143 -0
  11. package/es/grid-component/EditableCell.js +1 -1
  12. package/es/grid-component/GridStyle.js +1 -1
  13. package/es/grid-component/InternalTable.d.ts +1 -0
  14. package/es/grid-component/InternalTable.js +150 -249
  15. package/es/grid-component/TableGrid.d.ts +4 -1
  16. package/es/grid-component/TableGrid.js +31 -70
  17. package/es/grid-component/hooks/{useColumns → columns}/index.d.ts +2 -2
  18. package/es/grid-component/hooks/{useColumns → columns}/index.js +20 -16
  19. package/es/grid-component/hooks/content/HeaderContent.d.ts +11 -0
  20. package/es/grid-component/hooks/content/HeaderContent.js +79 -0
  21. package/es/grid-component/hooks/content/TooltipContent.d.ts +13 -0
  22. package/es/grid-component/hooks/content/TooltipContent.js +74 -0
  23. package/es/grid-component/hooks/useColumns.d.ts +16 -0
  24. package/es/grid-component/hooks/useColumns.js +280 -0
  25. package/es/grid-component/hooks/utils.d.ts +26 -1
  26. package/es/grid-component/hooks/utils.js +331 -1
  27. package/es/grid-component/index.js +3 -1
  28. package/es/grid-component/styles.scss +365 -68
  29. package/es/grid-component/table/Grid.d.ts +2 -0
  30. package/es/grid-component/table/Grid.js +18 -6
  31. package/es/grid-component/table/GridEdit.d.ts +4 -1
  32. package/es/grid-component/table/GridEdit.js +941 -307
  33. package/es/grid-component/table/Group.d.ts +13 -0
  34. package/es/grid-component/table/Group.js +154 -0
  35. package/es/grid-component/type.d.ts +39 -2
  36. package/lib/grid-component/ColumnsChoose.d.ts +1 -0
  37. package/lib/grid-component/ColumnsChoose.js +62 -27
  38. package/lib/grid-component/ColumnsGroup/ColumnsGroup.d.ts +12 -0
  39. package/lib/grid-component/ColumnsGroup/ColumnsGroup.js +234 -0
  40. package/lib/grid-component/ColumnsGroup/index.d.ts +1 -0
  41. package/lib/grid-component/ColumnsGroup/index.js +16 -0
  42. package/lib/grid-component/ConvertColumnTable.d.ts +7 -0
  43. package/lib/grid-component/ConvertColumnTable.js +152 -0
  44. package/lib/grid-component/EditableCell.js +1 -1
  45. package/lib/grid-component/GridStyle.js +1 -1
  46. package/lib/grid-component/InternalTable.d.ts +1 -0
  47. package/lib/grid-component/InternalTable.js +144 -249
  48. package/lib/grid-component/TableGrid.d.ts +4 -1
  49. package/lib/grid-component/TableGrid.js +26 -68
  50. package/lib/grid-component/hooks/{useColumns → columns}/index.d.ts +2 -2
  51. package/lib/grid-component/hooks/{useColumns → columns}/index.js +20 -16
  52. package/lib/grid-component/hooks/content/HeaderContent.d.ts +11 -0
  53. package/lib/grid-component/hooks/content/HeaderContent.js +86 -0
  54. package/lib/grid-component/hooks/content/TooltipContent.d.ts +13 -0
  55. package/lib/grid-component/hooks/content/TooltipContent.js +81 -0
  56. package/lib/grid-component/hooks/useColumns.d.ts +16 -0
  57. package/lib/grid-component/hooks/useColumns.js +291 -0
  58. package/lib/grid-component/hooks/utils.d.ts +26 -1
  59. package/lib/grid-component/hooks/utils.js +347 -5
  60. package/lib/grid-component/index.js +2 -1
  61. package/lib/grid-component/styles.scss +365 -68
  62. package/lib/grid-component/table/Grid.d.ts +2 -0
  63. package/lib/grid-component/table/Grid.js +18 -6
  64. package/lib/grid-component/table/GridEdit.d.ts +4 -1
  65. package/lib/grid-component/table/GridEdit.js +939 -305
  66. package/lib/grid-component/table/Group.d.ts +13 -0
  67. package/lib/grid-component/table/Group.js +163 -0
  68. package/lib/grid-component/type.d.ts +39 -2
  69. package/package.json +106 -105
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _ColumnsGroup = require("./ColumnsGroup");
7
+ Object.keys(_ColumnsGroup).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _ColumnsGroup[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _ColumnsGroup[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { GridTableProps } from "./type";
3
+ import 'dayjs/locale/es';
4
+ import 'dayjs/locale/vi';
5
+ import './styles.scss';
6
+ declare const ConvertColumnTable: <RecordType extends object>(props: GridTableProps<RecordType>) => React.JSX.Element;
7
+ export default ConvertColumnTable;
@@ -0,0 +1,152 @@
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 _react = _interopRequireWildcard(require("react"));
10
+ var _reactResizable = require("react-resizable");
11
+ var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customParseFormat"));
12
+ var _dayjs = _interopRequireDefault(require("dayjs"));
13
+ require("dayjs/locale/es");
14
+ require("dayjs/locale/vi");
15
+ var _en_US = _interopRequireDefault(require("rc-master-ui/es/date-picker/locale/en_US"));
16
+ var _vi_VN = _interopRequireDefault(require("rc-master-ui/es/date-picker/locale/vi_VN"));
17
+ require("./styles.scss");
18
+ var _InternalTable = _interopRequireDefault(require("./InternalTable"));
19
+ var _useColumns = _interopRequireDefault(require("./hooks/useColumns"));
20
+ var _hooks = require("./hooks");
21
+ 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); }
22
+ 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; }
23
+ // import classNames from "classnames";
24
+
25
+ // import useMergedState from "rc-util/lib/hooks/useMergedState";
26
+
27
+ _dayjs.default.extend(_customParseFormat.default);
28
+
29
+ // const ASCEND = 'ascend';
30
+ // const DESCEND = 'descend';
31
+
32
+ const ResizableTitle = props => {
33
+ const {
34
+ onResize,
35
+ width,
36
+ ...restProps
37
+ } = props;
38
+ if (!width) {
39
+ return /*#__PURE__*/_react.default.createElement("th", restProps);
40
+ }
41
+ return (
42
+ /*#__PURE__*/
43
+ // @ts-ignore
44
+ _react.default.createElement(_reactResizable.Resizable, {
45
+ width: width,
46
+ height: 0,
47
+ handle: /*#__PURE__*/_react.default.createElement("span", {
48
+ className: "react-resizable-handle",
49
+ onClick: e => {
50
+ e.stopPropagation();
51
+ }
52
+ }),
53
+ onResize: onResize,
54
+ draggableOpts: {
55
+ enableUserSelectHack: false
56
+ }
57
+ }, /*#__PURE__*/_react.default.createElement("th", restProps))
58
+ );
59
+ };
60
+ const ConvertColumnTable = props => {
61
+ const {
62
+ t,
63
+ columns: propsColumns,
64
+ dataSource,
65
+ lang,
66
+ locale,
67
+ format,
68
+ allowResizing,
69
+ dataSourceFilter: propDataSourceFilter,
70
+ onFilterClick,
71
+ editAble,
72
+ rowKey: propRowKey,
73
+ sortMultiple,
74
+ groupAble,
75
+ groupSetting,
76
+ groupColumns,
77
+ ...rest
78
+ } = props;
79
+ const local = lang && lang === 'en' ? _en_US.default : _vi_VN.default;
80
+ const buddhistLocale = {
81
+ ...local,
82
+ lang: {
83
+ ...local.lang
84
+ }
85
+ };
86
+ const rowKey = (0, _react.useMemo)(() => {
87
+ return editAble ? 'rowId' : propRowKey ?? 'id';
88
+ }, [editAble, propRowKey]);
89
+ const [columns, setColumns] = _react.default.useState([]);
90
+
91
+ // ========================= Keys =========================
92
+ // const [columns, setColumns] = useMergedState(
93
+ // propsColumns || [],
94
+ // {
95
+ // value: propsColumns,
96
+ // },
97
+ // );
98
+
99
+ _react.default.useEffect(() => {
100
+ setColumns(propsColumns);
101
+ }, [propsColumns]);
102
+ const handleResize = column => (e, {
103
+ size
104
+ }) => {
105
+ const newColumn = {
106
+ ...column,
107
+ width: size.width
108
+ };
109
+ const newColumns = (0, _hooks.updateArrayByKey)(columns, newColumn, 'field');
110
+ setColumns(newColumns);
111
+ };
112
+ const [transformSelectionColumns] = (0, _useColumns.default)({
113
+ locale,
114
+ t,
115
+ buddhistLocale,
116
+ dataSourceFilter: propDataSourceFilter,
117
+ format,
118
+ sortMultiple,
119
+ groupAble,
120
+ groupSetting,
121
+ groupColumns,
122
+ handleResize
123
+ });
124
+ const mergedColumns = _react.default.useMemo(() => {
125
+ return transformSelectionColumns(columns);
126
+ }, [columns, transformSelectionColumns]);
127
+ const mergerdData = _react.default.useMemo(() => {
128
+ return dataSource;
129
+ }, [dataSource]);
130
+ return /*#__PURE__*/_react.default.createElement(_InternalTable.default, (0, _extends2.default)({}, rest, {
131
+ t: t,
132
+ editAble: editAble,
133
+ dataSource: mergerdData,
134
+ format: format,
135
+ locale: locale,
136
+ components: {
137
+ header: {
138
+ cell: allowResizing ? ResizableTitle : undefined
139
+ }
140
+ }
141
+ // columns={mergedColumns}
142
+ ,
143
+ columns: mergedColumns ?? [],
144
+ showSorterTooltip: {
145
+ target: 'sorter-icon'
146
+ },
147
+ rowKey: rowKey,
148
+ groupAble: groupAble,
149
+ groupSetting: groupSetting
150
+ }));
151
+ };
152
+ var _default = exports.default = ConvertColumnTable;
@@ -41,7 +41,7 @@ const EditableCell = props => {
41
41
  t,
42
42
  editing,
43
43
  dataIndex,
44
- title,
44
+ // title,
45
45
  editType,
46
46
  record,
47
47
  index,
@@ -9,4 +9,4 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
9
9
  const GridStyle = exports.GridStyle = _styledComponents.default.div.withConfig({
10
10
  displayName: "GridStyle",
11
11
  componentId: "es-grid-template__sc-sueu2e-0"
12
- })([".ui-rc-pagination{border-bottom:1px solid #e0e0e0;border-top:1px solid #e0e0e0;margin:0;padding:.75rem 1rem;.ui-rc-pagination-total-text{order:2;margin-left:auto;}&::before{content:\"\";position:absolute;border-left:1px solid #e0e0e0;height:50px;bottom:0;left:0;z-index:-1;}&::after{content:\"\";position:absolute;border-left:1px solid #e0e0e0;height:50px;bottom:0;visibility:visible;right:0;z-index:-1;}&.pagination-template{&::before{content:\"\";position:absolute;border-left:1px solid #e0e0e0;height:", ";bottom:0;left:0;z-index:-1;}&::after{content:\"\";position:absolute;border-left:1px solid #e0e0e0;height:", ";bottom:0;visibility:visible;right:0;z-index:-1;}}}.react-resizable{position:relative;background-clip:padding-box;}.react-resizable-handle{position:absolute;right:0px;bottom:0;z-index:1;width:5px;height:100%;cursor:col-resize;&.none{cursor:auto;display:none;}}"], props => props.heightTable ? typeof props.heightTable === 'string' ? props.heightTable : `${props.heightTable}px` : '50px', props => props.heightTable ? `${props.heightTable}px` : '50px');
12
+ })([".ui-rc-table-container{min-height:", ";}.ui-rc-toolbar-bottom{position:relative;padding:.25rem 1rem;&::before{content:\"\";position:absolute;border-left:1px solid #e0e0e0;height:100%;bottom:0;left:0;z-index:-1;}&::after{content:\"\";position:absolute;border-left:1px solid #e0e0e0;height:100%;bottom:0;visibility:visible;right:0;z-index:-1;}.toolbar-button{border-radius:0;.ant-btn{border-radius:0;}}}.ui-rc-pagination{border-bottom:1px solid #e0e0e0;border-top:1px solid #e0e0e0;margin:0;padding:.75rem 1rem;.ui-rc-pagination-total-text{order:2;margin-left:auto;}&::before{content:\"\";position:absolute;border-left:1px solid #e0e0e0;height:50px;bottom:0;left:0;z-index:-1;}&::after{content:\"\";position:absolute;border-left:1px solid #e0e0e0;height:50px;bottom:0;visibility:visible;right:0;z-index:-1;}&.pagination-template{position:relative;&::before{content:\"\";position:absolute;border-left:1px solid #e0e0e0;height:100%;bottom:0;left:0;z-index:-1;}&::after{content:\"\";position:absolute;border-left:1px solid #e0e0e0;height:100%;bottom:0;visibility:visible;right:0;z-index:-1;}}}.react-resizable{position:relative;background-clip:padding-box;}.rc-resizable-handle{position:absolute;right:0px;bottom:0;z-index:1;width:5px;height:100%;cursor:col-resize;&.none{cursor:auto;display:none;}}"], props => props.heightTable ? typeof props.heightTable === 'string' ? props.heightTable : `${props.heightTable}px` : undefined);
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import 'react-resizable/css/styles.css';
2
3
  import type { GridTableProps } from "./type";
3
4
  import 'dayjs/locale/es';
4
5
  import 'dayjs/locale/vi';
@@ -6,28 +6,27 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var _react = _interopRequireWildcard(require("react"));
10
- var _rcMasterUi = require("rc-master-ui");
11
- var _antd = require("antd");
12
- var _icons = require("@ant-design/icons");
9
+ var _react = _interopRequireDefault(require("react"));
13
10
  var _reactResizable = require("react-resizable");
11
+ require("react-resizable/css/styles.css");
14
12
  var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customParseFormat"));
15
13
  var _hooks = require("./hooks");
16
- var _becoxyIcons = require("becoxy-icons");
17
- var _useColumns = require("./hooks/useColumns");
18
14
  var _dayjs = _interopRequireDefault(require("dayjs"));
19
15
  require("dayjs/locale/es");
20
16
  require("dayjs/locale/vi");
17
+ var _GridEdit = _interopRequireDefault(require("./table/GridEdit"));
18
+ var _Grid = _interopRequireDefault(require("./table/Grid"));
21
19
  var _en_US = _interopRequireDefault(require("rc-master-ui/es/date-picker/locale/en_US"));
22
20
  var _vi_VN = _interopRequireDefault(require("rc-master-ui/es/date-picker/locale/vi_VN"));
21
+ var _useColumns = _interopRequireDefault(require("./hooks/useColumns"));
23
22
  require("./styles.scss");
24
- var _GridEdit = _interopRequireDefault(require("./table/GridEdit"));
25
- var _Grid = _interopRequireDefault(require("./table/Grid"));
26
- 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); }
27
- 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; }
28
- // import useMergedState from "rc-util/lib/hooks/useMergedState";
29
-
23
+ var _columns = require("./hooks/columns");
24
+ var _Group = _interopRequireDefault(require("./table/Group"));
30
25
  _dayjs.default.extend(_customParseFormat.default);
26
+
27
+ // const ASCEND = 'ascend';
28
+ // const DESCEND = 'descend';
29
+
31
30
  const ResizableTitle = props => {
32
31
  const {
33
32
  onResize,
@@ -44,7 +43,7 @@ const ResizableTitle = props => {
44
43
  width: width,
45
44
  height: 0,
46
45
  handle: /*#__PURE__*/_react.default.createElement("span", {
47
- className: "react-resizable-handle",
46
+ className: "rc-resizable-handle",
48
47
  onClick: e => {
49
48
  e.stopPropagation();
50
49
  }
@@ -59,6 +58,7 @@ const ResizableTitle = props => {
59
58
  const InternalTable = props => {
60
59
  const {
61
60
  t,
61
+ // columns,
62
62
  columns: propsColumns,
63
63
  lang,
64
64
  locale,
@@ -67,13 +67,24 @@ const InternalTable = props => {
67
67
  dataSourceFilter: propDataSourceFilter,
68
68
  onFilterClick,
69
69
  editAble,
70
- rowKey,
70
+ rowKey: propRowKey,
71
71
  format,
72
72
  onDataChange,
73
73
  sortMultiple,
74
- expandable,
74
+ // expandable,
75
+ // @ts-ignore
76
+ onCellPaste,
77
+ clickHeaderToSort = true,
78
+ components,
79
+ onChooseColumns,
80
+ groupAble,
81
+ groupSetting,
82
+ groupColumns,
75
83
  ...rest
76
84
  } = props;
85
+ const rowKey = _react.default.useMemo(() => {
86
+ return editAble ? 'rowId' : propRowKey ?? 'id';
87
+ }, [editAble, propRowKey]);
77
88
  const local = lang && lang === 'en' ? _en_US.default : _vi_VN.default;
78
89
  const buddhistLocale = {
79
90
  ...local,
@@ -81,157 +92,28 @@ const InternalTable = props => {
81
92
  ...local.lang
82
93
  }
83
94
  };
84
-
85
- // const [mergedColumns, setMergedColumns] = useMergedState(
86
- // propsColumns,
87
- // {
88
- // value: propsColumns,
89
- // },
90
- // );
91
-
92
- const tableRef = (0, _react.useRef)(null);
93
- const [data, setData] = (0, _react.useState)([]);
94
- const [columns, setColumns] = (0, _react.useState)([]);
95
- const [isManualUpdate, setIsManualUpdate] = (0, _react.useState)(false);
96
- // const [expandKeys, setExpandKeys] = useState<string[]>([]);
97
- const [dataSourceFilter, setDataSourceFilter] = (0, _react.useState)(propDataSourceFilter ?? []);
98
- (0, _react.useEffect)(() => {
99
- const rs = propsColumns && propsColumns.length > 0 ? [_rcMasterUi.Table.SELECTION_COLUMN, ...propsColumns] : [];
100
- // const rs = propsColumns ? [...propsColumns] : []
101
- setColumns(rs);
95
+ const mergerdData = _react.default.useMemo(() => {
96
+ return (0, _hooks.addRowIdArray)(dataSource);
97
+ }, [dataSource]);
98
+ const [columns, setColumns] = _react.default.useState([]);
99
+ const tableRef = _react.default.useRef(null);
100
+ _react.default.useEffect(() => {
101
+ setColumns(propsColumns);
102
102
  }, [propsColumns]);
103
- (0, _react.useEffect)(() => {
104
- if (!isManualUpdate) {
105
- setData(dataSource || []);
106
- }
107
- setIsManualUpdate(false);
108
- }, [dataSource, isManualUpdate]);
109
103
 
110
- // const [columns, setColumns] = useMergedState(
111
- // propsColumns ? [Table.SELECTION_COLUMN, ...propsColumns] : [],
112
- // {
113
- // value: propsColumns ? [Table.SELECTION_COLUMN, ...propsColumns] : [],
114
- // },
115
- // );
104
+ // const [data, setData] = useState<RecordType[]>([]);
116
105
 
117
- // ============================ RowKey ============================
118
- const getRowKey = _react.default.useMemo(() => {
119
- if (typeof rowKey === 'function') {
120
- return rowKey;
121
- }
122
- // @ts-ignore
123
- return record => record?.[rowKey];
124
- }, [rowKey]);
106
+ // const [isManualUpdate, setIsManualUpdate] = useState(false);
125
107
 
126
108
  // useEffect(() => {
127
- // const rrr = findAllChildrenKeys<any>(dataSource, getRowKey, 'children');
128
- // setExpandKeys(rrr as any)
129
- // }, [dataSource, getRowKey])
109
+ // if (!isManualUpdate) {
110
+ // const mergedData = addRowIdArray(dataSource)
111
+ //
112
+ // setData(mergedData || []);
113
+ // }
114
+ // setIsManualUpdate(false);
115
+ // }, [dataSource, isManualUpdate])
130
116
 
131
- const handleSearch = (selectedKeys, confirm) => {
132
- confirm();
133
- };
134
- const onFilterCallback = (key, filterDataCallback) => {
135
- const find = dataSourceFilter.find(it => it.key === key);
136
- if (find) {
137
- const newData = (0, _hooks.updateArrayByKey)(dataSourceFilter, {
138
- key,
139
- data: filterDataCallback
140
- }, 'key');
141
- setDataSourceFilter(newData);
142
- } else {
143
- const newData = [...dataSourceFilter, {
144
- key,
145
- data: filterDataCallback
146
- }];
147
- setDataSourceFilter(newData);
148
- }
149
- };
150
- const getColumnSearchProps = (0, _react.useCallback)(column => ({
151
- filterDropdown: ({
152
- setSelectedKeys,
153
- selectedKeys,
154
- confirm,
155
- // close,
156
- setOperatorKey,
157
- operatorKey,
158
- visible,
159
- searchValue,
160
- setSearchValue
161
- }) => {
162
- const type = (0, _hooks.getTypeFilter)(column);
163
- // const operatorOptions = !type || type === 'Text' ? stringOperator : numberOperator
164
- // const operatorOptions = type === 'Checkbox' || type === 'Dropdown' || type === 'DropTree' || ty
165
- const operatorOptions = type === ('Checkbox' || 'Dropdown' || 'DropTree' || 'CheckboxDropdown') ? _hooks.booleanOperator : !type || type === 'Text' ? _hooks.stringOperator : _hooks.numberOperator;
166
- return /*#__PURE__*/_react.default.createElement("div", {
167
- style: {
168
- padding: 8,
169
- minWidth: 275
170
- },
171
- onKeyDown: e => e.stopPropagation()
172
- }, column?.showOperator !== false && column?.typeFilter !== 'DateRange' && column?.typeFilter !== 'NumberRange' && /*#__PURE__*/_react.default.createElement("div", {
173
- className: 'mb-1'
174
- }, /*#__PURE__*/_react.default.createElement(_rcMasterUi.Select, {
175
- options: (0, _hooks.translateOption)(operatorOptions, t),
176
- style: {
177
- width: '100%',
178
- marginBottom: 8
179
- },
180
- value: operatorKey,
181
- onChange: val => {
182
- setOperatorKey(val);
183
- }
184
- })), /*#__PURE__*/_react.default.createElement("div", {
185
- style: {
186
- marginBottom: 8
187
- }
188
- }, (0, _useColumns.renderFilter)(column, selectedKeys, setSelectedKeys, confirm, visible, searchValue, setSearchValue, dataSourceFilter, buddhistLocale, locale, t)), /*#__PURE__*/_react.default.createElement(_antd.Space, {
189
- style: {
190
- justifyContent: 'end',
191
- width: '100%'
192
- }
193
- }, /*#__PURE__*/_react.default.createElement(_antd.Button, {
194
- type: "primary",
195
- onClick: () => {
196
- confirm({
197
- closeDropdown: false
198
- });
199
- handleSearch(selectedKeys, confirm);
200
- },
201
- icon: /*#__PURE__*/_react.default.createElement(_icons.SearchOutlined, null),
202
- size: "small",
203
- style: {
204
- width: 90
205
- }
206
- }, t ? t('Filter') : 'Filter'), /*#__PURE__*/_react.default.createElement(_antd.Button, {
207
- type: "link",
208
- size: "small",
209
- onClick: () => {
210
- // setSearchValue('')
211
- setSelectedKeys([]);
212
- confirm();
213
- // handleSearch()
214
- // close()
215
- }
216
- }, t ? t("Clear") : 'Clear')));
217
- },
218
- filterIcon: filtered => /*#__PURE__*/_react.default.createElement(_becoxyIcons.FilterFill, {
219
- fontSize: 12,
220
- onClick: () => {
221
- onFilterClick?.(column, onFilterCallback);
222
- },
223
- style: {
224
- color: filtered ? '#283046' : undefined
225
- }
226
- }),
227
- filterDropdownProps: {
228
- onOpenChange(open) {
229
- if (open) {
230
- // setTimeout(() => searchInput.current?.select(), 100)
231
- }
232
- }
233
- }
234
- }), [buddhistLocale, dataSourceFilter, onFilterCallback, onFilterClick, t]);
235
117
  const handleResize = column => (e, {
236
118
  size
237
119
  }) => {
@@ -242,123 +124,136 @@ const InternalTable = props => {
242
124
  const newColumns = (0, _hooks.updateArrayByKey)(columns, newColumn, 'field');
243
125
  setColumns(newColumns);
244
126
  };
245
- const convertColumns = (0, _useColumns.flatColumns2)(columns).map((column, colIndex) => {
246
- if (!column?.dataIndex && !column.key && !column.field) {
247
- return column;
248
- }
249
- const transformedColumn = {
250
- ...column,
251
- dataIndex: column.field ?? column.dataIndex,
252
- key: column.field ?? column.dataIndex ?? column.key,
253
- title: t ? t(column.headerText ?? column.title) : column.headerText ?? column.title,
254
- ellipsis: column.ellipsis !== false,
255
- align: column.textAlign ?? column.align,
256
- fixed: column.frozen ? column.frozen.toLowerCase() : column.fixed
257
- };
127
+ const [transformSelectionColumns] = (0, _useColumns.default)({
128
+ locale,
129
+ t,
130
+ buddhistLocale,
131
+ dataSourceFilter: propDataSourceFilter,
132
+ format,
133
+ sortMultiple,
134
+ groupAble,
135
+ groupSetting,
136
+ groupColumns,
137
+ handleResize
138
+ });
139
+ const mergedColumns = _react.default.useMemo(() => {
140
+ return transformSelectionColumns(columns);
141
+ }, [columns, transformSelectionColumns]);
258
142
 
259
- // @ts-ignore
260
- if (["index", "#"].includes(transformedColumn.dataIndex)) {
261
- return {
262
- ...transformedColumn,
263
- onCell: () => ({
264
- className: 'cell-number'
265
- }),
266
- render: (_, __, rowIndex) => rowIndex + 1
267
- };
268
- }
269
- if (column.field === 'command') {
270
- return {
271
- ...transformedColumn,
272
- onCell: () => ({
273
- className: column.field === 'command' ? "ui-rc-cell-command" : ''
274
- }),
275
- onHeaderCell: () => ({
276
- width: column.width,
277
- onResize: handleResize(column)
278
- })
279
- };
143
+ // ============================ RowKey ============================
144
+ const getRowKey = _react.default.useMemo(() => {
145
+ if (typeof rowKey === 'function') {
146
+ return rowKey;
280
147
  }
281
- return {
282
- ...(column.allowFiltering === false ? {} : {
283
- ...getColumnSearchProps(column)
284
- }),
285
- ...transformedColumn,
286
- onFilter: value => {
287
- return value;
288
- },
289
- sorter: column.sorter === false ? undefined : {
290
- compare: a => a,
291
- multiple: sortMultiple ? colIndex : undefined
292
- },
293
- onHeaderCell: () => ({
294
- width: column.width,
295
- onResize: handleResize(column)
296
- }),
297
- render: (value, record, rowIndex) => (0, _useColumns.renderContent)(column, value, record, rowIndex, format)
298
- };
299
- });
300
- const transformColumns = _react.default.useCallback(cols => {
301
148
  // @ts-ignore
302
- return cols.map(column => {
303
- const find = convertColumns.find(it => it.key === column.field);
304
- if (!column?.field && !column?.key) {
305
- return column;
306
- }
307
- if (find) {
308
- return {
309
- ...find
310
- };
311
- }
149
+ return record => record?.[rowKey];
150
+ }, [rowKey]);
312
151
 
313
- // Xử đệ quy cho children
314
- if (column.children?.length) {
315
- return {
316
- ...column,
317
- key: column.field ?? column.dataIndex ?? column.key,
318
- title: t ? t(column.headerText ?? column.title) : column.headerText ?? column.title,
319
- ellipsis: column.ellipsis !== false,
320
- align: column.textAlign ?? column.align,
321
- children: transformColumns(column.children)
322
- };
323
- }
324
- });
325
- }, [convertColumns]);
326
- const mergedColumns = _react.default.useMemo(() => {
327
- return transformColumns(columns);
328
- }, [transformColumns, columns]);
152
+ // const triggerChangeColumns = (newColumns: ColumnsTable<RecordType>) => {
329
153
  const triggerChangeColumns = newColumns => {
330
154
  setColumns(newColumns);
155
+ onChooseColumns?.({
156
+ showColumns: [],
157
+ columns: [],
158
+ flattenColumns: []
159
+ });
160
+ };
161
+ const triggerGroupColumns = groupedColumns => {
162
+ setColumns((0, _hooks.updateColumnsByGroup)(mergedColumns, groupedColumns));
163
+ if (groupSetting) {
164
+ if (groupSetting.client === false) {
165
+
166
+ // setIsTree(true)
167
+
168
+ // setGroupOpen([])
169
+
170
+ // const dt = ungroupArray(dataSource)
171
+
172
+ // const rs = groupArrayByColumns2(dt, [...value])
173
+
174
+ // setResource([...rs])
175
+
176
+ // if (groupSetting.onGroup) {
177
+ // groupSetting.onGroup({
178
+ // columnGrouped: value,
179
+ // columns: removeColumns(columns as any, value),
180
+ // flattenColumns: convertFlatColumn(removeColumns(columns as any, value)) as any
181
+ //
182
+ // })
183
+ // }
184
+ } else {
185
+ if (groupSetting.onGroup) {
186
+ groupSetting.onGroup({
187
+ columnGrouped: groupedColumns,
188
+ columns: (0, _hooks.removeColumns)(columns, groupedColumns),
189
+ flattenColumns: (0, _columns.flatColumns2)((0, _hooks.removeColumns)(columns, groupedColumns))
190
+ });
191
+ }
192
+ }
193
+ }
331
194
  };
332
195
  const triggerChangeData = newData => {
333
- setIsManualUpdate(true);
334
- setData(newData);
196
+ // setIsManualUpdate(true)
197
+ // setData(newData)
335
198
  // setMergedData(newData)
336
199
  onDataChange?.(newData);
337
200
  };
338
- const TableComponent = editAble ? _GridEdit.default : _Grid.default;
201
+ const triggerPaste = (pastedRows, pastedColumnsArray, newData) => {
202
+ const handlePasteCallback = callbackData => {
203
+ const newDataUpdate = (0, _hooks.updateData)(dataSource, callbackData, rowKey);
204
+ triggerChangeData(newDataUpdate);
205
+ onCellPaste?.dataChange?.(newDataUpdate);
206
+ };
207
+ if (onCellPaste && onCellPaste.onPasted) {
208
+ if (onCellPaste.onPasted.length > 1) {
209
+ onCellPaste.onPasted({
210
+ pasteData: pastedRows,
211
+ type: 'onPaste',
212
+ data: dataSource,
213
+ pastedColumns: pastedColumnsArray
214
+ }, handlePasteCallback);
215
+ } else {
216
+ onCellPaste.onPasted({
217
+ pasteData: pastedRows,
218
+ type: 'onPaste',
219
+ data: dataSource,
220
+ pastedColumns: pastedColumnsArray
221
+ }, handlePasteCallback);
222
+ triggerChangeData(newData);
223
+ onCellPaste.dataChange?.(newData);
224
+ }
225
+ }
226
+ };
227
+ const TableComponent = groupAble ? _Group.default : editAble ? _GridEdit.default : _Grid.default;
339
228
  return /*#__PURE__*/_react.default.createElement(TableComponent, (0, _extends2.default)({}, rest, {
340
229
  t: t,
341
230
  locale: locale,
342
231
  tableRef: tableRef,
343
- dataSource: data
344
- // mergedData={mergedData}
232
+ dataSource: mergerdData
233
+ // components={components}
345
234
  ,
346
235
  components: {
347
236
  header: {
348
237
  cell: allowResizing ? ResizableTitle : undefined
349
238
  }
350
239
  },
351
- format: format,
352
- columns: mergedColumns
353
- // defaultColumns={mergedColumns}
240
+ format: format
241
+ // columns={columns}
354
242
  ,
243
+ columns: mergedColumns,
355
244
  showSorterTooltip: {
356
245
  target: 'sorter-icon'
357
246
  },
358
247
  triggerChangeColumns: triggerChangeColumns,
359
248
  triggerChangeData: triggerChangeData,
249
+ triggerGroupColumns: triggerGroupColumns,
360
250
  rowKey: rowKey,
361
- getRowKey: getRowKey
251
+ getRowKey: getRowKey,
252
+ triggerPaste: triggerPaste,
253
+ clickHeaderToSort: clickHeaderToSort,
254
+ groupSetting: groupSetting,
255
+ groupAble: groupAble,
256
+ groupColumns: groupColumns
362
257
  }));
363
258
  };
364
259
  var _default = exports.default = InternalTable;