@teamix/pro 1.2.17 → 1.2.21

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 (103) hide show
  1. package/dist/212.js +49 -49
  2. package/dist/pro.css +1 -1
  3. package/dist/pro.js +2173 -744
  4. package/dist/pro.min.css +1 -1
  5. package/dist/pro.min.js +1 -1
  6. package/es/actions/base.d.ts +2 -1
  7. package/es/actions/base.js +1 -1
  8. package/es/actions/danger-pop-confirm.d.ts +5 -0
  9. package/es/actions/danger-pop-confirm.js +10 -0
  10. package/es/actions/dialog.d.ts +1 -1
  11. package/es/actions/dialog.js +34 -36
  12. package/es/actions/index.d.ts +3 -0
  13. package/es/actions/index.js +10 -0
  14. package/es/actions/pop-confirm.d.ts +9 -0
  15. package/es/actions/pop-confirm.js +9 -0
  16. package/es/form/Components/LightFilter/componentMap.d.ts +2 -1
  17. package/es/form/Components/LightFilter/componentMap.js +4 -2
  18. package/es/form/Components/LightFilter/index.d.ts +1 -0
  19. package/es/form/Components/LightFilter/index.js +34 -16
  20. package/es/form/Components/LightFilter/index.scss +14 -4
  21. package/es/form/Filter/AdvancedFilter.d.ts +7 -0
  22. package/es/form/Filter/AdvancedFilter.js +113 -0
  23. package/es/form/Filter/LightFilter.d.ts +7 -0
  24. package/es/form/Filter/LightFilter.js +79 -0
  25. package/es/form/Filter/SimpleFilter.d.ts +7 -0
  26. package/es/form/Filter/SimpleFilter.js +74 -0
  27. package/es/form/Filter/index2.js +288 -235
  28. package/es/form/Filter/index2.scss +3 -0
  29. package/es/form/ProForm/index.js +11 -7
  30. package/es/form/ProForm/index.scss +3 -0
  31. package/es/form/ProForm/useFieldRequest.js +1 -8
  32. package/es/form/ProForm/useFormDisplayValues.js +4 -2
  33. package/es/form/SchemaForm/index.js +19 -11
  34. package/es/form/SchemaForm/initializeDataSource.d.ts +2 -2
  35. package/es/form/SchemaForm/initializeDataSource.js +4 -9
  36. package/es/form/SchemaForm/initializeRequest.d.ts +2 -2
  37. package/es/form/SchemaForm/initializeRequest.js +4 -10
  38. package/es/form/SchemaForm/initializeRules.d.ts +7 -1
  39. package/es/form/SchemaForm/initializeRules.js +9 -13
  40. package/es/form/SchemaForm/reactions.d.ts +5 -5
  41. package/es/form/SchemaForm/reactions.js +27 -29
  42. package/es/form/typing.d.ts +11 -2
  43. package/es/form/utils.d.ts +8 -7
  44. package/es/form/utils.js +5 -4
  45. package/es/index.d.ts +1 -1
  46. package/es/index.js +1 -1
  47. package/es/table/components/Filter/index.js +1 -0
  48. package/es/table/components/Pagination/index.d.ts +3 -0
  49. package/es/table/components/Pagination/index.js +82 -0
  50. package/es/table/components/ToolBar/FilterColumnIcon.js +18 -5
  51. package/es/table/components/ToolBar/index.scss +8 -2
  52. package/es/table/index.js +71 -18
  53. package/es/table/index.scss +7 -1
  54. package/es/table/typing.d.ts +5 -0
  55. package/lib/actions/base.d.ts +2 -1
  56. package/lib/actions/base.js +1 -1
  57. package/lib/actions/danger-pop-confirm.d.ts +5 -0
  58. package/lib/actions/danger-pop-confirm.js +22 -0
  59. package/lib/actions/dialog.d.ts +1 -1
  60. package/lib/actions/dialog.js +35 -36
  61. package/lib/actions/index.d.ts +3 -0
  62. package/lib/actions/index.js +12 -0
  63. package/lib/actions/pop-confirm.d.ts +9 -0
  64. package/lib/actions/pop-confirm.js +23 -0
  65. package/lib/form/Components/LightFilter/componentMap.d.ts +2 -1
  66. package/lib/form/Components/LightFilter/componentMap.js +6 -4
  67. package/lib/form/Components/LightFilter/index.d.ts +1 -0
  68. package/lib/form/Components/LightFilter/index.js +31 -14
  69. package/lib/form/Components/LightFilter/index.scss +14 -4
  70. package/lib/form/Filter/AdvancedFilter.d.ts +7 -0
  71. package/lib/form/Filter/AdvancedFilter.js +133 -0
  72. package/lib/form/Filter/LightFilter.d.ts +7 -0
  73. package/lib/form/Filter/LightFilter.js +99 -0
  74. package/lib/form/Filter/SimpleFilter.d.ts +7 -0
  75. package/lib/form/Filter/SimpleFilter.js +93 -0
  76. package/lib/form/Filter/index2.js +291 -234
  77. package/lib/form/Filter/index2.scss +3 -0
  78. package/lib/form/ProForm/index.js +10 -6
  79. package/lib/form/ProForm/index.scss +3 -0
  80. package/lib/form/ProForm/useFieldRequest.js +1 -9
  81. package/lib/form/ProForm/useFormDisplayValues.js +3 -1
  82. package/lib/form/SchemaForm/index.js +19 -10
  83. package/lib/form/SchemaForm/initializeDataSource.d.ts +2 -2
  84. package/lib/form/SchemaForm/initializeDataSource.js +4 -11
  85. package/lib/form/SchemaForm/initializeRequest.d.ts +2 -2
  86. package/lib/form/SchemaForm/initializeRequest.js +4 -11
  87. package/lib/form/SchemaForm/initializeRules.d.ts +7 -1
  88. package/lib/form/SchemaForm/initializeRules.js +9 -16
  89. package/lib/form/SchemaForm/reactions.d.ts +5 -5
  90. package/lib/form/SchemaForm/reactions.js +29 -31
  91. package/lib/form/typing.d.ts +11 -2
  92. package/lib/form/utils.d.ts +8 -7
  93. package/lib/form/utils.js +6 -5
  94. package/lib/index.d.ts +1 -1
  95. package/lib/index.js +1 -1
  96. package/lib/table/components/Pagination/index.d.ts +3 -0
  97. package/lib/table/components/Pagination/index.js +95 -0
  98. package/lib/table/components/ToolBar/FilterColumnIcon.js +18 -5
  99. package/lib/table/components/ToolBar/index.scss +8 -2
  100. package/lib/table/index.js +69 -17
  101. package/lib/table/index.scss +7 -1
  102. package/lib/table/typing.d.ts +5 -0
  103. package/package.json +3 -3
@@ -1,235 +1,189 @@
1
- var _excluded = ["schema", "onChange", "onSubmit"],
2
- _excluded2 = ["form", "schema", "onSubmit", "onChange"],
3
- _excluded3 = ["schema", "onSubmit", "onChange", "onReset", "layout", "labelAlign", "wrapperAlign", "labelCol", "wrapperCol"],
4
- _excluded4 = ["addonAfter", "addonBefore", "onFilter", "mode", "expand"];
1
+ var _excluded = ["addonAfter", "addonBefore", "onFilter", "onInit", "onReset", "mode", "expand", "formRef", "defaultFilterValue"];
5
2
 
6
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
7
-
8
- 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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
4
 
10
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11
6
 
12
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
8
 
14
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
9
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
15
10
 
16
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
17
12
 
18
- 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); }
13
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
19
14
 
20
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
15
+ 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."); }
21
16
 
22
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
17
+ 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); }
23
18
 
24
19
  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; }
25
20
 
26
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
27
-
28
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
29
22
 
30
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
31
24
 
32
25
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
33
26
 
34
27
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
35
28
 
36
- import React, { memo, useCallback, useMemo, useState, useEffect } from 'react';
29
+ import React, { memo, useCallback, useMemo, useState, useRef, useEffect } from 'react';
37
30
  import cls from 'classnames';
38
31
  import { Tag, Button, Badge } from '@alicloudfe/components';
39
32
  import TeamixIcon from '@teamix/icon';
40
- import { createForm } from '@formily/core';
41
- import { usePrefixCls, getMessage, isSignificative } from '@teamix/utils';
33
+ import { createForm, onFormReact, onFormInputChange } from '@formily/core';
34
+ import { toJS } from '@formily/reactive';
35
+ import { usePrefixCls, getMessage, isSignificative, isStr, isPlainObj } from '@teamix/utils';
42
36
  import ProField from '../../field/index';
43
- import ProForm from '../ProForm';
44
37
  import fieldTypeMap from '../fieldTypeMap';
45
38
  import { getFormDisplayValues } from '../ProForm/useFormDisplayValues';
46
- import { mergeArrayValue } from '../utils';
47
- import './index2.scss';
48
- /**
49
- * 简单筛选
50
- */
51
-
52
- var SimpleFilter = /*#__PURE__*/memo(function (props) {
53
- var schema = props.schema,
54
- onChange = props.onChange,
55
- onSubmit = props.onSubmit,
56
- otherProps = _objectWithoutProperties(props, _excluded);
57
-
58
- var prefixCls = usePrefixCls('', {
59
- prefix: 'teamix-pro-form-query-filter-simple'
60
- });
61
- var simpleSchema = useMemo(function () {
62
- return [{
63
- component: 'FormFlex',
64
- props: {
65
- size: 8
66
- },
67
- children: schema
68
- }, {
69
- component: 'Submit',
70
- props: {
71
- style: {
72
- display: 'none'
73
- }
39
+ import SimpleFilter from './SimpleFilter';
40
+ import LightFilter from './LightFilter';
41
+ import AdvancedFilter from './AdvancedFilter';
42
+ import debounce from 'lodash.debounce';
43
+ import './index2.scss'; // 获取Schema是否包含默认值、异步默认值、必选校验等
44
+
45
+ var getSpecialProps = function getSpecialProps(props) {
46
+ var initialValues = props.initialValues,
47
+ initialRequest = props.initialRequest;
48
+ var hasDefault = !!initialValues;
49
+ var hasAsyncDefault = !!initialRequest;
50
+ var hasRequired = false;
51
+
52
+ var hasDefaultOrRule = function hasDefaultOrRule(schema) {
53
+ schema.forEach(function (item) {
54
+ var value = item.default,
55
+ required = item.required,
56
+ rules = item.rules,
57
+ request = item.request,
58
+ dataSource = item.dataSource,
59
+ children = item.children;
60
+ hasDefault = hasDefault || isSignificative(value);
61
+ hasRequired = hasRequired || required || !!rules;
62
+ hasAsyncDefault = hasAsyncDefault || !!request || // 如果dataSource是异步且default取自dataSource
63
+ !!(isPlainObj(dataSource) && isStr(value) && value.indexOf('.dataSource'));
64
+
65
+ if (children === null || children === void 0 ? void 0 : children.length) {
66
+ hasDefaultOrRule(children);
74
67
  }
75
- }];
76
- }, [schema]);
77
- return /*#__PURE__*/React.createElement(ProForm, _objectSpread(_objectSpread({}, otherProps), {}, {
78
- className: cls(prefixCls, props.className),
79
- schema: simpleSchema,
80
- feedbackLayout: "popover",
81
- breakpoints: [],
82
- inset: true,
83
- onSubmit: onSubmit,
84
- onChange: onChange
85
- }));
86
- });
87
- /**
88
- * 轻量筛选
89
- */
90
-
91
- var LightFilter = /*#__PURE__*/memo(function (props) {
92
- var form = props.form,
93
- schema = props.schema,
94
- onSubmit = props.onSubmit,
95
- onChange = props.onChange,
96
- otherProps = _objectWithoutProperties(props, _excluded2);
97
-
98
- var prefixCls = usePrefixCls('', {
99
- prefix: 'teamix-pro-form-query-filter-light'
100
- });
101
- var LightSchema = useMemo(function () {
102
- return [{
103
- component: 'LightFilter',
104
- children: schema
105
- }, {
106
- component: 'Submit',
107
- props: {
108
- style: {
109
- display: 'none'
110
- }
111
- }
112
- }];
113
- }, [schema]); // useEffect(() => {
114
- // form.addEffects('onChange', () => {
115
- // onFieldValueChange('',(field:any) => {
116
- // console.log(field.value);
117
- // });
118
- // });
119
- // }, [form, onChange]);
120
-
121
- return /*#__PURE__*/React.createElement(ProForm, _objectSpread(_objectSpread({}, otherProps), {}, {
122
- form: form,
123
- className: cls(prefixCls, props.className),
124
- schema: LightSchema,
125
- feedbackLayout: "popover",
126
- breakpoints: [],
127
- bordered: false,
128
- onSubmit: onSubmit,
129
- onChange: onChange
130
- }));
131
- });
132
- /**
133
- * 高级筛选
134
- */
135
-
136
- var AdvancedFilter = /*#__PURE__*/memo(function (props) {
137
- var schema = props.schema,
138
- onSubmit = props.onSubmit,
139
- onChange = props.onChange,
140
- onReset = props.onReset,
141
- layout = props.layout,
142
- labelAlign = props.labelAlign,
143
- wrapperAlign = props.wrapperAlign,
144
- labelCol = props.labelCol,
145
- wrapperCol = props.wrapperCol,
146
- otherProps = _objectWithoutProperties(props, _excluded3);
147
-
148
- var prefixCls = usePrefixCls('', {
149
- prefix: 'teamix-pro-form-query-filter-advanced'
150
- });
151
- var gridSchema = useMemo(function () {
152
- return [{
153
- name: 'FormGrid',
154
- component: 'FormGrid',
155
- props: {
156
- breakpoints: [480, 720, 990, 1200, Infinity],
157
- maxColumns: [1, 2, 3, 3, 4],
158
- columnGap: 16,
159
- rowGap: 12
160
- },
161
- children: [].concat(_toConsumableArray(schema), [{
162
- component: 'FormGrid.GridColumn',
163
- props: {
164
- gridSpan: -1
165
- },
166
- children: [{
167
- component: 'FormButtonGroup',
168
- props: {
169
- align: 'right'
170
- },
171
- children: [{
172
- component: 'Reset',
173
- props: {
174
- onResetValidateSuccess: onReset,
175
- children: getMessage('reset')
176
- }
177
- }, {
178
- component: 'Submit',
179
- props: {
180
- style: {
181
- marginRight: -8
182
- },
183
- children: getMessage('search')
184
- }
185
- }]
186
- }]
187
- }])
188
- }];
189
- }, [schema, onReset]);
190
- var getTeamixLayout = useMemo(function () {
191
- return {
192
- breakpoints: [990],
193
- layout: mergeArrayValue(['vertical'], layout),
194
- labelAlign: mergeArrayValue(['left'], labelAlign),
195
- wrapperAlign: mergeArrayValue(['left'], wrapperAlign),
196
- labelCol: mergeArrayValue([24], labelCol),
197
- wrapperCol: mergeArrayValue([24], wrapperCol)
198
- };
199
- }, [layout, labelAlign, wrapperAlign, labelCol, wrapperCol]);
200
- return /*#__PURE__*/React.createElement(ProForm, _objectSpread(_objectSpread(_objectSpread({
201
- className: cls(prefixCls, props.className),
202
- schema: gridSchema,
203
- feedbackLayout: "popover"
204
- }, otherProps), getTeamixLayout), {}, {
205
- onSubmit: onSubmit
206
- }));
207
- });
208
- AdvancedFilter.defaultProps = {
209
- layout: 'horizontal',
210
- labelAlign: 'right',
211
- labelCol: 6,
212
- wrapperCol: 18
68
+ });
69
+ };
70
+
71
+ hasDefaultOrRule(props.schema);
72
+ return {
73
+ hasDefault: hasDefault,
74
+ hasAsyncDefault: hasAsyncDefault,
75
+ hasRequired: hasRequired
76
+ };
213
77
  };
214
78
  /**
215
79
  * 查询筛选
216
80
  */
217
81
 
82
+
218
83
  var QueryFilter = /*#__PURE__*/memo(function (props) {
219
84
  var addonAfter = props.addonAfter,
220
85
  addonBefore = props.addonBefore,
221
86
  onFilter = props.onFilter,
87
+ onInit = props.onInit,
88
+ onReset = props.onReset,
222
89
  mode = props.mode,
223
90
  expand = props.expand,
224
- otherProps = _objectWithoutProperties(props, _excluded4);
91
+ formRef = props.formRef,
92
+ defaultFilterValue = props.defaultFilterValue,
93
+ otherProps = _objectWithoutProperties(props, _excluded); // 表单默认值初始化回调
94
+
95
+
96
+ var _onFormInit = function onFormInit(form, _ref, configFilterItem) {
97
+ var initialRequest = _ref.initialRequest,
98
+ onInit = _ref.onInit;
99
+
100
+ if (!form.mounted) {
101
+ form.loading = !!initialRequest;
102
+ }
103
+
104
+ var loadingField = Object.values(form.fields).filter(function (field) {
105
+ return !!field.loading;
106
+ });
107
+
108
+ if (form.mounted) {
109
+ if (loadingField.length === 0 && !form.loading) {
110
+ var onInitResult = onInit && onInit(toJS(form.values));
111
+
112
+ if (onInitResult) {
113
+ // 根据onInit返回值,判断是否使用该事件执行筛选,使用过则添加筛选标签
114
+ configFilterItem && configFilterItem(form);
115
+ }
116
+
117
+ _onFormInit = function onFormInit() {};
118
+ }
119
+ }
120
+ }; // 设置当前form
225
121
 
226
- var form = useMemo(function () {
227
- return props.form || createForm({
228
- validateFirst: true
122
+
123
+ var setCurrentForm = function setCurrentForm(formName) {
124
+ currentForm.current = formName;
125
+
126
+ if (formRef) {
127
+ var form = formMap[formName];
128
+ formRef.current = form;
129
+
130
+ formRef.current.updateTags = function () {
131
+ configFilterItem(form);
132
+ };
133
+ }
134
+ }; // 创建简单筛选表单实例
135
+
136
+
137
+ var simpleForm = useMemo(function () {
138
+ return createForm({
139
+ validateFirst: true,
140
+ effects: function effects() {
141
+ onFormReact(function (form) {
142
+ _onFormInit(form, props);
143
+ });
144
+ }
145
+ });
146
+ }, []); // 创建轻量筛选表单实例
147
+
148
+ var lightForm = useMemo(function () {
149
+ return createForm({
150
+ validateFirst: true,
151
+ effects: function effects() {
152
+ onFormInputChange(function () {
153
+ setCurrentForm('light');
154
+ });
155
+ }
156
+ });
157
+ }, []); // 创建高级筛选表单实例
158
+
159
+ var advancedForm = useMemo(function () {
160
+ return createForm({
161
+ validateFirst: true,
162
+ effects: function effects() {
163
+ onFormReact(function (form) {
164
+ _onFormInit(form, props, configFilterItem);
165
+ });
166
+ onFormInputChange(function (form) {
167
+ // 主动修改高级筛选值
168
+ setCurrentForm('advanced');
169
+ });
170
+ }
229
171
  });
230
172
  }, []);
173
+ var formMap = {
174
+ simple: simpleForm,
175
+ light: lightForm,
176
+ advanced: advancedForm
177
+ };
178
+
179
+ var _getSpecialProps = getSpecialProps(props),
180
+ hasDefault = _getSpecialProps.hasDefault,
181
+ hasAsyncDefault = _getSpecialProps.hasAsyncDefault,
182
+ hasRequired = _getSpecialProps.hasRequired;
183
+
184
+ var hasDefaultOrRequired = hasDefault || hasAsyncDefault || hasRequired;
231
185
 
232
- var _useState = useState(expand),
186
+ var _useState = useState(!!expand || hasDefaultOrRequired),
233
187
  _useState2 = _slicedToArray(_useState, 2),
234
188
  advancedFilterVisible = _useState2[0],
235
189
  setAdvancedFilterVisible = _useState2[1];
@@ -239,24 +193,24 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
239
193
  tagDataSource = _useState4[0],
240
194
  setTagDataSource = _useState4[1];
241
195
 
196
+ var filterItem = useRef([]);
197
+ var currentForm = useRef(mode === 'panel' ? advancedFilterVisible ? 'advanced' : 'light' : 'simple');
242
198
  var prefixCls = usePrefixCls('', {
243
199
  prefix: 'teamix-pro-form-query-filter'
244
- }); // 展开收起高级筛选
200
+ }); // 设置筛选数据
245
201
 
246
- var toggleAdvancedFilter = useCallback(function () {
247
- setAdvancedFilterVisible(function (visible) {
248
- return !visible;
249
- });
250
- }, []); // 获取标签数据
202
+ var configFilterItem = useCallback(function (form) {
203
+ filterItem.current = getFilterDisplayValues(form);
204
+ }, []); // 获取筛选数据Label
251
205
 
252
- var getTagDataSource = useCallback(function (form) {
206
+ var getFilterDisplayValues = useCallback(function (form) {
253
207
  var displayValues = getFormDisplayValues(form);
254
- return Object.entries(displayValues).map(function (_ref) {
208
+ return Object.entries(displayValues).map(function (_ref2) {
255
209
  var _data$displayValue;
256
210
 
257
- var _ref2 = _slicedToArray(_ref, 2),
258
- key = _ref2[0],
259
- data = _ref2[1];
211
+ var _ref3 = _slicedToArray(_ref2, 2),
212
+ key = _ref3[0],
213
+ data = _ref3[1];
260
214
 
261
215
  return {
262
216
  key: key,
@@ -267,30 +221,125 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
267
221
  }).filter(function (item) {
268
222
  return isSignificative(item.value);
269
223
  });
270
- }, []); // 表单值提交
224
+ }, []); // 设置标签数据
271
225
 
272
- var onFormSubmit = useCallback(function (values) {
273
- setTagDataSource(getTagDataSource(form));
274
- onFilter && onFilter(values);
275
- }, []); // 轻量表单onChange
226
+ var configTag = useCallback(function () {
227
+ setTagDataSource(filterItem.current);
228
+ }, [filterItem.current]); // 展开收起高级筛选
276
229
 
277
- var onLightValueChange = useCallback(function (values) {
278
- form.reset();
279
- setTagDataSource(getTagDataSource(form));
280
- onFilter && onFilter(values);
281
- }, [form]); // 简单表单onChange
230
+ var toggleAdvancedFilter = useCallback(function () {
231
+ var result = !advancedFilterVisible;
232
+
233
+ if (result) {
234
+ // 展开高级筛选,Light回填Advanced
235
+ if (currentForm.current === 'light') {
236
+ advancedForm.setValues(lightForm.values);
237
+ }
238
+ } else {
239
+ // 收起高级筛选,配置标签数据
240
+ configTag();
241
+ }
242
+
243
+ setAdvancedFilterVisible(result);
244
+ }, [advancedFilterVisible, configTag, currentForm.current]); // 简单搜索Filter
245
+
246
+ var onSimpleFilter = useCallback( /*#__PURE__*/function () {
247
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {
248
+ return regeneratorRuntime.wrap(function _callee$(_context) {
249
+ while (1) {
250
+ switch (_context.prev = _context.next) {
251
+ case 0:
252
+ if (!(currentForm.current === 'simple')) {
253
+ _context.next = 5;
254
+ break;
255
+ }
256
+
257
+ if (!hasRequired) {
258
+ _context.next = 4;
259
+ break;
260
+ }
261
+
262
+ _context.next = 4;
263
+ return simpleForm.validate();
264
+
265
+ case 4:
266
+ onFilter && onFilter(values);
267
+
268
+ case 5:
269
+ case "end":
270
+ return _context.stop();
271
+ }
272
+ }
273
+ }, _callee);
274
+ }));
282
275
 
283
- var onSimpleValueChange = useCallback(function (values) {
284
- setTagDataSource(getTagDataSource(form));
276
+ return function (_x) {
277
+ return _ref4.apply(this, arguments);
278
+ };
279
+ }(), [onFilter, currentForm.current, hasRequired]); // 轻量搜索Filter
280
+
281
+ var onLightFilter = useCallback( /*#__PURE__*/function () {
282
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(values) {
283
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
284
+ while (1) {
285
+ switch (_context2.prev = _context2.next) {
286
+ case 0:
287
+ if (!(currentForm.current === 'light')) {
288
+ _context2.next = 6;
289
+ break;
290
+ }
291
+
292
+ onFilter && onFilter(values);
293
+ _context2.next = 4;
294
+ return advancedForm.reset();
295
+
296
+ case 4:
297
+ // 不会触发高级筛选的onReset回调函数
298
+ configFilterItem(advancedForm);
299
+ configTag();
300
+
301
+ case 6:
302
+ case "end":
303
+ return _context2.stop();
304
+ }
305
+ }
306
+ }, _callee2);
307
+ }));
308
+
309
+ return function (_x2) {
310
+ return _ref5.apply(this, arguments);
311
+ };
312
+ }(), [onFilter, currentForm.current]); // 高级搜索Filter
313
+
314
+ var onAdvancedFilter = useCallback(function (values) {
315
+ setCurrentForm('advanced');
285
316
  onFilter && onFilter(values);
286
- }, []); // 关闭标签清空表单字段值
317
+ configFilterItem(advancedForm);
318
+ lightForm.reset();
319
+ }, [onFilter, currentForm.current]); // 高级搜索Reset
287
320
 
288
- var onTagClose = useCallback(function (key) {
289
- form.setValuesIn(key, undefined);
290
- }, [form]); // 设置默认值标签数据
321
+ var onAdvancedReset = useCallback(function () {
322
+ setCurrentForm('advanced');
323
+ onReset && onReset(toJS(advancedForm.values));
324
+ configFilterItem(advancedForm);
325
+ lightForm.reset();
326
+ }, [onReset]); // 关闭标签清空表单字段值
291
327
 
328
+ var onTagClose = useCallback(function (key) {
329
+ advancedForm.setValuesIn(key, undefined);
330
+ configFilterItem(advancedForm);
331
+ configTag();
332
+ onFilter && onFilter(toJS(advancedForm.values));
333
+ }, []); // 异步默认值回调,设置form的loading状态为false
334
+
335
+ var onInitialRequestComplete = useCallback(function (_, __, _ref6) {
336
+ var form = _ref6.form;
337
+ form.setState({
338
+ loading: false
339
+ });
340
+ }, []);
292
341
  useEffect(function () {
293
- setTagDataSource(getTagDataSource(form));
342
+ setCurrentForm(currentForm.current);
294
343
  }, []);
295
344
  return /*#__PURE__*/React.createElement("div", {
296
345
  className: cls(prefixCls, props.className)
@@ -301,11 +350,11 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
301
350
  }, addonBefore ? /*#__PURE__*/React.createElement("div", {
302
351
  className: "".concat(prefixCls, "-addonBefore")
303
352
  }, addonBefore) : null, mode === 'panel' ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
304
- className: "".concat(prefixCls, "-inline-form")
353
+ className: cls("".concat(prefixCls, "-inline-form"), hasDefaultOrRequired ? "".concat(prefixCls, "-inline-form-hidden") : '')
305
354
  }, /*#__PURE__*/React.createElement(LightFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
306
- form: form,
307
- onFilter: onLightValueChange,
308
- onSubmit: onFormSubmit
355
+ defaultFilterValue: defaultFilterValue,
356
+ form: lightForm,
357
+ onChange: debounce(onLightFilter, 300)
309
358
  }))), /*#__PURE__*/React.createElement("div", {
310
359
  className: "".concat(prefixCls, "-toggle")
311
360
  }, /*#__PURE__*/React.createElement(Badge, {
@@ -325,20 +374,20 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
325
374
  }), getMessage('advancedFilter'))))) : /*#__PURE__*/React.createElement("div", {
326
375
  className: "".concat(prefixCls, "-inline-form")
327
376
  }, /*#__PURE__*/React.createElement(SimpleFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
328
- form: form,
329
- onFilter: onSimpleValueChange,
330
- onSubmit: onFormSubmit
377
+ form: simpleForm,
378
+ onChange: debounce(onSimpleFilter, 300),
379
+ onSubmit: onSimpleFilter
331
380
  })))), addonAfter ? /*#__PURE__*/React.createElement("div", {
332
381
  className: "".concat(prefixCls, "-addonAfter")
333
382
  }, addonAfter) : null), mode === 'panel' ? /*#__PURE__*/React.createElement("div", {
334
383
  className: "".concat(prefixCls, "-panel")
335
384
  }, /*#__PURE__*/React.createElement("div", {
336
385
  className: cls("".concat(prefixCls, "-tag"), advancedFilterVisible ? "".concat(prefixCls, "-tag-hidden") : '')
337
- }, /*#__PURE__*/React.createElement(Tag.Group, null, tagDataSource.map(function (_ref3) {
338
- var key = _ref3.key,
339
- label = _ref3.label,
340
- value = _ref3.value,
341
- type = _ref3.type;
386
+ }, /*#__PURE__*/React.createElement(Tag.Group, null, tagDataSource.map(function (_ref7) {
387
+ var key = _ref7.key,
388
+ label = _ref7.label,
389
+ value = _ref7.value,
390
+ type = _ref7.type;
342
391
  return /*#__PURE__*/React.createElement(Tag.Closeable, {
343
392
  key: key,
344
393
  afterClose: function afterClose() {
@@ -355,8 +404,12 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
355
404
  }))), /*#__PURE__*/React.createElement("div", {
356
405
  className: cls("".concat(prefixCls, "-advanced-wrap"), !advancedFilterVisible ? "".concat(prefixCls, "-advanced-wrap-hidden") : '')
357
406
  }, /*#__PURE__*/React.createElement(AdvancedFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
358
- form: form,
359
- onSubmit: onFormSubmit
407
+ initialRequest: otherProps.initialRequest ? _objectSpread(_objectSpread({}, otherProps.initialRequest), {}, {
408
+ onComplete: onInitialRequestComplete
409
+ }) : undefined,
410
+ form: advancedForm,
411
+ onSubmit: onAdvancedFilter,
412
+ onReset: onAdvancedReset
360
413
  })))) : null);
361
414
  });
362
415
  QueryFilter.defaultProps = {
@@ -19,6 +19,9 @@ $query-filter: #{$teamix-pro-form}-query-filter;
19
19
  margin-right: 8px;
20
20
  margin-bottom: 8px;
21
21
  }
22
+ .#{$query-filter}-inline-form-hidden {
23
+ display: none;
24
+ }
22
25
  .#{$query-filter}-toggle {
23
26
  margin-bottom: 8px;
24
27
  }