@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,571 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
6
+
7
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
8
+
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+
11
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
12
+
13
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
+
15
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
16
+
17
+ var _react = _interopRequireDefault(require("react"));
18
+
19
+ var _enzyme = require("enzyme");
20
+
21
+ var _index = _interopRequireDefault(require("../index"));
22
+
23
+ var _input = _interopRequireDefault(require("../../input"));
24
+
25
+ var _Form2 = _interopRequireDefault(require("../Form"));
26
+
27
+ var _Item = _interopRequireDefault(require("../Item"));
28
+
29
+ var _grid = _interopRequireDefault(require("../../grid"));
30
+
31
+ var _button = _interopRequireDefault(require("../../button"));
32
+
33
+ var _radio = _interopRequireDefault(require("../../radio"));
34
+
35
+ var Demo =
36
+ /*#__PURE__*/
37
+ function (_React$Component) {
38
+ (0, _inherits2["default"])(Demo, _React$Component);
39
+
40
+ function Demo(props) {
41
+ var _this;
42
+
43
+ (0, _classCallCheck2["default"])(this, Demo);
44
+ _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(Demo).call(this, props));
45
+ _this.form = _react["default"].createRef();
46
+ _this.state = {
47
+ form: {
48
+ name: '',
49
+ region: '',
50
+ count: ''
51
+ },
52
+ checkedIndex: -1,
53
+ rules: {
54
+ name: [{
55
+ required: true,
56
+ message: _react["default"].createElement("span", {
57
+ style: {
58
+ color: '#ccc'
59
+ }
60
+ }, "\u8BF7\u8F93\u5165\u540D\u79F0"),
61
+ trigger: 'onBlur,onChange'
62
+ }],
63
+ region: [{
64
+ required: true,
65
+ message: '请选择区域',
66
+ trigger: 'onChange'
67
+ }],
68
+ count: [{
69
+ required: true,
70
+ message: '请输入数量',
71
+ trigger: 'onChange'
72
+ }, {
73
+ validator: function validator(rule, value, cb) {
74
+ var count = parseInt(value);
75
+
76
+ if (isNaN(count)) {
77
+ cb('请输入数字');
78
+ } else if (count <= 0) {
79
+ cb('必须是正数');
80
+ } else {
81
+ cb();
82
+ }
83
+ },
84
+ trigger: 'onChange'
85
+ }]
86
+ }
87
+ };
88
+ return _this;
89
+ }
90
+
91
+ (0, _createClass2["default"])(Demo, [{
92
+ key: "handleSubmit",
93
+ value: function handleSubmit() {
94
+ var _this2 = this;
95
+
96
+ this.form.current.validate(function (valid) {
97
+ if (valid) {
98
+ alert('submit');
99
+ } else {
100
+ return false;
101
+ }
102
+ });
103
+ }
104
+ }, {
105
+ key: "cancelSubmit",
106
+ value: function cancelSubmit() {
107
+ this.setState({
108
+ form: {
109
+ name: '',
110
+ region: '',
111
+ count: ''
112
+ }
113
+ });
114
+ this.form.current.resetValidates();
115
+ }
116
+ }, {
117
+ key: "handleChange",
118
+ value: function handleChange(key, e, value, index) {
119
+ this.setState({
120
+ form: Object.assign({}, this.state.form, (0, _defineProperty2["default"])({}, key, value))
121
+ });
122
+
123
+ if (index !== undefined) {
124
+ this.setState({
125
+ checkedIndex: index
126
+ });
127
+ }
128
+ }
129
+ }, {
130
+ key: "render",
131
+ value: function render() {
132
+ var Row = _grid["default"].Row;
133
+ var Col = _grid["default"].Col;
134
+ var _this$state = this.state,
135
+ form = _this$state.form,
136
+ checkedIndex = _this$state.checkedIndex;
137
+ return _react["default"].createElement("div", null, _react["default"].createElement(_index["default"], {
138
+ ref: this.form,
139
+ model: form,
140
+ rules: this.state.rules,
141
+ labelWidth: "80"
142
+ }, _react["default"].createElement(Row, null, _react["default"].createElement(Col, {
143
+ span: 12
144
+ }, _react["default"].createElement(_index["default"].Item, {
145
+ label: "\u540D\u79F0",
146
+ prop: "name"
147
+ }, _react["default"].createElement(_input["default"], {
148
+ value: form.name,
149
+ placeholder: 'name',
150
+ onChange: this.handleChange.bind(this, 'name')
151
+ })), _react["default"].createElement(_index["default"].Item, null, _react["default"].createElement(_button["default"], {
152
+ type: "primary",
153
+ onClick: this.handleSubmit.bind(this)
154
+ }, "\u63D0\u4EA4"), _react["default"].createElement(_button["default"], {
155
+ onClick: this.cancelSubmit.bind(this)
156
+ }, "\u91CD\u7F6E"))))));
157
+ }
158
+ }]);
159
+ return Demo;
160
+ }(_react["default"].Component);
161
+
162
+ var Demo2 =
163
+ /*#__PURE__*/
164
+ function (_React$Component2) {
165
+ (0, _inherits2["default"])(Demo2, _React$Component2);
166
+
167
+ function Demo2(props) {
168
+ var _this3;
169
+
170
+ (0, _classCallCheck2["default"])(this, Demo2);
171
+ _this3 = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(Demo2).call(this, props));
172
+ _this3.form = _react["default"].createRef();
173
+ _this3.state = {
174
+ form: {
175
+ name: '',
176
+ region: '',
177
+ count: ''
178
+ },
179
+ checkedIndex: -1,
180
+ rules: {
181
+ name: [{
182
+ required: true,
183
+ message: _react["default"].createElement("span", {
184
+ style: {
185
+ color: '#ccc'
186
+ }
187
+ }, "\u8BF7\u8F93\u5165\u540D\u79F0"),
188
+ trigger: 'onBlur,onChange'
189
+ }],
190
+ region: [{
191
+ required: true,
192
+ message: '请选择区域',
193
+ trigger: 'onChange'
194
+ }],
195
+ count: [{
196
+ required: true,
197
+ message: '请输入数量',
198
+ trigger: 'onChange'
199
+ }, {
200
+ validator: function validator(rule, value, cb) {
201
+ var count = parseInt(value);
202
+
203
+ if (isNaN(count)) {
204
+ cb('请输入数字');
205
+ } else if (count <= 0) {
206
+ cb('必须是正数');
207
+ } else {
208
+ cb();
209
+ }
210
+ },
211
+ trigger: 'onChange'
212
+ }]
213
+ }
214
+ };
215
+ return _this3;
216
+ }
217
+
218
+ (0, _createClass2["default"])(Demo2, [{
219
+ key: "handleSubmit",
220
+ value: function handleSubmit() {
221
+ var _this4 = this;
222
+
223
+ this.form.current.validate(function (valid) {
224
+ if (valid) {
225
+ alert('submit');
226
+ } else {
227
+ return false;
228
+ }
229
+ });
230
+ }
231
+ }, {
232
+ key: "render",
233
+ value: function render() {
234
+ var Row = _grid["default"].Row;
235
+ var Col = _grid["default"].Col;
236
+ var form = this.state.form;
237
+ return _react["default"].createElement("div", null, _react["default"].createElement(_index["default"], {
238
+ ref: this.form,
239
+ model: form,
240
+ rules: this.state.rules,
241
+ labelWidth: "80"
242
+ }, _react["default"].createElement(Row, null, _react["default"].createElement(Col, {
243
+ span: 12
244
+ }, _react["default"].createElement(_index["default"].Item, null, _react["default"].createElement(_button["default"], {
245
+ type: "primary",
246
+ onClick: this.handleSubmit.bind(this)
247
+ }, "\u63D0\u4EA4"))))));
248
+ }
249
+ }]);
250
+ return Demo2;
251
+ }(_react["default"].Component);
252
+
253
+ var Demo3 =
254
+ /*#__PURE__*/
255
+ function (_React$Component3) {
256
+ (0, _inherits2["default"])(Demo3, _React$Component3);
257
+
258
+ function Demo3(props) {
259
+ var _this5;
260
+
261
+ (0, _classCallCheck2["default"])(this, Demo3);
262
+ _this5 = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(Demo3).call(this, props));
263
+ _this5.form = _react["default"].createRef();
264
+ _this5.state = {
265
+ form: {
266
+ name: '',
267
+ region: '',
268
+ count: ''
269
+ },
270
+ checkedIndex: -1
271
+ };
272
+ return _this5;
273
+ }
274
+
275
+ (0, _createClass2["default"])(Demo3, [{
276
+ key: "handleSubmit",
277
+ value: function handleSubmit() {
278
+ var _this6 = this;
279
+
280
+ this.form.current.validate(function (valid) {
281
+ if (valid) {
282
+ alert('submit');
283
+ } else {
284
+ return false;
285
+ }
286
+ });
287
+ }
288
+ }, {
289
+ key: "render",
290
+ value: function render() {
291
+ var Row = _grid["default"].Row;
292
+ var Col = _grid["default"].Col;
293
+ var form = this.state.form;
294
+ return _react["default"].createElement("div", null, _react["default"].createElement(_index["default"], {
295
+ ref: this.form,
296
+ model: form,
297
+ labelWidth: "80"
298
+ }, _react["default"].createElement(Row, null, _react["default"].createElement(Col, {
299
+ span: 12
300
+ }, _react["default"].createElement(_index["default"].Item, {
301
+ label: "\u540D\u79F0",
302
+ prop: "name"
303
+ }, _react["default"].createElement(_input["default"], {
304
+ value: form.name,
305
+ placeholder: 'name'
306
+ })), _react["default"].createElement(_index["default"].Item, null, _react["default"].createElement(_button["default"], {
307
+ type: "primary",
308
+ onClick: this.handleSubmit.bind(this)
309
+ }, "\u63D0\u4EA4"))))));
310
+ }
311
+ }]);
312
+ return Demo3;
313
+ }(_react["default"].Component);
314
+
315
+ describe('Form', function () {
316
+ it('should have the correct placement', function () {
317
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], null, _react["default"].createElement(_index["default"].Item, {
318
+ label: "\u8D26\u53F7",
319
+ labelWidth: "50"
320
+ }, _react["default"].createElement(_input["default"], {
321
+ placeholder: '账号'
322
+ })), _react["default"].createElement(_index["default"].Item, {
323
+ label: "\u5BC6\u7801",
324
+ labelWidth: "50"
325
+ }, _react["default"].createElement(_input["default"], {
326
+ type: "password",
327
+ placeholder: '密码'
328
+ }))));
329
+ expect(wrapper.find('.hi-form--line')).toHaveLength(0);
330
+ wrapper.setProps({
331
+ placement: 'vertical'
332
+ });
333
+ expect(wrapper.find('.hi-form--line')).toHaveLength(0);
334
+ wrapper.setProps({
335
+ placement: 'horizontal'
336
+ });
337
+ expect(wrapper.find('.hi-form--inline')).toHaveLength(1);
338
+ wrapper.unmount();
339
+ });
340
+ it('should align the label by labelPlacement', function () {
341
+ ;
342
+ ['left', 'right', 'top'].forEach(function (labelPlacement) {
343
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
344
+ labelPlacement: labelPlacement
345
+ }, _react["default"].createElement(_index["default"].Item, {
346
+ label: "\u8D26\u53F7",
347
+ labelWidth: "50"
348
+ }, _react["default"].createElement(_input["default"], {
349
+ placeholder: '账号'
350
+ })), _react["default"].createElement(_index["default"].Item, {
351
+ label: "\u5BC6\u7801",
352
+ labelWidth: "50"
353
+ }, _react["default"].createElement(_input["default"], {
354
+ type: "password",
355
+ placeholder: '密码'
356
+ }))));
357
+ expect(wrapper.find(".hi-form--label--".concat(labelPlacement))).toHaveLength(1);
358
+ var wrapperLegacy = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
359
+ labelPositon: labelPlacement
360
+ }, _react["default"].createElement(_index["default"].Item, {
361
+ label: "\u8D26\u53F7",
362
+ labelWidth: "50"
363
+ }, _react["default"].createElement(_input["default"], {
364
+ placeholder: '账号'
365
+ })), _react["default"].createElement(_index["default"].Item, {
366
+ label: "\u5BC6\u7801",
367
+ labelWidth: "50"
368
+ }, _react["default"].createElement(_input["default"], {
369
+ type: "password",
370
+ placeholder: '密码'
371
+ })))); // expect(wrapperLegacy.find(`.hi-form--label--${labelPlacement}`)).toHaveLength(1)
372
+
373
+ wrapper.unmount();
374
+ wrapperLegacy.unmount();
375
+ });
376
+ });
377
+ it('should have the label width', function () {
378
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], null, _react["default"].createElement(_index["default"].Item, {
379
+ label: "\u8D26\u53F7",
380
+ labelWidth: "50"
381
+ }, _react["default"].createElement(_input["default"], {
382
+ placeholder: '账号'
383
+ })), _react["default"].createElement(_index["default"].Item, {
384
+ label: "\u5BC6\u7801",
385
+ labelWidth: "50"
386
+ }, _react["default"].createElement(_input["default"], {
387
+ type: "password",
388
+ placeholder: '密码'
389
+ }))));
390
+ expect(wrapper.find('label.hi-form-item__label').map(function (label) {
391
+ return label.prop('style').width;
392
+ })).toEqual([50, 50]);
393
+ wrapper.unmount();
394
+ });
395
+ it('should show colon', function () {
396
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], null, _react["default"].createElement(_index["default"].Item, {
397
+ label: "\u8D26\u53F7",
398
+ labelWidth: "50"
399
+ }, _react["default"].createElement(_input["default"], {
400
+ placeholder: '账号'
401
+ })), _react["default"].createElement(_index["default"].Item, {
402
+ label: "\u5BC6\u7801",
403
+ labelWidth: "50"
404
+ }, _react["default"].createElement(_input["default"], {
405
+ type: "password",
406
+ placeholder: '密码'
407
+ }))));
408
+ expect(wrapper.find('label.hi-form-item__label').map(function (label) {
409
+ return label.text();
410
+ })).toEqual(['账号:', '密码:']);
411
+ wrapper.setProps({
412
+ showColon: false
413
+ });
414
+ expect(wrapper.find('label.hi-form-item__label').map(function (label) {
415
+ return label.text();
416
+ })).toEqual(['账号', '密码']);
417
+ wrapper.unmount();
418
+ });
419
+ it('should field has colon when field showColon is true and form showColon is false', function () {
420
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_index["default"], {
421
+ showColon: false
422
+ }, _react["default"].createElement(_index["default"].Item, {
423
+ label: "\u8D26\u53F7",
424
+ labelWidth: "50",
425
+ showColon: true
426
+ }, _react["default"].createElement(_input["default"], {
427
+ placeholder: '账号'
428
+ })), _react["default"].createElement(_index["default"].Item, {
429
+ label: "\u5BC6\u7801",
430
+ labelWidth: "50"
431
+ }, _react["default"].createElement(_input["default"], {
432
+ type: "password",
433
+ placeholder: '密码'
434
+ }))));
435
+ expect(wrapper.find('label.hi-form-item__label').map(function (label) {
436
+ return label.text();
437
+ })).toEqual(['账号:', '密码']);
438
+ wrapper.unmount();
439
+ });
440
+ it('should validate require field', function () {
441
+ jest.useFakeTimers();
442
+ var localeDatas = {
443
+ form: {
444
+ colon: ':'
445
+ }
446
+ };
447
+ var blurCb = jest.fn();
448
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_Form2["default"], {
449
+ rules: {
450
+ name: {
451
+ required: true,
452
+ message: '请输入名称',
453
+ trigger: 'onChange'
454
+ }
455
+ },
456
+ localeDatas: localeDatas,
457
+ model: {
458
+ name: ''
459
+ }
460
+ }, _react["default"].createElement(_Item["default"], {
461
+ label: "\u540D\u79F0",
462
+ field: "name"
463
+ }, _react["default"].createElement(_input["default"], {
464
+ placeholder: "name",
465
+ onChange: function onChange(e) {
466
+ wrapper.setProps({
467
+ model: {
468
+ name: e.target.value
469
+ }
470
+ });
471
+ },
472
+ onBlur: blurCb
473
+ }))));
474
+ var cb = jest.fn();
475
+ wrapper.instance().validate(cb);
476
+ expect(wrapper.find('.hi-form-item--msg__error').text()).toEqual('请输入名称');
477
+ wrapper.find('input').simulate('change', {
478
+ target: {
479
+ value: 'hiui'
480
+ }
481
+ });
482
+ jest.runAllTimers();
483
+ wrapper.instance().validate(cb);
484
+ expect(wrapper.find('.hi-form-item--msg__error').text()).toEqual('');
485
+ wrapper.find('input').simulate('change', {
486
+ target: {
487
+ value: ''
488
+ }
489
+ });
490
+ jest.runAllTimers();
491
+ wrapper.find('input').simulate('blur');
492
+ jest.runAllTimers();
493
+ expect(blurCb).toHaveBeenCalled();
494
+ expect(wrapper.find('.hi-form-item--msg__error').text()).toEqual('请输入名称');
495
+ wrapper.unmount();
496
+ jest.useRealTimers();
497
+ });
498
+ it('should validate single field', function () {
499
+ jest.useFakeTimers();
500
+ var localeDatas = {
501
+ form: {
502
+ colon: ':'
503
+ }
504
+ };
505
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(_Form2["default"], {
506
+ rules: {
507
+ name: {
508
+ required: true,
509
+ message: '请输入名称',
510
+ trigger: 'onChange'
511
+ }
512
+ },
513
+ localeDatas: localeDatas,
514
+ model: {
515
+ name: ''
516
+ }
517
+ }, _react["default"].createElement(_Item["default"], {
518
+ label: "\u540D\u79F0",
519
+ field: "name"
520
+ }, _react["default"].createElement(_input["default"], {
521
+ placeholder: "name",
522
+ onChange: function onChange(e) {
523
+ wrapper.setProps({
524
+ model: {
525
+ name: e.target.value
526
+ }
527
+ });
528
+ },
529
+ onBlur: jest.fn()
530
+ }))));
531
+ var cb = jest.fn();
532
+ wrapper.instance().validateField('name', cb);
533
+ expect(wrapper.find('.hi-form-item--msg__error').text()).toEqual('请输入名称');
534
+ wrapper.find('input').simulate('change', {
535
+ target: {
536
+ value: 'hiui'
537
+ }
538
+ });
539
+ jest.runAllTimers();
540
+ wrapper.instance().validate(cb);
541
+ expect(wrapper.find('.hi-form-item--msg__error').text()).toEqual('');
542
+ expect(function () {
543
+ return wrapper.instance().validateField('errorField', cb);
544
+ }).toThrow();
545
+ wrapper.unmount();
546
+ jest.useRealTimers();
547
+ });
548
+ it('cancelSubmit resetValidates', function () {
549
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(Demo, null));
550
+ expect(wrapper.find('.hi-form')).toHaveLength(1);
551
+ wrapper.find('button').at(0).simulate('click');
552
+ expect(wrapper.find('.hi-form-item--msg__error').find('span')).toHaveLength(1);
553
+ wrapper.find('button').at(1).simulate('click');
554
+ expect(wrapper.find('.hi-form-item--msg__error').find('span')).toHaveLength(0);
555
+ wrapper.unmount();
556
+ });
557
+ it('validate When No item', function () {
558
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(Demo2, null));
559
+ expect(wrapper.find('.hi-form')).toHaveLength(1);
560
+ wrapper.find('button').at(0).simulate('click');
561
+ expect(wrapper.find('.hi-form-item--msg__error').find('span')).toHaveLength(0);
562
+ wrapper.unmount();
563
+ });
564
+ it('validate When No rules', function () {
565
+ var wrapper = (0, _enzyme.mount)(_react["default"].createElement(Demo3, null));
566
+ expect(wrapper.find('.hi-form')).toHaveLength(1);
567
+ wrapper.find('button').at(0).simulate('click');
568
+ expect(wrapper.find('.hi-form-item--msg__error').find('span')).toHaveLength(0);
569
+ wrapper.unmount();
570
+ });
571
+ });