@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.
Files changed (52) hide show
  1. package/dist/assets/iconfont/table/iconfont.css +29 -9
  2. package/dist/assets/iconfont/table/iconfont.ttf +0 -0
  3. package/dist/components/TableMax/TableBody/Row.js +21 -13
  4. package/dist/components/TableMax/TableBody/index.less +14 -0
  5. package/dist/components/TableMax/TableHeader/Cell.d.ts +3 -1
  6. package/dist/components/TableMax/TableHeader/Cell.js +19 -16
  7. package/dist/components/TableMax/TableHeader/index.d.ts +2 -1
  8. package/dist/components/TableMax/TableHeader/index.js +11 -20
  9. package/dist/components/TableMax/TableHeader/index.less +7 -0
  10. package/dist/components/TableMax/TableMax.d.ts +1 -2
  11. package/dist/components/TableMax/TableMax.js +11 -7
  12. package/dist/components/TableMax/components/{ColumnFilter/FilterDateRange → ColumnFilterV2/DateRange}/index.d.ts +2 -1
  13. package/dist/components/TableMax/components/ColumnFilterV2/DateRange/index.js +135 -0
  14. package/dist/components/TableMax/components/{ColumnFilter/FilterDateRange → ColumnFilterV2/DateRange}/index.less +5 -5
  15. package/dist/components/TableMax/components/ColumnFilterV2/Filter.d.ts +9 -0
  16. package/dist/components/TableMax/components/{ColumnFilter/index.js → ColumnFilterV2/Filter.js} +173 -226
  17. package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/MultipleSelect/index.d.ts +3 -1
  18. package/dist/components/TableMax/components/ColumnFilterV2/MultipleSelect/index.js +124 -0
  19. package/dist/components/TableMax/components/ColumnFilterV2/MultipleSelect/index.less +32 -0
  20. package/dist/components/TableMax/components/ColumnFilterV2/NumberRange/index.d.ts +10 -0
  21. package/dist/components/TableMax/components/ColumnFilterV2/NumberRange/index.js +98 -0
  22. package/dist/components/TableMax/components/ColumnFilterV2/NumberRange/index.less +27 -0
  23. package/dist/components/TableMax/components/ColumnFilterV2/SingleSelect/index.d.ts +12 -0
  24. package/dist/components/TableMax/components/ColumnFilterV2/SingleSelect/index.js +107 -0
  25. package/dist/components/TableMax/components/ColumnFilterV2/SingleSelect/index.less +43 -0
  26. package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/customFilterFns.js +1 -1
  27. package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/index.d.ts +15 -1
  28. package/dist/components/TableMax/components/ColumnFilterV2/index.js +149 -0
  29. package/dist/components/TableMax/components/ColumnFilterV2/index.less +23 -0
  30. package/dist/components/TableMax/components/ColumnSetting/index.js +4 -13
  31. package/dist/components/TableMax/components/ColumnSort/customSortFns.d.ts +8 -8
  32. package/dist/components/TableMax/components/ColumnSort/customSortFns.js +43 -8
  33. package/dist/components/TableMax/components/ColumnSort/index.js +8 -1
  34. package/dist/components/TableMax/components/ColumnSort/index.less +6 -4
  35. package/dist/components/TableMax/index.d.ts +2 -2
  36. package/dist/components/TableMax/index.js +1 -1
  37. package/dist/components/TableMax/type.d.ts +33 -5
  38. package/dist/components/TableMax/type.js +21 -1
  39. package/dist/components/TableMax/utils.d.ts +13 -2
  40. package/dist/components/TableMax/utils.js +81 -8
  41. package/dist/themes/variables.less +5 -5
  42. package/dist/themes/variablesConfig.js +6 -6
  43. package/dist/utils/request.d.ts +4 -3
  44. package/dist/utils/request.js +4 -4
  45. package/package.json +1 -1
  46. package/dist/components/TableMax/components/ColumnFilter/FilterDateRange/index.js +0 -101
  47. package/dist/components/TableMax/components/ColumnFilter/MultipleSelect/index.js +0 -52
  48. package/dist/components/TableMax/components/ColumnFilter/MultipleSelect/index.less +0 -20
  49. package/dist/components/TableMax/components/ColumnFilter/SingleSelect/index.d.ts +0 -10
  50. package/dist/components/TableMax/components/ColumnFilter/SingleSelect/index.js +0 -27
  51. package/dist/components/TableMax/components/ColumnFilter/SingleSelect/index.less +0 -8
  52. /package/dist/components/TableMax/components/{ColumnFilter → ColumnFilterV2}/customFilterFns.d.ts +0 -0
@@ -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, useContext, useEffect, useMemo, useState } from 'react';
18
- import { TableContext } from "../../TableMax";
19
- import { noValue } from "../../utils";
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
- import { jsxs as _jsxs } from "react/jsx-runtime";
25
- // 日期筛选组件默认格式
26
- export var defaultDateFormat = 'YYYY-MM-DD';
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 = 11;
113
+ _context.next = 13;
95
114
  break;
96
115
  }
97
116
  _context.prev = 1;
98
- _context.next = 4;
117
+ setApiLoading(true);
118
+ _context.next = 5;
99
119
  return getFilterOptionsFn(inputValue);
100
- case 4:
120
+ case 5:
101
121
  res = _context.sent;
102
122
  // console.log('fetch options :>> ', res);
103
123
  setApiOptions(res);
104
- _context.next = 11;
124
+ _context.next = 12;
105
125
  break;
106
- case 8:
107
- _context.prev = 8;
126
+ case 9:
127
+ _context.prev = 9;
108
128
  _context.t0 = _context["catch"](1);
109
129
  setApiOptions([]);
110
- case 11:
130
+ case 12:
131
+ setApiLoading(false);
132
+ case 13:
111
133
  case "end":
112
134
  return _context.stop();
113
135
  }
114
- }, _callee, null, [[1, 8]]);
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
- fetchOptions(columnFilterValue);
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
- console.log('handleChangeFilterValue with debounce :>> ', newValue);
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, _column$getFacetedMin, _column$getFacetedMin2, _columnDef$cell, _column$getFacetedMin3, _column$getFacetedMin4, _columnDef$cell2;
153
+ var _columnDef$filterComP, _columnDef$filterComP2, _columnDef$filterComP3;
189
154
  switch (type) {
190
155
  case FilterType.Date:
191
- return /*#__PURE__*/_jsx(FilterDateRange, {
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(DatePicker, {
198
- value: columnFilterValue ? dayjs(columnFilterValue) : undefined,
199
- showTime: (_columnDef$filterComP = columnDef.filterComProps) === null || _columnDef$filterComP === void 0 ? void 0 : _columnDef$filterComP.showTime,
200
- format: ((_columnDef$filterComP2 = columnDef.filterComProps) === null || _columnDef$filterComP2 === void 0 ? void 0 : _columnDef$filterComP2.format) || defaultDateFormat,
201
- picker: ((_columnDef$filterComP3 = columnDef.filterComProps) === null || _columnDef$filterComP3 === void 0 ? void 0 : _columnDef$filterComP3.picker) || 'date',
202
- onChange: function onChange(date) {
203
- var _columnDef$filterComP4;
204
- return handleChangeFilterValue(date ? date.format(((_columnDef$filterComP4 = columnDef.filterComProps) === null || _columnDef$filterComP4 === void 0 ? void 0 : _columnDef$filterComP4.format) || defaultDateFormat) : undefined);
205
- },
206
- style: {
207
- width: '100%'
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
- return /*#__PURE__*/_jsxs("div", {
212
- style: {
213
- display: 'flex'
214
- },
215
- children: [/*#__PURE__*/_jsx("div", {
216
- children: /*#__PURE__*/_jsx(InputNumber, {
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
- return /*#__PURE__*/_jsx(InputNumber, {
257
- controls: false,
258
- style: {
259
- width: '100%',
260
- borderRadius: '2px',
261
- padding: '0px 2px'
262
- },
263
- onChange: function onChange(value) {
264
- var res = columnDef.unitsChangeFn ? columnDef.unitsChangeFn(value) : value;
265
- handleChangeFilterValueWithDebounce(res);
266
- },
267
- value: columnDef.unitsChangeFn && columnDef.cell ? columnDef.cell({
268
- getValue: function getValue() {
269
- return columnFilterValue;
270
- }
271
- }) : columnFilterValue
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(AutoComplete, {
275
- options: options,
276
- placeholder: "",
277
- filterOption: !!getFilterOptionsFn ? false : function (inputValue, option) {
278
- var _option$label, _optionStringValue$to;
279
- var optionStringValue = ((_option$label = option === null || option === void 0 ? void 0 : option.label) !== null && _option$label !== void 0 ? _option$label : '') + '';
280
- var inputStringValue = (inputValue !== null && inputValue !== void 0 ? inputValue : '') + '';
281
- // console.log('object', optionStringValue, inputStringValue);
282
- return ((_optionStringValue$to = optionStringValue.toUpperCase()) === null || _optionStringValue$to === void 0 ? void 0 : _optionStringValue$to.indexOf(inputStringValue.toUpperCase().trim())) !== -1;
283
- },
284
- onSearch: onSearch,
285
- onChange: handleChangeFilterValueWithDebounce,
286
- style: {
287
- width: '100%',
288
- borderRadius: '2px',
289
- padding: '0px 2px'
290
- },
291
- allowClear: true,
292
- value: columnFilterValue
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(Input, {
296
- onChange: function onChange(e) {
297
- return handleChangeFilterValueWithDebounce(e.target.value);
298
- },
299
- style: {
300
- borderRadius: '2px'
301
- },
302
- allowClear: true,
303
- value: columnFilterValue
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
- isRemoteSearch: !!getFilterOptionsFn
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
+ }