fan-standard-comp 4.0.3 → 4.0.4

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.
@@ -12,7 +12,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
12
12
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
13
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
14
  /* eslint-disable */
15
- import React, { useCallback } from "react";
15
+ import React, { useEffect, useCallback } from "react";
16
16
  import { Row, Col, Tooltip, Form, Space } from "antd";
17
17
  import { general } from "../../data";
18
18
  import Field from "../FieldComponent";
@@ -48,7 +48,53 @@ var RenderItemGroup = function RenderItemGroup(props) {
48
48
  // // @ts-ignore
49
49
  // return general.modalSize[size].columnNumber || 1
50
50
  // }, [size, columnCount])
51
-
51
+ /*
52
+ // 当前需要显示的前几条表单项
53
+ // const [showItemNumber, setShowItemNumber] = useState(0)
54
+ // 计算当前栅格数量,及对应的size
55
+ const columnNumberAndSize = useMemo(() => {
56
+ // 当前栅栅数量
57
+ let itemGroupSize = size || (layout === 'horizontal' ? 'xxlg' : 'md')
58
+ if (columnCount) {
59
+ // 有配置栅格数 1,2,3,4
60
+ switch (columnCount) {
61
+ case 1:
62
+ itemGroupSize = 'sm'
63
+ break;
64
+ case 2:
65
+ itemGroupSize = 'md'
66
+ break;
67
+ case 3:
68
+ itemGroupSize = 'lg'
69
+ break;
70
+ case 4:
71
+ itemGroupSize = 'xxlg'
72
+ break;
73
+ }
74
+ }
75
+ return {
76
+ // @ts-ignore
77
+ columnNumber: general.modalSize[itemGroupSize].columnNumber,
78
+ itemGroupSize, columnCount
79
+ }
80
+ }, [size, columnCount, layout])
81
+ useEffect(() => {
82
+ setShowItemNumber(columnNumberAndSize.columnNumber - 1)
83
+ }, [columnNumberAndSize, size])
84
+
85
+ // 判断是否隐藏结构, display:'none'
86
+ const setItemHiddenNode = (item: any, index: number, collapsed: boolean, showItemNumber: number) => {
87
+ // updateFormFields() // TODO 放这执行会报错,但是不加的话,切换栅格变化会导致收缩状态下隐藏的表单项未更新
88
+ if (item.filedName === 'filterAction') {
89
+ return {
90
+ isHidden: false
91
+ }
92
+ }
93
+ return {
94
+ // 栅格列为1时,显示1个表单项
95
+ isHidden: collapsed ? false : (showItemNumber === 0 ? index !== 0 : !(index < showItemNumber))
96
+ }
97
+ }*/
52
98
  var setColSpan = function setColSpan(display, modalSize, columnCount) {
53
99
  if (_typeof(display) === 'object' || display === 'block') {
54
100
  // 栅格数量为:1
@@ -72,13 +118,13 @@ var RenderItemGroup = function RenderItemGroup(props) {
72
118
  return 12;
73
119
  };
74
120
  var updateFormFields = function updateFormFields() {
121
+ // console.log('用于触发更新表单实例赋值')
75
122
  // if (newVal) form && form.setFieldsValue({ ...newVal })
76
123
  if (doUpdateFormFields) doUpdateFormFields(); // 用于触发更新表单实例赋值
77
124
  };
78
-
79
- // useEffect(() => {
80
- // // updateFormFields()
81
- // }, [form])
125
+ useEffect(function () {
126
+ updateFormFields();
127
+ }, [form]);
82
128
 
83
129
  // 渲染隐藏指定控件
84
130
  var itemIsHide = function itemIsHide(isHide, getFieldsValue, FormInstance) {
@@ -205,9 +251,18 @@ var RenderItemGroup = function RenderItemGroup(props) {
205
251
  customRender = item.customRender,
206
252
  filedName = item.filedName; // 当前可传参的配置值
207
253
  if (layout === "horizontal" || layout === "vertical") {
254
+ // if (collapseable && layout === "horizontal") {
255
+ // const { isHidden } = setItemHiddenNode(item, index, collapsed, showItemNumber)
256
+ // item.isHidden = isHidden
257
+ // item.style = { ...(item.style || {}), display: item.isHidden ? 'none' : 'block' }
258
+ // // if (index < showItemNumber) {
259
+ // // console.log('===>>>>当前显示【常规表单项】=>>', item.filedName, '序号', index, '可显示数量', showItemNumber, collapsed)
260
+ // // }
261
+ // }
208
262
  return /*#__PURE__*/React.createElement(Col, {
209
263
  key: index,
210
- span: item.colSpan || setColSpan(item.display, size, columnCount)
264
+ span: item.colSpan || setColSpan(item.display, size, columnCount),
265
+ style: item.style
211
266
  }, /*#__PURE__*/React.createElement(FormItem, _extends({
212
267
  name: type !== 'custom' && filedName,
213
268
  className: classNames(fieldStatus === 'viewOnly' ? 'form-item-view-only' : '', 'spec-item-group-form-item'),
@@ -244,34 +299,7 @@ var RenderItemGroup = function RenderItemGroup(props) {
244
299
  type = item.type,
245
300
  _item$display = item.display,
246
301
  display = _item$display === void 0 ? 'side' : _item$display; // 当前可传参的配置值
247
-
248
302
  var formLayout = calculateFormLayout(item);
249
- // if (displayLayout) {
250
- // // 如果未配置,则使用以下配置值
251
- // formLayout = { ...displayLayout }
252
- // }
253
- // 优先级 displayLayout.side > displayLayout > general
254
- // 优先级:若有displayLayout.block 则直接使用 general > displayLayout
255
- // 还需要判断 layout为vertical还是horizontal
256
- // @ts-ignore
257
- // formLayout = displayLayout?.side || (displayLayout?.block ? general.modalSize[size].formLayout : ((!displayLayout || JSON.stringify(displayLayout) === '{}') ? general.modalSize[size].formLayout : displayLayout))
258
- // if (item.hasOwnProperty('display')) {
259
- // if (typeof display === 'string') {
260
- // if (display === 'block') {
261
- // // @ts-ignore
262
- // formLayout = displayLayout?.block || general.modalSize[size].formBlockLayout
263
- // } else {
264
- // // 使用默认
265
- // // formLayout = displayLayout?.side || (displayLayout?.block ? general.modalSize[size].formLayout : displayLayout) || general.modalSize[size].formLayout
266
- // }
267
- // } else {
268
- // formLayout = item.display // 对象类型传值如: {labelCol: {span: 3},wrapperCol: {span: 8}} 优先级最高
269
- // }
270
- // }
271
- // // 当布局为 'inline' 时,不配置栅格结构
272
- // if (layout === 'inline') {
273
- // formLayout = {}
274
- // }
275
303
  // title标题或html渲染
276
304
  if (type === 'title' || type === 'html') {
277
305
  return /*#__PURE__*/React.createElement(FormItem, {
@@ -282,7 +310,8 @@ var RenderItemGroup = function RenderItemGroup(props) {
282
310
  var _item$protoConfig;
283
311
  // isHide 返回为true则隐藏当前控件
284
312
  return !itemIsHide(isHide, FormInstance.getFieldValue(), FormInstance) ? /*#__PURE__*/React.createElement(Col, {
285
- span: item.colSpan || 24
313
+ span: item.colSpan || 24,
314
+ style: item.style
286
315
  }, type === 'title' ? /*#__PURE__*/React.createElement("h3", _extends({}, item.protoConfig, {
287
316
  className: "modalPanelTitle ".concat((item === null || item === void 0 || (_item$protoConfig = item.protoConfig) === null || _item$protoConfig === void 0 ? void 0 : _item$protoConfig.className) || '')
288
317
  }), label) : label) : /*#__PURE__*/React.createElement(React.Fragment, null, null);
@@ -299,6 +328,7 @@ var RenderItemGroup = function RenderItemGroup(props) {
299
328
  return !itemIsHide(isHide, FormInstance.getFieldValue(), FormInstance) ? renderColFormItem(item, index, formLayout) : null;
300
329
  });
301
330
  }
331
+ // 常规表单项结构
302
332
  return renderColFormItem(item, index, formLayout);
303
333
  });
304
334
  };
@@ -22,6 +22,7 @@ export interface StandardFilterProps {
22
22
  colon?: boolean;
23
23
  dateFormatter?: 'dayjs' | 'string';
24
24
  itemGroupConfig?: object;
25
+ collapseable?: boolean;
25
26
  [k: string]: any;
26
27
  }
27
28
  declare const StandardFilter: React.ForwardRefExoticComponent<Omit<StandardFilterProps, "ref"> & React.RefAttributes<unknown>>;
@@ -21,8 +21,10 @@ import { general } from "../data/";
21
21
  import "./style/index.less";
22
22
  import { FanContext } from "../ConfigContext";
23
23
  import useStyle from "./style/FilterStyle";
24
+ import SpecIcon from "../SpecIcon";
24
25
  var FormItem = Form.Item;
25
26
  var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
27
+ var _filterFormRef$curren4;
26
28
  var InitFanContext = useContext(FanContext);
27
29
  var providerConfig = InitFanContext['StandardFilter'] || {}; // 使用上下文(全局配置)设置扩展的配置项
28
30
  var _providerConfig$props = _objectSpread(_objectSpread({}, providerConfig), props),
@@ -56,7 +58,9 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
56
58
  filterBtnsStyle = _providerConfig$props.filterBtnsStyle,
57
59
  _providerConfig$props7 = _providerConfig$props.colon,
58
60
  colon = _providerConfig$props7 === void 0 ? true : _providerConfig$props7,
59
- dateFormatter = _providerConfig$props.dateFormatter;
61
+ dateFormatter = _providerConfig$props.dateFormatter,
62
+ _providerConfig$props8 = _providerConfig$props.collapseable,
63
+ collapseable = _providerConfig$props8 === void 0 ? false : _providerConfig$props8;
60
64
  var filterFormRef = useRef();
61
65
  // ref 的转发
62
66
  useImperativeHandle(ref, function () {
@@ -70,7 +74,10 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
70
74
  _useState4 = _slicedToArray(_useState3, 2),
71
75
  isHideCount = _useState4[0],
72
76
  setIsHideCount = _useState4[1]; // 表单隐藏项数量值
73
-
77
+ var _useState5 = useState(false),
78
+ _useState6 = _slicedToArray(_useState5, 2),
79
+ collapsed = _useState6[0],
80
+ setCollapsed = _useState6[1];
74
81
  var componentName = 'spec-standard-filter';
75
82
  var _useStyle = useStyle(componentName),
76
83
  _useStyle2 = _slicedToArray(_useStyle, 2),
@@ -79,8 +86,9 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
79
86
  var filterFormLayout = useMemo(function () {
80
87
  return formLayout || 'inline';
81
88
  }, [formLayout]);
82
- // 配置筛选按钮(确认与取消)
83
- var filterActionButtons = useMemo(function () {
89
+
90
+ // 计算当前栅格数量,及对应的size
91
+ var columnNumberAndSize = useMemo(function () {
84
92
  // 当前栅栅数量
85
93
  var itemGroupSize = (itemGroupConfig === null || itemGroupConfig === void 0 ? void 0 : itemGroupConfig.size) || (filterFormLayout === 'horizontal' ? 'xxlg' : 'md');
86
94
  if (itemGroupConfig !== null && itemGroupConfig !== void 0 && itemGroupConfig.columnCount) {
@@ -100,8 +108,31 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
100
108
  break;
101
109
  }
102
110
  }
111
+ return {
112
+ columnNumber: general.modalSize[itemGroupSize].columnNumber,
113
+ itemGroupSize: itemGroupSize
114
+ };
115
+ }, [itemGroupConfig, filterFormLayout]);
116
+
117
+ // 计算表单隐藏项(开启展开与收缩)
118
+ var calculateHideCount = function calculateHideCount(filterFormRef, groups) {
119
+ var _filterFormRef$curren;
120
+ var formValues = filterFormRef === null || filterFormRef === void 0 || (_filterFormRef$curren = filterFormRef.current) === null || _filterFormRef$curren === void 0 ? void 0 : _filterFormRef$curren.getFieldValue();
121
+ setIsHideCount((groups || []).filter(function (item) {
122
+ return (item === null || item === void 0 ? void 0 : item.isHidden) || (item.hasOwnProperty('isHide') ? item.isHide(_objectSpread({}, formValues), filterFormRef) : false);
123
+ }).length);
124
+ };
125
+
126
+ // 配置筛选按钮(确认与取消)
127
+ var filterActionButtons = useMemo(function () {
128
+ var itemGroupSize = columnNumberAndSize.itemGroupSize,
129
+ columnNumber = columnNumberAndSize.columnNumber;
103
130
  // 计算扣除栅格列数是否还有多余的项,用来判断筛选按钮的版式(初始化的时候,可能会受默认值内配置的isHide影响导致计算错误;或自定义表单控件组栅格影响)
104
- var calculateTimes = (formItemGroup.length - isHideCount) % general.modalSize[itemGroupSize].columnNumber;
131
+ // if (collapseable) {
132
+ // columnNumber = collapsed ? columnNumber : (columnNumber === 1 ? columnNumber = 2 : columnNumber)
133
+ // }
134
+ var calculateTimes = (reFormItemGroup.length - isHideCount) % columnNumber;
135
+ // console.log('当前多余的数量', calculateTimes, '当前隐藏的控件数量isHideCount==>', isHideCount, itemGroupSize, 'columnNumber', columnNumber)
105
136
  // xs:1列 sm:1列 【span:24】
106
137
  // md:2列 【span:12】
107
138
  // lg:3列 xlg:3列 【span:8】
@@ -111,10 +142,11 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
111
142
  label: '',
112
143
  type: 'custom',
113
144
  // display: 'block',
145
+ filedName: 'filterAction',
114
146
  display: {
115
147
  wrapperCol: {
116
- // 占用的格子数按对应size配置的formItem(md下额外再新增1)
117
- span: general.modalSize[itemGroupSize].formLayout.labelCol.span + general.modalSize[itemGroupSize].formLayout.wrapperCol.span + (itemGroupSize === 'md' ? 1 : 0)
148
+ // 占用的格子数按对应size配置的formItem(md下额外再新增1, 忘了为什么额外加了,先去除.20240619)
149
+ span: general.modalSize[itemGroupSize].formLayout.labelCol.span + general.modalSize[itemGroupSize].formLayout.wrapperCol.span // + (itemGroupSize === 'md' ? 1 : 0)
118
150
  }
119
151
  },
120
152
  protoFormItem: {
@@ -137,10 +169,23 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
137
169
  },
138
170
  onClick: handleReset,
139
171
  ghost: true
140
- }, cancelButtonProps), cancelText || '重置'));
172
+ }, cancelButtonProps), cancelText || '重置'), filterFormLayout === 'horizontal' && collapseable && reFormItemGroup.length > columnNumberAndSize.columnNumber - 1 ? /*#__PURE__*/React.createElement(Button, {
173
+ type: 'link',
174
+ onClick: function onClick() {
175
+ return setCollapsed(!collapsed);
176
+ },
177
+ style: {
178
+ marginLeft: 8,
179
+ paddingInlineStart: 0,
180
+ paddingInlineEnd: 0
181
+ }
182
+ }, collapsed ? '收起' : '展开', /*#__PURE__*/React.createElement(SpecIcon, {
183
+ noPrefix: true,
184
+ name: collapsed ? 'speci-up' : 'speci-down'
185
+ })) : null);
141
186
  }
142
187
  })];
143
- }, [confirmText, cancelText, filterFormLayout, reFormItemGroup, onFilterSearch, onFilterReset, itemGroupConfig, filterFormRef, isHideCount]);
188
+ }, [confirmText, cancelText, filterFormLayout, reFormItemGroup, onFilterSearch, onFilterReset, columnNumberAndSize, filterFormRef, isHideCount, collapseable, collapsed]);
144
189
 
145
190
  // 更新表单控件值,用于外部获取当前表单实例(force是否强制清空表单)
146
191
  var updateFormFields = function updateFormFields(newVal, force) {
@@ -175,37 +220,29 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
175
220
  })
176
221
  } */
177
222
  filterFormRef.current.setFieldsValue(_objectSpread(_objectSpread({}, resetValues), newVal || {})); // 直接清空表单的赋值
178
- updateCalculate(filterFormRef.current.getFieldsValue());
179
- if (getFormFields) getFormFields(filterFormRef.current.getFieldsValue(), filterFormRef);
223
+ forceUpdateForm();
180
224
  };
181
225
  // 强制更新表单值,用于赋初始化实例值
182
226
  var forceUpdateForm = useCallback(function () {
183
227
  var formValues = filterFormRef.current.getFieldsValue();
184
- // if (Object.prototype.hasOwnProperty.call(formValues, false)) {
185
- // delete formValues.false // TODO 自定义结构会莫名的出来一个false字段
186
- // }
187
- updateCalculate(formValues); // 更新当前表单数量,排除被隐藏的值
188
- if (getFormFields) getFormFields(filterFormRef.current.getFieldsValue(), filterFormRef);
189
- }, [dateFormatter, formItemGroup]);
190
- // 计算表单隐藏项
191
- var updateCalculate = useCallback(function (formValues) {
192
- setIsHideCount(reFormItemGroup.filter(function (item) {
193
- return item.hasOwnProperty('isHide') ? item.isHide(_objectSpread({}, formValues), filterFormRef) : false;
194
- }).length);
228
+ if (Object.prototype.hasOwnProperty.call(formValues, false)) {
229
+ delete formValues.false; // 自定义结构会莫名的出来一个false字段
230
+ }
231
+ calculateHideCount(filterFormRef, reFormItemGroup); // 更新当前表单数量,排除被隐藏的值
232
+ if (getFormFields) getFormFields(formValues, filterFormRef);
195
233
  }, [reFormItemGroup, filterFormRef]);
196
234
  var handleSearch = function handleSearch(values) {
197
235
  if (Object.prototype.hasOwnProperty.call(values, false)) {
198
- delete values.false; // TODO 自定义结构会莫名的出来一个false字段
236
+ delete values.false; // 自定义结构会莫名的出来一个false字段
199
237
  }
200
- var resultValues = dateFormatter === 'string' ? UtilValueFormat(values, formItemGroup) : values;
201
- console.log('格式化前数据', values);
202
- console.log('格式化后数据', resultValues);
238
+ var resultValues = dateFormatter === 'string' ? UtilValueFormat(values, reFormItemGroup) : values;
239
+ // console.log('格式化前数据', values)
240
+ // console.log('格式化后数据', resultValues)
203
241
  if (onFilterSearch) {
204
242
  onFilterSearch(_objectSpread({}, resultValues));
205
243
  }
206
244
  };
207
245
  var handleReset = function handleReset() {
208
- var _filterFormRef$curren;
209
246
  // 使用此方法,表单校验无法清空掉
210
247
  // const resetValues = this.filterFormRef.current.getFieldsValue()
211
248
  // Object.keys(resetValues).forEach((item) => {
@@ -214,20 +251,78 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
214
251
  // this.filterFormRef.current.setFieldsValue({ ...resetValues }) // 直接清空表单的赋值
215
252
  filterFormRef.current.resetFields();
216
253
  setReFormItemGroup(formItemGroup); // 重新渲染列表
217
- updateCalculate(filterFormRef === null || filterFormRef === void 0 || (_filterFormRef$curren = filterFormRef.current) === null || _filterFormRef$curren === void 0 ? void 0 : _filterFormRef$curren.getFieldsValue());
254
+ calculateHideCount(filterFormRef, reFormItemGroup);
218
255
  if (onFilterReset) {
219
256
  var _filterFormRef$curren2;
220
257
  onFilterReset(filterFormRef === null || filterFormRef === void 0 || (_filterFormRef$curren2 = filterFormRef.current) === null || _filterFormRef$curren2 === void 0 ? void 0 : _filterFormRef$curren2.getFieldsValue());
221
258
  }
222
259
  };
260
+
261
+ // 判断是否隐藏结构, display:'none'
262
+ var setItemHiddenNode = function setItemHiddenNode(item, index, collapsed, showItemNumber) {
263
+ // console.log('判断是否隐藏结构==>当前执行序号', index, showItemNumber)
264
+ if (item.filedName === 'filterAction') {
265
+ return {
266
+ isHidden: false
267
+ };
268
+ }
269
+ return {
270
+ // 栅格列为1时,显示1个表单项
271
+ isHidden: collapsed ? false : showItemNumber === 0 ? index !== 0 : !(index < showItemNumber)
272
+ };
273
+ };
274
+ // 渲染隐藏指定控件
275
+ var itemIsHide = function itemIsHide(isHide, getFieldsValue, FormInstance) {
276
+ if (typeof isHide === 'function') {
277
+ return isHide(getFieldsValue, FormInstance, 'default');
278
+ }
279
+ return isHide || false;
280
+ };
281
+ var updateGroupByCollapsed = function updateGroupByCollapsed(groups, formValues) {
282
+ // console.log('判断当前是否需要按展开与收缩显示对应的表单项')
283
+ var showItemNumber = columnNumberAndSize.columnNumber - 1;
284
+ return new Promise(function (resolve, reject) {
285
+ if (Array.isArray(groups)) {
286
+ resolve(groups.map(function (item, index) {
287
+ if (collapseable && filterFormLayout === "horizontal") {
288
+ var _setItemHiddenNode = setItemHiddenNode(item, index, collapsed, showItemNumber),
289
+ isHidden = _setItemHiddenNode.isHidden;
290
+ item.isHidden = isHidden;
291
+ item.style = _objectSpread(_objectSpread({}, item.style || {}), {}, {
292
+ display: item.isHidden ? 'none' : 'block'
293
+ });
294
+ if (item.hasOwnProperty('isHide') && itemIsHide(item.isHide, formValues, filterFormRef)) {
295
+ showItemNumber++;
296
+ item.isHidden = true;
297
+ // console.log('当前是结构是隐藏未渲染,跳到下个序号', showItemNumber)
298
+ }
299
+ }
300
+ return _objectSpread({}, item);
301
+ }));
302
+ } else {
303
+ resolve(groups);
304
+ }
305
+ });
306
+ };
307
+ useEffect(function () {
308
+ // 初始化表单数据数据
309
+ if (collapseable && filterFormLayout === "horizontal") {
310
+ var _filterFormRef$curren3;
311
+ var formValues = filterFormRef === null || filterFormRef === void 0 || (_filterFormRef$curren3 = filterFormRef.current) === null || _filterFormRef$curren3 === void 0 ? void 0 : _filterFormRef$curren3.getFieldValue();
312
+ updateGroupByCollapsed(formItemGroup, formValues).then(function (groups) {
313
+ setReFormItemGroup(groups);
314
+ calculateHideCount(filterFormRef, groups);
315
+ });
316
+ } else {
317
+ setReFormItemGroup(formItemGroup);
318
+ }
319
+ }, [formItemGroup, collapseable, filterFormLayout, collapsed, columnNumberAndSize === null || columnNumberAndSize === void 0 ? void 0 : columnNumberAndSize.columnNumber, itemGroupConfig, filterFormRef, filterFormRef === null || filterFormRef === void 0 || (_filterFormRef$curren4 = filterFormRef.current) === null || _filterFormRef$curren4 === void 0 ? void 0 : _filterFormRef$curren4.getFieldValue()]);
223
320
  useEffect(function () {
224
321
  if (initialValues && JSON.stringify(initialValues) !== '{}') {
225
322
  updateFormFields(initialValues, true);
226
323
  }
227
324
  }, [initialValues]);
228
- useEffect(function () {
229
- setReFormItemGroup(formItemGroup);
230
- }, [formItemGroup]);
325
+
231
326
  // / 表单列表组 formItemGroup 类型为数组或者React.Node
232
327
  var renderFormItemGroup = function renderFormItemGroup() {
233
328
  if (Array.isArray(reFormItemGroup)) {
@@ -237,7 +332,9 @@ var StandardFilter = /*#__PURE__*/React.forwardRef(function (props, ref) {
237
332
  size: filterFormLayout === 'horizontal' ? 'xxlg' : 'md' // size决定栅格排列数量(4列排版)
238
333
  ,
239
334
  layout: filterFormLayout,
240
- form: filterFormRef
335
+ form: filterFormRef,
336
+ collapseable: collapseable,
337
+ collapsed: collapsed
241
338
  // displayLayout={{labelCol: { span: 8 }, wrapperCol: { span: 16 },}}
242
339
  ,
243
340
  doUpdateFormFields: function doUpdateFormFields() {
@@ -56,7 +56,53 @@ var RenderItemGroup = function RenderItemGroup(props) {
56
56
  // // @ts-ignore
57
57
  // return general.modalSize[size].columnNumber || 1
58
58
  // }, [size, columnCount])
59
-
59
+ /*
60
+ // 当前需要显示的前几条表单项
61
+ // const [showItemNumber, setShowItemNumber] = useState(0)
62
+ // 计算当前栅格数量,及对应的size
63
+ const columnNumberAndSize = useMemo(() => {
64
+ // 当前栅栅数量
65
+ let itemGroupSize = size || (layout === 'horizontal' ? 'xxlg' : 'md')
66
+ if (columnCount) {
67
+ // 有配置栅格数 1,2,3,4
68
+ switch (columnCount) {
69
+ case 1:
70
+ itemGroupSize = 'sm'
71
+ break;
72
+ case 2:
73
+ itemGroupSize = 'md'
74
+ break;
75
+ case 3:
76
+ itemGroupSize = 'lg'
77
+ break;
78
+ case 4:
79
+ itemGroupSize = 'xxlg'
80
+ break;
81
+ }
82
+ }
83
+ return {
84
+ // @ts-ignore
85
+ columnNumber: general.modalSize[itemGroupSize].columnNumber,
86
+ itemGroupSize, columnCount
87
+ }
88
+ }, [size, columnCount, layout])
89
+ useEffect(() => {
90
+ setShowItemNumber(columnNumberAndSize.columnNumber - 1)
91
+ }, [columnNumberAndSize, size])
92
+
93
+ // 判断是否隐藏结构, display:'none'
94
+ const setItemHiddenNode = (item: any, index: number, collapsed: boolean, showItemNumber: number) => {
95
+ // updateFormFields() // TODO 放这执行会报错,但是不加的话,切换栅格变化会导致收缩状态下隐藏的表单项未更新
96
+ if (item.filedName === 'filterAction') {
97
+ return {
98
+ isHidden: false
99
+ }
100
+ }
101
+ return {
102
+ // 栅格列为1时,显示1个表单项
103
+ isHidden: collapsed ? false : (showItemNumber === 0 ? index !== 0 : !(index < showItemNumber))
104
+ }
105
+ }*/
60
106
  var setColSpan = function setColSpan(display, modalSize, columnCount) {
61
107
  if (_typeof(display) === 'object' || display === 'block') {
62
108
  // 栅格数量为:1
@@ -80,13 +126,13 @@ var RenderItemGroup = function RenderItemGroup(props) {
80
126
  return 12;
81
127
  };
82
128
  var updateFormFields = function updateFormFields() {
129
+ // console.log('用于触发更新表单实例赋值')
83
130
  // if (newVal) form && form.setFieldsValue({ ...newVal })
84
131
  if (doUpdateFormFields) doUpdateFormFields(); // 用于触发更新表单实例赋值
85
132
  };
86
-
87
- // useEffect(() => {
88
- // // updateFormFields()
89
- // }, [form])
133
+ (0, _react.useEffect)(function () {
134
+ updateFormFields();
135
+ }, [form]);
90
136
 
91
137
  // 渲染隐藏指定控件
92
138
  var itemIsHide = function itemIsHide(isHide, getFieldsValue, FormInstance) {
@@ -213,9 +259,18 @@ var RenderItemGroup = function RenderItemGroup(props) {
213
259
  customRender = item.customRender,
214
260
  filedName = item.filedName; // 当前可传参的配置值
215
261
  if (layout === "horizontal" || layout === "vertical") {
262
+ // if (collapseable && layout === "horizontal") {
263
+ // const { isHidden } = setItemHiddenNode(item, index, collapsed, showItemNumber)
264
+ // item.isHidden = isHidden
265
+ // item.style = { ...(item.style || {}), display: item.isHidden ? 'none' : 'block' }
266
+ // // if (index < showItemNumber) {
267
+ // // console.log('===>>>>当前显示【常规表单项】=>>', item.filedName, '序号', index, '可显示数量', showItemNumber, collapsed)
268
+ // // }
269
+ // }
216
270
  return /*#__PURE__*/_react.default.createElement(_antd.Col, {
217
271
  key: index,
218
- span: item.colSpan || setColSpan(item.display, size, columnCount)
272
+ span: item.colSpan || setColSpan(item.display, size, columnCount),
273
+ style: item.style
219
274
  }, /*#__PURE__*/_react.default.createElement(FormItem, _extends({
220
275
  name: type !== 'custom' && filedName,
221
276
  className: (0, _classnames.default)(fieldStatus === 'viewOnly' ? 'form-item-view-only' : '', 'spec-item-group-form-item'),
@@ -252,34 +307,7 @@ var RenderItemGroup = function RenderItemGroup(props) {
252
307
  type = item.type,
253
308
  _item$display = item.display,
254
309
  display = _item$display === void 0 ? 'side' : _item$display; // 当前可传参的配置值
255
-
256
310
  var formLayout = calculateFormLayout(item);
257
- // if (displayLayout) {
258
- // // 如果未配置,则使用以下配置值
259
- // formLayout = { ...displayLayout }
260
- // }
261
- // 优先级 displayLayout.side > displayLayout > general
262
- // 优先级:若有displayLayout.block 则直接使用 general > displayLayout
263
- // 还需要判断 layout为vertical还是horizontal
264
- // @ts-ignore
265
- // formLayout = displayLayout?.side || (displayLayout?.block ? general.modalSize[size].formLayout : ((!displayLayout || JSON.stringify(displayLayout) === '{}') ? general.modalSize[size].formLayout : displayLayout))
266
- // if (item.hasOwnProperty('display')) {
267
- // if (typeof display === 'string') {
268
- // if (display === 'block') {
269
- // // @ts-ignore
270
- // formLayout = displayLayout?.block || general.modalSize[size].formBlockLayout
271
- // } else {
272
- // // 使用默认
273
- // // formLayout = displayLayout?.side || (displayLayout?.block ? general.modalSize[size].formLayout : displayLayout) || general.modalSize[size].formLayout
274
- // }
275
- // } else {
276
- // formLayout = item.display // 对象类型传值如: {labelCol: {span: 3},wrapperCol: {span: 8}} 优先级最高
277
- // }
278
- // }
279
- // // 当布局为 'inline' 时,不配置栅格结构
280
- // if (layout === 'inline') {
281
- // formLayout = {}
282
- // }
283
311
  // title标题或html渲染
284
312
  if (type === 'title' || type === 'html') {
285
313
  return /*#__PURE__*/_react.default.createElement(FormItem, {
@@ -290,7 +318,8 @@ var RenderItemGroup = function RenderItemGroup(props) {
290
318
  var _item$protoConfig;
291
319
  // isHide 返回为true则隐藏当前控件
292
320
  return !itemIsHide(isHide, FormInstance.getFieldValue(), FormInstance) ? /*#__PURE__*/_react.default.createElement(_antd.Col, {
293
- span: item.colSpan || 24
321
+ span: item.colSpan || 24,
322
+ style: item.style
294
323
  }, type === 'title' ? /*#__PURE__*/_react.default.createElement("h3", _extends({}, item.protoConfig, {
295
324
  className: "modalPanelTitle ".concat((item === null || item === void 0 || (_item$protoConfig = item.protoConfig) === null || _item$protoConfig === void 0 ? void 0 : _item$protoConfig.className) || '')
296
325
  }), label) : label) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, null);
@@ -307,6 +336,7 @@ var RenderItemGroup = function RenderItemGroup(props) {
307
336
  return !itemIsHide(isHide, FormInstance.getFieldValue(), FormInstance) ? renderColFormItem(item, index, formLayout) : null;
308
337
  });
309
338
  }
339
+ // 常规表单项结构
310
340
  return renderColFormItem(item, index, formLayout);
311
341
  });
312
342
  };
@@ -22,6 +22,7 @@ export interface StandardFilterProps {
22
22
  colon?: boolean;
23
23
  dateFormatter?: 'dayjs' | 'string';
24
24
  itemGroupConfig?: object;
25
+ collapseable?: boolean;
25
26
  [k: string]: any;
26
27
  }
27
28
  declare const StandardFilter: React.ForwardRefExoticComponent<Omit<StandardFilterProps, "ref"> & React.RefAttributes<unknown>>;