@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.
Files changed (82) hide show
  1. package/README.md +37 -25
  2. package/dist/ActionSheet/index.js +5 -3
  3. package/dist/Breadcrumb/index.js +4 -2
  4. package/dist/Calendar/Date/index.d.ts +8 -0
  5. package/dist/Calendar/Date/index.js +246 -0
  6. package/dist/Calendar/Date/index.less +146 -0
  7. package/dist/Calendar/Month/index.d.ts +7 -0
  8. package/dist/Calendar/Month/index.js +199 -0
  9. package/dist/Calendar/Month/index.less +96 -0
  10. package/dist/Calendar/Week/index.d.ts +7 -0
  11. package/dist/Calendar/Week/index.js +200 -0
  12. package/dist/Calendar/Week/index.less +96 -0
  13. package/dist/Calendar/index.d.ts +10 -0
  14. package/dist/Calendar/index.js +9 -0
  15. package/dist/Filter/index.js +4 -4
  16. package/dist/ProForm/Controls/Cascader/index.d.ts +28 -0
  17. package/dist/ProForm/Controls/Cascader/index.js +159 -0
  18. package/dist/ProForm/Controls/Cascader/index.less +106 -0
  19. package/dist/ProForm/Controls/Date/index.d.ts +6 -1
  20. package/dist/ProForm/Controls/Date/index.js +12 -4
  21. package/dist/ProForm/Controls/Date/index.less +18 -0
  22. package/dist/ProForm/Controls/List/index.d.ts +2 -8
  23. package/dist/ProForm/Controls/List/index.js +17 -9
  24. package/dist/ProForm/Controls/List/index.less +0 -0
  25. package/dist/ProForm/Controls/Select/index.d.ts +50 -1
  26. package/dist/ProForm/Controls/Select/index.js +289 -211
  27. package/dist/ProForm/Controls/Select/index.less +29 -0
  28. package/dist/ProForm/Controls/Stepper/index.d.ts +10 -0
  29. package/dist/ProForm/Controls/Stepper/index.js +72 -0
  30. package/dist/ProForm/Controls/Stepper/index.less +31 -0
  31. package/dist/ProForm/Controls/Switch/index.d.ts +5 -0
  32. package/dist/ProForm/Controls/Switch/index.js +21 -0
  33. package/dist/ProForm/Controls/Switch/index.less +3 -0
  34. package/dist/ProForm/Controls/Text/index.d.ts +9 -2
  35. package/dist/ProForm/Controls/Text/index.js +12 -12
  36. package/dist/ProForm/Controls/Text/index.less +0 -0
  37. package/dist/ProForm/Controls/TextArea/index.d.ts +6 -1
  38. package/dist/ProForm/Controls/TextArea/index.js +10 -11
  39. package/dist/ProForm/Controls/Upload/index.d.ts +32 -9
  40. package/dist/ProForm/Controls/Upload/index.js +14 -6
  41. package/dist/ProForm/Controls/Upload/index.less +0 -0
  42. package/dist/ProForm/Field/index.d.ts +27 -4
  43. package/dist/ProForm/Field/index.js +12 -13
  44. package/dist/ProForm/Field/index.less +0 -4
  45. package/dist/ProForm/Form/index.d.ts +41 -6
  46. package/dist/ProForm/Form/index.js +294 -172
  47. package/dist/ProForm/Form/index.less +0 -0
  48. package/dist/ProForm/Group/index.d.ts +22 -3
  49. package/dist/ProForm/Group/index.js +8 -30
  50. package/dist/ProForm/Group/index.less +0 -0
  51. package/dist/ProForm/index.d.ts +4 -4
  52. package/dist/ProForm/index.js +5 -5
  53. package/dist/ProList/index.d.ts +8 -2
  54. package/dist/ProList/index.js +6 -4
  55. package/dist/Tabbar/index.d.ts +4 -2
  56. package/dist/Tabbar/index.js +14 -5
  57. package/dist/Tabs/index.d.ts +8 -5
  58. package/dist/Tabs/index.js +3 -3
  59. package/dist/Tabs/index.less +4 -1
  60. package/dist/UserView/index.d.ts +15 -0
  61. package/dist/UserView/index.js +62 -0
  62. package/dist/UserView/index.less +41 -0
  63. package/dist/ValidMobilePopup/index.d.ts +9 -0
  64. package/dist/ValidMobilePopup/index.js +147 -0
  65. package/dist/ValidMobilePopup/index.less +58 -0
  66. package/dist/hooks/index.d.ts +22 -0
  67. package/dist/hooks/index.js +51 -0
  68. package/dist/index.d.ts +17 -2
  69. package/dist/index.js +9 -1
  70. package/dist/services/CommonController/index.d.ts +5 -0
  71. package/dist/services/CommonController/index.js +21 -0
  72. package/dist/services/CommonController/typings.d.ts +0 -0
  73. package/dist/services/index.d.ts +2 -1
  74. package/dist/services/index.js +2 -1
  75. package/package.json +6 -3
  76. package/dist/ProForm/typings.d.ts +0 -164
  77. package/dist/RefreshList/index.d.ts +0 -17
  78. package/dist/RefreshList/index.js +0 -43
  79. package/dist/RefreshList/index.less +0 -19
  80. package/dist/assets/fonts/PingFangSC-Light.ttf +0 -0
  81. package/dist/assets/fonts/PingFangSC-Medium.ttf +0 -0
  82. 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, Fragment, useCallback, useEffect, useImperativeHandle, useState } from "react";
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 { Button, ActionSheet, getObjectPathValue, setObjectPathValue } from "../..";
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 ProForm(_ref, ref) {
19
- var className = _ref.className,
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
- disabled = _ref.disabled;
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
- var _useState = useState({}),
35
+ /* Form内部值存储 */
36
+ var _useState = useState(initialValues || {}),
34
37
  _useState2 = _slicedToArray(_useState, 2),
35
38
  form = _useState2[0],
36
39
  setForm = _useState2[1];
37
- useEffect(function () {
38
- if (initialValues && JSON.stringify(initialValues) !== "{}") {
39
- setForm(initialValues || {});
40
- }
41
- }, [initialValues]);
40
+
41
+ /* ProFormInstance暴露方法 */
42
42
  useImperativeHandle(ref, function () {
43
43
  return {
44
- form: form,
45
- setForm: setForm
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
- var getProFormListControlsList = useCallback(function (el, name, i, list) {
49
- if (el !== null && el !== void 0 && el.props) {
50
- var _el$props;
51
- if ((_el$props = el.props) !== null && _el$props !== void 0 && _el$props.name) {
52
- var _el$props2;
53
- list.push( /*#__PURE__*/cloneElement(el, _objectSpread(_objectSpread({}, el.props), {}, {
54
- value: getObjectPathValue((_el$props2 = el.props) === null || _el$props2 === void 0 ? void 0 : _el$props2.name, form[name][i])
55
- })));
56
- } else {
57
- var _el$props3;
58
- if (((_el$props3 = el.props) === null || _el$props3 === void 0 ? void 0 : _el$props3.children) instanceof Array) {
59
- var _el$props4;
60
- (_el$props4 = el.props) === null || _el$props4 === void 0 || _el$props4.children.map(function (item) {
61
- return getProFormListControlsList(item, name, i, list);
62
- });
63
- } else {
64
- var _el$props5;
65
- getProFormListControlsList((_el$props5 = el.props) === null || _el$props5 === void 0 ? void 0 : _el$props5.children, name, i, list);
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
- var getControlsList = useCallback(function (list) {
71
- return list.map(function (item) {
72
- var _item$props, _item$props12, _item$props13, _item$props14;
73
- if ((_item$props = item.props) !== null && _item$props !== void 0 && _item$props.children) {
74
- var _item$props2, _item$props3, _item$props4, _item$props9, _item$props10, _item$props11;
75
- if (((_item$props2 = item.props) === null || _item$props2 === void 0 ? void 0 : _item$props2.children) instanceof Array) return getControlsList((_item$props3 = item.props) === null || _item$props3 === void 0 ? void 0 : _item$props3.children.map(function (e) {
76
- var _e$props;
77
- return /*#__PURE__*/cloneElement(e, _objectSpread(_objectSpread({}, e.props), {}, {
78
- value: getObjectPathValue((_e$props = e.props) === null || _e$props === void 0 ? void 0 : _e$props.name, form)
79
- }));
80
- }));
81
- if (((_item$props4 = item.props) === null || _item$props4 === void 0 ? void 0 : _item$props4.children) instanceof Function) {
82
- var _form$item$props$name, _item$props5, _item$props8;
83
- var _list = [];
84
- (_form$item$props$name = form[(_item$props5 = item.props) === null || _item$props5 === void 0 ? void 0 : _item$props5.name]) === null || _form$item$props$name === void 0 || _form$item$props$name.map(function (e, i) {
85
- var _item$props6, _item$props7;
86
- return getProFormListControlsList((_item$props6 = item.props) === null || _item$props6 === void 0 ? void 0 : _item$props6.children({}, {}, i), (_item$props7 = item.props) === null || _item$props7 === void 0 ? void 0 : _item$props7.name, i, _list);
87
- });
88
- return getControlsList([/*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, item.props), {}, {
89
- children: null,
90
- value: getObjectPathValue((_item$props8 = item.props) === null || _item$props8 === void 0 ? void 0 : _item$props8.name, form)
91
- }))].concat(_list));
92
- }
93
- return getControlsList([/*#__PURE__*/cloneElement((_item$props9 = item.props) === null || _item$props9 === void 0 ? void 0 : _item$props9.children, _objectSpread(_objectSpread({}, (_item$props10 = item.props) === null || _item$props10 === void 0 ? void 0 : _item$props10.children.props), {}, {
94
- value: getObjectPathValue((_item$props11 = item.props) === null || _item$props11 === void 0 ? void 0 : _item$props11.name, form)
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 /*#__PURE__*/cloneElement(item, _objectSpread(_objectSpread({}, item.props), {}, {
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
- var validFormRequired = useCallback(function (formList) {
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 requiredList = formList.filter(function (item) {
106
- var _item$rules;
107
- return (((_item$rules = item.rules) === null || _item$rules === void 0 ? void 0 : _item$rules.some(function (r) {
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
- })) || item.required) && !item.hidden && item.name;
134
+ })) || e.required) && !e.hidden;
110
135
  });
111
- var condition = function condition(item) {
112
- return [undefined, null, ""].includes(item.value) || item.value instanceof Array && !item.value.length;
136
+ var condition = function condition(e) {
137
+ return [undefined, null, ""].includes(e.value) || e.value instanceof Array && !e.value.length;
113
138
  };
114
- if (requiredList.some(condition)) {
115
- var _form = requiredList.find(condition);
116
- if (_form) {
117
- var _form$rules;
118
- var message = ((_form$rules = _form.rules) === null || _form$rules === void 0 || (_form$rules = _form$rules.find(function (r) {
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 || _form$rules === void 0 ? void 0 : _form$rules.message) || _form.label + "必填";
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
- var validFormRegExp = useCallback(function (formList) {
156
+ }, [form]);
157
+
158
+ /* 正则校验 */
159
+ var validPattern = useCallback(function (ls) {
133
160
  /* 正则校验 */
134
161
  return new Promise(function (resolve, reject) {
135
- var patternList = formList.filter(function (item) {
136
- var _item$rules2;
137
- return ((_item$rules2 = item.rules) === null || _item$rules2 === void 0 ? void 0 : _item$rules2.some(function (r) {
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
- })) && item.name && !item.hidden && item.value;
166
+ })) && e.name && !e.hidden && e.value;
140
167
  });
141
- var condition = function condition(item) {
142
- var _item$rules3;
143
- var list = (_item$rules3 = item.rules) === null || _item$rules3 === void 0 ? void 0 : _item$rules3.filter(function (r) {
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(item.value));
177
+ return !(p !== null && p !== void 0 && p.test(e.value));
151
178
  });
152
179
  };
153
- if (patternList.some(condition)) {
154
- var _form2 = patternList.find(condition);
155
- if (_form2) {
156
- var _form2$rules;
157
- var message = (_form2 === null || _form2 === void 0 || (_form2$rules = _form2.rules) === null || _form2$rules === void 0 || (_form2$rules = _form2$rules.find(function (r) {
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 || _form2$rules === void 0 ? void 0 : _form2$rules.message) || _form2.label + "格式有误";
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
- var saveForm = useCallback(function () {
172
- var formList = getControlsList(children instanceof Array ? children : [children]).map(function (item) {
173
- return item.props;
197
+ }, [form]);
198
+
199
+ /* 提交Form */
200
+ var submit = useCallback(function () {
201
+ var ls = findControlsList().map(function (e) {
202
+ return e.props;
174
203
  });
175
- validFormRequired(formList);
176
- validFormRegExp(formList);
177
- Promise.all([validFormRequired(formList), validFormRegExp(formList)]).then(function () {
178
- return onOk === null || onOk === void 0 ? void 0 : onOk(form);
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, children]);
181
- var renderContent = useCallback(function () {
182
- var elementList = children instanceof Array ? children : [children];
183
- return elementList.map(function (e, i) {
184
- var _e$props2;
185
- return /*#__PURE__*/cloneElement(e, _objectSpread(_objectSpread({}, e.props), {}, {
186
- key: 'p-pro-form-group-' + i,
187
- disabled: disabled || ((_e$props2 = e.props) === null || _e$props2 === void 0 ? void 0 : _e$props2.disabled),
188
- form: form,
189
- onChange: function onChange(key, value) {
190
- return setForm(function (form) {
191
- setObjectPathValue(key, value, form);
192
- return _objectSpread({}, form);
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
- }, [form, children, disabled]);
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
- scrollY: true,
203
- enableFlex: true,
363
+ showScrollbar: false,
204
364
  enhanced: true,
205
- showScrollbar: false
365
+ scrollY: true
206
366
  }, /*#__PURE__*/React.createElement(View, {
207
367
  className: "p-pro-form-scroll-view-content"
208
- }, renderContent())), (onOk || onSave || onDelete || footer) && /*#__PURE__*/React.createElement(View, {
209
- className: "p-pro-form-footer",
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: "button danger"
229
- }, /*#__PURE__*/React.createElement(View, {
230
- className: "iconfont icon-icon-psp-tuichu"
231
- }), /*#__PURE__*/React.createElement(Text, {
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, ReactElement } from "react";
1
+ import { FC, ReactNode } from "react";
2
+ import type { Children, ProFormInstance } from "../Form";
2
3
  import "./index.less";
3
- type ProFormGroupProps = ProFormAPI.ProFormGroupProps & {
4
- children: ReactElement | ReactElement[];
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, { cloneElement, useCallback } from "react";
7
+ import React from "react";
8
8
  import { Text, View } from "@tarojs/components";
9
- import { getListAssignField, getObjectPathValue, getUUID } from "../..";
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
- disabled = _ref.disabled,
18
- _onChange = _ref.onChange;
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
- }, renderContent(), tag && ![undefined, null].includes(form === null || form === void 0 ? void 0 : form[tag.dataIndex]) && /*#__PURE__*/React.createElement(View, {
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(form === null || form === void 0 ? void 0 : form[tag.dataIndex], tag.map, {
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(form === null || form === void 0 ? void 0 : form[tag.dataIndex], tag.map, {
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(form === null || form === void 0 ? void 0 : form[tag.dataIndex], tag.map))));
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