es-grid-template 1.3.1 → 1.3.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.
- package/es/grid-component/CheckboxFilter.js +4 -0
- package/es/grid-component/CheckboxFilter2.d.ts +20 -0
- package/es/grid-component/CheckboxFilter2.js +248 -0
- package/es/grid-component/ContextMenu.js +1 -0
- package/es/grid-component/InternalTable.js +37 -3
- package/es/grid-component/TableGrid.d.ts +3 -0
- package/es/grid-component/TableGrid.js +69 -7
- package/es/grid-component/hooks/columns/index.js +14 -45
- package/es/grid-component/hooks/content/HeaderContent.js +54 -58
- package/es/grid-component/hooks/useColumns.js +22 -8
- package/es/grid-component/hooks/utils.d.ts +8 -0
- package/es/grid-component/hooks/utils.js +257 -1
- package/es/grid-component/number-range/index.d.ts +10 -0
- package/es/grid-component/number-range/index.js +59 -0
- package/es/grid-component/table/Grid.d.ts +3 -0
- package/es/grid-component/table/GridEdit.js +281 -62
- package/es/grid-component/table/Group.d.ts +1 -0
- package/es/grid-component/table/Group.js +1 -1
- package/es/grid-component/type.d.ts +2 -1
- package/lib/grid-component/CheckboxFilter.js +4 -0
- package/lib/grid-component/CheckboxFilter2.d.ts +20 -0
- package/lib/grid-component/CheckboxFilter2.js +257 -0
- package/lib/grid-component/ContextMenu.js +1 -0
- package/lib/grid-component/InternalTable.js +31 -2
- package/lib/grid-component/TableGrid.d.ts +3 -0
- package/lib/grid-component/TableGrid.js +67 -7
- package/lib/grid-component/hooks/columns/index.js +14 -45
- package/lib/grid-component/hooks/content/HeaderContent.js +53 -55
- package/lib/grid-component/hooks/useColumns.js +22 -8
- package/lib/grid-component/hooks/utils.d.ts +8 -0
- package/lib/grid-component/hooks/utils.js +270 -3
- package/lib/grid-component/number-range/index.d.ts +10 -0
- package/lib/grid-component/number-range/index.js +67 -0
- package/lib/grid-component/table/Grid.d.ts +3 -0
- package/lib/grid-component/table/GridEdit.js +281 -62
- package/lib/grid-component/table/Group.d.ts +1 -0
- package/lib/grid-component/table/Group.js +1 -1
- package/lib/grid-component/type.d.ts +2 -1
- package/package.json +109 -108
|
@@ -0,0 +1,257 @@
|
|
|
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 React = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
var _FilterSearch = _interopRequireDefault(require("./FilterSearch"));
|
|
11
|
+
var _rcMasterUi = require("rc-master-ui");
|
|
12
|
+
var _antd = require("antd");
|
|
13
|
+
var _useFilter = require("rc-master-ui/es/table/hooks/useFilter");
|
|
14
|
+
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); }
|
|
15
|
+
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; }
|
|
16
|
+
// import Tree from "rc-master-ui/es/tree";
|
|
17
|
+
|
|
18
|
+
function searchValueMatched(searchValue, text) {
|
|
19
|
+
if (typeof text === 'string' || typeof text === 'number') {
|
|
20
|
+
return text?.toString().toLowerCase().includes(searchValue.trim().toLowerCase());
|
|
21
|
+
}
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
function renderFilterItems({
|
|
25
|
+
filters,
|
|
26
|
+
prefixCls,
|
|
27
|
+
filteredKeys,
|
|
28
|
+
filterMultiple,
|
|
29
|
+
searchValue,
|
|
30
|
+
filterSearch
|
|
31
|
+
}) {
|
|
32
|
+
return filters.map((filter, index) => {
|
|
33
|
+
const key = String(filter.value);
|
|
34
|
+
if (filter.children) {
|
|
35
|
+
return {
|
|
36
|
+
key: key || index,
|
|
37
|
+
label: filter.text,
|
|
38
|
+
popupClassName: `${prefixCls}-dropdown-submenu`,
|
|
39
|
+
children: renderFilterItems({
|
|
40
|
+
filters: filter.children,
|
|
41
|
+
prefixCls,
|
|
42
|
+
filteredKeys,
|
|
43
|
+
filterMultiple,
|
|
44
|
+
searchValue,
|
|
45
|
+
filterSearch
|
|
46
|
+
})
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const Component = filterMultiple ? _rcMasterUi.Checkbox : _rcMasterUi.Radio;
|
|
50
|
+
const item = {
|
|
51
|
+
key: filter.value !== undefined ? key : index,
|
|
52
|
+
label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Component, {
|
|
53
|
+
checked: filteredKeys.includes(key)
|
|
54
|
+
}), /*#__PURE__*/React.createElement("span", null, filter.text))
|
|
55
|
+
};
|
|
56
|
+
if (searchValue.trim()) {
|
|
57
|
+
if (typeof filterSearch === 'function') {
|
|
58
|
+
return filterSearch(searchValue, filter) ? item : null;
|
|
59
|
+
}
|
|
60
|
+
return searchValueMatched(searchValue, filter.text) ? item : null;
|
|
61
|
+
}
|
|
62
|
+
return item;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function hasSubMenu(filters) {
|
|
66
|
+
return filters.some(({
|
|
67
|
+
children
|
|
68
|
+
}) => children);
|
|
69
|
+
}
|
|
70
|
+
const CheckboxFilter = props => {
|
|
71
|
+
const {
|
|
72
|
+
// column,
|
|
73
|
+
filterSearch = true,
|
|
74
|
+
tablePrefixCls = 'ui-rc-table',
|
|
75
|
+
prefixCls = 'ui-rc-table-filter',
|
|
76
|
+
dropdownPrefixCls = 'ui-rc-dropdown',
|
|
77
|
+
filterMultiple,
|
|
78
|
+
selectedKeys,
|
|
79
|
+
locale,
|
|
80
|
+
options,
|
|
81
|
+
filterMode = 'tree',
|
|
82
|
+
// open,
|
|
83
|
+
searchValue,
|
|
84
|
+
showFilter,
|
|
85
|
+
setSearchValue,
|
|
86
|
+
onSelect
|
|
87
|
+
} = props;
|
|
88
|
+
|
|
89
|
+
// const [searchValue, setSearchValue] = React.useState('');
|
|
90
|
+
|
|
91
|
+
console.log('options', options);
|
|
92
|
+
const [openKeys, setOpenKeys] = React.useState([]);
|
|
93
|
+
|
|
94
|
+
// clear search value after close filter dropdown
|
|
95
|
+
// React.useEffect(() => {
|
|
96
|
+
// // if (visible) {
|
|
97
|
+
// setSearchValue('');
|
|
98
|
+
// // }
|
|
99
|
+
// }, [open]);
|
|
100
|
+
|
|
101
|
+
const onOpenChange = keys => {
|
|
102
|
+
setOpenKeys(keys);
|
|
103
|
+
};
|
|
104
|
+
const items = renderFilterItems({
|
|
105
|
+
// filters: column.filters || [],
|
|
106
|
+
filters: options || [],
|
|
107
|
+
filterSearch,
|
|
108
|
+
prefixCls,
|
|
109
|
+
filteredKeys: selectedKeys ?? [],
|
|
110
|
+
filterMultiple,
|
|
111
|
+
searchValue
|
|
112
|
+
});
|
|
113
|
+
const dropdownMenuClass = (0, _classnames.default)({
|
|
114
|
+
// [`${dropdownPrefixCls}-menu-without-submenu`]: !hasSubMenu(column.filters || []),
|
|
115
|
+
[`${dropdownPrefixCls}-menu-without-submenu`]: !hasSubMenu(options || [])
|
|
116
|
+
});
|
|
117
|
+
const empty = /*#__PURE__*/React.createElement(_rcMasterUi.Empty, {
|
|
118
|
+
image: _rcMasterUi.Empty.PRESENTED_IMAGE_SIMPLE,
|
|
119
|
+
description: locale?.filterEmptyText,
|
|
120
|
+
imageStyle: {
|
|
121
|
+
height: 24
|
|
122
|
+
},
|
|
123
|
+
style: {
|
|
124
|
+
margin: 0,
|
|
125
|
+
padding: '16px 0'
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
const isEmpty = items.every(item => item === null);
|
|
129
|
+
const onSearch = e => {
|
|
130
|
+
const {
|
|
131
|
+
value
|
|
132
|
+
} = e.target;
|
|
133
|
+
setSearchValue(value);
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
// if ((column.filters || []).length === 0) {
|
|
137
|
+
// return empty;
|
|
138
|
+
// }
|
|
139
|
+
|
|
140
|
+
const getTreeData = ({
|
|
141
|
+
filters
|
|
142
|
+
}) => (filters || []).map((filter, index) => {
|
|
143
|
+
const key = String(filter.value);
|
|
144
|
+
const item = {
|
|
145
|
+
title: filter.text,
|
|
146
|
+
key: filter.value !== undefined ? key : String(index)
|
|
147
|
+
};
|
|
148
|
+
if (filter.children) {
|
|
149
|
+
item.children = getTreeData({
|
|
150
|
+
filters: filter.children
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return item;
|
|
154
|
+
});
|
|
155
|
+
const getFilterData = node => ({
|
|
156
|
+
...node,
|
|
157
|
+
text: node.title,
|
|
158
|
+
value: node.key,
|
|
159
|
+
children: node.children?.map(item => getFilterData(item)) || []
|
|
160
|
+
});
|
|
161
|
+
const onCheckAll = e => {
|
|
162
|
+
if (e.target.checked) {
|
|
163
|
+
const allFilterKeys = (0, _useFilter.flattenKeys)(options).map(key => String(key));
|
|
164
|
+
|
|
165
|
+
// setFilteredKeysSync(allFilterKeys);
|
|
166
|
+
onSelect?.(allFilterKeys);
|
|
167
|
+
} else {
|
|
168
|
+
onSelect?.([]);
|
|
169
|
+
// setFilteredKeysSync([]);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
const onCheck = (keys, {
|
|
173
|
+
node,
|
|
174
|
+
checked
|
|
175
|
+
}) => {
|
|
176
|
+
if (!filterMultiple) {
|
|
177
|
+
// onSelectKeys({ selectedKeys: checked && node.key ? [node.key] : [] });
|
|
178
|
+
onSelect?.(checked && node.key ? [node.key] : []);
|
|
179
|
+
} else {
|
|
180
|
+
// onSelectKeys({ selectedKeys: keys });
|
|
181
|
+
onSelect?.(keys);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
console.log('getTreeData({ filters: options })', getTreeData({
|
|
185
|
+
filters: options
|
|
186
|
+
}));
|
|
187
|
+
if (filterMode === 'tree') {
|
|
188
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, showFilter && /*#__PURE__*/React.createElement(_FilterSearch.default, {
|
|
189
|
+
filterSearch: filterSearch,
|
|
190
|
+
value: searchValue,
|
|
191
|
+
onChange: onSearch,
|
|
192
|
+
tablePrefixCls: tablePrefixCls,
|
|
193
|
+
locale: locale
|
|
194
|
+
}), /*#__PURE__*/React.createElement("div", {
|
|
195
|
+
className: `${tablePrefixCls}-filter-dropdown-tree`
|
|
196
|
+
}, filterMultiple && options.length > 0 ? /*#__PURE__*/React.createElement(_rcMasterUi.Checkbox
|
|
197
|
+
// checked={selectedKeys.length === flattenKeys(column.filters).length}
|
|
198
|
+
, {
|
|
199
|
+
checked: selectedKeys.length === (0, _useFilter.flattenKeys)(options).length
|
|
200
|
+
// indeterminate={
|
|
201
|
+
// selectedKeys.length > 0 &&
|
|
202
|
+
// selectedKeys.length < flattenKeys(column.filters).length
|
|
203
|
+
// }
|
|
204
|
+
,
|
|
205
|
+
|
|
206
|
+
indeterminate: selectedKeys.length > 0 && selectedKeys.length < (0, _useFilter.flattenKeys)(options).length,
|
|
207
|
+
className: `${tablePrefixCls}-filter-dropdown-checkall`,
|
|
208
|
+
onChange: onCheckAll
|
|
209
|
+
}, locale?.filterCheckall) : /*#__PURE__*/React.createElement(_rcMasterUi.Empty, null), /*#__PURE__*/React.createElement(_antd.Tree, {
|
|
210
|
+
checkable: true,
|
|
211
|
+
selectable: false,
|
|
212
|
+
blockNode: true,
|
|
213
|
+
multiple: filterMultiple,
|
|
214
|
+
checkStrictly: !filterMultiple,
|
|
215
|
+
className: `${dropdownPrefixCls}-menu`,
|
|
216
|
+
onCheck: onCheck,
|
|
217
|
+
checkedKeys: selectedKeys,
|
|
218
|
+
selectedKeys: selectedKeys,
|
|
219
|
+
showIcon: false
|
|
220
|
+
// treeData={getTreeData({ filters: column.filters })}
|
|
221
|
+
,
|
|
222
|
+
treeData: getTreeData({
|
|
223
|
+
filters: options
|
|
224
|
+
}),
|
|
225
|
+
autoExpandParent: true,
|
|
226
|
+
defaultExpandAll: true,
|
|
227
|
+
filterTreeNode: searchValue.trim() ? node => {
|
|
228
|
+
if (typeof filterSearch === 'function') {
|
|
229
|
+
// @ts-ignore
|
|
230
|
+
return filterSearch(searchValue, getFilterData(node));
|
|
231
|
+
}
|
|
232
|
+
return searchValueMatched(searchValue, node.title);
|
|
233
|
+
} : undefined
|
|
234
|
+
})));
|
|
235
|
+
}
|
|
236
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_FilterSearch.default, {
|
|
237
|
+
filterSearch: filterSearch,
|
|
238
|
+
value: searchValue,
|
|
239
|
+
onChange: onSearch,
|
|
240
|
+
tablePrefixCls: tablePrefixCls,
|
|
241
|
+
locale: locale
|
|
242
|
+
}), isEmpty ? empty : /*#__PURE__*/React.createElement(_rcMasterUi.Menu, {
|
|
243
|
+
selectable: true,
|
|
244
|
+
multiple: filterMultiple,
|
|
245
|
+
prefixCls: `${dropdownPrefixCls}-menu`,
|
|
246
|
+
className: dropdownMenuClass,
|
|
247
|
+
onSelect: onSelect,
|
|
248
|
+
onDeselect: onSelect,
|
|
249
|
+
selectedKeys: selectedKeys
|
|
250
|
+
// getPopupContainer={getPopupContainer}
|
|
251
|
+
,
|
|
252
|
+
openKeys: openKeys,
|
|
253
|
+
onOpenChange: onOpenChange,
|
|
254
|
+
items: items
|
|
255
|
+
}));
|
|
256
|
+
};
|
|
257
|
+
var _default = exports.default = CheckboxFilter;
|
|
@@ -68,7 +68,8 @@ const InternalTable = props => {
|
|
|
68
68
|
dataSource,
|
|
69
69
|
allowResizing,
|
|
70
70
|
dataSourceFilter: propDataSourceFilter,
|
|
71
|
-
onFilterClick,
|
|
71
|
+
// onFilterClick,
|
|
72
|
+
// onFilter,
|
|
72
73
|
editAble,
|
|
73
74
|
rowKey: propRowKey,
|
|
74
75
|
format,
|
|
@@ -97,8 +98,15 @@ const InternalTable = props => {
|
|
|
97
98
|
...local.lang
|
|
98
99
|
}
|
|
99
100
|
};
|
|
101
|
+
|
|
102
|
+
// const [filterStates, setFilterState] = React.useState<any>(null)
|
|
103
|
+
// const [isFilter, setIsFilter] = React.useState<boolean>(false);
|
|
104
|
+
|
|
100
105
|
const mergerdData = _react.default.useMemo(() => {
|
|
106
|
+
// return filterDataByColumns2(addRowIdArray(dataSource), filterStates)
|
|
107
|
+
// return filterDataByColumns3(addRowIdArray(dataSource), filterStates)
|
|
101
108
|
return (0, _hooks.addRowIdArray)(dataSource);
|
|
109
|
+
// return dataSource
|
|
102
110
|
}, [dataSource]);
|
|
103
111
|
const [columns, setColumns] = _react.default.useState([]);
|
|
104
112
|
const tableRef = _react.default.useRef(null);
|
|
@@ -143,7 +151,8 @@ const InternalTable = props => {
|
|
|
143
151
|
locale,
|
|
144
152
|
t,
|
|
145
153
|
rowKey,
|
|
146
|
-
dataSource: mergerdData,
|
|
154
|
+
// dataSource: mergerdData,
|
|
155
|
+
dataSource,
|
|
147
156
|
buddhistLocale,
|
|
148
157
|
dataSourceFilter: propDataSourceFilter,
|
|
149
158
|
format,
|
|
@@ -211,7 +220,22 @@ const InternalTable = props => {
|
|
|
211
220
|
// setData(newData)
|
|
212
221
|
// setMergedData(newData)
|
|
213
222
|
onDataChange?.(newData);
|
|
223
|
+
// onDataChange?.(removeFieldRecursive(newData, 'isFilterState'))
|
|
214
224
|
};
|
|
225
|
+
|
|
226
|
+
// const triggerFilter = (queries: any) => {
|
|
227
|
+
// console.log('queries', queries)
|
|
228
|
+
// // console.log('data', dataSource)
|
|
229
|
+
// setFilterState(queries)
|
|
230
|
+
//
|
|
231
|
+
// if (queries && queries.length > 0) {
|
|
232
|
+
// setIsFilter(true)
|
|
233
|
+
// } else {
|
|
234
|
+
// setIsFilter(false)
|
|
235
|
+
// }
|
|
236
|
+
//
|
|
237
|
+
// }
|
|
238
|
+
|
|
215
239
|
const triggerCommandClick = args => {
|
|
216
240
|
const {
|
|
217
241
|
id,
|
|
@@ -370,6 +394,7 @@ const InternalTable = props => {
|
|
|
370
394
|
locale: locale,
|
|
371
395
|
tableRef: tableRef,
|
|
372
396
|
dataSource: mergerdData
|
|
397
|
+
// dataSource={dataSource}
|
|
373
398
|
// components={components}
|
|
374
399
|
,
|
|
375
400
|
components: {
|
|
@@ -395,6 +420,10 @@ const InternalTable = props => {
|
|
|
395
420
|
groupAble: groupAble,
|
|
396
421
|
groupColumns: groupColumns,
|
|
397
422
|
commandClick: triggerCommandClick
|
|
423
|
+
// triggerFilter={triggerFilter}
|
|
424
|
+
// isFilter={isFilter}
|
|
425
|
+
// setIsFilter={setIsFilter}
|
|
426
|
+
// onScroll={onScroll}
|
|
398
427
|
}));
|
|
399
428
|
};
|
|
400
429
|
var _default = exports.default = InternalTable;
|
|
@@ -5,12 +5,15 @@ 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
|
+
triggerFilter?: (queries: any) => void;
|
|
8
9
|
triggerGroupColumns?: (groupedColumns: string[]) => void;
|
|
9
10
|
tableRef: any;
|
|
10
11
|
bottomToolbar?: () => React.ReactElement;
|
|
11
12
|
getRowKey: GetRowKey<T>;
|
|
12
13
|
rowSelection?: any;
|
|
13
14
|
groupToolbar?: () => React.ReactNode;
|
|
15
|
+
isFilter?: boolean;
|
|
16
|
+
setIsFilter?: React.Dispatch<React.SetStateAction<boolean>>;
|
|
14
17
|
};
|
|
15
18
|
declare const TableGrid: <RecordType extends object>(props: GridProps<RecordType>) => React.JSX.Element;
|
|
16
19
|
export default TableGrid;
|
|
@@ -21,6 +21,7 @@ var _LoadingSpinner = _interopRequireDefault(require("./LoadingSpinner"));
|
|
|
21
21
|
var _ColumnsChoose = require("./ColumnsChoose");
|
|
22
22
|
var _useMergedState = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
|
|
23
23
|
var _AdvanceFilter = _interopRequireDefault(require("./AdvanceFilter"));
|
|
24
|
+
var _reactTooltip = require("react-tooltip");
|
|
24
25
|
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); }
|
|
25
26
|
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; }
|
|
26
27
|
// import {ConfigProvider} from "antd";
|
|
@@ -48,6 +49,40 @@ const convertFilters = filters => {
|
|
|
48
49
|
predicate: "and",
|
|
49
50
|
operator: "lessthanorequal"
|
|
50
51
|
});
|
|
52
|
+
} else if (column?.typeFilter === "NumberRange") {
|
|
53
|
+
if ((filteredKeys[0] || filteredKeys[0] === 0) && !filteredKeys[1]) {
|
|
54
|
+
result.push({
|
|
55
|
+
key,
|
|
56
|
+
field: column?.dataIndex,
|
|
57
|
+
value: filteredKeys[0],
|
|
58
|
+
predicate: "and",
|
|
59
|
+
operator: "greaterthanorequal"
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if ((filteredKeys[1] || filteredKeys[1] === 0) && !filteredKeys[0]) {
|
|
63
|
+
result.push({
|
|
64
|
+
key,
|
|
65
|
+
field: column?.dataIndex,
|
|
66
|
+
value: filteredKeys[1],
|
|
67
|
+
predicate: "and",
|
|
68
|
+
operator: "lessthanorequal"
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if ((filteredKeys[0] || filteredKeys[0] === 0) && (filteredKeys[1] || filteredKeys[1] === 0)) {
|
|
72
|
+
result.push({
|
|
73
|
+
key,
|
|
74
|
+
field: column?.dataIndex,
|
|
75
|
+
value: filteredKeys[0],
|
|
76
|
+
predicate: "and",
|
|
77
|
+
operator: "greaterthanorequal"
|
|
78
|
+
}, {
|
|
79
|
+
key,
|
|
80
|
+
field: column?.dataIndex,
|
|
81
|
+
value: filteredKeys[1],
|
|
82
|
+
predicate: "and",
|
|
83
|
+
operator: "lessthanorequal"
|
|
84
|
+
});
|
|
85
|
+
}
|
|
51
86
|
} else if (column?.typeFilter === 'Checkbox') {
|
|
52
87
|
filteredKeys.forEach(value => {
|
|
53
88
|
result.push({
|
|
@@ -115,6 +150,7 @@ const TableGrid = props => {
|
|
|
115
150
|
showColumnChoose,
|
|
116
151
|
showAdvanceFilter,
|
|
117
152
|
onFilter,
|
|
153
|
+
triggerFilter,
|
|
118
154
|
selectionSettings,
|
|
119
155
|
rowSelection,
|
|
120
156
|
rowSelected,
|
|
@@ -136,6 +172,7 @@ const TableGrid = props => {
|
|
|
136
172
|
groupColumns,
|
|
137
173
|
groupToolbar,
|
|
138
174
|
showEmptyText,
|
|
175
|
+
setIsFilter,
|
|
139
176
|
...rest
|
|
140
177
|
} = props;
|
|
141
178
|
const {
|
|
@@ -162,6 +199,7 @@ const TableGrid = props => {
|
|
|
162
199
|
viewportWidth,
|
|
163
200
|
viewportHeight
|
|
164
201
|
});
|
|
202
|
+
const [filterStates, setFilterState] = _react.default.useState(null);
|
|
165
203
|
|
|
166
204
|
// const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>(defaultSelected);
|
|
167
205
|
|
|
@@ -298,6 +336,18 @@ const TableGrid = props => {
|
|
|
298
336
|
const handleChange = sorter => {
|
|
299
337
|
onSorter?.(sorter);
|
|
300
338
|
};
|
|
339
|
+
const handleOnFilter = queries => {
|
|
340
|
+
if (onFilter) {
|
|
341
|
+
onFilter?.(convertFilters(queries));
|
|
342
|
+
} else {
|
|
343
|
+
setFilterState(convertFilters(queries));
|
|
344
|
+
if (queries && queries.length > 0) {
|
|
345
|
+
setIsFilter?.(true);
|
|
346
|
+
} else {
|
|
347
|
+
setIsFilter?.(false);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
};
|
|
301
351
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_ContextMenu.default, {
|
|
302
352
|
open: menuVisible,
|
|
303
353
|
pos: position,
|
|
@@ -309,7 +359,9 @@ const TableGrid = props => {
|
|
|
309
359
|
}), /*#__PURE__*/_react.default.createElement(_rcMasterUi.Table, (0, _extends2.default)({
|
|
310
360
|
ref: tableRef
|
|
311
361
|
}, rest, {
|
|
362
|
+
tableLayout: 'fixed'
|
|
312
363
|
// id={newGuid()}
|
|
364
|
+
,
|
|
313
365
|
locale: {
|
|
314
366
|
...locale,
|
|
315
367
|
emptyText: showEmptyText !== false ? /*#__PURE__*/_react.default.createElement(_rcMasterUi.Empty, {
|
|
@@ -321,7 +373,8 @@ const TableGrid = props => {
|
|
|
321
373
|
spinning: columns && columns.length === 0 || loading === true,
|
|
322
374
|
indicator: /*#__PURE__*/_react.default.createElement(_LoadingSpinner.default, null)
|
|
323
375
|
},
|
|
324
|
-
dataSource: columns && columns.length > 0 && loading !== true ? dataSource : []
|
|
376
|
+
dataSource: columns && columns.length > 0 && loading !== true ? (0, _hooks.filterDataByColumns3)(dataSource, filterStates) : []
|
|
377
|
+
// dataSource={columns && columns.length > 0 && loading !== true ? dataSource : []}
|
|
325
378
|
// className={styles.customTable}
|
|
326
379
|
,
|
|
327
380
|
className: (0, _classnames.default)(className, {
|
|
@@ -356,10 +409,13 @@ const TableGrid = props => {
|
|
|
356
409
|
// checkStrictly: false,
|
|
357
410
|
|
|
358
411
|
hideSelectAll: !type || type === 'single' || selectionSettings?.mode === 'radio' ? true : hideSelectAll ?? type !== 'multiple'
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
// onScroll={() => {
|
|
415
|
+
// setMenuVisible(false)
|
|
416
|
+
// }}
|
|
417
|
+
,
|
|
418
|
+
|
|
363
419
|
summary: () => {
|
|
364
420
|
if (typeof summary === 'function') {
|
|
365
421
|
return summary(dataSource);
|
|
@@ -398,7 +454,9 @@ const TableGrid = props => {
|
|
|
398
454
|
...pagination
|
|
399
455
|
},
|
|
400
456
|
onFilter: val => {
|
|
401
|
-
|
|
457
|
+
handleOnFilter(val);
|
|
458
|
+
// triggerFilter?.(convertFilters(val))
|
|
459
|
+
// onFilter?.(convertFilters(val))
|
|
402
460
|
},
|
|
403
461
|
onChange: (paging, filters, sorter) => handleChange(sorter),
|
|
404
462
|
title: showToolbar === false ? undefined : () => {
|
|
@@ -460,6 +518,8 @@ const TableGrid = props => {
|
|
|
460
518
|
// @ts-ignore
|
|
461
519
|
,
|
|
462
520
|
showTotal: (total, range) => `${range[0]}-${range[1]} / ${total} ${t ? t(pagination?.locale?.items ?? 'items') : 'items'}`
|
|
463
|
-
}, pagination)), bottomToolbar?.()
|
|
521
|
+
}, pagination)), bottomToolbar?.(), /*#__PURE__*/_react.default.createElement(_reactTooltip.Tooltip, {
|
|
522
|
+
id: "tooltip-header"
|
|
523
|
+
}));
|
|
464
524
|
};
|
|
465
525
|
var _default = exports.default = TableGrid;
|
|
@@ -15,6 +15,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
15
15
|
var _rcMasterUi = require("rc-master-ui");
|
|
16
16
|
var _CheckboxFilter = _interopRequireDefault(require("../../CheckboxFilter"));
|
|
17
17
|
var _useSelection = require("rc-master-ui/es/table/hooks/useSelection");
|
|
18
|
+
var _numberRange = _interopRequireDefault(require("../../number-range"));
|
|
18
19
|
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); }
|
|
19
20
|
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; }
|
|
20
21
|
const {
|
|
@@ -144,11 +145,6 @@ const renderFilter = (column, selectedKeys, setSelectedKeys, confirm, visible, s
|
|
|
144
145
|
const dateRangeFormat = (0, _utils.getDatepickerFormat)(column?.type, column) ?? 'DD/MM/YYYY';
|
|
145
146
|
const find = dataSourceFilter?.find(it => it.key === column?.field);
|
|
146
147
|
const options = find ? find.data : [];
|
|
147
|
-
|
|
148
|
-
// console.log('dataSourceFilter', dataSourceFilter)
|
|
149
|
-
// console.log('options', options)
|
|
150
|
-
// console.log('column', column)
|
|
151
|
-
|
|
152
148
|
switch (type) {
|
|
153
149
|
case 'Number':
|
|
154
150
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -168,39 +164,15 @@ const renderFilter = (column, selectedKeys, setSelectedKeys, confirm, visible, s
|
|
|
168
164
|
}
|
|
169
165
|
}))));
|
|
170
166
|
case 'NumberRange':
|
|
171
|
-
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
167
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_numberRange.default, {
|
|
168
|
+
t: t,
|
|
169
|
+
min: selectedKeys[0],
|
|
170
|
+
max: selectedKeys[1],
|
|
171
|
+
onChange: vals => {
|
|
172
|
+
console.log('NumberRange', vals);
|
|
173
|
+
setSelectedKeys(vals);
|
|
176
174
|
}
|
|
177
|
-
}
|
|
178
|
-
value: selectedKeys[0]
|
|
179
|
-
// thousandSeparator={checkThousandSeparator(thousandSeparator, decimalSeparator)}
|
|
180
|
-
// decimalSeparator={checkDecimalSeparator(thousandSeparator, decimalSeparator)}
|
|
181
|
-
,
|
|
182
|
-
allowNegative: true,
|
|
183
|
-
customInput: _rcMasterUi.Input,
|
|
184
|
-
className: ' rounded-0 input-element form-control'
|
|
185
|
-
// onValueChange={(values: any) => {
|
|
186
|
-
// onChangeValueFilter(type, values.floatValue, 'min')
|
|
187
|
-
// }}
|
|
188
|
-
,
|
|
189
|
-
placeholder: t ? t('Min') : 'Min',
|
|
190
|
-
autoFocus: true
|
|
191
|
-
})), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_reactNumericComponent.NumericFormat, {
|
|
192
|
-
value: selectedKeys[1]
|
|
193
|
-
// thousandSeparator={checkThousandSeparator(thousandSeparator, decimalSeparator)}
|
|
194
|
-
// decimalSeparator={checkDecimalSeparator(thousandSeparator, decimalSeparator)}
|
|
195
|
-
,
|
|
196
|
-
allowNegative: true,
|
|
197
|
-
customInput: _rcMasterUi.Input,
|
|
198
|
-
className: ' rounded-0 input-element form-control',
|
|
199
|
-
onValueChange: () => {
|
|
200
|
-
// onChangeValueFilter(type, values.floatValue, 'max')
|
|
201
|
-
},
|
|
202
|
-
placeholder: t ? t('Max') : 'Max'
|
|
203
|
-
})))));
|
|
175
|
+
})));
|
|
204
176
|
case 'Date':
|
|
205
177
|
const dateValue = selectedKeys[0] ? (0, _utils.convertDateToDayjs)(new Date(selectedKeys[0]), dateFormat) : null;
|
|
206
178
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -451,16 +423,13 @@ const renderFilter = (column, selectedKeys, setSelectedKeys, confirm, visible, s
|
|
|
451
423
|
case 'Checkbox':
|
|
452
424
|
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
453
425
|
className: 'mb-1'
|
|
454
|
-
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_CheckboxFilter.default
|
|
455
|
-
// locale={{
|
|
456
|
-
// filterTitle: 'Chọn tất cả',
|
|
457
|
-
// filterCheckall: 'Chọn tất cả'
|
|
458
|
-
// }}
|
|
459
|
-
, {
|
|
426
|
+
}, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_CheckboxFilter.default, {
|
|
460
427
|
locale: locale,
|
|
461
428
|
selectedKeys: selectedKeys,
|
|
462
|
-
onSelect: setSelectedKeys
|
|
463
|
-
|
|
429
|
+
onSelect: setSelectedKeys
|
|
430
|
+
// options={options}
|
|
431
|
+
,
|
|
432
|
+
options: column.source ? column.source : options ?? [],
|
|
464
433
|
filterMultiple: true,
|
|
465
434
|
open: visible,
|
|
466
435
|
searchValue: searchValue,
|