@power-xa/m-ui 0.0.7 → 0.0.8
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 +37 -25
- package/dist/ActionSheet/index.js +5 -3
- package/dist/Breadcrumb/index.js +4 -2
- package/dist/Calendar/Date/index.d.ts +8 -0
- package/dist/Calendar/Date/index.js +246 -0
- package/dist/Calendar/Date/index.less +146 -0
- package/dist/Calendar/Month/index.d.ts +7 -0
- package/dist/Calendar/Month/index.js +199 -0
- package/dist/Calendar/Month/index.less +96 -0
- package/dist/Calendar/Week/index.d.ts +7 -0
- package/dist/Calendar/Week/index.js +200 -0
- package/dist/Calendar/Week/index.less +96 -0
- package/dist/Calendar/index.d.ts +10 -0
- package/dist/Calendar/index.js +9 -0
- package/dist/Filter/index.js +4 -4
- package/dist/ProForm/Controls/Cascader/index.d.ts +28 -0
- package/dist/ProForm/Controls/Cascader/index.js +159 -0
- package/dist/ProForm/Controls/Cascader/index.less +106 -0
- package/dist/ProForm/Controls/Date/index.d.ts +6 -1
- package/dist/ProForm/Controls/Date/index.js +12 -4
- package/dist/ProForm/Controls/Date/index.less +18 -0
- package/dist/ProForm/Controls/List/index.d.ts +2 -8
- package/dist/ProForm/Controls/List/index.js +17 -9
- package/dist/ProForm/Controls/List/index.less +0 -0
- package/dist/ProForm/Controls/Select/index.d.ts +50 -1
- package/dist/ProForm/Controls/Select/index.js +289 -211
- package/dist/ProForm/Controls/Select/index.less +29 -0
- package/dist/ProForm/Controls/Stepper/index.d.ts +10 -0
- package/dist/ProForm/Controls/Stepper/index.js +72 -0
- package/dist/ProForm/Controls/Stepper/index.less +31 -0
- package/dist/ProForm/Controls/Switch/index.d.ts +5 -0
- package/dist/ProForm/Controls/Switch/index.js +21 -0
- package/dist/ProForm/Controls/Switch/index.less +3 -0
- package/dist/ProForm/Controls/Text/index.d.ts +9 -2
- package/dist/ProForm/Controls/Text/index.js +12 -12
- package/dist/ProForm/Controls/Text/index.less +0 -0
- package/dist/ProForm/Controls/TextArea/index.d.ts +6 -1
- package/dist/ProForm/Controls/TextArea/index.js +10 -11
- package/dist/ProForm/Controls/Upload/index.d.ts +32 -9
- package/dist/ProForm/Controls/Upload/index.js +14 -6
- package/dist/ProForm/Controls/Upload/index.less +0 -0
- package/dist/ProForm/Field/index.d.ts +27 -4
- package/dist/ProForm/Field/index.js +12 -13
- package/dist/ProForm/Field/index.less +0 -4
- package/dist/ProForm/Form/index.d.ts +41 -6
- package/dist/ProForm/Form/index.js +294 -172
- package/dist/ProForm/Form/index.less +0 -0
- package/dist/ProForm/Group/index.d.ts +22 -3
- package/dist/ProForm/Group/index.js +8 -30
- package/dist/ProForm/Group/index.less +0 -0
- package/dist/ProForm/index.d.ts +4 -4
- package/dist/ProForm/index.js +5 -5
- package/dist/ProList/index.d.ts +8 -2
- package/dist/ProList/index.js +6 -4
- package/dist/Tabbar/index.d.ts +4 -2
- package/dist/Tabbar/index.js +14 -5
- package/dist/Tabs/index.d.ts +8 -5
- package/dist/Tabs/index.js +3 -3
- package/dist/Tabs/index.less +4 -1
- package/dist/UserView/index.d.ts +15 -0
- package/dist/UserView/index.js +62 -0
- package/dist/UserView/index.less +41 -0
- package/dist/ValidMobilePopup/index.d.ts +9 -0
- package/dist/ValidMobilePopup/index.js +147 -0
- package/dist/ValidMobilePopup/index.less +58 -0
- package/dist/hooks/index.d.ts +22 -0
- package/dist/hooks/index.js +51 -0
- package/dist/index.d.ts +17 -2
- package/dist/index.js +9 -1
- package/dist/services/CommonController/index.d.ts +5 -0
- package/dist/services/CommonController/index.js +21 -0
- package/dist/services/CommonController/typings.d.ts +0 -0
- package/dist/services/index.d.ts +2 -1
- package/dist/services/index.js +2 -1
- package/package.json +6 -3
- package/dist/ProForm/typings.d.ts +0 -164
- package/dist/RefreshList/index.d.ts +0 -17
- package/dist/RefreshList/index.js +0 -43
- package/dist/RefreshList/index.less +0 -19
- package/dist/assets/fonts/PingFangSC-Light.ttf +0 -0
- package/dist/assets/fonts/PingFangSC-Medium.ttf +0 -0
- package/dist/assets/fonts/PingFangSC-Regular.ttf +0 -0
|
@@ -10,153 +10,180 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
10
10
|
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; }
|
|
11
11
|
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; } }
|
|
12
12
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
13
|
-
import React, { cloneElement, forwardRef,
|
|
13
|
+
import React, { cloneElement, forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useState } from "react";
|
|
14
14
|
import { getWindowInfo, showToast } from "@tarojs/taro";
|
|
15
15
|
import { ScrollView, Text, View } from "@tarojs/components";
|
|
16
|
-
import {
|
|
16
|
+
import { ActionSheet, Button } from "../..";
|
|
17
|
+
import { useDebounceFn } from "ahooks";
|
|
18
|
+
import { isEqual, set, get, cloneDeep } from "lodash";
|
|
17
19
|
import "./index.less";
|
|
18
|
-
var ProForm = function
|
|
19
|
-
var
|
|
20
|
+
var ProForm = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
21
|
+
var disabled = _ref.disabled,
|
|
22
|
+
initialValues = _ref.initialValues,
|
|
23
|
+
className = _ref.className,
|
|
24
|
+
onChange = _ref.onChange,
|
|
25
|
+
onValueChange = _ref.onValueChange,
|
|
20
26
|
children = _ref.children,
|
|
21
|
-
_ref$initialValues = _ref.initialValues,
|
|
22
|
-
initialValues = _ref$initialValues === void 0 ? {} : _ref$initialValues,
|
|
23
|
-
onOk = _ref.onOk,
|
|
24
|
-
onDelete = _ref.onDelete,
|
|
25
|
-
onSave = _ref.onSave,
|
|
26
27
|
footer = _ref.footer,
|
|
27
|
-
|
|
28
|
+
_ref$scroll = _ref.scroll,
|
|
29
|
+
scroll = _ref$scroll === void 0 ? true : _ref$scroll;
|
|
28
30
|
var _getWindowInfo = getWindowInfo(),
|
|
29
31
|
safeArea = _getWindowInfo.safeArea;
|
|
30
32
|
var _ref2 = safeArea,
|
|
31
33
|
height = _ref2.height,
|
|
32
34
|
bottom = _ref2.bottom;
|
|
33
|
-
|
|
35
|
+
/* Form内部值存储 */
|
|
36
|
+
var _useState = useState(initialValues || {}),
|
|
34
37
|
_useState2 = _slicedToArray(_useState, 2),
|
|
35
38
|
form = _useState2[0],
|
|
36
39
|
setForm = _useState2[1];
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
setForm(initialValues || {});
|
|
40
|
-
}
|
|
41
|
-
}, [initialValues]);
|
|
40
|
+
|
|
41
|
+
/* ProFormInstance暴露方法 */
|
|
42
42
|
useImperativeHandle(ref, function () {
|
|
43
43
|
return {
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
resetFields: resetFields,
|
|
45
|
+
setFields: setFields,
|
|
46
|
+
setFieldValue: setFieldValue,
|
|
47
|
+
getFieldValue: getFieldValue,
|
|
48
|
+
getFieldsValue: getFieldsValue,
|
|
49
|
+
submit: submit,
|
|
50
|
+
validRequiredValue: validRequiredValue
|
|
46
51
|
};
|
|
47
52
|
});
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
53
|
+
useEffect(function () {
|
|
54
|
+
!isEqual(initialValues, form) && (onChange === null || onChange === void 0 ? void 0 : onChange(form));
|
|
55
|
+
}, [form]);
|
|
56
|
+
|
|
57
|
+
/* 通过 set 方法设置指定字段值,更新Form 多个 */
|
|
58
|
+
var setFields = useCallback(function (fields) {
|
|
59
|
+
return setForm(function (form) {
|
|
60
|
+
fields.forEach(function (f) {
|
|
61
|
+
return set(form, f.name, f.value);
|
|
62
|
+
});
|
|
63
|
+
return _objectSpread({}, form);
|
|
64
|
+
});
|
|
65
|
+
}, [form]);
|
|
66
|
+
|
|
67
|
+
/* 通过 set 方法设置指定字段值,更新Form 单个 */
|
|
68
|
+
var setFieldValue = useCallback(function (name, value) {
|
|
69
|
+
set(form, name, value);
|
|
70
|
+
setForm(_objectSpread({}, form));
|
|
71
|
+
}, [form]);
|
|
72
|
+
|
|
73
|
+
/* 通过 get 方法获取指定字段值 单个 */
|
|
74
|
+
var getFieldValue = useCallback(function (name) {
|
|
75
|
+
return get(form, name);
|
|
76
|
+
}, [form]);
|
|
77
|
+
|
|
78
|
+
/* 通过 get 方法获取指定字段值 多个 */
|
|
79
|
+
var getFieldsValue = useCallback(function (name) {
|
|
80
|
+
if (name === true) return form;
|
|
81
|
+
if (name instanceof Array) {
|
|
82
|
+
var result = {};
|
|
83
|
+
name.forEach(function (n) {
|
|
84
|
+
return set(result, n, get(form, n));
|
|
85
|
+
});
|
|
86
|
+
return result;
|
|
68
87
|
}
|
|
88
|
+
return form;
|
|
69
89
|
}, [form]);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
90
|
+
/* 必填信息校验完成 */
|
|
91
|
+
var validRequiredValue = useCallback(function () {
|
|
92
|
+
var el = findControlsList().map(function (e) {
|
|
93
|
+
return e.props;
|
|
94
|
+
});
|
|
95
|
+
return validRequired(el, false);
|
|
96
|
+
}, [form]);
|
|
97
|
+
|
|
98
|
+
/* 获取所有带有rules/required的组件 */
|
|
99
|
+
var findControlsList = useCallback(function (c) {
|
|
100
|
+
var e = c || children;
|
|
101
|
+
var el = (e instanceof Array ? e : [e]).filter(function (e) {
|
|
102
|
+
return !!e && typeof e !== "boolean";
|
|
103
|
+
}).filter(function (c) {
|
|
104
|
+
if (c.props) return !c.props.hidden || c.props.hidden instanceof Function && !c.props.hidden(getFieldsValue(true));
|
|
105
|
+
});
|
|
106
|
+
if (!el.length) return [];
|
|
107
|
+
return el.map(function (e) {
|
|
108
|
+
var _e$props, _e$props2, _e$props3;
|
|
109
|
+
var list = e !== null && e !== void 0 && (_e$props = e.props) !== null && _e$props !== void 0 && _e$props.name ? [_objectSpread(_objectSpread({}, e), {}, {
|
|
110
|
+
props: _objectSpread(_objectSpread({}, e.props), {}, {
|
|
111
|
+
value: getFieldValue(e.props.name)
|
|
112
|
+
})
|
|
113
|
+
})] : [];
|
|
114
|
+
if (e !== null && e !== void 0 && (_e$props2 = e.props) !== null && _e$props2 !== void 0 && _e$props2.children && !(e.props.children instanceof Function)) list = list.concat(findControlsList(e.props.children));
|
|
115
|
+
if (e !== null && e !== void 0 && (_e$props3 = e.props) !== null && _e$props3 !== void 0 && _e$props3.children && e.props.children instanceof Function) {
|
|
116
|
+
var _getFieldValue;
|
|
117
|
+
list = list.concat(findControlsList((_getFieldValue = getFieldValue(e.props.name)) === null || _getFieldValue === void 0 ? void 0 : _getFieldValue.map(function (_, i) {
|
|
118
|
+
return recursionSetFieldName(e.props.children({}, {}), e.props.name, i).flat();
|
|
119
|
+
}).flat()));
|
|
96
120
|
}
|
|
97
|
-
return
|
|
98
|
-
value: [undefined, null].includes((_item$props12 = item.props) === null || _item$props12 === void 0 ? void 0 : _item$props12.value) ? getObjectPathValue((_item$props13 = item.props) === null || _item$props13 === void 0 ? void 0 : _item$props13.name, form) : (_item$props14 = item.props) === null || _item$props14 === void 0 ? void 0 : _item$props14.value
|
|
99
|
-
}));
|
|
121
|
+
return list.flat();
|
|
100
122
|
}).flat();
|
|
101
|
-
}, [form]);
|
|
102
|
-
|
|
123
|
+
}, [children, form]);
|
|
124
|
+
|
|
125
|
+
/* 校验必填 */
|
|
126
|
+
var validRequired = useCallback(function (ls) {
|
|
127
|
+
var show = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
103
128
|
/* 必填校验 */
|
|
104
129
|
return new Promise(function (resolve, reject) {
|
|
105
|
-
var
|
|
106
|
-
var
|
|
107
|
-
return (((
|
|
130
|
+
var rl = ls.filter(function (e) {
|
|
131
|
+
var _e$rules;
|
|
132
|
+
return (((_e$rules = e.rules) === null || _e$rules === void 0 ? void 0 : _e$rules.some(function (r) {
|
|
108
133
|
return r.required;
|
|
109
|
-
})) ||
|
|
134
|
+
})) || e.required) && !e.hidden;
|
|
110
135
|
});
|
|
111
|
-
var condition = function condition(
|
|
112
|
-
return [undefined, null, ""].includes(
|
|
136
|
+
var condition = function condition(e) {
|
|
137
|
+
return [undefined, null, ""].includes(e.value) || e.value instanceof Array && !e.value.length;
|
|
113
138
|
};
|
|
114
|
-
if (
|
|
115
|
-
var
|
|
116
|
-
if (
|
|
117
|
-
var
|
|
118
|
-
var message = ((
|
|
139
|
+
if (rl.some(condition)) {
|
|
140
|
+
var e = rl.find(condition);
|
|
141
|
+
if (e) {
|
|
142
|
+
var _e$rules2;
|
|
143
|
+
var message = ((_e$rules2 = e.rules) === null || _e$rules2 === void 0 || (_e$rules2 = _e$rules2.find(function (r) {
|
|
119
144
|
return r.required;
|
|
120
|
-
})) === null ||
|
|
121
|
-
showToast({
|
|
145
|
+
})) === null || _e$rules2 === void 0 ? void 0 : _e$rules2.message) || e.label + "必填";
|
|
146
|
+
if (show) showToast({
|
|
122
147
|
title: message,
|
|
123
148
|
icon: "none"
|
|
124
149
|
});
|
|
125
150
|
reject(message);
|
|
126
151
|
}
|
|
127
152
|
} else {
|
|
128
|
-
resolve();
|
|
153
|
+
resolve(true);
|
|
129
154
|
}
|
|
130
155
|
});
|
|
131
|
-
}, []);
|
|
132
|
-
|
|
156
|
+
}, [form]);
|
|
157
|
+
|
|
158
|
+
/* 正则校验 */
|
|
159
|
+
var validPattern = useCallback(function (ls) {
|
|
133
160
|
/* 正则校验 */
|
|
134
161
|
return new Promise(function (resolve, reject) {
|
|
135
|
-
var
|
|
136
|
-
var
|
|
137
|
-
return ((
|
|
162
|
+
var pl = ls.filter(function (e) {
|
|
163
|
+
var _e$rules3;
|
|
164
|
+
return ((_e$rules3 = e.rules) === null || _e$rules3 === void 0 ? void 0 : _e$rules3.some(function (r) {
|
|
138
165
|
return r.pattern;
|
|
139
|
-
})) &&
|
|
166
|
+
})) && e.name && !e.hidden && e.value;
|
|
140
167
|
});
|
|
141
|
-
var condition = function condition(
|
|
142
|
-
var
|
|
143
|
-
var list = (
|
|
168
|
+
var condition = function condition(e) {
|
|
169
|
+
var _e$rules4;
|
|
170
|
+
var list = (_e$rules4 = e.rules) === null || _e$rules4 === void 0 ? void 0 : _e$rules4.filter(function (r) {
|
|
144
171
|
return r.pattern;
|
|
145
172
|
}).map(function (r) {
|
|
146
173
|
r.pattern.lastIndex = 0;
|
|
147
174
|
return r.pattern;
|
|
148
175
|
});
|
|
149
176
|
return list === null || list === void 0 ? void 0 : list.some(function (p) {
|
|
150
|
-
return !(p !== null && p !== void 0 && p.test(
|
|
177
|
+
return !(p !== null && p !== void 0 && p.test(e.value));
|
|
151
178
|
});
|
|
152
179
|
};
|
|
153
|
-
if (
|
|
154
|
-
var
|
|
155
|
-
if (
|
|
156
|
-
var
|
|
157
|
-
var message = (
|
|
180
|
+
if (pl.some(condition)) {
|
|
181
|
+
var e = pl.find(condition);
|
|
182
|
+
if (e) {
|
|
183
|
+
var _e$rules5;
|
|
184
|
+
var message = ((_e$rules5 = e.rules) === null || _e$rules5 === void 0 || (_e$rules5 = _e$rules5.find(function (r) {
|
|
158
185
|
return r.pattern;
|
|
159
|
-
})) === null ||
|
|
186
|
+
})) === null || _e$rules5 === void 0 ? void 0 : _e$rules5.message) || form.label + "格式有误";
|
|
160
187
|
showToast({
|
|
161
188
|
title: message,
|
|
162
189
|
icon: "none"
|
|
@@ -167,86 +194,181 @@ var ProForm = function ProForm(_ref, ref) {
|
|
|
167
194
|
resolve();
|
|
168
195
|
}
|
|
169
196
|
});
|
|
170
|
-
}, []);
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
197
|
+
}, [form]);
|
|
198
|
+
|
|
199
|
+
/* 提交Form */
|
|
200
|
+
var submit = useCallback(function () {
|
|
201
|
+
var ls = findControlsList().map(function (e) {
|
|
202
|
+
return e.props;
|
|
174
203
|
});
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
return
|
|
204
|
+
return Promise.all([validRequired(ls), validPattern(ls)]).then(function () {
|
|
205
|
+
var _onOk, _ref3;
|
|
206
|
+
if (footer) (_onOk = (_ref3 = footer).onOk) === null || _onOk === void 0 || _onOk.call(_ref3, form);
|
|
207
|
+
return form;
|
|
179
208
|
});
|
|
180
|
-
}, [form,
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
209
|
+
}, [form, footer]);
|
|
210
|
+
|
|
211
|
+
/* 监听默认值变化,延迟处理Form,通过 isEqual 深度比较默认值和当前Form,如果不同则更新Form */
|
|
212
|
+
var _useDebounceFn = useDebounceFn(function () {
|
|
213
|
+
return !isEqual(initialValues, form) && setForm(_objectSpread({}, initialValues));
|
|
214
|
+
}, {
|
|
215
|
+
wait: 200
|
|
216
|
+
}),
|
|
217
|
+
resetFields = _useDebounceFn.run;
|
|
218
|
+
|
|
219
|
+
/* 渲染表单项 */
|
|
220
|
+
var renderFormField = useCallback(function (e, el, index) {
|
|
221
|
+
var _p$name, _p$name$join;
|
|
222
|
+
var p = e.props;
|
|
223
|
+
var cl = el.filter(function (c) {
|
|
224
|
+
if (c.props) return !c.props.hidden || c.props.hidden instanceof Function && !c.props.hidden(getFieldsValue(true));
|
|
225
|
+
});
|
|
226
|
+
var i = cl.findIndex(function (c) {
|
|
227
|
+
return isEqual(c, el[index]);
|
|
228
|
+
});
|
|
229
|
+
var props = _objectSpread(_objectSpread({}, p), {}, {
|
|
230
|
+
disabled: p.disabled || disabled,
|
|
231
|
+
setFields: setFields,
|
|
232
|
+
setFieldValue: setFieldValue,
|
|
233
|
+
getFieldValue: getFieldValue,
|
|
234
|
+
getFieldsValue: getFieldsValue,
|
|
235
|
+
submit: submit,
|
|
236
|
+
hidden: p.hidden instanceof Function ? p.hidden(getFieldsValue(true)) : p.hidden,
|
|
237
|
+
className: "".concat(p.className || "", " ").concat(i === cl.length - 1 ? 'p-pro-form-item-last' : ''),
|
|
238
|
+
key: ((_p$name = p.name) === null || _p$name === void 0 || (_p$name$join = _p$name.join) === null || _p$name$join === void 0 ? void 0 : _p$name$join.call(_p$name, "-")) || p.name,
|
|
239
|
+
value: getFieldValue(p.name),
|
|
240
|
+
onChange: function onChange(result) {
|
|
241
|
+
var _p$onChange;
|
|
242
|
+
setForm(function (form) {
|
|
243
|
+
set(form, p.name, cloneDeep(result));
|
|
244
|
+
return _objectSpread({}, form);
|
|
245
|
+
});
|
|
246
|
+
(_p$onChange = p.onChange) === null || _p$onChange === void 0 || _p$onChange.call(p, result);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
return /*#__PURE__*/cloneElement(e, props);
|
|
250
|
+
}, [form, disabled]);
|
|
251
|
+
|
|
252
|
+
/* 递归设置FormListField Name */
|
|
253
|
+
var recursionSetFieldName = useCallback(function (c, n, i) {
|
|
254
|
+
var el = (c instanceof Array ? c : [c]).filter(function (e) {
|
|
255
|
+
return !!e && typeof e !== "boolean";
|
|
256
|
+
});
|
|
257
|
+
var name = ["string", "number"].includes(_typeof(n)) ? [n] : n;
|
|
258
|
+
return el.map(function (e, ei) {
|
|
259
|
+
if (!e.props || typeof e === "string") return e;
|
|
260
|
+
var p = e !== null && e !== void 0 && e.props ? _objectSpread(_objectSpread({}, e.props), {}, {
|
|
261
|
+
key: 'p-pro-form-list-children-' + i + "-" + ei
|
|
262
|
+
}) : {};
|
|
263
|
+
if (p.name) {
|
|
264
|
+
var en = ["string", "number"].includes(_typeof(p.name)) ? [p.name] : p.name;
|
|
265
|
+
p.name = name.concat([i]).concat(en);
|
|
266
|
+
}
|
|
267
|
+
if (typeof p.children === "string") return e;
|
|
268
|
+
if (p.children) p.children = recursionSetFieldName(p.children, n, i);
|
|
269
|
+
return _objectSpread(_objectSpread({}, e), {}, {
|
|
270
|
+
props: p
|
|
271
|
+
});
|
|
272
|
+
}).flat();
|
|
273
|
+
}, []);
|
|
274
|
+
|
|
275
|
+
/* 渲染内容 */
|
|
276
|
+
var renderFormContent = useCallback(function (c) {
|
|
277
|
+
var e = c || children;
|
|
278
|
+
var el = (e instanceof Array ? e : [e]).filter(function (e) {
|
|
279
|
+
return !!e && !["boolean", "string"].includes(_typeof(e));
|
|
196
280
|
});
|
|
197
|
-
|
|
281
|
+
if (!el.length) return [];
|
|
282
|
+
var result = el.map(function (e, ei) {
|
|
283
|
+
var _getFieldValue2, _getFieldValue2$toStr, _getFieldValue3, _getFieldValue3$toStr;
|
|
284
|
+
var p = e.props ? _objectSpread(_objectSpread({}, e.props), {}, {
|
|
285
|
+
setFields: setFields,
|
|
286
|
+
setFieldValue: setFieldValue,
|
|
287
|
+
getFieldValue: getFieldValue,
|
|
288
|
+
getFieldsValue: getFieldsValue,
|
|
289
|
+
submit: submit,
|
|
290
|
+
key: 'p-pro-form-children-' + ei
|
|
291
|
+
}) : {};
|
|
292
|
+
if (p.suffix) p.suffix = renderFormContent(p.suffix);
|
|
293
|
+
if (p.name) return useMemo(function () {
|
|
294
|
+
return renderFormField( /*#__PURE__*/cloneElement(e, p), el, ei);
|
|
295
|
+
}, [(_getFieldValue2 = getFieldValue(p.name)) === null || _getFieldValue2 === void 0 || (_getFieldValue2$toStr = _getFieldValue2.toString) === null || _getFieldValue2$toStr === void 0 ? void 0 : _getFieldValue2$toStr.call(_getFieldValue2), disabled].concat(p.dependencies ? [(_getFieldValue3 = getFieldValue(p.dependencies)) === null || _getFieldValue3 === void 0 || (_getFieldValue3$toStr = _getFieldValue3.toString) === null || _getFieldValue3$toStr === void 0 ? void 0 : _getFieldValue3$toStr.call(_getFieldValue3)] : []).concat(p.shouldUpdate ? [p] : []));
|
|
296
|
+
if (typeof p.children === "string") return e;
|
|
297
|
+
if (!(p.children instanceof Function) && p.children) p.children = renderFormContent(p.children);
|
|
298
|
+
if (p.children instanceof Function && p.children) {
|
|
299
|
+
var _getFieldValue4;
|
|
300
|
+
var _children = ((_getFieldValue4 = getFieldValue(p.name)) === null || _getFieldValue4 === void 0 ? void 0 : _getFieldValue4.map(function (v, i) {
|
|
301
|
+
return recursionSetFieldName(p.children({}, {}), p.name, i).flat();
|
|
302
|
+
}).flat()) || [];
|
|
303
|
+
if (_children.length) p.children = renderFormContent(_children);
|
|
304
|
+
}
|
|
305
|
+
;
|
|
306
|
+
return p.children || p.suffix ? /*#__PURE__*/cloneElement(e, p) : e;
|
|
307
|
+
}).flat();
|
|
308
|
+
return result;
|
|
309
|
+
}, [children, form, disabled]);
|
|
310
|
+
|
|
311
|
+
/* 渲染Form底部 */
|
|
312
|
+
var renderFormFooter = useCallback(function () {
|
|
313
|
+
if (!footer) return null;
|
|
314
|
+
var onOk = footer.onOk,
|
|
315
|
+
onDelete = footer.onDelete,
|
|
316
|
+
onSave = footer.onSave,
|
|
317
|
+
children = footer.children,
|
|
318
|
+
_footer$deleteDescrip = footer.deleteDescription,
|
|
319
|
+
deleteDescription = _footer$deleteDescrip === void 0 ? "您将删除当前数据,是否确认?" : _footer$deleteDescrip;
|
|
320
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
321
|
+
className: "p-pro-form-footer",
|
|
322
|
+
style: {
|
|
323
|
+
paddingBottom: "".concat(bottom - height > 24 ? bottom - height : 24, "rpx")
|
|
324
|
+
}
|
|
325
|
+
}, (onDelete || onSave) && /*#__PURE__*/React.createElement(View, {
|
|
326
|
+
className: "button-group"
|
|
327
|
+
}, onDelete && /*#__PURE__*/React.createElement(ActionSheet, {
|
|
328
|
+
options: [{
|
|
329
|
+
key: "Tips",
|
|
330
|
+
subTitle: deleteDescription
|
|
331
|
+
}, {
|
|
332
|
+
key: "Confirm",
|
|
333
|
+
title: "确认删除",
|
|
334
|
+
danger: true,
|
|
335
|
+
onTap: function onTap() {
|
|
336
|
+
return onDelete === null || onDelete === void 0 ? void 0 : onDelete(form);
|
|
337
|
+
}
|
|
338
|
+
}]
|
|
339
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
340
|
+
className: "button danger"
|
|
341
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
342
|
+
className: "iconfont icon-icon-psp-tuichu"
|
|
343
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
344
|
+
className: "text"
|
|
345
|
+
}, "\u5220\u9664"))), onSave && /*#__PURE__*/React.createElement(View, {
|
|
346
|
+
className: "button",
|
|
347
|
+
onTap: onSave
|
|
348
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
349
|
+
className: "iconfont icon-icon-caogaoxiang"
|
|
350
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
351
|
+
className: "text"
|
|
352
|
+
}, "\u5B58\u8349\u7A3F"))), children, onOk && /*#__PURE__*/React.createElement(Button, {
|
|
353
|
+
color: "primary",
|
|
354
|
+
block: !onDelete && !onSave && !children,
|
|
355
|
+
round: true,
|
|
356
|
+
onTap: submit
|
|
357
|
+
}, "\u4FDD\u5B58"));
|
|
358
|
+
}, [footer, form]);
|
|
198
359
|
return /*#__PURE__*/React.createElement(View, {
|
|
199
360
|
className: "p-pro-form-container ".concat(className)
|
|
200
|
-
}, /*#__PURE__*/React.createElement(ScrollView, {
|
|
361
|
+
}, scroll ? /*#__PURE__*/React.createElement(ScrollView, {
|
|
201
362
|
className: "p-pro-form-scroll-view",
|
|
202
|
-
|
|
203
|
-
enableFlex: true,
|
|
363
|
+
showScrollbar: false,
|
|
204
364
|
enhanced: true,
|
|
205
|
-
|
|
365
|
+
scrollY: true
|
|
206
366
|
}, /*#__PURE__*/React.createElement(View, {
|
|
207
367
|
className: "p-pro-form-scroll-view-content"
|
|
208
|
-
},
|
|
209
|
-
className: "p-pro-form-
|
|
210
|
-
style: {
|
|
211
|
-
paddingBottom: "".concat(bottom - height > 24 ? bottom - height : 24, "rpx")
|
|
212
|
-
}
|
|
213
|
-
}, footer ? footer : onSave || onDelete ? /*#__PURE__*/React.createElement(Fragment, null, /*#__PURE__*/React.createElement(View, {
|
|
214
|
-
className: "button-group"
|
|
215
|
-
}, onDelete && /*#__PURE__*/React.createElement(ActionSheet, {
|
|
216
|
-
options: [{
|
|
217
|
-
key: "Tips",
|
|
218
|
-
subTitle: "\u60A8\u5C06\u5220\u9664\u5F53\u524D\u6570\u636E\uFF0C\u662F\u5426\u786E\u8BA4\uFF1F"
|
|
219
|
-
}, {
|
|
220
|
-
key: "Confirm",
|
|
221
|
-
title: "确认删除",
|
|
222
|
-
danger: true,
|
|
223
|
-
onTap: function onTap() {
|
|
224
|
-
return onDelete === null || onDelete === void 0 ? void 0 : onDelete(form);
|
|
225
|
-
}
|
|
226
|
-
}]
|
|
368
|
+
}, renderFormContent())) : /*#__PURE__*/React.createElement(View, {
|
|
369
|
+
className: "p-pro-form-scroll-view"
|
|
227
370
|
}, /*#__PURE__*/React.createElement(View, {
|
|
228
|
-
className: "
|
|
229
|
-
},
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
className: "text"
|
|
233
|
-
}, "\u5220\u9664"))), onSave && /*#__PURE__*/React.createElement(View, {
|
|
234
|
-
className: "button",
|
|
235
|
-
onTap: onSave
|
|
236
|
-
}, /*#__PURE__*/React.createElement(View, {
|
|
237
|
-
className: "iconfont icon-icon-caogaoxiang"
|
|
238
|
-
}), /*#__PURE__*/React.createElement(Text, {
|
|
239
|
-
className: "text"
|
|
240
|
-
}, "\u5B58\u8349\u7A3F"))), /*#__PURE__*/React.createElement(Button, {
|
|
241
|
-
color: "primary",
|
|
242
|
-
className: "save-button",
|
|
243
|
-
round: true,
|
|
244
|
-
onTap: saveForm
|
|
245
|
-
}, "\u4FDD\u5B58")) : /*#__PURE__*/React.createElement(Button, {
|
|
246
|
-
color: "primary",
|
|
247
|
-
block: true,
|
|
248
|
-
round: true,
|
|
249
|
-
onTap: saveForm
|
|
250
|
-
}, "\u4FDD\u5B58")));
|
|
251
|
-
};
|
|
252
|
-
export default /*#__PURE__*/forwardRef(ProForm);
|
|
371
|
+
className: "p-pro-form-scroll-view-content"
|
|
372
|
+
}, renderFormContent())), renderFormFooter());
|
|
373
|
+
});
|
|
374
|
+
export default ProForm;
|
|
File without changes
|
|
@@ -1,7 +1,26 @@
|
|
|
1
|
-
import { FC,
|
|
1
|
+
import { FC, ReactNode } from "react";
|
|
2
|
+
import type { Children, ProFormInstance } from "../Form";
|
|
2
3
|
import "./index.less";
|
|
3
|
-
type ProFormGroupProps =
|
|
4
|
-
|
|
4
|
+
export type ProFormGroupProps = ProFormInstance & {
|
|
5
|
+
className?: string;
|
|
6
|
+
hidden?: boolean;
|
|
7
|
+
tag?: {
|
|
8
|
+
dataIndex?: string | string[];
|
|
9
|
+
map?: {
|
|
10
|
+
value: string | boolean | number | null;
|
|
11
|
+
label: string;
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
}[];
|
|
14
|
+
render?: () => ReactNode;
|
|
15
|
+
className?: string;
|
|
16
|
+
position?: {
|
|
17
|
+
top?: number;
|
|
18
|
+
bottom?: number;
|
|
19
|
+
right?: number;
|
|
20
|
+
left?: number;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
children: Children;
|
|
5
24
|
};
|
|
6
25
|
declare const ProFormGroup: FC<ProFormGroupProps>;
|
|
7
26
|
export default ProFormGroup;
|
|
@@ -4,44 +4,22 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
4
4
|
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; }
|
|
5
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
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
|
-
import React
|
|
7
|
+
import React from "react";
|
|
8
8
|
import { Text, View } from "@tarojs/components";
|
|
9
|
-
import { getListAssignField
|
|
9
|
+
import { getListAssignField } from "../..";
|
|
10
10
|
import "./index.less";
|
|
11
11
|
var ProFormGroup = function ProFormGroup(_ref) {
|
|
12
12
|
var className = _ref.className,
|
|
13
13
|
hidden = _ref.hidden,
|
|
14
|
-
tag = _ref.tag,
|
|
15
|
-
form = _ref.form,
|
|
16
14
|
children = _ref.children,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
var renderContent = useCallback(function () {
|
|
20
|
-
var elementList = children instanceof Array ? children : [children];
|
|
21
|
-
return elementList.map(function (e, i) {
|
|
22
|
-
return /*#__PURE__*/cloneElement(e, _objectSpread(_objectSpread({}, e.props), {}, {
|
|
23
|
-
key: e.props.name || getUUID(),
|
|
24
|
-
className: "".concat(e.props["className"], " ").concat(i === elementList.length - 1 ? 'p-pro-form-item-last' : ""),
|
|
25
|
-
disabled: disabled || e.props.disabled,
|
|
26
|
-
hidden: hidden || e.props.hidden,
|
|
27
|
-
value: e.props.value || form && getObjectPathValue(e.props.name, form),
|
|
28
|
-
onChange: function onChange(value) {
|
|
29
|
-
var _e$props$onChange, _e$props;
|
|
30
|
-
(_e$props$onChange = (_e$props = e.props).onChange) === null || _e$props$onChange === void 0 || _e$props$onChange.call(_e$props, value);
|
|
31
|
-
_onChange === null || _onChange === void 0 || _onChange(e.props.name, value);
|
|
32
|
-
},
|
|
33
|
-
getFormValue: function getFormValue(key) {
|
|
34
|
-
return form === null || form === void 0 ? void 0 : form[key];
|
|
35
|
-
}
|
|
36
|
-
}));
|
|
37
|
-
});
|
|
38
|
-
}, [form, children, disabled, hidden]);
|
|
15
|
+
tag = _ref.tag,
|
|
16
|
+
getFieldValue = _ref.getFieldValue;
|
|
39
17
|
return /*#__PURE__*/React.createElement(View, {
|
|
40
18
|
className: "p-pro-form-group-container ".concat(className, " ").concat(hidden ? 'hidden' : '')
|
|
41
|
-
},
|
|
19
|
+
}, children, tag && (tag.render ? tag.render() : tag.dataIndex && ![undefined, null].includes(getFieldValue === null || getFieldValue === void 0 ? void 0 : getFieldValue(tag.dataIndex)) && /*#__PURE__*/React.createElement(View, {
|
|
42
20
|
className: "p-pro-form-group-tag ".concat(tag.className || ""),
|
|
43
21
|
style: _objectSpread(_objectSpread({}, tag.position), {}, {
|
|
44
|
-
backgroundColor: getListAssignField(
|
|
22
|
+
backgroundColor: getListAssignField(getFieldValue === null || getFieldValue === void 0 ? void 0 : getFieldValue(tag.dataIndex), (tag === null || tag === void 0 ? void 0 : tag.map) || [], {
|
|
45
23
|
value: "value",
|
|
46
24
|
label: "background"
|
|
47
25
|
})
|
|
@@ -49,11 +27,11 @@ var ProFormGroup = function ProFormGroup(_ref) {
|
|
|
49
27
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
50
28
|
className: "p-pro-form-group-tag-text",
|
|
51
29
|
style: {
|
|
52
|
-
color: getListAssignField(
|
|
30
|
+
color: getListAssignField(getFieldValue === null || getFieldValue === void 0 ? void 0 : getFieldValue(tag.dataIndex), (tag === null || tag === void 0 ? void 0 : tag.map) || [], {
|
|
53
31
|
value: "value",
|
|
54
32
|
label: "color"
|
|
55
33
|
})
|
|
56
34
|
}
|
|
57
|
-
}, getListAssignField(
|
|
35
|
+
}, getListAssignField(getFieldValue === null || getFieldValue === void 0 ? void 0 : getFieldValue(tag.dataIndex), (tag === null || tag === void 0 ? void 0 : tag.map) || [])))));
|
|
58
36
|
};
|
|
59
37
|
export default ProFormGroup;
|
|
File without changes
|