es-grid-template 1.2.0 → 1.2.1

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 (67) hide show
  1. package/assets/index.css +679 -0
  2. package/assets/index.scss +1006 -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.js +148 -248
  14. package/es/grid-component/TableGrid.d.ts +4 -1
  15. package/es/grid-component/TableGrid.js +29 -58
  16. package/es/grid-component/hooks/{useColumns → columns}/index.d.ts +2 -2
  17. package/es/grid-component/hooks/{useColumns → columns}/index.js +20 -16
  18. package/es/grid-component/hooks/content/HeaderContent.d.ts +11 -0
  19. package/es/grid-component/hooks/content/HeaderContent.js +80 -0
  20. package/es/grid-component/hooks/content/TooltipContent.d.ts +13 -0
  21. package/es/grid-component/hooks/content/TooltipContent.js +74 -0
  22. package/es/grid-component/hooks/useColumns.d.ts +16 -0
  23. package/es/grid-component/hooks/useColumns.js +272 -0
  24. package/es/grid-component/hooks/utils.d.ts +46 -1
  25. package/es/grid-component/hooks/utils.js +740 -2
  26. package/es/grid-component/index.js +3 -1
  27. package/es/grid-component/styles.scss +304 -64
  28. package/es/grid-component/table/Grid.d.ts +2 -0
  29. package/es/grid-component/table/Grid.js +1 -5
  30. package/es/grid-component/table/GridEdit.d.ts +4 -1
  31. package/es/grid-component/table/GridEdit.js +690 -281
  32. package/es/grid-component/table/Group.d.ts +13 -0
  33. package/es/grid-component/table/Group.js +154 -0
  34. package/es/grid-component/type.d.ts +38 -1
  35. package/lib/grid-component/ColumnsChoose.d.ts +1 -0
  36. package/lib/grid-component/ColumnsChoose.js +62 -27
  37. package/lib/grid-component/ColumnsGroup/ColumnsGroup.d.ts +12 -0
  38. package/lib/grid-component/ColumnsGroup/ColumnsGroup.js +234 -0
  39. package/lib/grid-component/ColumnsGroup/index.d.ts +1 -0
  40. package/lib/grid-component/ColumnsGroup/index.js +16 -0
  41. package/lib/grid-component/ConvertColumnTable.d.ts +7 -0
  42. package/lib/grid-component/ConvertColumnTable.js +152 -0
  43. package/lib/grid-component/EditableCell.js +1 -1
  44. package/lib/grid-component/GridStyle.js +1 -1
  45. package/lib/grid-component/InternalTable.js +142 -248
  46. package/lib/grid-component/TableGrid.d.ts +4 -1
  47. package/lib/grid-component/TableGrid.js +23 -56
  48. package/lib/grid-component/hooks/{useColumns → columns}/index.d.ts +2 -2
  49. package/lib/grid-component/hooks/{useColumns → columns}/index.js +20 -16
  50. package/lib/grid-component/hooks/content/HeaderContent.d.ts +11 -0
  51. package/lib/grid-component/hooks/content/HeaderContent.js +87 -0
  52. package/lib/grid-component/hooks/content/TooltipContent.d.ts +13 -0
  53. package/lib/grid-component/hooks/content/TooltipContent.js +81 -0
  54. package/lib/grid-component/hooks/useColumns.d.ts +16 -0
  55. package/lib/grid-component/hooks/useColumns.js +283 -0
  56. package/lib/grid-component/hooks/utils.d.ts +46 -1
  57. package/lib/grid-component/hooks/utils.js +763 -5
  58. package/lib/grid-component/index.js +2 -1
  59. package/lib/grid-component/styles.scss +304 -64
  60. package/lib/grid-component/table/Grid.d.ts +2 -0
  61. package/lib/grid-component/table/Grid.js +1 -5
  62. package/lib/grid-component/table/GridEdit.d.ts +4 -1
  63. package/lib/grid-component/table/GridEdit.js +689 -280
  64. package/lib/grid-component/table/Group.d.ts +13 -0
  65. package/lib/grid-component/table/Group.js +163 -0
  66. package/lib/grid-component/type.d.ts +38 -1
  67. package/package.json +106 -105
@@ -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;}.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` : undefined);
@@ -6,28 +6,26 @@ 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");
14
11
  var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customParseFormat"));
15
12
  var _hooks = require("./hooks");
16
- var _becoxyIcons = require("becoxy-icons");
17
- var _useColumns = require("./hooks/useColumns");
18
13
  var _dayjs = _interopRequireDefault(require("dayjs"));
19
14
  require("dayjs/locale/es");
20
15
  require("dayjs/locale/vi");
16
+ var _GridEdit = _interopRequireDefault(require("./table/GridEdit"));
17
+ var _Grid = _interopRequireDefault(require("./table/Grid"));
21
18
  var _en_US = _interopRequireDefault(require("rc-master-ui/es/date-picker/locale/en_US"));
22
19
  var _vi_VN = _interopRequireDefault(require("rc-master-ui/es/date-picker/locale/vi_VN"));
20
+ var _useColumns = _interopRequireDefault(require("./hooks/useColumns"));
23
21
  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
-
22
+ var _columns = require("./hooks/columns");
23
+ var _Group = _interopRequireDefault(require("./table/Group"));
30
24
  _dayjs.default.extend(_customParseFormat.default);
25
+
26
+ // const ASCEND = 'ascend';
27
+ // const DESCEND = 'descend';
28
+
31
29
  const ResizableTitle = props => {
32
30
  const {
33
31
  onResize,
@@ -59,6 +57,7 @@ const ResizableTitle = props => {
59
57
  const InternalTable = props => {
60
58
  const {
61
59
  t,
60
+ // columns,
62
61
  columns: propsColumns,
63
62
  lang,
64
63
  locale,
@@ -67,13 +66,24 @@ const InternalTable = props => {
67
66
  dataSourceFilter: propDataSourceFilter,
68
67
  onFilterClick,
69
68
  editAble,
70
- rowKey,
69
+ rowKey: propRowKey,
71
70
  format,
72
71
  onDataChange,
73
72
  sortMultiple,
74
- expandable,
73
+ // expandable,
74
+ // @ts-ignore
75
+ onCellPaste,
76
+ clickHeaderToSort = true,
77
+ components,
78
+ onChooseColumns,
79
+ groupAble,
80
+ groupSetting,
81
+ groupColumns,
75
82
  ...rest
76
83
  } = props;
84
+ const rowKey = _react.default.useMemo(() => {
85
+ return editAble ? 'rowId' : propRowKey ?? 'id';
86
+ }, [editAble, propRowKey]);
77
87
  const local = lang && lang === 'en' ? _en_US.default : _vi_VN.default;
78
88
  const buddhistLocale = {
79
89
  ...local,
@@ -81,157 +91,28 @@ const InternalTable = props => {
81
91
  ...local.lang
82
92
  }
83
93
  };
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);
94
+ const mergerdData = _react.default.useMemo(() => {
95
+ return (0, _hooks.addRowIdArray)(dataSource);
96
+ }, [dataSource]);
97
+ const [columns, setColumns] = _react.default.useState([]);
98
+ const tableRef = _react.default.useRef(null);
99
+ _react.default.useEffect(() => {
100
+ setColumns(propsColumns);
102
101
  }, [propsColumns]);
103
- (0, _react.useEffect)(() => {
104
- if (!isManualUpdate) {
105
- setData(dataSource || []);
106
- }
107
- setIsManualUpdate(false);
108
- }, [dataSource, isManualUpdate]);
109
102
 
110
- // const [columns, setColumns] = useMergedState(
111
- // propsColumns ? [Table.SELECTION_COLUMN, ...propsColumns] : [],
112
- // {
113
- // value: propsColumns ? [Table.SELECTION_COLUMN, ...propsColumns] : [],
114
- // },
115
- // );
103
+ // const [data, setData] = useState<RecordType[]>([]);
116
104
 
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]);
105
+ // const [isManualUpdate, setIsManualUpdate] = useState(false);
125
106
 
126
107
  // useEffect(() => {
127
- // const rrr = findAllChildrenKeys<any>(dataSource, getRowKey, 'children');
128
- // setExpandKeys(rrr as any)
129
- // }, [dataSource, getRowKey])
108
+ // if (!isManualUpdate) {
109
+ // const mergedData = addRowIdArray(dataSource)
110
+ //
111
+ // setData(mergedData || []);
112
+ // }
113
+ // setIsManualUpdate(false);
114
+ // }, [dataSource, isManualUpdate])
130
115
 
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
116
  const handleResize = column => (e, {
236
117
  size
237
118
  }) => {
@@ -242,123 +123,136 @@ const InternalTable = props => {
242
123
  const newColumns = (0, _hooks.updateArrayByKey)(columns, newColumn, 'field');
243
124
  setColumns(newColumns);
244
125
  };
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
- };
126
+ const [transformSelectionColumns] = (0, _useColumns.default)({
127
+ locale,
128
+ t,
129
+ buddhistLocale,
130
+ dataSourceFilter: propDataSourceFilter,
131
+ format,
132
+ sortMultiple,
133
+ groupAble,
134
+ groupSetting,
135
+ groupColumns,
136
+ handleResize
137
+ });
138
+ const mergedColumns = _react.default.useMemo(() => {
139
+ return transformSelectionColumns(columns);
140
+ }, [columns, transformSelectionColumns]);
258
141
 
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
- };
142
+ // ============================ RowKey ============================
143
+ const getRowKey = _react.default.useMemo(() => {
144
+ if (typeof rowKey === 'function') {
145
+ return rowKey;
280
146
  }
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
147
  // @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
- }
148
+ return record => record?.[rowKey];
149
+ }, [rowKey]);
312
150
 
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]);
151
+ // const triggerChangeColumns = (newColumns: ColumnsTable<RecordType>) => {
329
152
  const triggerChangeColumns = newColumns => {
330
153
  setColumns(newColumns);
154
+ onChooseColumns?.({
155
+ showColumns: [],
156
+ columns: [],
157
+ flattenColumns: []
158
+ });
159
+ };
160
+ const triggerGroupColumns = groupedColumns => {
161
+ setColumns((0, _hooks.updateColumnsByGroup)(mergedColumns, groupedColumns));
162
+ if (groupSetting) {
163
+ if (groupSetting.client === false) {
164
+
165
+ // setIsTree(true)
166
+
167
+ // setGroupOpen([])
168
+
169
+ // const dt = ungroupArray(dataSource)
170
+
171
+ // const rs = groupArrayByColumns2(dt, [...value])
172
+
173
+ // setResource([...rs])
174
+
175
+ // if (groupSetting.onGroup) {
176
+ // groupSetting.onGroup({
177
+ // columnGrouped: value,
178
+ // columns: removeColumns(columns as any, value),
179
+ // flattenColumns: convertFlatColumn(removeColumns(columns as any, value)) as any
180
+ //
181
+ // })
182
+ // }
183
+ } else {
184
+ if (groupSetting.onGroup) {
185
+ groupSetting.onGroup({
186
+ columnGrouped: groupedColumns,
187
+ columns: (0, _hooks.removeColumns)(columns, groupedColumns),
188
+ flattenColumns: (0, _columns.flatColumns2)((0, _hooks.removeColumns)(columns, groupedColumns))
189
+ });
190
+ }
191
+ }
192
+ }
331
193
  };
332
194
  const triggerChangeData = newData => {
333
- setIsManualUpdate(true);
334
- setData(newData);
195
+ // setIsManualUpdate(true)
196
+ // setData(newData)
335
197
  // setMergedData(newData)
336
198
  onDataChange?.(newData);
337
199
  };
338
- const TableComponent = editAble ? _GridEdit.default : _Grid.default;
200
+ const triggerPaste = (pastedRows, pastedColumnsArray, newData) => {
201
+ const handlePasteCallback = callbackData => {
202
+ const newDataUpdate = (0, _hooks.updateData)(dataSource, callbackData, rowKey);
203
+ triggerChangeData(newDataUpdate);
204
+ onCellPaste?.dataChange?.(newDataUpdate);
205
+ };
206
+ if (onCellPaste && onCellPaste.onPasted) {
207
+ if (onCellPaste.onPasted.length > 1) {
208
+ onCellPaste.onPasted({
209
+ pasteData: pastedRows,
210
+ type: 'onPaste',
211
+ data: dataSource,
212
+ pastedColumns: pastedColumnsArray
213
+ }, handlePasteCallback);
214
+ } else {
215
+ onCellPaste.onPasted({
216
+ pasteData: pastedRows,
217
+ type: 'onPaste',
218
+ data: dataSource,
219
+ pastedColumns: pastedColumnsArray
220
+ }, handlePasteCallback);
221
+ triggerChangeData(newData);
222
+ onCellPaste.dataChange?.(newData);
223
+ }
224
+ }
225
+ };
226
+ const TableComponent = groupAble ? _Group.default : editAble ? _GridEdit.default : _Grid.default;
339
227
  return /*#__PURE__*/_react.default.createElement(TableComponent, (0, _extends2.default)({}, rest, {
340
228
  t: t,
341
229
  locale: locale,
342
230
  tableRef: tableRef,
343
- dataSource: data
344
- // mergedData={mergedData}
231
+ dataSource: mergerdData
232
+ // components={components}
345
233
  ,
346
234
  components: {
347
235
  header: {
348
236
  cell: allowResizing ? ResizableTitle : undefined
349
237
  }
350
238
  },
351
- format: format,
352
- columns: mergedColumns
353
- // defaultColumns={mergedColumns}
239
+ format: format
240
+ // columns={columns}
354
241
  ,
242
+ columns: mergedColumns,
355
243
  showSorterTooltip: {
356
244
  target: 'sorter-icon'
357
245
  },
358
246
  triggerChangeColumns: triggerChangeColumns,
359
247
  triggerChangeData: triggerChangeData,
248
+ triggerGroupColumns: triggerGroupColumns,
360
249
  rowKey: rowKey,
361
- getRowKey: getRowKey
250
+ getRowKey: getRowKey,
251
+ triggerPaste: triggerPaste,
252
+ clickHeaderToSort: clickHeaderToSort,
253
+ groupSetting: groupSetting,
254
+ groupAble: groupAble,
255
+ groupColumns: groupColumns
362
256
  }));
363
257
  };
364
258
  var _default = exports.default = InternalTable;
@@ -5,9 +5,12 @@ import type { ColumnsTable, GetRowKey, GridTableProps } from "./type";
5
5
  type GridProps<T> = GridTableProps<T> & {
6
6
  triggerChangeColumns?: (columns: ColumnsTable<T>, type: string) => void;
7
7
  triggerChangeData?: (newData: T[], type: string) => void;
8
+ triggerGroupColumns?: (groupedColumns: string[]) => void;
8
9
  tableRef: any;
9
10
  bottomToolbar?: () => React.ReactElement;
10
- getRowKey?: GetRowKey<T>;
11
+ getRowKey: GetRowKey<T>;
12
+ rowSelection?: any;
13
+ groupToolbar?: () => React.ReactNode;
11
14
  };
12
15
  declare const TableGrid: <RecordType extends object>(props: GridProps<RecordType>) => React.JSX.Element;
13
16
  export default TableGrid;