@hi-ui/hiui 2.15.11 → 2.15.12

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 (344) hide show
  1. package/es/_util/SwitchVersion.js +40 -0
  2. package/es/_util/depreactedPropsCompat.js +58 -0
  3. package/es/_util/index.js +31 -0
  4. package/es/_util/warning.js +2 -2
  5. package/es/alert/Alert.js +126 -0
  6. package/es/alert/__tests__/index.test.js +84 -0
  7. package/es/alert/index.js +6 -147
  8. package/es/alert/style/index.css +1 -1
  9. package/es/badge/Badge.js +82 -0
  10. package/es/badge/__tests__/index.test.js +82 -0
  11. package/es/badge/index.js +9 -87
  12. package/es/badge/style/index.css +1 -1
  13. package/es/badge/style/index.js +0 -0
  14. package/es/breadcrumb/__tests__/index.test.js +61 -0
  15. package/es/breadcrumb/index.js +85 -0
  16. package/es/breadcrumb/style/index.css +1 -0
  17. package/es/button/Button.js +62 -60
  18. package/es/button/ButtonGroup.js +24 -40
  19. package/es/button/IconLoading.js +6 -6
  20. package/es/button/__tests__/index.test.js +221 -0
  21. package/es/button/index.js +3 -2
  22. package/es/button/style/index.css +1 -1
  23. package/es/card/__tests__/index.test.js +179 -0
  24. package/es/card/index.js +61 -57
  25. package/es/card/style/index.css +1 -1
  26. package/es/carousel/__tests__/index.test.js +104 -0
  27. package/es/carousel/index.js +219 -0
  28. package/es/carousel/style/index.css +1 -0
  29. package/es/carousel/style/index.js +3 -0
  30. package/es/cascader/Cascader.js +190 -133
  31. package/es/cascader/Menu.js +168 -0
  32. package/es/cascader/__tests__/index.test.js +392 -0
  33. package/es/cascader/index.js +5 -2
  34. package/es/cascader/style/cascader.css +1 -1
  35. package/es/cascader/style/menu.css +1 -1
  36. package/es/checkbox/Checkbox.js +136 -0
  37. package/es/checkbox/Group.js +194 -0
  38. package/es/checkbox/__tests__/index.test.js +226 -0
  39. package/es/checkbox/checkbox-legacy/Base.js +212 -0
  40. package/es/checkbox/checkbox-legacy/CheckBox.js +157 -0
  41. package/es/checkbox/checkbox-legacy/index.js +15 -0
  42. package/es/checkbox/checkbox-legacy/style/index.css +1 -0
  43. package/es/checkbox/checkbox-legacy/style/index.js +3 -0
  44. package/es/checkbox/index.js +13 -4
  45. package/es/checkbox/style/index.css +1 -1
  46. package/es/collapse/__tests__/index.test.js +111 -0
  47. package/es/collapse/index.js +88 -110
  48. package/es/collapse/style/index.css +1 -1
  49. package/es/confirm/index.js +39 -60
  50. package/es/context/index.js +45 -51
  51. package/es/counter/Counter.js +339 -0
  52. package/es/counter/__tests__/index.test.js +134 -0
  53. package/es/counter/counter-legacy/index.js +267 -0
  54. package/es/counter/index.js +6 -270
  55. package/es/counter/style/index.css +1 -1
  56. package/es/date-picker/BasePicker.js +380 -302
  57. package/es/date-picker/Calender.js +326 -98
  58. package/es/date-picker/DatePanel.js +194 -213
  59. package/es/date-picker/DatePicker.js +143 -47
  60. package/es/date-picker/DateRangePanel.js +272 -208
  61. package/es/date-picker/Modal.js +18 -32
  62. package/es/date-picker/Time.js +231 -345
  63. package/es/date-picker/TimeList.js +246 -0
  64. package/es/date-picker/TimePanel.js +28 -41
  65. package/es/date-picker/TimePeriodPanel.js +27 -46
  66. package/es/date-picker/TimePicker.js +44 -46
  67. package/es/date-picker/TimeRangePanel.js +33 -51
  68. package/es/date-picker/Type.js +5 -1
  69. package/es/date-picker/WeekRangePanel.js +254 -175
  70. package/es/date-picker/YMRangePanel.js +364 -0
  71. package/es/date-picker/__tests__/index.test.js +956 -0
  72. package/es/date-picker/constants.js +14 -28
  73. package/es/date-picker/dateUtil.js +221 -52
  74. package/es/date-picker/datepicker-legacy/BasePicker.js +511 -0
  75. package/es/date-picker/datepicker-legacy/Calender.js +422 -0
  76. package/es/date-picker/datepicker-legacy/DatePanel.js +455 -0
  77. package/es/date-picker/datepicker-legacy/DatePicker.js +103 -0
  78. package/es/date-picker/datepicker-legacy/DateRangePanel.js +488 -0
  79. package/es/date-picker/datepicker-legacy/Modal.js +67 -0
  80. package/es/date-picker/datepicker-legacy/Time.js +405 -0
  81. package/es/date-picker/datepicker-legacy/TimePanel.js +85 -0
  82. package/es/date-picker/datepicker-legacy/TimePeriodPanel.js +118 -0
  83. package/es/date-picker/datepicker-legacy/TimePicker.js +78 -0
  84. package/es/date-picker/datepicker-legacy/TimeRangePanel.js +90 -0
  85. package/es/date-picker/datepicker-legacy/Type.js +31 -0
  86. package/es/date-picker/datepicker-legacy/WeekRangePanel.js +337 -0
  87. package/es/date-picker/datepicker-legacy/constants.js +79 -0
  88. package/es/date-picker/datepicker-legacy/dateUtil.js +258 -0
  89. package/es/date-picker/datepicker-legacy/index.js +15 -0
  90. package/es/date-picker/datepicker-legacy/local.js +11 -0
  91. package/es/date-picker/datepicker-legacy/style/index.css +1 -0
  92. package/es/date-picker/datepicker-legacy/style/index.js +3 -0
  93. package/es/date-picker/datepicker-legacy/style/timepicker.css +1 -0
  94. package/es/date-picker/datepicker-legacy/util.js +60 -0
  95. package/es/date-picker/index.js +5 -2
  96. package/es/date-picker/style/index.css +1 -1
  97. package/es/date-picker/toLunar.js +172 -0
  98. package/es/date-picker/util.js +101 -8
  99. package/es/dropdown/Dropdown.js +191 -203
  100. package/es/dropdown/DropdownButton.js +102 -0
  101. package/es/dropdown/DropdownMenu.js +107 -0
  102. package/es/dropdown/DropdownMenuItem.js +172 -0
  103. package/es/dropdown/__tests__/index.test.js +313 -0
  104. package/es/dropdown/index.js +69 -4
  105. package/es/dropdown/style/index.css +1 -1
  106. package/es/dropdown/style/index.js +0 -2
  107. package/es/dropdown/{__test__ → tests}/index.test.js +7 -7
  108. package/es/dropdown/utils.js +35 -0
  109. package/es/ficon/index.js +16 -30
  110. package/es/form/Form.js +176 -0
  111. package/es/form/{item.js → Item.js} +52 -60
  112. package/es/form/__tests__/index.test.js +571 -0
  113. package/es/form/index.js +6 -171
  114. package/es/form/style/index.css +1 -1
  115. package/es/grid/__tests__/index.test.js +100 -0
  116. package/es/grid/index.js +36 -56
  117. package/es/icon/index.js +23 -38
  118. package/es/index.js +61 -9
  119. package/es/input/Input.js +400 -0
  120. package/es/input/__tests__/index.test.js +376 -0
  121. package/es/input/index.js +26 -347
  122. package/es/input/input-legacy/index.js +341 -0
  123. package/es/input/input-legacy/util.js +176 -0
  124. package/es/input/style/index.css +1 -1
  125. package/es/input/util.js +26 -18
  126. package/es/lib/withDragDropContext.js +2 -2
  127. package/es/loading/Loading.js +173 -0
  128. package/es/loading/__tests__/index.test.js +110 -0
  129. package/es/loading/index.js +5 -129
  130. package/es/loading/style/index.css +0 -0
  131. package/es/loading/style/index.js +0 -0
  132. package/es/locales/en-US.js +45 -9
  133. package/es/locales/index.js +16 -2
  134. package/es/locales/zh-CN.js +46 -10
  135. package/es/locales/zh-Hant-HK.js +123 -0
  136. package/es/locales/zh-Hant-TW.js +125 -0
  137. package/es/menu/Item.js +34 -51
  138. package/es/menu/Menu.js +414 -0
  139. package/es/menu/SubMenu.js +63 -90
  140. package/es/menu/Title.js +37 -51
  141. package/es/menu/__tests__/index.test.js +274 -0
  142. package/es/menu/index.js +12 -419
  143. package/es/menu/style/index.css +1 -1
  144. package/es/message/__tests__/index.test.js +71 -0
  145. package/es/message/index.js +58 -0
  146. package/es/message/style/index.css +1 -0
  147. package/es/message/style/index.js +5 -0
  148. package/es/modal/__tests__/index.test.js +178 -0
  149. package/es/modal/index.js +85 -77
  150. package/es/modal/style/index.css +1 -1
  151. package/es/nav-menu/NavMenu.js +44 -61
  152. package/es/nav-menu/__test__/index.test.js +8 -8
  153. package/es/nav-menu/__tests__/index.test.js +23 -0
  154. package/es/nav-menu/index.js +2 -2
  155. package/es/notice/Notice.js +136 -0
  156. package/es/notice/NoticeContainer.js +107 -0
  157. package/es/notice/__tests__/index.test.js +174 -0
  158. package/es/notice/index.js +66 -0
  159. package/es/notice/style/index.css +1 -0
  160. package/es/notice/style/index.js +5 -0
  161. package/es/notification/HandleNotification/index.js +216 -0
  162. package/es/notification/HandleNotification/style/index.css +1 -0
  163. package/es/notification/HandleNotification/style/index.js +5 -0
  164. package/es/notification/__tests__/index.test.js +114 -0
  165. package/es/notification/index.js +68 -231
  166. package/es/notification/style/index.css +1 -1
  167. package/es/notification/style/index.js +0 -0
  168. package/es/pagination/Pager.js +7 -9
  169. package/es/pagination/Pagination.js +134 -133
  170. package/es/pagination/__tests__/index.test.js +244 -0
  171. package/es/pagination/index.js +9 -8
  172. package/es/pagination/style/index.css +1 -1
  173. package/es/panel/index.js +28 -46
  174. package/es/popover/__test__/index.test.js +10 -10
  175. package/es/popover/__tests__/index.test.js +152 -0
  176. package/es/popover/index.js +77 -83
  177. package/es/popper/index.js +68 -64
  178. package/es/popper/style/index.css +1 -1
  179. package/es/preview/index.js +529 -0
  180. package/es/preview/style/index.css +1 -0
  181. package/es/preview/style/index.js +3 -0
  182. package/es/progress/BarProgress.js +107 -43
  183. package/es/progress/CircleProgress.js +13 -14
  184. package/es/progress/DashboardProgress.js +11 -13
  185. package/es/progress/Progress.js +102 -0
  186. package/es/progress/__tests__/index.test.js +131 -0
  187. package/es/progress/index.js +8 -100
  188. package/es/progress/style/index.css +1 -1
  189. package/es/radio/Group.js +199 -0
  190. package/es/radio/Radio.js +147 -0
  191. package/es/radio/__tests__/index.test.js +127 -0
  192. package/es/radio/index.js +10 -216
  193. package/es/radio/{__test__ → radio-legacy/__test__}/index.test.js +13 -13
  194. package/es/radio/radio-legacy/index.js +214 -0
  195. package/es/radio/radio-legacy/style/index.css +1 -0
  196. package/es/radio/radio-legacy/style/index.js +3 -0
  197. package/es/radio/style/index.css +1 -1
  198. package/es/rate/Icons.js +70 -70
  199. package/es/rate/Rate.js +75 -108
  200. package/es/rate/__tests__/index.test.js +124 -0
  201. package/es/rate/index.js +5 -2
  202. package/es/rate/style/index.css +1 -1
  203. package/es/select/Select.js +330 -265
  204. package/es/select/SelectDropdown.js +223 -79
  205. package/es/select/SelectInput.js +120 -91
  206. package/es/select/__tests__/index.test.js +505 -0
  207. package/es/select/index.js +6 -4
  208. package/es/select/select-legacy/Option.js +78 -0
  209. package/es/select/select-legacy/Select.js +702 -0
  210. package/es/select/select-legacy/SelectDropdown.js +157 -0
  211. package/es/select/select-legacy/SelectInput.js +308 -0
  212. package/es/select/select-legacy/common.js +19 -0
  213. package/es/select/select-legacy/index.js +16 -0
  214. package/es/select/style/select-dropdown.css +1 -1
  215. package/es/select/style/select-input.css +1 -1
  216. package/es/stepper/Stepper.js +147 -0
  217. package/es/stepper/__tests__/index.test.js +161 -0
  218. package/es/stepper/index.js +21 -127
  219. package/es/stepper/style/index.css +1 -1
  220. package/es/style/icon/diyIcon.css +1 -1
  221. package/es/style/icon/index.css +1 -1
  222. package/es/switch/__tests__/index.test.js +68 -0
  223. package/es/switch/index.js +26 -46
  224. package/es/switch/style/index.css +1 -1
  225. package/es/table/Body.js +294 -0
  226. package/es/table/ClickOuterside.js +95 -0
  227. package/es/table/Footer.js +171 -0
  228. package/es/table/Header.js +320 -0
  229. package/es/table/TableContent.js +101 -0
  230. package/es/table/__tests__/index.test.js +129 -0
  231. package/es/table/checkbox/index.js +36 -47
  232. package/es/table/checkbox/style/index.css +1 -0
  233. package/es/table/checkbox/style/index.js +3 -0
  234. package/es/table/index.js +269 -314
  235. package/es/table/menu/index.js +34 -44
  236. package/es/table/prefix.js +2 -2
  237. package/es/table/style/Table.css +1 -1
  238. package/es/table/style/index.css +1 -1
  239. package/es/tabs/ItemDropdown.js +45 -65
  240. package/es/tabs/TabPane.js +26 -44
  241. package/es/tabs/Tabs.js +110 -111
  242. package/es/tabs/__tests__/index.test.js +329 -0
  243. package/es/tabs/index.js +9 -3
  244. package/es/tabs/style/index.css +1 -1
  245. package/es/tabs/tabs-legacy/ItemDropdown.js +162 -0
  246. package/es/tabs/tabs-legacy/TabPane.js +70 -0
  247. package/es/tabs/tabs-legacy/Tabs.js +291 -0
  248. package/es/tabs/tabs-legacy/index.js +18 -0
  249. package/es/tabs/tabs-legacy/style/index.css +1 -0
  250. package/es/tabs/tabs-legacy/style/index.js +3 -0
  251. package/es/tag/__tests__/index.test.js +46 -0
  252. package/es/tag/index.js +86 -0
  253. package/es/tag/style/index.css +1 -0
  254. package/es/tag/style/index.js +3 -0
  255. package/es/timeline/__tests__/index.test.js +198 -0
  256. package/es/timeline/index.js +206 -136
  257. package/es/timeline/style/index.css +1 -1
  258. package/es/tooltip/__tests__/index.test.js +166 -0
  259. package/es/tooltip/index.js +93 -52
  260. package/es/tooltip/style/index.css +1 -1
  261. package/es/transfer/Item.js +73 -71
  262. package/es/transfer/Transfer.js +558 -0
  263. package/es/transfer/__tests__/index.test.js +210 -0
  264. package/es/transfer/index.js +4 -443
  265. package/es/transfer/style/index.css +1 -1
  266. package/es/tree/IconLoading.js +38 -0
  267. package/es/tree/Tree.js +94 -111
  268. package/es/tree/TreeDivider.js +6 -6
  269. package/es/tree/TreeItem.js +217 -123
  270. package/es/tree/TreeNode.js +472 -333
  271. package/es/tree/__tests__/index.test.js +599 -0
  272. package/es/tree/index.js +9 -2
  273. package/es/tree/style/index.css +1 -1
  274. package/es/tree/tree-legacy/Tree.js +330 -0
  275. package/es/tree/tree-legacy/TreeDivider.js +25 -0
  276. package/es/tree/tree-legacy/TreeItem.js +326 -0
  277. package/es/tree/tree-legacy/TreeNode.js +711 -0
  278. package/es/tree/tree-legacy/index.js +13 -0
  279. package/es/tree/tree-legacy/style/index.css +1 -0
  280. package/es/tree/tree-legacy/style/index.js +3 -0
  281. package/es/tree/tree-legacy/util.js +434 -0
  282. package/es/tree/util.js +8 -256
  283. package/es/upload/Upload.js +292 -200
  284. package/es/upload/UploadAvatar.js +61 -79
  285. package/es/upload/UploadClick.js +62 -60
  286. package/es/upload/UploadDrag.js +63 -66
  287. package/es/upload/UploadPhoto.js +86 -75
  288. package/es/upload/UploadPictureCard.js +53 -60
  289. package/es/upload/__tests__/index.test.js +760 -0
  290. package/es/upload/index.js +8 -71
  291. package/es/upload/main.js +83 -0
  292. package/es/upload/style/index.css +1 -1
  293. package/es/upload/tool.js +0 -1
  294. package/es/upload/{Preview.js → upload-legacy/Preview.js} +48 -62
  295. package/es/upload/upload-legacy/Upload.js +431 -0
  296. package/es/upload/upload-legacy/UploadAvatar.js +318 -0
  297. package/es/upload/upload-legacy/UploadClick.js +121 -0
  298. package/es/upload/upload-legacy/UploadDrag.js +176 -0
  299. package/es/upload/upload-legacy/UploadPhoto.js +179 -0
  300. package/es/upload/upload-legacy/UploadPictureCard.js +122 -0
  301. package/es/upload/upload-legacy/index.js +67 -0
  302. package/es/upload/upload-legacy/style/index.css +1 -0
  303. package/es/upload/upload-legacy/style/index.js +5 -0
  304. package/es/upload/upload-legacy/tool.js +84 -0
  305. package/es/watermark/index.js +97 -0
  306. package/es/watermark/watermark.js +263 -0
  307. package/package.json +1 -1
  308. package/es/alert/__test__/index.test.js +0 -67
  309. package/es/button/__test__/index.test.js +0 -29
  310. package/es/cascader/__test__/index.test.js +0 -283
  311. package/es/cascader/menu.js +0 -155
  312. package/es/checkbox/Base.js +0 -205
  313. package/es/checkbox/CheckBox.js +0 -185
  314. package/es/collapse/__test__/index.test.js +0 -58
  315. package/es/counter/__test__/index.test.js +0 -52
  316. package/es/menu/ItemGroup.js +0 -81
  317. package/es/modal/__test__/index.test.js +0 -123
  318. package/es/notification/__test__/index.test.js +0 -56
  319. package/es/pagination/__test__/index.test.js +0 -140
  320. package/es/rate/__test__/index.test.js +0 -54
  321. package/es/select/Option.js +0 -93
  322. package/es/select/__test__/index.test.js +0 -429
  323. package/es/style/color/colors.css +0 -0
  324. package/es/style/index.css +0 -0
  325. package/es/style/mixins/colors.css +0 -0
  326. package/es/style/mixins/index.css +0 -0
  327. package/es/style/theme/dark.css +0 -0
  328. package/es/style/theme/default.css +0 -0
  329. package/es/switch/__test__/index.test.js +0 -39
  330. package/es/table/__test__/index.test.js +0 -73
  331. package/es/table/body.js +0 -318
  332. package/es/table/clickOuterside.js +0 -115
  333. package/es/table/footer.js +0 -196
  334. package/es/table/header.js +0 -337
  335. package/es/table/pover.js +0 -154
  336. package/es/table/tableContent.js +0 -120
  337. package/es/timeline/__test__/index.test.js +0 -49
  338. package/es/timeline/foldingItem.js +0 -82
  339. package/es/tooltip/__test__/index.test.js +0 -67
  340. package/es/transfer/__test__/index.test.js +0 -11
  341. /package/es/{style → breadcrumb/style}/index.js +0 -0
  342. /package/es/checkbox/{common.js → checkbox-legacy/common.js} +0 -0
  343. /package/es/upload/{style → upload-legacy/style}/preview.css +0 -0
  344. /package/es/upload/{style → upload-legacy/style}/preview.js +0 -0
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var defaultOptions = {
8
+ id: null,
9
+ textAlign: 'left',
10
+ font: 'normal normal lighter 28px -apple-system,BlinkMacSystemFont,"Helvetica Neue",Helvetica,Arial,"Microsoft Yahei","Hiragino Sans GB","Heiti SC","WenQuanYi Micro Hei",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"',
11
+ color: 'rgba(148, 148, 148, 0.2)',
12
+ content: '请勿外传',
13
+ rotate: -30,
14
+ zIndex: 1000,
15
+ logo: null,
16
+ grayLogo: true,
17
+ // 是否对图标进行灰度处理
18
+ isAutoWrap: false,
19
+ // 文字是否自动换行
20
+ textOverflowEffect: 'zoom' // 当isAutoWrap 为 false 时,文本长度超出画布长度时的处理方式: zoom - 缩小文字 cut - 截断文字
21
+
22
+ };
23
+
24
+ var parseTextData = function parseTextData(ctx, texts, width, isWrap) {
25
+ var content = [];
26
+ var lines = [];
27
+
28
+ if (texts instanceof Array) {
29
+ content = texts;
30
+ } else if (typeof texts === 'string') {
31
+ content.push(texts);
32
+ } else {
33
+ console.warn('Only support String Or Array');
34
+ }
35
+
36
+ if (isWrap) {
37
+ content.forEach(function (text) {
38
+ var curLine = '';
39
+ var _iteratorNormalCompletion = true;
40
+ var _didIteratorError = false;
41
+ var _iteratorError = undefined;
42
+
43
+ try {
44
+ for (var _iterator = text[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
45
+ var _char = _step.value;
46
+ var nextLine = curLine + _char;
47
+
48
+ if (_char === '\n' || ctx.measureText(nextLine).width > width) {
49
+ lines.push(curLine);
50
+ curLine = _char === '\n' ? '' : _char;
51
+ } else {
52
+ curLine = nextLine;
53
+ }
54
+ }
55
+ } catch (err) {
56
+ _didIteratorError = true;
57
+ _iteratorError = err;
58
+ } finally {
59
+ try {
60
+ if (!_iteratorNormalCompletion && _iterator["return"] != null) {
61
+ _iterator["return"]();
62
+ }
63
+ } finally {
64
+ if (_didIteratorError) {
65
+ throw _iteratorError;
66
+ }
67
+ }
68
+ }
69
+
70
+ lines.push(curLine);
71
+ });
72
+ return lines;
73
+ } else {
74
+ return content;
75
+ }
76
+ };
77
+
78
+ var drawText = function drawText(ctx, options) {
79
+ var width = options.width,
80
+ _options$_w = options._w,
81
+ _w = _options$_w === void 0 ? width : _options$_w,
82
+ height = options.height,
83
+ textOverflowEffect = options.textOverflowEffect,
84
+ text = options.content,
85
+ font = options.font,
86
+ isAutoWrap = options.isAutoWrap,
87
+ logo = options.logo;
88
+
89
+ var oldBaseLine = ctx.textBaseline;
90
+ var x = 0;
91
+ var y = 16;
92
+ ctx.textBaseline = 'hanging';
93
+ /**
94
+ * LOGO 固定宽高: 32 * 32
95
+ * 内容区域为 画布宽度 - 48 (预留左右各24的 padding)
96
+ * 如含 LOGO ,文字的起始 X 坐标为: 24(padding-left) + 32(logo size) + 4(logo 与 text 间距)
97
+ */
98
+
99
+ var lineHeight = parseInt(font * 2); // ctx.font必须以'XXpx'开头
100
+
101
+ if (logo) {
102
+ x += 64;
103
+ _w -= 64;
104
+ }
105
+
106
+ var lines = parseTextData(ctx, text, width, isAutoWrap); // 计算 Y 的起始位置
107
+
108
+ var lineY = y + ctx.canvas.height / 2 - lineHeight * lines.length / 2;
109
+ var initLineY = lineY;
110
+ var _iteratorNormalCompletion2 = true;
111
+ var _didIteratorError2 = false;
112
+ var _iteratorError2 = undefined;
113
+
114
+ try {
115
+ for (var _iterator2 = lines[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
116
+ var line = _step2.value;
117
+ var lineX = void 0;
118
+
119
+ if (ctx.textAlign === 'center') {
120
+ lineX = x + width + 40;
121
+ } else if (ctx.textAlign === 'right') {
122
+ lineX = x + width + 40;
123
+ } else {
124
+ lineX = x + 40;
125
+ }
126
+
127
+ if (textOverflowEffect === 'zoom') {
128
+ var size = parseInt(Math.sqrt((_w * _w + height * height) / 2));
129
+ ctx.fillText(line, lineX, lineY, size);
130
+ } else {
131
+ ctx.fillText(line, lineX, lineY);
132
+ }
133
+
134
+ lineY += lineHeight;
135
+ }
136
+ } catch (err) {
137
+ _didIteratorError2 = true;
138
+ _iteratorError2 = err;
139
+ } finally {
140
+ try {
141
+ if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
142
+ _iterator2["return"]();
143
+ }
144
+ } finally {
145
+ if (_didIteratorError2) {
146
+ throw _iteratorError2;
147
+ }
148
+ }
149
+ }
150
+
151
+ ctx.textBaseline = oldBaseLine;
152
+ return initLineY - lineHeight / 2;
153
+ };
154
+
155
+ var drawLogo = function drawLogo(ctx, logo, cb) {
156
+ var img = new window.Image();
157
+ img.src = logo;
158
+
159
+ img.onload = function () {
160
+ ctx.globalAlpha = 0.2;
161
+ ctx.drawImage(img, 32, ctx.canvas.height / 2 - 16, 64, 64);
162
+ cb();
163
+ };
164
+ };
165
+
166
+ var toImage = function toImage(canvas, key, container, options) {
167
+ var base64Url = canvas.toDataURL();
168
+ var _options$opacity = options.opacity,
169
+ opacity = _options$opacity === void 0 ? 1 : _options$opacity;
170
+
171
+ var _top = (options._top || 0) + 'px';
172
+
173
+ var __wm = document.querySelector(".".concat(key));
174
+
175
+ var watermarkDiv = __wm || document.createElement('div');
176
+
177
+ var styleStr = "\n position:absolute;\n top:".concat(_top, ";\n left:-50%;\n top:-50%;\n width:200%;\n height:200%;\n transform:scale(0.5);\n z-index:").concat(options.zIndex, ";\n pointer-events:none;\n background-repeat:repeat;\n visibility:visible !important;\n display: block !important;\n opacity: ").concat(opacity, " !important;\n background-image:url('").concat(base64Url, "');\n ").concat(options.grayLogo ? '-webkit-filter: grayscale(100%);-moz-filter: grayscale(100%);-ms-filter: grayscale(100%);-o-filter: grayscale(100%);filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);_filter:none;' : '', "\n ");
178
+ watermarkDiv.setAttribute('style', styleStr);
179
+
180
+ if (window.getComputedStyle(container).getPropertyValue('position') === 'static') {
181
+ container.style.position = 'relative';
182
+ }
183
+
184
+ watermarkDiv.classList.add(key);
185
+ container.insertBefore(watermarkDiv, container.firstChild);
186
+ var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
187
+
188
+ if (MutationObserver) {
189
+ var mo = new MutationObserver(function () {
190
+ var __wm = document.querySelector(".".concat(key));
191
+
192
+ var cs = __wm ? window.getComputedStyle(__wm) : {};
193
+
194
+ if (__wm && (__wm.getAttribute('style') !== styleStr || cs.visibility === 'hidden' || cs.display === 'none' || cs.opacity === 0) || !__wm) {
195
+ mo.disconnect();
196
+ mo = null;
197
+ WaterMarker(container, JSON.parse(JSON.stringify(options)));
198
+ }
199
+ });
200
+ mo.observe(container, {
201
+ attributes: true,
202
+ subtree: true,
203
+ childList: true
204
+ });
205
+ }
206
+ };
207
+
208
+ var WaterMarker = function WaterMarker(container, args) {
209
+ var _container = container || document.body;
210
+
211
+ var density = args.density;
212
+ var _markSize = {
213
+ width: 420,
214
+ height: 270
215
+ };
216
+
217
+ if (['low', 'high'].includes(density)) {
218
+ _markSize = {
219
+ width: density === 'low' ? 540 : 360,
220
+ height: density === 'low' ? 410 : 210
221
+ };
222
+ }
223
+
224
+ var options = Object.assign({}, defaultOptions, _markSize, args);
225
+ var id = options.id,
226
+ width = options.width,
227
+ height = options.height,
228
+ textAlign = options.textAlign,
229
+ textBaseline = options.textBaseline,
230
+ font = options.font,
231
+ color = options.color,
232
+ logo = options.logo,
233
+ rotate = options.rotate;
234
+ var key = 'hi-' + Math.floor(Math.random() * (9999 - 1000)) + 1000 + '__wm';
235
+
236
+ if (id && id.trim().length > 0 && !document.querySelector(id + '__wm')) {
237
+ key = id + '__wm';
238
+ }
239
+
240
+ var canvas = document.createElement('canvas');
241
+ var ctx = canvas.getContext('2d');
242
+ canvas.setAttribute('width', width + 'px');
243
+ canvas.setAttribute('height', height + 'px');
244
+ ctx.textAlign = textAlign;
245
+ ctx.textBaseline = textBaseline;
246
+ ctx.font = "normal normal lighter ".concat(Number(font * 2), "px -apple-system,BlinkMacSystemFont,\"Helvetica Neue\",Helvetica,Arial,\"Microsoft Yahei\",\"Hiragino Sans GB\",\"Heiti SC\",\"WenQuanYi Micro Hei\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\"");
247
+ ctx.fillStyle = color;
248
+ ctx.translate(width / 2, height / 2);
249
+ ctx.rotate(Math.PI / 180 * rotate);
250
+ ctx.translate(-width / 2, -height / 2);
251
+ drawText(ctx, options);
252
+
253
+ if (logo) {
254
+ drawLogo(ctx, logo, function () {
255
+ toImage(canvas, key, _container, options);
256
+ });
257
+ } else {
258
+ toImage(canvas, key, _container, options);
259
+ }
260
+ };
261
+
262
+ var _default = WaterMarker;
263
+ exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hi-ui/hiui",
3
- "version": "2.15.11",
3
+ "version": "2.15.12",
4
4
  "description": "HIUI for React",
5
5
  "scripts": {
6
6
  "test": "node_modules/.bin/standard && node_modules/.bin/stylelint --config .stylelintrc 'components/**/*.scss'",
@@ -1,67 +0,0 @@
1
- "use strict";
2
-
3
- var _react = _interopRequireDefault(require("react"));
4
-
5
- var _enzyme = require("enzyme");
6
-
7
- var _reactTestRenderer = _interopRequireDefault(require("react-test-renderer"));
8
-
9
- var _ = _interopRequireDefault(require("../"));
10
-
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
-
13
- describe('Alert', function () {
14
- beforeAll(function () {
15
- jest.useFakeTimers();
16
- });
17
- afterAll(function () {
18
- jest.useRealTimers();
19
- }); // it('basic use', () => {
20
- // const wrapper = renderer.create(
21
- // <div>
22
- // <Alert type='info' message='新提示' />
23
- // <Alert type='success' message='成功' />
24
- // <Alert type='error' message='错误' />
25
- // <Alert type='warning' message='警告' />
26
- // </div>
27
- // )
28
- // expect(wrapper).toMatchSnapshot()
29
- // })
30
-
31
- it('could be closed', function () {
32
- var onClose = jest.fn();
33
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_["default"], {
34
- type: "info",
35
- message: "\u4FE1\u606F\u63D0\u793A\u7684\u6587\u6848",
36
- onClose: onClose
37
- }));
38
- wrapper.find('.close-btn').simulate('click');
39
- expect(onClose).toBeCalled();
40
- expect(wrapper.find('.hi-alert')).toHaveLength(0);
41
- }); // it('props update', () => {
42
- // const onClose = jest.fn()
43
- // const wrapper = mount(
44
- // <Alert type='info' message='信息提示的文案' onClose={onClose} />
45
- // )
46
- // expect(wrapper.props().message).toEqual('信息提示的文案')
47
- // wrapper.setProps({message: '新方案'})
48
- // expect(wrapper.props().message).toEqual('新方案')
49
- // })
50
-
51
- it('auto close', function () {
52
- var onClose = jest.fn();
53
- var wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_["default"], {
54
- type: "info",
55
- message: "\u4FE1\u606F\u63D0\u793A\u7684\u6587\u6848",
56
- autoClose: true,
57
- closeable: false,
58
- onClose: onClose
59
- }));
60
- expect(wrapper.find('.hi-alert')).toHaveLength(1);
61
- expect(onClose).not.toBeCalled();
62
- jest.runAllTimers();
63
- expect(onClose).toBeCalled(); // expect(onClose).toHaveBeenCalledTimes(1)
64
- // expect(wrapper.find('.hi-alert')).toHaveLength(0)
65
- // expect(wrapper.find('.hi-alert').exists()).toBeTruthy()
66
- });
67
- });
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- var _react = _interopRequireDefault(require("react"));
4
-
5
- var _enzyme = require("enzyme");
6
-
7
- var _ = _interopRequireDefault(require("../"));
8
-
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
-
11
- var wrapper;
12
- var clickCallback = jest.fn(function (val) {
13
- return val;
14
- });
15
- describe('Dropdown', function () {
16
- beforeEach(function () {});
17
- afterEach(function () {
18
- wrapper && wrapper.unmount();
19
- clickCallback.mockClear();
20
- });
21
- it('点击事件', function () {
22
- wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_["default"], {
23
- onClick: clickCallback,
24
- type: "primary"
25
- }, "\u7A81\u51FA\u6309\u94AE")));
26
- wrapper.find(_["default"]).simulate('click');
27
- expect(clickCallback).toHaveBeenCalled();
28
- });
29
- });
@@ -1,283 +0,0 @@
1
- "use strict";
2
-
3
- var _react = _interopRequireDefault(require("react"));
4
-
5
- var _enzyme = require("enzyme");
6
-
7
- var _ = _interopRequireDefault(require("../"));
8
-
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
-
11
- var wrapper;
12
- var changeCallback = jest.fn(function (value) {
13
- return value;
14
- });
15
- var activeItemChangeCallback = jest.fn(function (value) {
16
- return value;
17
- });
18
- jest.mock('lodash/debounce', function () {
19
- return jest.fn(function (fn) {
20
- return fn;
21
- });
22
- });
23
- var options = [{
24
- value: '手机',
25
- label: '手机',
26
- children: [{
27
- value: '小米',
28
- label: '小米',
29
- children: [{
30
- value: '小米3',
31
- label: '小米3'
32
- }, {
33
- value: '小米4',
34
- label: '小米4'
35
- }]
36
- }, {
37
- value: '红米',
38
- label: '红米',
39
- children: [{
40
- value: '红米3',
41
- label: '红米3',
42
- disabled: true
43
- }, {
44
- value: '红米4',
45
- label: '红米4'
46
- }]
47
- }]
48
- }, {
49
- value: '电视',
50
- label: '电视',
51
- children: [{
52
- value: '小米电视4A',
53
- label: '小米电视4A'
54
- }, {
55
- value: '小米电视4C',
56
- label: '小米电视4C'
57
- }]
58
- }];
59
- describe('Cascader', function () {
60
- beforeEach(function () {
61
- jest.useFakeTimers();
62
- jest.setTimeout(10000);
63
- });
64
- afterEach(function () {
65
- wrapper && wrapper.unmount();
66
- changeCallback.mockClear();
67
- activeItemChangeCallback.mockClear();
68
- jest.useRealTimers();
69
- });
70
- it('禁用', function () {
71
- wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_["default"], {
72
- onChange: changeCallback,
73
- disabled: true,
74
- options: options,
75
- style: {
76
- width: '220px'
77
- }
78
- }));
79
- expect(document.querySelectorAll('.hi-cascader__popper')).toHaveLength(0);
80
- wrapper.find('.hi-cascader__input-container').simulate('click'); // 展开
81
-
82
- expect(document.querySelectorAll('.hi-cascader__popper')).toHaveLength(0);
83
- });
84
- it('基础用法', function () {
85
- wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_["default"], {
86
- onChange: changeCallback,
87
- options: options,
88
- style: {
89
- width: '220px'
90
- },
91
- value: ['手机', '红米', '红米4']
92
- })); // 测试默认值
93
-
94
- expect(wrapper.find('Cascader').state().cascaderValue).toEqual(['手机', '红米', '红米4']);
95
- expect(document.querySelectorAll('.hi-cascader__popper')).toHaveLength(0);
96
- wrapper.find('.hi-cascader__input-container').simulate('click'); // 展开
97
-
98
- expect(document.querySelectorAll('.hi-cascader__popper')).toHaveLength(1); // 测试默认值选中
99
-
100
- expect(document.querySelectorAll('.hi-cascader-menu')[0].querySelector('.hi-cascader-menu__item-active').textContent).toEqual('手机');
101
- expect(document.querySelectorAll('.hi-cascader-menu')[1].querySelector('.hi-cascader-menu__item-active').textContent).toEqual('红米');
102
- expect(document.querySelectorAll('.hi-cascader-menu')[2].querySelector('.hi-cascader-menu__item-active').textContent).toEqual('红米4'); // 测试禁用项不可点击
103
-
104
- document.querySelectorAll('.hi-cascader-menu')[2].querySelectorAll('.hi-cascader-menu__item')[0].click();
105
- expect(document.querySelectorAll('.hi-cascader__popper')).toHaveLength(1);
106
- expect(changeCallback).not.toHaveBeenCalled(); // 切换
107
-
108
- document.querySelectorAll('.hi-cascader-menu')[1].querySelectorAll('.hi-cascader-menu__item')[0].click();
109
- expect(document.querySelectorAll('.hi-cascader-menu')[2].querySelectorAll('.hi-cascader-menu__item')).toHaveLength(2);
110
- expect(document.querySelectorAll('.hi-cascader-menu')[2].querySelectorAll('.hi-cascader-menu__item')[0].textContent).toEqual('小米3');
111
- expect(document.querySelectorAll('.hi-cascader-menu')[2].querySelectorAll('.hi-cascader-menu__item')[1].textContent).toEqual('小米4'); // 选中小米3
112
-
113
- document.querySelectorAll('.hi-cascader-menu')[2].querySelectorAll('.hi-cascader-menu__item')[0].click();
114
- expect(wrapper.find('Cascader').state().cascaderValue).toEqual(['手机', '小米', '小米3']);
115
- expect(changeCallback).toHaveBeenCalledTimes(1);
116
- expect(changeCallback.mock.results[0].value).toEqual(['手机', '小米', '小米3']);
117
- expect(document.querySelectorAll('.hi-popper__container--hide')).toHaveLength(1); // 收起
118
- });
119
- it('自定义字段名', function () {
120
- var options = [{
121
- goodsId: '手机',
122
- goodsName: '手机',
123
- subGoods: [{
124
- goodsId: '小米',
125
- goodsName: '小米',
126
- subGoods: [{
127
- goodsId: '小米3',
128
- goodsName: '小米3'
129
- }, {
130
- goodsId: '小米4',
131
- goodsName: '小米4'
132
- }]
133
- }, {
134
- goodsId: '红米',
135
- goodsName: '红米',
136
- subGoods: [{
137
- goodsId: '红米3',
138
- goodsName: '红米3'
139
- }, {
140
- goodsId: '红米4',
141
- goodsName: '红米4'
142
- }]
143
- }]
144
- }, {
145
- goodsId: '电视',
146
- goodsName: '电视',
147
- subGoods: [{
148
- goodsId: '小米电视4A',
149
- goodsName: '小米电视4A'
150
- }, {
151
- goodsId: '小米电视4C',
152
- goodsName: '小米电视4C'
153
- }]
154
- }];
155
- wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_["default"], {
156
- onChange: changeCallback,
157
- fieldNames: {
158
- label: 'goodsName',
159
- value: 'goodsId',
160
- children: 'subGoods'
161
- },
162
- value: ['手机', '红米', '红米4'],
163
- options: options,
164
- style: {
165
- width: '220px'
166
- }
167
- })); // 测试默认值
168
-
169
- expect(wrapper.find('Cascader').state().cascaderValue).toEqual(['手机', '红米', '红米4']);
170
- expect(document.querySelectorAll('.hi-cascader__popper')).toHaveLength(0);
171
- wrapper.find('.hi-cascader__input-container').simulate('click'); // 展开
172
-
173
- expect(document.querySelectorAll('.hi-cascader__popper')).toHaveLength(1); // 测试默认值选中
174
-
175
- expect(document.querySelectorAll('.hi-cascader-menu')[0].querySelector('.hi-cascader-menu__item-active').textContent).toEqual('手机');
176
- expect(document.querySelectorAll('.hi-cascader-menu')[1].querySelector('.hi-cascader-menu__item-active').textContent).toEqual('红米');
177
- expect(document.querySelectorAll('.hi-cascader-menu')[2].querySelector('.hi-cascader-menu__item-active').textContent).toEqual('红米4'); // 选中红米3
178
-
179
- document.querySelectorAll('.hi-cascader-menu')[2].querySelectorAll('.hi-cascader-menu__item')[0].click();
180
- expect(wrapper.find('Cascader').state().cascaderValue).toEqual(['手机', '红米', '红米3']);
181
- expect(changeCallback).toHaveBeenCalledTimes(1);
182
- expect(changeCallback.mock.results[0].value).toEqual(['手机', '红米', '红米3']);
183
- expect(document.querySelectorAll('.hi-popper__container--hide')).toHaveLength(1); // 收起
184
- });
185
- it('选择即改变', function () {
186
- wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_["default"], {
187
- onActiveItemChange: activeItemChangeCallback,
188
- onChange: changeCallback,
189
- changeOnSelect: true,
190
- options: options,
191
- style: {
192
- width: '220px'
193
- }
194
- })); // 测试默认值
195
-
196
- expect(wrapper.find('Cascader').state().cascaderValue).toEqual([]);
197
- wrapper.find('.hi-cascader__input-container').simulate('click'); // 展开
198
-
199
- document.querySelectorAll('.hi-cascader-menu')[0].querySelectorAll('.hi-cascader-menu__item')[0].click(); // test onChange
200
-
201
- expect(changeCallback).toHaveBeenCalledTimes(1);
202
- expect(changeCallback.mock.results[0].value).toEqual(['手机']); // test onActiveItemChange
203
-
204
- expect(activeItemChangeCallback).toHaveBeenCalledTimes(1);
205
- expect(activeItemChangeCallback.mock.results[0].value).toEqual(['手机']);
206
- expect(wrapper.find('Cascader').state().cascaderValue).toEqual(['手机']);
207
- expect(document.querySelectorAll('.hi-popper__container--hide')).toHaveLength(0); // 未收起
208
-
209
- document.querySelectorAll('.hi-cascader-menu')[1].querySelectorAll('.hi-cascader-menu__item')[0].click(); // test onChange
210
-
211
- expect(changeCallback).toHaveBeenCalledTimes(2);
212
- expect(changeCallback.mock.results[1].value).toEqual(['手机', '小米']); // test onActiveItemChange
213
-
214
- expect(activeItemChangeCallback).toHaveBeenCalledTimes(2);
215
- expect(activeItemChangeCallback.mock.results[1].value).toEqual(['手机', '小米']);
216
- expect(wrapper.find('Cascader').state().cascaderValue).toEqual(['手机', '小米']);
217
- expect(document.querySelectorAll('.hi-popper__container--hide')).toHaveLength(0); // 未收起
218
-
219
- document.querySelectorAll('.hi-cascader-menu')[2].querySelectorAll('.hi-cascader-menu__item')[0].click(); // test onChange
220
-
221
- expect(changeCallback).toHaveBeenCalledTimes(3);
222
- expect(changeCallback.mock.results[2].value).toEqual(['手机', '小米', '小米3']); // test onActiveItemChange
223
-
224
- expect(activeItemChangeCallback).toHaveBeenCalledTimes(2);
225
- expect(wrapper.find('Cascader').state().cascaderValue).toEqual(['手机', '小米', '小米3']);
226
- expect(document.querySelectorAll('.hi-popper__container--hide')).toHaveLength(1); // 收起
227
- });
228
- it('自定义显示', function () {
229
- wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_["default"], {
230
- onChange: changeCallback,
231
- options: options,
232
- style: {
233
- width: '220px'
234
- },
235
- displayRender: function displayRender(values) {
236
- return values.join(' > ');
237
- }
238
- }));
239
- wrapper.find('.hi-cascader__input-container').simulate('click'); // 展开
240
-
241
- document.querySelectorAll('.hi-cascader-menu')[0].querySelectorAll('.hi-cascader-menu__item')[0].click();
242
- document.querySelectorAll('.hi-cascader-menu')[1].querySelectorAll('.hi-cascader-menu__item')[0].click();
243
- document.querySelectorAll('.hi-cascader-menu')[2].querySelectorAll('.hi-cascader-menu__item')[0].click();
244
- expect(changeCallback).toHaveBeenCalledTimes(1);
245
- expect(wrapper.find('Cascader').state().cascaderValue).toEqual(['手机', '小米', '小米3']);
246
- expect(wrapper.find('.hi-cascader__input-keyword').instance().value).toEqual('手机 > 小米 > 小米3');
247
- expect(document.querySelectorAll('.hi-popper__container--hide')).toHaveLength(1); // 收起
248
- });
249
- it('搜索', function () {
250
- wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react["default"].createElement(_["default"], {
251
- onChange: changeCallback,
252
- noFoundTip: "\u672A\u641C\u7D22\u5230\u76F8\u5173\u5185\u5BB9",
253
- searchable: true,
254
- options: options,
255
- style: {
256
- width: '220px'
257
- }
258
- }));
259
- wrapper.find('.hi-cascader__input-container').simulate('click'); // 展开
260
-
261
- wrapper.find('input').simulate('change', {
262
- target: {
263
- value: '00'
264
- }
265
- }); // 无搜索结果
266
-
267
- wrapper.find('input').simulate('keyUp');
268
- expect(document.querySelectorAll('.hi-cascader-menu')).toHaveLength(1);
269
- expect(document.querySelector('.hi-cascader-menu__item').textContent).toEqual('未搜索到相关内容');
270
- wrapper.find('input').simulate('change', {
271
- target: {
272
- value: '3'
273
- }
274
- });
275
- wrapper.find('input').simulate('keyUp');
276
- expect(document.querySelectorAll('.hi-cascader-menu')).toHaveLength(1);
277
- expect(document.querySelectorAll('.hi-cascader-menu__item')).toHaveLength(2);
278
- document.querySelectorAll('.hi-cascader-menu__item')[0].click();
279
- expect(changeCallback).toHaveBeenCalledTimes(1);
280
- expect(wrapper.find('Cascader').state().cascaderValue).toEqual(['手机', '小米', '小米3']);
281
- expect(document.querySelectorAll('.hi-popper__container--hide')).toHaveLength(1); // 收起
282
- });
283
- });