@arim-aisdc/public-components 2.2.9 → 2.3.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.
- package/dist/assets/iconfont/table/iconfont.css +29 -9
- package/dist/assets/iconfont/table/iconfont.ttf +0 -0
- package/dist/components/TableMax/TableBody/Row.js +21 -13
- package/dist/components/TableMax/TableBody/index.less +14 -0
- package/dist/components/TableMax/TableHeader/Cell.d.ts +3 -1
- package/dist/components/TableMax/TableHeader/Cell.js +19 -16
- package/dist/components/TableMax/TableHeader/index.d.ts +2 -1
- package/dist/components/TableMax/TableHeader/index.js +11 -20
- package/dist/components/TableMax/TableHeader/index.less +7 -0
- package/dist/components/TableMax/TableMax.d.ts +1 -2
- package/dist/components/TableMax/TableMax.js +11 -7
- package/dist/components/TableMax/components/{ColumnFilter/FilterDateRange → ColumnFilterV2/DateRange}/index.d.ts +2 -1
- package/dist/components/TableMax/components/ColumnFilterV2/DateRange/index.js +135 -0
- package/dist/components/TableMax/components/{ColumnFilter/FilterDateRange → ColumnFilterV2/DateRange}/index.less +5 -5
- package/dist/components/TableMax/components/ColumnFilterV2/Filter.d.ts +9 -0
- package/dist/components/TableMax/components/{ColumnFilter/index.js → ColumnFilterV2/Filter.js} +173 -226
- package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/MultipleSelect/index.d.ts +3 -1
- package/dist/components/TableMax/components/ColumnFilterV2/MultipleSelect/index.js +124 -0
- package/dist/components/TableMax/components/ColumnFilterV2/MultipleSelect/index.less +32 -0
- package/dist/components/TableMax/components/ColumnFilterV2/NumberRange/index.d.ts +10 -0
- package/dist/components/TableMax/components/ColumnFilterV2/NumberRange/index.js +98 -0
- package/dist/components/TableMax/components/ColumnFilterV2/NumberRange/index.less +27 -0
- package/dist/components/TableMax/components/ColumnFilterV2/SingleSelect/index.d.ts +12 -0
- package/dist/components/TableMax/components/ColumnFilterV2/SingleSelect/index.js +107 -0
- package/dist/components/TableMax/components/ColumnFilterV2/SingleSelect/index.less +43 -0
- package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/customFilterFns.js +1 -1
- package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/index.d.ts +15 -1
- package/dist/components/TableMax/components/ColumnFilterV2/index.js +149 -0
- package/dist/components/TableMax/components/ColumnFilterV2/index.less +23 -0
- package/dist/components/TableMax/components/ColumnSetting/index.js +4 -13
- package/dist/components/TableMax/components/ColumnSort/customSortFns.d.ts +8 -8
- package/dist/components/TableMax/components/ColumnSort/customSortFns.js +43 -8
- package/dist/components/TableMax/components/ColumnSort/index.js +8 -1
- package/dist/components/TableMax/components/ColumnSort/index.less +6 -4
- package/dist/components/TableMax/index.d.ts +2 -2
- package/dist/components/TableMax/index.js +1 -1
- package/dist/components/TableMax/type.d.ts +33 -5
- package/dist/components/TableMax/type.js +21 -1
- package/dist/components/TableMax/utils.d.ts +13 -2
- package/dist/components/TableMax/utils.js +81 -8
- package/dist/themes/variables.less +5 -5
- package/dist/themes/variablesConfig.js +6 -6
- package/dist/utils/request.d.ts +4 -3
- package/dist/utils/request.js +4 -4
- package/package.json +1 -1
- package/dist/components/TableMax/components/ColumnFilter/FilterDateRange/index.js +0 -101
- package/dist/components/TableMax/components/ColumnFilter/MultipleSelect/index.js +0 -52
- package/dist/components/TableMax/components/ColumnFilter/MultipleSelect/index.less +0 -20
- package/dist/components/TableMax/components/ColumnFilter/SingleSelect/index.d.ts +0 -10
- package/dist/components/TableMax/components/ColumnFilter/SingleSelect/index.js +0 -27
- package/dist/components/TableMax/components/ColumnFilter/SingleSelect/index.less +0 -8
- /package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/customFilterFns.d.ts +0 -0
package/dist/components/TableMax/components/{ColumnFilter/index.js → ColumnFilterV2/Filter.js}
RENAMED
|
@@ -8,58 +8,20 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
8
8
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
9
9
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
10
10
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
11
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
13
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
14
11
|
import { AutoComplete, DatePicker, Input, InputNumber } from 'antd';
|
|
15
12
|
import dayjs from 'dayjs';
|
|
16
13
|
import { debounce } from 'lodash';
|
|
17
|
-
import { useCallback,
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { FilterDateRange } from "./FilterDateRange";
|
|
14
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
15
|
+
import { FilterType, defaultDateFormat } from '.';
|
|
16
|
+
import { DateRange } from "./DateRange";
|
|
21
17
|
import MultipleSelect from "./MultipleSelect";
|
|
18
|
+
import NumberRange from "./NumberRange";
|
|
22
19
|
import SingleSelect from "./SingleSelect";
|
|
23
20
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
// 筛选类型
|
|
29
|
-
export var FilterType = /*#__PURE__*/function (FilterType) {
|
|
30
|
-
FilterType["Date"] = "date";
|
|
31
|
-
FilterType["SingleDate"] = "singleDate";
|
|
32
|
-
FilterType["Integer"] = "integer";
|
|
33
|
-
FilterType["SingleInteger"] = "singleInteger";
|
|
34
|
-
FilterType["SingleSelect"] = "singleSelect";
|
|
35
|
-
FilterType["MultiSelect"] = "multiSelect";
|
|
36
|
-
FilterType["AutoComplete"] = "autoComplete";
|
|
37
|
-
FilterType["Input"] = "input";
|
|
38
|
-
return FilterType;
|
|
39
|
-
}({}); // 输入框
|
|
40
|
-
// 不同筛选类型需要特定的过滤函数
|
|
41
|
-
var FILTER_FN_ENUM = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FilterType.Date, 'timeRangeFilter'), FilterType.SingleDate, 'fuzzyFilter'), FilterType.MultiSelect, 'multiSelectFilter'), FilterType.Integer, 'numberRangeFilter'), FilterType.SingleInteger, 'fuzzyFilter'), FilterType.SingleSelect, 'fuzzyFilter'), FilterType.AutoComplete, 'fuzzyFilter'), FilterType.Input, 'fuzzyFilter');
|
|
42
|
-
|
|
43
|
-
// 给columns配置填充默认的过滤函数
|
|
44
|
-
export function setDefaultFilterFn(columns) {
|
|
45
|
-
columns.forEach(function (column) {
|
|
46
|
-
if (column.filterType && !column.filterFn && FILTER_FN_ENUM[column.filterType]) {
|
|
47
|
-
// 当前列指定了过滤组件,但是没有指定过滤函数,在这里自动补上
|
|
48
|
-
column.filterFn = FILTER_FN_ENUM[column.filterType];
|
|
49
|
-
} else if (!column.filterType && !column.filterFn) {
|
|
50
|
-
// 默认使用MultiSelect组件的场景,加上过滤函数
|
|
51
|
-
column.filterFn = FILTER_FN_ENUM[FilterType.MultiSelect];
|
|
52
|
-
}
|
|
53
|
-
if (column.columns) {
|
|
54
|
-
setDefaultFilterFn(column.columns);
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
return columns;
|
|
58
|
-
}
|
|
59
|
-
export function Filter(_ref) {
|
|
60
|
-
var column = _ref.column;
|
|
61
|
-
var _useContext = useContext(TableContext),
|
|
62
|
-
manualFiltering = _useContext.manualFiltering;
|
|
21
|
+
var Filter = function Filter(_ref) {
|
|
22
|
+
var column = _ref.column,
|
|
23
|
+
onCloseFilterPanel = _ref.onCloseFilterPanel,
|
|
24
|
+
manualFiltering = _ref.manualFiltering;
|
|
63
25
|
var columnDef = column === null || column === void 0 ? void 0 : column.columnDef;
|
|
64
26
|
// 筛选组件类型
|
|
65
27
|
var filterType = columnDef.filterType,
|
|
@@ -67,22 +29,79 @@ export function Filter(_ref) {
|
|
|
67
29
|
getFilterOptionsFn = columnDef.getFilterOptionsFn;
|
|
68
30
|
|
|
69
31
|
// 获取最新的筛选值
|
|
70
|
-
// const columnFilterValue: any = column.getFilterValue();
|
|
71
32
|
var _useState = useState(column.getFilterValue()),
|
|
72
33
|
_useState2 = _slicedToArray(_useState, 2),
|
|
73
34
|
columnFilterValue = _useState2[0],
|
|
74
35
|
setColumnFilterValue = _useState2[1];
|
|
75
|
-
useEffect(function () {
|
|
76
|
-
if (JSON.stringify(column.getFilterValue()) !== JSON.stringify(columnFilterValue)) {
|
|
77
|
-
setColumnFilterValue(column.getFilterValue());
|
|
78
|
-
}
|
|
79
|
-
}, [JSON.stringify(column.getFilterValue())]);
|
|
80
36
|
|
|
81
37
|
// 接口可选值
|
|
82
38
|
var _useState3 = useState([]),
|
|
83
39
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
84
40
|
apiOptions = _useState4[0],
|
|
85
41
|
setApiOptions = _useState4[1];
|
|
42
|
+
var _useState5 = useState(false),
|
|
43
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
44
|
+
apiLoading = _useState6[0],
|
|
45
|
+
setApiLoading = _useState6[1];
|
|
46
|
+
|
|
47
|
+
// 修改表格筛选参数
|
|
48
|
+
var handleChangeFilterValue = function handleChangeFilterValue(value) {
|
|
49
|
+
var newValue = value;
|
|
50
|
+
if (value === null || Array.isArray(value) && value.length === 0) {
|
|
51
|
+
// 值为null或空数组时,清除过滤条件。
|
|
52
|
+
newValue = undefined;
|
|
53
|
+
}
|
|
54
|
+
// console.log('handleChangeFilterValue :>> ', newValue);
|
|
55
|
+
setColumnFilterValue(newValue);
|
|
56
|
+
column.setFilterValue(newValue);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// 修改表格筛选参数(防抖)
|
|
60
|
+
var changeFilterValueWithDebounce = useCallback(debounce(function (value) {
|
|
61
|
+
var newValue = value;
|
|
62
|
+
if (value === null || Array.isArray(value) && value.length === 0) {
|
|
63
|
+
// 值为null或空数组时,清除过滤条件。
|
|
64
|
+
newValue = undefined;
|
|
65
|
+
}
|
|
66
|
+
// console.log('handleChangeFilterValue with debounce :>> ', newValue);
|
|
67
|
+
column.setFilterValue(newValue);
|
|
68
|
+
}, 500), [column]);
|
|
69
|
+
|
|
70
|
+
// 修改表格筛选参数(防抖)
|
|
71
|
+
var handleChangeFilterValueWithDebounce = function handleChangeFilterValueWithDebounce(value) {
|
|
72
|
+
changeFilterValueWithDebounce(value);
|
|
73
|
+
setColumnFilterValue(value);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// 最终展示的可选值
|
|
77
|
+
var options = useMemo(function () {
|
|
78
|
+
// 这几个类型的筛选组件不需要可选值
|
|
79
|
+
if (filterType && [FilterType.Date, FilterType.DateRange, FilterType.SingleDate, FilterType.Integer, FilterType.NumberRange, FilterType.SingleInteger, FilterType.SingleNumber, FilterType.Input].includes(filterType)) {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
// 用户自定义可选值
|
|
83
|
+
if (filterOptions) {
|
|
84
|
+
return filterOptions;
|
|
85
|
+
}
|
|
86
|
+
// 接口获取的可选值
|
|
87
|
+
if (getFilterOptionsFn && Array.isArray(apiOptions)) {
|
|
88
|
+
return apiOptions;
|
|
89
|
+
}
|
|
90
|
+
// 后端筛选时,不再填充可选值
|
|
91
|
+
if (manualFiltering) {
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
// 获取当前列所有行的值,去重后作为可选值
|
|
95
|
+
return Array.from(column.getFacetedUniqueValues().keys()).sort().filter(function (item) {
|
|
96
|
+
return !!item || item === 0;
|
|
97
|
+
}).map(function (item) {
|
|
98
|
+
return {
|
|
99
|
+
value: item + '',
|
|
100
|
+
label: item + ''
|
|
101
|
+
};
|
|
102
|
+
});
|
|
103
|
+
}, [column.getFacetedUniqueValues(), filterOptions, manualFiltering, apiOptions]);
|
|
104
|
+
|
|
86
105
|
// 调用接口获取可选值
|
|
87
106
|
var fetchOptions = useCallback( /*#__PURE__*/function () {
|
|
88
107
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(inputValue) {
|
|
@@ -91,27 +110,30 @@ export function Filter(_ref) {
|
|
|
91
110
|
while (1) switch (_context.prev = _context.next) {
|
|
92
111
|
case 0:
|
|
93
112
|
if (!getFilterOptionsFn) {
|
|
94
|
-
_context.next =
|
|
113
|
+
_context.next = 13;
|
|
95
114
|
break;
|
|
96
115
|
}
|
|
97
116
|
_context.prev = 1;
|
|
98
|
-
|
|
117
|
+
setApiLoading(true);
|
|
118
|
+
_context.next = 5;
|
|
99
119
|
return getFilterOptionsFn(inputValue);
|
|
100
|
-
case
|
|
120
|
+
case 5:
|
|
101
121
|
res = _context.sent;
|
|
102
122
|
// console.log('fetch options :>> ', res);
|
|
103
123
|
setApiOptions(res);
|
|
104
|
-
_context.next =
|
|
124
|
+
_context.next = 12;
|
|
105
125
|
break;
|
|
106
|
-
case
|
|
107
|
-
_context.prev =
|
|
126
|
+
case 9:
|
|
127
|
+
_context.prev = 9;
|
|
108
128
|
_context.t0 = _context["catch"](1);
|
|
109
129
|
setApiOptions([]);
|
|
110
|
-
case
|
|
130
|
+
case 12:
|
|
131
|
+
setApiLoading(false);
|
|
132
|
+
case 13:
|
|
111
133
|
case "end":
|
|
112
134
|
return _context.stop();
|
|
113
135
|
}
|
|
114
|
-
}, _callee, null, [[1,
|
|
136
|
+
}, _callee, null, [[1, 9]]);
|
|
115
137
|
}));
|
|
116
138
|
return function (_x) {
|
|
117
139
|
return _ref2.apply(this, arguments);
|
|
@@ -121,186 +143,106 @@ export function Filter(_ref) {
|
|
|
121
143
|
// console.log('onSearch', value);
|
|
122
144
|
fetchOptions(value);
|
|
123
145
|
}, 500), [fetchOptions]);
|
|
124
|
-
|
|
125
|
-
// 回显
|
|
126
146
|
useEffect(function () {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
// 最终展示的可选值
|
|
131
|
-
var options = useMemo(function () {
|
|
132
|
-
// 这几个类型的筛选组件不需要可选值
|
|
133
|
-
if (filterType && [FilterType.Date, FilterType.SingleDate, FilterType.Integer, FilterType.SingleInteger, FilterType.Input].includes(filterType)) {
|
|
134
|
-
return [];
|
|
135
|
-
}
|
|
136
|
-
// 用户自定义可选值
|
|
137
|
-
if (filterOptions) {
|
|
138
|
-
return filterOptions;
|
|
139
|
-
}
|
|
140
|
-
// 接口获取的可选值
|
|
141
|
-
if (getFilterOptionsFn && Array.isArray(apiOptions)) {
|
|
142
|
-
return apiOptions;
|
|
143
|
-
}
|
|
144
|
-
// 后端筛选时,不再填充可选值
|
|
145
|
-
if (manualFiltering) {
|
|
146
|
-
return [];
|
|
147
|
-
}
|
|
148
|
-
// 获取当前列所有行的值,去重后作为可选值
|
|
149
|
-
return Array.from(column.getFacetedUniqueValues().keys()).sort().filter(function (item) {
|
|
150
|
-
return !!item || item === 0;
|
|
151
|
-
}).map(function (item) {
|
|
152
|
-
return {
|
|
153
|
-
value: item + '',
|
|
154
|
-
label: item + ''
|
|
155
|
-
};
|
|
156
|
-
});
|
|
157
|
-
}, [column.getFacetedUniqueValues(), filterOptions, manualFiltering, apiOptions]);
|
|
158
|
-
|
|
159
|
-
// 修改表格筛选参数(防抖)
|
|
160
|
-
var changeFilterValueWithDebounce = useCallback(debounce(function (value) {
|
|
161
|
-
var newValue = value;
|
|
162
|
-
if (value === null || Array.isArray(value) && value.length === 0) {
|
|
163
|
-
// 值为null或空数组时,清除过滤条件。
|
|
164
|
-
newValue = undefined;
|
|
147
|
+
if ([FilterType.MultiSelect, FilterType.SingleSelect].includes(filterType)) {
|
|
148
|
+
// 打开后自动获取可选值
|
|
149
|
+
fetchOptions('');
|
|
165
150
|
}
|
|
166
|
-
|
|
167
|
-
column.setFilterValue(newValue);
|
|
168
|
-
}, 500), [column]);
|
|
169
|
-
|
|
170
|
-
// 修改表格筛选参数(防抖)
|
|
171
|
-
var handleChangeFilterValueWithDebounce = function handleChangeFilterValueWithDebounce(value) {
|
|
172
|
-
changeFilterValueWithDebounce(value);
|
|
173
|
-
setColumnFilterValue(value);
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
// 修改表格筛选参数
|
|
177
|
-
var handleChangeFilterValue = function handleChangeFilterValue(value) {
|
|
178
|
-
var newValue = value;
|
|
179
|
-
if (value === null || Array.isArray(value) && value.length === 0) {
|
|
180
|
-
// 值为null或空数组时,清除过滤条件。
|
|
181
|
-
newValue = undefined;
|
|
182
|
-
}
|
|
183
|
-
console.log('handleChangeFilterValue :>> ', newValue);
|
|
184
|
-
setColumnFilterValue(newValue);
|
|
185
|
-
column.setFilterValue(newValue);
|
|
186
|
-
};
|
|
151
|
+
}, []);
|
|
187
152
|
var filterComponent = function filterComponent(type) {
|
|
188
|
-
var _columnDef$filterComP, _columnDef$filterComP2, _columnDef$filterComP3
|
|
153
|
+
var _columnDef$filterComP, _columnDef$filterComP2, _columnDef$filterComP3;
|
|
189
154
|
switch (type) {
|
|
190
155
|
case FilterType.Date:
|
|
191
|
-
|
|
156
|
+
case FilterType.DateRange:
|
|
157
|
+
return /*#__PURE__*/_jsx(DateRange, {
|
|
192
158
|
onChange: handleChangeFilterValue,
|
|
193
159
|
value: columnFilterValue,
|
|
194
|
-
columnDef: columnDef
|
|
160
|
+
columnDef: columnDef,
|
|
161
|
+
manualFiltering: manualFiltering
|
|
195
162
|
});
|
|
196
163
|
case FilterType.SingleDate:
|
|
197
|
-
return /*#__PURE__*/_jsx(
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
164
|
+
return /*#__PURE__*/_jsx("div", {
|
|
165
|
+
className: "single-com-wrapper",
|
|
166
|
+
children: /*#__PURE__*/_jsx(DatePicker, {
|
|
167
|
+
value: columnFilterValue ? dayjs(columnFilterValue) : undefined,
|
|
168
|
+
showTime: (_columnDef$filterComP = columnDef.filterComProps) === null || _columnDef$filterComP === void 0 ? void 0 : _columnDef$filterComP.showTime,
|
|
169
|
+
format: ((_columnDef$filterComP2 = columnDef.filterComProps) === null || _columnDef$filterComP2 === void 0 ? void 0 : _columnDef$filterComP2.format) || defaultDateFormat,
|
|
170
|
+
picker: ((_columnDef$filterComP3 = columnDef.filterComProps) === null || _columnDef$filterComP3 === void 0 ? void 0 : _columnDef$filterComP3.picker) || 'date',
|
|
171
|
+
onChange: function onChange(date) {
|
|
172
|
+
var _columnDef$filterComP4;
|
|
173
|
+
return handleChangeFilterValue(date ? date.format(((_columnDef$filterComP4 = columnDef.filterComProps) === null || _columnDef$filterComP4 === void 0 ? void 0 : _columnDef$filterComP4.format) || defaultDateFormat) : undefined);
|
|
174
|
+
},
|
|
175
|
+
style: {
|
|
176
|
+
width: 188
|
|
177
|
+
}
|
|
178
|
+
})
|
|
209
179
|
});
|
|
210
180
|
case FilterType.Integer:
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
placeholder: "".concat((_column$getFacetedMin = column.getFacetedMinMaxValues()) !== null && _column$getFacetedMin !== void 0 && _column$getFacetedMin[0] ? "(".concat((_column$getFacetedMin2 = column.getFacetedMinMaxValues()) === null || _column$getFacetedMin2 === void 0 ? void 0 : _column$getFacetedMin2[0], ")") : ''),
|
|
218
|
-
controls: false,
|
|
219
|
-
onChange: function onChange(value) {
|
|
220
|
-
var min = columnDef.unitsChangeFn && typeof value === 'number' ? columnDef.unitsChangeFn(value) : value;
|
|
221
|
-
handleChangeFilterValueWithDebounce(function (old) {
|
|
222
|
-
if (noValue(min) && noValue(old === null || old === void 0 ? void 0 : old[1])) {
|
|
223
|
-
return undefined;
|
|
224
|
-
}
|
|
225
|
-
return [min, old === null || old === void 0 ? void 0 : old[1]];
|
|
226
|
-
});
|
|
227
|
-
},
|
|
228
|
-
value: columnDef.unitsChangeFn ? (_columnDef$cell = columnDef.cell) === null || _columnDef$cell === void 0 ? void 0 : _columnDef$cell.call(columnDef, {
|
|
229
|
-
getValue: function getValue() {
|
|
230
|
-
return columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[0];
|
|
231
|
-
}
|
|
232
|
-
}) : columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[0]
|
|
233
|
-
})
|
|
234
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
235
|
-
children: /*#__PURE__*/_jsx(InputNumber, {
|
|
236
|
-
placeholder: "".concat((_column$getFacetedMin3 = column.getFacetedMinMaxValues()) !== null && _column$getFacetedMin3 !== void 0 && _column$getFacetedMin3[1] ? "(".concat((_column$getFacetedMin4 = column.getFacetedMinMaxValues()) === null || _column$getFacetedMin4 === void 0 ? void 0 : _column$getFacetedMin4[1], ")") : ''),
|
|
237
|
-
controls: false,
|
|
238
|
-
onChange: function onChange(value) {
|
|
239
|
-
var max = columnDef.unitsChangeFn && typeof value === 'number' ? columnDef.unitsChangeFn(value) : value;
|
|
240
|
-
handleChangeFilterValueWithDebounce(function (old) {
|
|
241
|
-
if (noValue(old === null || old === void 0 ? void 0 : old[0]) && noValue(max)) {
|
|
242
|
-
return undefined;
|
|
243
|
-
}
|
|
244
|
-
return [old === null || old === void 0 ? void 0 : old[0], max];
|
|
245
|
-
});
|
|
246
|
-
},
|
|
247
|
-
value: columnDef.unitsChangeFn ? (_columnDef$cell2 = columnDef.cell) === null || _columnDef$cell2 === void 0 ? void 0 : _columnDef$cell2.call(columnDef, {
|
|
248
|
-
getValue: function getValue() {
|
|
249
|
-
return columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[1];
|
|
250
|
-
}
|
|
251
|
-
}) : columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[1]
|
|
252
|
-
})
|
|
253
|
-
})]
|
|
181
|
+
case FilterType.NumberRange:
|
|
182
|
+
return /*#__PURE__*/_jsx(NumberRange, {
|
|
183
|
+
onChange: handleChangeFilterValue,
|
|
184
|
+
value: columnFilterValue,
|
|
185
|
+
column: column,
|
|
186
|
+
onCloseFilterPanel: onCloseFilterPanel
|
|
254
187
|
});
|
|
255
188
|
case FilterType.SingleInteger:
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
189
|
+
case FilterType.SingleNumber:
|
|
190
|
+
return /*#__PURE__*/_jsx("div", {
|
|
191
|
+
className: "single-com-wrapper",
|
|
192
|
+
children: /*#__PURE__*/_jsx(InputNumber, {
|
|
193
|
+
controls: false,
|
|
194
|
+
style: {
|
|
195
|
+
width: '100%',
|
|
196
|
+
borderRadius: '2px',
|
|
197
|
+
padding: '0px 2px'
|
|
198
|
+
},
|
|
199
|
+
onChange: function onChange(value) {
|
|
200
|
+
var res = columnDef.unitsChangeFn ? columnDef.unitsChangeFn(value) : value;
|
|
201
|
+
handleChangeFilterValueWithDebounce(res);
|
|
202
|
+
},
|
|
203
|
+
value: columnDef.unitsChangeFn && columnDef.cell ? columnDef.cell({
|
|
204
|
+
getValue: function getValue() {
|
|
205
|
+
return columnFilterValue;
|
|
206
|
+
}
|
|
207
|
+
}) : columnFilterValue
|
|
208
|
+
})
|
|
272
209
|
});
|
|
273
210
|
case FilterType.AutoComplete:
|
|
274
|
-
return /*#__PURE__*/_jsx(
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
211
|
+
return /*#__PURE__*/_jsx("div", {
|
|
212
|
+
className: "single-com-wrapper",
|
|
213
|
+
children: /*#__PURE__*/_jsx(AutoComplete, {
|
|
214
|
+
options: options,
|
|
215
|
+
placeholder: "",
|
|
216
|
+
filterOption: !!getFilterOptionsFn ? false : function (inputValue, option) {
|
|
217
|
+
var _option$label, _optionStringValue$to;
|
|
218
|
+
var optionStringValue = ((_option$label = option === null || option === void 0 ? void 0 : option.label) !== null && _option$label !== void 0 ? _option$label : '') + '';
|
|
219
|
+
var inputStringValue = (inputValue !== null && inputValue !== void 0 ? inputValue : '') + '';
|
|
220
|
+
// console.log('object', optionStringValue, inputStringValue);
|
|
221
|
+
return ((_optionStringValue$to = optionStringValue.toUpperCase()) === null || _optionStringValue$to === void 0 ? void 0 : _optionStringValue$to.indexOf(inputStringValue.toUpperCase().trim())) !== -1;
|
|
222
|
+
},
|
|
223
|
+
onSearch: onSearch,
|
|
224
|
+
onChange: handleChangeFilterValueWithDebounce,
|
|
225
|
+
style: {
|
|
226
|
+
width: 188
|
|
227
|
+
},
|
|
228
|
+
allowClear: true,
|
|
229
|
+
value: columnFilterValue
|
|
230
|
+
})
|
|
293
231
|
});
|
|
294
232
|
case FilterType.Input:
|
|
295
|
-
return /*#__PURE__*/_jsx(
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
233
|
+
return /*#__PURE__*/_jsx("div", {
|
|
234
|
+
className: "single-com-wrapper",
|
|
235
|
+
children: /*#__PURE__*/_jsx(Input, {
|
|
236
|
+
onChange: function onChange(e) {
|
|
237
|
+
return handleChangeFilterValueWithDebounce(e.target.value);
|
|
238
|
+
},
|
|
239
|
+
style: {
|
|
240
|
+
width: 188
|
|
241
|
+
},
|
|
242
|
+
allowClear: true,
|
|
243
|
+
value: columnFilterValue,
|
|
244
|
+
placeholder: "\u8BF7\u8F93\u5165\u5173\u952E\u5B57\u641C\u7D22"
|
|
245
|
+
})
|
|
304
246
|
});
|
|
305
247
|
case FilterType.SingleSelect:
|
|
306
248
|
return /*#__PURE__*/_jsx(SingleSelect, {
|
|
@@ -308,7 +250,9 @@ export function Filter(_ref) {
|
|
|
308
250
|
onChange: handleChangeFilterValue,
|
|
309
251
|
onSearch: onSearch,
|
|
310
252
|
options: options,
|
|
311
|
-
isRemoteSearch: !!getFilterOptionsFn
|
|
253
|
+
isRemoteSearch: !!getFilterOptionsFn,
|
|
254
|
+
onCloseFilterPanel: onCloseFilterPanel,
|
|
255
|
+
loading: apiLoading
|
|
312
256
|
});
|
|
313
257
|
case FilterType.MultiSelect:
|
|
314
258
|
default:
|
|
@@ -317,9 +261,12 @@ export function Filter(_ref) {
|
|
|
317
261
|
onChange: handleChangeFilterValue,
|
|
318
262
|
onSearch: onSearch,
|
|
319
263
|
options: options,
|
|
320
|
-
|
|
264
|
+
loading: apiLoading,
|
|
265
|
+
isRemoteSearch: !!getFilterOptionsFn,
|
|
266
|
+
onCloseFilterPanel: onCloseFilterPanel
|
|
321
267
|
});
|
|
322
268
|
}
|
|
323
269
|
};
|
|
324
270
|
return filterComponent(columnDef.filterType);
|
|
325
|
-
}
|
|
271
|
+
};
|
|
272
|
+
export default Filter;
|
|
@@ -5,6 +5,8 @@ interface IProps {
|
|
|
5
5
|
onChange: (value: any[]) => void;
|
|
6
6
|
onSearch: (value: string) => void;
|
|
7
7
|
isRemoteSearch: boolean;
|
|
8
|
+
loading: boolean;
|
|
9
|
+
onCloseFilterPanel: () => void;
|
|
8
10
|
}
|
|
9
|
-
declare const MultipleSelect: ({ value, onChange, options, onSearch, isRemoteSearch }: IProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare const MultipleSelect: ({ value, onChange, options, onSearch, isRemoteSearch, loading, onCloseFilterPanel, }: IProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
12
|
export default MultipleSelect;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { useUpdateEffect } from 'ahooks';
|
|
8
|
+
import { Button, Checkbox, Input, Spin } from 'antd';
|
|
9
|
+
import { useMemo, useState } from 'react';
|
|
10
|
+
import "./index.less";
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
var CheckboxGroup = Checkbox.Group;
|
|
15
|
+
var MultipleSelect = function MultipleSelect(_ref) {
|
|
16
|
+
var _ref$value = _ref.value,
|
|
17
|
+
value = _ref$value === void 0 ? [] : _ref$value,
|
|
18
|
+
onChange = _ref.onChange,
|
|
19
|
+
options = _ref.options,
|
|
20
|
+
onSearch = _ref.onSearch,
|
|
21
|
+
isRemoteSearch = _ref.isRemoteSearch,
|
|
22
|
+
loading = _ref.loading,
|
|
23
|
+
onCloseFilterPanel = _ref.onCloseFilterPanel;
|
|
24
|
+
// 内部state
|
|
25
|
+
var _useState = useState(Array.isArray(value) ? value : [value]),
|
|
26
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
27
|
+
innerValue = _useState2[0],
|
|
28
|
+
setInnerValue = _useState2[1];
|
|
29
|
+
|
|
30
|
+
// 前端搜索输入值
|
|
31
|
+
var _useState3 = useState(''),
|
|
32
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
33
|
+
frontendSearchValue = _useState4[0],
|
|
34
|
+
setFrontendSearchValue = _useState4[1];
|
|
35
|
+
var checkAll = options.length === innerValue.length;
|
|
36
|
+
var indeterminate = innerValue.length > 0 && innerValue.length < options.length;
|
|
37
|
+
var handleCheckBoxChange = function handleCheckBoxChange(changedValue) {
|
|
38
|
+
console.log('changedValue :>> ', changedValue);
|
|
39
|
+
setInnerValue(changedValue);
|
|
40
|
+
};
|
|
41
|
+
var handleConfirm = function handleConfirm() {
|
|
42
|
+
onChange(innerValue);
|
|
43
|
+
onCloseFilterPanel();
|
|
44
|
+
};
|
|
45
|
+
var handleReset = function handleReset() {
|
|
46
|
+
setInnerValue([]);
|
|
47
|
+
onChange([]);
|
|
48
|
+
};
|
|
49
|
+
useUpdateEffect(function () {
|
|
50
|
+
// console.log('value :>> ', value);
|
|
51
|
+
setInnerValue(Array.isArray(value) ? value : [value]);
|
|
52
|
+
}, [value.toString()]);
|
|
53
|
+
var onCheckAllChange = function onCheckAllChange(e) {
|
|
54
|
+
console.log('checkAll :>> ', e.target.checked);
|
|
55
|
+
var checkAll = e.target.checked;
|
|
56
|
+
if (checkAll) {
|
|
57
|
+
setInnerValue(options.map(function (item) {
|
|
58
|
+
return item.value;
|
|
59
|
+
}));
|
|
60
|
+
} else {
|
|
61
|
+
setInnerValue([]);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
var handleInputChange = function handleInputChange(e) {
|
|
65
|
+
var value = e.target.value;
|
|
66
|
+
if (isRemoteSearch) {
|
|
67
|
+
onSearch(value);
|
|
68
|
+
} else {
|
|
69
|
+
setFrontendSearchValue(value);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// 最终的可选值
|
|
74
|
+
var finalOptions = useMemo(function () {
|
|
75
|
+
if (isRemoteSearch) {
|
|
76
|
+
return options;
|
|
77
|
+
}
|
|
78
|
+
var input = (frontendSearchValue !== null && frontendSearchValue !== void 0 ? frontendSearchValue : '').toUpperCase().trim();
|
|
79
|
+
return options.filter(function (option) {
|
|
80
|
+
var _option$label;
|
|
81
|
+
var optionFilterString = ('' + ((_option$label = option.label) !== null && _option$label !== void 0 ? _option$label : option.children)).toUpperCase().trim();
|
|
82
|
+
return optionFilterString.indexOf(input) !== -1;
|
|
83
|
+
});
|
|
84
|
+
}, [options, frontendSearchValue]);
|
|
85
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
86
|
+
className: "tableMax-filter-multipleSelect",
|
|
87
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
88
|
+
className: "header",
|
|
89
|
+
children: /*#__PURE__*/_jsx(Input, {
|
|
90
|
+
placeholder: "\u8F93\u5165\u641C\u7D22",
|
|
91
|
+
onChange: handleInputChange
|
|
92
|
+
})
|
|
93
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
94
|
+
className: "body",
|
|
95
|
+
children: loading ? /*#__PURE__*/_jsx("div", {
|
|
96
|
+
className: "loading",
|
|
97
|
+
children: /*#__PURE__*/_jsx(Spin, {})
|
|
98
|
+
}) : /*#__PURE__*/_jsxs(_Fragment, {
|
|
99
|
+
children: [/*#__PURE__*/_jsx(Checkbox, {
|
|
100
|
+
indeterminate: indeterminate,
|
|
101
|
+
onChange: onCheckAllChange,
|
|
102
|
+
checked: checkAll,
|
|
103
|
+
children: "\u5168\u9009"
|
|
104
|
+
}), /*#__PURE__*/_jsx(CheckboxGroup, {
|
|
105
|
+
options: finalOptions,
|
|
106
|
+
value: innerValue,
|
|
107
|
+
onChange: handleCheckBoxChange
|
|
108
|
+
})]
|
|
109
|
+
})
|
|
110
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
111
|
+
className: "footer",
|
|
112
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
|
113
|
+
type: "text",
|
|
114
|
+
onClick: handleReset,
|
|
115
|
+
children: "\u91CD\u7F6E"
|
|
116
|
+
}), /*#__PURE__*/_jsx(Button, {
|
|
117
|
+
type: "primary",
|
|
118
|
+
onClick: handleConfirm,
|
|
119
|
+
children: "\u786E\u5B9A"
|
|
120
|
+
})]
|
|
121
|
+
})]
|
|
122
|
+
});
|
|
123
|
+
};
|
|
124
|
+
export default MultipleSelect;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
.tableMax-filter-multipleSelect {
|
|
2
|
+
width: 212px;
|
|
3
|
+
.header {
|
|
4
|
+
border-bottom: 1px solid @tableColor7;
|
|
5
|
+
padding: 8px 12px;
|
|
6
|
+
}
|
|
7
|
+
.body {
|
|
8
|
+
height: 220px;
|
|
9
|
+
overflow-y: auto;
|
|
10
|
+
padding: 4px 12px;
|
|
11
|
+
.loading {
|
|
12
|
+
height: 100%;
|
|
13
|
+
width: 100%;
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
justify-content: center;
|
|
17
|
+
}
|
|
18
|
+
.ant-checkbox-group {
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
.ant-checkbox-wrapper {
|
|
22
|
+
line-height: 24px;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
.footer {
|
|
27
|
+
border-top: 1px solid @tableColor7;
|
|
28
|
+
padding: 8px 12px;
|
|
29
|
+
display: flex;
|
|
30
|
+
justify-content: space-between;
|
|
31
|
+
}
|
|
32
|
+
}
|