@teamix/pro 1.2.34 → 1.2.35

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.
@@ -17,7 +17,7 @@ import { useHistory } from 'react-router-dom';
17
17
  import classnames from 'classnames';
18
18
  import TeamixIcon from '@teamix/icon';
19
19
  import { Breadcrumb } from '@alicloudfe/components';
20
- import { baseClass, goToLink, renderTags, isPresetColor, getColorClassName, getBackgroundColorClassName } from '@teamix/utils';
20
+ import { baseClass, goToLink, renderTags, isPresetColor, getColor, getColorClassName, getBackgroundColorClassName } from '@teamix/utils';
21
21
  import { ProActionGroup } from '../actions';
22
22
  import { ProSkeletonRaw } from '../skeleton';
23
23
  import ProInfo from '../info';
@@ -69,8 +69,8 @@ var getColorAndStyle = function getColorAndStyle(color, backgroundColor, backgro
69
69
  var isColorPresetColor = isPresetColor(color);
70
70
  var isBgColorPresetColor = isPresetColor(backgroundColor);
71
71
  var className = classnames((_classnames = {}, _defineProperty(_classnames, "".concat(getColorClassName(color)), isColorPresetColor), _defineProperty(_classnames, "".concat(getBackgroundColorClassName(backgroundColor)), isBgColorPresetColor), _defineProperty(_classnames, "".concat(cls("bg-type-".concat(backgroundType))), !!backgroundType), _classnames));
72
- var styleColor = isColorPresetColor ? undefined : color;
73
- var styleBgColor = isBgColorPresetColor ? undefined : backgroundColor;
72
+ var styleColor = isColorPresetColor ? getColor(color) : color;
73
+ var styleBgColor = isBgColorPresetColor ? getColor(color) : backgroundColor;
74
74
  var style = {
75
75
  color: styleColor,
76
76
  backgroundColor: styleBgColor
package/es/table/index.js CHANGED
@@ -300,8 +300,8 @@ var ProTable = function ProTable(props) {
300
300
  var normalDataFilterForm = normalDataFilterFormRef.current;
301
301
  var fullscreenDataFilterForm = fullscreenDataFilterFormRef.current; // 传给 QueryFilter 的 formRef
302
302
 
303
- var dataFilterFormRef = !fullscreenState ? normalDataFilterFormRef : fullscreenDataFilterFormRef;
304
- var dataFilterForm = dataFilterFormRef.current; // 整个内容区是否超过一屏。用于表格在非全屏模式下的吸底
303
+ var dataFilterFormRef = !fullscreenState ? normalDataFilterFormRef : fullscreenDataFilterFormRef; // let dataFilterForm = dataFilterFormRef.current;
304
+ // 整个内容区是否超过一屏。用于表格在非全屏模式下的吸底
305
305
 
306
306
  var _useState29 = useState(false),
307
307
  _useState30 = _slicedToArray(_useState29, 2),
@@ -510,12 +510,12 @@ var ProTable = function ProTable(props) {
510
510
  _request(params);
511
511
  },
512
512
  reset: function reset() {
513
- var _actionRef$current4, _actionRef$current4$s;
513
+ var _actionRef$current4, _actionRef$current4$s, _dataFilterFormRef$cu;
514
514
 
515
515
  (propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onReset) && (propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onReset()); // 清空列过滤参数
516
516
 
517
517
  (_actionRef$current4 = actionRef.current) === null || _actionRef$current4 === void 0 ? void 0 : (_actionRef$current4$s = _actionRef$current4.setFilterRules) === null || _actionRef$current4$s === void 0 ? void 0 : _actionRef$current4$s.call(_actionRef$current4, {});
518
- dataFilterForm === null || dataFilterForm === void 0 ? void 0 : dataFilterForm.reset();
518
+ (_dataFilterFormRef$cu = dataFilterFormRef.current) === null || _dataFilterFormRef$cu === void 0 ? void 0 : _dataFilterFormRef$cu.reset();
519
519
  setCurrentPage(1);
520
520
 
521
521
  _request(_defineProperty({}, targetPageKey, 1));
@@ -537,7 +537,8 @@ var ProTable = function ProTable(props) {
537
537
  pageSize: pageSize
538
538
  },
539
539
  data: data,
540
- dataFilterForm: dataFilterForm,
540
+ dataFilterForm: dataFilterFormRef.current,
541
+ dataFilterFormRef: dataFilterFormRef,
541
542
  normalDataFilterForm: normalDataFilterForm,
542
543
  fullscreenDataFilterForm: fullscreenDataFilterForm,
543
544
  filterEnableRef: filterEnableRef,
@@ -630,7 +631,7 @@ var ProTable = function ProTable(props) {
630
631
  }); // 请求函数
631
632
 
632
633
  function _request(params, noLoading, filterParams) {
633
- var _actionRef$current$ge, _actionRef$current5, _actionRef$current5$g, _objectSpread2;
634
+ var _dataFilterFormRef$cu2, _actionRef$current$ge, _actionRef$current5, _actionRef$current5$g, _objectSpread2;
634
635
 
635
636
  // 如果没有传 url 且没有 customRequest,直接返回
636
637
  if (!url && !customRequest) {
@@ -643,7 +644,7 @@ var ProTable = function ProTable(props) {
643
644
 
644
645
  var sortParams = targetFormatSort(sort); // 筛选区请求参数
645
646
 
646
- var dataFilterParams = filterParams !== null && filterParams !== void 0 ? filterParams : dataFilterForm === null || dataFilterForm === void 0 ? void 0 : dataFilterForm.values; // 列过滤请求参数
647
+ var dataFilterParams = filterParams !== null && filterParams !== void 0 ? filterParams : (_dataFilterFormRef$cu2 = dataFilterFormRef.current) === null || _dataFilterFormRef$cu2 === void 0 ? void 0 : _dataFilterFormRef$cu2.values; // 列过滤请求参数
647
648
 
648
649
  var columnsFilterParams = (_actionRef$current$ge = (_actionRef$current5 = actionRef.current) === null || _actionRef$current5 === void 0 ? void 0 : (_actionRef$current5$g = _actionRef$current5.getFilterRules) === null || _actionRef$current5$g === void 0 ? void 0 : _actionRef$current5$g.call(_actionRef$current5)) !== null && _actionRef$current$ge !== void 0 ? _actionRef$current$ge : {}; // 格式化后的请求参数
649
650
 
@@ -741,6 +742,7 @@ var ProTable = function ProTable(props) {
741
742
  }, propsDataFilter), {}, {
742
743
  onInit: function onInit(values) {
743
744
  // 表单初始化请求处理
745
+ console.log('onInit');
744
746
  (propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onInit) && (propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onInit(values));
745
747
  !fullscreenState && _request({}, false, values);
746
748
  return true;
@@ -748,7 +750,8 @@ var ProTable = function ProTable(props) {
748
750
  onFilter: function onFilter(values) {
749
751
  var _actionRef$current6, _actionRef$current6$c;
750
752
 
751
- // 全屏状态,判断全屏表单onFilter是否禁用
753
+ console.log('onFilter'); // 全屏状态,判断全屏表单onFilter是否禁用
754
+
752
755
  if (fullscreenState && !filterEnableRef.current.fullscreen) {
753
756
  filterEnableRef.current.fullscreen = true;
754
757
  return;
@@ -768,8 +771,10 @@ var ProTable = function ProTable(props) {
768
771
  _request(_defineProperty({}, targetPageKey, 1), false, values);
769
772
  },
770
773
  onReset: function onReset(values) {
774
+ var _dataFilterFormRef$cu3;
775
+
771
776
  (propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onReset) && (propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onReset());
772
- dataFilterForm === null || dataFilterForm === void 0 ? void 0 : dataFilterForm.reset();
777
+ (_dataFilterFormRef$cu3 = dataFilterFormRef.current) === null || _dataFilterFormRef$cu3 === void 0 ? void 0 : _dataFilterFormRef$cu3.reset();
773
778
  setCurrentPage(1);
774
779
 
775
780
  _request(_defineProperty({}, targetPageKey, 1), false, values);
@@ -190,6 +190,8 @@ export declare type ProTableActionType = {
190
190
  resetPage?: () => void;
191
191
  /** 获取数据过滤区表单实例 */
192
192
  dataFilterForm?: FormType;
193
+ /** 用于在 mount 的时候获取到表单 ref */
194
+ dataFilterFormRef?: React.MutableRefObject<FormType>;
193
195
  normalDataFilterForm?: FormType;
194
196
  fullscreenDataFilterForm?: FormType;
195
197
  filterEnableRef?: any;
@@ -103,16 +103,43 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
103
103
  onInit = props.onInit,
104
104
  onReset = props.onReset,
105
105
  onExpand = props.onExpand,
106
- otherProps = _objectWithoutProperties(props, _excluded); // 表单默认值初始化回调
106
+ otherProps = _objectWithoutProperties(props, _excluded);
107
107
 
108
+ var _useSpecialProps = (0, _useSpecialProps2.default)(props),
109
+ hasDefault = _useSpecialProps.hasDefault,
110
+ hasChangeDefault = _useSpecialProps.hasChangeDefault,
111
+ hasRequired = _useSpecialProps.hasRequired;
112
+
113
+ var hasDefaultOrRequired = hasDefault || hasRequired;
114
+
115
+ var _useState = (0, _react.useState)(!!expand),
116
+ _useState2 = _slicedToArray(_useState, 2),
117
+ panelVisible = _useState2[0],
118
+ setPanelVisible = _useState2[1];
119
+
120
+ var _useState3 = (0, _react.useState)([]),
121
+ _useState4 = _slicedToArray(_useState3, 2),
122
+ tagDataSource = _useState4[0],
123
+ setTagDataSource = _useState4[1];
124
+
125
+ var filterItem = (0, _react.useRef)([]);
126
+ var defaultForm = mode === 'panel' ? hasDefaultOrRequired || panelVisible ? 'advanced' : 'light' : 'simple';
127
+ var currentForm = (0, _react.useRef)(defaultForm);
128
+ var prefixCls = (0, _utils.usePrefixCls)('', {
129
+ prefix: 'teamix-pro-form-query-filter'
130
+ });
131
+ /**
132
+ * 处理onInit与onFilter事件的触发问题
133
+ */
108
134
 
109
- var _onFormInit = function onFormInit(form, _ref, configFilterItem) {
135
+ var filterEnable = (0, _react.useRef)('waiting');
136
+
137
+ var _onFormInit = function onFormInit(form, _ref) {
110
138
  var initialRequest = _ref.initialRequest,
111
- initialValues = _ref.initialValues,
112
- onInit = _ref.onInit;
139
+ initialValues = _ref.initialValues;
113
140
 
114
141
  if (!form.mounted) {
115
- // formloading为自定义属性
142
+ // form上自定义loading属性使用
116
143
  form.setState({
117
144
  loading: !!initialRequest || !!initialValues
118
145
  });
@@ -120,32 +147,27 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
120
147
 
121
148
  var loadingField = Object.values(form.fields).filter(function (field) {
122
149
  return !!field.loading;
123
- });
150
+ }); // 等待表单mounted + 字段loading结束 + form的loading结束 => 表单初始化完成
124
151
 
125
- if (form.mounted) {
152
+ if (form.mounted && loadingField.length === 0 && !form.loading) {
126
153
  if (loadingField.length === 0 && !form.loading) {
127
- // 仅执行一次onInit
128
- _onFormInit = function onFormInit() {};
154
+ _onFormInit = function onFormInit() {}; // init后销毁 isFormInit 方法
129
155
 
130
- var onInitResult = onInit === null || onInit === void 0 ? void 0 : onInit((0, _reactive.toJS)(form.values));
131
156
 
132
- if (onInitResult) {
133
- // 根据onInit返回值,判断是否使用该事件执行筛选,使用过则添加筛选标签
134
- configFilterItem === null || configFilterItem === void 0 ? void 0 : configFilterItem(form);
135
- configTag();
136
- } // 防止onInit前后的无效onFilter
157
+ var values = (0, _utils.getValidValues)(form.values);
137
158
 
138
-
139
- if (!Object.keys(form.initialValues).length) {
140
- // 如果没有默认值,直接开启onFilter
141
- filterEnable.current = true;
159
+ if (!(0, _utils.isUsable)(values) || !hasChangeDefault) {
160
+ // 表单无默认值 或 无触发onChange的默认值配置,不会触发onFilter内的onInit,所以主动触发onInit
161
+ setTimeout(function () {
162
+ onInit === null || onInit === void 0 ? void 0 : onInit((0, _reactive.toJS)(form.values));
163
+ }, 0);
164
+ filterEnable.current = 'filter';
142
165
  } else {
143
- // 否则,拿onFilter的值与默认值进行比较
144
- filterEnable.current = form.initialValues;
166
+ filterEnable.current = 'initialized';
145
167
  }
146
168
  }
147
169
  }
148
- }; // 设置当前form
170
+ }; // 配置当前激活的form实例
149
171
 
150
172
 
151
173
  var setCurrentForm = function setCurrentForm(formName) {
@@ -167,7 +189,9 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
167
189
  validateFirst: true,
168
190
  effects: function effects() {
169
191
  (0, _core.onFormReact)(function (form) {
170
- _onFormInit(form, props);
192
+ if (defaultForm === 'simple') {
193
+ _onFormInit(form, props);
194
+ }
171
195
  });
172
196
  }
173
197
  });
@@ -177,8 +201,13 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
177
201
  return (0, _core.createForm)({
178
202
  validateFirst: true,
179
203
  effects: function effects() {
204
+ (0, _core.onFormReact)(function (form) {
205
+ if (defaultForm === 'light') {
206
+ _onFormInit(form, props);
207
+ }
208
+ });
180
209
  (0, _core.onFormInputChange)(function () {
181
- setCurrentForm('light');
210
+ setCurrentForm('light'); // 主动修改轻量筛选值
182
211
  });
183
212
  }
184
213
  });
@@ -189,11 +218,12 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
189
218
  validateFirst: true,
190
219
  effects: function effects() {
191
220
  (0, _core.onFormReact)(function (form) {
192
- _onFormInit(form, props, configFilterItem);
221
+ if (defaultForm === 'advanced') {
222
+ _onFormInit(form, props);
223
+ }
193
224
  });
194
225
  (0, _core.onFormInputChange)(function (form) {
195
- // 主动修改高级筛选值
196
- setCurrentForm('advanced');
226
+ setCurrentForm('advanced'); // 主动修改高级筛选值
197
227
  });
198
228
  }
199
229
  });
@@ -202,35 +232,7 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
202
232
  simple: simpleForm,
203
233
  light: lightForm,
204
234
  advanced: advancedForm
205
- };
206
-
207
- var _useSpecialProps = (0, _useSpecialProps2.default)(props),
208
- hasDefault = _useSpecialProps.hasDefault,
209
- hasAsyncDefault = _useSpecialProps.hasAsyncDefault,
210
- hasRequired = _useSpecialProps.hasRequired;
211
-
212
- var hasDefaultOrRequired = hasDefault || hasAsyncDefault || hasRequired;
213
-
214
- var _useState = (0, _react.useState)(!!expand),
215
- _useState2 = _slicedToArray(_useState, 2),
216
- advancedFilterVisible = _useState2[0],
217
- setAdvancedFilterVisible = _useState2[1];
218
-
219
- var _useState3 = (0, _react.useState)([]),
220
- _useState4 = _slicedToArray(_useState3, 2),
221
- tagDataSource = _useState4[0],
222
- setTagDataSource = _useState4[1];
223
-
224
- var filterItem = (0, _react.useRef)([]);
225
- var currentForm = (0, _react.useRef)(mode === 'panel' ? advancedFilterVisible ? 'advanced' : 'light' : 'simple');
226
- var filterEnable = (0, _react.useRef)(false);
227
- var prefixCls = (0, _utils.usePrefixCls)('', {
228
- prefix: 'teamix-pro-form-query-filter'
229
- }); // 设置筛选数据
230
-
231
- var configFilterItem = (0, _react.useCallback)(function (form) {
232
- filterItem.current = getFilterDisplayValues(form);
233
- }, []); // 获取筛选数据Label
235
+ }; // 获取筛选数据Label
234
236
 
235
237
  var getFilterDisplayValues = (0, _react.useCallback)(function (form) {
236
238
  var displayValues = (0, _useFormDisplayValues.getFormDisplayValues)(form);
@@ -258,7 +260,7 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
258
260
  index: index
259
261
  });
260
262
  });
261
- } else if ((0, _utils.isSignificative)(value)) {
263
+ } else if ((0, _utils.isUsable)(value)) {
262
264
  filterData.push({
263
265
  key: key,
264
266
  type: _fieldTypeMap.default[component] || 'text',
@@ -268,63 +270,58 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
268
270
  }
269
271
  });
270
272
  return filterData;
273
+ }, []); // 设置筛选数据
274
+
275
+ var configFilterItem = (0, _react.useCallback)(function (form) {
276
+ filterItem.current = getFilterDisplayValues(form);
271
277
  }, []); // 设置标签数据
272
278
 
273
279
  var configTag = (0, _react.useCallback)(function () {
274
280
  setTagDataSource(filterItem.current);
275
- }, [filterItem.current]); // 展开收起高级筛选
281
+ }, []); // 展开收起高级筛选
276
282
 
277
283
  var toggleAdvancedFilter = (0, _react.useCallback)(function () {
278
- var result = !advancedFilterVisible;
284
+ var result = !panelVisible;
279
285
 
280
286
  if (result) {
281
287
  // 展开高级筛选,Light回填Advanced
282
288
  if (currentForm.current === 'light') {
283
- advancedForm.setValues(lightForm.values);
289
+ Object.entries(lightForm.values || {}).map(function (_ref4) {
290
+ var _ref5 = _slicedToArray(_ref4, 2),
291
+ key = _ref5[0],
292
+ value = _ref5[1];
293
+
294
+ // 有效值值回填,防止全部值回填改变,触发不必要的 reactions
295
+ advancedForm.setValuesIn(key, value);
296
+ });
284
297
  }
285
298
  } else {
286
299
  // 收起高级筛选,配置标签数据
287
300
  configTag();
288
301
  }
289
302
 
290
- setAdvancedFilterVisible(result);
303
+ setPanelVisible(result);
291
304
  onExpand === null || onExpand === void 0 ? void 0 : onExpand(result);
292
- }, [advancedFilterVisible, configTag, currentForm.current]); // 是否开启onFilter
293
-
294
- var enableFilter = function enableFilter(values) {
295
- var initialValues = JSON.stringify((0, _utils.getValidValues)(filterEnable.current));
296
- var changeValues = JSON.stringify((0, _utils.getValidValues)(values));
297
-
298
- if (filterEnable.current === true) {
299
- return true;
300
- } else if (initialValues === changeValues) {
301
- filterEnable.current = true;
302
- return false;
303
- }
304
-
305
- return false;
306
- }; // 简单搜索Filter
307
-
305
+ }, [panelVisible, configTag]); // 简单搜索Filter
308
306
 
309
307
  var onSimpleFilter = (0, _react.useCallback)( /*#__PURE__*/function () {
310
- var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {
308
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {
311
309
  return regeneratorRuntime.wrap(function _callee$(_context) {
312
310
  while (1) {
313
311
  switch (_context.prev = _context.next) {
314
312
  case 0:
315
- if (enableFilter(values)) {
316
- _context.next = 2;
313
+ if (!(currentForm.current === 'simple')) {
314
+ _context.next = 14;
317
315
  break;
318
316
  }
319
317
 
320
- return _context.abrupt("return");
321
-
322
- case 2:
323
- if (!(currentForm.current === 'simple')) {
324
- _context.next = 7;
318
+ if (!(filterEnable.current === 'initialized')) {
319
+ _context.next = 9;
325
320
  break;
326
321
  }
327
322
 
323
+ filterEnable.current = 'filter';
324
+
328
325
  if (!hasRequired) {
329
326
  _context.next = 6;
330
327
  break;
@@ -334,9 +331,28 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
334
331
  return simpleForm.validate();
335
332
 
336
333
  case 6:
334
+ onInit === null || onInit === void 0 ? void 0 : onInit(values);
335
+ _context.next = 14;
336
+ break;
337
+
338
+ case 9:
339
+ if (!(filterEnable.current === 'filter')) {
340
+ _context.next = 14;
341
+ break;
342
+ }
343
+
344
+ if (!hasRequired) {
345
+ _context.next = 13;
346
+ break;
347
+ }
348
+
349
+ _context.next = 13;
350
+ return simpleForm.validate();
351
+
352
+ case 13:
337
353
  onFilter === null || onFilter === void 0 ? void 0 : onFilter(values);
338
354
 
339
- case 7:
355
+ case 14:
340
356
  case "end":
341
357
  return _context.stop();
342
358
  }
@@ -345,39 +361,49 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
345
361
  }));
346
362
 
347
363
  return function (_x) {
348
- return _ref4.apply(this, arguments);
364
+ return _ref6.apply(this, arguments);
349
365
  };
350
- }(), [onFilter, currentForm.current, hasRequired, enableFilter]); // 轻量搜索Filter
366
+ }(), [onFilter, hasRequired, onInit]); // 轻量搜索Filter
351
367
 
352
368
  var onLightFilter = (0, _react.useCallback)( /*#__PURE__*/function () {
353
- var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(values) {
369
+ var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(values) {
354
370
  return regeneratorRuntime.wrap(function _callee2$(_context2) {
355
371
  while (1) {
356
372
  switch (_context2.prev = _context2.next) {
357
373
  case 0:
358
- if (enableFilter(values)) {
359
- _context2.next = 2;
374
+ if (!(currentForm.current === 'light')) {
375
+ _context2.next = 14;
360
376
  break;
361
377
  }
362
378
 
363
- return _context2.abrupt("return");
364
-
365
- case 2:
366
- if (!(currentForm.current === 'light')) {
379
+ if (!(filterEnable.current === 'initialized')) {
367
380
  _context2.next = 8;
368
381
  break;
369
382
  }
370
383
 
384
+ filterEnable.current = 'filter';
385
+ onInit === null || onInit === void 0 ? void 0 : onInit(values);
386
+ configFilterItem(advancedForm);
387
+ configTag();
388
+ _context2.next = 14;
389
+ break;
390
+
391
+ case 8:
392
+ if (!(filterEnable.current === 'filter')) {
393
+ _context2.next = 14;
394
+ break;
395
+ }
396
+
371
397
  onFilter === null || onFilter === void 0 ? void 0 : onFilter(values);
372
- _context2.next = 6;
398
+ _context2.next = 12;
373
399
  return advancedForm.reset();
374
400
 
375
- case 6:
401
+ case 12:
376
402
  // 不会触发高级筛选的onReset回调函数
377
403
  configFilterItem(advancedForm);
378
404
  configTag();
379
405
 
380
- case 8:
406
+ case 14:
381
407
  case "end":
382
408
  return _context2.stop();
383
409
  }
@@ -386,33 +412,70 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
386
412
  }));
387
413
 
388
414
  return function (_x2) {
389
- return _ref5.apply(this, arguments);
415
+ return _ref7.apply(this, arguments);
390
416
  };
391
- }(), [onFilter, currentForm.current, enableFilter]); // 高级搜索Filter
417
+ }(), [onFilter, onInit]); // 高级搜索Filter by Submit
392
418
 
393
419
  var onAdvancedFilter = (0, _react.useCallback)(function (values) {
394
- if (!enableFilter(values)) {
395
- return;
396
- }
397
-
398
420
  setCurrentForm('advanced');
399
421
  onFilter === null || onFilter === void 0 ? void 0 : onFilter(values);
400
422
  configFilterItem(advancedForm);
401
423
  lightForm.reset();
402
- }, [onFilter, currentForm.current, enableFilter]); // 高级搜索Change
403
-
404
- var onAdvancedChange = (0, _react.useCallback)(function (values) {
405
- if (!enableFilter(values)) {
406
- return;
407
- }
408
- }, [enableFilter]); // 高级搜索Reset
424
+ }, [onFilter]); // 高级搜索Reset
409
425
 
410
426
  var onAdvancedReset = (0, _react.useCallback)(function () {
411
427
  setCurrentForm('advanced');
412
428
  onReset === null || onReset === void 0 ? void 0 : onReset((0, _reactive.toJS)(advancedForm.values));
413
429
  configFilterItem(advancedForm);
414
430
  lightForm.reset();
415
- }, [onReset]); // 关闭标签清空表单字段值
431
+ }, [onReset]); // 高级搜索Filter by Change
432
+
433
+ var onAdvancedChange = (0, _react.useCallback)( /*#__PURE__*/function () {
434
+ var _ref8 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(values) {
435
+ return regeneratorRuntime.wrap(function _callee3$(_context3) {
436
+ while (1) {
437
+ switch (_context3.prev = _context3.next) {
438
+ case 0:
439
+ if (!(currentForm.current === 'advanced')) {
440
+ _context3.next = 9;
441
+ break;
442
+ }
443
+
444
+ if (!(filterEnable.current === 'initialized')) {
445
+ _context3.next = 9;
446
+ break;
447
+ }
448
+
449
+ filterEnable.current = 'filter';
450
+
451
+ if (!hasRequired) {
452
+ _context3.next = 6;
453
+ break;
454
+ }
455
+
456
+ _context3.next = 6;
457
+ return advancedForm.validate();
458
+
459
+ case 6:
460
+ onInit === null || onInit === void 0 ? void 0 : onInit(values);
461
+ configFilterItem(advancedForm);
462
+
463
+ if (!panelVisible) {
464
+ configTag();
465
+ }
466
+
467
+ case 9:
468
+ case "end":
469
+ return _context3.stop();
470
+ }
471
+ }
472
+ }, _callee3);
473
+ }));
474
+
475
+ return function (_x3) {
476
+ return _ref8.apply(this, arguments);
477
+ };
478
+ }(), [hasRequired, onInit]); // 关闭标签清空表单字段值
416
479
 
417
480
  var onTagClose = (0, _react.useCallback)(function (key, index) {
418
481
  var newValue = undefined;
@@ -432,7 +495,8 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
432
495
  form.setState({
433
496
  loading: false
434
497
  });
435
- }, []);
498
+ }, []); // 组件挂载
499
+
436
500
  (0, _react.useEffect)(function () {
437
501
  setCurrentForm(currentForm.current);
438
502
  }, []);
@@ -440,7 +504,7 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
440
504
  className: (0, _classnames.default)(prefixCls, props.className),
441
505
  addonBefore: addonBefore,
442
506
  addonAfter: addonAfter,
443
- expand: advancedFilterVisible,
507
+ expand: panelVisible,
444
508
  onExpand: toggleAdvancedFilter,
445
509
  count: tagDataSource.length,
446
510
  inlineContent: mode === 'panel' ? /*#__PURE__*/_react.default.createElement("div", {
@@ -464,12 +528,12 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
464
528
  onReset: onAdvancedReset,
465
529
  onInitialComplete: onInitialComplete
466
530
  })) : null
467
- }, mode === 'panel' && !advancedFilterVisible ? /*#__PURE__*/_react.default.createElement(_components.Tag.Group, null, tagDataSource.map(function (_ref6) {
468
- var key = _ref6.key,
469
- label = _ref6.label,
470
- value = _ref6.value,
471
- type = _ref6.type,
472
- index = _ref6.index;
531
+ }, mode === 'panel' && !panelVisible ? /*#__PURE__*/_react.default.createElement(_components.Tag.Group, null, tagDataSource.map(function (_ref9) {
532
+ var key = _ref9.key,
533
+ label = _ref9.label,
534
+ value = _ref9.value,
535
+ type = _ref9.type,
536
+ index = _ref9.index;
473
537
  return /*#__PURE__*/_react.default.createElement(_components.Tag.Closeable, {
474
538
  key: (0, _utils.isNum)(index) ? key + label : key,
475
539
  afterClose: function afterClose() {
@@ -1,6 +1,6 @@
1
1
  declare const useSpecialProps: (props: any) => {
2
2
  hasDefault: boolean;
3
- hasAsyncDefault: boolean;
3
+ hasChangeDefault: boolean;
4
4
  hasRequired: boolean;
5
5
  };
6
6
  export default useSpecialProps;
@@ -11,8 +11,9 @@ var _utils = require("@teamix/utils");
11
11
  var useSpecialProps = function useSpecialProps(props) {
12
12
  var initialValues = props.initialValues,
13
13
  initialRequest = props.initialRequest;
14
- var hasDefault = !!initialValues;
15
- var hasAsyncDefault = !!initialRequest;
14
+ var hasChangeDefault = !!initialValues || !!initialRequest; // 会触发onChange的默认值
15
+
16
+ var hasDefault = hasChangeDefault;
16
17
  var hasRequired = false;
17
18
 
18
19
  var hasDefaultOrRule = function hasDefaultOrRule(schema) {
@@ -20,13 +21,12 @@ var useSpecialProps = function useSpecialProps(props) {
20
21
  var value = item.default,
21
22
  required = item.required,
22
23
  rules = item.rules,
23
- request = item.request,
24
24
  dataSource = item.dataSource,
25
- children = item.children;
26
- hasDefault = hasDefault || (0, _utils.isSignificative)(value);
25
+ children = item.children; // 字符串变量配置default值会触发onChange
26
+
27
+ hasChangeDefault = hasChangeDefault || !!((0, _utils.isPureObj)(dataSource) && (0, _utils.isStr)(value) && value.indexOf('.dataSource'));
28
+ hasDefault = hasDefault || (0, _utils.isUsable)(value);
27
29
  hasRequired = hasRequired || required || !!rules;
28
- hasAsyncDefault = hasAsyncDefault || !!request || // 如果dataSource是异步且default取自dataSource
29
- !!((0, _utils.isPlainObj)(dataSource) && (0, _utils.isStr)(value) && value.indexOf('.dataSource'));
30
30
 
31
31
  if (children === null || children === void 0 ? void 0 : children.length) {
32
32
  hasDefaultOrRule(children);
@@ -37,7 +37,7 @@ var useSpecialProps = function useSpecialProps(props) {
37
37
  hasDefaultOrRule(props.schema);
38
38
  return {
39
39
  hasDefault: hasDefault,
40
- hasAsyncDefault: hasAsyncDefault,
40
+ hasChangeDefault: hasChangeDefault,
41
41
  hasRequired: hasRequired
42
42
  };
43
43
  };
@@ -244,10 +244,10 @@ var _default = /*#__PURE__*/(0, _react.memo)(function (_ref) {
244
244
 
245
245
  var _initializeRequest = (0, _initializeRequest2.default)(request, "".concat(suffix, "r")),
246
246
  requestReactions = _initializeRequest.reactions,
247
- requestScope = _initializeRequest.scope; // 初始化dataSource
247
+ requestScope = _initializeRequest.scope; // 初始化dataSource,如果readPretty为字符串表达式将失去loading等状态,仍可配置dataSource
248
248
 
249
249
 
250
- var _initializeDataSource = (0, _initializeDataSource2.default)(dataSource, "".concat(suffix, "d")),
250
+ var _initializeDataSource = (0, _initializeDataSource2.default)(dataSource, "".concat(suffix, "d"), newItem.readPretty),
251
251
  defaultDataSource = _initializeDataSource.dataSource,
252
252
  dataSourceReactions = _initializeDataSource.reactions,
253
253
  dataSourceScope = _initializeDataSource.scope; // 初始化rules validator
@@ -1,6 +1,6 @@
1
1
  import type { ProFormRequestConfig } from '../typing';
2
2
  interface IInitializeDataSource {
3
- (requestConfig?: ProFormRequestConfig | any, suffix?: string): {
3
+ (requestConfig?: ProFormRequestConfig | any, suffix?: string, readPretty?: string | boolean): {
4
4
  dataSource?: any[];
5
5
  reactions: any[];
6
6
  scope: {