@cloudbase/weda-ui 0.2.14 → 0.2.15

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 (233) hide show
  1. package/README.md +7 -2
  2. package/package.json +32 -10
  3. package/src/configs/components/image.json +4 -0
  4. package/src/mp/components/container/index.js +4 -0
  5. package/src/mp/components/image/index.js +54 -52
  6. package/src/mp/components/text/index.wxss +6 -6
  7. package/src/web/components/button/index.tsx +1 -1
  8. package/src/web/components/form/input/index.css +5 -3
  9. package/src/web/components/form/input/index.tsx +1 -0
  10. package/src/web/components/image/image.tsx +107 -93
  11. package/src/web/components/image/index.tsx +1 -1
  12. package/src/web/components/index.js +1 -1
  13. package/src/web/components/swiper/index.css +4 -0
  14. package/src/web/components/swiper/index.tsx +9 -4
  15. package/src/web/components/uploaderFileView/index.jsx +3 -3
  16. package/src/web/wedatheme/.code.yml +0 -16
  17. package/src/web/wedatheme/.editorconfig +0 -9
  18. package/src/web/wedatheme/.eslintrc +0 -20
  19. package/src/web/wedatheme/.git +0 -1
  20. package/src/web/wedatheme/.gitignore +0 -5
  21. package/src/web/wedatheme/.npmrc +0 -1
  22. package/src/web/wedatheme/.orange-ci.yml +0 -55
  23. package/src/web/wedatheme/.vscode/extensions.json +0 -3
  24. package/src/web/wedatheme/.vscode/settings.json +0 -11
  25. package/src/web/wedatheme/README.md +0 -50
  26. package/src/web/wedatheme/i18n/README.md +0 -4
  27. package/src/web/wedatheme/i18n/translation/index.js +0 -10
  28. package/src/web/wedatheme/i18n/translation/zh.js +0 -15
  29. package/src/web/wedatheme/jsconfig.json +0 -15
  30. package/src/web/wedatheme/mock/app.js +0 -42
  31. package/src/web/wedatheme/mock/history-context.js +0 -8
  32. package/src/web/wedatheme/mock/index.js +0 -3
  33. package/src/web/wedatheme/mock/layout/AppLayout.jsx +0 -28
  34. package/src/web/wedatheme/mock/layout/MenuWithRouter.jsx +0 -50
  35. package/src/web/wedatheme/mock/layout/index.js +0 -1
  36. package/src/web/wedatheme/package-lock.json +0 -14335
  37. package/src/web/wedatheme/package.json +0 -61
  38. package/src/web/wedatheme/public/index.html +0 -19
  39. package/src/web/wedatheme/src/app.js +0 -22
  40. package/src/web/wedatheme/src/components/README.md +0 -4
  41. package/src/web/wedatheme/src/configs/menu.js +0 -9
  42. package/src/web/wedatheme/src/routes/wedatheme-index/Component.jsx +0 -402
  43. package/src/web/wedatheme/src/routes/wedatheme-index/Form.jsx +0 -729
  44. package/src/web/wedatheme/src/routes/wedatheme-index/FormItem.jsx +0 -18
  45. package/src/web/wedatheme/src/routes/wedatheme-index/WedathemeIndex.jsx +0 -1276
  46. package/src/web/wedatheme/src/routes/wedatheme-index/index.js +0 -1
  47. package/src/web/wedatheme/src/routes/weui2td/WEUI2TD.jsx +0 -3
  48. package/src/web/wedatheme/src/routes/weui2td/index.js +0 -1
  49. package/src/web/wedatheme/src/styles/_btn.scss +0 -24
  50. package/src/web/wedatheme/src/styles/_icon.scss +0 -653
  51. package/src/web/wedatheme/src/styles/_map.scss +0 -12
  52. package/src/web/wedatheme/src/styles/_middle.scss +0 -340
  53. package/src/web/wedatheme/src/styles/_upload.scss +0 -47
  54. package/src/web/wedatheme/src/styles/assets/alert-close.svg +0 -3
  55. package/src/web/wedatheme/src/styles/assets/and.svg +0 -12
  56. package/src/web/wedatheme/src/styles/assets/arrowdown--line.svg +0 -12
  57. package/src/web/wedatheme/src/styles/assets/arrowdown.svg +0 -12
  58. package/src/web/wedatheme/src/styles/assets/arrowleft--line.svg +0 -12
  59. package/src/web/wedatheme/src/styles/assets/arrowleft.svg +0 -12
  60. package/src/web/wedatheme/src/styles/assets/arrowright--line.svg +0 -12
  61. package/src/web/wedatheme/src/styles/assets/arrowright-blue--line.svg +0 -12
  62. package/src/web/wedatheme/src/styles/assets/arrowright.svg +0 -12
  63. package/src/web/wedatheme/src/styles/assets/arrowup--line.svg +0 -12
  64. package/src/web/wedatheme/src/styles/assets/arrowup.svg +0 -12
  65. package/src/web/wedatheme/src/styles/assets/bell-warning.svg +0 -3
  66. package/src/web/wedatheme/src/styles/assets/btnback.svg +0 -12
  67. package/src/web/wedatheme/src/styles/assets/calendar.svg +0 -12
  68. package/src/web/wedatheme/src/styles/assets/chartcolumn-1.svg +0 -12
  69. package/src/web/wedatheme/src/styles/assets/chartcolumn.svg +0 -12
  70. package/src/web/wedatheme/src/styles/assets/chartline-1.svg +0 -9
  71. package/src/web/wedatheme/src/styles/assets/chartline.svg +0 -9
  72. package/src/web/wedatheme/src/styles/assets/chartpie-1.svg +0 -12
  73. package/src/web/wedatheme/src/styles/assets/chartpie.svg +0 -12
  74. package/src/web/wedatheme/src/styles/assets/check-1.svg +0 -8
  75. package/src/web/wedatheme/src/styles/assets/check-2.svg +0 -1
  76. package/src/web/wedatheme/src/styles/assets/check.svg +0 -8
  77. package/src/web/wedatheme/src/styles/assets/close-1.svg +0 -8
  78. package/src/web/wedatheme/src/styles/assets/close.svg +0 -8
  79. package/src/web/wedatheme/src/styles/assets/consult.svg +0 -8
  80. package/src/web/wedatheme/src/styles/assets/convertip--blue.svg +0 -12
  81. package/src/web/wedatheme/src/styles/assets/convertip.svg +0 -12
  82. package/src/web/wedatheme/src/styles/assets/copy.svg +0 -12
  83. package/src/web/wedatheme/src/styles/assets/cur-active.svg +0 -12
  84. package/src/web/wedatheme/src/styles/assets/cur.svg +0 -12
  85. package/src/web/wedatheme/src/styles/assets/daily.svg +0 -13
  86. package/src/web/wedatheme/src/styles/assets/database.svg +0 -12
  87. package/src/web/wedatheme/src/styles/assets/datasheet.svg +0 -12
  88. package/src/web/wedatheme/src/styles/assets/delete-white.svg +0 -8
  89. package/src/web/wedatheme/src/styles/assets/delete.svg +0 -8
  90. package/src/web/wedatheme/src/styles/assets/detail.svg +0 -13
  91. package/src/web/wedatheme/src/styles/assets/dismiss.svg +0 -8
  92. package/src/web/wedatheme/src/styles/assets/download.svg +0 -12
  93. package/src/web/wedatheme/src/styles/assets/drop.svg +0 -15
  94. package/src/web/wedatheme/src/styles/assets/email-error.svg +0 -14
  95. package/src/web/wedatheme/src/styles/assets/email-warning.svg +0 -12
  96. package/src/web/wedatheme/src/styles/assets/email.svg +0 -14
  97. package/src/web/wedatheme/src/styles/assets/emailv.svg +0 -12
  98. package/src/web/wedatheme/src/styles/assets/error-1.svg +0 -8
  99. package/src/web/wedatheme/src/styles/assets/error-filled.svg +0 -3
  100. package/src/web/wedatheme/src/styles/assets/error.svg +0 -8
  101. package/src/web/wedatheme/src/styles/assets/externallink.svg +0 -12
  102. package/src/web/wedatheme/src/styles/assets/favorable.svg +0 -9
  103. package/src/web/wedatheme/src/styles/assets/filter.svg +0 -12
  104. package/src/web/wedatheme/src/styles/assets/firstpage.svg +0 -13
  105. package/src/web/wedatheme/src/styles/assets/folderclose.svg +0 -8
  106. package/src/web/wedatheme/src/styles/assets/folderopen.svg +0 -8
  107. package/src/web/wedatheme/src/styles/assets/fullscreenquit.svg +0 -12
  108. package/src/web/wedatheme/src/styles/assets/fullsreen.svg +0 -12
  109. package/src/web/wedatheme/src/styles/assets/globe-gray.svg +0 -12
  110. package/src/web/wedatheme/src/styles/assets/guide.svg +0 -9
  111. package/src/web/wedatheme/src/styles/assets/help.svg +0 -8
  112. package/src/web/wedatheme/src/styles/assets/hide.svg +0 -8
  113. package/src/web/wedatheme/src/styles/assets/info.svg +0 -8
  114. package/src/web/wedatheme/src/styles/assets/infoblue-1.svg +0 -8
  115. package/src/web/wedatheme/src/styles/assets/infoblue-filled.svg +0 -3
  116. package/src/web/wedatheme/src/styles/assets/infoblue.svg +0 -8
  117. package/src/web/wedatheme/src/styles/assets/jump-black.svg +0 -12
  118. package/src/web/wedatheme/src/styles/assets/jump.svg +0 -12
  119. package/src/web/wedatheme/src/styles/assets/lastpage.svg +0 -13
  120. package/src/web/wedatheme/src/styles/assets/loading.svg +0 -12
  121. package/src/web/wedatheme/src/styles/assets/local.svg +0 -10
  122. package/src/web/wedatheme/src/styles/assets/menu-fold-white.svg +0 -6
  123. package/src/web/wedatheme/src/styles/assets/menu-fold.svg +0 -6
  124. package/src/web/wedatheme/src/styles/assets/minus.svg +0 -12
  125. package/src/web/wedatheme/src/styles/assets/monitor.svg +0 -12
  126. package/src/web/wedatheme/src/styles/assets/more.svg +0 -8
  127. package/src/web/wedatheme/src/styles/assets/multi-line.svg +0 -12
  128. package/src/web/wedatheme/src/styles/assets/news.svg +0 -3
  129. package/src/web/wedatheme/src/styles/assets/not.svg +0 -12
  130. package/src/web/wedatheme/src/styles/assets/notice.svg +0 -8
  131. package/src/web/wedatheme/src/styles/assets/pencil.svg +0 -12
  132. package/src/web/wedatheme/src/styles/assets/pending-1.svg +0 -8
  133. package/src/web/wedatheme/src/styles/assets/pending-gray.svg +0 -8
  134. package/src/web/wedatheme/src/styles/assets/pending.svg +0 -8
  135. package/src/web/wedatheme/src/styles/assets/percent-blue.svg +0 -16
  136. package/src/web/wedatheme/src/styles/assets/percent.svg +0 -16
  137. package/src/web/wedatheme/src/styles/assets/phone-error.svg +0 -11
  138. package/src/web/wedatheme/src/styles/assets/phone-warning.svg +0 -9
  139. package/src/web/wedatheme/src/styles/assets/phone.svg +0 -12
  140. package/src/web/wedatheme/src/styles/assets/phonev.svg +0 -9
  141. package/src/web/wedatheme/src/styles/assets/plus.svg +0 -12
  142. package/src/web/wedatheme/src/styles/assets/qq.svg +0 -11
  143. package/src/web/wedatheme/src/styles/assets/realname.svg +0 -8
  144. package/src/web/wedatheme/src/styles/assets/realnamev.svg +0 -9
  145. package/src/web/wedatheme/src/styles/assets/refresh-blue.svg +0 -12
  146. package/src/web/wedatheme/src/styles/assets/refresh.svg +0 -12
  147. package/src/web/wedatheme/src/styles/assets/relationship-1.svg +0 -12
  148. package/src/web/wedatheme/src/styles/assets/relationship.svg +0 -12
  149. package/src/web/wedatheme/src/styles/assets/remind.svg +0 -8
  150. package/src/web/wedatheme/src/styles/assets/search.svg +0 -8
  151. package/src/web/wedatheme/src/styles/assets/setting.svg +0 -12
  152. package/src/web/wedatheme/src/styles/assets/shopcart.svg +0 -8
  153. package/src/web/wedatheme/src/styles/assets/show.svg +0 -8
  154. package/src/web/wedatheme/src/styles/assets/sort.svg +0 -12
  155. package/src/web/wedatheme/src/styles/assets/sortdown.svg +0 -12
  156. package/src/web/wedatheme/src/styles/assets/sortup.svg +0 -12
  157. package/src/web/wedatheme/src/styles/assets/success-1.svg +0 -8
  158. package/src/web/wedatheme/src/styles/assets/success-filled.svg +0 -3
  159. package/src/web/wedatheme/src/styles/assets/success.svg +0 -8
  160. package/src/web/wedatheme/src/styles/assets/table-1.svg +0 -12
  161. package/src/web/wedatheme/src/styles/assets/table.svg +0 -12
  162. package/src/web/wedatheme/src/styles/assets/tag.svg +0 -12
  163. package/src/web/wedatheme/src/styles/assets/time.svg +0 -12
  164. package/src/web/wedatheme/src/styles/assets/transfer.svg +0 -8
  165. package/src/web/wedatheme/src/styles/assets/trenddown.svg +0 -12
  166. package/src/web/wedatheme/src/styles/assets/trendup.svg +0 -12
  167. package/src/web/wedatheme/src/styles/assets/viewgrid.svg +0 -12
  168. package/src/web/wedatheme/src/styles/assets/viewlist.svg +0 -12
  169. package/src/web/wedatheme/src/styles/assets/warning-1.svg +0 -8
  170. package/src/web/wedatheme/src/styles/assets/warning-filled.svg +0 -3
  171. package/src/web/wedatheme/src/styles/assets/warning.svg +0 -8
  172. package/src/web/wedatheme/src/styles/assets/wechat-error.svg +0 -14
  173. package/src/web/wedatheme/src/styles/assets/wechat-warning.svg +0 -12
  174. package/src/web/wedatheme/src/styles/assets/wechat.svg +0 -12
  175. package/src/web/wedatheme/src/styles/assets/wechatv.svg +0 -12
  176. package/src/web/wedatheme/src/styles/assets/zoom-in-white.svg +0 -4
  177. package/src/web/wedatheme/src/styles/assets/zoom-in.svg +0 -4
  178. package/src/web/wedatheme/src/styles/assets/zoom-out-white.svg +0 -4
  179. package/src/web/wedatheme/src/styles/assets/zoom-out.svg +0 -4
  180. package/src/web/wedatheme/src/styles/index.scss +0 -18
  181. package/src/web/wedatheme/src/styles/main.css +0 -166
  182. package/src/web/wedatheme/src/styles/theme/_alert.scss +0 -73
  183. package/src/web/wedatheme/src/styles/theme/_badge.scss +0 -38
  184. package/src/web/wedatheme/src/styles/theme/_blank-page-v2.scss +0 -7
  185. package/src/web/wedatheme/src/styles/theme/_breadcrumb.scss +0 -8
  186. package/src/web/wedatheme/src/styles/theme/_bubble.scss +0 -24
  187. package/src/web/wedatheme/src/styles/theme/_button.scss +0 -212
  188. package/src/web/wedatheme/src/styles/theme/_card.scss +0 -12
  189. package/src/web/wedatheme/src/styles/theme/_cascader.scss +0 -43
  190. package/src/web/wedatheme/src/styles/theme/_checkbox&radio.scss +0 -83
  191. package/src/web/wedatheme/src/styles/theme/_datepicker.scss +0 -36
  192. package/src/web/wedatheme/src/styles/theme/_dialog.scss +0 -39
  193. package/src/web/wedatheme/src/styles/theme/_divider.scss +0 -1
  194. package/src/web/wedatheme/src/styles/theme/_drawer.scss +0 -15
  195. package/src/web/wedatheme/src/styles/theme/_dropdown.scss +0 -53
  196. package/src/web/wedatheme/src/styles/theme/_form.scss +0 -38
  197. package/src/web/wedatheme/src/styles/theme/_icon.scss +0 -0
  198. package/src/web/wedatheme/src/styles/theme/_input&textarea&select.scss +0 -85
  199. package/src/web/wedatheme/src/styles/theme/_inputnumber.scss +0 -16
  200. package/src/web/wedatheme/src/styles/theme/_link.scss +0 -14
  201. package/src/web/wedatheme/src/styles/theme/_list.scss +0 -41
  202. package/src/web/wedatheme/src/styles/theme/_metrics-board.scss +0 -14
  203. package/src/web/wedatheme/src/styles/theme/_notification.scss +0 -27
  204. package/src/web/wedatheme/src/styles/theme/_pagination.scss +0 -22
  205. package/src/web/wedatheme/src/styles/theme/_popconfirm.scss +0 -4
  206. package/src/web/wedatheme/src/styles/theme/_progress.scss +0 -28
  207. package/src/web/wedatheme/src/styles/theme/_region-select.scss +0 -17
  208. package/src/web/wedatheme/src/styles/theme/_search.scss +0 -18
  209. package/src/web/wedatheme/src/styles/theme/_segment.scss +0 -69
  210. package/src/web/wedatheme/src/styles/theme/_slider.scss +0 -18
  211. package/src/web/wedatheme/src/styles/theme/_status.scss +0 -4
  212. package/src/web/wedatheme/src/styles/theme/_steps.scss +0 -68
  213. package/src/web/wedatheme/src/styles/theme/_switch.scss +0 -11
  214. package/src/web/wedatheme/src/styles/theme/_table.scss +0 -44
  215. package/src/web/wedatheme/src/styles/theme/_tabs.scss +0 -44
  216. package/src/web/wedatheme/src/styles/theme/_tag-search.scss +0 -9
  217. package/src/web/wedatheme/src/styles/theme/_tag.scss +0 -48
  218. package/src/web/wedatheme/src/styles/theme/_timeline.scss +0 -0
  219. package/src/web/wedatheme/src/styles/theme/_toast.scss +0 -3
  220. package/src/web/wedatheme/src/styles/theme/_transfer.scss +0 -9
  221. package/src/web/wedatheme/src/styles/theme/_tree.scss +0 -11
  222. package/src/web/wedatheme/src/styles/theme/_upload.scss +0 -14
  223. package/src/web/wedatheme/src/styles/theme/_variables.scss +0 -140
  224. package/src/web/wedatheme/src/styles/theme/index.scss +0 -91
  225. package/src/web/wedatheme/style-package/README.md +0 -31
  226. package/src/web/wedatheme/style-package/ef6fa527e24e354765d806b826b41391.svg +0 -627
  227. package/src/web/wedatheme/style-package/index.css +0 -3
  228. package/src/web/wedatheme/style-package/package.json +0 -15
  229. package/src/web/wedatheme/tea.config.js +0 -66
  230. package/src/web/wedatheme/webpack/css.config.js +0 -114
  231. package/src/web/wedatheme/webpack/plugins/css-package-plugin.js +0 -23
  232. package/src/web/wedatheme/webpack/plugins/inject-assets-plugin.js +0 -32
  233. package/src/web/wedatheme/webpack/plugins/package-json-plugin.js +0 -66
package/README.md CHANGED
@@ -18,6 +18,7 @@
18
18
  .
19
19
  ├── .storybook # storybook 配置目录
20
20
  ├── cloudbaserc.json # 组件库配置
21
+ ├── lowcode-comps # 低码组件内容
21
22
  └── src
22
23
     ├── test # 测试目录
23
24
     ├── configs # 组件类型申明目录
@@ -43,10 +44,12 @@
43
44
 
44
45
  组件库开发前置依赖:
45
46
 
46
- 1. 进入组件库更目录,安装依赖: `npm i` or `yarn`,使用 `npm` 安装依赖可能会有依赖冲突问题,可以使用 `npm i --legacy-peer-deps` 来解决。
47
+ 1. 进入组件库根目录,安装依赖: `npx npm@6 i` 使用 `npm@6` 安装依赖可能会有依赖冲突问题,可以使用 `npm i --legacy-peer-deps` 来解决。用npm@6 是为了跟构建保持一致
47
48
  2. 安装云开发命令行工具:`npm i -g @cloudbase/cli` or `yarn global add @cloudbase/cli`
48
49
  3. 登录云开发命令行:`tcb login` 并输入密码
49
- 4. 去腾讯云微搭低码控制台创建组件库
50
+ 4. 去腾讯云微搭低码控制台创建组件库,库名应该和cloudbaserc.json 中一致
51
+
52
+ > 下面的内容是源码组件库的开发文档,低码组件库开发请查看[lowcode-comps下的文档](lowcode-comps/README.md)
50
53
 
51
54
  ### 编写组件
52
55
 
@@ -289,6 +292,8 @@ export function handleEvent({ event, data }) {
289
292
 
290
293
  对于小程序组件,我们不能直接在浏览器中去预览调试。组件编写完成后需要运行 `tcb lowcode debug` 打开组件编辑器,通过组件编辑器中 IDE 预览功能来进行微信开发者工具和手机的真实预览。
291
294
 
295
+ - 小程序调试需要从编辑器请求中拷包本地构建生成小程序代码,可以参考 http://tapd.oa.com/TCB_new/markdown_wikis/show/#1220422223002075389
296
+
292
297
  ### 组件测试
293
298
 
294
299
  我们建议你为你的定义组件编写必要的测试。我们集成进了 jest 和 小程序模拟器来协助组件的多端测试。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/weda-ui",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "main": "./src/index.js",
5
5
  "module": "./src/index",
6
6
  "miniprogram": "mpdist",
@@ -20,7 +20,20 @@
20
20
  "build:cli": "tcb lowcode build",
21
21
  "build:analyze": "cross-env ANALYZER=1 tcb lowcode build",
22
22
  "test": "jest test --env=jsdom",
23
+ "test:jest": "jest test --env=jsdom",
23
24
  "test:watch": "jest test --env=jsdom --watch",
25
+ "test:e2e": "npx cypress run-ct",
26
+ "test:all": "npm run test && npm run test:e2e",
27
+ "e2e": "npx cypress open-ct",
28
+ "pretest:all": "rimraf .nyc_output || true",
29
+ "posttest:all": "npm run report:combined",
30
+ "mkdir:reports": "mkdir reports || true",
31
+ "precopy:reports": "npm run mkdir:reports",
32
+ "copy:reports": "cp cypress-coverage/coverage-final.json reports/from-cypress.json && cp jest-coverage/coverage-final.json reports/from-jest.json",
33
+ "precombine:reports": "npm run copy:reports && mkdir .nyc_output || true",
34
+ "combine:reports": "npx nyc merge reports && mv coverage.json .nyc_output/out.json",
35
+ "prereport:combined": "npm run combine:reports",
36
+ "report:combined": "npx nyc report --reporter lcov --reporter text --reporter html --report-dir coverage",
24
37
  "storybook": "start-storybook -p 6006",
25
38
  "build-storybook": "build-storybook",
26
39
  "lint": "eslint src --fix",
@@ -42,6 +55,7 @@
42
55
  "@cloudbase/ui-react": "^1.0.4",
43
56
  "@loadable/component": "^5.15.2",
44
57
  "@react-hookz/web": "^12.0.0",
58
+ "@tcwd/style-wedatheme": "^1.0.0",
45
59
  "@use-gesture/react": "^10.2.4",
46
60
  "braft-editor": "^2.3.9",
47
61
  "braft-utils": "^3.0.12",
@@ -65,6 +79,10 @@
65
79
  "@cloudbase/lowcode-build-dependence": "^0.9.0",
66
80
  "@commitlint/cli": "^16.0.2",
67
81
  "@commitlint/config-conventional": "^13.2.0",
82
+ "@cypress/code-coverage": "^3.9.12",
83
+ "@cypress/react": "^5.12.1",
84
+ "@cypress/webpack-dev-server": "^1.8.0",
85
+ "@istanbuljs/nyc-config-typescript": "^1.0.2",
68
86
  "@size-limit/preset-big-lib": "^7.0.5",
69
87
  "@storybook/addon-actions": "^6.4.9",
70
88
  "@storybook/addon-essentials": "^6.4.9",
@@ -80,9 +98,12 @@
80
98
  "@typescript-eslint/parser": "^5.9.0",
81
99
  "babel-jest": "^27.4.5",
82
100
  "babel-loader": "^8.2.3",
101
+ "babel-plugin-istanbul": "^6.1.1",
83
102
  "cross-env": "^7.0.3",
103
+ "cypress": "^9.3.1",
84
104
  "eslint": "^8.4.1",
85
105
  "eslint-config-tencent": "^1.0.2",
106
+ "eslint-plugin-cypress": "^2.12.1",
86
107
  "eslint-plugin-jest": "^25.3.0",
87
108
  "eslint-plugin-react": "^7.27.1",
88
109
  "husky": "^7.0.4",
@@ -93,20 +114,16 @@
93
114
  "nano-staged": "^0.5.0",
94
115
  "react": "^17.0.2",
95
116
  "react-dom": "^17.0.2",
117
+ "react-scripts": "^4.0.3",
96
118
  "react-test-renderer": "^17.0.2",
97
119
  "rimraf": "^3.0.2",
98
120
  "size-limit": "^7.0.5",
99
121
  "ts-jest": "^27.1.1",
100
122
  "ts-loader": "^8.2.0",
101
123
  "typescript": "^4.5.4",
102
- "webpack": "4.44.2"
103
- },
104
- "babel": {
105
- "presets": [
106
- "@babel/preset-env",
107
- "@babel/preset-react",
108
- "@babel/preset-typescript"
109
- ]
124
+ "webpack": "4.44.2",
125
+ "webpack-cli": "^4.9.1",
126
+ "webpack-dev-server": "^4.7.3"
110
127
  },
111
128
  "nano-staged": {
112
129
  "*.{js,jsx,ts,tsx}": [
@@ -119,5 +136,10 @@
119
136
  "webpack": false,
120
137
  "limit": "700 KB"
121
138
  }
122
- ]
139
+ ],
140
+ "nyc": {
141
+ "extends": "@istanbuljs/nyc-config-typescript",
142
+ "excludeAfterRemap": false,
143
+ "report-dir": "cypress-coverage"
144
+ }
123
145
  }
@@ -149,6 +149,10 @@
149
149
  {
150
150
  "name": "error",
151
151
  "title": "加载失败"
152
+ },
153
+ {
154
+ "name": "tap",
155
+ "title": "点击"
152
156
  }
153
157
  ],
154
158
  "meta": {
@@ -3,6 +3,10 @@ Component({
3
3
  virtualHost: true,
4
4
  },
5
5
  properties: {
6
+ id: {
7
+ type: String,
8
+ value: '',
9
+ },
6
10
  className: {
7
11
  type: String,
8
12
  value: '',
@@ -37,76 +37,78 @@ Component({
37
37
  value: false,
38
38
  },
39
39
  imgPreview: {
40
- type: Boolean,
41
- value: false
40
+ type: Boolean,
41
+ value: false,
42
42
  },
43
43
  maskClosable: {
44
- type: Boolean,
45
- value: true
46
- }
44
+ type: Boolean,
45
+ value: true,
46
+ },
47
47
  },
48
48
  methods: {
49
- load: function(e) {
49
+ load: function (e) {
50
50
  this.triggerEvent('error', e.detail);
51
51
  this.setData({
52
52
  realHeight: e.detail.height,
53
- realWidth: e.detail.width
53
+ realWidth: e.detail.width,
54
54
  });
55
55
  },
56
- error: function(e) {
56
+ error: function (e) {
57
57
  this.setData({
58
58
  isError: true,
59
- clsx: this.properties.className + 'weda-image-error'
59
+ clsx: this.properties.className + 'weda-image-error',
60
60
  });
61
61
  this.triggerEvent('error', e.detail);
62
62
  },
63
- onImgTap: function() {
64
- if(this.properties.imgPreview && !this.data.isError) {
65
- // 计算图片预览展示高度
66
- const {windowWidth, windowHeight} = wx.getSystemInfoSync();
67
- const showHeight = windowWidth / (this.data.realWidth / this.data.realHeight);
68
- const offsetHeight = windowHeight / 2 - (showHeight / 2);
69
- this.setData({
70
- showImg: true,
71
- zoom: 1,
72
- previewTranslateY: 0,
73
- previewTranslateX: 0,
74
- showHeight,
75
- offsetHeight
76
- });
77
- }
63
+ onImgTap: function (e) {
64
+ if (this.properties.imgPreview && !this.data.isError) {
65
+ // 计算图片预览展示高度
66
+ const { windowWidth, windowHeight } = wx.getSystemInfoSync();
67
+ const showHeight =
68
+ windowWidth / (this.data.realWidth / this.data.realHeight);
69
+ const offsetHeight = windowHeight / 2 - showHeight / 2;
70
+ this.setData({
71
+ showImg: true,
72
+ zoom: 1,
73
+ previewTranslateY: 0,
74
+ previewTranslateX: 0,
75
+ showHeight,
76
+ offsetHeight,
77
+ });
78
+ }
79
+ this.triggerEvent('tap', e.detail);
78
80
  },
79
- onPinch: function(ev) {
81
+ onPinch: function (ev) {
80
82
  let zoom = ev.detail.zoom;
81
83
  // zoom = this.data.zoom * zoom;
82
- if(zoom > 5) {
84
+ if (zoom > 5) {
83
85
  zoom = 5;
84
86
  }
85
- if(zoom < 0.6) {
87
+ if (zoom < 0.6) {
86
88
  zoom = 0.6;
87
89
  }
88
90
  this.setData({
89
- zoom
91
+ zoom,
90
92
  });
91
93
  },
92
- onPressMove: function(ev) {
94
+ onPressMove: function (ev) {
93
95
  this.setData({
94
96
  previewTranslateX: this.data.previewTranslateX + ev.detail.deltaX,
95
- previewTranslateY: this.data.previewTranslateY + ev.detail.deltaY
97
+ previewTranslateY: this.data.previewTranslateY + ev.detail.deltaY,
96
98
  });
97
99
  },
98
- onMaskClick: function() {
99
- if(this.properties.maskClosable) {
100
- this.setData({
101
- showImg: false
102
- });
103
- }
104
- },
105
- onCloseClick: function() {
100
+ onMaskClick: function () {
101
+ if (this.properties.maskClosable) {
106
102
  this.setData({
107
- showImg: false
103
+ showImg: false,
108
104
  });
109
- }
105
+ }
106
+ },
107
+ onCloseClick: function () {
108
+ this.setData({
109
+ showImg: false,
110
+ });
111
+ },
110
112
  },
111
113
  data: {
112
114
  showImg: false,
@@ -118,13 +120,13 @@ Component({
118
120
  previewTranslateX: 0,
119
121
  previewTranslateY: 0,
120
122
  realHeight: 0,
121
- realWidth: 0
123
+ realWidth: 0,
122
124
  },
123
125
  observers: {
124
- className: function() {
126
+ className: function () {
125
127
  const className = this.properties.className;
126
128
  this.setData({
127
- clsx: className
129
+ clsx: className,
128
130
  });
129
131
  },
130
132
  src: function () {
@@ -147,35 +149,35 @@ Component({
147
149
  });
148
150
  }
149
151
  },
150
- 'fit, mode': function(fit, mode) {
151
- if(fit) {
152
- switch(fit) {
152
+ 'fit, mode': function (fit, mode) {
153
+ if (fit) {
154
+ switch (fit) {
153
155
  case 'cover':
154
156
  this.setData({
155
- imgMode: 'aspectFill'
157
+ imgMode: 'aspectFill',
156
158
  });
157
159
  break;
158
160
  case 'contain':
159
161
  this.setData({
160
- imgMode: 'aspectFit'
162
+ imgMode: 'aspectFit',
161
163
  });
162
164
  break;
163
165
  case 'fill':
164
166
  this.setData({
165
- imgMode: 'scaleToFill'
167
+ imgMode: 'scaleToFill',
166
168
  });
167
169
  break;
168
170
  default:
169
171
  this.setData({
170
- imgMode: 'scaleToFill'
172
+ imgMode: 'scaleToFill',
171
173
  });
172
174
  break;
173
175
  }
174
176
  } else {
175
177
  this.setData({
176
- imgMode: mode
178
+ imgMode: mode,
177
179
  });
178
180
  }
179
- }
181
+ },
180
182
  },
181
183
  });
@@ -7,20 +7,20 @@
7
7
  /* white-space: pre-line; */
8
8
  }
9
9
  .weda-text.level_1 {
10
- font-size: 64rpx !important;
10
+ font-size: 64px !important;
11
11
  }
12
12
  .weda-text.level_2 {
13
- font-size: 56rpx !important;
13
+ font-size: 56px !important;
14
14
  }
15
15
  .weda-text.level_3 {
16
- font-size: 48rpx !important;
16
+ font-size: 48px !important;
17
17
  }
18
18
  .weda-text.level_4 {
19
- font-size: 40rpx !important;
19
+ font-size: 40px !important;
20
20
  }
21
21
  .weda-text.level_5 {
22
- font-size: 32rpx !important;
22
+ font-size: 32px !important;
23
23
  }
24
24
  .weda-text.level_6 {
25
- font-size: 24rpx !important;
25
+ font-size: 24px !important;
26
26
  }
@@ -73,7 +73,7 @@ return (
73
73
  </TeaButton>
74
74
  </ConfigProvider>
75
75
  );
76
- }
76
+ };
77
77
 
78
78
  function toTeaButtonType(type: PropsType['type'] ): ButtonProps['type'] {
79
79
  if(type === 'primary') return type;
@@ -1,5 +1,5 @@
1
1
  /* ios safari 特别是小屏幕 iphone SE 之流
2
- weui自带cell的padding会把input压倒很小,
2
+ weui自带cell的padding会把input压到很小,
3
3
  容易点不到,需要特殊处理
4
4
  START
5
5
  */
@@ -11,10 +11,12 @@
11
11
  padding: 28px 16px;
12
12
  }
13
13
 
14
- .weda-ui.weda-input .weui-cell > label {
14
+ .weda-ui.weda-input .weui-cell.weda-formcells__label {
15
15
  padding: 16px;
16
16
  }
17
-
17
+ .weda-ui.weda-input .weda-formcells__label.weui-cell label {
18
+ padding: 0;
19
+ }
18
20
  .weda-ui.weda-input .weui-cell {
19
21
  padding: 0;
20
22
  }
@@ -94,6 +94,7 @@ const fieldEl = platform === 'h5' ? <div className={subCls}>
94
94
  onFocus={onFocus}
95
95
  onBlur={onBlur}
96
96
  onKeyDown={onKeyDown}
97
+ role="input"
97
98
  />
98
99
  {clearable &&
99
100
  <button
@@ -4,10 +4,10 @@ import { ConfigProvider, ImagePreview } from 'tea-component';
4
4
  import { usePlatform } from '../../utils/platform';
5
5
  import { useGesture } from '@use-gesture/react';
6
6
  import { PropsType } from './index';
7
- interface ImageInnerPropsType extends Omit<PropsType, 'fit'|'mode'> {
8
- objectFit: React.CSSProperties['objectFit'],
9
- isError: boolean,
10
- setIsError: React.Dispatch<React.SetStateAction<boolean>>
7
+ interface ImageInnerPropsType extends Omit<PropsType, 'fit' | 'mode'> {
8
+ objectFit: React.CSSProperties['objectFit'];
9
+ isError: boolean;
10
+ setIsError: React.Dispatch<React.SetStateAction<boolean>>;
11
11
  }
12
12
  export function ImageInner({
13
13
  objectFit,
@@ -20,12 +20,12 @@ export function ImageInner({
20
20
  events,
21
21
  lazyLoad,
22
22
  maskClosable,
23
- imgPreview
23
+ imgPreview,
24
24
  }: ImageInnerPropsType) {
25
25
  const platform = usePlatform();
26
26
  const [imgShow, setImgShow] = React.useState(false);
27
27
  const onMaskClick = () => {
28
- if(maskClosable) {
28
+ if (maskClosable) {
29
29
  setImgShow(false);
30
30
  }
31
31
  };
@@ -34,12 +34,12 @@ export function ImageInner({
34
34
  const realWidth = React.useRef(0);
35
35
  const realHeight = React.useRef(0);
36
36
  const [offsetHeight, setOffsetHeight] = React.useState(0);
37
- const [translateX, setTranslateX]= React.useState(0);
38
- const [translateY, setTranslateY]= React.useState(0);
37
+ const [translateX, setTranslateX] = React.useState(0);
38
+ const [translateY, setTranslateY] = React.useState(0);
39
39
  const [previewScale, setPreviewScale] = React.useState(1);
40
40
  React.useEffect(() => {
41
41
  // 防止触发浏览器的放大缩小
42
- const handler = e => e.preventDefault();
42
+ const handler = (e) => e.preventDefault();
43
43
  document.addEventListener('gesturestart', handler);
44
44
  document.addEventListener('gesturechange', handler);
45
45
  return () => {
@@ -48,36 +48,38 @@ export function ImageInner({
48
48
  };
49
49
  }, []);
50
50
 
51
- const bind = useGesture({
52
- onClick: ({event}) => {
53
- // 防止冒泡出发关闭预览
54
- event.stopPropagation();
51
+ const bind = useGesture(
52
+ {
53
+ onClick: ({ event }) => {
54
+ // 防止冒泡出发关闭预览
55
+ event.stopPropagation();
56
+ },
57
+ onPinch: ({ offset }) => {
58
+ const [s] = offset;
59
+ setPreviewScale(s);
60
+ },
61
+ onDrag: ({ offset, event }) => {
62
+ event.stopPropagation();
63
+ const [x, y] = offset;
64
+ setTranslateX(x);
65
+ setTranslateY(y);
66
+ },
55
67
  },
56
- onPinch: ({offset}) => {
57
- const [s] = offset;
58
- setPreviewScale(s);
59
- },
60
- onDrag: ({offset, event}) => {
61
- event.stopPropagation();
62
- const [x, y] = offset;
63
- setTranslateX(x);
64
- setTranslateY(y);
65
-
66
- },
67
- }, {
68
- drag: {
69
- delay: true,
70
- preventDefault: true,
71
- },
72
- pinch: {
73
- scaleBounds: {min: 0.6, max: 5},
74
- pointer: {
75
- touch: true
76
- }
68
+ {
69
+ drag: {
70
+ delay: true,
71
+ preventDefault: true,
72
+ },
73
+ pinch: {
74
+ scaleBounds: { min: 0.6, max: 5 },
75
+ pointer: {
76
+ touch: true,
77
+ },
78
+ },
77
79
  }
78
- });
80
+ );
79
81
 
80
- if(platform === 'h5' || !imgPreview || isError) {
82
+ if (platform === 'h5' || !imgPreview || isError) {
81
83
  return (
82
84
  <>
83
85
  <img
@@ -90,7 +92,7 @@ export function ImageInner({
90
92
  src={src}
91
93
  onLoad={(e) => {
92
94
  const img = e.target as HTMLImageElement;
93
- const {naturalHeight, naturalWidth} = img;
95
+ const { naturalHeight, naturalWidth } = img;
94
96
  realHeight.current = naturalHeight;
95
97
  realWidth.current = naturalWidth;
96
98
  setIsError(false);
@@ -100,74 +102,86 @@ export function ImageInner({
100
102
  setIsError(true);
101
103
  events.error && events.error({}, { originEvent: e });
102
104
  }}
103
- onClick={
104
- () => {
105
- if(imgPreview && !isError) {
106
- setTranslateX(0);
107
- setTranslateY(0);
108
- setPreviewScale(1);
109
- const windowHeight = window.innerHeight;
110
- const windowWidth = window.innerWidth;
111
- const ratio = (realWidth.current / realHeight.current);
112
- const height = windowWidth / ratio;
113
- setOffsetHeight(windowHeight / 2 - (height / 2));
114
- setShowHeight(height);
115
- setImgShow(true);
105
+ onClick={(e) => {
106
+ if (imgPreview && !isError) {
107
+ setTranslateX(0);
108
+ setTranslateY(0);
109
+ setPreviewScale(1);
110
+ const windowHeight = window.innerHeight;
111
+ const windowWidth = window.innerWidth;
112
+ let ratio = realWidth.current / realHeight.current;
113
+ if(Number.isNaN(ratio)) {
114
+ ratio = 1;
116
115
  }
116
+ const height = windowWidth / ratio;
117
+ setOffsetHeight(windowHeight / 2 - height / 2);
118
+ setShowHeight(height);
119
+ setImgShow(true);
117
120
  }
118
- }
121
+ events.tap && events.tap({}, { originEvent: e });
122
+ }}
119
123
  loading={lazyLoad ? 'lazy' : undefined}
120
124
  />
121
- {imgShow &&
122
- <div className="weda-img-mask" onClick={onMaskClick} >
123
- <div onClick={() => setImgShow(false)} className="weda-img-modal-close-btn">
124
- <i className="weui-icon-clear" style={{color: 'white'}}></i>
125
+ {imgShow && (
126
+ <div className="weda-img-mask" onClick={onMaskClick}>
127
+ <div
128
+ onClick={() => setImgShow(false)}
129
+ className="weda-img-modal-close-btn"
130
+ >
131
+ <i className="weui-icon-clear" style={{ color: 'white' }}></i>
125
132
  </div>
126
-
127
- {/* eslint-disable-next-line react/jsx-props-no-spreading */}
128
- <div {...bind()} className="weda-img-preview" style={{
129
- touchAction: 'none',
130
- backgroundImage: `url(${src})`,
131
- width: '100%',
132
- height: showHeight,
133
- marginTop: offsetHeight,
134
- transform: `translate(${translateX}px, ${translateY}px) scale(${previewScale})`
135
- }}></div>
133
+ <div
134
+ // eslint-disable-next-line react/jsx-props-no-spreading
135
+ {...bind()}
136
+ className="weda-img-preview"
137
+ style={{
138
+ touchAction: 'none',
139
+ backgroundImage: `url(${src})`,
140
+ width: '100%',
141
+ height: showHeight,
142
+ marginTop: offsetHeight,
143
+ transform: `translate(${translateX}px, ${translateY}px) scale(${previewScale})`,
144
+ }}
145
+ ></div>
136
146
  </div>
137
- }
147
+ )}
138
148
  </>
139
149
  );
140
150
  } else {
141
151
  return (
142
152
  <ConfigProvider classPrefix="wedatea2td">
143
- <ImagePreview
144
- previewSrc={src}
145
- maskClosable={maskClosable}
146
- className={className}
147
- style={{...style,
148
- objectFit}}
149
- >
150
- {open => <img
151
- style={{
152
- objectFit,
153
- cursor: 'zoom-in',
154
- ...style,
155
- }}
153
+ <ImagePreview
154
+ previewSrc={src}
155
+ maskClosable={maskClosable}
156
156
  className={className}
157
- alt={alt}
158
- src={src}
159
- onLoad={(e) => {
160
- setIsError(false);
161
- events.load && events.load({}, { originEvent: e });
162
- }}
163
- onError={(e) => {
164
- setIsError(true);
165
- events.error && events.error({}, { originEvent: e });
166
- }}
167
- loading={lazyLoad ? 'lazy' : undefined}
168
- onClick={open}
169
- />}
170
- </ImagePreview>
157
+ style={{ ...style, objectFit }}
158
+ >
159
+ {(open) => (
160
+ <img
161
+ style={{
162
+ objectFit,
163
+ cursor: 'zoom-in',
164
+ ...style,
165
+ }}
166
+ className={className}
167
+ alt={alt}
168
+ src={src}
169
+ onLoad={(e) => {
170
+ setIsError(false);
171
+ events.load && events.load({}, { originEvent: e });
172
+ }}
173
+ onError={(e) => {
174
+ setIsError(true);
175
+ events.error && events.error({}, { originEvent: e });
176
+ }}
177
+ loading={lazyLoad ? 'lazy' : undefined}
178
+ onClick={(e) => {
179
+ open();
180
+ events.tap && events.tap({}, { originEvent: e });
181
+ }}
182
+ />
183
+ )}
184
+ </ImagePreview>
171
185
  </ConfigProvider>
172
186
  );
173
187
  }