@teamix/pro 1.2.16 → 1.2.20

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 (86) hide show
  1. package/dist/212.js +49 -49
  2. package/dist/pro.css +1 -1
  3. package/dist/pro.js +2147 -686
  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 +5 -0
  13. package/es/actions/index.js +38 -14
  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 +2 -1
  18. package/es/form/Components/LightFilter/index.d.ts +1 -0
  19. package/es/form/Components/LightFilter/index.js +19 -13
  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 -8
  30. package/es/form/ProForm/index.scss +3 -0
  31. package/es/form/ProForm/useFieldRequest.js +1 -8
  32. package/es/form/SchemaForm/index.js +3 -1
  33. package/es/form/typing.d.ts +11 -2
  34. package/es/index.d.ts +1 -1
  35. package/es/index.js +1 -1
  36. package/es/nocode/configurators/ProTable.js +1 -0
  37. package/es/table/components/Filter/index.js +42 -16
  38. package/es/table/components/Pagination/index.d.ts +3 -0
  39. package/es/table/components/Pagination/index.js +82 -0
  40. package/es/table/components/ToolBar/FilterColumnIcon.js +18 -5
  41. package/es/table/components/ToolBar/index.scss +8 -2
  42. package/es/table/index.js +71 -18
  43. package/es/table/index.scss +7 -1
  44. package/es/table/typing.d.ts +5 -0
  45. package/es/table/utils/columnRender.js +1 -1
  46. package/lib/actions/base.d.ts +2 -1
  47. package/lib/actions/base.js +1 -1
  48. package/lib/actions/danger-pop-confirm.d.ts +5 -0
  49. package/lib/actions/danger-pop-confirm.js +22 -0
  50. package/lib/actions/dialog.d.ts +1 -1
  51. package/lib/actions/dialog.js +35 -36
  52. package/lib/actions/index.d.ts +5 -0
  53. package/lib/actions/index.js +40 -14
  54. package/lib/actions/pop-confirm.d.ts +9 -0
  55. package/lib/actions/pop-confirm.js +23 -0
  56. package/lib/form/Components/LightFilter/componentMap.d.ts +2 -1
  57. package/lib/form/Components/LightFilter/componentMap.js +4 -3
  58. package/lib/form/Components/LightFilter/index.d.ts +1 -0
  59. package/lib/form/Components/LightFilter/index.js +18 -12
  60. package/lib/form/Components/LightFilter/index.scss +14 -4
  61. package/lib/form/Filter/AdvancedFilter.d.ts +7 -0
  62. package/lib/form/Filter/AdvancedFilter.js +133 -0
  63. package/lib/form/Filter/LightFilter.d.ts +7 -0
  64. package/lib/form/Filter/LightFilter.js +99 -0
  65. package/lib/form/Filter/SimpleFilter.d.ts +7 -0
  66. package/lib/form/Filter/SimpleFilter.js +93 -0
  67. package/lib/form/Filter/index2.js +290 -234
  68. package/lib/form/Filter/index2.scss +3 -0
  69. package/lib/form/ProForm/index.js +11 -7
  70. package/lib/form/ProForm/index.scss +3 -0
  71. package/lib/form/ProForm/useFieldRequest.js +1 -9
  72. package/lib/form/SchemaForm/index.js +3 -1
  73. package/lib/form/typing.d.ts +11 -2
  74. package/lib/index.d.ts +1 -1
  75. package/lib/index.js +1 -1
  76. package/lib/nocode/configurators/ProTable.js +1 -0
  77. package/lib/table/components/Filter/index.js +42 -16
  78. package/lib/table/components/Pagination/index.d.ts +3 -0
  79. package/lib/table/components/Pagination/index.js +95 -0
  80. package/lib/table/components/ToolBar/FilterColumnIcon.js +18 -5
  81. package/lib/table/components/ToolBar/index.scss +8 -2
  82. package/lib/table/index.js +69 -17
  83. package/lib/table/index.scss +7 -1
  84. package/lib/table/typing.d.ts +5 -0
  85. package/lib/table/utils/columnRender.js +1 -1
  86. package/package.json +3 -3
@@ -1,235 +1,184 @@
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 './index2.scss'; // 获取Schema是否包含默认值、异步默认值、必选校验等
43
+
44
+ var getSpecialProps = function getSpecialProps(props) {
45
+ var initialValues = props.initialValues,
46
+ initialRequest = props.initialRequest;
47
+ var hasDefault = !!initialValues;
48
+ var hasAsyncDefault = !!initialRequest;
49
+ var hasRequired = false;
50
+
51
+ var hasDefaultOrRule = function hasDefaultOrRule(schema) {
52
+ schema.forEach(function (item) {
53
+ var value = item.default,
54
+ required = item.required,
55
+ rules = item.rules,
56
+ request = item.request,
57
+ dataSource = item.dataSource,
58
+ children = item.children;
59
+ hasDefault = hasDefault || isSignificative(value);
60
+ hasRequired = hasRequired || required || !!rules;
61
+ hasAsyncDefault = hasAsyncDefault || !!request || // 如果dataSource是异步且default取自dataSource
62
+ !!(isPlainObj(dataSource) && isStr(value) && value.indexOf('.dataSource'));
63
+
64
+ if (children === null || children === void 0 ? void 0 : children.length) {
65
+ hasDefaultOrRule(children);
74
66
  }
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
67
+ });
68
+ };
69
+
70
+ hasDefaultOrRule(props.schema);
71
+ return {
72
+ hasDefault: hasDefault,
73
+ hasAsyncDefault: hasAsyncDefault,
74
+ hasRequired: hasRequired
75
+ };
213
76
  };
214
77
  /**
215
78
  * 查询筛选
216
79
  */
217
80
 
81
+
218
82
  var QueryFilter = /*#__PURE__*/memo(function (props) {
219
83
  var addonAfter = props.addonAfter,
220
84
  addonBefore = props.addonBefore,
221
85
  onFilter = props.onFilter,
86
+ onInit = props.onInit,
87
+ onReset = props.onReset,
222
88
  mode = props.mode,
223
89
  expand = props.expand,
224
- otherProps = _objectWithoutProperties(props, _excluded4);
90
+ formRef = props.formRef,
91
+ defaultFilterValue = props.defaultFilterValue,
92
+ otherProps = _objectWithoutProperties(props, _excluded); // 表单默认值初始化回调
93
+
94
+
95
+ var _onFormInit = function onFormInit(form, _ref, configFilterItem) {
96
+ var initialRequest = _ref.initialRequest,
97
+ onInit = _ref.onInit;
98
+
99
+ if (!form.mounted) {
100
+ form.loading = !!initialRequest;
101
+ }
102
+
103
+ var loadingField = Object.values(form.fields).filter(function (field) {
104
+ return !!field.loading;
105
+ });
106
+
107
+ if (form.mounted) {
108
+ if (loadingField.length === 0 && !form.loading) {
109
+ var onInitResult = onInit && onInit(toJS(form.values));
110
+
111
+ if (onInitResult) {
112
+ // 根据onInit返回值,判断是否使用该事件执行筛选,使用过则添加筛选标签
113
+ configFilterItem && configFilterItem(form);
114
+ }
115
+
116
+ _onFormInit = function onFormInit() {};
117
+ }
118
+ }
119
+ }; // 设置当前form
225
120
 
226
- var form = useMemo(function () {
227
- return props.form || createForm({
228
- validateFirst: true
121
+
122
+ var setCurrentForm = function setCurrentForm(formName) {
123
+ currentForm.current = formName;
124
+
125
+ if (formRef) {
126
+ var form = formMap[formName];
127
+ formRef.current = form;
128
+
129
+ formRef.current.updateTags = function () {
130
+ configFilterItem(form);
131
+ };
132
+ }
133
+ }; // 创建简单筛选表单实例
134
+
135
+
136
+ var simpleForm = useMemo(function () {
137
+ return createForm({
138
+ validateFirst: true,
139
+ effects: function effects() {
140
+ onFormReact(function (form) {
141
+ _onFormInit(form, props);
142
+ });
143
+ }
144
+ });
145
+ }, []); // 创建轻量筛选表单实例
146
+
147
+ var lightForm = useMemo(function () {
148
+ return createForm({
149
+ validateFirst: true,
150
+ effects: function effects() {
151
+ onFormInputChange(function () {
152
+ setCurrentForm('light');
153
+ });
154
+ }
155
+ });
156
+ }, []); // 创建高级筛选表单实例
157
+
158
+ var advancedForm = useMemo(function () {
159
+ return createForm({
160
+ validateFirst: true,
161
+ effects: function effects() {
162
+ onFormReact(function (form) {
163
+ _onFormInit(form, props, configFilterItem);
164
+ });
165
+ }
229
166
  });
230
167
  }, []);
168
+ var formMap = {
169
+ simple: simpleForm,
170
+ light: lightForm,
171
+ advanced: advancedForm
172
+ };
231
173
 
232
- var _useState = useState(expand),
174
+ var _getSpecialProps = getSpecialProps(props),
175
+ hasDefault = _getSpecialProps.hasDefault,
176
+ hasAsyncDefault = _getSpecialProps.hasAsyncDefault,
177
+ hasRequired = _getSpecialProps.hasRequired;
178
+
179
+ var hasDefaultOrRequired = hasDefault || hasAsyncDefault || hasRequired;
180
+
181
+ var _useState = useState(!!expand || hasDefaultOrRequired),
233
182
  _useState2 = _slicedToArray(_useState, 2),
234
183
  advancedFilterVisible = _useState2[0],
235
184
  setAdvancedFilterVisible = _useState2[1];
@@ -239,24 +188,24 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
239
188
  tagDataSource = _useState4[0],
240
189
  setTagDataSource = _useState4[1];
241
190
 
191
+ var filterItem = useRef([]);
192
+ var currentForm = useRef(mode === 'panel' ? advancedFilterVisible ? 'advanced' : 'light' : 'simple');
242
193
  var prefixCls = usePrefixCls('', {
243
194
  prefix: 'teamix-pro-form-query-filter'
244
- }); // 展开收起高级筛选
195
+ }); // 设置筛选数据
245
196
 
246
- var toggleAdvancedFilter = useCallback(function () {
247
- setAdvancedFilterVisible(function (visible) {
248
- return !visible;
249
- });
250
- }, []); // 获取标签数据
197
+ var configFilterItem = useCallback(function (form) {
198
+ filterItem.current = getFilterDisplayValues(form);
199
+ }, []); // 获取筛选数据Label
251
200
 
252
- var getTagDataSource = useCallback(function (form) {
201
+ var getFilterDisplayValues = useCallback(function (form) {
253
202
  var displayValues = getFormDisplayValues(form);
254
- return Object.entries(displayValues).map(function (_ref) {
203
+ return Object.entries(displayValues).map(function (_ref2) {
255
204
  var _data$displayValue;
256
205
 
257
- var _ref2 = _slicedToArray(_ref, 2),
258
- key = _ref2[0],
259
- data = _ref2[1];
206
+ var _ref3 = _slicedToArray(_ref2, 2),
207
+ key = _ref3[0],
208
+ data = _ref3[1];
260
209
 
261
210
  return {
262
211
  key: key,
@@ -267,30 +216,129 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
267
216
  }).filter(function (item) {
268
217
  return isSignificative(item.value);
269
218
  });
270
- }, []); // 表单值提交
219
+ }, []); // 设置标签数据
271
220
 
272
- var onFormSubmit = useCallback(function (values) {
273
- setTagDataSource(getTagDataSource(form));
274
- onFilter && onFilter(values);
275
- }, []); // 轻量表单onChange
221
+ var configTag = useCallback(function () {
222
+ setTagDataSource(filterItem.current);
223
+ }, [filterItem.current]); // 展开收起高级筛选
276
224
 
277
- var onLightValueChange = useCallback(function (values) {
278
- form.reset();
279
- setTagDataSource(getTagDataSource(form));
280
- onFilter && onFilter(values);
281
- }, [form]); // 简单表单onChange
225
+ var toggleAdvancedFilter = useCallback(function () {
226
+ var result = !advancedFilterVisible;
282
227
 
283
- var onSimpleValueChange = useCallback(function (values) {
284
- setTagDataSource(getTagDataSource(form));
228
+ if (result) {
229
+ // 展开高级筛选,Light回填Advanced
230
+ if (currentForm.current === 'light') {
231
+ advancedForm.setValues(lightForm.values);
232
+ }
233
+ } else {
234
+ // 收起高级筛选,配置标签数据
235
+ configTag();
236
+ }
237
+
238
+ setAdvancedFilterVisible(result);
239
+ }, [advancedFilterVisible, configTag, currentForm.current]); // 简单搜索Filter
240
+
241
+ var onSimpleFilter = useCallback( /*#__PURE__*/function () {
242
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {
243
+ return regeneratorRuntime.wrap(function _callee$(_context) {
244
+ while (1) {
245
+ switch (_context.prev = _context.next) {
246
+ case 0:
247
+ if (!(currentForm.current === 'simple')) {
248
+ _context.next = 5;
249
+ break;
250
+ }
251
+
252
+ if (!hasRequired) {
253
+ _context.next = 4;
254
+ break;
255
+ }
256
+
257
+ _context.next = 4;
258
+ return simpleForm.validate();
259
+
260
+ case 4:
261
+ onFilter && onFilter(values);
262
+
263
+ case 5:
264
+ case "end":
265
+ return _context.stop();
266
+ }
267
+ }
268
+ }, _callee);
269
+ }));
270
+
271
+ return function (_x) {
272
+ return _ref4.apply(this, arguments);
273
+ };
274
+ }(), [onFilter, currentForm.current, hasRequired]); // 轻量搜索Filter
275
+
276
+ var onLightFilter = useCallback( /*#__PURE__*/function () {
277
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(values) {
278
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
279
+ while (1) {
280
+ switch (_context2.prev = _context2.next) {
281
+ case 0:
282
+ if (!(currentForm.current === 'light')) {
283
+ _context2.next = 6;
284
+ break;
285
+ }
286
+
287
+ onFilter && onFilter(values);
288
+ _context2.next = 4;
289
+ return advancedForm.reset();
290
+
291
+ case 4:
292
+ // 不会触发高级筛选的onReset回调函数
293
+ configFilterItem(advancedForm);
294
+ configTag();
295
+
296
+ case 6:
297
+ case "end":
298
+ return _context2.stop();
299
+ }
300
+ }
301
+ }, _callee2);
302
+ }));
303
+
304
+ return function (_x2) {
305
+ return _ref5.apply(this, arguments);
306
+ };
307
+ }(), [onFilter, currentForm.current]); // 高级筛选Change
308
+
309
+ var onAdvancedChange = useCallback(function () {
310
+ setCurrentForm('advanced');
311
+ }, []); // 高级搜索Filter
312
+
313
+ var onAdvancedFilter = useCallback(function (values) {
314
+ setCurrentForm('advanced');
285
315
  onFilter && onFilter(values);
286
- }, []); // 关闭标签清空表单字段值
316
+ configFilterItem(advancedForm);
317
+ lightForm.reset();
318
+ }, [onFilter, currentForm.current]); // 高级搜索Reset
287
319
 
288
- var onTagClose = useCallback(function (key) {
289
- form.setValuesIn(key, undefined);
290
- }, [form]); // 设置默认值标签数据
320
+ var onAdvancedReset = useCallback(function () {
321
+ setCurrentForm('advanced');
322
+ onReset && onReset(toJS(advancedForm.values));
323
+ configFilterItem(advancedForm);
324
+ lightForm.reset();
325
+ }, [onReset]); // 关闭标签清空表单字段值
291
326
 
327
+ var onTagClose = useCallback(function (key) {
328
+ advancedForm.setValuesIn(key, undefined);
329
+ configFilterItem(advancedForm);
330
+ configTag();
331
+ onFilter && onFilter(toJS(advancedForm.values));
332
+ }, []); // 异步默认值回调,设置form的loading状态为false
333
+
334
+ var onInitialRequestComplete = useCallback(function (_, __, _ref6) {
335
+ var form = _ref6.form;
336
+ form.setState({
337
+ loading: false
338
+ });
339
+ }, []);
292
340
  useEffect(function () {
293
- setTagDataSource(getTagDataSource(form));
341
+ setCurrentForm(currentForm.current);
294
342
  }, []);
295
343
  return /*#__PURE__*/React.createElement("div", {
296
344
  className: cls(prefixCls, props.className)
@@ -301,11 +349,11 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
301
349
  }, addonBefore ? /*#__PURE__*/React.createElement("div", {
302
350
  className: "".concat(prefixCls, "-addonBefore")
303
351
  }, addonBefore) : null, mode === 'panel' ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
304
- className: "".concat(prefixCls, "-inline-form")
352
+ className: cls("".concat(prefixCls, "-inline-form"), hasDefaultOrRequired ? "".concat(prefixCls, "-inline-form-hidden") : '')
305
353
  }, /*#__PURE__*/React.createElement(LightFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
306
- form: form,
307
- onFilter: onLightValueChange,
308
- onSubmit: onFormSubmit
354
+ defaultFilterValue: defaultFilterValue,
355
+ form: lightForm,
356
+ onChange: onLightFilter
309
357
  }))), /*#__PURE__*/React.createElement("div", {
310
358
  className: "".concat(prefixCls, "-toggle")
311
359
  }, /*#__PURE__*/React.createElement(Badge, {
@@ -325,20 +373,20 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
325
373
  }), getMessage('advancedFilter'))))) : /*#__PURE__*/React.createElement("div", {
326
374
  className: "".concat(prefixCls, "-inline-form")
327
375
  }, /*#__PURE__*/React.createElement(SimpleFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
328
- form: form,
329
- onFilter: onSimpleValueChange,
330
- onSubmit: onFormSubmit
376
+ form: simpleForm,
377
+ onChange: onSimpleFilter,
378
+ onSubmit: onSimpleFilter
331
379
  })))), addonAfter ? /*#__PURE__*/React.createElement("div", {
332
380
  className: "".concat(prefixCls, "-addonAfter")
333
381
  }, addonAfter) : null), mode === 'panel' ? /*#__PURE__*/React.createElement("div", {
334
382
  className: "".concat(prefixCls, "-panel")
335
383
  }, /*#__PURE__*/React.createElement("div", {
336
384
  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;
385
+ }, /*#__PURE__*/React.createElement(Tag.Group, null, tagDataSource.map(function (_ref7) {
386
+ var key = _ref7.key,
387
+ label = _ref7.label,
388
+ value = _ref7.value,
389
+ type = _ref7.type;
342
390
  return /*#__PURE__*/React.createElement(Tag.Closeable, {
343
391
  key: key,
344
392
  afterClose: function afterClose() {
@@ -355,8 +403,13 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
355
403
  }))), /*#__PURE__*/React.createElement("div", {
356
404
  className: cls("".concat(prefixCls, "-advanced-wrap"), !advancedFilterVisible ? "".concat(prefixCls, "-advanced-wrap-hidden") : '')
357
405
  }, /*#__PURE__*/React.createElement(AdvancedFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
358
- form: form,
359
- onSubmit: onFormSubmit
406
+ initialRequest: otherProps.initialRequest ? _objectSpread(_objectSpread({}, otherProps.initialRequest), {}, {
407
+ onComplete: onInitialRequestComplete
408
+ }) : undefined,
409
+ form: advancedForm,
410
+ onChange: onAdvancedChange,
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
  }