@teamix/pro 1.2.19 → 1.2.23

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 +3400 -880
  4. package/dist/pro.min.css +1 -1
  5. package/dist/pro.min.js +1 -1
  6. package/es/actions/dialog.js +10 -24
  7. package/es/actions/index.d.ts +10 -0
  8. package/es/actions/index.js +11 -16
  9. package/es/form/Components/LightFilter/componentMap.js +2 -1
  10. package/es/form/Components/LightFilter/index.js +16 -4
  11. package/es/form/Components/LightFilter/index.scss +1 -1
  12. package/es/form/Components/SelectTable/index.d.ts +24 -0
  13. package/es/form/Components/SelectTable/index.js +135 -0
  14. package/es/form/Components/SelectTable/index.scss +28 -0
  15. package/es/form/Components/SelectTable/table.d.ts +6 -0
  16. package/es/form/Components/SelectTable/table.js +64 -0
  17. package/es/form/Filter/AdvancedFilter.d.ts +7 -0
  18. package/es/form/Filter/AdvancedFilter.js +114 -0
  19. package/es/form/Filter/LightFilter.d.ts +7 -0
  20. package/es/form/Filter/LightFilter.js +79 -0
  21. package/es/form/Filter/SimpleFilter.d.ts +7 -0
  22. package/es/form/Filter/SimpleFilter.js +74 -0
  23. package/es/form/Filter/index2.js +203 -257
  24. package/es/form/ProForm/index.js +12 -9
  25. package/es/form/ProForm/index.scss +40 -6
  26. package/es/form/ProForm/useFormDisplayValues.js +4 -2
  27. package/es/form/SchemaForm/index.js +16 -10
  28. package/es/form/SchemaForm/initializeDataSource.d.ts +2 -2
  29. package/es/form/SchemaForm/initializeDataSource.js +4 -9
  30. package/es/form/SchemaForm/initializeRequest.d.ts +2 -2
  31. package/es/form/SchemaForm/initializeRequest.js +4 -10
  32. package/es/form/SchemaForm/initializeRules.d.ts +7 -1
  33. package/es/form/SchemaForm/initializeRules.js +9 -13
  34. package/es/form/SchemaForm/reactions.d.ts +5 -5
  35. package/es/form/SchemaForm/reactions.js +27 -29
  36. package/es/form/global.scss +1 -0
  37. package/es/form/typing.d.ts +7 -3
  38. package/es/form/utils.d.ts +8 -7
  39. package/es/form/utils.js +5 -4
  40. package/es/index.d.ts +1 -1
  41. package/es/index.js +1 -1
  42. package/es/table/components/Filter/index.js +1 -0
  43. package/es/table/components/Layout/index.js +22 -12
  44. package/es/table/components/Pagination/index.d.ts +7 -0
  45. package/es/table/components/Pagination/index.js +245 -0
  46. package/es/table/components/Pagination/index.scss +50 -0
  47. package/es/table/components/ToolBar/FilterColumnIcon.js +41 -7
  48. package/es/table/components/ToolBar/index.scss +17 -6
  49. package/es/table/index.js +96 -37
  50. package/es/table/index.scss +7 -1
  51. package/es/table/typing.d.ts +9 -2
  52. package/es/table/utils/columnRender.js +2 -1
  53. package/es/table/utils/index.d.ts +7 -0
  54. package/es/table/utils/index.js +38 -4
  55. package/lib/actions/dialog.js +9 -23
  56. package/lib/actions/index.d.ts +10 -0
  57. package/lib/actions/index.js +11 -16
  58. package/lib/form/Components/LightFilter/componentMap.js +2 -1
  59. package/lib/form/Components/LightFilter/index.js +15 -4
  60. package/lib/form/Components/LightFilter/index.scss +1 -1
  61. package/lib/form/Components/SelectTable/index.d.ts +24 -0
  62. package/lib/form/Components/SelectTable/index.js +157 -0
  63. package/lib/form/Components/SelectTable/index.scss +28 -0
  64. package/lib/form/Components/SelectTable/table.d.ts +6 -0
  65. package/lib/form/Components/SelectTable/table.js +76 -0
  66. package/lib/form/Filter/AdvancedFilter.d.ts +7 -0
  67. package/lib/form/Filter/AdvancedFilter.js +134 -0
  68. package/lib/form/Filter/LightFilter.d.ts +7 -0
  69. package/lib/form/Filter/LightFilter.js +99 -0
  70. package/lib/form/Filter/SimpleFilter.d.ts +7 -0
  71. package/lib/form/Filter/SimpleFilter.js +93 -0
  72. package/lib/form/Filter/index2.js +207 -258
  73. package/lib/form/ProForm/index.js +11 -9
  74. package/lib/form/ProForm/index.scss +40 -6
  75. package/lib/form/ProForm/useFormDisplayValues.js +3 -1
  76. package/lib/form/SchemaForm/index.js +16 -9
  77. package/lib/form/SchemaForm/initializeDataSource.d.ts +2 -2
  78. package/lib/form/SchemaForm/initializeDataSource.js +4 -11
  79. package/lib/form/SchemaForm/initializeRequest.d.ts +2 -2
  80. package/lib/form/SchemaForm/initializeRequest.js +4 -11
  81. package/lib/form/SchemaForm/initializeRules.d.ts +7 -1
  82. package/lib/form/SchemaForm/initializeRules.js +9 -16
  83. package/lib/form/SchemaForm/reactions.d.ts +5 -5
  84. package/lib/form/SchemaForm/reactions.js +29 -31
  85. package/lib/form/global.scss +1 -0
  86. package/lib/form/typing.d.ts +7 -3
  87. package/lib/form/utils.d.ts +8 -7
  88. package/lib/form/utils.js +6 -5
  89. package/lib/index.d.ts +1 -1
  90. package/lib/index.js +1 -1
  91. package/lib/table/components/Layout/index.js +21 -11
  92. package/lib/table/components/Pagination/index.d.ts +7 -0
  93. package/lib/table/components/Pagination/index.js +265 -0
  94. package/lib/table/components/Pagination/index.scss +50 -0
  95. package/lib/table/components/ToolBar/FilterColumnIcon.js +40 -6
  96. package/lib/table/components/ToolBar/index.scss +17 -6
  97. package/lib/table/index.js +96 -36
  98. package/lib/table/index.scss +7 -1
  99. package/lib/table/typing.d.ts +9 -2
  100. package/lib/table/utils/columnRender.js +2 -1
  101. package/lib/table/utils/index.d.ts +7 -0
  102. package/lib/table/utils/index.js +46 -4
  103. package/package.json +2 -2
@@ -1,7 +1,10 @@
1
- var _excluded = ["schema", "onChange", "onSubmit"],
2
- _excluded2 = ["form", "schema", "onSubmit", "onChange"],
3
- _excluded3 = ["schema", "onSubmit", "onReset", "layout", "labelAlign", "wrapperAlign", "labelCol", "wrapperCol"],
4
- _excluded4 = ["addonAfter", "addonBefore", "onFilter", "onInit", "onReset", "mode", "expand"];
1
+ var _excluded = ["addonAfter", "addonBefore", "onFilter", "onInit", "onReset", "mode", "expand", "formRef", "defaultFilterValue"];
2
+
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; }
4
+
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; }
6
+
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; }
5
8
 
6
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); } }
7
10
 
@@ -11,211 +14,33 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
11
14
 
12
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."); }
13
16
 
14
- 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; }
15
-
16
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
-
18
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
19
-
20
- 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."); }
21
-
22
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
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
25
-
26
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
27
-
28
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; }
29
20
 
30
- 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; }
31
-
32
- 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; }
33
22
 
34
- 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; }
35
24
 
36
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; }
37
26
 
38
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; }
39
28
 
40
- import React, { memo, useCallback, useMemo, useState, useEffect } from 'react';
29
+ import React, { memo, useCallback, useMemo, useState, useRef, useEffect } from 'react';
41
30
  import cls from 'classnames';
42
31
  import { Tag, Button, Badge } from '@alicloudfe/components';
43
32
  import TeamixIcon from '@teamix/icon';
44
- import { createForm } from '@formily/core';
33
+ import { createForm, onFormReact, onFormInputChange } from '@formily/core';
45
34
  import { toJS } from '@formily/reactive';
46
35
  import { usePrefixCls, getMessage, isSignificative, isStr, isPlainObj } from '@teamix/utils';
47
36
  import ProField from '../../field/index';
48
- import ProForm from '../ProForm';
49
37
  import fieldTypeMap from '../fieldTypeMap';
50
38
  import { getFormDisplayValues } from '../ProForm/useFormDisplayValues';
51
- import { mergeArrayValue } from '../utils';
52
- import './index2.scss';
53
- /**
54
- * 简单筛选
55
- */
56
-
57
- var SimpleFilter = /*#__PURE__*/memo(function (props) {
58
- var schema = props.schema,
59
- onChange = props.onChange,
60
- onSubmit = props.onSubmit,
61
- otherProps = _objectWithoutProperties(props, _excluded);
62
-
63
- var prefixCls = usePrefixCls('', {
64
- prefix: 'teamix-pro-form-query-filter-simple'
65
- });
66
- var simpleSchema = useMemo(function () {
67
- return [{
68
- component: 'FormFlex',
69
- props: {
70
- size: 8
71
- },
72
- children: schema
73
- }, {
74
- component: 'Submit',
75
- props: {
76
- style: {
77
- display: 'none'
78
- }
79
- }
80
- }];
81
- }, [schema]);
82
- return /*#__PURE__*/React.createElement(ProForm, _objectSpread(_objectSpread({}, otherProps), {}, {
83
- className: cls(prefixCls, props.className),
84
- schema: simpleSchema,
85
- feedbackLayout: "popover",
86
- breakpoints: [],
87
- inset: true,
88
- onSubmit: onSubmit,
89
- onChange: onChange
90
- }));
91
- });
92
- /**
93
- * 轻量筛选
94
- */
95
-
96
- var LightFilter = /*#__PURE__*/memo(function (props) {
97
- var form = props.form,
98
- schema = props.schema,
99
- onSubmit = props.onSubmit,
100
- onChange = props.onChange,
101
- otherProps = _objectWithoutProperties(props, _excluded2);
102
-
103
- var prefixCls = usePrefixCls('', {
104
- prefix: 'teamix-pro-form-query-filter-light'
105
- });
106
- var onBtnClick = useCallback(function () {
107
- onChange && onChange(toJS(form.values));
108
- }, [form]);
109
- var LightSchema = useMemo(function () {
110
- return [{
111
- component: 'LightFilter',
112
- props: {
113
- buttonProps: {
114
- onClick: onBtnClick
115
- }
116
- },
117
- children: schema
118
- }, {
119
- component: 'Submit',
120
- props: {
121
- style: {
122
- display: 'none'
123
- }
124
- }
125
- }];
126
- }, [schema, onBtnClick]);
127
- return /*#__PURE__*/React.createElement(ProForm, _objectSpread(_objectSpread({}, otherProps), {}, {
128
- form: form,
129
- className: cls(prefixCls, props.className),
130
- schema: LightSchema,
131
- feedbackLayout: "none",
132
- breakpoints: [],
133
- bordered: false,
134
- onSubmit: onSubmit,
135
- onChange: onChange
136
- }));
137
- });
138
- /**
139
- * 高级筛选
140
- */
141
-
142
- var AdvancedFilter = /*#__PURE__*/memo(function (props) {
143
- var schema = props.schema,
144
- onSubmit = props.onSubmit,
145
- onReset = props.onReset,
146
- layout = props.layout,
147
- labelAlign = props.labelAlign,
148
- wrapperAlign = props.wrapperAlign,
149
- labelCol = props.labelCol,
150
- wrapperCol = props.wrapperCol,
151
- otherProps = _objectWithoutProperties(props, _excluded3);
152
-
153
- var prefixCls = usePrefixCls('', {
154
- prefix: 'teamix-pro-form-query-filter-advanced'
155
- });
156
- var gridSchema = useMemo(function () {
157
- return [{
158
- name: 'FormGrid',
159
- component: 'FormGrid',
160
- props: {
161
- breakpoints: [480, 720, 990, 1200, Infinity],
162
- maxColumns: [1, 2, 3, 3, 4],
163
- columnGap: 16,
164
- rowGap: 12
165
- },
166
- children: [].concat(_toConsumableArray(schema), [{
167
- component: 'FormGrid.GridColumn',
168
- props: {
169
- gridSpan: -1
170
- },
171
- children: [{
172
- component: 'FormButtonGroup',
173
- props: {
174
- align: 'right'
175
- },
176
- children: [{
177
- component: 'Reset',
178
- props: {
179
- onResetValidateSuccess: onReset,
180
- children: getMessage('reset')
181
- }
182
- }, {
183
- component: 'Submit',
184
- props: {
185
- style: {
186
- marginRight: -8
187
- },
188
- children: getMessage('search')
189
- }
190
- }]
191
- }]
192
- }])
193
- }];
194
- }, [schema, onReset]);
195
- var getTeamixLayout = useMemo(function () {
196
- return {
197
- breakpoints: [990],
198
- layout: mergeArrayValue(['vertical'], layout),
199
- labelAlign: mergeArrayValue(['left'], labelAlign),
200
- wrapperAlign: mergeArrayValue(['left'], wrapperAlign),
201
- labelCol: mergeArrayValue([24], labelCol),
202
- wrapperCol: mergeArrayValue([24], wrapperCol)
203
- };
204
- }, [layout, labelAlign, wrapperAlign, labelCol, wrapperCol]);
205
- return /*#__PURE__*/React.createElement(ProForm, _objectSpread(_objectSpread(_objectSpread({
206
- className: cls(prefixCls, props.className),
207
- schema: gridSchema,
208
- feedbackLayout: "popover"
209
- }, otherProps), getTeamixLayout), {}, {
210
- onSubmit: onSubmit
211
- }));
212
- });
213
- AdvancedFilter.defaultProps = {
214
- layout: 'horizontal',
215
- labelAlign: 'right',
216
- labelCol: 6,
217
- wrapperCol: 18
218
- };
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是否包含默认值、异步默认值、必选校验等
219
44
 
220
45
  var getSpecialProps = function getSpecialProps(props) {
221
46
  var initialValues = props.initialValues,
@@ -263,23 +88,93 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
263
88
  onReset = props.onReset,
264
89
  mode = props.mode,
265
90
  expand = props.expand,
266
- 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
121
+
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
+
267
136
 
268
137
  var simpleForm = useMemo(function () {
269
138
  return createForm({
270
- validateFirst: true
139
+ validateFirst: true,
140
+ effects: function effects() {
141
+ onFormReact(function (form) {
142
+ _onFormInit(form, props);
143
+ });
144
+ }
271
145
  });
272
- }, []);
146
+ }, []); // 创建轻量筛选表单实例
147
+
273
148
  var lightForm = useMemo(function () {
274
149
  return createForm({
275
- validateFirst: true
150
+ validateFirst: true,
151
+ effects: function effects() {
152
+ onFormInputChange(function () {
153
+ setCurrentForm('light');
154
+ });
155
+ }
276
156
  });
277
- }, []);
157
+ }, []); // 创建高级筛选表单实例
158
+
278
159
  var advancedForm = useMemo(function () {
279
160
  return createForm({
280
- validateFirst: true
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
+ }
281
171
  });
282
172
  }, []);
173
+ var formMap = {
174
+ simple: simpleForm,
175
+ light: lightForm,
176
+ advanced: advancedForm
177
+ };
283
178
 
284
179
  var _getSpecialProps = getSpecialProps(props),
285
180
  hasDefault = _getSpecialProps.hasDefault,
@@ -298,25 +193,24 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
298
193
  tagDataSource = _useState4[0],
299
194
  setTagDataSource = _useState4[1];
300
195
 
196
+ var filterItem = useRef([]);
197
+ var currentForm = useRef(mode === 'panel' ? advancedFilterVisible ? 'advanced' : 'light' : 'simple');
301
198
  var prefixCls = usePrefixCls('', {
302
199
  prefix: 'teamix-pro-form-query-filter'
303
- });
304
- var currentForm = mode === 'panel' ? advancedFilterVisible ? 'advanced' : 'light' : 'simple'; // 展开收起高级筛选
200
+ }); // 设置筛选数据
305
201
 
306
- var toggleAdvancedFilter = useCallback(function () {
307
- setAdvancedFilterVisible(function (visible) {
308
- return !visible;
309
- });
310
- }, []); // 获取标签数据
202
+ var configFilterItem = useCallback(function (form) {
203
+ filterItem.current = getFilterDisplayValues(form);
204
+ }, []); // 获取筛选数据Label
311
205
 
312
- var getTagDataSource = useCallback(function (form) {
206
+ var getFilterDisplayValues = useCallback(function (form) {
313
207
  var displayValues = getFormDisplayValues(form);
314
- return Object.entries(displayValues).map(function (_ref) {
208
+ return Object.entries(displayValues).map(function (_ref2) {
315
209
  var _data$displayValue;
316
210
 
317
- var _ref2 = _slicedToArray(_ref, 2),
318
- key = _ref2[0],
319
- data = _ref2[1];
211
+ var _ref3 = _slicedToArray(_ref2, 2),
212
+ key = _ref3[0],
213
+ data = _ref3[1];
320
214
 
321
215
  return {
322
216
  key: key,
@@ -330,32 +224,46 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
330
224
  }, []); // 设置标签数据
331
225
 
332
226
  var configTag = useCallback(function () {
333
- setTagDataSource(getTagDataSource(advancedForm));
334
- }, []); // 简单搜索Filter
227
+ setTagDataSource(filterItem.current);
228
+ }, [filterItem.current]); // 展开收起高级筛选
335
229
 
336
- var onSimpleFilter = useCallback(function (values) {
337
- if (currentForm === 'simple') {
338
- onFilter && onFilter(values);
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();
339
241
  }
340
- }, [onFilter, currentForm]); // 轻量搜索Filter
341
242
 
342
- var onLightFilter = useCallback( /*#__PURE__*/function () {
343
- var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {
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) {
344
248
  return regeneratorRuntime.wrap(function _callee$(_context) {
345
249
  while (1) {
346
250
  switch (_context.prev = _context.next) {
347
251
  case 0:
348
- if (!(currentForm === 'light')) {
252
+ if (!(currentForm.current === 'simple')) {
349
253
  _context.next = 5;
350
254
  break;
351
255
  }
352
256
 
353
- onFilter && onFilter(values);
257
+ if (!hasRequired) {
258
+ _context.next = 4;
259
+ break;
260
+ }
261
+
354
262
  _context.next = 4;
355
- return advancedForm.reset();
263
+ return simpleForm.validate();
356
264
 
357
265
  case 4:
358
- configTag();
266
+ onFilter && onFilter(values);
359
267
 
360
268
  case 5:
361
269
  case "end":
@@ -366,39 +274,73 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
366
274
  }));
367
275
 
368
276
  return function (_x) {
369
- return _ref3.apply(this, arguments);
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);
370
311
  };
371
- }(), [onFilter, currentForm]); // 高级搜索Filter
312
+ }(), [onFilter, currentForm.current]); // 高级搜索Filter
372
313
 
373
314
  var onAdvancedFilter = useCallback(function (values) {
374
- if (currentForm === 'advanced') {
375
- onFilter && onFilter(values);
376
- configTag();
377
- lightForm.reset();
378
- }
379
- }, [onFilter, currentForm]); // 关闭标签清空表单字段值
315
+ setCurrentForm('advanced');
316
+ onFilter && onFilter(values);
317
+ configFilterItem(advancedForm);
318
+ lightForm.reset();
319
+ }, [onFilter, currentForm.current]); // 高级搜索Reset
320
+
321
+ var onAdvancedReset = useCallback(function () {
322
+ setCurrentForm('advanced');
323
+ onReset && onReset(toJS(advancedForm.values));
324
+ configFilterItem(advancedForm);
325
+ lightForm.reset();
326
+ }, [onReset]); // 关闭标签清空表单字段值
380
327
 
381
328
  var onTagClose = useCallback(function (key) {
382
329
  advancedForm.setValuesIn(key, undefined);
383
- setTagDataSource(getTagDataSource(advancedForm));
384
- }, []); // 判断表单是否有校验和默认值
385
-
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
+ }, []);
386
341
  useEffect(function () {
387
- if (hasDefault || hasAsyncDefault || hasRequired) {}
388
- }, [hasDefault, hasAsyncDefault, hasRequired]); // 设置默认值标签数据
389
-
390
- useEffect(function () {// onInit
391
- // if (mode === 'panel') {
392
- // if (expand) {
393
- // onInit && onInit(toJS(advancedForm.values));
394
- // } else {
395
- // onInit && onInit(toJS(lightForm.values));
396
- // }
397
- // configTag();
398
- // } else {
399
- // onInit && onInit(toJS(simpleForm.values));
400
- // }
401
- }, [mode]);
342
+ setCurrentForm(currentForm.current);
343
+ }, []);
402
344
  return /*#__PURE__*/React.createElement("div", {
403
345
  className: cls(prefixCls, props.className)
404
346
  }, /*#__PURE__*/React.createElement("div", {
@@ -408,11 +350,11 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
408
350
  }, addonBefore ? /*#__PURE__*/React.createElement("div", {
409
351
  className: "".concat(prefixCls, "-addonBefore")
410
352
  }, addonBefore) : null, mode === 'panel' ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
411
- className: cls("".concat(prefixCls, "-inline-form"), hasAsyncDefault ? "".concat(prefixCls, "-inline-form-hidden") : '')
353
+ className: cls("".concat(prefixCls, "-inline-form"), hasDefaultOrRequired ? "".concat(prefixCls, "-inline-form-hidden") : '')
412
354
  }, /*#__PURE__*/React.createElement(LightFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
355
+ defaultFilterValue: defaultFilterValue,
413
356
  form: lightForm,
414
- onChange: onLightFilter,
415
- onSubmit: onLightFilter
357
+ onChange: debounce(onLightFilter, 300)
416
358
  }))), /*#__PURE__*/React.createElement("div", {
417
359
  className: "".concat(prefixCls, "-toggle")
418
360
  }, /*#__PURE__*/React.createElement(Badge, {
@@ -433,7 +375,7 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
433
375
  className: "".concat(prefixCls, "-inline-form")
434
376
  }, /*#__PURE__*/React.createElement(SimpleFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
435
377
  form: simpleForm,
436
- onChange: onSimpleFilter,
378
+ onChange: debounce(onSimpleFilter, 300),
437
379
  onSubmit: onSimpleFilter
438
380
  })))), addonAfter ? /*#__PURE__*/React.createElement("div", {
439
381
  className: "".concat(prefixCls, "-addonAfter")
@@ -441,11 +383,11 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
441
383
  className: "".concat(prefixCls, "-panel")
442
384
  }, /*#__PURE__*/React.createElement("div", {
443
385
  className: cls("".concat(prefixCls, "-tag"), advancedFilterVisible ? "".concat(prefixCls, "-tag-hidden") : '')
444
- }, /*#__PURE__*/React.createElement(Tag.Group, null, tagDataSource.map(function (_ref4) {
445
- var key = _ref4.key,
446
- label = _ref4.label,
447
- value = _ref4.value,
448
- type = _ref4.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;
449
391
  return /*#__PURE__*/React.createElement(Tag.Closeable, {
450
392
  key: key,
451
393
  afterClose: function afterClose() {
@@ -462,8 +404,12 @@ var QueryFilter = /*#__PURE__*/memo(function (props) {
462
404
  }))), /*#__PURE__*/React.createElement("div", {
463
405
  className: cls("".concat(prefixCls, "-advanced-wrap"), !advancedFilterVisible ? "".concat(prefixCls, "-advanced-wrap-hidden") : '')
464
406
  }, /*#__PURE__*/React.createElement(AdvancedFilter, _objectSpread(_objectSpread({}, otherProps), {}, {
407
+ initialRequest: otherProps.initialRequest ? _objectSpread(_objectSpread({}, otherProps.initialRequest), {}, {
408
+ onComplete: onInitialRequestComplete
409
+ }) : undefined,
465
410
  form: advancedForm,
466
- onSubmit: onAdvancedFilter
411
+ onSubmit: onAdvancedFilter,
412
+ onReset: onAdvancedReset
467
413
  })))) : null);
468
414
  });
469
415
  QueryFilter.defaultProps = {
@@ -12,7 +12,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
12
12
 
13
13
  import React, { memo, useEffect, useMemo } from 'react';
14
14
  import cls from 'classnames';
15
- import { createForm, onFormValuesChange, registerValidateLocale, setValidateLanguage } from '@formily/core';
15
+ import { createForm, onFieldValueChange, registerValidateLocale, setValidateLanguage } from '@formily/core';
16
16
  import { toJS } from '@formily/reactive';
17
17
  import { Form } from '@teamix/formily';
18
18
  import { usePrefixCls, getLanguage } from '@teamix/utils';
@@ -21,7 +21,6 @@ import { mergeArrayValue } from '../utils';
21
21
  import useAutoSubmit from './useAutoSubmit';
22
22
  import useInitialRequest from './useInitialRequest';
23
23
  import validateLocale from '../locales/validate';
24
- import debounce from 'lodash.debounce';
25
24
  import './index.scss';
26
25
  registerValidateLocale(validateLocale);
27
26
  var ProForm = /*#__PURE__*/memo(function (_ref) {
@@ -79,13 +78,13 @@ var ProForm = /*#__PURE__*/memo(function (_ref) {
79
78
  }, [breakpoints, layout, labelAlign, wrapperAlign, labelCol, wrapperCol]); // 添加onChange
80
79
 
81
80
  useEffect(function () {
82
- form.removeEffects('onChange');
83
- form.addEffects('onChange', function () {
84
- onFormValuesChange(debounce(function (form) {
85
- if (onChange) {
86
- onChange(toJS(form.values));
87
- }
88
- }, 300));
81
+ form.removeEffects('onFieldValueChange');
82
+ form.addEffects('onFieldValueChange', function () {
83
+ onFieldValueChange('*', function (field, form) {
84
+ var _field$props;
85
+
86
+ onChange && onChange(toJS(form.values), toJS(field.value), (_field$props = field.props) === null || _field$props === void 0 ? void 0 : _field$props.name);
87
+ });
89
88
  });
90
89
  }, [form, onChange]); // 配置表单默认值
91
90
 
@@ -95,6 +94,10 @@ var ProForm = /*#__PURE__*/memo(function (_ref) {
95
94
  } else if (initialRequest) {
96
95
  useInitialRequest(initialRequest).then(function (values) {
97
96
  form.setInitialValues(values);
97
+ }).finally(function () {
98
+ initialRequest.onComplete && initialRequest.onComplete(undefined, undefined, {
99
+ form: form
100
+ });
98
101
  });
99
102
  }
100
103
  }, []); // 配置国际化