@teamix/pro 1.3.11 → 1.3.12

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.
@@ -108,7 +108,6 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
108
108
  otherProps = _objectWithoutProperties(props, _excluded);
109
109
 
110
110
  var _useSpecialProps = (0, _useSpecialProps2.default)(props),
111
- hasChangeDefault = _useSpecialProps.hasChangeDefault,
112
111
  hasRequired = _useSpecialProps.hasRequired;
113
112
 
114
113
  var _useState = (0, _react.useState)(!!expand),
@@ -128,56 +127,66 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
128
127
  var prefixCls = (0, _utils.usePrefixCls)('', {
129
128
  prefix: 'teamix-pro-form-query-filter'
130
129
  });
131
- /**
132
- * 处理onInit与onFilter事件的触发问题
133
- */
130
+ var debounceFun = (0, _lodash.default)(function (fun, props) {
131
+ return fun(props);
132
+ }, filterDebounce); // onInit
134
133
 
134
+ var initialRequestRef = (0, _react.useRef)(!!(props === null || props === void 0 ? void 0 : props.initialRequest));
135
135
  var filterEnable = (0, _react.useRef)('waiting');
136
136
 
137
- var _onFormInit = function onFormInit(form, _ref) {
138
- var initialRequest = _ref.initialRequest,
139
- initialValues = _ref.initialValues;
137
+ var onFormInit = /*#__PURE__*/function () {
138
+ var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(form) {
139
+ var loadingField;
140
+ return regeneratorRuntime.wrap(function _callee$(_context) {
141
+ while (1) {
142
+ switch (_context.prev = _context.next) {
143
+ case 0:
144
+ form.setState({
145
+ loading: initialRequestRef.current
146
+ }); // 借用 form.loading 触发 onFormReact
140
147
 
141
- if (!form.mounted) {
142
- // 借用form的loading属性来判断initialValues和initialRequest是否完成
143
- form.setState({
144
- loading: !!initialRequest || !!initialValues
145
- });
146
- }
148
+ loadingField = Object.values(form.fields).filter(function (field) {
149
+ return !!field.loading;
150
+ }); // 等待mounted + 字段loading结束 + initialRequest结束 => 表单默认值初始化完成
147
151
 
148
- var loadingField = Object.values(form.fields).filter(function (field) {
149
- return !!field.loading;
150
- }); // 等待表单mounted + 字段loading结束 + form默认值初始化 => 表单初始化完成
152
+ if (!(form.mounted && !loadingField.length && !form.loading)) {
153
+ _context.next = 10;
154
+ break;
155
+ }
156
+
157
+ onFormInit = function onFormInit() {}; // init后销毁 isFormInit 方法
151
158
 
152
- if (form.mounted && !loadingField.length && !form.loading) {
153
- _onFormInit = function onFormInit() {}; // init后销毁 isFormInit 方法
154
159
 
160
+ filterEnable.current = 'filter';
161
+
162
+ if (!onInit) {
163
+ _context.next = 10;
164
+ break;
165
+ }
155
166
 
156
- var values = (0, _utils.getValidValues)(form.values);
167
+ _context.next = 8;
168
+ return form.validate();
157
169
 
158
- if (!(0, _utils.isUsable)(values) || !hasChangeDefault) {
159
- // 表单无默认值 无触发onChange的默认值配置,不会触发onFilter内的onInit,所以主动触发onInit
160
- filterEnable.current = 'filter';
161
- setTimeout(function () {
162
- onInit === null || onInit === void 0 ? void 0 : onInit((0, _reactive.toJS)(form.values));
163
- }, 0);
170
+ case 8:
171
+ onInit === null || onInit === void 0 ? void 0 : onInit((0, _reactive.toJS)(form.values)); // 设置Tag
164
172
 
165
- if (mode === 'panel') {
166
- // 移除lightForm的默认值
167
- // 设置Tag
168
- configFilterItem(advancedForm);
173
+ if (mode === 'panel') {
174
+ configFilterItem(advancedForm);
175
+ !panelVisible && configTag();
176
+ }
169
177
 
170
- if (!panelVisible) {
171
- setTimeout(function () {
172
- configTag();
173
- }, 0);
178
+ case 10:
179
+ case "end":
180
+ return _context.stop();
174
181
  }
175
182
  }
176
- } else {
177
- filterEnable.current = 'initialized';
178
- }
179
- }
180
- }; // 配置当前激活的form实例
183
+ }, _callee);
184
+ }));
185
+
186
+ return function onFormInit(_x) {
187
+ return _ref.apply(this, arguments);
188
+ };
189
+ }(); // 配置当前激活的form实例
181
190
 
182
191
 
183
192
  var setCurrentForm = function setCurrentForm(formName) {
@@ -203,7 +212,7 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
203
212
  effects: function effects() {
204
213
  (0, _core.onFormReact)(function (form) {
205
214
  if (mode === 'inline') {
206
- _onFormInit(form, props);
215
+ onFormInit(form);
207
216
  }
208
217
  });
209
218
  }
@@ -227,7 +236,7 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
227
236
  effects: function effects() {
228
237
  (0, _core.onFormReact)(function (form) {
229
238
  if (mode === 'panel') {
230
- _onFormInit(form, props);
239
+ onFormInit(form);
231
240
  }
232
241
  });
233
242
  (0, _core.onFormInputChange)(function (form) {
@@ -308,93 +317,62 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
308
317
  }, [panelVisible, configTag]); // 简单搜索Filter
309
318
 
310
319
  var onSimpleFilter = (0, _react.useCallback)( /*#__PURE__*/function () {
311
- var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(values) {
312
- return regeneratorRuntime.wrap(function _callee$(_context) {
320
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(values) {
321
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
313
322
  while (1) {
314
- switch (_context.prev = _context.next) {
323
+ switch (_context2.prev = _context2.next) {
315
324
  case 0:
316
- if (!(currentForm.current === 'simple')) {
317
- _context.next = 14;
318
- break;
319
- }
320
-
321
- if (!(filterEnable.current === 'initialized')) {
322
- _context.next = 9;
323
- break;
324
- }
325
-
326
- filterEnable.current = 'filter';
327
-
328
- if (!hasRequired) {
329
- _context.next = 6;
330
- break;
331
- }
332
-
333
- _context.next = 6;
334
- return simpleForm.validate();
335
-
336
- case 6:
337
- onInit === null || onInit === void 0 ? void 0 : onInit(values);
338
- _context.next = 14;
339
- break;
340
-
341
- case 9:
342
- if (!(filterEnable.current === 'filter')) {
343
- _context.next = 14;
344
- break;
345
- }
346
-
347
- if (!hasRequired) {
348
- _context.next = 13;
349
- break;
350
- }
351
-
352
- _context.next = 13;
325
+ _context2.next = 2;
353
326
  return simpleForm.validate();
354
327
 
355
- case 13:
328
+ case 2:
356
329
  onFilter === null || onFilter === void 0 ? void 0 : onFilter(values);
357
330
 
358
- case 14:
331
+ case 3:
359
332
  case "end":
360
- return _context.stop();
333
+ return _context2.stop();
361
334
  }
362
335
  }
363
- }, _callee);
336
+ }, _callee2);
364
337
  }));
365
338
 
366
- return function (_x) {
339
+ return function (_x2) {
367
340
  return _ref4.apply(this, arguments);
368
341
  };
369
- }(), [onFilter, hasRequired, onInit]); // 简单搜索Change
342
+ }(), [onFilter]); // 简单搜索Change
370
343
 
371
344
  var onSimpleChange = (0, _react.useCallback)(function (values, fieldValue, fieldName) {
372
345
  if (currentForm.current === 'simple') {
373
346
  onChange === null || onChange === void 0 ? void 0 : onChange(values, fieldValue, fieldName);
347
+
348
+ if (filterEnable.current === 'filter') {
349
+ debounceFun(onSimpleFilter, values);
350
+ }
374
351
  }
375
352
  }, [onChange]); // 轻量搜索Filter
376
353
 
377
354
  var onLightFilter = (0, _react.useCallback)(function (values) {
378
- if (currentForm.current === 'light') {
379
- if (filterEnable.current === 'filter') {
380
- var _Object$keys;
355
+ var _Object$keys;
381
356
 
382
- onFilter === null || onFilter === void 0 ? void 0 : onFilter(values); // 清空advancedForm的值,配置Tag
357
+ onFilter === null || onFilter === void 0 ? void 0 : onFilter(values); // 清空advancedForm的值
383
358
 
384
- var clearKeys = {};
385
- (_Object$keys = Object.keys(advancedForm.values)) === null || _Object$keys === void 0 ? void 0 : _Object$keys.forEach(function (key) {
386
- clearKeys[key] = undefined;
387
- });
388
- advancedForm.setValues(clearKeys);
389
- configFilterItem(advancedForm);
390
- configTag();
391
- }
392
- }
359
+ var clearKeys = {};
360
+ (_Object$keys = Object.keys(advancedForm.values)) === null || _Object$keys === void 0 ? void 0 : _Object$keys.forEach(function (key) {
361
+ clearKeys[key] = undefined;
362
+ });
363
+ advancedForm.setValues(clearKeys); // 配置Tag
364
+
365
+ configFilterItem(advancedForm);
366
+ configTag();
393
367
  }, [onFilter]); // 轻量搜索Change
394
368
 
395
369
  var onLightChange = (0, _react.useCallback)(function (values, fieldValue, fieldName) {
396
370
  if (currentForm.current === 'light') {
397
371
  onChange === null || onChange === void 0 ? void 0 : onChange(values, fieldValue, fieldName);
372
+
373
+ if (filterEnable.current === 'filter') {
374
+ debounceFun(onLightFilter, values);
375
+ }
398
376
  }
399
377
  }, [onChange]); // 高级搜索Filter
400
378
 
@@ -416,54 +394,7 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
416
394
  lightForm.reset('*', {
417
395
  forceClear: true
418
396
  });
419
- }, [onReset]); // 高级搜索Init
420
-
421
- var onAdvancedInit = (0, _react.useCallback)( /*#__PURE__*/function () {
422
- var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(values) {
423
- return regeneratorRuntime.wrap(function _callee2$(_context2) {
424
- while (1) {
425
- switch (_context2.prev = _context2.next) {
426
- case 0:
427
- if (!(currentForm.current === 'advanced')) {
428
- _context2.next = 9;
429
- break;
430
- }
431
-
432
- if (!(filterEnable.current === 'initialized')) {
433
- _context2.next = 9;
434
- break;
435
- }
436
-
437
- filterEnable.current = 'filter';
438
-
439
- if (!hasRequired) {
440
- _context2.next = 6;
441
- break;
442
- }
443
-
444
- _context2.next = 6;
445
- return advancedForm.validate();
446
-
447
- case 6:
448
- onInit === null || onInit === void 0 ? void 0 : onInit(values);
449
- configFilterItem(advancedForm);
450
-
451
- if (!panelVisible) {
452
- configTag();
453
- }
454
-
455
- case 9:
456
- case "end":
457
- return _context2.stop();
458
- }
459
- }
460
- }, _callee2);
461
- }));
462
-
463
- return function (_x2) {
464
- return _ref5.apply(this, arguments);
465
- };
466
- }(), [hasRequired, onInit]); // 高级搜索Change
397
+ }, [onReset]); // 高级搜索Change
467
398
 
468
399
  var onAdvancedChange = (0, _react.useCallback)(function (values, fieldValue, fieldName) {
469
400
  if (currentForm.current === 'advanced') {
@@ -483,16 +414,14 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
483
414
  configFilterItem(advancedForm);
484
415
  configTag();
485
416
  onFilter === null || onFilter === void 0 ? void 0 : onFilter((0, _reactive.toJS)(advancedForm.values));
486
- }, [onFilter]); // initialValues和initialRequest的回调
417
+ }, [onFilter]); // initialRequest 的回调
487
418
 
488
419
  var onInitialComplete = (0, _react.useCallback)(function (form) {
420
+ initialRequestRef.current = false;
489
421
  form.setState({
490
- loading: false
422
+ loading: initialRequestRef.current
491
423
  });
492
- }, []);
493
- var debounceFun = (0, _lodash.default)(function (fun, props) {
494
- return fun(props);
495
- }, filterDebounce); // 组件挂载
424
+ }, []); // 组件挂载
496
425
 
497
426
  (0, _react.useEffect)(function () {
498
427
  setCurrentForm(currentForm.current);
@@ -511,37 +440,28 @@ var QueryFilter = /*#__PURE__*/(0, _react.memo)(function (props) {
511
440
  filterValues: filterValues,
512
441
  activeFilterValueRef: activeFilterValueRef,
513
442
  form: lightForm,
514
- onChange: function onChange(values, fieldValue, fieldName) {
515
- debounceFun(onLightFilter, values);
516
- onLightChange(values, fieldValue, fieldName);
517
- }
443
+ onChange: onLightChange
518
444
  }))) : /*#__PURE__*/_react.default.createElement("div", {
519
445
  className: "".concat(prefixCls, "-inline")
520
446
  }, /*#__PURE__*/_react.default.createElement(_SimpleFilter.default, _objectSpread(_objectSpread({}, otherProps), {}, {
521
447
  form: simpleForm,
522
- onChange: function onChange(values, fieldValue, fieldName) {
523
- debounceFun(onSimpleFilter, values);
524
- onSimpleChange(values, fieldValue, fieldName);
525
- },
448
+ onChange: onSimpleChange,
526
449
  onSubmit: onSimpleFilter,
527
450
  onInitialComplete: onInitialComplete
528
451
  }))),
529
452
  panelContent: mode === 'panel' ? /*#__PURE__*/_react.default.createElement(_AdvancedFilter.default, _objectSpread(_objectSpread({}, otherProps), {}, {
530
453
  form: advancedForm,
531
- onChange: function onChange(values, fieldValue, fieldName) {
532
- debounceFun(onAdvancedInit, values);
533
- onAdvancedChange(values, fieldValue, fieldName);
534
- },
454
+ onChange: onAdvancedChange,
535
455
  onSubmit: onAdvancedFilter,
536
456
  onReset: onAdvancedReset,
537
457
  onInitialComplete: onInitialComplete
538
458
  })) : null
539
- }, mode === 'panel' && !panelVisible ? /*#__PURE__*/_react.default.createElement(_components.Tag.Group, null, tagDataSource.map(function (_ref6) {
540
- var key = _ref6.key,
541
- label = _ref6.label,
542
- value = _ref6.value,
543
- type = _ref6.type,
544
- index = _ref6.index;
459
+ }, mode === 'panel' && !panelVisible ? /*#__PURE__*/_react.default.createElement(_components.Tag.Group, null, tagDataSource.map(function (_ref5) {
460
+ var key = _ref5.key,
461
+ label = _ref5.label,
462
+ value = _ref5.value,
463
+ type = _ref5.type,
464
+ index = _ref5.index;
545
465
  return /*#__PURE__*/_react.default.createElement(_components.Tag.Closeable, {
546
466
  key: (0, _utils.isNum)(index) ? key + label : key,
547
467
  afterClose: function afterClose() {
@@ -31,7 +31,7 @@ var _validate = _interopRequireDefault(require("../locales/validate"));
31
31
 
32
32
  require("./index.scss");
33
33
 
34
- var _excluded = ["form", "initialValues", "initialRequest", "schema", "scope", "context", "components", "children", "layout", "labelAlign", "wrapperAlign", "labelCol", "wrapperCol", "breakpoints", "onChange", "onSubmit", "onSubmitFailed", "onInitialComplete", "className", "validateFirst"];
34
+ var _excluded = ["form", "initialValues", "initialRequest", "schema", "scope", "context", "components", "children", "layout", "labelAlign", "wrapperAlign", "labelCol", "wrapperCol", "breakpoints", "onChange", "onChangeType", "onSubmit", "onSubmitFailed", "onInitialComplete", "className", "validateFirst"];
35
35
 
36
36
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
37
 
@@ -66,6 +66,7 @@ var ProForm = /*#__PURE__*/(0, _react.memo)(function (_ref) {
66
66
  wrapperCol = _ref.wrapperCol,
67
67
  breakpoints = _ref.breakpoints,
68
68
  onChange = _ref.onChange,
69
+ onChangeType = _ref.onChangeType,
69
70
  onSubmit = _ref.onSubmit,
70
71
  onSubmitFailed = _ref.onSubmitFailed,
71
72
  onInitialComplete = _ref.onInitialComplete,
@@ -112,35 +113,44 @@ var ProForm = /*#__PURE__*/(0, _react.memo)(function (_ref) {
112
113
  labelCol: (0, _utils2.mergeArrayValue)([24], labelCol),
113
114
  wrapperCol: (0, _utils2.mergeArrayValue)([24], wrapperCol)
114
115
  };
115
- }, [breakpoints, layout, labelAlign, wrapperAlign, labelCol, wrapperCol]); // 添加onChange
116
-
117
- (0, _react.useEffect)(function () {
118
- form.removeEffects('onFieldValueChange');
119
- form.addEffects('onFieldValueChange', function () {
120
- (0, _core.onFieldValueChange)('*', function (field, form) {
121
- var _field$props;
122
-
123
- onChange && onChange((0, _reactive.toJS)(form.values), (0, _reactive.toJS)(field.value), (_field$props = field.props) === null || _field$props === void 0 ? void 0 : _field$props.name);
124
- });
125
- });
126
- }, [form, onChange]); // 配置表单默认值
127
-
128
- (0, _react.useEffect)(function () {
116
+ }, [breakpoints, layout, labelAlign, wrapperAlign, labelCol, wrapperCol]);
117
+ (0, _react.useMemo)(function () {
118
+ // 配置表单默认值
129
119
  if (initialValues) {
130
120
  form.setInitialValues(initialValues);
131
- onInitialComplete === null || onInitialComplete === void 0 ? void 0 : onInitialComplete(form);
132
121
  } else if (initialRequest) {
133
122
  (0, _useInitialRequest.default)(initialRequest).then(function (values) {
134
123
  form.setInitialValues(values);
135
124
  }).finally(function () {
136
125
  onInitialComplete === null || onInitialComplete === void 0 ? void 0 : onInitialComplete(form);
137
126
  });
138
- }
139
- }, []); // 配置国际化
127
+ } // 配置国际化
128
+
140
129
 
141
- (0, _react.useEffect)(function () {
142
130
  (0, _core.setValidateLanguage)((0, _utils.getLanguage)() || 'zh-cn');
143
- }, []);
131
+ }, []); // 添加 onChange 事件
132
+
133
+ (0, _react.useMemo)(function () {
134
+ if (onChangeType === 'form') {
135
+ // 使用 onFormValuesChange 无法监听具体变化字段
136
+ form.removeEffects('onChangeByFormValuesChange');
137
+ form.addEffects('onChangeByFormValuesChange', function () {
138
+ (0, _core.onFormValuesChange)(function (form) {
139
+ onChange === null || onChange === void 0 ? void 0 : onChange((0, _reactive.toJS)(form.values));
140
+ });
141
+ });
142
+ } else {
143
+ // 使用 onFieldValueChange 无法监听数组类型值的增删
144
+ form.removeEffects('onChangeByFieldValueChange');
145
+ form.addEffects('onChangeByFieldValueChange', function () {
146
+ (0, _core.onFieldValueChange)('*', function (field, form) {
147
+ var _field$props;
148
+
149
+ onChange === null || onChange === void 0 ? void 0 : onChange((0, _reactive.toJS)(form.values), (0, _reactive.toJS)(field.value), (_field$props = field.props) === null || _field$props === void 0 ? void 0 : _field$props.name);
150
+ });
151
+ });
152
+ }
153
+ }, [onChange]);
144
154
  return /*#__PURE__*/_react.default.createElement(_formily.Form, _objectSpread(_objectSpread(_objectSpread({
145
155
  className: (0, _classnames.default)(prefixCls, className)
146
156
  }, otherProps), getTeamixLayout), {}, {
@@ -67,6 +67,7 @@ export interface ProFormProps extends IFormLayoutProps {
67
67
  initialRequest?: ProFormRequestConfig;
68
68
  previewTextPlaceholder?: ReactNode;
69
69
  validateFirst?: boolean;
70
+ onChangeType?: 'form';
70
71
  onChange?: (values: any, fieldValue?: any, fieldName?: any) => any;
71
72
  onSubmit?: ((values: any) => any) | CommonRequestConfig;
72
73
  onSubmitFailed?: (feedbacks: IFormFeedback[]) => void;
package/lib/index.d.ts CHANGED
@@ -26,5 +26,5 @@ export * from './table';
26
26
  export * from './sidebar';
27
27
  export * from './utils';
28
28
  export * from './timeline';
29
- declare const version = "1.3.11";
29
+ declare const version = "1.3.12";
30
30
  export { version, ProAction, ProCard, ProField, ProForm, ProInfo, ProPageContainer, ProPageHeader, ProSkeleton, ProTable, ProSidebar, ProTimeline, hooks, nocode, templates, utils, };
package/lib/index.js CHANGED
@@ -305,5 +305,5 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
305
305
  // 设置图标源
306
306
  _icon.default.setConfig(_utils.default.getTeamixIconConfig());
307
307
 
308
- var version = '1.3.11';
308
+ var version = '1.3.12';
309
309
  exports.version = version;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamix/pro",
3
- "version": "1.3.11",
3
+ "version": "1.3.12",
4
4
  "description": "TeamixPro大包",
5
5
  "keywords": [
6
6
  "aliyun",