fan-standard-comp 4.0.2 → 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/ButtonGroup/index.js +6 -16
- package/es/ButtonGroup/styles/index.js +12 -12
- package/es/FormComp/RenderItemGroup/index.js +65 -35
- package/es/StandardFilter/index.d.ts +1 -0
- package/es/StandardFilter/index.js +129 -32
- package/es/StandardModal/index.js +16 -15
- package/es/StandardTable/index.js +3 -3
- package/es/StandardTable/style/index.js +11 -13
- package/es/utils/filterPermission.d.ts +1 -1
- package/es/utils/filterPermission.js +4 -1
- package/lib/ButtonGroup/index.js +5 -15
- package/lib/ButtonGroup/styles/index.js +12 -12
- package/lib/FormComp/RenderItemGroup/index.js +64 -34
- package/lib/StandardFilter/index.d.ts +1 -0
- package/lib/StandardFilter/index.js +129 -32
- package/lib/StandardModal/index.js +16 -15
- package/lib/StandardTable/index.js +3 -3
- package/lib/StandardTable/style/index.js +11 -13
- package/lib/utils/filterPermission.d.ts +1 -1
- package/lib/utils/filterPermission.js +4 -1
- package/package.json +3 -4
package/es/ButtonGroup/index.js
CHANGED
|
@@ -20,7 +20,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
20
20
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
21
21
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
22
22
|
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); }
|
|
23
|
-
import React, { useState, useEffect, useContext } from "react";
|
|
23
|
+
import React, { useState, useEffect, useContext, useMemo } from "react";
|
|
24
24
|
import { IconNode } from "../components";
|
|
25
25
|
import SpecIcon from "../SpecIcon";
|
|
26
26
|
import PopConfirmTitle from "./PopConfirmTitle";
|
|
@@ -29,8 +29,6 @@ import { DownOutlined, QuestionCircleOutlined } from "@ant-design/icons";
|
|
|
29
29
|
import { removeNoPermission, btnIsDisabled } from "../utils/filterPermission";
|
|
30
30
|
import useStyle from "./styles";
|
|
31
31
|
import classNames from "classnames";
|
|
32
|
-
import _ from "lodash";
|
|
33
|
-
import { funcCode } from "../data/index";
|
|
34
32
|
import { FanContext } from "../ConfigContext";
|
|
35
33
|
|
|
36
34
|
// 参数API
|
|
@@ -67,19 +65,11 @@ var ButtonGroup = function ButtonGroup(props) {
|
|
|
67
65
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
68
66
|
popRow = _useState4[0],
|
|
69
67
|
setPopRow = _useState4[1];
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// codes在方法内,再合并默认的权限配置
|
|
76
|
-
// 合并本地的codes
|
|
77
|
-
var codesConcat = _.unionBy(codes || [], funcCode.btnFuncCodes, 'code');
|
|
78
|
-
// 重组选项options集合数据,排除:无权限(有配置code,并且不包含permissionCodes内)的数据及,isHide 为true的数据
|
|
79
|
-
setResetList(_toConsumableArray(removeNoPermission(options, permissionCodes, codesConcat, rowParams)) || []);
|
|
80
|
-
return function () {
|
|
81
|
-
setResetList([]);
|
|
82
|
-
};
|
|
68
|
+
// const [resetList, setResetList] = useState<any[]>([])
|
|
69
|
+
var resetList = useMemo(function () {
|
|
70
|
+
// // codes在方法内,再合并默认的权限配置
|
|
71
|
+
// // 重组选项options集合数据,排除:无权限(有配置code,并且不包含permissionCodes内)的数据及,isHide 为true的数据
|
|
72
|
+
return _toConsumableArray(removeNoPermission(options, permissionCodes, codes, rowParams)) || [];
|
|
83
73
|
}, [options, codes, permissionCodes]);
|
|
84
74
|
useEffect(function () {
|
|
85
75
|
setPopVisibleIndex(-1);
|
|
@@ -23,18 +23,18 @@ var SpecButtonGroupTextStyle = function SpecButtonGroupTextStyle(prefixCls, toke
|
|
|
23
23
|
}
|
|
24
24
|
}, "& + ".concat(prefixCls, "-text"), {
|
|
25
25
|
position: 'relative',
|
|
26
|
-
marginLeft: token.paddingSM
|
|
27
|
-
'&:before': {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
26
|
+
marginLeft: token.paddingSM
|
|
27
|
+
// '&:before': {
|
|
28
|
+
// position: 'absolute',
|
|
29
|
+
// content: '""',
|
|
30
|
+
// top: '50%',
|
|
31
|
+
// left:` calc(-${token.paddingSM}px / 2)`,
|
|
32
|
+
// transform: 'translate(0, -50%)',
|
|
33
|
+
// display: 'inline-block',
|
|
34
|
+
// height: '.9em',
|
|
35
|
+
// verticalAlign: 'middle',
|
|
36
|
+
// borderLeft: `1px solid ${token.colorBorder}`
|
|
37
|
+
// }
|
|
38
38
|
}));
|
|
39
39
|
};
|
|
40
40
|
var SpecButtonGroupStyleFunc = function SpecButtonGroupStyleFunc(prefix) {
|
|
@@ -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
|
-
|
|
80
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
if (getFormFields) getFormFields(
|
|
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; //
|
|
236
|
+
delete values.false; // 自定义结构会莫名的出来一个false字段
|
|
199
237
|
}
|
|
200
|
-
var resultValues = dateFormatter === 'string' ? UtilValueFormat(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
|
-
|
|
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
|
-
|
|
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() {
|
|
@@ -74,20 +74,17 @@ var StandardModal = function StandardModal(props) {
|
|
|
74
74
|
var _Form$useForm = Form.useForm(),
|
|
75
75
|
_Form$useForm2 = _slicedToArray(_Form$useForm, 1),
|
|
76
76
|
modalForm = _Form$useForm2[0];
|
|
77
|
-
|
|
77
|
+
// const [modalFormRef, setModalFormRef] = useState<any>(); // <---- set the ref when Form Rendered(使用此方法会出现溢出事件)
|
|
78
|
+
var _useState = useState(0),
|
|
78
79
|
_useState2 = _slicedToArray(_useState, 2),
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
var _useState3 = useState(0),
|
|
82
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
83
|
-
bodyMaxHeight = _useState4[0],
|
|
84
|
-
setBodyMaxHeight = _useState4[1];
|
|
80
|
+
bodyMaxHeight = _useState2[0],
|
|
81
|
+
setBodyMaxHeight = _useState2[1];
|
|
85
82
|
|
|
86
83
|
// setTabFormChild
|
|
87
|
-
var
|
|
88
|
-
|
|
89
|
-
formChild =
|
|
90
|
-
setFormChild =
|
|
84
|
+
var _useState3 = useState(),
|
|
85
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
86
|
+
formChild = _useState4[0],
|
|
87
|
+
setFormChild = _useState4[1]; // <---- set the ref when Form Rendered
|
|
91
88
|
|
|
92
89
|
// 按钮栏是否有显示(默认显示)
|
|
93
90
|
var hasFooterBar = useMemo(function () {
|
|
@@ -163,7 +160,7 @@ var StandardModal = function StandardModal(props) {
|
|
|
163
160
|
};
|
|
164
161
|
// fill Form when modal open 此处可解决获取 Form.useForm warning
|
|
165
162
|
useEffect(function () {
|
|
166
|
-
if (visible &&
|
|
163
|
+
if (visible && modalForm) {
|
|
167
164
|
// <---- check ref before use the form instance
|
|
168
165
|
if (initialValues && _typeof(initialValues) === 'object') {
|
|
169
166
|
initialValues && modalForm.setFieldsValue(_objectSpread({}, initialValues));
|
|
@@ -173,7 +170,7 @@ var StandardModal = function StandardModal(props) {
|
|
|
173
170
|
// if (!visible && modalFormRef) {
|
|
174
171
|
// clearAllFieldsValue() // 清空表单传参数
|
|
175
172
|
// }
|
|
176
|
-
}, [
|
|
173
|
+
}, [modalForm, visible]);
|
|
177
174
|
useEffect(function () {
|
|
178
175
|
if (visible) {
|
|
179
176
|
initBodyMaxHeight();
|
|
@@ -419,8 +416,12 @@ var StandardModal = function StandardModal(props) {
|
|
|
419
416
|
// 内容渲染
|
|
420
417
|
var renderChildrenNodes = function renderChildrenNodes() {
|
|
421
418
|
return /*#__PURE__*/React.createElement(React.Fragment, null, children, (type === 'form' || type === 'gridForm') && /*#__PURE__*/React.createElement(Form, {
|
|
422
|
-
layout: formLayout
|
|
423
|
-
ref
|
|
419
|
+
layout: formLayout
|
|
420
|
+
// ref={(formInstance)=> {
|
|
421
|
+
// // console.log('formInstance', formInstance)
|
|
422
|
+
// // setModalFormRef(formInstance)
|
|
423
|
+
// }}
|
|
424
|
+
,
|
|
424
425
|
form: modalForm,
|
|
425
426
|
onFinish: handleSubmit,
|
|
426
427
|
hideRequiredMark: fieldStatus === 'viewOnly' || hideRequiredMark
|
|
@@ -55,7 +55,7 @@ var StandardTable = function StandardTable(props) {
|
|
|
55
55
|
rest = _objectWithoutProperties(_providerConfig$props, _excluded);
|
|
56
56
|
// 加上类型修复 TS:2322 报警
|
|
57
57
|
var resetColumns = [_objectSpread(_objectSpread({
|
|
58
|
-
width:
|
|
58
|
+
width: 76,
|
|
59
59
|
align: 'center',
|
|
60
60
|
title: '序号',
|
|
61
61
|
key: 'orderNum',
|
|
@@ -83,7 +83,7 @@ var StandardTable = function StandardTable(props) {
|
|
|
83
83
|
otherColumn = columnsConfig.otherColumn;
|
|
84
84
|
if (colItem.type === 'action') {
|
|
85
85
|
var _colItem, _colItem2, _colItem3;
|
|
86
|
-
colItem.width = ((_colItem = colItem) === null || _colItem === void 0 ? void 0 : _colItem.width) || (action === null || action === void 0 ? void 0 : action.width) || (colItem.buttonGroup.length > 1 ?
|
|
86
|
+
colItem.width = ((_colItem = colItem) === null || _colItem === void 0 ? void 0 : _colItem.width) || (action === null || action === void 0 ? void 0 : action.width) || (colItem.buttonGroup.length > 1 ? 130 : 80);
|
|
87
87
|
colItem.align = ((_colItem2 = colItem) === null || _colItem2 === void 0 ? void 0 : _colItem2.align) || (action === null || action === void 0 ? void 0 : action.align) || 'center';
|
|
88
88
|
colItem.title = ((_colItem3 = colItem) === null || _colItem3 === void 0 ? void 0 : _colItem3.title) || (action === null || action === void 0 ? void 0 : action.title) || '操作';
|
|
89
89
|
colItem.key = 'control';
|
|
@@ -167,7 +167,7 @@ var StandardTable = function StandardTable(props) {
|
|
|
167
167
|
}, /*#__PURE__*/React.createElement(Table, _extends({
|
|
168
168
|
rowKey: rowKey || 'id',
|
|
169
169
|
rowSelection: rowSelection ? _objectSpread({
|
|
170
|
-
columnWidth:
|
|
170
|
+
columnWidth: 56
|
|
171
171
|
}, rowSelection) : rowSelection,
|
|
172
172
|
dataSource: list,
|
|
173
173
|
pagination: !pagination ? false : paginationProps,
|
|
@@ -6,7 +6,6 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
6
6
|
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); }
|
|
7
7
|
import { createStyleHook } from "../../theme/utils/genStyleHook";
|
|
8
8
|
import { scrollBar } from "../../theme/index";
|
|
9
|
-
import { TinyColor } from "@ctrl/tinycolor";
|
|
10
9
|
var StandardTableStyleFunc = function StandardTableStyleFunc(prefix) {
|
|
11
10
|
var prepareComponentToken = function prepareComponentToken(token) {
|
|
12
11
|
return {
|
|
@@ -17,11 +16,10 @@ var StandardTableStyleFunc = function StandardTableStyleFunc(prefix) {
|
|
|
17
16
|
var prefixCls = ".".concat(prefix);
|
|
18
17
|
var rowTd = {
|
|
19
18
|
'> td': {
|
|
20
|
-
borderColor: new TinyColor(token.colorPrimary).setAlpha(0.5).toRgbString(),
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
19
|
+
// borderColor: new TinyColor(token.colorPrimary).setAlpha(0.5).toRgbString(), // fade(@primary-color, 50%),
|
|
20
|
+
// '&::before': {
|
|
21
|
+
// borderTop: `1px solid ${new TinyColor(token.colorPrimary).setAlpha(0.5).toRgbString()}`,
|
|
22
|
+
// }
|
|
25
23
|
}
|
|
26
24
|
};
|
|
27
25
|
return [_defineProperty(_defineProperty(_defineProperty({}, prefixCls, {
|
|
@@ -40,22 +38,22 @@ var StandardTableStyleFunc = function StandardTableStyleFunc(prefix) {
|
|
|
40
38
|
// 固定右侧列的样式
|
|
41
39
|
'.ant-table-fixed-left table.ant-table-fixed': {
|
|
42
40
|
'.ant-table-thead > tr > th, .ant-table-tbody > tr > td': {
|
|
43
|
-
paddingRight: token.paddingMD
|
|
41
|
+
paddingRight: token.paddingMD,
|
|
44
42
|
'&:first-child': {
|
|
45
43
|
paddingLeft: token.paddingMD,
|
|
46
|
-
paddingRight: token.paddingMD
|
|
44
|
+
paddingRight: token.paddingMD
|
|
47
45
|
}
|
|
48
46
|
}
|
|
49
47
|
},
|
|
50
48
|
// 固定右侧列的样式
|
|
51
49
|
'.ant-table-fixed-right': {
|
|
52
50
|
'.ant-table-thead > tr > th, .ant-table-tbody > tr > td': {
|
|
53
|
-
paddingRight: token.paddingMD
|
|
51
|
+
paddingRight: token.paddingMD,
|
|
54
52
|
'&:first-child': {
|
|
55
|
-
paddingLeft: token.paddingMD
|
|
53
|
+
paddingLeft: token.paddingMD
|
|
56
54
|
},
|
|
57
55
|
'&:nth-last-child(1)': {
|
|
58
|
-
paddingLeft: token.paddingMD
|
|
56
|
+
paddingLeft: token.paddingMD,
|
|
59
57
|
paddingRight: token.paddingMD
|
|
60
58
|
}
|
|
61
59
|
}
|
|
@@ -83,7 +81,7 @@ var StandardTableStyleFunc = function StandardTableStyleFunc(prefix) {
|
|
|
83
81
|
fontSize: token.fontSizeLG
|
|
84
82
|
},
|
|
85
83
|
'.ant-table-thead > tr > th': {
|
|
86
|
-
padding: "12px ".concat(token.paddingMD
|
|
84
|
+
padding: "12px ".concat(token.paddingMD, "px"),
|
|
87
85
|
'&:first-child': {
|
|
88
86
|
paddingLeft: token.paddingMD
|
|
89
87
|
},
|
|
@@ -92,7 +90,7 @@ var StandardTableStyleFunc = function StandardTableStyleFunc(prefix) {
|
|
|
92
90
|
}
|
|
93
91
|
},
|
|
94
92
|
'.ant-table-tbody > tr > td ': {
|
|
95
|
-
padding: "12px ".concat(token.paddingMD
|
|
93
|
+
padding: "12px ".concat(token.paddingMD, "px"),
|
|
96
94
|
'&:first-child': {
|
|
97
95
|
paddingLeft: token.paddingMD
|
|
98
96
|
},
|