@cloudbase/weda-ui 0.2.15 → 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 (250) hide show
  1. package/README.md +41 -169
  2. package/package.json +28 -15
  3. package/src/configs/components/calendar.json +78 -0
  4. package/src/configs/components/carousel.json +273 -0
  5. package/src/configs/components/chart/bar.json +724 -0
  6. package/src/configs/components/chart/line.json +679 -0
  7. package/src/configs/components/chart/pie.json +497 -0
  8. package/src/configs/components/chart/statisticsCard.json +379 -0
  9. package/src/configs/components/container.json +7 -2
  10. package/src/configs/components/dataView.json +154 -0
  11. package/src/configs/components/form/checkbox.json +97 -5
  12. package/src/configs/components/form/location.json +152 -0
  13. package/src/configs/components/form/radio.json +96 -4
  14. package/src/configs/components/form/select.json +245 -11
  15. package/src/configs/components/form/uploaderFile.json +2 -1
  16. package/src/configs/components/graphicCard.json +410 -0
  17. package/src/configs/components/image.json +7 -2
  18. package/src/configs/components/link.json +20 -4
  19. package/src/configs/components/listView.json +277 -0
  20. package/src/configs/components/modal.json +37 -5
  21. package/src/configs/components/navLayout.json +362 -0
  22. package/src/configs/components/navigationBar.json +59 -0
  23. package/src/configs/components/richtextview.json +4 -1
  24. package/src/configs/components/scrollVeiw.json +74 -22
  25. package/src/configs/components/swiper.json +6 -3
  26. package/src/configs/components/tabs.json +51 -8
  27. package/src/configs/components/text.json +33 -25
  28. package/src/configs/components/wxOpenApi/phone.json +141 -0
  29. package/src/configs/components/wxOpenApi/phoneCode.json +121 -0
  30. package/src/configs/components/wxOpenApi/share.json +167 -0
  31. package/src/configs/components/wxOpenApi/userInfo.json +174 -0
  32. package/src/configs/index.js +34 -0
  33. package/src/mp/components/button/index.js +12 -13
  34. package/src/mp/components/button/index.wxml +1 -1
  35. package/src/mp/components/calendar/arrowright--line.svg +11 -0
  36. package/src/mp/components/calendar/index.js +238 -0
  37. package/src/mp/components/calendar/index.json +4 -0
  38. package/src/mp/components/calendar/index.wxml +37 -0
  39. package/src/mp/components/calendar/index.wxss +178 -0
  40. package/src/mp/components/carousel/index.js +88 -0
  41. package/src/mp/components/carousel/index.json +7 -0
  42. package/src/mp/components/carousel/index.wxml +6 -0
  43. package/src/mp/components/chart/bar/index.js +258 -0
  44. package/src/mp/components/chart/bar/index.json +6 -0
  45. package/src/mp/components/chart/bar/index.wxml +3 -0
  46. package/src/mp/components/chart/bar/index.wxss +9 -0
  47. package/src/mp/components/chart/common/config/bar.js +50 -0
  48. package/src/mp/components/chart/common/config/global.js +16 -0
  49. package/src/mp/components/chart/common/config/line.js +48 -0
  50. package/src/mp/components/chart/common/config/pie.js +36 -0
  51. package/src/mp/components/chart/common/core/eChartBar.js +263 -0
  52. package/src/mp/components/chart/common/core/eChartBase.js +375 -0
  53. package/src/mp/components/chart/common/core/eChartLine.js +229 -0
  54. package/src/mp/components/chart/common/core/eChartPie.js +166 -0
  55. package/src/mp/components/chart/common/lib/echarts.min.js +18 -0
  56. package/src/mp/components/chart/ec-canvas/ec-canvas.js +277 -0
  57. package/src/mp/components/chart/ec-canvas/ec-canvas.json +4 -0
  58. package/src/mp/components/chart/ec-canvas/ec-canvas.wxml +4 -0
  59. package/src/mp/components/chart/ec-canvas/ec-canvas.wxss +4 -0
  60. package/src/mp/components/chart/ec-canvas/wx-canvas.js +107 -0
  61. package/src/mp/components/chart/line/index.js +247 -0
  62. package/src/mp/components/chart/line/index.json +6 -0
  63. package/src/mp/components/chart/line/index.wxml +3 -0
  64. package/src/mp/components/chart/line/index.wxss +9 -0
  65. package/src/mp/components/chart/pie/index.js +182 -0
  66. package/src/mp/components/chart/pie/index.json +6 -0
  67. package/src/mp/components/chart/pie/index.wxml +4 -0
  68. package/src/mp/components/chart/pie/index.wxss +9 -0
  69. package/src/mp/components/chart/statisticsCard/index.js +253 -0
  70. package/src/mp/components/chart/statisticsCard/index.json +4 -0
  71. package/src/mp/components/chart/statisticsCard/index.wxml +9 -0
  72. package/src/mp/components/chart/statisticsCard/index.wxss +45 -0
  73. package/src/mp/components/dataView/index.js +34 -0
  74. package/src/mp/components/dataView/index.json +7 -0
  75. package/src/mp/components/dataView/index.wxml +15 -0
  76. package/src/mp/components/dataView/index.wxss +0 -0
  77. package/src/mp/components/form/checkbox/index.js +41 -2
  78. package/src/mp/components/form/checkbox/index.wxml +1 -1
  79. package/src/mp/components/form/input/index.js +1 -1
  80. package/src/mp/components/form/location/components/mapChoose/index.js +201 -0
  81. package/src/mp/components/form/location/components/mapChoose/index.json +4 -0
  82. package/src/mp/components/form/location/components/mapChoose/index.wxml +42 -0
  83. package/src/mp/components/form/location/components/mapChoose/index.wxss +188 -0
  84. package/src/mp/components/form/location/index.js +382 -0
  85. package/src/mp/components/form/location/index.json +6 -0
  86. package/src/mp/components/form/location/index.wxml +25 -0
  87. package/src/mp/components/form/location/index.wxss +91 -0
  88. package/src/mp/components/form/radio/index.js +38 -0
  89. package/src/mp/components/form/select/index.js +360 -40
  90. package/src/mp/components/form/select/index.wxml +21 -6
  91. package/src/mp/components/form/select/region/index.js +98 -0
  92. package/src/mp/components/form/textarea/index.wxml +6 -5
  93. package/src/mp/components/form/uploader/index.js +84 -48
  94. package/src/mp/components/form/uploader/index.wxml +15 -3
  95. package/src/mp/components/form/uploaderFile/index.js +106 -27
  96. package/src/mp/components/graphicCard/chevron-right.svg +3 -0
  97. package/src/mp/components/graphicCard/index.js +203 -0
  98. package/src/mp/components/graphicCard/index.json +4 -0
  99. package/src/mp/components/graphicCard/index.wxml +29 -0
  100. package/src/mp/components/graphicCard/index.wxss +157 -0
  101. package/src/mp/components/image/index.js +0 -1
  102. package/src/mp/components/listView/arrow-right-line.svg +3 -0
  103. package/src/mp/components/listView/index.js +285 -0
  104. package/src/mp/components/listView/index.json +4 -0
  105. package/src/mp/components/listView/index.wxml +40 -0
  106. package/src/mp/components/listView/index.wxss +155 -0
  107. package/src/mp/components/listView/more-line.svg +3 -0
  108. package/src/mp/components/navLayout/index.js +123 -0
  109. package/src/mp/components/navLayout/index.json +7 -0
  110. package/src/mp/components/navLayout/index.wxml +25 -0
  111. package/src/mp/components/navLayout/index.wxss +1193 -0
  112. package/src/mp/components/navigationBar/index.js +193 -0
  113. package/src/mp/components/navigationBar/index.json +6 -0
  114. package/src/mp/components/navigationBar/index.wxml +88 -0
  115. package/src/mp/components/navigationBar/index.wxss +1257 -0
  116. package/src/mp/components/swiper/index.wxml +2 -0
  117. package/src/mp/components/tabs/index.js +7 -2
  118. package/src/mp/components/tabs/index.wxml +2 -1
  119. package/src/mp/components/text/index.js +0 -25
  120. package/src/mp/components/text/index.wxml +3 -3
  121. package/src/mp/components/wxOpenApi/phone/index.js +117 -0
  122. package/src/mp/components/wxOpenApi/phone/index.json +4 -0
  123. package/src/mp/components/wxOpenApi/phone/index.wxml +15 -0
  124. package/src/mp/components/wxOpenApi/phone/index.wxss +22 -0
  125. package/src/mp/components/wxOpenApi/phoneCode/index.js +89 -0
  126. package/src/mp/components/wxOpenApi/phoneCode/index.json +4 -0
  127. package/src/mp/components/wxOpenApi/phoneCode/index.wxml +15 -0
  128. package/src/mp/components/wxOpenApi/phoneCode/index.wxss +22 -0
  129. package/src/mp/components/wxOpenApi/share/index.js +117 -0
  130. package/src/mp/components/wxOpenApi/share/index.json +4 -0
  131. package/src/mp/components/wxOpenApi/share/index.wxml +15 -0
  132. package/src/mp/components/wxOpenApi/share/index.wxss +22 -0
  133. package/src/mp/components/wxOpenApi/userInfo/index.js +88 -0
  134. package/src/mp/components/wxOpenApi/userInfo/index.json +4 -0
  135. package/src/mp/components/wxOpenApi/userInfo/index.wxml +14 -0
  136. package/src/mp/components/wxOpenApi/userInfo/index.wxss +22 -0
  137. package/src/mp/index.json +18 -2
  138. package/src/mp/style/weda-ui.wxss +2 -0
  139. package/src/mp/utils/debounce.js +133 -0
  140. package/src/mp/utils/destr.js +48 -0
  141. package/src/mp/utils/dr_square_point.js +25 -0
  142. package/src/mp/utils/platform.js +25 -0
  143. package/src/mp/utils/qqmap-wx-jssdk1.2/qqmap-wx-jssdk.js +1336 -0
  144. package/src/mp/utils/spark-md5.js +776 -0
  145. package/src/mp/utils/tcb.js +62 -0
  146. package/src/setupTests.js +2 -1
  147. package/src/web/components/button/index.css +8 -1
  148. package/src/web/components/button/index.tsx +3 -2
  149. package/src/web/components/calendar/index.css +382 -0
  150. package/src/web/components/calendar/index.jsx +312 -0
  151. package/src/web/components/calendar/util.js +90 -0
  152. package/src/web/components/carousel/index.css +119 -0
  153. package/src/web/components/carousel/index.tsx +417 -0
  154. package/src/web/components/chart/bar/index.tsx +140 -0
  155. package/src/web/components/chart/common/config/bar.js +49 -0
  156. package/src/web/components/chart/common/config/global.js +16 -0
  157. package/src/web/components/chart/common/config/line.js +50 -0
  158. package/src/web/components/chart/common/config/pie.js +37 -0
  159. package/src/web/components/chart/common/core/eChartBar.js +265 -0
  160. package/src/web/components/chart/common/core/eChartBase.ts +383 -0
  161. package/src/web/components/chart/common/core/eChartLine.js +231 -0
  162. package/src/web/components/chart/common/core/eChartPie.js +170 -0
  163. package/src/web/components/chart/common/core/type.ts +34 -0
  164. package/src/web/components/chart/common/echart.css +106 -0
  165. package/src/web/components/chart/common/echarts.ts +33 -0
  166. package/src/web/components/chart/common/useChart.tsx +69 -0
  167. package/src/web/components/chart/line/index.tsx +136 -0
  168. package/src/web/components/chart/pie/index.tsx +99 -0
  169. package/src/web/components/chart/statisticsCard/index.css +62 -0
  170. package/src/web/components/chart/statisticsCard/index.tsx +307 -0
  171. package/src/web/components/chart/statisticsCard/interface.ts +14 -0
  172. package/src/web/components/dataView/index.tsx +20 -0
  173. package/src/web/components/dataView/interface.ts +6 -0
  174. package/src/web/components/form/checkbox/index.tsx +55 -23
  175. package/src/web/components/form/location/common/mapChoose.css +178 -0
  176. package/src/web/components/form/location/common/mapChoose.jsx +343 -0
  177. package/src/web/components/form/location/common/mapView.jsx +190 -0
  178. package/src/web/components/form/location/common/propsConfig.js +54 -0
  179. package/src/web/components/form/location/common/selectModal.css +44 -0
  180. package/src/web/components/form/location/common/selectModal.jsx +82 -0
  181. package/src/web/components/form/location/common/useLocationInfo.js +100 -0
  182. package/src/web/components/form/location/components/LocationH5/index.css +243 -0
  183. package/src/web/components/form/location/components/LocationH5/location.h5.jsx +403 -0
  184. package/src/web/components/form/location/components/LocationPC/Header.jsx +109 -0
  185. package/src/web/components/form/location/components/LocationPC/index.css +44 -0
  186. package/src/web/components/form/location/components/LocationPC/location.PC.jsx +323 -0
  187. package/src/web/components/form/location/constants.js +4 -0
  188. package/src/web/components/form/location/index.css +0 -0
  189. package/src/web/components/form/location/index.jsx +25 -0
  190. package/src/web/components/form/radio/index.tsx +84 -53
  191. package/src/web/components/form/select/h5.tsx +389 -71
  192. package/src/web/components/form/select/index.css +10 -0
  193. package/src/web/components/form/select/index.tsx +404 -144
  194. package/src/web/components/form/select/region/index.ts +122 -31
  195. package/src/web/components/form/select/time.jsx +90 -0
  196. package/src/web/components/form/select/year.tsx +170 -0
  197. package/src/web/components/form/uploader/uploader.h5.tsx +19 -4
  198. package/src/web/components/form/uploader/uploader.pc.tsx +8 -7
  199. package/src/web/components/form/uploaderFile/uploadFile.h5.tsx +132 -113
  200. package/src/web/components/form/uploaderFile/uploadFile.pc.tsx +16 -11
  201. package/src/web/components/graphicCard/index.css +159 -0
  202. package/src/web/components/graphicCard/index.tsx +310 -0
  203. package/src/web/components/image/image.tsx +1 -2
  204. package/src/web/components/image/index.tsx +1 -1
  205. package/src/web/components/index.js +24 -2
  206. package/src/web/components/link/index.tsx +6 -3
  207. package/src/web/components/listView/arrow-right-line.svg +3 -0
  208. package/src/web/components/listView/index.css +143 -0
  209. package/src/web/components/listView/index.tsx +359 -0
  210. package/src/web/components/listView/interface.ts +98 -0
  211. package/src/web/components/modal/index.tsx +3 -1
  212. package/src/web/components/navLayout/index.css +332 -0
  213. package/src/web/components/navLayout/index.tsx +247 -0
  214. package/src/web/components/navigationBar/chevron-right--double.svg +3 -0
  215. package/src/web/components/navigationBar/common.tsx +198 -0
  216. package/src/web/components/navigationBar/h5Menu.tsx +179 -0
  217. package/src/web/components/navigationBar/horizontalMenu.tsx +200 -0
  218. package/src/web/components/navigationBar/index.css +762 -0
  219. package/src/web/components/navigationBar/index.tsx +231 -0
  220. package/src/web/components/navigationBar/type.d.ts +111 -0
  221. package/src/web/components/navigationBar/verticalMenu.tsx +81 -0
  222. package/src/web/components/phone/index.css +0 -0
  223. package/src/web/components/phone/index.tsx +22 -0
  224. package/src/web/components/phoneCode/index.css +0 -0
  225. package/src/web/components/phoneCode/index.tsx +22 -0
  226. package/src/web/components/richTextView/index.tsx +3 -5
  227. package/src/web/components/share/index.css +0 -0
  228. package/src/web/components/share/index.tsx +38 -0
  229. package/src/web/components/tabs/index.tsx +4 -2
  230. package/src/web/components/tabs/tabs.h5.tsx +50 -37
  231. package/src/web/components/tabs/tabs.pc.tsx +23 -10
  232. package/src/web/components/text/index.tsx +6 -14
  233. package/src/web/components/uploaderFileView/index.css +9 -9
  234. package/src/web/components/uploaderFileView/index.jsx +32 -23
  235. package/src/web/components/userInfo/index.css +0 -0
  236. package/src/web/components/userInfo/index.tsx +30 -0
  237. package/src/web/types.d.ts +15 -14
  238. package/src/web/utils/debounce.js +98 -0
  239. package/src/web/utils/platform.js +40 -0
  240. package/src/web/utils/tcb.js +49 -0
  241. package/src/web/utils/tmap.js +4 -0
  242. package/src/web/weda-ui.css +2 -0
  243. package/CHANGELOG.md +0 -240
  244. package/src/.DS_Store +0 -0
  245. package/src/configs/.DS_Store +0 -0
  246. package/src/mp/.gitignore +0 -10
  247. package/src/web/.DS_Store +0 -0
  248. package/src/web/components/form/select/region/cities.ts +0 -2410
  249. package/src/web/components/form/select/region/provinces.ts +0 -240
  250. package/src/web/components/form/select/region/regions.ts +0 -20645
@@ -0,0 +1,417 @@
1
+ import * as React from 'react';
2
+ import { useState, useEffect, useRef } from 'react';
3
+ import classNames from '../../utils/classnames';
4
+ import Swipe from 'react-easy-swipe';
5
+ import {
6
+ useDebouncedCallback,
7
+ useEventListener,
8
+ useResizeObserver,
9
+ } from '@react-hookz/web';
10
+
11
+ import './index.css';
12
+ import { CommonPropsType } from '../../types';
13
+
14
+ import Image from '../image';
15
+ interface imagesItem {
16
+ image: string;
17
+ title: string;
18
+ tapMode: 'tap' | 'inside' | 'outer';
19
+ fit: React.CSSProperties['objectFit'];
20
+ height: string;
21
+ width: string;
22
+ insideUrl?: string;
23
+ outerUrl?: string;
24
+ newPage?: boolean;
25
+ params?: { key: string; value: string }[];
26
+ }
27
+
28
+ export interface PropsType extends CommonPropsType {
29
+ /**
30
+ * 是否启用指示点
31
+ */
32
+ indicatorDots: boolean;
33
+ /**
34
+ * 是否自动切换
35
+ */
36
+ autoplay: boolean;
37
+ /**
38
+ * 当前索引值
39
+ */
40
+ current: number;
41
+ interval: number;
42
+ duration: number;
43
+ circular: boolean;
44
+ vertical: boolean;
45
+ indicatorColor: string;
46
+ indicatorActiveColor: string;
47
+ images: Array<imagesItem>;
48
+ }
49
+
50
+ export default function Carousel({
51
+ className,
52
+ style = {},
53
+ autoplay = true,
54
+ circular = true,
55
+ vertical = false,
56
+ indicatorDots,
57
+ indicatorColor = 'rgba(200, 200, 200, 0.9)',
58
+ indicatorActiveColor = 'rgba(0, 0, 0, 0.9)',
59
+ duration = 500,
60
+ interval = 5000,
61
+ current = 0,
62
+ events = {},
63
+ id,
64
+ images,
65
+ }: PropsType) {
66
+ const itemCount = images.length;
67
+ current = Math.max(0, Math.min(itemCount - 1, current));
68
+
69
+ const [currentIndex, setCurrentIndex] = useState(current);
70
+ const [swipeStyle, setSwipeStyle] = useState(null);
71
+ const [height, setHeight] = useState(0);
72
+
73
+ const { change = () => {} } = events;
74
+
75
+ // 自动切换
76
+ useEffect(() => {
77
+ if (autoplay) {
78
+ const timer = setInterval(() => {
79
+ setIndex(currentIndex + 1);
80
+ }, interval);
81
+
82
+ return () => clearInterval(timer);
83
+ }
84
+ }, [currentIndex, autoplay]);
85
+
86
+ // 触发切换
87
+ const pre = useRef({ index: currentIndex }).current;
88
+ useEffect(() => {
89
+ updateSwipeStyle(currentIndex, pre.index, itemCount);
90
+ change({
91
+ current: currentIndex,
92
+ });
93
+ return () => {
94
+ pre.index = currentIndex;
95
+ };
96
+ }, [currentIndex, vertical]);
97
+
98
+ const outerWrapRef = useRef<HTMLDivElement>();
99
+ useEventListener(outerWrapRef, 'load', (e) => {
100
+ setHeight(e.target.clientHeight);
101
+ });
102
+
103
+ const itemsClone = images.map((x, i) => {
104
+ return (
105
+ <div className="g-swiper-item" data-index={i} key={i}>
106
+ <Image
107
+ mode={'scaleToFill'}
108
+ lazyLoad={false}
109
+ maskClosable={false}
110
+ imgPreview={false}
111
+ src={x.image}
112
+ alt={'图片'}
113
+ fit={x.fit}
114
+ style={{
115
+ height: x.height ? x.height : 'auto',
116
+ width: x.width ? x.width : '100%',
117
+ }}
118
+ />
119
+ </div>
120
+ );
121
+ });
122
+
123
+ const setIndex = (index) => {
124
+ if (index >= itemCount) {
125
+ index = 0;
126
+ }
127
+ if (index < 0) {
128
+ index = itemCount - 1;
129
+ }
130
+ setCurrentIndex(index);
131
+ };
132
+
133
+ // 设置容器样式、动画
134
+ // TODO fix settimeout mess
135
+ const updateSwipeStyle = (to, cur, length) => {
136
+ let style;
137
+ // 最后向前到最开始
138
+ if (to === 0 && cur === length - 1) {
139
+ circular &&
140
+ setSwipeStyle({
141
+ transform: `translate3d(0, 0, 0)`,
142
+ });
143
+ setTimeout(() => {
144
+ setSwipeStyle({
145
+ transform: vertical
146
+ ? `translate3d(0, -100%, 0)`
147
+ : `translate3d(-100%, 0, 0)`,
148
+ transitionDuration: `${duration}ms`,
149
+ });
150
+ }, 50);
151
+ return;
152
+ }
153
+
154
+ // 第一个后退到最后
155
+ if (to === length - 1 && cur === 0) {
156
+ circular &&
157
+ setSwipeStyle({
158
+ transform: vertical
159
+ ? `translate3d(0, -${(to + 2) * 100}%, 0)`
160
+ : `translate3d(-${(to + 2) * 100}%, 0, 0)`,
161
+ });
162
+ setTimeout(() => {
163
+ setSwipeStyle({
164
+ transform: vertical
165
+ ? `translate3d(0, -${(to + 1) * 100}%, 0)`
166
+ : `translate3d(-${(to + 1) * 100}%, 0, 0)`,
167
+ transitionDuration: `${duration}ms`,
168
+ });
169
+ }, 50);
170
+ return;
171
+ }
172
+
173
+ style = {
174
+ transform: vertical
175
+ ? `translate3d(0, -${(to + 1) * 100}%, 0)`
176
+ : `translate3d(-${(to + 1) * 100}%, 0, 0)`,
177
+ };
178
+ if (to !== cur) {
179
+ style.transitionDuration = `${duration}ms`;
180
+ }
181
+ setSwipeStyle(style);
182
+ };
183
+
184
+ return (
185
+ <div
186
+ className={classNames('g-swiper weda-ui g-carousel', className, {
187
+ vertical: vertical,
188
+ })}
189
+ style={{ height: height ? height : 'auto', ...style }}
190
+ ref={outerWrapRef}
191
+ id={id}
192
+ data-testid="carousel"
193
+ >
194
+ {itemCount > 0 ? (
195
+ <Swipe
196
+ className="g-swiper-list"
197
+ style={swipeStyle}
198
+ tolerance={20}
199
+ onSwipeLeft={() => {
200
+ vertical || setIndex(currentIndex + 1);
201
+ }}
202
+ onSwipeRight={() => {
203
+ vertical || setIndex(currentIndex - 1);
204
+ }}
205
+ onSwipeDown={() => {
206
+ vertical && setIndex(currentIndex - 1);
207
+ }}
208
+ onSwipeUp={() => {
209
+ vertical && setIndex(currentIndex + 1);
210
+ }}
211
+ >
212
+ {itemsClone[itemCount - 1]}
213
+ {images.map((x, i) => {
214
+ return (
215
+ <SwiperItem
216
+ setHeight={setHeight}
217
+ currentIndex={currentIndex}
218
+ index={i}
219
+ key={i}
220
+ imagesValue={x}
221
+ >
222
+ <Image
223
+ mode={'scaleToFill'}
224
+ lazyLoad={false}
225
+ maskClosable={false}
226
+ imgPreview={false}
227
+ fit={x.fit}
228
+ src={x.image}
229
+ alt={'图片'}
230
+ style={{
231
+ height: x.height ? x.height : 'auto',
232
+ width: x.width ? x.width : '100%',
233
+ }}
234
+ />
235
+ </SwiperItem>
236
+ );
237
+ })}
238
+ {itemsClone[0]}
239
+ </Swipe>
240
+ ) : null}
241
+
242
+ {indicatorDots ? (
243
+ <div className="g-swiper__pagination">
244
+ {images.map((x, i) => {
245
+ return (
246
+ <a
247
+ key={i}
248
+ href="#"
249
+ className="g-swiper__pagination-bulletm"
250
+ data-testid="g-swiper__pagination-bulletm"
251
+ style={{
252
+ backgroundColor:
253
+ currentIndex === i ? indicatorActiveColor : indicatorColor,
254
+ }}
255
+ onClick={(e) => {
256
+ setIndex(i);
257
+ e.preventDefault();
258
+ }}
259
+ data-index={i}
260
+ ></a>
261
+ );
262
+ })}
263
+ </div>
264
+ ) : (
265
+ false
266
+ )}
267
+ <a
268
+ href="#"
269
+ className="g-swiper__turn-pre"
270
+ onClick={(ev) => {
271
+ ev.preventDefault();
272
+ setIndex(currentIndex - 1);
273
+ }}
274
+ >
275
+ 上一页
276
+ </a>
277
+ <a
278
+ href="#"
279
+ className="g-swiper__turn-next"
280
+ onClick={(ev) => {
281
+ ev.preventDefault();
282
+ setIndex(currentIndex + 1);
283
+ }}
284
+ >
285
+ 下一页
286
+ </a>
287
+ </div>
288
+ );
289
+ }
290
+
291
+ const SwiperItem: React.FC<{
292
+ setHeight: React.Dispatch<React.SetStateAction<number>>;
293
+ currentIndex: number;
294
+ index: number;
295
+ children?: React.ReactNode;
296
+ imagesValue: imagesItem;
297
+ }> = ({ setHeight, children, currentIndex, index, imagesValue }) => {
298
+ const firstChildRef = useRef<HTMLDivElement>(null);
299
+ const syncHeight = useDebouncedCallback(
300
+ (e) => {
301
+ // console.log('e.contentRect.height', e.contentRect.height);
302
+ setHeight(e.contentRect.height);
303
+ },
304
+ [setHeight],
305
+ 500,
306
+ 2000
307
+ ); // 必须debounce延迟,让resize完成后再设置高度
308
+
309
+ // 因为有loading 所以得用resizeobserver
310
+ // @ts-ignore
311
+ useResizeObserver(firstChildRef, (e) => {
312
+ if (currentIndex === index) {
313
+ syncHeight(e);
314
+ }
315
+ });
316
+
317
+ const getLinkUrl = (url, params) => {
318
+ // URL 构造函数不支持 '//xxx.com' 的格式
319
+ if (url && url.indexOf('//') === 0) {
320
+ url = location.protocol + url;
321
+ }
322
+ // "proto:" 或 "//" 起头的是绝对路径
323
+ let isAbosolutePath = /^(?:[a-z]+:)/i.test(url);
324
+ let base,
325
+ path,
326
+ href,
327
+ paramObj = {},
328
+ urlObj;
329
+ if (!isAbosolutePath) {
330
+ // 相对地址使用站位域名,不实际使用
331
+ base =
332
+ location.origin && location.origin !== 'null'
333
+ ? location.origin
334
+ : 'https://we.da';
335
+ }
336
+
337
+ try {
338
+ urlObj = new URL(url, base);
339
+ params.forEach((x) => {
340
+ urlObj.searchParams.append(x.key, x.value);
341
+ });
342
+
343
+ href = urlObj.href;
344
+ path = urlObj.pathname;
345
+
346
+ for (const [key, value] of urlObj.searchParams) {
347
+ paramObj[key] = value;
348
+ }
349
+
350
+ // 相对地址去掉站位域名
351
+ if (!isAbosolutePath) {
352
+ href = urlObj.pathname + urlObj.search + urlObj.hash;
353
+ href = href.replace(/^\//, '');
354
+ }
355
+ } catch (e) {
356
+ // 非法 url
357
+ isAbosolutePath = true;
358
+ href = url;
359
+ path = '';
360
+ paramObj = params.reduce((p, x) => {
361
+ p[x.key] = x.value;
362
+ return p;
363
+ }, {});
364
+ }
365
+ let res = {
366
+ path,
367
+ isAbosolutePath,
368
+ href,
369
+ };
370
+ return res;
371
+ };
372
+
373
+ const handleImage = (e) => {
374
+ const { insideUrl, outerUrl, tapMode, params, newPage } = imagesValue;
375
+ if (tapMode === 'tap') {
376
+ return;
377
+ } else if (tapMode === 'inside' && !insideUrl) {
378
+ return;
379
+ } else if (tapMode === 'outer' && !outerUrl) {
380
+ return;
381
+ }
382
+ let selectedUrl = tapMode === 'inside' ? insideUrl : outerUrl;
383
+ let { path, isAbosolutePath, href } = getLinkUrl(selectedUrl, []);
384
+ let paramObj =
385
+ params &&
386
+ params.length > 0 &&
387
+ params.reduce((p, x) => {
388
+ p[x.key] = x.value;
389
+ return p;
390
+ }, {});
391
+ if (tapMode === 'inside') {
392
+ if (!isAbosolutePath) {
393
+ e.preventDefault();
394
+ app.navigateTo({
395
+ pageId: path,
396
+ packageName: '',
397
+ mode: 'weDa',
398
+ params: paramObj,
399
+ });
400
+ }
401
+ } else if (tapMode === 'outer') {
402
+ newPage ? window.open(href) : (location.href = href);
403
+ }
404
+ };
405
+ return (
406
+ <div
407
+ className={classNames('g-swiper-item', {
408
+ current: index === currentIndex,
409
+ })}
410
+ data-index={index}
411
+ onClick={handleImage}
412
+ data-testid="swiper-item"
413
+ >
414
+ <div ref={firstChildRef}>{children}</div>
415
+ </div>
416
+ );
417
+ };
@@ -0,0 +1,140 @@
1
+ import React, { useState, useEffect, useRef } from 'react';
2
+ import { CommonPropsType } from '../../../types';
3
+ import { DataSource, Xfield, Yfield } from '../common/core/type';
4
+ import EchartBar from '../common/core/eChartBar';
5
+ import { useWedaChart } from '../common/useChart';
6
+ import classNames from '../../../utils/classnames';
7
+ interface PropsType extends CommonPropsType {
8
+ directionType?: string;
9
+ isPile?: boolean;
10
+ isTitle?: boolean;
11
+ title?: string;
12
+ titleLocation?: string;
13
+ dataSource?: DataSource;
14
+ filterData?: string;
15
+ setColor?: Array<string>;
16
+ xField?: Xfield;
17
+ xStatistics?: string;
18
+ groupKey?: Xfield;
19
+ groupKeyTimeSpan?: string;
20
+ xIsCountEmpty?: boolean;
21
+ yField?: Yfield;
22
+ isLegend?: boolean;
23
+ legend?: string;
24
+ legend2?: string;
25
+ isXaxisName?: boolean;
26
+ xAxisName?: string;
27
+ isXaxisAxisLabelShow?: boolean;
28
+ isXaxisAxisTickShow?: boolean;
29
+ isXaxisAxisLabelRotate?: boolean;
30
+ isYAxisSplitlineLinestyleWidth?: boolean;
31
+ yAxisSplitlineLinestyleType?: string;
32
+ yAxisMax?: number;
33
+ yAxisMin?: number;
34
+ isYAxisName?: boolean;
35
+ yAxisName?: string;
36
+ isSeriesShowSymbol?: boolean;
37
+ isYAxisShow?: boolean;
38
+ isUnit?: boolean;
39
+ unit?: string;
40
+ decimalDigits?: number;
41
+ suffix?: string;
42
+ }
43
+ export default function Bar(opts: PropsType) {
44
+ const {
45
+ directionType,
46
+ isPile,
47
+ id,
48
+ style,
49
+ className,
50
+ isTitle,
51
+ title,
52
+ titleLocation,
53
+ dataSource,
54
+ setColor,
55
+ filterData,
56
+ xField,
57
+ xStatistics,
58
+ groupKey,
59
+ groupKeyTimeSpan,
60
+ xIsCountEmpty,
61
+ yField,
62
+ isLegend,
63
+ legend,
64
+ legend2,
65
+ isXaxisName,
66
+ xAxisName,
67
+ isXaxisAxisLabelShow,
68
+ isXaxisAxisTickShow,
69
+ isXaxisAxisLabelRotate,
70
+ isYAxisSplitlineLinestyleWidth,
71
+ yAxisSplitlineLinestyleType,
72
+ yAxisMax,
73
+ yAxisMin,
74
+ isYAxisName,
75
+ yAxisName,
76
+ isSeriesShowSymbol,
77
+ isYAxisShow,
78
+ isUnit,
79
+ unit,
80
+ decimalDigits,
81
+ suffix,
82
+ } = opts;
83
+ const domRef = useRef<HTMLDivElement>();
84
+ useWedaChart(domRef, EchartBar, {
85
+ directionType,
86
+ isPile,
87
+ setColor,
88
+ isTitle,
89
+ title,
90
+ titleLocation,
91
+ dataSource,
92
+ filterData,
93
+ xField,
94
+ xStatistics,
95
+ groupKey,
96
+ groupKeyTimeSpan,
97
+ xIsCountEmpty,
98
+ yField,
99
+ isLegend,
100
+ legend,
101
+ legend2,
102
+ isXaxisName,
103
+ xAxisName,
104
+ isXaxisAxisLabelShow,
105
+ isXaxisAxisTickShow,
106
+ isXaxisAxisLabelRotate,
107
+ isYAxisSplitlineLinestyleWidth,
108
+ yAxisSplitlineLinestyleType,
109
+ yAxisMax,
110
+ yAxisMin,
111
+ isYAxisName,
112
+ yAxisName,
113
+ isSeriesShowSymbol,
114
+ isYAxisShow,
115
+ isUnit,
116
+ unit,
117
+ decimalDigits,
118
+ suffix,
119
+ });
120
+ const inlineStyle = {
121
+ height: '380px',
122
+ width: '100%',
123
+ backgroundColor: '#ffffff',
124
+ ...style,
125
+ };
126
+ return (
127
+ <div
128
+ id={id}
129
+ data-testid="bar"
130
+ ref={domRef}
131
+ style={inlineStyle}
132
+ className={classNames({
133
+ 'weda-ui-chart-bar': true,
134
+ 'echart-wrapper-canvas': true,
135
+ 'echart-dark-body': true,
136
+ [className]: className,
137
+ })}
138
+ />
139
+ );
140
+ }
@@ -0,0 +1,49 @@
1
+ /** 根据当前环境获取 pc 上配置,还是 H5上的配置 */
2
+ const getConfig = () => {
3
+ const barH5 = {
4
+ xAxis: {
5
+ name: 'X轴名',
6
+ nameTextStyle: { align: 'center' },
7
+ axisLabel: {
8
+ show: true, // 刻度标签显示
9
+ rotate: 0, // 字体倾斜
10
+ },
11
+ axisTick: {
12
+ show: true, // 刻度显示
13
+ },
14
+ inverse:false,
15
+ type: 'category',
16
+ data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
17
+ },
18
+ yAxis: {
19
+ type: 'value',
20
+ show: true, // y轴刻度线
21
+ name: 'Y轴名',
22
+ splitLine: {
23
+ lineStyle: {
24
+ width: 1, // 网格线宽度,为0则不显示
25
+ type: 'dashed', //solid,dashed,dotted
26
+ },
27
+ },
28
+ axisLabel: { padding: [0, -10, 0, 0] },
29
+ min: null,
30
+ max: null,
31
+ },
32
+ series: [
33
+ {
34
+ name: 'demo',
35
+ data: [0, 932, 901, 934, 1290, 1330, 1320],
36
+ type: 'bar',
37
+ itemStyle: {
38
+ color: 'green',
39
+ },
40
+ showSymbol: true, //是否显示线条上数据标签
41
+ label: {
42
+ show: true, // 显示线条上的数据
43
+ },
44
+ },
45
+ ],
46
+ };
47
+ return barH5;
48
+ };
49
+ export default getConfig;
@@ -0,0 +1,16 @@
1
+ /** 根据当前环境获取 pc 上配置,还是 H5上的配置 */
2
+ const getConfig = () => {
3
+ const globalH5 = {
4
+ title: {
5
+ text: 'demo实例',
6
+ show: true,
7
+ left: '50%',
8
+ },
9
+ legend: {
10
+ top: '88%',
11
+ },
12
+ tooltip: {},
13
+ };
14
+ return globalH5;
15
+ };
16
+ export default getConfig;
@@ -0,0 +1,50 @@
1
+ /** 根据当前环境获取 pc 上配置,还是 H5上的配置 */
2
+ const getConfig = () => {
3
+ const lineH5 = {
4
+ xAxis: {
5
+ name: 'X轴名',
6
+ nameTextStyle: { align: 'center' },
7
+ axisLabel: {
8
+ show: true, // 刻度标签显示
9
+ rotate: 0, // 字体倾斜
10
+ },
11
+ axisTick: {
12
+ show: true, // 刻度显示
13
+ },
14
+ type: 'category',
15
+ data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
16
+ },
17
+ yAxis: {
18
+ type: 'value',
19
+ show: true, // y轴刻度线
20
+ name: 'Y轴名',
21
+ splitLine: {
22
+ lineStyle: {
23
+ width: 1, // 网格线宽度,为0则不显示
24
+ type: 'dashed', //solid,dashed,dotted
25
+ },
26
+ },
27
+ axisLabel: {
28
+ padding: [0, -10, 0, 0],
29
+ },
30
+ min: null,
31
+ max: null,
32
+ },
33
+ series: [
34
+ {
35
+ name: 'demo',
36
+ connectNulls: true,
37
+ data: [820, 932, 901, 934, 1290, 1330, 1320],
38
+ type: 'line',
39
+ smooth: true,
40
+ showSymbol: true, //是否显示线条上数据标签
41
+ label: {
42
+ show: true, // 显示线条上的数据
43
+ },
44
+ },
45
+ ],
46
+ };
47
+ return lineH5;
48
+ };
49
+
50
+ module.exports = getConfig;
@@ -0,0 +1,37 @@
1
+ /** 根据当前环境获取 pc 上配置,还是 H5上的配置 */
2
+ const getConfig = () => {
3
+ const pieH5 = {
4
+ series: [
5
+ {
6
+ // name: 'demo',
7
+ data: [
8
+ { value: 820, name: '实例数据1', tooltip: {}, itemStyle: {} },
9
+ { value: 932, name: '实例数据2', tooltip: {}, itemStyle: {} },
10
+ { value: 901, name: '实例数据3', tooltip: {}, itemStyle: {} },
11
+ { value: 934, name: '实例数据4', tooltip: {}, itemStyle: {} },
12
+ { value: 1290, name: '实例数据5', tooltip: {}, itemStyle: {} },
13
+ ],
14
+ label: {
15
+ show: true,
16
+ position: 'inner',
17
+ normal: {
18
+ formatter: null,
19
+ position: 'inner',
20
+ },
21
+ },
22
+ type: 'pie',
23
+ radius: '70%',
24
+ emphasis: {
25
+ itemStyle: {
26
+ shadowBlur: 10,
27
+ shadowOffsetX: 0,
28
+ shadowColor: 'rgba(0, 0, 0, 0.5)',
29
+ },
30
+ },
31
+ },
32
+ ],
33
+ };
34
+
35
+ return pieH5;
36
+ };
37
+ export default getConfig;