@cloudbase/weda-ui 0.2.17 → 1.0.21

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 (138) hide show
  1. package/README.md +3 -0
  2. package/package.json +6 -3
  3. package/src/configs/components/calendar.json +4 -1
  4. package/src/configs/components/chart/bar.json +19 -6
  5. package/src/configs/components/chart/line.json +19 -6
  6. package/src/configs/components/chart/pie.json +14 -4
  7. package/src/configs/components/chart/statisticsCard.json +61 -13
  8. package/src/configs/components/container.json +7 -2
  9. package/src/configs/components/dataView.json +21 -6
  10. package/src/configs/components/form/checkbox.json +97 -5
  11. package/src/configs/components/form/radio.json +96 -4
  12. package/src/configs/components/form/select.json +245 -11
  13. package/src/configs/components/graphicCard.json +84 -73
  14. package/src/configs/components/image.json +7 -2
  15. package/src/configs/components/link.json +19 -3
  16. package/src/configs/components/listView.json +63 -17
  17. package/src/configs/components/modal.json +37 -5
  18. package/src/configs/components/navLayout.json +87 -75
  19. package/src/configs/components/navigationBar.json +59 -0
  20. package/src/configs/components/richtextview.json +4 -1
  21. package/src/configs/components/scrollVeiw.json +74 -22
  22. package/src/configs/components/swiper.json +4 -1
  23. package/src/configs/components/tabs.json +51 -8
  24. package/src/configs/components/text.json +33 -25
  25. package/src/configs/components/wxOpenApi/phone.json +141 -0
  26. package/src/configs/components/wxOpenApi/phoneCode.json +121 -0
  27. package/src/configs/components/wxOpenApi/share.json +167 -0
  28. package/src/configs/components/wxOpenApi/userInfo.json +174 -0
  29. package/src/configs/index.js +11 -0
  30. package/src/mp/components/chart/bar/index.js +6 -2
  31. package/src/mp/components/chart/common/core/eChartBar.js +9 -8
  32. package/src/mp/components/chart/common/core/eChartBase.js +20 -16
  33. package/src/mp/components/chart/common/core/eChartLine.js +6 -5
  34. package/src/mp/components/chart/line/index.js +10 -6
  35. package/src/mp/components/chart/pie/index.js +6 -2
  36. package/src/mp/components/chart/statisticsCard/index.js +33 -6
  37. package/src/mp/components/dataView/index.json +1 -1
  38. package/src/mp/components/form/checkbox/index.js +41 -2
  39. package/src/mp/components/form/checkbox/index.wxml +1 -1
  40. package/src/mp/components/form/input/index.js +1 -1
  41. package/src/mp/components/form/location/index.js +43 -2
  42. package/src/mp/components/form/radio/index.js +34 -1
  43. package/src/mp/components/form/select/index.js +360 -40
  44. package/src/mp/components/form/select/index.wxml +17 -2
  45. package/src/mp/components/form/select/region/index.js +98 -0
  46. package/src/mp/components/form/uploader/index.js +39 -27
  47. package/src/mp/components/form/uploaderFile/index.js +10 -6
  48. package/src/mp/components/listView/index.js +33 -27
  49. package/src/mp/components/listView/index.wxml +1 -1
  50. package/src/mp/components/listView/index.wxss +5 -0
  51. package/src/mp/components/navigationBar/index.js +193 -0
  52. package/src/mp/components/navigationBar/index.json +6 -0
  53. package/src/mp/components/navigationBar/index.wxml +88 -0
  54. package/src/mp/components/navigationBar/index.wxss +1257 -0
  55. package/src/mp/components/tabs/index.js +7 -2
  56. package/src/mp/components/tabs/index.wxml +2 -1
  57. package/src/mp/components/text/index.js +0 -25
  58. package/src/mp/components/text/index.wxml +3 -3
  59. package/src/mp/components/wxOpenApi/phone/index.js +117 -0
  60. package/src/mp/components/{internals/listView → wxOpenApi/phone}/index.json +0 -0
  61. package/src/mp/components/wxOpenApi/phone/index.wxml +15 -0
  62. package/src/mp/components/wxOpenApi/phone/index.wxss +22 -0
  63. package/src/mp/components/wxOpenApi/phoneCode/index.js +89 -0
  64. package/src/mp/components/wxOpenApi/phoneCode/index.json +4 -0
  65. package/src/mp/components/wxOpenApi/phoneCode/index.wxml +15 -0
  66. package/src/mp/components/wxOpenApi/phoneCode/index.wxss +22 -0
  67. package/src/mp/components/wxOpenApi/share/index.js +117 -0
  68. package/src/mp/components/wxOpenApi/share/index.json +4 -0
  69. package/src/mp/components/wxOpenApi/share/index.wxml +15 -0
  70. package/src/mp/components/wxOpenApi/share/index.wxss +22 -0
  71. package/src/mp/components/wxOpenApi/userInfo/index.js +88 -0
  72. package/src/mp/components/wxOpenApi/userInfo/index.json +4 -0
  73. package/src/mp/components/wxOpenApi/userInfo/index.wxml +14 -0
  74. package/src/mp/components/wxOpenApi/userInfo/index.wxss +22 -0
  75. package/src/mp/index.json +7 -2
  76. package/src/mp/style/weda-ui.wxss +2 -0
  77. package/src/mp/utils/destr.js +48 -0
  78. package/src/mp/utils/platform.js +10 -0
  79. package/src/mp/utils/tcb.js +44 -0
  80. package/src/web/components/button/index.css +8 -1
  81. package/src/web/components/button/index.tsx +3 -2
  82. package/src/web/components/chart/bar/index.tsx +40 -39
  83. package/src/web/components/chart/common/core/eChartBar.js +7 -6
  84. package/src/web/components/chart/common/core/eChartBase.ts +20 -16
  85. package/src/web/components/chart/common/core/eChartLine.js +8 -6
  86. package/src/web/components/chart/line/index.tsx +40 -39
  87. package/src/web/components/chart/statisticsCard/index.tsx +29 -8
  88. package/src/web/components/form/checkbox/index.tsx +55 -23
  89. package/src/web/components/form/radio/index.tsx +84 -53
  90. package/src/web/components/form/select/h5.tsx +388 -72
  91. package/src/web/components/form/select/index.css +10 -0
  92. package/src/web/components/form/select/index.tsx +404 -144
  93. package/src/web/components/form/select/region/index.ts +122 -31
  94. package/src/web/components/form/select/time.jsx +89 -0
  95. package/src/web/components/form/select/year.tsx +170 -0
  96. package/src/web/components/form/uploader/uploader.h5.tsx +9 -2
  97. package/src/web/components/form/uploader/uploader.pc.tsx +4 -4
  98. package/src/web/components/form/uploaderFile/uploadFile.h5.tsx +13 -7
  99. package/src/web/components/form/uploaderFile/uploadFile.pc.tsx +13 -5
  100. package/src/web/components/image/image.tsx +1 -1
  101. package/src/web/components/image/index.tsx +1 -1
  102. package/src/web/components/index.js +7 -0
  103. package/src/web/components/link/index.tsx +6 -3
  104. package/src/web/components/listView/index.css +4 -0
  105. package/src/web/components/listView/index.tsx +6 -1
  106. package/src/web/components/modal/index.tsx +3 -1
  107. package/src/web/components/navigationBar/chevron-right--double.svg +3 -0
  108. package/src/web/components/navigationBar/common.tsx +198 -0
  109. package/src/web/components/navigationBar/h5Menu.tsx +179 -0
  110. package/src/web/components/navigationBar/horizontalMenu.tsx +200 -0
  111. package/src/web/components/navigationBar/index.css +762 -0
  112. package/src/web/components/navigationBar/index.tsx +231 -0
  113. package/src/web/components/navigationBar/type.d.ts +111 -0
  114. package/src/web/components/navigationBar/verticalMenu.tsx +81 -0
  115. package/src/web/components/phone/index.css +0 -0
  116. package/src/web/components/phone/index.tsx +22 -0
  117. package/src/web/components/phoneCode/index.css +0 -0
  118. package/src/web/components/phoneCode/index.tsx +22 -0
  119. package/src/web/components/richTextView/index.tsx +3 -5
  120. package/src/web/components/share/index.css +0 -0
  121. package/src/web/components/share/index.tsx +38 -0
  122. package/src/web/components/tabs/index.tsx +2 -0
  123. package/src/web/components/tabs/tabs.h5.tsx +43 -33
  124. package/src/web/components/tabs/tabs.pc.tsx +23 -10
  125. package/src/web/components/text/index.tsx +6 -14
  126. package/src/web/components/userInfo/index.css +0 -0
  127. package/src/web/components/userInfo/index.tsx +30 -0
  128. package/src/web/utils/platform.js +9 -0
  129. package/src/web/utils/tcb.js +26 -0
  130. package/src/web/weda-ui.css +2 -0
  131. package/src/mp/components/internals/listView/arrow-right-line.svg +0 -3
  132. package/src/mp/components/internals/listView/index.js +0 -286
  133. package/src/mp/components/internals/listView/index.wxml +0 -40
  134. package/src/mp/components/internals/listView/index.wxss +0 -150
  135. package/src/mp/components/internals/listView/more-line.svg +0 -3
  136. package/src/web/components/form/select/region/cities.ts +0 -2410
  137. package/src/web/components/form/select/region/provinces.ts +0 -240
  138. package/src/web/components/form/select/region/regions.ts +0 -20645
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React, { useEffect, useState } from 'react';
2
2
  import { Checkbox as TeaCheckbox, ConfigProvider } from 'tea-component';
3
3
 
4
4
  import classNames from '../../../utils/classnames';
@@ -8,6 +8,8 @@ import fromEntries from 'object.fromentries';
8
8
  import { usePlatform } from '../../../utils/platform';
9
9
  import { renderDecorator } from '../renderDecorator';
10
10
  import { CommonFormPropsType } from '../types';
11
+ import { callWedaApi } from '../../../utils/tcb';
12
+ import destr from 'destr';
11
13
 
12
14
  export default function Checkbox({
13
15
  // 系统属性
@@ -19,6 +21,8 @@ export default function Checkbox({
19
21
  name = 'formCheckbox',
20
22
  label = '标题',
21
23
  labelVisible = true,
24
+ format = '',
25
+ enumName = '',
22
26
  range = [],
23
27
  layout = 'horizontal',
24
28
  disabled = false,
@@ -40,21 +44,47 @@ export default function Checkbox({
40
44
  'weui-cell_disabled': isH5 && disabled,
41
45
  });
42
46
 
47
+ const [option, setOption] = useState(range);
43
48
  const [checkedItems, setCheckedItems] = React.useState(
44
- platform === 'h5' ? fromEntries(range.map(({ value, checked }) => [value, !!checked]))
45
- : range.filter(({checked}) => checked).map(({value}) => value)
49
+ platform === 'h5' ? fromEntries(option.map(({ value, checked }) => [value, !!checked]))
50
+ : option.filter(({ checked }) => checked).map(({ value }) => value)
46
51
  );
47
52
  // 两次range不同时, 需要刷新checkedItems
48
53
  const prevRangeRef = React.useRef<object[]>();
49
54
  React.useEffect(() => {
50
- if (!isObjectEqual(prevRangeRef.current, range)) {
51
- prevRangeRef.current = range;
55
+ if (!isObjectEqual(prevRangeRef.current, option)) {
56
+ prevRangeRef.current = option;
52
57
  setCheckedItems(
53
- fromEntries(range.map(({ value, checked }) => [value, !!checked]))
58
+ fromEntries(option.map(({ value, checked }) => [value, !!checked]))
54
59
  );
55
60
  }
56
61
  });
57
62
 
63
+ useEffect(() => {
64
+ // 如果绑定字段类型为枚举,且传入自定义选项集的名称则默认使用自定义选项集的内容作为选项
65
+ if (format === 'x-enum' && enumName) {
66
+ fetchData({ OptNameList: [enumName], PageIndex: 1, PageSize: 10 });
67
+ }
68
+ }, []);
69
+
70
+ const fetchData = async (param:
71
+ { OptNameList?: object, PageIndex?: number, PageSize?: number }
72
+ ) => {
73
+ let data = await callWedaApi({
74
+ action: 'DescribeGeneralOptionsDetailList',
75
+ data: param,
76
+ });
77
+ const config = destr(data?.Items?.[0]?.Config) ?? [];
78
+ const enumOption = config.map(item => {
79
+ return {
80
+ label: item.value,
81
+ value: item.key,
82
+ checked: false
83
+ };
84
+ });
85
+ setOption(enumOption);
86
+ };
87
+
58
88
  /**
59
89
  * 在ios h5端, label和input的绑定不生效
60
90
  * 导致 onChange 事件触发有问题, 所以改为监听 onClick 事件
@@ -82,8 +112,8 @@ export default function Checkbox({
82
112
  // 现在低码组件往源码组件传入的id不唯一, 暂时使用hashcode替代
83
113
  const hashcode = React.useMemo(() => getLocalCounter(), []);
84
114
  let checkboxElement;
85
- if(platform === 'h5') {
86
- checkboxElement = range.map(({ label, value }, index) => {
115
+ if (platform === 'h5') {
116
+ checkboxElement = option.map(({ label, value }, index) => {
87
117
  const _id = `checkbox-${hashcode}-${index}`;
88
118
  const _name = `checkbox-${hashcode}-${name}`;
89
119
  return (
@@ -120,17 +150,17 @@ export default function Checkbox({
120
150
  .map(([value]) => value)
121
151
  }
122
152
  onChange={value => {
123
- const newMap = range
124
- .map((opt) => opt.value)
125
- .reduce((acc, cur) => {
126
- const idx = value.indexOf(cur);
127
- if(idx < 0) {
128
- acc[cur] = false;
129
- } else {
130
- acc[cur] = true;
131
- }
132
- return acc;
133
- }, {});
153
+ const newMap = option
154
+ .map((opt) => opt.value)
155
+ .reduce((acc, cur) => {
156
+ const idx = value.indexOf(cur);
157
+ if (idx < 0) {
158
+ acc[cur] = false;
159
+ } else {
160
+ acc[cur] = true;
161
+ }
162
+ return acc;
163
+ }, {});
134
164
  setCheckedItems(newMap);
135
165
  events.change(
136
166
  {
@@ -141,7 +171,7 @@ export default function Checkbox({
141
171
  );
142
172
  }}
143
173
  >
144
- {range.map(({value, label}, index) => {
174
+ {option.map(({ value, label }, index) => {
145
175
  const _id = `checkbox-${hashcode}-${index}`;
146
176
  return (
147
177
  <TeaCheckbox key={_id} name={value} id={_id}>
@@ -149,7 +179,7 @@ export default function Checkbox({
149
179
  </TeaCheckbox>
150
180
  );
151
181
  })}
152
- </TeaCheckbox.Group>
182
+ </TeaCheckbox.Group>
153
183
  </ConfigProvider>
154
184
  );
155
185
  }
@@ -167,5 +197,7 @@ export default function Checkbox({
167
197
  }
168
198
 
169
199
  export interface PropsType extends CommonFormPropsType {
170
- range?: {label: string, value: any; [key: string]: any}[];
171
- }
200
+ range?: { label: string, value: any;[key: string]: any }[];
201
+ format?: string;
202
+ enumName?: string;
203
+ }
@@ -1,14 +1,16 @@
1
- import * as React from 'react';
2
- import {ConfigProvider, Radio as TeaRadio} from 'tea-component';
1
+ import React, { useEffect, useState } from 'react';
2
+ import { ConfigProvider, Radio as TeaRadio } from 'tea-component';
3
3
 
4
- import {usePlatform} from '../../../utils/platform';
4
+ import { usePlatform } from '../../../utils/platform';
5
5
  import classNames from '../../../utils/classnames';
6
6
  import getLocalCounter from '../../../utils/getLocalCounter';
7
7
  import isObjectEqual from '../../../utils/isObjectEqual';
8
+ import { callWedaApi } from '../../../utils/tcb';
8
9
 
9
10
  import './index.css';
10
11
  import { renderDecorator } from '../renderDecorator';
11
12
  import { CommonFormPropsType } from '../types';
13
+ import destr from 'destr';
12
14
 
13
15
  export default function Radio({
14
16
  // 系统属性
@@ -19,6 +21,8 @@ export default function Radio({
19
21
  // 组件属性
20
22
  label = '标题',
21
23
  labelVisible = true,
24
+ format = '',
25
+ enumName = '',
22
26
  name = 'formRadio',
23
27
  range = [],
24
28
  layout = 'horizontal',
@@ -39,19 +43,44 @@ export default function Radio({
39
43
  'weui-check__label': isH5,
40
44
  'weui-cell_disabled': isH5 && disabled,
41
45
  });
42
-
46
+ const [option, setOption] = useState(range);
43
47
  const [checkedItemValue, setCheckedItemValue] = React.useState(
44
- range.find((item) => item.checked)?.value
48
+ option.find((item) => item.checked)?.value
45
49
  );
46
50
  // 两次range不同时, 需要刷新checkedItemValue
47
51
  const prevRangeRef = React.useRef<PropsType['range']>();
48
52
  React.useEffect(() => {
49
- if (!isObjectEqual(prevRangeRef.current, range)) {
50
- prevRangeRef.current = range;
51
- setCheckedItemValue(range.find((item) => item.checked)?.value);
53
+ if (!isObjectEqual(prevRangeRef.current, option)) {
54
+ prevRangeRef.current = option;
55
+ setCheckedItemValue(option.find((item) => item.checked)?.value);
52
56
  }
53
57
  });
54
58
 
59
+ useEffect(() => {
60
+ // 如果绑定字段类型为枚举,且传入自定义选项集的名称则默认使用自定义选项集的内容作为选项
61
+ if (format === 'x-enum' && enumName) {
62
+ fetchData({ OptNameList: [enumName], PageIndex: 1, PageSize: 10 });
63
+ }
64
+ }, []);
65
+
66
+ const fetchData = async (param:
67
+ { OptNameList?: object, PageIndex?: number, PageSize?: number }
68
+ ) => {
69
+ let data = await callWedaApi({
70
+ action: 'DescribeGeneralOptionsDetailList',
71
+ data: param,
72
+ });
73
+ const config = destr(data?.Items?.[0]?.Config) ?? [];
74
+ const enumOption = config.map(item => {
75
+ return {
76
+ label: item.value,
77
+ value: item.key,
78
+ checked: false
79
+ };
80
+ });
81
+ setOption(enumOption);
82
+ };
83
+
55
84
  /**
56
85
  * 在ios h5端, label和input的绑定不生效
57
86
  * 导致 onChange 事件触发有问题, 所以改为监听 onClick 事件
@@ -70,55 +99,55 @@ export default function Radio({
70
99
  // 现在低码组件往源码组件传入的id不唯一, 暂时使用hashcode替代
71
100
  const hashcode = React.useMemo(() => getLocalCounter(), []);
72
101
  let radioElement;
73
- if(isH5) {
102
+ if (isH5) {
74
103
 
75
- radioElement = range.map(({ label, value }, index) => {
104
+ radioElement = option.map(({ label, value }, index) => {
76
105
  const _id = `radio-${hashcode}-${index}`;
77
106
  const _name = `radio-${hashcode}-${name}`;
78
107
  return (
79
- <div
80
- className={subCls}
81
- key={_id}
82
- onClickCapture={getChangeHandler(value)}
83
- >
84
- <div className="weui-cell__hd">
85
- <input
86
- type="radio"
87
- className="weui-check"
88
- value={value}
89
- name={_name}
90
- id={_id}
91
- checked={checkedItemValue === value}
92
- disabled={disabled}
93
- onClick={(e) => e.stopPropagation()}
108
+ <div
109
+ className={subCls}
110
+ key={_id}
111
+ onClickCapture={getChangeHandler(value)}
112
+ >
113
+ <div className="weui-cell__hd">
114
+ <input
115
+ type="radio"
116
+ className="weui-check"
117
+ value={value}
118
+ name={_name}
119
+ id={_id}
120
+ checked={checkedItemValue === value}
121
+ disabled={disabled}
122
+ onClick={(e) => e.stopPropagation()}
94
123
  />
95
- <i className="weui-icon-checked"></i>
124
+ <i className="weui-icon-checked"></i>
125
+ </div>
126
+ <div className="weui-cell__bd">
127
+ <p>{label}</p>
128
+ </div>
96
129
  </div>
97
- <div className="weui-cell__bd">
98
- <p>{label}</p>
99
- </div>
100
- </div>
101
- );
102
- });
103
- } else {
104
- // pc
105
- radioElement = (<ConfigProvider classPrefix="wedatea2td">
106
- <TeaRadio.Group
107
- disabled={disabled}
108
- value={checkedItemValue}
109
- onChange={(value, {event}) => getChangeHandler(value)(event)}
110
- >
111
- {range.map(({value, label}, index) => {
112
- const _id = `radio-${hashcode}-${index}`;
113
- return (
114
- <TeaRadio key={_id} name={value} id={_id}>
115
- {label}
116
- </TeaRadio>
117
- );
118
- })}
119
- </TeaRadio.Group>
120
- </ConfigProvider>);
121
- }
130
+ );
131
+ });
132
+ } else {
133
+ // pc
134
+ radioElement = (<ConfigProvider classPrefix="wedatea2td">
135
+ <TeaRadio.Group
136
+ disabled={disabled}
137
+ value={checkedItemValue}
138
+ onChange={(value, { event }) => getChangeHandler(value)(event)}
139
+ >
140
+ {option.map(({ value, label }, index) => {
141
+ const _id = `radio-${hashcode}-${index}`;
142
+ return (
143
+ <TeaRadio key={_id} name={value} id={_id}>
144
+ {label}
145
+ </TeaRadio>
146
+ );
147
+ })}
148
+ </TeaRadio.Group>
149
+ </ConfigProvider>);
150
+ }
122
151
  return renderDecorator(radioElement, decorator)({
123
152
  id,
124
153
  className: cls,
@@ -132,5 +161,7 @@ export default function Radio({
132
161
 
133
162
  export interface PropsType extends CommonFormPropsType {
134
163
  // 组件属性
135
- range?: ({label: string} & Record<string, any>)[];
136
- }
164
+ range?: ({ label: string } & Record<string, any>)[];
165
+ format?: string;
166
+ enumName?: string;
167
+ }