es-grid-template 1.8.81 → 1.8.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/grid-component/type.d.ts +1 -1
- package/es/group-component/TableContainer.js +1 -0
- package/es/group-component/TableContainerEdit.js +1 -0
- package/es/group-component/hook/utils.d.ts +1 -1
- package/es/table-component/ColumnsChoose.d.ts +2 -1
- package/es/table-component/ColumnsChoose.js +21 -9
- package/es/table-component/InternalTable.js +1 -0
- package/es/table-component/TableContainer.js +1 -0
- package/es/table-component/TableContainerEdit.js +1 -0
- package/es/table-component/header/TableHeadCell2.js +24 -5
- package/es/table-component/hook/utils.js +2 -0
- package/es/table-virtuoso/table/TableContainer.js +1 -0
- package/lib/grid-component/type.d.ts +1 -1
- package/lib/group-component/TableContainer.js +1 -0
- package/lib/group-component/TableContainerEdit.js +1 -0
- package/lib/group-component/hook/utils.d.ts +1 -1
- package/lib/table-component/ColumnsChoose.d.ts +2 -1
- package/lib/table-component/ColumnsChoose.js +20 -8
- package/lib/table-component/InternalTable.js +1 -0
- package/lib/table-component/TableContainer.js +1 -0
- package/lib/table-component/TableContainerEdit.js +1 -0
- package/lib/table-component/header/TableHeadCell2.js +24 -5
- package/lib/table-component/hook/utils.js +2 -0
- package/lib/table-virtuoso/table/TableContainer.js +1 -0
- package/package.json +1 -1
|
@@ -130,7 +130,7 @@ export type ColumnTemplate<RecordType> = {
|
|
|
130
130
|
export type GetRowKey<RecordType> = (record: RecordType, index?: number) => Key;
|
|
131
131
|
export type ColumnTable<RecordType = AnyObject> = {
|
|
132
132
|
field: string;
|
|
133
|
-
|
|
133
|
+
fieldOriginal?: string;
|
|
134
134
|
width?: number;
|
|
135
135
|
maxWidth?: number;
|
|
136
136
|
minWidth?: number;
|
|
@@ -286,6 +286,7 @@ const TableContainer = props => {
|
|
|
286
286
|
"data-tooltip-content": tableLocal?.fullScreen || 'Full screen',
|
|
287
287
|
className: "toolbar-icon"
|
|
288
288
|
})), showColumnChoose && /*#__PURE__*/React.createElement(ColumnsChoose, {
|
|
289
|
+
table: table,
|
|
289
290
|
id: id,
|
|
290
291
|
tableLocal: tableLocal,
|
|
291
292
|
columnHidden: columnHidden,
|
|
@@ -1931,6 +1931,7 @@ const TableContainerEdit = props => {
|
|
|
1931
1931
|
"data-tooltip-id": `${id}-tooltip-content`,
|
|
1932
1932
|
"data-tooltip-content": tableLocal?.fullScreen || 'Full screen'
|
|
1933
1933
|
})), showColumnChoose && /*#__PURE__*/React.createElement(ColumnsChoose, {
|
|
1934
|
+
table: table,
|
|
1934
1935
|
id: id,
|
|
1935
1936
|
tableLocal: tableLocal,
|
|
1936
1937
|
columns: columns,
|
|
@@ -159,7 +159,7 @@ export declare const removeColumns: <RecordType>(columns: ColumnTable<RecordType
|
|
|
159
159
|
export declare const fixColumnsLeft: <RecordType>(columns: ColumnTable<RecordType>[], fixedFields: string[]) => {
|
|
160
160
|
fixed: string;
|
|
161
161
|
field: string;
|
|
162
|
-
|
|
162
|
+
fieldOriginal?: string;
|
|
163
163
|
width?: number;
|
|
164
164
|
maxWidth?: number;
|
|
165
165
|
minWidth?: number;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { ColumnsTable, ColumnTable, GridTableLocale, Locale } from "./../grid-component/type";
|
|
3
|
-
import type { ColumnDef } from "@tanstack/react-table";
|
|
3
|
+
import type { ColumnDef, Table } from "@tanstack/react-table";
|
|
4
4
|
export type IColumnsChoose<RecordType> = {
|
|
5
5
|
id: string;
|
|
6
|
+
table: Table<RecordType>;
|
|
6
7
|
columns: ColumnDef<RecordType>[];
|
|
7
8
|
originColumns: ColumnTable[];
|
|
8
9
|
columnsGroup?: string[];
|
|
@@ -4,11 +4,15 @@ import styled from "styled-components";
|
|
|
4
4
|
import { Button, Input, Popover } from "antd";
|
|
5
5
|
import Tree from "rc-master-ui/es/tree";
|
|
6
6
|
import SearchOutlined from "@ant-design/icons/SearchOutlined";
|
|
7
|
-
import { convertColumnsToTreeData,
|
|
7
|
+
import { convertColumnsToTreeData, updateColumns1 } from "./hook/utils";
|
|
8
8
|
import { Settings } from "becoxy-icons";
|
|
9
|
+
const CustomStyle = styled.div.withConfig({
|
|
10
|
+
displayName: "CustomStyle",
|
|
11
|
+
componentId: "es-grid-template__sc-jfujqh-0"
|
|
12
|
+
})([".columns-choose-tree{.ui-rc-tree-treenode{.ui-rc-tree-checkbox{align-self:flex-start;margin-top:5px !important;}}}"]);
|
|
9
13
|
const BoxAction = styled.div.withConfig({
|
|
10
14
|
displayName: "BoxAction",
|
|
11
|
-
componentId: "es-grid-template__sc-jfujqh-
|
|
15
|
+
componentId: "es-grid-template__sc-jfujqh-1"
|
|
12
16
|
})(["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;}}"]);
|
|
13
17
|
export const ColumnsChoose = props => {
|
|
14
18
|
const {
|
|
@@ -19,18 +23,21 @@ export const ColumnsChoose = props => {
|
|
|
19
23
|
// triggerChangeKeys,
|
|
20
24
|
t,
|
|
21
25
|
id,
|
|
26
|
+
table,
|
|
22
27
|
columnsGroup,
|
|
23
28
|
locale,
|
|
24
29
|
tableLocal
|
|
25
30
|
} = props;
|
|
31
|
+
const isClickRef = React.useRef(false);
|
|
26
32
|
const treeColumns = React.useMemo(() => {
|
|
27
33
|
return convertColumnsToTreeData(propsColumns, columnsGroup);
|
|
28
34
|
}, [propsColumns, columnsGroup]);
|
|
29
35
|
const defaultSelectedKeys = React.useMemo(() => {
|
|
30
|
-
const
|
|
36
|
+
const colsVisiables = table.getVisibleFlatColumns().filter(it => it.columnDef?.meta?.showInColumnChoose !== false);
|
|
37
|
+
const colsKeys = colsVisiables.map(it => it.id);
|
|
31
38
|
const aa = Object.keys(columnHidden);
|
|
32
|
-
return
|
|
33
|
-
}, [columnHidden, columnsGroup,
|
|
39
|
+
return colsKeys.filter(it => !aa.includes(it) && !columnsGroup?.includes(it));
|
|
40
|
+
}, [columnHidden, columnsGroup, table]);
|
|
34
41
|
const [mergedSelectedKeys, setMergedSelectedKeys] = useMergedState(defaultSelectedKeys && defaultSelectedKeys.length ? defaultSelectedKeys : undefined, {
|
|
35
42
|
value: undefined
|
|
36
43
|
});
|
|
@@ -113,11 +120,15 @@ export const ColumnsChoose = props => {
|
|
|
113
120
|
const onCheck = keys => {
|
|
114
121
|
// setSelectedKeys(keys)
|
|
115
122
|
// setIsManualUpdate(true)
|
|
123
|
+
|
|
124
|
+
isClickRef.current = true;
|
|
116
125
|
setMergedSelectedKeys(keys);
|
|
117
126
|
};
|
|
118
127
|
const handleAccept = () => {
|
|
119
|
-
|
|
120
|
-
|
|
128
|
+
if (isClickRef.current) {
|
|
129
|
+
const rs1 = updateColumns1(originColumns, mergedSelectedKeys ?? []);
|
|
130
|
+
triggerChangeColumns?.(rs1, mergedSelectedKeys ?? [], 'columnChoose');
|
|
131
|
+
}
|
|
121
132
|
hide();
|
|
122
133
|
};
|
|
123
134
|
const handleCancel = () => {
|
|
@@ -126,7 +137,7 @@ export const ColumnsChoose = props => {
|
|
|
126
137
|
};
|
|
127
138
|
return /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(Popover, {
|
|
128
139
|
placement: 'bottomLeft',
|
|
129
|
-
content: /*#__PURE__*/React.createElement(
|
|
140
|
+
content: /*#__PURE__*/React.createElement(CustomStyle, {
|
|
130
141
|
style: {
|
|
131
142
|
minWidth: 250,
|
|
132
143
|
maxWidth: 320
|
|
@@ -139,6 +150,7 @@ export const ColumnsChoose = props => {
|
|
|
139
150
|
prefix: /*#__PURE__*/React.createElement(SearchOutlined, null),
|
|
140
151
|
onChange: onChange
|
|
141
152
|
}), /*#__PURE__*/React.createElement(Tree, {
|
|
153
|
+
className: "columns-choose-tree",
|
|
142
154
|
onExpand: onExpand
|
|
143
155
|
// expandedKeys={expandedKeys}
|
|
144
156
|
,
|
|
@@ -173,7 +185,7 @@ export const ColumnsChoose = props => {
|
|
|
173
185
|
multiple: true
|
|
174
186
|
// checkedKeys={selectedKeys}
|
|
175
187
|
,
|
|
176
|
-
checkedKeys: mergedSelectedKeys
|
|
188
|
+
checkedKeys: mergedSelectedKeys ?? defaultSelectedKeys
|
|
177
189
|
|
|
178
190
|
// defaultCheckedKeys={selectedKeys}
|
|
179
191
|
,
|
|
@@ -151,6 +151,7 @@ const InternalTable = props => {
|
|
|
151
151
|
if (type === 'cellClick') {
|
|
152
152
|
setColumns(cols);
|
|
153
153
|
} else {
|
|
154
|
+
setColumns(cols);
|
|
154
155
|
const aa = flatColumns2(columns).map(it => it.field);
|
|
155
156
|
const rsss = getDiffent2Array(aa, keys);
|
|
156
157
|
setColumnsHiddenKeys(rsss);
|
|
@@ -254,6 +254,7 @@ const TableContainer = props => {
|
|
|
254
254
|
"data-tooltip-content": locale?.table?.fullScreen || tableLocal?.fullScreen || 'Full screen'
|
|
255
255
|
})), showColumnChoose && /*#__PURE__*/React.createElement(ColumnsChoose, {
|
|
256
256
|
id: id,
|
|
257
|
+
table: table,
|
|
257
258
|
locale: locale,
|
|
258
259
|
tableLocal: tableLocal,
|
|
259
260
|
columnHidden: columnHidden,
|
|
@@ -1672,6 +1672,7 @@ const TableContainerEdit = props => {
|
|
|
1672
1672
|
"data-tooltip-id": `${id}-tooltip-content`,
|
|
1673
1673
|
"data-tooltip-content": locale?.table?.fullScreen || tableLocal?.fullScreen || 'Full screen'
|
|
1674
1674
|
})), showColumnChoose && /*#__PURE__*/React.createElement(ColumnsChoose, {
|
|
1675
|
+
table: table,
|
|
1675
1676
|
columns: columns,
|
|
1676
1677
|
originColumns: propsColumns,
|
|
1677
1678
|
t: t,
|
|
@@ -41,6 +41,7 @@ const TableHeadCell2 = props => {
|
|
|
41
41
|
rowKey
|
|
42
42
|
} = useContext(TableContext);
|
|
43
43
|
const [tableLocal] = useLocale('Table');
|
|
44
|
+
const visibleCols = table.getVisibleFlatColumns();
|
|
44
45
|
const expandIconColumnIndex = expandable?.expandIconColumnIndex ?? 0;
|
|
45
46
|
const {
|
|
46
47
|
showExpandAll
|
|
@@ -54,8 +55,10 @@ const TableHeadCell2 = props => {
|
|
|
54
55
|
filterIcon
|
|
55
56
|
} = column.columnDef.meta ?? {};
|
|
56
57
|
const originalColumn = column.columnDef.meta ?? {};
|
|
58
|
+
const fieldOriginalKey = originalColumn?.fieldOriginal;
|
|
59
|
+
const fieldOriginal = fieldOriginalKey ? visibleCols.find(it => it.id === fieldOriginalKey) : undefined;
|
|
57
60
|
const cellStyles = typeof originalColumn.onCellHeaderStyles === 'function' ? originalColumn.onCellHeaderStyles(header) : originalColumn.onCellHeaderStyles;
|
|
58
|
-
const filtered = (column.getFilterValue() ?? []).length > 0;
|
|
61
|
+
const filtered = ((fieldOriginal ? fieldOriginal.getFilterValue() : column.getFilterValue()) ?? []).length > 0;
|
|
59
62
|
const cellContent = flexRender(column.columnDef.header, header.getContext());
|
|
60
63
|
const html = ReactDOMServer.renderToStaticMarkup( /*#__PURE__*/React.createElement(React.Fragment, null, cellContent));
|
|
61
64
|
const hasValue = html.trim().length > 0;
|
|
@@ -96,9 +99,14 @@ const TableHeadCell2 = props => {
|
|
|
96
99
|
if (info.source === 'trigger') {
|
|
97
100
|
if (newVisible) {
|
|
98
101
|
const filterValue = column.getFilterValue() ?? [];
|
|
102
|
+
const filterValueOrigin = fieldOriginal ? fieldOriginal.getFilterValue() ?? [] : undefined;
|
|
99
103
|
const operatorValue = column.getFilterOperator() ?? getDefaultOperator(column.columnDef?.meta ?? {});
|
|
100
|
-
setSelectedKeys(filterValue);
|
|
101
|
-
|
|
104
|
+
setSelectedKeys(filterValueOrigin ?? filterValue);
|
|
105
|
+
if (fieldOriginal) {
|
|
106
|
+
fieldOriginal.setFilterOperator?.(operatorValue);
|
|
107
|
+
} else {
|
|
108
|
+
column.setFilterOperator?.(operatorValue);
|
|
109
|
+
}
|
|
102
110
|
setTimeout(() => {
|
|
103
111
|
const inputFilter = document.querySelector('.filter-input');
|
|
104
112
|
if (inputFilter) {
|
|
@@ -111,9 +119,19 @@ const TableHeadCell2 = props => {
|
|
|
111
119
|
};
|
|
112
120
|
const doFilter = type => {
|
|
113
121
|
if (type) {
|
|
114
|
-
|
|
122
|
+
if (fieldOriginal) {
|
|
123
|
+
fieldOriginal.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? selectedKeys.length === 0 ? [''] : selectedKeys : selectedKeys);
|
|
124
|
+
} else {
|
|
125
|
+
column.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? selectedKeys.length === 0 ? [''] : selectedKeys : selectedKeys);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// column.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? (selectedKeys.length === 0 ? [''] : selectedKeys) : selectedKeys)
|
|
115
129
|
} else {
|
|
116
|
-
|
|
130
|
+
if (fieldOriginal) {
|
|
131
|
+
fieldOriginal.setFilterValue(undefined);
|
|
132
|
+
} else {
|
|
133
|
+
column.setFilterValue(undefined);
|
|
134
|
+
}
|
|
117
135
|
setSelectedKeys([]);
|
|
118
136
|
}
|
|
119
137
|
setFilterChange(true);
|
|
@@ -166,6 +184,7 @@ const TableHeadCell2 = props => {
|
|
|
166
184
|
}
|
|
167
185
|
}, renderFilter({
|
|
168
186
|
t,
|
|
187
|
+
// column: fieldOriginal ? fieldOriginal.columnDef : column.columnDef,
|
|
169
188
|
column: column.columnDef,
|
|
170
189
|
selectedKeys,
|
|
171
190
|
setSelectedKeys,
|
|
@@ -1922,7 +1922,9 @@ export function convertColumnsToTreeData(columns, groupColumns) {
|
|
|
1922
1922
|
// Điều kiện filter:
|
|
1923
1923
|
// - Nếu meta.showInColumnChoose = false => loại bỏ
|
|
1924
1924
|
// - Nếu không nằm trong groupColumns và không phải column group => loại bỏ
|
|
1925
|
+
// if (meta.showInColumnChoose === false || col.id === "selection_column") return false
|
|
1925
1926
|
if (meta.showInColumnChoose === false) return false;
|
|
1927
|
+
// if (inGroup && !('columns' in col && Array.isArray((col as any).columns))) {
|
|
1926
1928
|
if (inGroup && !('columns' in col && Array.isArray(col.columns))) {
|
|
1927
1929
|
return false;
|
|
1928
1930
|
}
|
|
@@ -212,6 +212,7 @@ const TableContainer = props => {
|
|
|
212
212
|
"data-tooltip-id": `${id}-tooltip-content`,
|
|
213
213
|
"data-tooltip-content": t ? t('Full screen') : 'Full screen'
|
|
214
214
|
})), showColumnChoose && /*#__PURE__*/React.createElement(ColumnsChoose, {
|
|
215
|
+
table: table,
|
|
215
216
|
id: id,
|
|
216
217
|
tableLocal: tableLocal,
|
|
217
218
|
columnHidden: columnHidden,
|
|
@@ -130,7 +130,7 @@ export type ColumnTemplate<RecordType> = {
|
|
|
130
130
|
export type GetRowKey<RecordType> = (record: RecordType, index?: number) => Key;
|
|
131
131
|
export type ColumnTable<RecordType = AnyObject> = {
|
|
132
132
|
field: string;
|
|
133
|
-
|
|
133
|
+
fieldOriginal?: string;
|
|
134
134
|
width?: number;
|
|
135
135
|
maxWidth?: number;
|
|
136
136
|
minWidth?: number;
|
|
@@ -294,6 +294,7 @@ const TableContainer = props => {
|
|
|
294
294
|
"data-tooltip-content": tableLocal?.fullScreen || 'Full screen',
|
|
295
295
|
className: "toolbar-icon"
|
|
296
296
|
})), showColumnChoose && /*#__PURE__*/_react.default.createElement(_ColumnsChoose.ColumnsChoose, {
|
|
297
|
+
table: table,
|
|
297
298
|
id: id,
|
|
298
299
|
tableLocal: tableLocal,
|
|
299
300
|
columnHidden: columnHidden,
|
|
@@ -1939,6 +1939,7 @@ const TableContainerEdit = props => {
|
|
|
1939
1939
|
"data-tooltip-id": `${id}-tooltip-content`,
|
|
1940
1940
|
"data-tooltip-content": tableLocal?.fullScreen || 'Full screen'
|
|
1941
1941
|
})), showColumnChoose && /*#__PURE__*/_react.default.createElement(_ColumnsChoose.ColumnsChoose, {
|
|
1942
|
+
table: table,
|
|
1942
1943
|
id: id,
|
|
1943
1944
|
tableLocal: tableLocal,
|
|
1944
1945
|
columns: columns,
|
|
@@ -159,7 +159,7 @@ export declare const removeColumns: <RecordType>(columns: ColumnTable<RecordType
|
|
|
159
159
|
export declare const fixColumnsLeft: <RecordType>(columns: ColumnTable<RecordType>[], fixedFields: string[]) => {
|
|
160
160
|
fixed: string;
|
|
161
161
|
field: string;
|
|
162
|
-
|
|
162
|
+
fieldOriginal?: string;
|
|
163
163
|
width?: number;
|
|
164
164
|
maxWidth?: number;
|
|
165
165
|
minWidth?: number;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { ColumnsTable, ColumnTable, GridTableLocale, Locale } from "./../grid-component/type";
|
|
3
|
-
import type { ColumnDef } from "@tanstack/react-table";
|
|
3
|
+
import type { ColumnDef, Table } from "@tanstack/react-table";
|
|
4
4
|
export type IColumnsChoose<RecordType> = {
|
|
5
5
|
id: string;
|
|
6
|
+
table: Table<RecordType>;
|
|
6
7
|
columns: ColumnDef<RecordType>[];
|
|
7
8
|
originColumns: ColumnTable[];
|
|
8
9
|
columnsGroup?: string[];
|
|
@@ -15,9 +15,13 @@ var _utils = require("./hook/utils");
|
|
|
15
15
|
var _becoxyIcons = require("becoxy-icons");
|
|
16
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
17
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
18
|
+
const CustomStyle = _styledComponents.default.div.withConfig({
|
|
19
|
+
displayName: "CustomStyle",
|
|
20
|
+
componentId: "es-grid-template__sc-jfujqh-0"
|
|
21
|
+
})([".columns-choose-tree{.ui-rc-tree-treenode{.ui-rc-tree-checkbox{align-self:flex-start;margin-top:5px !important;}}}"]);
|
|
18
22
|
const BoxAction = _styledComponents.default.div.withConfig({
|
|
19
23
|
displayName: "BoxAction",
|
|
20
|
-
componentId: "es-grid-template__sc-jfujqh-
|
|
24
|
+
componentId: "es-grid-template__sc-jfujqh-1"
|
|
21
25
|
})(["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;}}"]);
|
|
22
26
|
const ColumnsChoose = props => {
|
|
23
27
|
const {
|
|
@@ -28,18 +32,21 @@ const ColumnsChoose = props => {
|
|
|
28
32
|
// triggerChangeKeys,
|
|
29
33
|
t,
|
|
30
34
|
id,
|
|
35
|
+
table,
|
|
31
36
|
columnsGroup,
|
|
32
37
|
locale,
|
|
33
38
|
tableLocal
|
|
34
39
|
} = props;
|
|
40
|
+
const isClickRef = _react.default.useRef(false);
|
|
35
41
|
const treeColumns = _react.default.useMemo(() => {
|
|
36
42
|
return (0, _utils.convertColumnsToTreeData)(propsColumns, columnsGroup);
|
|
37
43
|
}, [propsColumns, columnsGroup]);
|
|
38
44
|
const defaultSelectedKeys = _react.default.useMemo(() => {
|
|
39
|
-
const
|
|
45
|
+
const colsVisiables = table.getVisibleFlatColumns().filter(it => it.columnDef?.meta?.showInColumnChoose !== false);
|
|
46
|
+
const colsKeys = colsVisiables.map(it => it.id);
|
|
40
47
|
const aa = Object.keys(columnHidden);
|
|
41
|
-
return
|
|
42
|
-
}, [columnHidden, columnsGroup,
|
|
48
|
+
return colsKeys.filter(it => !aa.includes(it) && !columnsGroup?.includes(it));
|
|
49
|
+
}, [columnHidden, columnsGroup, table]);
|
|
43
50
|
const [mergedSelectedKeys, setMergedSelectedKeys] = (0, _useMergedState.default)(defaultSelectedKeys && defaultSelectedKeys.length ? defaultSelectedKeys : undefined, {
|
|
44
51
|
value: undefined
|
|
45
52
|
});
|
|
@@ -122,11 +129,15 @@ const ColumnsChoose = props => {
|
|
|
122
129
|
const onCheck = keys => {
|
|
123
130
|
// setSelectedKeys(keys)
|
|
124
131
|
// setIsManualUpdate(true)
|
|
132
|
+
|
|
133
|
+
isClickRef.current = true;
|
|
125
134
|
setMergedSelectedKeys(keys);
|
|
126
135
|
};
|
|
127
136
|
const handleAccept = () => {
|
|
128
|
-
|
|
129
|
-
|
|
137
|
+
if (isClickRef.current) {
|
|
138
|
+
const rs1 = (0, _utils.updateColumns1)(originColumns, mergedSelectedKeys ?? []);
|
|
139
|
+
triggerChangeColumns?.(rs1, mergedSelectedKeys ?? [], 'columnChoose');
|
|
140
|
+
}
|
|
130
141
|
hide();
|
|
131
142
|
};
|
|
132
143
|
const handleCancel = () => {
|
|
@@ -135,7 +146,7 @@ const ColumnsChoose = props => {
|
|
|
135
146
|
};
|
|
136
147
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.Popover, {
|
|
137
148
|
placement: 'bottomLeft',
|
|
138
|
-
content: /*#__PURE__*/_react.default.createElement(
|
|
149
|
+
content: /*#__PURE__*/_react.default.createElement(CustomStyle, {
|
|
139
150
|
style: {
|
|
140
151
|
minWidth: 250,
|
|
141
152
|
maxWidth: 320
|
|
@@ -148,6 +159,7 @@ const ColumnsChoose = props => {
|
|
|
148
159
|
prefix: /*#__PURE__*/_react.default.createElement(_SearchOutlined.default, null),
|
|
149
160
|
onChange: onChange
|
|
150
161
|
}), /*#__PURE__*/_react.default.createElement(_tree.default, {
|
|
162
|
+
className: "columns-choose-tree",
|
|
151
163
|
onExpand: onExpand
|
|
152
164
|
// expandedKeys={expandedKeys}
|
|
153
165
|
,
|
|
@@ -182,7 +194,7 @@ const ColumnsChoose = props => {
|
|
|
182
194
|
multiple: true
|
|
183
195
|
// checkedKeys={selectedKeys}
|
|
184
196
|
,
|
|
185
|
-
checkedKeys: mergedSelectedKeys
|
|
197
|
+
checkedKeys: mergedSelectedKeys ?? defaultSelectedKeys
|
|
186
198
|
|
|
187
199
|
// defaultCheckedKeys={selectedKeys}
|
|
188
200
|
,
|
|
@@ -160,6 +160,7 @@ const InternalTable = props => {
|
|
|
160
160
|
if (type === 'cellClick') {
|
|
161
161
|
setColumns(cols);
|
|
162
162
|
} else {
|
|
163
|
+
setColumns(cols);
|
|
163
164
|
const aa = (0, _utils.flatColumns2)(columns).map(it => it.field);
|
|
164
165
|
const rsss = (0, _utils.getDiffent2Array)(aa, keys);
|
|
165
166
|
setColumnsHiddenKeys(rsss);
|
|
@@ -261,6 +261,7 @@ const TableContainer = props => {
|
|
|
261
261
|
"data-tooltip-content": locale?.table?.fullScreen || tableLocal?.fullScreen || 'Full screen'
|
|
262
262
|
})), showColumnChoose && /*#__PURE__*/_react.default.createElement(_ColumnsChoose.ColumnsChoose, {
|
|
263
263
|
id: id,
|
|
264
|
+
table: table,
|
|
264
265
|
locale: locale,
|
|
265
266
|
tableLocal: tableLocal,
|
|
266
267
|
columnHidden: columnHidden,
|
|
@@ -1679,6 +1679,7 @@ const TableContainerEdit = props => {
|
|
|
1679
1679
|
"data-tooltip-id": `${id}-tooltip-content`,
|
|
1680
1680
|
"data-tooltip-content": locale?.table?.fullScreen || tableLocal?.fullScreen || 'Full screen'
|
|
1681
1681
|
})), showColumnChoose && /*#__PURE__*/_react.default.createElement(_ColumnsChoose.ColumnsChoose, {
|
|
1682
|
+
table: table,
|
|
1682
1683
|
columns: columns,
|
|
1683
1684
|
originColumns: propsColumns,
|
|
1684
1685
|
t: t,
|
|
@@ -50,6 +50,7 @@ const TableHeadCell2 = props => {
|
|
|
50
50
|
rowKey
|
|
51
51
|
} = (0, _react.useContext)(_useContext.TableContext);
|
|
52
52
|
const [tableLocal] = (0, _locale.useLocale)('Table');
|
|
53
|
+
const visibleCols = table.getVisibleFlatColumns();
|
|
53
54
|
const expandIconColumnIndex = expandable?.expandIconColumnIndex ?? 0;
|
|
54
55
|
const {
|
|
55
56
|
showExpandAll
|
|
@@ -63,8 +64,10 @@ const TableHeadCell2 = props => {
|
|
|
63
64
|
filterIcon
|
|
64
65
|
} = column.columnDef.meta ?? {};
|
|
65
66
|
const originalColumn = column.columnDef.meta ?? {};
|
|
67
|
+
const fieldOriginalKey = originalColumn?.fieldOriginal;
|
|
68
|
+
const fieldOriginal = fieldOriginalKey ? visibleCols.find(it => it.id === fieldOriginalKey) : undefined;
|
|
66
69
|
const cellStyles = typeof originalColumn.onCellHeaderStyles === 'function' ? originalColumn.onCellHeaderStyles(header) : originalColumn.onCellHeaderStyles;
|
|
67
|
-
const filtered = (column.getFilterValue() ?? []).length > 0;
|
|
70
|
+
const filtered = ((fieldOriginal ? fieldOriginal.getFilterValue() : column.getFilterValue()) ?? []).length > 0;
|
|
68
71
|
const cellContent = (0, _reactTable.flexRender)(column.columnDef.header, header.getContext());
|
|
69
72
|
const html = _server.default.renderToStaticMarkup( /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, cellContent));
|
|
70
73
|
const hasValue = html.trim().length > 0;
|
|
@@ -105,9 +108,14 @@ const TableHeadCell2 = props => {
|
|
|
105
108
|
if (info.source === 'trigger') {
|
|
106
109
|
if (newVisible) {
|
|
107
110
|
const filterValue = column.getFilterValue() ?? [];
|
|
111
|
+
const filterValueOrigin = fieldOriginal ? fieldOriginal.getFilterValue() ?? [] : undefined;
|
|
108
112
|
const operatorValue = column.getFilterOperator() ?? (0, _utils.getDefaultOperator)(column.columnDef?.meta ?? {});
|
|
109
|
-
setSelectedKeys(filterValue);
|
|
110
|
-
|
|
113
|
+
setSelectedKeys(filterValueOrigin ?? filterValue);
|
|
114
|
+
if (fieldOriginal) {
|
|
115
|
+
fieldOriginal.setFilterOperator?.(operatorValue);
|
|
116
|
+
} else {
|
|
117
|
+
column.setFilterOperator?.(operatorValue);
|
|
118
|
+
}
|
|
111
119
|
setTimeout(() => {
|
|
112
120
|
const inputFilter = document.querySelector('.filter-input');
|
|
113
121
|
if (inputFilter) {
|
|
@@ -120,9 +128,19 @@ const TableHeadCell2 = props => {
|
|
|
120
128
|
};
|
|
121
129
|
const doFilter = type => {
|
|
122
130
|
if (type) {
|
|
123
|
-
|
|
131
|
+
if (fieldOriginal) {
|
|
132
|
+
fieldOriginal.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? selectedKeys.length === 0 ? [''] : selectedKeys : selectedKeys);
|
|
133
|
+
} else {
|
|
134
|
+
column.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? selectedKeys.length === 0 ? [''] : selectedKeys : selectedKeys);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// column.setFilterValue(!originalColumn.typeFilter || originalColumn.typeFilter === 'Text' ? (selectedKeys.length === 0 ? [''] : selectedKeys) : selectedKeys)
|
|
124
138
|
} else {
|
|
125
|
-
|
|
139
|
+
if (fieldOriginal) {
|
|
140
|
+
fieldOriginal.setFilterValue(undefined);
|
|
141
|
+
} else {
|
|
142
|
+
column.setFilterValue(undefined);
|
|
143
|
+
}
|
|
126
144
|
setSelectedKeys([]);
|
|
127
145
|
}
|
|
128
146
|
setFilterChange(true);
|
|
@@ -175,6 +193,7 @@ const TableHeadCell2 = props => {
|
|
|
175
193
|
}
|
|
176
194
|
}, (0, _renderFilter.renderFilter)({
|
|
177
195
|
t,
|
|
196
|
+
// column: fieldOriginal ? fieldOriginal.columnDef : column.columnDef,
|
|
178
197
|
column: column.columnDef,
|
|
179
198
|
selectedKeys,
|
|
180
199
|
setSelectedKeys,
|
|
@@ -2041,7 +2041,9 @@ function convertColumnsToTreeData(columns, groupColumns) {
|
|
|
2041
2041
|
// Điều kiện filter:
|
|
2042
2042
|
// - Nếu meta.showInColumnChoose = false => loại bỏ
|
|
2043
2043
|
// - Nếu không nằm trong groupColumns và không phải column group => loại bỏ
|
|
2044
|
+
// if (meta.showInColumnChoose === false || col.id === "selection_column") return false
|
|
2044
2045
|
if (meta.showInColumnChoose === false) return false;
|
|
2046
|
+
// if (inGroup && !('columns' in col && Array.isArray((col as any).columns))) {
|
|
2045
2047
|
if (inGroup && !('columns' in col && Array.isArray(col.columns))) {
|
|
2046
2048
|
return false;
|
|
2047
2049
|
}
|
|
@@ -220,6 +220,7 @@ const TableContainer = props => {
|
|
|
220
220
|
"data-tooltip-id": `${id}-tooltip-content`,
|
|
221
221
|
"data-tooltip-content": t ? t('Full screen') : 'Full screen'
|
|
222
222
|
})), showColumnChoose && /*#__PURE__*/_react.default.createElement(_ColumnsChoose.ColumnsChoose, {
|
|
223
|
+
table: table,
|
|
223
224
|
id: id,
|
|
224
225
|
tableLocal: tableLocal,
|
|
225
226
|
columnHidden: columnHidden,
|