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.
- package/README.md +7 -0
- package/dist/fan-standard-comp.min.js +1 -1
- package/es/FormComp/RenderItemGroup/index.js +65 -35
- package/es/StandardFilter/index.d.ts +1 -0
- package/es/StandardFilter/index.js +129 -32
- package/lib/FormComp/RenderItemGroup/index.js +64 -34
- package/lib/StandardFilter/index.d.ts +1 -0
- package/lib/StandardFilter/index.js +129 -32
- package/package.json +1 -1
|
@@ -13,6 +13,7 @@ var _data = require("../data/");
|
|
|
13
13
|
require("./style/index.less");
|
|
14
14
|
var _ConfigContext = require("../ConfigContext");
|
|
15
15
|
var _FilterStyle = _interopRequireDefault(require("./style/FilterStyle"));
|
|
16
|
+
var _SpecIcon = _interopRequireDefault(require("../SpecIcon"));
|
|
16
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
18
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
18
19
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
@@ -31,6 +32,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
31
32
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // @ts-nocheck
|
|
32
33
|
var FormItem = _antd.Form.Item;
|
|
33
34
|
var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
35
|
+
var _filterFormRef$curren4;
|
|
34
36
|
var InitFanContext = (0, _react.useContext)(_ConfigContext.FanContext);
|
|
35
37
|
var providerConfig = InitFanContext['StandardFilter'] || {}; // 使用上下文(全局配置)设置扩展的配置项
|
|
36
38
|
var _providerConfig$props = _objectSpread(_objectSpread({}, providerConfig), props),
|
|
@@ -64,7 +66,9 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
64
66
|
filterBtnsStyle = _providerConfig$props.filterBtnsStyle,
|
|
65
67
|
_providerConfig$props7 = _providerConfig$props.colon,
|
|
66
68
|
colon = _providerConfig$props7 === void 0 ? true : _providerConfig$props7,
|
|
67
|
-
dateFormatter = _providerConfig$props.dateFormatter
|
|
69
|
+
dateFormatter = _providerConfig$props.dateFormatter,
|
|
70
|
+
_providerConfig$props8 = _providerConfig$props.collapseable,
|
|
71
|
+
collapseable = _providerConfig$props8 === void 0 ? false : _providerConfig$props8;
|
|
68
72
|
var filterFormRef = (0, _react.useRef)();
|
|
69
73
|
// ref 的转发
|
|
70
74
|
(0, _react.useImperativeHandle)(ref, function () {
|
|
@@ -78,7 +82,10 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
78
82
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
79
83
|
isHideCount = _useState4[0],
|
|
80
84
|
setIsHideCount = _useState4[1]; // 表单隐藏项数量值
|
|
81
|
-
|
|
85
|
+
var _useState5 = (0, _react.useState)(false),
|
|
86
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
87
|
+
collapsed = _useState6[0],
|
|
88
|
+
setCollapsed = _useState6[1];
|
|
82
89
|
var componentName = 'spec-standard-filter';
|
|
83
90
|
var _useStyle = (0, _FilterStyle.default)(componentName),
|
|
84
91
|
_useStyle2 = _slicedToArray(_useStyle, 2),
|
|
@@ -87,8 +94,9 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
87
94
|
var filterFormLayout = (0, _react.useMemo)(function () {
|
|
88
95
|
return formLayout || 'inline';
|
|
89
96
|
}, [formLayout]);
|
|
90
|
-
|
|
91
|
-
|
|
97
|
+
|
|
98
|
+
// 计算当前栅格数量,及对应的size
|
|
99
|
+
var columnNumberAndSize = (0, _react.useMemo)(function () {
|
|
92
100
|
// 当前栅栅数量
|
|
93
101
|
var itemGroupSize = (itemGroupConfig === null || itemGroupConfig === void 0 ? void 0 : itemGroupConfig.size) || (filterFormLayout === 'horizontal' ? 'xxlg' : 'md');
|
|
94
102
|
if (itemGroupConfig !== null && itemGroupConfig !== void 0 && itemGroupConfig.columnCount) {
|
|
@@ -108,8 +116,31 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
108
116
|
break;
|
|
109
117
|
}
|
|
110
118
|
}
|
|
119
|
+
return {
|
|
120
|
+
columnNumber: _data.general.modalSize[itemGroupSize].columnNumber,
|
|
121
|
+
itemGroupSize: itemGroupSize
|
|
122
|
+
};
|
|
123
|
+
}, [itemGroupConfig, filterFormLayout]);
|
|
124
|
+
|
|
125
|
+
// 计算表单隐藏项(开启展开与收缩)
|
|
126
|
+
var calculateHideCount = function calculateHideCount(filterFormRef, groups) {
|
|
127
|
+
var _filterFormRef$curren;
|
|
128
|
+
var formValues = filterFormRef === null || filterFormRef === void 0 || (_filterFormRef$curren = filterFormRef.current) === null || _filterFormRef$curren === void 0 ? void 0 : _filterFormRef$curren.getFieldValue();
|
|
129
|
+
setIsHideCount((groups || []).filter(function (item) {
|
|
130
|
+
return (item === null || item === void 0 ? void 0 : item.isHidden) || (item.hasOwnProperty('isHide') ? item.isHide(_objectSpread({}, formValues), filterFormRef) : false);
|
|
131
|
+
}).length);
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// 配置筛选按钮(确认与取消)
|
|
135
|
+
var filterActionButtons = (0, _react.useMemo)(function () {
|
|
136
|
+
var itemGroupSize = columnNumberAndSize.itemGroupSize,
|
|
137
|
+
columnNumber = columnNumberAndSize.columnNumber;
|
|
111
138
|
// 计算扣除栅格列数是否还有多余的项,用来判断筛选按钮的版式(初始化的时候,可能会受默认值内配置的isHide影响导致计算错误;或自定义表单控件组栅格影响)
|
|
112
|
-
|
|
139
|
+
// if (collapseable) {
|
|
140
|
+
// columnNumber = collapsed ? columnNumber : (columnNumber === 1 ? columnNumber = 2 : columnNumber)
|
|
141
|
+
// }
|
|
142
|
+
var calculateTimes = (reFormItemGroup.length - isHideCount) % columnNumber;
|
|
143
|
+
// console.log('当前多余的数量', calculateTimes, '当前隐藏的控件数量isHideCount==>', isHideCount, itemGroupSize, 'columnNumber', columnNumber)
|
|
113
144
|
// xs:1列 sm:1列 【span:24】
|
|
114
145
|
// md:2列 【span:12】
|
|
115
146
|
// lg:3列 xlg:3列 【span:8】
|
|
@@ -119,10 +150,11 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
119
150
|
label: '',
|
|
120
151
|
type: 'custom',
|
|
121
152
|
// display: 'block',
|
|
153
|
+
filedName: 'filterAction',
|
|
122
154
|
display: {
|
|
123
155
|
wrapperCol: {
|
|
124
|
-
// 占用的格子数按对应size配置的formItem(md下额外再新增1)
|
|
125
|
-
span: _data.general.modalSize[itemGroupSize].formLayout.labelCol.span + _data.general.modalSize[itemGroupSize].formLayout.wrapperCol.span + (itemGroupSize === 'md' ? 1 : 0)
|
|
156
|
+
// 占用的格子数按对应size配置的formItem(md下额外再新增1, 忘了为什么额外加了,先去除.20240619)
|
|
157
|
+
span: _data.general.modalSize[itemGroupSize].formLayout.labelCol.span + _data.general.modalSize[itemGroupSize].formLayout.wrapperCol.span // + (itemGroupSize === 'md' ? 1 : 0)
|
|
126
158
|
}
|
|
127
159
|
},
|
|
128
160
|
protoFormItem: {
|
|
@@ -145,10 +177,23 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
145
177
|
},
|
|
146
178
|
onClick: handleReset,
|
|
147
179
|
ghost: true
|
|
148
|
-
}, cancelButtonProps), cancelText || '重置')
|
|
180
|
+
}, cancelButtonProps), cancelText || '重置'), filterFormLayout === 'horizontal' && collapseable && reFormItemGroup.length > columnNumberAndSize.columnNumber - 1 ? /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
181
|
+
type: 'link',
|
|
182
|
+
onClick: function onClick() {
|
|
183
|
+
return setCollapsed(!collapsed);
|
|
184
|
+
},
|
|
185
|
+
style: {
|
|
186
|
+
marginLeft: 8,
|
|
187
|
+
paddingInlineStart: 0,
|
|
188
|
+
paddingInlineEnd: 0
|
|
189
|
+
}
|
|
190
|
+
}, collapsed ? '收起' : '展开', /*#__PURE__*/_react.default.createElement(_SpecIcon.default, {
|
|
191
|
+
noPrefix: true,
|
|
192
|
+
name: collapsed ? 'speci-up' : 'speci-down'
|
|
193
|
+
})) : null);
|
|
149
194
|
}
|
|
150
195
|
})];
|
|
151
|
-
}, [confirmText, cancelText, filterFormLayout, reFormItemGroup, onFilterSearch, onFilterReset,
|
|
196
|
+
}, [confirmText, cancelText, filterFormLayout, reFormItemGroup, onFilterSearch, onFilterReset, columnNumberAndSize, filterFormRef, isHideCount, collapseable, collapsed]);
|
|
152
197
|
|
|
153
198
|
// 更新表单控件值,用于外部获取当前表单实例(force是否强制清空表单)
|
|
154
199
|
var updateFormFields = function updateFormFields(newVal, force) {
|
|
@@ -183,37 +228,29 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
183
228
|
})
|
|
184
229
|
} */
|
|
185
230
|
filterFormRef.current.setFieldsValue(_objectSpread(_objectSpread({}, resetValues), newVal || {})); // 直接清空表单的赋值
|
|
186
|
-
|
|
187
|
-
if (getFormFields) getFormFields(filterFormRef.current.getFieldsValue(), filterFormRef);
|
|
231
|
+
forceUpdateForm();
|
|
188
232
|
};
|
|
189
233
|
// 强制更新表单值,用于赋初始化实例值
|
|
190
234
|
var forceUpdateForm = (0, _react.useCallback)(function () {
|
|
191
235
|
var formValues = filterFormRef.current.getFieldsValue();
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
if (getFormFields) getFormFields(
|
|
197
|
-
}, [dateFormatter, formItemGroup]);
|
|
198
|
-
// 计算表单隐藏项
|
|
199
|
-
var updateCalculate = (0, _react.useCallback)(function (formValues) {
|
|
200
|
-
setIsHideCount(reFormItemGroup.filter(function (item) {
|
|
201
|
-
return item.hasOwnProperty('isHide') ? item.isHide(_objectSpread({}, formValues), filterFormRef) : false;
|
|
202
|
-
}).length);
|
|
236
|
+
if (Object.prototype.hasOwnProperty.call(formValues, false)) {
|
|
237
|
+
delete formValues.false; // 自定义结构会莫名的出来一个false字段
|
|
238
|
+
}
|
|
239
|
+
calculateHideCount(filterFormRef, reFormItemGroup); // 更新当前表单数量,排除被隐藏的值
|
|
240
|
+
if (getFormFields) getFormFields(formValues, filterFormRef);
|
|
203
241
|
}, [reFormItemGroup, filterFormRef]);
|
|
204
242
|
var handleSearch = function handleSearch(values) {
|
|
205
243
|
if (Object.prototype.hasOwnProperty.call(values, false)) {
|
|
206
|
-
delete values.false; //
|
|
244
|
+
delete values.false; // 自定义结构会莫名的出来一个false字段
|
|
207
245
|
}
|
|
208
|
-
var resultValues = dateFormatter === 'string' ? (0, _utils.UtilValueFormat)(values,
|
|
209
|
-
console.log('格式化前数据', values)
|
|
210
|
-
console.log('格式化后数据', resultValues)
|
|
246
|
+
var resultValues = dateFormatter === 'string' ? (0, _utils.UtilValueFormat)(values, reFormItemGroup) : values;
|
|
247
|
+
// console.log('格式化前数据', values)
|
|
248
|
+
// console.log('格式化后数据', resultValues)
|
|
211
249
|
if (onFilterSearch) {
|
|
212
250
|
onFilterSearch(_objectSpread({}, resultValues));
|
|
213
251
|
}
|
|
214
252
|
};
|
|
215
253
|
var handleReset = function handleReset() {
|
|
216
|
-
var _filterFormRef$curren;
|
|
217
254
|
// 使用此方法,表单校验无法清空掉
|
|
218
255
|
// const resetValues = this.filterFormRef.current.getFieldsValue()
|
|
219
256
|
// Object.keys(resetValues).forEach((item) => {
|
|
@@ -222,20 +259,78 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
222
259
|
// this.filterFormRef.current.setFieldsValue({ ...resetValues }) // 直接清空表单的赋值
|
|
223
260
|
filterFormRef.current.resetFields();
|
|
224
261
|
setReFormItemGroup(formItemGroup); // 重新渲染列表
|
|
225
|
-
|
|
262
|
+
calculateHideCount(filterFormRef, reFormItemGroup);
|
|
226
263
|
if (onFilterReset) {
|
|
227
264
|
var _filterFormRef$curren2;
|
|
228
265
|
onFilterReset(filterFormRef === null || filterFormRef === void 0 || (_filterFormRef$curren2 = filterFormRef.current) === null || _filterFormRef$curren2 === void 0 ? void 0 : _filterFormRef$curren2.getFieldsValue());
|
|
229
266
|
}
|
|
230
267
|
};
|
|
268
|
+
|
|
269
|
+
// 判断是否隐藏结构, display:'none'
|
|
270
|
+
var setItemHiddenNode = function setItemHiddenNode(item, index, collapsed, showItemNumber) {
|
|
271
|
+
// console.log('判断是否隐藏结构==>当前执行序号', index, showItemNumber)
|
|
272
|
+
if (item.filedName === 'filterAction') {
|
|
273
|
+
return {
|
|
274
|
+
isHidden: false
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
return {
|
|
278
|
+
// 栅格列为1时,显示1个表单项
|
|
279
|
+
isHidden: collapsed ? false : showItemNumber === 0 ? index !== 0 : !(index < showItemNumber)
|
|
280
|
+
};
|
|
281
|
+
};
|
|
282
|
+
// 渲染隐藏指定控件
|
|
283
|
+
var itemIsHide = function itemIsHide(isHide, getFieldsValue, FormInstance) {
|
|
284
|
+
if (typeof isHide === 'function') {
|
|
285
|
+
return isHide(getFieldsValue, FormInstance, 'default');
|
|
286
|
+
}
|
|
287
|
+
return isHide || false;
|
|
288
|
+
};
|
|
289
|
+
var updateGroupByCollapsed = function updateGroupByCollapsed(groups, formValues) {
|
|
290
|
+
// console.log('判断当前是否需要按展开与收缩显示对应的表单项')
|
|
291
|
+
var showItemNumber = columnNumberAndSize.columnNumber - 1;
|
|
292
|
+
return new Promise(function (resolve, reject) {
|
|
293
|
+
if (Array.isArray(groups)) {
|
|
294
|
+
resolve(groups.map(function (item, index) {
|
|
295
|
+
if (collapseable && filterFormLayout === "horizontal") {
|
|
296
|
+
var _setItemHiddenNode = setItemHiddenNode(item, index, collapsed, showItemNumber),
|
|
297
|
+
isHidden = _setItemHiddenNode.isHidden;
|
|
298
|
+
item.isHidden = isHidden;
|
|
299
|
+
item.style = _objectSpread(_objectSpread({}, item.style || {}), {}, {
|
|
300
|
+
display: item.isHidden ? 'none' : 'block'
|
|
301
|
+
});
|
|
302
|
+
if (item.hasOwnProperty('isHide') && itemIsHide(item.isHide, formValues, filterFormRef)) {
|
|
303
|
+
showItemNumber++;
|
|
304
|
+
item.isHidden = true;
|
|
305
|
+
// console.log('当前是结构是隐藏未渲染,跳到下个序号', showItemNumber)
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return _objectSpread({}, item);
|
|
309
|
+
}));
|
|
310
|
+
} else {
|
|
311
|
+
resolve(groups);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
};
|
|
315
|
+
(0, _react.useEffect)(function () {
|
|
316
|
+
// 初始化表单数据数据
|
|
317
|
+
if (collapseable && filterFormLayout === "horizontal") {
|
|
318
|
+
var _filterFormRef$curren3;
|
|
319
|
+
var formValues = filterFormRef === null || filterFormRef === void 0 || (_filterFormRef$curren3 = filterFormRef.current) === null || _filterFormRef$curren3 === void 0 ? void 0 : _filterFormRef$curren3.getFieldValue();
|
|
320
|
+
updateGroupByCollapsed(formItemGroup, formValues).then(function (groups) {
|
|
321
|
+
setReFormItemGroup(groups);
|
|
322
|
+
calculateHideCount(filterFormRef, groups);
|
|
323
|
+
});
|
|
324
|
+
} else {
|
|
325
|
+
setReFormItemGroup(formItemGroup);
|
|
326
|
+
}
|
|
327
|
+
}, [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()]);
|
|
231
328
|
(0, _react.useEffect)(function () {
|
|
232
329
|
if (initialValues && JSON.stringify(initialValues) !== '{}') {
|
|
233
330
|
updateFormFields(initialValues, true);
|
|
234
331
|
}
|
|
235
332
|
}, [initialValues]);
|
|
236
|
-
|
|
237
|
-
setReFormItemGroup(formItemGroup);
|
|
238
|
-
}, [formItemGroup]);
|
|
333
|
+
|
|
239
334
|
// / 表单列表组 formItemGroup 类型为数组或者React.Node
|
|
240
335
|
var renderFormItemGroup = function renderFormItemGroup() {
|
|
241
336
|
if (Array.isArray(reFormItemGroup)) {
|
|
@@ -245,7 +340,9 @@ var StandardFilter = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
245
340
|
size: filterFormLayout === 'horizontal' ? 'xxlg' : 'md' // size决定栅格排列数量(4列排版)
|
|
246
341
|
,
|
|
247
342
|
layout: filterFormLayout,
|
|
248
|
-
form: filterFormRef
|
|
343
|
+
form: filterFormRef,
|
|
344
|
+
collapseable: collapseable,
|
|
345
|
+
collapsed: collapsed
|
|
249
346
|
// displayLayout={{labelCol: { span: 8 }, wrapperCol: { span: 16 },}}
|
|
250
347
|
,
|
|
251
348
|
doUpdateFormFields: function doUpdateFormFields() {
|