@power-xa/m-ui 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,4 +18,9 @@
18
18
  - ConfigProvider
19
19
  - CreatorEdit
20
20
  - Empty
21
- - ActionSheet
21
+ - ActionSheet
22
+
23
+ # 0.0.4
24
+ 1.Tabs修改(子组件内容更新后未重新渲染)
25
+ 2.PageContainer增加footer属性,可自定义底部内容
26
+ 3.Filter Children属性修改
@@ -7,7 +7,7 @@ type FilterProps = {
7
7
  onFilter?: (form: {
8
8
  [key: string]: any;
9
9
  }) => void;
10
- children?: ReactElement[];
10
+ children?: ReactElement | ReactElement[];
11
11
  };
12
12
  declare const Filter: FC<FilterProps>;
13
13
  export default Filter;
@@ -12,6 +12,7 @@ type PageContainerProps = {
12
12
  children?: ReactNode;
13
13
  className?: string;
14
14
  disabledScroll?: boolean;
15
+ footer?: ReactNode;
15
16
  };
16
17
  declare const PageContainer: FC<PageContainerProps>;
17
18
  export default PageContainer;
@@ -1,5 +1,5 @@
1
1
  import React, { Fragment } from "react";
2
- import { getMenuButtonBoundingClientRect, navigateBack } from "@tarojs/taro";
2
+ import { getMenuButtonBoundingClientRect, navigateBack, getWindowInfo } from "@tarojs/taro";
3
3
  import { ScrollView, Text, View } from "@tarojs/components";
4
4
  import "./index.less";
5
5
  var PageContainer = function PageContainer(_ref) {
@@ -8,11 +8,17 @@ var PageContainer = function PageContainer(_ref) {
8
8
  header = _ref.header,
9
9
  children = _ref.children,
10
10
  className = _ref.className,
11
- disabledScroll = _ref.disabledScroll;
11
+ disabledScroll = _ref.disabledScroll,
12
+ footer = _ref.footer;
12
13
  var _getMenuButtonBoundin = getMenuButtonBoundingClientRect(),
13
14
  top = _getMenuButtonBoundin.top,
14
15
  height = _getMenuButtonBoundin.height,
15
16
  left = _getMenuButtonBoundin.left;
17
+ var _getWindowInfo = getWindowInfo(),
18
+ safeArea = _getWindowInfo.safeArea;
19
+ var _ref2 = safeArea,
20
+ safeAreaHeight = _ref2.height,
21
+ bottom = _ref2.bottom;
16
22
  return /*#__PURE__*/React.createElement(View, {
17
23
  className: "p-page-container ".concat(className),
18
24
  style: !fixedHeader ? {
@@ -45,6 +51,11 @@ var PageContainer = function PageContainer(_ref) {
45
51
  enhanced: true,
46
52
  showScrollbar: false,
47
53
  className: "p-page-content"
48
- }, children));
54
+ }, children), footer && /*#__PURE__*/React.createElement(View, {
55
+ className: "p-page-footer",
56
+ style: {
57
+ paddingBottom: "".concat(bottom - safeAreaHeight > 24 ? bottom - safeAreaHeight : 24, "rpx")
58
+ }
59
+ }, footer));
49
60
  };
50
61
  export default PageContainer;
@@ -38,4 +38,12 @@
38
38
  height: 0;
39
39
  flex: 1;
40
40
  }
41
+
42
+ .p-page-footer {
43
+ padding: 24px 32px;
44
+ background: #fff;
45
+ box-sizing: border-box;
46
+ display: flex;
47
+ align-items: center;
48
+ }
41
49
  }
@@ -11,7 +11,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
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
13
  import React, { cloneElement, forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useState } from "react";
14
- import { getWindowInfo, showToast, showLoading } from "@tarojs/taro";
14
+ import { getWindowInfo, showToast } from "@tarojs/taro";
15
15
  import { ScrollView, Text, View } from "@tarojs/components";
16
16
  import { Button, ActionSheet, getObjectPathValue, setObjectPathValue } from "../..";
17
17
  import "./index.less";
@@ -90,61 +90,84 @@ var ProForm = function ProForm(_ref, ref) {
90
90
  }));
91
91
  }).flat();
92
92
  }, [form]);
93
- var saveForm = useCallback(function () {
94
- var controlList = getControlsList(children instanceof Array ? children : [children]);
93
+ var validFormRequired = useCallback(function (formList) {
95
94
  /* 必填校验 */
96
- var requiredList = controlList.filter(function (item) {
97
- var _item$props$rules;
98
- return item.props.name && !item.props.hidden && (item.props.required || ((_item$props$rules = item.props.rules) === null || _item$props$rules === void 0 ? void 0 : _item$props$rules.some(function (r) {
99
- return r.required;
100
- })));
101
- });
102
- var condition = function condition(e) {
103
- return [undefined, null, ""].includes(e.props.value) || e.props.value instanceof Array && !e.props.value.length;
104
- };
105
- if (requiredList.some(condition)) {
106
- var _e$props$rules;
107
- var e = requiredList.find(condition);
108
- return showToast({
109
- title: (e === null || e === void 0 || (_e$props$rules = e.props.rules) === null || _e$props$rules === void 0 || (_e$props$rules = _e$props$rules.find(function (r) {
95
+ return new Promise(function (resolve, reject) {
96
+ var requiredList = formList.filter(function (item) {
97
+ var _item$rules;
98
+ return (((_item$rules = item.rules) === null || _item$rules === void 0 ? void 0 : _item$rules.some(function (r) {
110
99
  return r.required;
111
- })) === null || _e$props$rules === void 0 ? void 0 : _e$props$rules.message) || (e === null || e === void 0 ? void 0 : e.props.label) + "必填",
112
- icon: "none"
100
+ })) || item.required) && !item.hidden && item.name;
113
101
  });
114
- }
115
- /* 正则校验 */
116
- var patternControlList = controlList.filter(function (item) {
117
- var _item$props$rules2;
118
- return item.props.name && item.props.value && !item.props.hidden && ((_item$props$rules2 = item.props.rules) === null || _item$props$rules2 === void 0 ? void 0 : _item$props$rules2.some(function (r) {
119
- return r.pattern;
120
- }));
102
+ var condition = function condition(item) {
103
+ return [undefined, null, ""].includes(item.value) || item.value instanceof Array && !item.value.length;
104
+ };
105
+ if (requiredList.some(condition)) {
106
+ var _form = requiredList.find(condition);
107
+ if (_form) {
108
+ var _form$rules;
109
+ var message = ((_form$rules = _form.rules) === null || _form$rules === void 0 || (_form$rules = _form$rules.find(function (r) {
110
+ return r.required;
111
+ })) === null || _form$rules === void 0 ? void 0 : _form$rules.message) || _form.label + "必填";
112
+ showToast({
113
+ title: message,
114
+ icon: "none"
115
+ });
116
+ reject(message);
117
+ }
118
+ } else {
119
+ resolve();
120
+ }
121
121
  });
122
- var patternCondition = function patternCondition(e) {
123
- var patternList = e.props.rules.filter(function (r) {
124
- return r.pattern;
125
- }).map(function (p) {
126
- return p.pattern;
127
- });
128
- if (patternList.some(function (p) {
129
- return !p.test(e.props.value);
130
- })) return true;
131
- return false;
132
- };
133
- if (patternControlList.some(patternCondition)) {
134
- var _e$props$rules2;
135
- var _e = patternControlList.find(patternCondition);
136
- if (_e) return showToast({
137
- title: (_e === null || _e === void 0 || (_e$props$rules2 = _e.props.rules) === null || _e$props$rules2 === void 0 || (_e$props$rules2 = _e$props$rules2.find(function (r) {
122
+ }, []);
123
+ var validFormRegExp = useCallback(function (formList) {
124
+ /* 正则校验 */
125
+ return new Promise(function (resolve, reject) {
126
+ var patternList = formList.filter(function (item) {
127
+ var _item$rules2;
128
+ return ((_item$rules2 = item.rules) === null || _item$rules2 === void 0 ? void 0 : _item$rules2.some(function (r) {
138
129
  return r.pattern;
139
- })) === null || _e$props$rules2 === void 0 ? void 0 : _e$props$rules2.message) || (_e === null || _e === void 0 ? void 0 : _e.props.label) + "格式有误",
140
- icon: "none"
130
+ })) && item.name && !item.hidden && item.value;
141
131
  });
142
- }
143
- showLoading({
144
- title: "保存中",
145
- mask: true
132
+ var condition = function condition(item) {
133
+ var _item$rules3;
134
+ var list = (_item$rules3 = item.rules) === null || _item$rules3 === void 0 ? void 0 : _item$rules3.filter(function (r) {
135
+ return r.pattern;
136
+ }).map(function (r) {
137
+ r.pattern.lastIndex = 0;
138
+ return r.pattern;
139
+ });
140
+ return list === null || list === void 0 ? void 0 : list.some(function (p) {
141
+ return !(p !== null && p !== void 0 && p.test(item.value));
142
+ });
143
+ };
144
+ if (patternList.some(condition)) {
145
+ var _form2 = patternList.find(condition);
146
+ if (_form2) {
147
+ var _form2$rules;
148
+ var message = (_form2 === null || _form2 === void 0 || (_form2$rules = _form2.rules) === null || _form2$rules === void 0 || (_form2$rules = _form2$rules.find(function (r) {
149
+ return r.pattern;
150
+ })) === null || _form2$rules === void 0 ? void 0 : _form2$rules.message) || _form2.label + "格式有误";
151
+ showToast({
152
+ title: message,
153
+ icon: "none"
154
+ });
155
+ reject(message);
156
+ }
157
+ } else {
158
+ resolve();
159
+ }
160
+ });
161
+ }, []);
162
+ var saveForm = useCallback(function () {
163
+ var formList = getControlsList(children instanceof Array ? children : [children]).map(function (item) {
164
+ return item.props;
165
+ });
166
+ validFormRequired(formList);
167
+ validFormRegExp(formList);
168
+ Promise.all([validFormRequired(formList), validFormRegExp(formList)]).then(function () {
169
+ return onOk === null || onOk === void 0 ? void 0 : onOk(form);
146
170
  });
147
- onOk === null || onOk === void 0 || onOk(form);
148
171
  }, [form]);
149
172
  var renderContent = useCallback(function () {
150
173
  var elementList = children instanceof Array ? children : [children];
@@ -89,8 +89,6 @@ declare namespace ProFormAPI {
89
89
  }
90
90
 
91
91
  type ProFormItemProps = {
92
- /* flex占比 */
93
- flex?: number;
94
92
  /* 对齐方式 */
95
93
  layout?: "horizontal" | "vertical";
96
94
  /* 表单Key */
@@ -136,7 +134,7 @@ declare namespace ProFormAPI {
136
134
  /* 请求选项 */
137
135
  request?: (params?: { [key: string]: any }) => Promise<{ [key: string]: any }[]>;
138
136
  /* 选项字段名 */
139
- fieldNames?: { label: string, value: string };
137
+ fieldNames?: { label: string, value: string, children?: string };
140
138
  /* 选项是否平铺 */
141
139
  optionType?: boolean;
142
140
  /* 项目ID */
@@ -1,10 +1,10 @@
1
- import { FC, ReactNode, ReactElement } from "react";
1
+ import { FC, ReactNode } from "react";
2
2
  import "./index.less";
3
3
  type TabItemProps = {
4
4
  label: string;
5
5
  icon?: string;
6
6
  key: string;
7
- children?: ReactElement;
7
+ children?: ReactNode;
8
8
  init?: boolean;
9
9
  };
10
10
  type TabsProps = {
@@ -14,7 +14,7 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
14
14
  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; }
15
15
  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
16
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
- import React, { useCallback, useEffect, useState, cloneElement } from "react";
17
+ import React, { useCallback, useEffect, useState, cloneElement, isValidElement } from "react";
18
18
  import { ScrollView, Swiper, SwiperItem, Text, View } from "@tarojs/components";
19
19
  import { createSelectorQuery } from "@tarojs/taro";
20
20
  import "./index.less";
@@ -54,7 +54,7 @@ var Tabs = function Tabs(_ref) {
54
54
  height = _useState10[0],
55
55
  setHeight = _useState10[1];
56
56
  useEffect(function () {
57
- if (items.length) {
57
+ if (items.length !== tabsList.length) {
58
58
  setSelectKey(activeKey || items[0].key);
59
59
  setTabsList(items.map(function (item, index) {
60
60
  return _objectSpread(_objectSpread({}, item), {}, {
@@ -66,7 +66,7 @@ var Tabs = function Tabs(_ref) {
66
66
  getSwiperHeight();
67
67
  }
68
68
  }
69
- }, []);
69
+ }, [tabsList, items]);
70
70
  useEffect(function () {
71
71
  var _tabsList$find;
72
72
  if (selectKey !== activeKey) onChange === null || onChange === void 0 || onChange(selectKey);
@@ -113,6 +113,23 @@ var Tabs = function Tabs(_ref) {
113
113
  }).exec();
114
114
  }
115
115
  }, [tabsList, selectKey, parentLeft]);
116
+ var renderSwiperTabContent = useCallback(function (tab) {
117
+ var _items$find;
118
+ var children = (_items$find = items.find(function (item) {
119
+ return item.key == tab.key;
120
+ })) === null || _items$find === void 0 ? void 0 : _items$find.children;
121
+ if (tab.init && /*#__PURE__*/isValidElement(children)) return /*#__PURE__*/cloneElement(children, _objectSpread(_objectSpread({}, children.props), {}, {
122
+ onRefresh: function onRefresh(keys) {
123
+ keys.forEach(function (item) {
124
+ var tab = tabsList.find(function (tab) {
125
+ return tab.key === item;
126
+ });
127
+ if (tab !== null && tab !== void 0 && tab.init) tab.init = false;
128
+ });
129
+ setTabsList(_toConsumableArray(tabsList));
130
+ }
131
+ }));
132
+ }, [items]);
116
133
  return /*#__PURE__*/React.createElement(View, {
117
134
  className: "p-tabs-container ".concat(className, " ").concat(isCardList ? 'p-tabs-card-list-container' : '', " ").concat(centered ? 'p-tabs-centered-container' : '')
118
135
  }, /*#__PURE__*/React.createElement(View, {
@@ -168,17 +185,7 @@ var Tabs = function Tabs(_ref) {
168
185
  }, /*#__PURE__*/React.createElement(View, {
169
186
  id: "swiper-tab-content",
170
187
  className: "swiper-tab-content-view"
171
- }, item.init && item.children && /*#__PURE__*/cloneElement(item.children, _objectSpread(_objectSpread({}, item.children.props), {}, {
172
- onRefresh: function onRefresh(keys) {
173
- keys.forEach(function (item) {
174
- var tab = tabsList.find(function (tab) {
175
- return tab.key === item;
176
- });
177
- if (tab !== null && tab !== void 0 && tab.init) tab.init = false;
178
- });
179
- setTabsList(_toConsumableArray(tabsList));
180
- }
181
- }))));
188
+ }, renderSwiperTabContent(item)));
182
189
  })) : (_tabsList$find2 = tabsList.find(function (item) {
183
190
  return item.key === selectKey;
184
191
  })) === null || _tabsList$find2 === void 0 ? void 0 : _tabsList$find2.children));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@power-xa/m-ui",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "power-mobile系列公共组件库",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",