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,13 @@
1
+ import React from 'react';
2
+ import type { ColumnsTable, GridTableProps } from "../type";
3
+ import type { GetRowKey } from "../type";
4
+ type Props<T> = GridTableProps<T> & {
5
+ tableRef: any;
6
+ triggerChangeColumns?: (columns: ColumnsTable<T>, type: string) => void;
7
+ triggerChangeData?: (newData: T[], type: string) => void;
8
+ getRowKey: GetRowKey<T>;
9
+ triggerGroupColumns?: (groupedColumns: string[]) => void;
10
+ triggerPaste?: (pastedRows: T[], pastedColumnsArray: string[], newData: T[]) => void;
11
+ };
12
+ declare const Group: <RecordType extends object>(props: Props<RecordType>) => React.JSX.Element;
13
+ export default Group;
@@ -0,0 +1,154 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import React, { Fragment } from 'react';
3
+ import { GridStyle } from "../GridStyle";
4
+ import TableGrid from "../TableGrid";
5
+ // import type {ColumnsTable} from "../type";
6
+
7
+ import { findAllChildrenKeys } from "../hooks";
8
+ import { ColumnsGroup } from "../ColumnsGroup/ColumnsGroup";
9
+ import { flatColumns2 } from "../hooks/columns";
10
+ import { Collapse2, Expand2 } from "becoxy-icons";
11
+ const Group = props => {
12
+ const {
13
+ t,
14
+ columns,
15
+ height,
16
+ style,
17
+ rowHoverable,
18
+ groupAble,
19
+ expandable,
20
+ dataSource,
21
+ getRowKey,
22
+ groupSetting,
23
+ groupColumns,
24
+ triggerGroupColumns,
25
+ ...rest
26
+ } = props;
27
+ const {
28
+ defaultExpandedRowKeys,
29
+ defaultExpandAllRows
30
+ } = expandable || {};
31
+ const childrenColumnName = 'children';
32
+ const [innerExpandedKeys, setInnerExpandedKeys] = React.useState(() => {
33
+ if (defaultExpandedRowKeys) {
34
+ return defaultExpandedRowKeys;
35
+ }
36
+ if (defaultExpandAllRows) {
37
+ return findAllChildrenKeys(dataSource, getRowKey, childrenColumnName) ?? [];
38
+ }
39
+ return [];
40
+ });
41
+ const mergedExpandedKeys = React.useMemo(() => new Set(innerExpandedKeys || []), [innerExpandedKeys]);
42
+ const onTriggerExpand = React.useCallback(record => {
43
+ const key = getRowKey(record, dataSource.indexOf(record));
44
+ let newExpandedKeys;
45
+ const hasKey = mergedExpandedKeys.has(key);
46
+ if (hasKey) {
47
+ mergedExpandedKeys.delete(key);
48
+ newExpandedKeys = [...mergedExpandedKeys];
49
+ } else {
50
+ newExpandedKeys = [...mergedExpandedKeys, key];
51
+ }
52
+ setInnerExpandedKeys(newExpandedKeys);
53
+ }, [getRowKey, mergedExpandedKeys, dataSource]);
54
+ const handleExpandAllGroup = () => {
55
+ setInnerExpandedKeys(findAllChildrenKeys(dataSource, getRowKey, childrenColumnName) ?? []);
56
+ };
57
+ const handleCollapseAllGroup = () => {
58
+ setInnerExpandedKeys([]);
59
+ };
60
+ const handleOnGroup = value => {
61
+ triggerGroupColumns?.(value);
62
+ };
63
+ const groupToolbar = () => {
64
+ return /*#__PURE__*/React.createElement("div", {
65
+ style: {
66
+ display: 'flex',
67
+ gap: '10px',
68
+ marginRight: 10
69
+ }
70
+ }, /*#__PURE__*/React.createElement(ColumnsGroup, {
71
+ t: t
72
+ // defaultGroupColumns={['name']}
73
+ ,
74
+ unClearableLevel: groupSetting?.unClearableLevel
75
+ // unClearableLevel={2}
76
+ ,
77
+ columns: columns ? flatColumns2(columns) : [],
78
+ columnsGrouped: groupColumns,
79
+ onSubmit: handleOnGroup
80
+ }), /*#__PURE__*/React.createElement(Fragment, null, innerExpandedKeys.length > 0 ? /*#__PURE__*/React.createElement(Collapse2, {
81
+ fontSize: 18,
82
+ color: '#555555',
83
+ onClick: handleCollapseAllGroup
84
+ }) : /*#__PURE__*/React.createElement(Expand2, {
85
+ fontSize: 18,
86
+ color: '#555555',
87
+ onClick: handleExpandAllGroup
88
+ })));
89
+ };
90
+ return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(GridStyle, {
91
+ heightTable: height,
92
+ style: {
93
+ position: 'relative'
94
+ }
95
+ }, /*#__PURE__*/React.createElement(TableGrid, _extends({}, rest, {
96
+ t: t,
97
+ columns: columns,
98
+ style: {
99
+ ...style,
100
+ minHeight: height
101
+ },
102
+ rowHoverable: rowHoverable ?? true,
103
+ dataSource: dataSource,
104
+ getRowKey: getRowKey,
105
+ groupAble: groupAble,
106
+ groupSetting: groupSetting,
107
+ expandable: {
108
+ expandIconColumnIndex: 3,
109
+ defaultExpandAllRows: true,
110
+ indentSize: 25,
111
+ expandIcon: args => {
112
+ const {
113
+ record,
114
+ expanded,
115
+ onExpand
116
+ } = args;
117
+
118
+ // @ts-ignore
119
+ if (record?.children?.length > 0 || record?.isChildren) {
120
+ return expanded ? /*#__PURE__*/React.createElement("button", {
121
+ onClick: e => {
122
+ e.preventDefault();
123
+ e.stopPropagation();
124
+ onExpand(record, e);
125
+ if (groupAble) {
126
+ onTriggerExpand(record);
127
+ }
128
+ },
129
+ className: 'ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-expanded'
130
+ }) : /*#__PURE__*/React.createElement("button", {
131
+ onClick: e => {
132
+ e.preventDefault();
133
+ e.stopPropagation();
134
+ onExpand(record, e);
135
+ if (groupAble) {
136
+ onTriggerExpand(record);
137
+ }
138
+ },
139
+ className: 'ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-collapsed'
140
+ });
141
+ } else {
142
+ return /*#__PURE__*/React.createElement("button", {
143
+ className: 'ui-rc-table-row-expand-icon ui-rc-table-row-expand-icon-spaced'
144
+ });
145
+ }
146
+ },
147
+ expandedRowKeys: groupAble ? innerExpandedKeys : undefined,
148
+ ...expandable
149
+ },
150
+ groupToolbar: groupToolbar,
151
+ groupColumns: groupColumns
152
+ }))));
153
+ };
154
+ export default Group;
@@ -84,6 +84,7 @@ export type ToolbarClick = {
84
84
  };
85
85
  export type ColumnType<RecordType> = Omit<RcColumnType<RecordType>, 'headerTemplate'> & {
86
86
  field?: string;
87
+ key?: any;
87
88
  type?: IColumnType;
88
89
  isSummary?: boolean;
89
90
  summaryTemplate?: (data: number, key: string) => ReactElement | ReactNode;
@@ -96,8 +97,11 @@ export type ColumnType<RecordType> = Omit<RcColumnType<RecordType>, 'headerTempl
96
97
  placeholder?: string;
97
98
  showInColumnChoose?: boolean;
98
99
  typeFilter?: TypeFilter;
100
+ source?: any[];
99
101
  showFilterSearch?: boolean;
100
102
  headerText?: string;
103
+ headerTooltip?: boolean | string | (() => ReactNode | ReactElement);
104
+ columnGroupText?: string;
101
105
  textAlign?: ITextAlign;
102
106
  frozen?: Frozen;
103
107
  template?: ReactNode | ReactElement | ((value: any, record: RecordType, index: number) => ReactNode | ReactElement);
@@ -107,7 +111,7 @@ export type ColumnType<RecordType> = Omit<RcColumnType<RecordType>, 'headerTempl
107
111
  commandItems?: CommandItem[];
108
112
  children?: ColumnType<RecordType>[];
109
113
  };
110
- export type ColumnEditType<RecordType> = Omit<ColumnType<RecordType>, 'children'> & {
114
+ export type ColumnEditType<RecordType = AnyObject> = Omit<ColumnType<RecordType>, 'children'> & {
111
115
  editType?: EditType | ((rowData?: RecordType) => EditType);
112
116
  disable?: boolean | ((rowData: any) => boolean);
113
117
  isClearable?: boolean;
@@ -126,6 +130,11 @@ export type ColumnTable<RecordType = AnyObject> = ColumnEditType<RecordType> | C
126
130
  export type ColumnsTable<RecordType = AnyObject> = (ColumnType<RecordType> | ColumnEditType<RecordType>)[];
127
131
  export interface TableProps<RecordType> extends Omit<RcTableProps<RecordType>, 'columns' | 'rowSelection' | 'loading' | 'dataSource' | 'summary'> {
128
132
  editAble?: boolean;
133
+ groupAble?: boolean;
134
+ groupColumns?: string[];
135
+ groupSetting?: IGroupSetting;
136
+ onChooseColumns?: (props: IOnChooseColumns) => void;
137
+ showCustomTooltip?: boolean;
129
138
  sortMultiple?: boolean;
130
139
  dataSource: RecordType[];
131
140
  columns: ColumnsTable<RecordType>;
@@ -167,13 +176,24 @@ export interface TableProps<RecordType> extends Omit<RcTableProps<RecordType>, '
167
176
  allowResizing?: boolean;
168
177
  showToolbar?: boolean;
169
178
  onDataChange?: (data: RecordType[]) => void;
179
+ defaultValue?: AnyObject | (() => AnyObject);
170
180
  summary?: boolean | ((data: readonly RecordType[]) => React.ReactNode);
171
181
  }
172
182
  export interface TableEditProps<RecordType = AnyObject> extends Omit<TableProps<RecordType>, 'columns'> {
173
183
  columns: ColumnsTable<RecordType>;
174
184
  onCellPaste?: ICellPasteModel<RecordType>;
175
185
  onCellChange?: (args: CellChangeArgs<RecordType>, handleCallback: (rowData: any, index: any, value?: any) => void) => void;
186
+ onCellClick?: (args: ICellClick, callback?: any) => void;
176
187
  }
188
+ export type ICellClick = {
189
+ index: number;
190
+ indexCol?: number;
191
+ rowId: string | number;
192
+ type: 'Editing' | 'Default';
193
+ field: string;
194
+ cellValue: any;
195
+ rowData: any;
196
+ };
177
197
  export type GridTableProps<RecordType = AnyObject> = TableProps<RecordType> | TableEditProps<RecordType>;
178
198
  export interface CommandItem {
179
199
  id: string;
@@ -187,6 +207,22 @@ export interface CommandItem {
187
207
  client?: boolean;
188
208
  confirmDialog?: boolean;
189
209
  }
210
+ export type IGroupSetting = {
211
+ client?: boolean;
212
+ onGroup?: (props: IOnGroup) => void;
213
+ hiddenColumnGroup?: boolean;
214
+ unClearableLevel?: 1 | 2 | 3 | undefined;
215
+ };
216
+ type IOnGroup = {
217
+ columnGrouped: string[];
218
+ columns: ColumnsTable;
219
+ flattenColumns: ColumnsTable;
220
+ };
221
+ export type IOnChooseColumns = {
222
+ columns: ColumnsTable;
223
+ showColumns: ColumnsTable;
224
+ flattenColumns: ColumnsTable;
225
+ };
190
226
  export type CellChangeArgs<T> = {
191
227
  type: 'onPaste' | 'onChange' | 'onCellPaste';
192
228
  value: any;
@@ -250,3 +286,4 @@ export type IFormat = {
250
286
  };
251
287
  export type GetRowKey<RecordType> = (record: RecordType, index?: number) => Key;
252
288
  export type Presets = Required<ColorPickerProps>['presets'][number];
289
+ export {};
@@ -2,6 +2,7 @@ import React from "react";
2
2
  import type { ColumnsTable } from "./type";
3
3
  export type IColumnsChoose<RecordType> = {
4
4
  columns: ColumnsTable<RecordType>;
5
+ columnsGroup?: string[];
5
6
  triggerChangeColumns?: (columns: ColumnsTable<RecordType>, type: string) => void;
6
7
  t?: any;
7
8
  };
@@ -12,6 +12,7 @@ var _icons = require("@ant-design/icons");
12
12
  var _hooks = require("./hooks");
13
13
  var _tree = _interopRequireDefault(require("rc-master-ui/es/tree"));
14
14
  var _SearchOutlined = _interopRequireDefault(require("@ant-design/icons/SearchOutlined"));
15
+ var _useMergedState = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
15
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); }
16
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; }
17
18
  // import type {TableColumnsType} from "rc-master-ui";
@@ -24,7 +25,8 @@ const ColumnsChoose = props => {
24
25
  const {
25
26
  columns: propsColumns,
26
27
  triggerChangeColumns,
27
- t
28
+ t,
29
+ columnsGroup
28
30
  } = props;
29
31
 
30
32
  // const dataList: { key: React.Key; title: string }[] = [];
@@ -37,8 +39,10 @@ const ColumnsChoose = props => {
37
39
  // const searchRef: any = useRef()
38
40
 
39
41
  // const [columns, setColumns] = useState<TableColumnsType>([])
40
- const [selectedKeys, setSelectedKeys] = (0, _react.useState)([]);
41
- const [isManualUpdate, setIsManualUpdate] = (0, _react.useState)(false);
42
+
43
+ // const [selectedKeys, setSelectedKeys] = useState<string[]>([]);
44
+
45
+ // const [isManualUpdate, setIsManualUpdate] = useState(false);
42
46
 
43
47
  // useEffect(() => {
44
48
  //
@@ -48,24 +52,42 @@ const ColumnsChoose = props => {
48
52
  // }, [propsColumns])
49
53
 
50
54
  const columns = (0, _react.useMemo)(() => {
51
- return propsColumns.filter(it => it.key || it.dataIndex && it.showInColumnChoose !== false);
55
+ // return propsColumns.filter((it) => (it.key || it.dataIndex) && it.showInColumnChoose !== false && !columnsGroup?.includes(it.field as string))
56
+ return propsColumns.filter(it => (it.key || it.dataIndex) && it.showInColumnChoose !== false);
52
57
  // setColumns(defaultColumns as TableColumnsType)
53
- }, [propsColumns]);
54
- (0, _react.useEffect)(() => {
55
- const defaultColumns = propsColumns.filter(it => it.key || it.dataIndex && it.showInColumnChoose !== false);
56
- const defaultSelectedKeys = (0, _hooks.getVisibleColumnKeys)(defaultColumns);
57
- if (!isManualUpdate) {
58
- setSelectedKeys(defaultSelectedKeys);
59
- }
60
- setIsManualUpdate(false);
61
- }, [propsColumns]);
62
- const defaultSelectedKeys = (0, _react.useMemo)(() => {
63
- return (0, _hooks.getVisibleColumnKeys)(propsColumns);
64
- }, [propsColumns]);
58
+ }, [columnsGroup, propsColumns]);
59
+
60
+ // useEffect(() => {
61
+ //
62
+ // const defaultColumns = propsColumns.filter((it) => it.key || it.dataIndex && it.showInColumnChoose !== false)
63
+ //
64
+ // const defaultSelectedKeys = getVisibleColumnKeys(defaultColumns)
65
+ //
66
+ // if (!isManualUpdate) {
67
+ // setSelectedKeys(defaultSelectedKeys)
68
+ // }
69
+ // setIsManualUpdate(false);
70
+ //
71
+ //
72
+ // }, [isManualUpdate, propsColumns])
73
+
74
+ const defaultSelectedKeys = _react.default.useMemo(() => {
75
+ const rs = propsColumns.filter(it => (it.key || it.dataIndex) && it.showInColumnChoose !== false && !columnsGroup?.includes(it.field));
76
+ return (0, _hooks.getVisibleColumnKeys)(rs);
77
+ }, [columnsGroup, propsColumns]);
78
+ const [mergedSelectedKeys, setMergedSelectedKeys] = (0, _useMergedState.default)(defaultSelectedKeys || [], {
79
+ value: defaultSelectedKeys
80
+ });
81
+
82
+ //
83
+ // const defaultSelectedKeys = useMemo(() => {
84
+ //
85
+ // return getVisibleColumnKeys(propsColumns)
86
+ //
87
+ // }, [propsColumns])
88
+
65
89
  const [clicked, setClicked] = (0, _react.useState)(false);
66
90
  const [autoExpandParent, setAutoExpandParent] = (0, _react.useState)(true);
67
- // const [expandedKeys, setExpandedKeys] = useState<React.Key[]>([]);
68
- // const [searchValue, setSearchValue] = useState('');
69
91
 
70
92
  // const treeData = useMemo(() => {
71
93
  // const loop = (data: TreeDataNode[]): TreeDataNode[] =>
@@ -141,16 +163,19 @@ const ColumnsChoose = props => {
141
163
  setAutoExpandParent(true);
142
164
  };
143
165
  const onCheck = keys => {
144
- setSelectedKeys(keys);
145
- setIsManualUpdate(true);
166
+ console.log('keys', keys);
167
+ // setSelectedKeys(keys)
168
+ setMergedSelectedKeys(keys);
169
+ // setIsManualUpdate(true)
146
170
  };
147
171
  const handleAccept = () => {
148
- const rs1 = (0, _hooks.updateColumns)(propsColumns, selectedKeys);
172
+ // const rs1 = updateColumns(propsColumns, selectedKeys)
173
+ const rs1 = (0, _hooks.updateColumns)(propsColumns, mergedSelectedKeys);
149
174
  triggerChangeColumns?.(rs1, 'columnChoose');
150
175
  hide();
151
176
  };
152
177
  const handleCancel = () => {
153
- setSelectedKeys(defaultSelectedKeys);
178
+ // setSelectedKeys(defaultSelectedKeys)
154
179
  hide();
155
180
  };
156
181
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.Popover, {
@@ -197,12 +222,15 @@ const ColumnsChoose = props => {
197
222
  // }}
198
223
  ,
199
224
  onCheck: keys => onCheck(keys),
200
- multiple: true,
201
- checkedKeys: selectedKeys,
202
- defaultCheckedKeys: selectedKeys
225
+ multiple: true
226
+ // checkedKeys={selectedKeys}
227
+ ,
228
+
229
+ defaultCheckedKeys: mergedSelectedKeys
203
230
  // defaultCheckedKeys={defaultSelectedKeys}
231
+ // selectedKeys={[]}
204
232
  ,
205
- selectedKeys: [],
233
+
206
234
  height: window.innerHeight - 200
207
235
  }), /*#__PURE__*/_react.default.createElement(BoxAction, {
208
236
  className: 'px-1'
@@ -224,6 +252,13 @@ const ColumnsChoose = props => {
224
252
  }, /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
225
253
  arrow: false,
226
254
  title: 'Cài đặt'
227
- }, /*#__PURE__*/_react.default.createElement(_icons.SettingOutlined, null))));
255
+ }, /*#__PURE__*/_react.default.createElement(_icons.SettingOutlined, {
256
+ size: 16,
257
+ color: '#555555',
258
+ style: {
259
+ fontSize: 16,
260
+ color: '#555555'
261
+ }
262
+ }))));
228
263
  };
229
264
  exports.ColumnsChoose = ColumnsChoose;
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ type IColumnsGroup = {
3
+ columns: any[];
4
+ dataSource?: string[];
5
+ onSubmit: (value: any) => void;
6
+ t?: any;
7
+ columnsGrouped?: string[];
8
+ unClearableLevel?: number;
9
+ defaultGroupColumns?: string[];
10
+ };
11
+ export declare const ColumnsGroup: (props: IColumnsGroup) => React.JSX.Element;
12
+ export {};
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ColumnsGroup = void 0;
8
+ var _becoxyIcons = require("becoxy-icons");
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _antd = require("antd");
11
+ var _rcMasterUi = require("rc-master-ui");
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+ 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); }
14
+ 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; }
15
+ // import {
16
+ // // groupArrayByColumns,
17
+ // // ungroupArray,
18
+ // // useOnClickOutside
19
+ // } from "../../hooks"
20
+
21
+ // import {SettingOutlined} from "@ant-design/icons";
22
+
23
+ const BoxAction = _styledComponents.default.div.withConfig({
24
+ displayName: "BoxAction",
25
+ componentId: "es-grid-template__sc-1uj3tyy-0"
26
+ })(["border-top:1px solid #c4c4c4;padding-top:.75rem;display:flex;justify-content:end;gap:10px;.btn-action{background:none !important;border:none !important;&.btn-action-submit{color:#df4318;&:disabled{background-color:#f0f0f0 !important;}&:hover{color:#df4318 !important;}}&:hover{background-color:#f0f0f0 !important;}}"]);
27
+ const ColumnsGroup = props => {
28
+ const {
29
+ columns,
30
+ columnsGrouped,
31
+ onSubmit,
32
+ unClearableLevel,
33
+ defaultGroupColumns,
34
+ t
35
+ } = props;
36
+ const menuRef = (0, _react.useRef)();
37
+ const [tempGroup, setTempGroup] = (0, _react.useState)([]);
38
+ const [clicked, setClicked] = (0, _react.useState)(false);
39
+ const rsCol = _react.default.useMemo(() => {
40
+ return columns.filter(it => it.hidden !== true && !tempGroup.includes(it.field));
41
+ }, [columns, tempGroup]);
42
+ const options = _react.default.useMemo(() => {
43
+ return rsCol.map(it => ({
44
+ ...it,
45
+ value: it.field,
46
+ label: t ? t(it.columnGroupText ?? it.headerText ?? it.title) : it.columnGroupText ?? it.headerText ?? it.title
47
+ }));
48
+ }, [rsCol, t]);
49
+
50
+ // React.useEffect(() => {
51
+ // if(columnsGrouped) {
52
+ // setTempGroup([...columnsGrouped])
53
+ // }
54
+ //
55
+ // }, [!!columnsGrouped])
56
+
57
+ const onChangeGroupColumns = (option, index) => {
58
+ // if (option) {
59
+ // tempGroup[index] = option
60
+ // } else {
61
+ // tempGroup.splice(index, 1)
62
+ // }
63
+ // setTempGroup([...tempGroup])
64
+
65
+ const cloneTemp = [...tempGroup];
66
+ if (option) {
67
+ cloneTemp[index] = option;
68
+ } else {
69
+ cloneTemp.splice(index, 1);
70
+ }
71
+ setTempGroup([...cloneTemp]);
72
+ };
73
+ const handleGroup = () => {
74
+ // setColumnsGrouped([...tempGroup])
75
+ setClicked(false);
76
+ // const dt = ungroupArray(dataSource)
77
+
78
+ // const rs = groupArrayByColumns(dt, [...tempGroup])
79
+
80
+ // setResource([...rs])
81
+ onSubmit([...tempGroup]);
82
+ };
83
+ const handleClear = () => {
84
+ // setColumnsGrouped([])
85
+ setTempGroup(defaultGroupColumns ? defaultGroupColumns : []);
86
+ // setIsOpen(false)
87
+ setClicked(false);
88
+ // const dt = ungroupArray(dataSource)
89
+
90
+ // const rs = groupArrayByColumns(dt, [])
91
+
92
+ // setResource([...rs])
93
+ onSubmit(defaultGroupColumns ? defaultGroupColumns : []);
94
+ };
95
+ const handleClickChange = open => {
96
+ console.log('open', open);
97
+ setClicked(open);
98
+ if (open) {
99
+ if (columnsGrouped) {
100
+ setTempGroup([...columnsGrouped]);
101
+ }
102
+ }
103
+ if (!open) {
104
+ setTempGroup([]);
105
+ }
106
+ };
107
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.Popover, {
108
+ placement: 'bottomLeft',
109
+ content: /*#__PURE__*/_react.default.createElement("div", {
110
+ style: {
111
+ minWidth: 250
112
+ }
113
+ }, /*#__PURE__*/_react.default.createElement("div", {
114
+ ref: menuRef,
115
+ style: {
116
+ position: 'relative'
117
+ }
118
+ }, /*#__PURE__*/_react.default.createElement("p", {
119
+ className: 'fw-bold'
120
+ }, "Nh\xF3m d\u1EEF li\u1EC7u theo c\u1ED9t"), /*#__PURE__*/_react.default.createElement("div", {
121
+ className: 'mb-1',
122
+ style: {
123
+ marginBottom: '1rem'
124
+ }
125
+ }, /*#__PURE__*/_react.default.createElement("p", {
126
+ className: 'm-0',
127
+ style: {
128
+ margin: 0
129
+ }
130
+ }, "M\u1EE9c 1"), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Select, {
131
+ style: {
132
+ width: '100%'
133
+ }
134
+ // labelInValue={true}
135
+ // options={columns.filter((it: any) => !tempGroup.includes(it.field))}
136
+ // options={columns && columns.length > 0 ? options : []}
137
+ ,
138
+ options: options,
139
+ value: tempGroup?.[0],
140
+ onChange: val => onChangeGroupColumns(val, 0),
141
+ allowClear: !tempGroup?.[1] && !(unClearableLevel && unClearableLevel - 1 >= 0)
142
+ // fieldNames={{
143
+ // value: 'field',
144
+ // label: 'headerText'
145
+ // }}
146
+ ,
147
+ labelRender: labelProps => {
148
+ const it = columns.find(col => col.field === labelProps.value);
149
+ return t ? t(it.columnGroupText ?? it.headerText ?? it.title) : it.columnGroupText ?? it.headerText ?? it.title;
150
+ }
151
+ // hideSelectedOptions
152
+ })), /*#__PURE__*/_react.default.createElement("div", {
153
+ className: 'mb-1',
154
+ style: {
155
+ marginBottom: '1rem'
156
+ }
157
+ }, /*#__PURE__*/_react.default.createElement("p", {
158
+ className: 'm-0',
159
+ style: {
160
+ margin: 0
161
+ }
162
+ }, "M\u1EE9c 2"), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Select, {
163
+ style: {
164
+ width: '100%'
165
+ },
166
+ options: options,
167
+ value: tempGroup?.[1],
168
+ onChange: val => onChangeGroupColumns(val, 1),
169
+ allowClear: !tempGroup?.[2] && !(unClearableLevel && unClearableLevel - 2 >= 0)
170
+ // hideSelectedOptions
171
+ // fieldNames={{
172
+ // value: 'field',
173
+ // label: 'headerText'
174
+ // }}
175
+ ,
176
+ labelRender: labelProps => {
177
+ const it = columns.find(col => col.field === labelProps.value);
178
+ return t ? t(it.columnGroupText ?? it.headerText ?? it.title) : it.columnGroupText ?? it.headerText ?? it.title;
179
+ }
180
+ })), /*#__PURE__*/_react.default.createElement("div", {
181
+ className: 'mb-1',
182
+ style: {
183
+ marginBottom: '1rem'
184
+ }
185
+ }, /*#__PURE__*/_react.default.createElement("p", {
186
+ className: 'm-0',
187
+ style: {
188
+ margin: 0
189
+ }
190
+ }, "M\u1EE9c 3"), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Select, {
191
+ style: {
192
+ width: '100%'
193
+ },
194
+ options: options,
195
+ value: tempGroup?.[2],
196
+ onChange: val => onChangeGroupColumns(val, 2),
197
+ allowClear: !!tempGroup?.[2] && !(unClearableLevel && unClearableLevel - 3 >= 0)
198
+ // fieldNames={{
199
+ // value: 'field',
200
+ // label: 'headerText'
201
+ // }}
202
+ ,
203
+ labelRender: labelProps => {
204
+ const it = columns.find(col => col.field === labelProps.value);
205
+ return t ? t(it.columnGroupText ?? it.headerText ?? it.title) : it.columnGroupText ?? it.headerText ?? it.title;
206
+ }
207
+ }))), /*#__PURE__*/_react.default.createElement(BoxAction, {
208
+ className: 'px-1'
209
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button
210
+ // className={classnames('btn-action btn-action-submit', {
211
+ // // disable: !columns.find((item) => item.visible !== false || item.visible)
212
+ // })}
213
+ , {
214
+ onClick: handleGroup
215
+ // disabled={!columns.find((item) => item.visible !== false || item.visible)}
216
+ }, t ? t('Thực hiện') : 'Thực hiện'), /*#__PURE__*/_react.default.createElement(_antd.Button, {
217
+ className: 'btn-action btn-action-cancel',
218
+ onClick: handleClear
219
+ }, t ? t('Clear') : 'Clear'))),
220
+ trigger: "click",
221
+ open: clicked,
222
+ onOpenChange: handleClickChange,
223
+ arrow: false
224
+ }, /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
225
+ arrow: false,
226
+ title: 'Nhóm dữ liệu'
227
+ }, /*#__PURE__*/_react.default.createElement(_becoxyIcons.Group, {
228
+ fontSize: 18,
229
+ style: {
230
+ cursor: 'pointer'
231
+ }
232
+ }))));
233
+ };
234
+ exports.ColumnsGroup = ColumnsGroup;
@@ -0,0 +1 @@
1
+ export * from './ColumnsGroup';
@@ -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
+ });