fan-standard-comp 3.1.10 → 3.2.0
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 +35 -0
- package/dist/fan-standard-comp.umd.js +15 -15
- package/es/ButtonGroup/ButtonList.js +0 -3
- package/es/ButtonGroup/ButtonMenu.js +0 -3
- package/es/ButtonGroup/PopConfirmTitle.js +5 -15
- package/es/ButtonGroup/index.js +212 -216
- package/es/ButtonGroup/style/index.less +1 -1
- package/es/DragContent/DragBar.js +2 -6
- package/es/DragContent/index.js +44 -75
- package/es/FormComp/ChunkUploader/api.js +6 -10
- package/es/FormComp/ChunkUploader/index.js +105 -171
- package/es/FormComp/ChunkUploader/lib.js +4 -17
- package/es/FormComp/ChunkUploader/upload-queue.class.js +10 -45
- package/es/FormComp/ChunkUploader/worker.js +0 -3
- package/es/FormComp/EditButton/index.js +24 -49
- package/es/FormComp/FieldComponent/ReUpload.js +18 -38
- package/es/FormComp/FieldComponent/RefactorTreeSelect.js +36 -74
- package/es/FormComp/FieldComponent/TitleNode.js +1 -3
- package/es/FormComp/FieldComponent/index.js +38 -74
- package/es/FormComp/FieldComponent/setReadonlyValues.js +34 -63
- package/es/FormComp/RenderItemGroup/index.js +46 -74
- package/es/FormComp/Uploader/index.js +36 -77
- package/es/FormComp/Uploader/util.js +0 -6
- package/es/FormComp/VarTemplate/index.js +58 -96
- package/es/NavLeafScroll/index.js +172 -154
- package/es/NavLeafScroll/style/index.less +33 -1
- package/es/RefactorTree/index.js +36 -53
- package/es/RefactorTree/indexTreeNode.js +35 -68
- package/es/RefactorTree/util.js +9 -43
- package/es/SpecIcon/fonts/iconfont.js +7 -12
- package/es/SpecIcon/index.js +16 -25
- package/es/SplitterLayout/Pane.js +2 -5
- package/es/SplitterLayout/index.js +20 -70
- package/es/StandardContent/SplitterLayout/Pane.js +6 -10
- package/es/StandardContent/SplitterLayout/index.js +12 -63
- package/es/StandardContent/SubfieldContent.js +12 -14
- package/es/StandardContent/WrapperContent.js +8 -10
- package/es/StandardDragModal/ChangeStandardModal.d.ts +44 -0
- package/es/StandardDragModal/ChangeStandardModal.js +493 -0
- package/es/StandardDragModal/DraggableModal.d.ts +7 -0
- package/es/StandardDragModal/DraggableModal.js +31 -0
- package/es/StandardDragModal/DraggableModalContext.d.ts +9 -0
- package/es/StandardDragModal/DraggableModalContext.js +5 -0
- package/es/StandardDragModal/DraggableModalInner.d.ts +16 -0
- package/es/StandardDragModal/DraggableModalInner.js +114 -0
- package/es/StandardDragModal/DraggableModalProvider.d.ts +4 -0
- package/es/StandardDragModal/DraggableModalProvider.js +40 -0
- package/es/StandardDragModal/Modal.d.ts +11 -0
- package/es/StandardDragModal/Modal.js +24 -0
- package/es/StandardDragModal/ResizeHandle.d.ts +2 -0
- package/es/StandardDragModal/ResizeHandle.js +8 -0
- package/es/StandardDragModal/clamp.d.ts +1 -0
- package/es/StandardDragModal/clamp.js +3 -0
- package/es/StandardDragModal/draggableModalReducer.d.ts +66 -0
- package/es/StandardDragModal/draggableModalReducer.js +157 -0
- package/es/StandardDragModal/getWindowSize.d.ts +4 -0
- package/es/StandardDragModal/getWindowSize.js +6 -0
- package/es/StandardDragModal/index.d.ts +3 -11
- package/es/StandardDragModal/index.js +3 -30
- package/es/StandardDragModal/index.less +65 -0
- package/es/StandardDragModal/useDrag.d.ts +5 -0
- package/es/StandardDragModal/useDrag.js +66 -0
- package/es/StandardDragModal/usePrevious.d.ts +1 -0
- package/es/StandardDragModal/usePrevious.js +8 -0
- package/es/StandardDragModal/useResize.d.ts +7 -0
- package/es/StandardDragModal/useResize.js +74 -0
- package/es/StandardFilter/index.js +30 -70
- package/es/StandardForm/ActionList.js +5 -7
- package/es/StandardForm/StepForm.js +50 -71
- package/es/StandardForm/TabForm.js +58 -70
- package/es/StandardForm/index.js +37 -56
- package/es/StandardModal/UpdateFormRef.js +1 -4
- package/es/StandardModal/index.d.ts +0 -1
- package/es/StandardModal/index.js +113 -157
- package/es/StandardPanel/index.js +19 -35
- package/es/StandardTable/index.js +18 -29
- package/es/components/IconNode/index.js +0 -4
- package/es/index.d.ts +1 -0
- package/es/index.js +15 -14
- package/es/utils/ValueFormat.js +0 -9
- package/es/utils/dictSelectUtil.js +153 -0
- package/es/utils/filterPermission.js +16 -34
- package/es/utils/getParentNodes.js +24 -47
- package/es/utils/index.js +2 -1
- package/lib/ButtonGroup/ButtonList.js +1 -13
- package/lib/ButtonGroup/ButtonMenu.js +1 -8
- package/lib/ButtonGroup/PopConfirmTitle.js +3 -16
- package/lib/ButtonGroup/index.js +215 -239
- package/lib/ButtonGroup/style/index.less +1 -1
- package/lib/DragContent/DragBar.js +2 -10
- package/lib/DragContent/index.js +47 -85
- package/lib/FormComp/ChunkUploader/api.js +6 -15
- package/lib/FormComp/ChunkUploader/index.js +107 -185
- package/lib/FormComp/ChunkUploader/lib.js +8 -27
- package/lib/FormComp/ChunkUploader/upload-queue.class.js +10 -46
- package/lib/FormComp/ChunkUploader/worker.js +1 -5
- package/lib/FormComp/EditButton/index.js +26 -60
- package/lib/FormComp/FieldComponent/ReUpload.js +21 -50
- package/lib/FormComp/FieldComponent/RefactorTreeSelect.js +38 -89
- package/lib/FormComp/FieldComponent/TitleNode.js +1 -5
- package/lib/FormComp/FieldComponent/index.js +38 -110
- package/lib/FormComp/FieldComponent/setReadonlyValues.js +37 -79
- package/lib/FormComp/RenderItemGroup/index.js +46 -87
- package/lib/FormComp/Uploader/index.js +38 -95
- package/lib/FormComp/Uploader/util.js +1 -9
- package/lib/FormComp/VarTemplate/index.js +62 -106
- package/lib/FormComp/index.js +0 -2
- package/lib/NavLeafScroll/index.js +174 -165
- package/lib/NavLeafScroll/style/index.less +33 -1
- package/lib/RefactorTree/index.js +36 -67
- package/lib/RefactorTree/indexTreeNode.js +37 -83
- package/lib/RefactorTree/util.js +11 -45
- package/lib/SpecIcon/fonts/iconfont.js +7 -12
- package/lib/SpecIcon/index.js +16 -30
- package/lib/SplitterLayout/Pane.js +0 -7
- package/lib/SplitterLayout/index.js +18 -72
- package/lib/StandardContent/SplitterLayout/Pane.js +6 -14
- package/lib/StandardContent/SplitterLayout/index.js +12 -68
- package/lib/StandardContent/SubfieldContent.js +12 -21
- package/lib/StandardContent/WrapperContent.js +8 -16
- package/lib/StandardDragModal/ChangeStandardModal.d.ts +44 -0
- package/lib/StandardDragModal/ChangeStandardModal.js +502 -0
- package/lib/StandardDragModal/DraggableModal.d.ts +7 -0
- package/lib/StandardDragModal/DraggableModal.js +40 -0
- package/lib/StandardDragModal/DraggableModalContext.d.ts +9 -0
- package/lib/StandardDragModal/DraggableModalContext.js +15 -0
- package/lib/StandardDragModal/DraggableModalInner.d.ts +16 -0
- package/lib/StandardDragModal/DraggableModalInner.js +124 -0
- package/lib/StandardDragModal/DraggableModalProvider.d.ts +4 -0
- package/lib/StandardDragModal/DraggableModalProvider.js +48 -0
- package/lib/StandardDragModal/Modal.d.ts +11 -0
- package/lib/StandardDragModal/Modal.js +32 -0
- package/lib/StandardDragModal/ResizeHandle.d.ts +2 -0
- package/lib/StandardDragModal/ResizeHandle.js +18 -0
- package/lib/StandardDragModal/clamp.d.ts +1 -0
- package/lib/StandardDragModal/clamp.js +10 -0
- package/lib/StandardDragModal/draggableModalReducer.d.ts +66 -0
- package/lib/StandardDragModal/draggableModalReducer.js +167 -0
- package/lib/StandardDragModal/getWindowSize.d.ts +4 -0
- package/lib/StandardDragModal/getWindowSize.js +13 -0
- package/lib/StandardDragModal/index.d.ts +3 -11
- package/lib/StandardDragModal/index.js +33 -38
- package/lib/StandardDragModal/index.less +65 -0
- package/lib/StandardDragModal/useDrag.d.ts +5 -0
- package/lib/StandardDragModal/useDrag.js +73 -0
- package/lib/StandardDragModal/usePrevious.d.ts +1 -0
- package/lib/StandardDragModal/usePrevious.js +15 -0
- package/lib/StandardDragModal/useResize.d.ts +7 -0
- package/lib/StandardDragModal/useResize.js +81 -0
- package/lib/StandardFilter/index.js +28 -78
- package/lib/StandardForm/ActionList.js +5 -12
- package/lib/StandardForm/StepForm.js +52 -90
- package/lib/StandardForm/TabForm.js +61 -88
- package/lib/StandardForm/index.js +40 -75
- package/lib/StandardModal/UpdateFormRef.js +4 -12
- package/lib/StandardModal/index.d.ts +0 -1
- package/lib/StandardModal/index.js +115 -182
- package/lib/StandardPanel/index.js +22 -48
- package/lib/StandardTable/index.js +18 -38
- package/lib/components/IconNode/index.js +0 -7
- package/lib/components/index.js +0 -2
- package/lib/data/index.js +4 -7
- package/lib/index.d.ts +1 -0
- package/lib/index.js +50 -68
- package/lib/utils/ValueFormat.js +0 -10
- package/lib/utils/dictSelectUtil.js +161 -0
- package/lib/utils/filterPermission.js +15 -39
- package/lib/utils/getParentNodes.js +25 -52
- package/lib/utils/index.js +24 -9
- package/package.json +5 -4
|
@@ -8,21 +8,13 @@ import "antd/es/row/style";
|
|
|
8
8
|
import _Row from "antd/es/row";
|
|
9
9
|
import "antd/es/form/style";
|
|
10
10
|
import _Form from "antd/es/form";
|
|
11
|
-
|
|
12
|
-
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
13
|
-
|
|
11
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
14
12
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
15
|
-
|
|
16
13
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
17
|
-
|
|
18
14
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
19
|
-
|
|
20
15
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
21
|
-
|
|
22
|
-
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
23
|
-
|
|
16
|
+
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; } }
|
|
24
17
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
25
|
-
|
|
26
18
|
import { __rest } from "tslib";
|
|
27
19
|
import React, { useEffect, useMemo, useState } from 'react';
|
|
28
20
|
import { general } from '../data';
|
|
@@ -33,67 +25,56 @@ import TabForm from '../StandardForm/TabForm';
|
|
|
33
25
|
import StepForm from '../StandardForm/StepForm';
|
|
34
26
|
import ActionList from '../StandardForm/ActionList.js';
|
|
35
27
|
import './style/index.less';
|
|
36
|
-
import { DraggableModal, DraggableModalProvider } from '
|
|
37
|
-
import '
|
|
38
|
-
|
|
28
|
+
// import { DraggableModal, DraggableModalProvider } from '../StandardDragModal/index'
|
|
29
|
+
import StandardDragModal from '../StandardDragModal/Modal';
|
|
39
30
|
var StandardModal = function StandardModal(props) {
|
|
40
31
|
var children = props.children,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
32
|
+
className = props.className,
|
|
33
|
+
style = props.style,
|
|
34
|
+
_props$size = props.size,
|
|
35
|
+
size = _props$size === void 0 ? 'md' : _props$size,
|
|
36
|
+
type = props.type,
|
|
37
|
+
formItemGroup = props.formItemGroup,
|
|
38
|
+
title = props.title,
|
|
39
|
+
visible = props.visible,
|
|
40
|
+
formPrefix = props.formPrefix,
|
|
41
|
+
formPostfix = props.formPostfix,
|
|
42
|
+
initialValues = props.initialValues,
|
|
43
|
+
hideRequiredMark = props.hideRequiredMark,
|
|
44
|
+
bodyStyle = props.bodyStyle,
|
|
45
|
+
footer = props.footer,
|
|
46
|
+
footerButtonGroup = props.footerButtonGroup,
|
|
47
|
+
hideFooter = props.hideFooter,
|
|
48
|
+
_getFormFields = props.getFormFields,
|
|
49
|
+
_props$fieldStatus = props.fieldStatus,
|
|
50
|
+
fieldStatus = _props$fieldStatus === void 0 ? 'default' : _props$fieldStatus,
|
|
51
|
+
_props$formLayout = props.formLayout,
|
|
52
|
+
formLayout = _props$formLayout === void 0 ? 'horizontal' : _props$formLayout,
|
|
53
|
+
tabsConfig = props.tabsConfig,
|
|
54
|
+
stepsConfig = props.stepsConfig,
|
|
55
|
+
displayLayout = props.displayLayout,
|
|
56
|
+
_props$dragAble = props.dragAble,
|
|
57
|
+
dragAble = _props$dragAble === void 0 ? false : _props$dragAble,
|
|
58
|
+
otherProps = __rest(props, ["children", "className", "style", "size", "type", "formItemGroup", "title", "visible", "formPrefix", "formPostfix", "initialValues", "hideRequiredMark", "bodyStyle", "footer", "footerButtonGroup", "hideFooter", "getFormFields", "fieldStatus", "formLayout", "tabsConfig", "stepsConfig", "displayLayout", "dragAble"]);
|
|
69
59
|
var _Form$useForm = _Form.useForm(),
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
60
|
+
_Form$useForm2 = _slicedToArray(_Form$useForm, 1),
|
|
61
|
+
modalForm = _Form$useForm2[0];
|
|
73
62
|
var _useState = useState(),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
63
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
64
|
+
modalFormRef = _useState2[0],
|
|
65
|
+
setModalFormRef = _useState2[1]; // <---- set the ref when Form Rendered
|
|
79
66
|
var _useState3 = useState(0),
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
67
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
68
|
+
bodyMaxHeight = _useState4[0],
|
|
69
|
+
setBodyMaxHeight = _useState4[1]; // setTabFormChild
|
|
85
70
|
var _useState5 = useState(),
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
71
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
72
|
+
formChild = _useState6[0],
|
|
73
|
+
setFormChild = _useState6[1]; // <---- set the ref when Form Rendered
|
|
89
74
|
// 按钮栏是否有显示(默认显示)
|
|
90
|
-
|
|
91
|
-
|
|
92
75
|
var hasFooterBar = useMemo(function () {
|
|
93
76
|
var _a, _b, _c, _d, _e;
|
|
94
|
-
|
|
95
77
|
var openLog = false;
|
|
96
|
-
|
|
97
78
|
if (type === 'tabForm' || type === 'stepForm') {
|
|
98
79
|
if (type === 'tabForm') {
|
|
99
80
|
var activeTabInfo = formItemGroup.find(function (fItem) {
|
|
@@ -102,71 +83,62 @@ var StandardModal = function StandardModal(props) {
|
|
|
102
83
|
openLog && console.log('rule 0-1', ((_a = activeTabInfo === null || activeTabInfo === void 0 ? void 0 : activeTabInfo.actions) === null || _a === void 0 ? void 0 : _a.length) > 0);
|
|
103
84
|
return ((_b = activeTabInfo === null || activeTabInfo === void 0 ? void 0 : activeTabInfo.actions) === null || _b === void 0 ? void 0 : _b.length) > 0;
|
|
104
85
|
}
|
|
105
|
-
|
|
106
86
|
if (type === 'stepForm') {
|
|
107
87
|
var currentStepInfo = formItemGroup[stepsConfig.current];
|
|
108
88
|
openLog && console.log('rule 0-2', ((_c = currentStepInfo === null || currentStepInfo === void 0 ? void 0 : currentStepInfo.actions) === null || _c === void 0 ? void 0 : _c.length) > 0);
|
|
109
89
|
return ((_d = currentStepInfo === null || currentStepInfo === void 0 ? void 0 : currentStepInfo.actions) === null || _d === void 0 ? void 0 : _d.length) > 0;
|
|
110
90
|
}
|
|
111
|
-
|
|
112
91
|
return true;
|
|
113
92
|
} else {
|
|
114
93
|
if (hideFooter) {
|
|
115
94
|
openLog && console.log('rule 1');
|
|
116
95
|
return false;
|
|
117
96
|
}
|
|
118
|
-
|
|
119
97
|
if (fieldStatus && fieldStatus !== 'default') {
|
|
120
98
|
if (props.hasOwnProperty('footerButtonGroup')) {
|
|
121
99
|
// 如果有配置按钮组件,则还是要显示按钮
|
|
122
100
|
return true;
|
|
123
101
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
102
|
+
openLog && console.log('rule 2');
|
|
103
|
+
// disabled/viewOnly都不显示按钮
|
|
127
104
|
return false;
|
|
128
105
|
}
|
|
129
|
-
|
|
130
106
|
if (props.hasOwnProperty('footerButtonGroup') && footerButtonGroup) {
|
|
131
107
|
if (Array.isArray(footerButtonGroup) && footerButtonGroup.length === 0) {
|
|
132
|
-
openLog && console.log('rule 4');
|
|
133
|
-
|
|
108
|
+
openLog && console.log('rule 4');
|
|
109
|
+
// 返回为空数组不占用按钮栏
|
|
134
110
|
return false;
|
|
135
111
|
} else if (typeof footerButtonGroup === 'function' && (!footerButtonGroup() || ((_e = footerButtonGroup()) === null || _e === void 0 ? void 0 : _e.length) === 0)) {
|
|
136
|
-
openLog && console.log('rule 5');
|
|
137
|
-
|
|
112
|
+
openLog && console.log('rule 5');
|
|
113
|
+
// 配置类型为Function且返回值为null或者返回数组长度为0时,不显示按钮栏
|
|
138
114
|
return false;
|
|
139
115
|
}
|
|
140
|
-
|
|
141
116
|
openLog && console.log('rule 3');
|
|
142
117
|
return true;
|
|
143
118
|
} else if (footerButtonGroup === false) {
|
|
144
|
-
openLog && console.log('rule 7');
|
|
145
|
-
|
|
119
|
+
openLog && console.log('rule 7');
|
|
120
|
+
// 显示
|
|
146
121
|
return true;
|
|
147
122
|
}
|
|
148
|
-
|
|
149
123
|
if (props.hasOwnProperty('footer') && !footer) {
|
|
150
124
|
openLog && console.log('rule 8');
|
|
151
125
|
return false;
|
|
152
126
|
}
|
|
153
|
-
|
|
154
127
|
openLog && console.log('rule 9');
|
|
155
128
|
return true;
|
|
156
129
|
}
|
|
157
|
-
}, [fieldStatus, hideFooter, footer, footerButtonGroup, type, tabsConfig, stepsConfig, formItemGroup]);
|
|
158
|
-
|
|
130
|
+
}, [fieldStatus, hideFooter, footer, footerButtonGroup, type, tabsConfig, stepsConfig, formItemGroup]);
|
|
131
|
+
// 设置限制弹窗高度
|
|
159
132
|
var initBodyMaxHeight = function initBodyMaxHeight() {
|
|
160
133
|
var title = props.title;
|
|
161
134
|
var bodyHeight = document.body.offsetHeight;
|
|
162
135
|
var baseReduce = 80 + 32; // 默认需要减去的高度(上下空白间距150及内部内容间距16*2
|
|
163
136
|
// console.log('弹窗是否有按钮:', hasFooterBar ? '是' : '否')
|
|
164
|
-
|
|
165
|
-
|
|
137
|
+
setBodyMaxHeight("".concat(bodyHeight - (title ? 55 : 0) - (hasFooterBar ? 55 : 0) - baseReduce, "px"));
|
|
138
|
+
// setBodyMaxHeight(`${bodyHeight - (title ? 55 : 0) - ((footer || footerButtonGroup) ? 55 : 0) - baseReduce +
|
|
166
139
|
// ((fieldStatus && fieldStatus !== 'default' && !footerButtonGroup) || hideFooter ? 55 : 0)}px`)
|
|
167
|
-
};
|
|
168
|
-
|
|
169
|
-
|
|
140
|
+
};
|
|
141
|
+
// fill Form when modal open 此处可解决获取 Form.useForm warning
|
|
170
142
|
useEffect(function () {
|
|
171
143
|
if (visible && modalFormRef) {
|
|
172
144
|
// <---- check ref before use the form instance
|
|
@@ -174,26 +146,24 @@ var StandardModal = function StandardModal(props) {
|
|
|
174
146
|
initialValues && modalForm.setFieldsValue(Object.assign({}, initialValues));
|
|
175
147
|
forceUpdateForm();
|
|
176
148
|
}
|
|
177
|
-
}
|
|
149
|
+
}
|
|
150
|
+
// if (!visible && modalFormRef) {
|
|
178
151
|
// clearAllFieldsValue() // 清空表单传参数
|
|
179
152
|
// }
|
|
180
|
-
|
|
181
153
|
}, [modalFormRef, visible]);
|
|
182
154
|
useEffect(function () {
|
|
183
155
|
if (visible) {
|
|
184
|
-
initBodyMaxHeight();
|
|
185
|
-
|
|
156
|
+
initBodyMaxHeight();
|
|
157
|
+
// 让resize事件触发 initBodyMaxHeight
|
|
186
158
|
window.addEventListener('resize', initBodyMaxHeight);
|
|
187
159
|
} else {
|
|
188
160
|
window.removeEventListener('resize', initBodyMaxHeight);
|
|
189
161
|
}
|
|
190
162
|
}, [fieldStatus, title, visible, hideFooter, footer, footerButtonGroup]);
|
|
191
|
-
|
|
192
163
|
var handleSubmit = function handleSubmit() {
|
|
193
164
|
var type = props.type,
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
165
|
+
formItemGroup = props.formItemGroup,
|
|
166
|
+
onSubmit = props.onSubmit;
|
|
197
167
|
if (type === 'form' || type === 'gridForm') {
|
|
198
168
|
modalForm.validateFields().then(function (values) {
|
|
199
169
|
if (Object.prototype.hasOwnProperty.call(values, 'false')) {
|
|
@@ -201,18 +171,16 @@ var StandardModal = function StandardModal(props) {
|
|
|
201
171
|
}
|
|
202
172
|
|
|
203
173
|
var resultValues = UtilValueFormat(values, formItemGroup);
|
|
204
|
-
|
|
205
174
|
if (onSubmit) {
|
|
206
175
|
onSubmit(Object.assign({}, resultValues));
|
|
207
176
|
}
|
|
208
177
|
}).catch(function () {
|
|
209
178
|
// 定位到第一条表单异常的
|
|
210
179
|
var errorCollection = Array.prototype.slice.call(document.getElementsByClassName('ant-form-item-has-error'));
|
|
211
|
-
|
|
212
180
|
if (errorCollection[0] && errorCollection[0].getElementsByTagName('input')) {
|
|
213
181
|
Array.prototype.slice.call(errorCollection[0].getElementsByTagName('input'))[0].focus();
|
|
214
|
-
}
|
|
215
|
-
|
|
182
|
+
}
|
|
183
|
+
// console.error('表单填写有误', errorInfo, '第一条数据',errorInfo.errorFields[0].name[0])
|
|
216
184
|
});
|
|
217
185
|
} else if (type === 'stepForm' || type === 'tabForm') {
|
|
218
186
|
// onSubmit && onSubmit()
|
|
@@ -223,26 +191,23 @@ var StandardModal = function StandardModal(props) {
|
|
|
223
191
|
}
|
|
224
192
|
|
|
225
193
|
var resultValues = UtilValueFormat(values, formItemGroup);
|
|
226
|
-
|
|
227
194
|
if (onSubmit) {
|
|
228
195
|
onSubmit(Object.assign({}, resultValues));
|
|
229
196
|
}
|
|
230
197
|
}).catch(function () {
|
|
231
198
|
// 定位到第一条表单异常的
|
|
232
199
|
var errorCollection = Array.prototype.slice.call(document.getElementsByClassName('ant-form-item-has-error'));
|
|
233
|
-
|
|
234
200
|
if (errorCollection[0] && errorCollection[0].getElementsByTagName('input')) {
|
|
235
201
|
Array.prototype.slice.call(errorCollection[0].getElementsByTagName('input'))[0].focus();
|
|
236
|
-
}
|
|
237
|
-
|
|
202
|
+
}
|
|
203
|
+
// console.error('表单填写有误', errorInfo, '第一条数据',errorInfo.errorFields[0].name[0])
|
|
238
204
|
});
|
|
239
205
|
} else {
|
|
240
206
|
// 没有表单数组 formItemGroup 配置
|
|
241
207
|
onSubmit && onSubmit();
|
|
242
208
|
}
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
|
|
209
|
+
};
|
|
210
|
+
// 重置所有表单
|
|
246
211
|
var clearAllFieldsValue = function clearAllFieldsValue() {
|
|
247
212
|
// let allFields = {}
|
|
248
213
|
// Object.keys(modalForm.getFieldsValue()).map((item) => allFields[item] = undefined)
|
|
@@ -255,24 +220,20 @@ var StandardModal = function StandardModal(props) {
|
|
|
255
220
|
if (type === 'form') clearAllFieldsValue();
|
|
256
221
|
if (afterClose) afterClose();
|
|
257
222
|
};
|
|
258
|
-
|
|
259
223
|
var handleCancel = function handleCancel() {
|
|
260
224
|
var onCancel = props.onCancel;
|
|
261
225
|
if (onCancel) onCancel();
|
|
262
|
-
};
|
|
263
|
-
|
|
264
|
-
|
|
226
|
+
};
|
|
227
|
+
// 强制更新表单值,用于赋初始化实例值
|
|
265
228
|
var forceUpdateForm = function forceUpdateForm() {
|
|
266
229
|
_getFormFields && _getFormFields(modalForm.getFieldsValue() || {}, modalForm);
|
|
267
230
|
};
|
|
268
|
-
|
|
269
231
|
var renderFormItemGroup = function renderFormItemGroup() {
|
|
270
232
|
var fieldStatus = props.fieldStatus,
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
233
|
+
formItemGroup = props.formItemGroup,
|
|
234
|
+
_props$size2 = props.size,
|
|
235
|
+
size = _props$size2 === void 0 ? 'md' : _props$size2,
|
|
236
|
+
type = props.type;
|
|
276
237
|
if (Array.isArray(formItemGroup)) {
|
|
277
238
|
if (type === 'gridForm') {
|
|
278
239
|
// 栅格组
|
|
@@ -280,7 +241,6 @@ var StandardModal = function StandardModal(props) {
|
|
|
280
241
|
gutter: 20
|
|
281
242
|
}, formItemGroup.map(function (item, index) {
|
|
282
243
|
var childrenFields = item.fields || [];
|
|
283
|
-
|
|
284
244
|
if (item.label) {
|
|
285
245
|
childrenFields = [{
|
|
286
246
|
type: item.type,
|
|
@@ -288,7 +248,6 @@ var StandardModal = function StandardModal(props) {
|
|
|
288
248
|
protoConfig: Object.assign({}, item.protoConfig)
|
|
289
249
|
}].concat(childrenFields);
|
|
290
250
|
}
|
|
291
|
-
|
|
292
251
|
return /*#__PURE__*/React.createElement(_Col, {
|
|
293
252
|
key: index,
|
|
294
253
|
span: item.gridSpan || 24
|
|
@@ -305,7 +264,6 @@ var StandardModal = function StandardModal(props) {
|
|
|
305
264
|
}));
|
|
306
265
|
}));
|
|
307
266
|
}
|
|
308
|
-
|
|
309
267
|
return /*#__PURE__*/React.createElement(RenderItemGroup, {
|
|
310
268
|
size: size,
|
|
311
269
|
layout: formLayout,
|
|
@@ -318,13 +276,10 @@ var StandardModal = function StandardModal(props) {
|
|
|
318
276
|
form: modalForm
|
|
319
277
|
});
|
|
320
278
|
}
|
|
321
|
-
|
|
322
279
|
return formItemGroup;
|
|
323
280
|
};
|
|
324
|
-
|
|
325
281
|
var handleStepType = function handleStepType(type, extraFunc) {
|
|
326
282
|
var current = stepsConfig.current;
|
|
327
|
-
|
|
328
283
|
switch (type) {
|
|
329
284
|
case 'submit':
|
|
330
285
|
case 'next':
|
|
@@ -337,53 +292,46 @@ var StandardModal = function StandardModal(props) {
|
|
|
337
292
|
formChild.validateFields(validatorGroup).then(function () {
|
|
338
293
|
// if (stepClick) stepClick(type, formChild, values);
|
|
339
294
|
extraFunc();
|
|
340
|
-
}).catch(function () {
|
|
295
|
+
}).catch(function () {
|
|
296
|
+
// console.log('表单校验不通过 ', errorFields.map(err => err))
|
|
341
297
|
});
|
|
342
298
|
break;
|
|
343
|
-
|
|
344
299
|
case 'prev':
|
|
345
300
|
// if (stepClick) stepClick(type, formChild);
|
|
346
301
|
extraFunc();
|
|
347
302
|
break;
|
|
348
|
-
|
|
349
303
|
case 'cancel':
|
|
350
304
|
// if (stepClick) stepClick(type, formChild);
|
|
351
305
|
extraFunc();
|
|
352
306
|
break;
|
|
353
|
-
|
|
354
307
|
default:
|
|
355
308
|
// extraFunc()
|
|
356
309
|
break;
|
|
357
310
|
}
|
|
358
311
|
};
|
|
359
|
-
|
|
360
312
|
var renderButtonGroup = function renderButtonGroup() {
|
|
361
313
|
var footerButtonGroup = props.footerButtonGroup,
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
314
|
+
confirmLoading = props.confirmLoading,
|
|
315
|
+
cancelText = props.cancelText,
|
|
316
|
+
confirmText = props.confirmText,
|
|
317
|
+
okText = props.okText,
|
|
318
|
+
okButtonProps = props.okButtonProps,
|
|
319
|
+
confirmButtonProps = props.confirmButtonProps,
|
|
320
|
+
cancelButtonProps = props.cancelButtonProps;
|
|
370
321
|
if (footerButtonGroup) {
|
|
371
322
|
if (Array.isArray(footerButtonGroup)) {
|
|
372
323
|
if (footerButtonGroup.length === 0) return null; // <div>按钮组合配置为空</div>
|
|
373
|
-
|
|
374
324
|
return /*#__PURE__*/React.createElement(React.Fragment, null, footerButtonGroup.map(function (item) {
|
|
375
325
|
if (_typeof(item) === 'object') {
|
|
376
326
|
if (item.isHide) return null;
|
|
377
|
-
|
|
378
327
|
var name = item.name,
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
328
|
+
_type = item.type,
|
|
329
|
+
icon = item.icon,
|
|
330
|
+
ghost = item.ghost,
|
|
331
|
+
disabled = item.disabled,
|
|
332
|
+
loading = item.loading,
|
|
333
|
+
fn = item.fn,
|
|
334
|
+
others = __rest(item, ["name", "type", "icon", "ghost", "disabled", "loading", "fn"]);
|
|
387
335
|
return /*#__PURE__*/React.createElement(_Button, Object.assign({
|
|
388
336
|
key: name,
|
|
389
337
|
type: _type || 'primary',
|
|
@@ -406,10 +354,8 @@ var StandardModal = function StandardModal(props) {
|
|
|
406
354
|
if (typeof footerButtonGroup === 'function') {
|
|
407
355
|
return footerButtonGroup(modalForm, props);
|
|
408
356
|
}
|
|
409
|
-
|
|
410
357
|
return footerButtonGroup;
|
|
411
358
|
}
|
|
412
|
-
|
|
413
359
|
if (footer) return footer;
|
|
414
360
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Button, Object.assign({
|
|
415
361
|
key: "submit",
|
|
@@ -421,10 +367,8 @@ var StandardModal = function StandardModal(props) {
|
|
|
421
367
|
onClick: handleCancel
|
|
422
368
|
}, cancelButtonProps), cancelText || '取消'));
|
|
423
369
|
};
|
|
424
|
-
|
|
425
370
|
var renderFooter = function renderFooter() {
|
|
426
371
|
var _a, _b;
|
|
427
|
-
|
|
428
372
|
if (type === 'stepForm') {
|
|
429
373
|
var currentStepInfo = formItemGroup[stepsConfig.current];
|
|
430
374
|
return ((_a = currentStepInfo === null || currentStepInfo === void 0 ? void 0 : currentStepInfo.actions) === null || _a === void 0 ? void 0 : _a.length) > 0 ? /*#__PURE__*/React.createElement(ActionList, {
|
|
@@ -434,7 +378,6 @@ var StandardModal = function StandardModal(props) {
|
|
|
434
378
|
other: props
|
|
435
379
|
}) : null;
|
|
436
380
|
}
|
|
437
|
-
|
|
438
381
|
if (type === 'tabForm') {
|
|
439
382
|
var activeTabInfo = formItemGroup.find(function (fItem) {
|
|
440
383
|
return fItem.key === (tabsConfig === null || tabsConfig === void 0 ? void 0 : tabsConfig.activeKey);
|
|
@@ -445,11 +388,9 @@ var StandardModal = function StandardModal(props) {
|
|
|
445
388
|
other: props
|
|
446
389
|
}) : null;
|
|
447
390
|
}
|
|
448
|
-
|
|
449
391
|
return hasFooterBar ? renderButtonGroup() : null;
|
|
450
|
-
};
|
|
451
|
-
|
|
452
|
-
|
|
392
|
+
};
|
|
393
|
+
// 内容渲染
|
|
453
394
|
var renderChildrenNodes = function renderChildrenNodes() {
|
|
454
395
|
return /*#__PURE__*/React.createElement(React.Fragment, null, children, (type === 'form' || type === 'gridForm') && /*#__PURE__*/React.createElement(_Form, {
|
|
455
396
|
layout: formLayout,
|
|
@@ -491,11 +432,10 @@ var StandardModal = function StandardModal(props) {
|
|
|
491
432
|
initialValues: Object.assign({}, initialValues),
|
|
492
433
|
displayLayout: displayLayout
|
|
493
434
|
}));
|
|
494
|
-
};
|
|
495
|
-
|
|
496
|
-
|
|
435
|
+
};
|
|
436
|
+
// 可拖动及缩放
|
|
497
437
|
if (dragAble) {
|
|
498
|
-
return /*#__PURE__*/React.createElement(
|
|
438
|
+
return /*#__PURE__*/React.createElement(StandardDragModal, Object.assign({
|
|
499
439
|
destroyOnClose: true,
|
|
500
440
|
initialWidth: otherProps.width || general.modalSize[size].width,
|
|
501
441
|
initialHeight: otherProps.height,
|
|
@@ -508,7 +448,24 @@ var StandardModal = function StandardModal(props) {
|
|
|
508
448
|
onOk: handleSubmit,
|
|
509
449
|
title: title,
|
|
510
450
|
footer: renderFooter()
|
|
511
|
-
}), renderChildrenNodes())
|
|
451
|
+
}), renderChildrenNodes());
|
|
452
|
+
/* return <DraggableModalProvider>
|
|
453
|
+
<DraggableModal destroyOnClose
|
|
454
|
+
initialWidth={otherProps.width || general.modalSize[size].width}
|
|
455
|
+
initialHeight={otherProps.height}
|
|
456
|
+
zIndex={1001}
|
|
457
|
+
{...otherProps}
|
|
458
|
+
visible={visible}
|
|
459
|
+
className={`standardModal ${className || ''} ${fieldStatus === 'viewOnly' ? 'is-view' : ''}`}
|
|
460
|
+
onCancel={handleCancel}
|
|
461
|
+
afterClose={onAfterClose}
|
|
462
|
+
onOk={handleSubmit}
|
|
463
|
+
title={title}
|
|
464
|
+
footer={renderFooter()}
|
|
465
|
+
>
|
|
466
|
+
{renderChildrenNodes()}
|
|
467
|
+
</DraggableModal>
|
|
468
|
+
</DraggableModalProvider>*/
|
|
512
469
|
}
|
|
513
470
|
|
|
514
471
|
return /*#__PURE__*/React.createElement(_Modal, Object.assign({
|
|
@@ -532,5 +489,4 @@ var StandardModal = function StandardModal(props) {
|
|
|
532
489
|
onOk: handleSubmit
|
|
533
490
|
}), renderChildrenNodes());
|
|
534
491
|
};
|
|
535
|
-
|
|
536
492
|
export default StandardModal;
|
|
@@ -2,47 +2,36 @@ import "antd/es/popover/style";
|
|
|
2
2
|
import _Popover from "antd/es/popover";
|
|
3
3
|
import "antd/es/radio/style";
|
|
4
4
|
import _Radio from "antd/es/radio";
|
|
5
|
-
|
|
6
5
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
7
|
-
|
|
8
6
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
-
|
|
10
7
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
-
|
|
12
8
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
13
|
-
|
|
14
|
-
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
15
|
-
|
|
9
|
+
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; } }
|
|
16
10
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
17
|
-
|
|
18
11
|
import React, { useState, useMemo, useRef, useEffect } from 'react';
|
|
19
12
|
import classNames from 'classnames';
|
|
20
13
|
import './style/index.less';
|
|
21
|
-
|
|
22
14
|
var StandardPanel = function StandardPanel(props) {
|
|
23
15
|
var className = props.className,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
16
|
+
style = props.style,
|
|
17
|
+
height = props.height,
|
|
18
|
+
children = props.children,
|
|
19
|
+
title = props.title,
|
|
20
|
+
badges = props.badges,
|
|
21
|
+
cateConfig = props.cateConfig,
|
|
22
|
+
buttonConfig = props.buttonConfig,
|
|
23
|
+
type = props.type,
|
|
24
|
+
postfix = props.postfix;
|
|
34
25
|
var _useState = useState(56),
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
26
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
27
|
+
headerHeight = _useState2[0],
|
|
28
|
+
setHeaderHeight = _useState2[1];
|
|
39
29
|
var RenderGroupList = function RenderGroupList(values) {
|
|
40
30
|
var list = values.list,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
31
|
+
activeKey = values.activeKey,
|
|
32
|
+
onChange = values.onChange,
|
|
33
|
+
className = values.className,
|
|
34
|
+
size = values.size;
|
|
46
35
|
var handleChange = function handleChange(e) {
|
|
47
36
|
if (onChange) {
|
|
48
37
|
onChange(e.target.value, list.filter(function (data) {
|
|
@@ -50,7 +39,6 @@ var StandardPanel = function StandardPanel(props) {
|
|
|
50
39
|
})[0]);
|
|
51
40
|
}
|
|
52
41
|
};
|
|
53
|
-
|
|
54
42
|
return /*#__PURE__*/React.createElement("div", {
|
|
55
43
|
className: className
|
|
56
44
|
}, /*#__PURE__*/React.createElement(_Radio.Group, {
|
|
@@ -66,16 +54,14 @@ var StandardPanel = function StandardPanel(props) {
|
|
|
66
54
|
value: item.value
|
|
67
55
|
}, item.label);
|
|
68
56
|
})));
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
|
|
57
|
+
};
|
|
58
|
+
// 是否显示提示框
|
|
72
59
|
var popoverShow = function popoverShow() {
|
|
73
60
|
return title.content ? /*#__PURE__*/React.createElement(_Popover, {
|
|
74
61
|
content: title.content,
|
|
75
62
|
placement: title.placement
|
|
76
63
|
}, " ", title.label, " ") : title;
|
|
77
64
|
};
|
|
78
|
-
|
|
79
65
|
var panelHeaderRef = useRef();
|
|
80
66
|
var bodyLimitStyle = useMemo(function () {
|
|
81
67
|
if (height) {
|
|
@@ -84,7 +70,6 @@ var StandardPanel = function StandardPanel(props) {
|
|
|
84
70
|
height: "".concat(height - headerHeight, "px")
|
|
85
71
|
};
|
|
86
72
|
}
|
|
87
|
-
|
|
88
73
|
return {};
|
|
89
74
|
}, [height, headerHeight]);
|
|
90
75
|
useEffect(function () {
|
|
@@ -130,5 +115,4 @@ var StandardPanel = function StandardPanel(props) {
|
|
|
130
115
|
style: Object.assign({}, bodyLimitStyle)
|
|
131
116
|
}, children));
|
|
132
117
|
};
|
|
133
|
-
|
|
134
118
|
export default StandardPanel;
|