tntd 2.7.3 → 2.7.5

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 (389) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +72 -0
  3. package/es/actions/index.js +12 -0
  4. package/es/actions/index.js.map +1 -0
  5. package/es/actions/index.less +70 -0
  6. package/es/check-card/group.js +149 -0
  7. package/es/check-card/group.js.map +1 -0
  8. package/es/check-card/index.js +120 -0
  9. package/es/check-card/index.js.map +1 -0
  10. package/es/check-card/index.less +179 -0
  11. package/es/color-picker/ColorPicker.js +1 -1
  12. package/es/color-picker/ColorPicker.js.map +1 -1
  13. package/es/color-picker/index.less +1 -1
  14. package/es/ellipsis/index.js +13 -3
  15. package/es/ellipsis/index.js.map +1 -1
  16. package/es/ellipsis/index.less +2 -2
  17. package/es/handle/handle.js +102 -0
  18. package/es/handle/handle.js.map +1 -0
  19. package/es/handle/index.js +20 -9
  20. package/es/handle/index.js.map +1 -1
  21. package/es/handle/index.less +1 -1
  22. package/es/index.js +7 -0
  23. package/es/index.js.map +1 -1
  24. package/es/index.less +5 -0
  25. package/es/locale/en_US.js +3 -1
  26. package/es/locale/en_US.js.map +1 -1
  27. package/es/locale/zh_CN.js +3 -1
  28. package/es/locale/zh_CN.js.map +1 -1
  29. package/es/mention/index.js +4 -0
  30. package/es/mention/index.js.map +1 -0
  31. package/es/page/Box.js +1 -1
  32. package/es/page/Box.js.map +1 -1
  33. package/es/page/index.js +1 -1
  34. package/es/page/index.js.map +1 -1
  35. package/es/page/index.less +5 -5
  36. package/es/prev-locale.js +1 -1
  37. package/es/prev-locale.js.map +1 -1
  38. package/es/query-form/Field/SelectInput.js +2 -2
  39. package/es/query-form/Field/SelectInput.js.map +1 -1
  40. package/es/query-form/Field/index.js +2 -1
  41. package/es/query-form/Field/index.js.map +1 -1
  42. package/es/query-list-scene/QueryForm.js +2 -2
  43. package/es/query-list-scene/QueryForm.js.map +1 -1
  44. package/es/segmented/index.js +50 -0
  45. package/es/segmented/index.js.map +1 -0
  46. package/es/segmented/index.less +138 -0
  47. package/es/table/constants.js +53 -0
  48. package/es/table/constants.js.map +1 -1
  49. package/es/table/context.js.map +1 -1
  50. package/es/table/hooks/use-column-setting.js.map +1 -1
  51. package/es/table/table.js +119 -6
  52. package/es/table/table.js.map +1 -1
  53. package/es/table/table.less +3 -1
  54. package/es/table/total-shower.js +6 -0
  55. package/es/table/total-shower.js.map +1 -0
  56. package/es/title/index.js +5 -5
  57. package/es/title/index.js.map +1 -1
  58. package/es/title/index.less +10 -10
  59. package/es/tntd-form/Form.js +1 -1
  60. package/es/tntd-form/Form.js.map +1 -1
  61. package/es/tntd-form/TntdForm/components/Item.js +42 -30
  62. package/es/tntd-form/TntdForm/components/ItemComp.js +167 -158
  63. package/es/tntd-form/TntdForm/components/List.js +89 -78
  64. package/es/tntd-form/TntdForm/index.js +38 -33
  65. package/es/tntd-form/TntdForm/interface.js +1 -2
  66. package/es/tntd-form/TntdForm/store.js +1 -2
  67. package/es/tntd-form/TntdForm/utils.js +158 -168
  68. package/es/tntd-modal/index.js +54 -21
  69. package/es/tntd-modal/index.js.map +1 -1
  70. package/es/tntd-modal/index.less +83 -63
  71. package/es/utils/index.js +1 -0
  72. package/es/utils/index.js.map +1 -1
  73. package/es/utils/simple-template.js +11 -0
  74. package/es/utils/simple-template.js.map +1 -0
  75. package/es/water-mark/index.js +99 -0
  76. package/es/water-mark/index.js.map +1 -0
  77. package/lib/actions/index.d.ts +15 -0
  78. package/lib/actions/index.d.ts.map +1 -0
  79. package/lib/actions/index.js +17 -0
  80. package/lib/actions/index.js.map +1 -0
  81. package/lib/actions/index.less +70 -0
  82. package/lib/check-card/group.d.ts +130 -0
  83. package/lib/check-card/group.d.ts.map +1 -0
  84. package/lib/check-card/group.js +179 -0
  85. package/lib/check-card/group.js.map +1 -0
  86. package/lib/check-card/index.d.ts +136 -0
  87. package/lib/check-card/index.d.ts.map +1 -0
  88. package/lib/check-card/index.js +148 -0
  89. package/lib/check-card/index.js.map +1 -0
  90. package/lib/check-card/index.less +179 -0
  91. package/lib/color-picker/ColorPicker.js +1 -1
  92. package/lib/color-picker/ColorPicker.js.map +1 -1
  93. package/lib/color-picker/index.less +1 -1
  94. package/lib/ellipsis/index.d.ts.map +1 -1
  95. package/lib/ellipsis/index.js +13 -3
  96. package/lib/ellipsis/index.js.map +1 -1
  97. package/lib/ellipsis/index.less +2 -2
  98. package/lib/handle/handle.d.ts +3 -0
  99. package/lib/handle/handle.d.ts.map +1 -0
  100. package/lib/handle/handle.js +130 -0
  101. package/lib/handle/handle.js.map +1 -0
  102. package/lib/handle/index.d.ts.map +1 -1
  103. package/lib/handle/index.js +20 -9
  104. package/lib/handle/index.js.map +1 -1
  105. package/lib/handle/index.less +1 -1
  106. package/lib/index.d.ts +7 -0
  107. package/lib/index.d.ts.map +1 -1
  108. package/lib/index.js +11 -1
  109. package/lib/index.js.map +1 -1
  110. package/lib/index.less +5 -0
  111. package/lib/locale/default.d.ts +1 -0
  112. package/lib/locale/default.d.ts.map +1 -1
  113. package/lib/locale/en_US.d.ts +1 -0
  114. package/lib/locale/en_US.d.ts.map +1 -1
  115. package/lib/locale/en_US.js +3 -1
  116. package/lib/locale/en_US.js.map +1 -1
  117. package/lib/locale/zh_CN.d.ts +1 -0
  118. package/lib/locale/zh_CN.d.ts.map +1 -1
  119. package/lib/locale/zh_CN.js +3 -1
  120. package/lib/locale/zh_CN.js.map +1 -1
  121. package/lib/mention/index.js +25 -0
  122. package/lib/page/Box.js +1 -1
  123. package/lib/page/Box.js.map +1 -1
  124. package/lib/page/index.js +1 -1
  125. package/lib/page/index.js.map +1 -1
  126. package/lib/page/index.less +5 -5
  127. package/lib/prev-locale.js +1 -1
  128. package/lib/prev-locale.js.map +1 -1
  129. package/lib/query-form/Field/SelectInput.d.ts.map +1 -1
  130. package/lib/query-form/Field/SelectInput.js +2 -2
  131. package/lib/query-form/Field/SelectInput.js.map +1 -1
  132. package/lib/query-form/Field/index.d.ts.map +1 -1
  133. package/lib/query-form/Field/index.js +2 -1
  134. package/lib/query-form/Field/index.js.map +1 -1
  135. package/lib/query-list-scene/QueryForm.d.ts +1 -1
  136. package/lib/query-list-scene/QueryForm.d.ts.map +1 -1
  137. package/lib/query-list-scene/QueryForm.js +2 -2
  138. package/lib/query-list-scene/QueryForm.js.map +1 -1
  139. package/lib/segmented/index.d.ts +23 -0
  140. package/lib/segmented/index.d.ts.map +1 -0
  141. package/lib/segmented/index.js +78 -0
  142. package/lib/segmented/index.js.map +1 -0
  143. package/lib/segmented/index.less +138 -0
  144. package/lib/table/constants.d.ts +2 -0
  145. package/lib/table/constants.d.ts.map +1 -1
  146. package/lib/table/constants.js +54 -1
  147. package/lib/table/constants.js.map +1 -1
  148. package/lib/table/context.d.ts +1 -0
  149. package/lib/table/context.d.ts.map +1 -1
  150. package/lib/table/context.js.map +1 -1
  151. package/lib/table/hooks/use-column-setting.d.ts +4 -1
  152. package/lib/table/hooks/use-column-setting.d.ts.map +1 -1
  153. package/lib/table/hooks/use-column-setting.js.map +1 -1
  154. package/lib/table/table.d.ts +2 -1
  155. package/lib/table/table.d.ts.map +1 -1
  156. package/lib/table/table.js +119 -6
  157. package/lib/table/table.js.map +1 -1
  158. package/lib/table/table.less +3 -1
  159. package/lib/table/total-shower.d.ts +9 -0
  160. package/lib/table/total-shower.d.ts.map +1 -0
  161. package/lib/table/total-shower.js +13 -0
  162. package/lib/table/total-shower.js.map +1 -0
  163. package/lib/title/index.d.ts +11 -1
  164. package/lib/title/index.d.ts.map +1 -1
  165. package/lib/title/index.js +5 -5
  166. package/lib/title/index.js.map +1 -1
  167. package/lib/title/index.less +10 -10
  168. package/lib/tntd-form/Form.js +1 -1
  169. package/lib/tntd-form/Form.js.map +1 -1
  170. package/lib/tntd-form/TntdForm/components/Item.js +55 -61
  171. package/lib/tntd-form/TntdForm/components/ItemComp.js +203 -190
  172. package/lib/tntd-form/TntdForm/components/List.js +118 -111
  173. package/lib/tntd-form/TntdForm/index.js +61 -67
  174. package/lib/tntd-form/TntdForm/interface.js +4 -2
  175. package/lib/tntd-form/TntdForm/store.js +8 -7
  176. package/lib/tntd-form/TntdForm/utils.js +182 -184
  177. package/lib/tntd-modal/index.d.ts +15 -2
  178. package/lib/tntd-modal/index.d.ts.map +1 -1
  179. package/lib/tntd-modal/index.js +58 -23
  180. package/lib/tntd-modal/index.js.map +1 -1
  181. package/lib/tntd-modal/index.less +83 -63
  182. package/lib/utils/index.d.ts +1 -0
  183. package/lib/utils/index.d.ts.map +1 -1
  184. package/lib/utils/index.js +1 -0
  185. package/lib/utils/index.js.map +1 -1
  186. package/lib/utils/simple-template.d.ts +9 -0
  187. package/lib/utils/simple-template.d.ts.map +1 -0
  188. package/lib/utils/simple-template.js +15 -0
  189. package/lib/utils/simple-template.js.map +1 -0
  190. package/lib/water-mark/index.d.ts +49 -0
  191. package/lib/water-mark/index.d.ts.map +1 -0
  192. package/lib/water-mark/index.js +129 -0
  193. package/lib/water-mark/index.js.map +1 -0
  194. package/package.json +21 -3
  195. package/es/_util/colors.js +0 -3
  196. package/es/_util/colors.js.map +0 -1
  197. package/es/_util/easings.js +0 -9
  198. package/es/_util/easings.js.map +0 -1
  199. package/es/_util/getDataOrAriaProps.js +0 -8
  200. package/es/_util/getDataOrAriaProps.js.map +0 -1
  201. package/es/_util/getScroll.js +0 -14
  202. package/es/_util/getScroll.js.map +0 -1
  203. package/es/_util/interopDefault.js +0 -5
  204. package/es/_util/interopDefault.js.map +0 -1
  205. package/es/_util/isNumeric.js +0 -4
  206. package/es/_util/isNumeric.js.map +0 -1
  207. package/es/_util/motion.js +0 -22
  208. package/es/_util/motion.js.map +0 -1
  209. package/es/_util/openAnimation.js +0 -51
  210. package/es/_util/openAnimation.js.map +0 -1
  211. package/es/_util/raf.js +0 -25
  212. package/es/_util/raf.js.map +0 -1
  213. package/es/_util/reactNode.js +0 -6
  214. package/es/_util/reactNode.js.map +0 -1
  215. package/es/_util/ref.js +0 -15
  216. package/es/_util/ref.js.map +0 -1
  217. package/es/_util/responsiveObserve.js +0 -82
  218. package/es/_util/responsiveObserve.js.map +0 -1
  219. package/es/_util/scrollTo.js +0 -29
  220. package/es/_util/scrollTo.js.map +0 -1
  221. package/es/_util/styleChecker.js +0 -12
  222. package/es/_util/styleChecker.js.map +0 -1
  223. package/es/_util/throttleByAnimationFrame.js +0 -40
  224. package/es/_util/throttleByAnimationFrame.js.map +0 -1
  225. package/es/_util/transButton.js +0 -103
  226. package/es/_util/transButton.js.map +0 -1
  227. package/es/_util/triggerEvent.js +0 -8
  228. package/es/_util/triggerEvent.js.map +0 -1
  229. package/es/_util/type.js +0 -3
  230. package/es/_util/type.js.map +0 -1
  231. package/es/_util/warning.js +0 -5
  232. package/es/_util/warning.js.map +0 -1
  233. package/es/_util/wave.js +0 -228
  234. package/es/_util/wave.js.map +0 -1
  235. package/es/config-provider/context.js +0 -41
  236. package/es/config-provider/context.js.map +0 -1
  237. package/es/tntd-form/__tests__/demo-extend.test.js +0 -3
  238. package/es/tntd-form/__tests__/demo-extend.test.js.map +0 -1
  239. package/es/tntd-form/__tests__/demo.test.js +0 -3
  240. package/es/tntd-form/__tests__/demo.test.js.map +0 -1
  241. package/es/tntd-form/__tests__/image.test.js +0 -5
  242. package/es/tntd-form/__tests__/image.test.js.map +0 -1
  243. package/es/tntd-form/__tests__/index.test.js +0 -957
  244. package/es/tntd-form/__tests__/index.test.js.map +0 -1
  245. package/es/tntd-form/__tests__/list-noStyle.test.js +0 -41
  246. package/es/tntd-form/__tests__/list-noStyle.test.js.map +0 -1
  247. package/es/tntd-form/__tests__/list.test.js +0 -164
  248. package/es/tntd-form/__tests__/list.test.js.map +0 -1
  249. package/es/tntd-form/__tests__/ref.test.js +0 -45
  250. package/es/tntd-form/__tests__/ref.test.js.map +0 -1
  251. package/es/tntd-form/__tests__/type.test.js +0 -74
  252. package/es/tntd-form/__tests__/type.test.js.map +0 -1
  253. package/lib/_util/colors.d.ts +0 -3
  254. package/lib/_util/colors.d.ts.map +0 -1
  255. package/lib/_util/colors.js +0 -7
  256. package/lib/_util/colors.js.map +0 -1
  257. package/lib/_util/easings.d.ts +0 -2
  258. package/lib/_util/easings.d.ts.map +0 -1
  259. package/lib/_util/easings.js +0 -14
  260. package/lib/_util/easings.js.map +0 -1
  261. package/lib/_util/getDataOrAriaProps.d.ts +0 -2
  262. package/lib/_util/getDataOrAriaProps.d.ts.map +0 -1
  263. package/lib/_util/getDataOrAriaProps.js +0 -13
  264. package/lib/_util/getDataOrAriaProps.js.map +0 -1
  265. package/lib/_util/getScroll.d.ts +0 -2
  266. package/lib/_util/getScroll.d.ts.map +0 -1
  267. package/lib/_util/getScroll.js +0 -18
  268. package/lib/_util/getScroll.js.map +0 -1
  269. package/lib/_util/interopDefault.d.ts +0 -2
  270. package/lib/_util/interopDefault.d.ts.map +0 -1
  271. package/lib/_util/interopDefault.js +0 -9
  272. package/lib/_util/interopDefault.js.map +0 -1
  273. package/lib/_util/isNumeric.d.ts +0 -3
  274. package/lib/_util/isNumeric.d.ts.map +0 -1
  275. package/lib/_util/isNumeric.js +0 -7
  276. package/lib/_util/isNumeric.js.map +0 -1
  277. package/lib/_util/motion.d.ts +0 -24
  278. package/lib/_util/motion.d.ts.map +0 -1
  279. package/lib/_util/motion.js +0 -17
  280. package/lib/_util/motion.js.map +0 -1
  281. package/lib/_util/openAnimation.d.ts +0 -7
  282. package/lib/_util/openAnimation.d.ts.map +0 -1
  283. package/lib/_util/openAnimation.js +0 -58
  284. package/lib/_util/openAnimation.js.map +0 -1
  285. package/lib/_util/raf.d.ts +0 -10
  286. package/lib/_util/raf.d.ts.map +0 -1
  287. package/lib/_util/raf.js +0 -34
  288. package/lib/_util/raf.js.map +0 -1
  289. package/lib/_util/reactNode.d.ts +0 -3
  290. package/lib/_util/reactNode.d.ts.map +0 -1
  291. package/lib/_util/reactNode.js +0 -31
  292. package/lib/_util/reactNode.js.map +0 -1
  293. package/lib/_util/ref.d.ts +0 -4
  294. package/lib/_util/ref.d.ts.map +0 -1
  295. package/lib/_util/ref.js +0 -22
  296. package/lib/_util/ref.js.map +0 -1
  297. package/lib/_util/responsiveObserve.d.ts +0 -14
  298. package/lib/_util/responsiveObserve.d.ts.map +0 -1
  299. package/lib/_util/responsiveObserve.js +0 -83
  300. package/lib/_util/responsiveObserve.js.map +0 -1
  301. package/lib/_util/scrollTo.d.ts +0 -11
  302. package/lib/_util/scrollTo.d.ts.map +0 -1
  303. package/lib/_util/scrollTo.js +0 -34
  304. package/lib/_util/scrollTo.js.map +0 -1
  305. package/lib/_util/styleChecker.d.ts +0 -4
  306. package/lib/_util/styleChecker.d.ts.map +0 -1
  307. package/lib/_util/styleChecker.js +0 -14
  308. package/lib/_util/styleChecker.js.map +0 -1
  309. package/lib/_util/throttleByAnimationFrame.d.ts +0 -6
  310. package/lib/_util/throttleByAnimationFrame.d.ts.map +0 -1
  311. package/lib/_util/throttleByAnimationFrame.js +0 -49
  312. package/lib/_util/throttleByAnimationFrame.js.map +0 -1
  313. package/lib/_util/transButton.d.ts +0 -21
  314. package/lib/_util/transButton.d.ts.map +0 -1
  315. package/lib/_util/transButton.js +0 -112
  316. package/lib/_util/transButton.js.map +0 -1
  317. package/lib/_util/triggerEvent.d.ts +0 -2
  318. package/lib/_util/triggerEvent.d.ts.map +0 -1
  319. package/lib/_util/triggerEvent.js +0 -12
  320. package/lib/_util/triggerEvent.js.map +0 -1
  321. package/lib/_util/type.d.ts +0 -4
  322. package/lib/_util/type.d.ts.map +0 -1
  323. package/lib/_util/type.js +0 -9
  324. package/lib/_util/type.js.map +0 -1
  325. package/lib/_util/warning.d.ts +0 -5
  326. package/lib/_util/warning.d.ts.map +0 -1
  327. package/lib/_util/warning.js +0 -28
  328. package/lib/_util/warning.js.map +0 -1
  329. package/lib/_util/wave.d.ts +0 -26
  330. package/lib/_util/wave.d.ts.map +0 -1
  331. package/lib/_util/wave.js +0 -249
  332. package/lib/_util/wave.js.map +0 -1
  333. package/lib/config-provider/context.d.ts +0 -61
  334. package/lib/config-provider/context.d.ts.map +0 -1
  335. package/lib/config-provider/context.js +0 -64
  336. package/lib/config-provider/context.js.map +0 -1
  337. package/lib/tntd-form/TntdForm/components/Item.d.ts +0 -5
  338. package/lib/tntd-form/TntdForm/components/Item.d.ts.map +0 -1
  339. package/lib/tntd-form/TntdForm/components/Item.js.map +0 -1
  340. package/lib/tntd-form/TntdForm/components/ItemComp.d.ts +0 -5
  341. package/lib/tntd-form/TntdForm/components/ItemComp.d.ts.map +0 -1
  342. package/lib/tntd-form/TntdForm/components/ItemComp.js.map +0 -1
  343. package/lib/tntd-form/TntdForm/components/List.d.ts +0 -5
  344. package/lib/tntd-form/TntdForm/components/List.d.ts.map +0 -1
  345. package/lib/tntd-form/TntdForm/components/List.js.map +0 -1
  346. package/lib/tntd-form/TntdForm/index.d.ts +0 -10
  347. package/lib/tntd-form/TntdForm/index.d.ts.map +0 -1
  348. package/lib/tntd-form/TntdForm/index.js.map +0 -1
  349. package/lib/tntd-form/TntdForm/interface.d.ts +0 -93
  350. package/lib/tntd-form/TntdForm/interface.d.ts.map +0 -1
  351. package/lib/tntd-form/TntdForm/interface.js.map +0 -1
  352. package/lib/tntd-form/TntdForm/store.d.ts +0 -4
  353. package/lib/tntd-form/TntdForm/store.d.ts.map +0 -1
  354. package/lib/tntd-form/TntdForm/store.js.map +0 -1
  355. package/lib/tntd-form/TntdForm/utils.d.ts +0 -48
  356. package/lib/tntd-form/TntdForm/utils.d.ts.map +0 -1
  357. package/lib/tntd-form/TntdForm/utils.js.map +0 -1
  358. package/lib/tntd-form/__tests__/demo-extend.test.d.ts +0 -2
  359. package/lib/tntd-form/__tests__/demo-extend.test.d.ts.map +0 -1
  360. package/lib/tntd-form/__tests__/demo-extend.test.js +0 -5
  361. package/lib/tntd-form/__tests__/demo-extend.test.js.map +0 -1
  362. package/lib/tntd-form/__tests__/demo.test.d.ts +0 -2
  363. package/lib/tntd-form/__tests__/demo.test.d.ts.map +0 -1
  364. package/lib/tntd-form/__tests__/demo.test.js +0 -8
  365. package/lib/tntd-form/__tests__/demo.test.js.map +0 -1
  366. package/lib/tntd-form/__tests__/image.test.d.ts +0 -2
  367. package/lib/tntd-form/__tests__/image.test.d.ts.map +0 -1
  368. package/lib/tntd-form/__tests__/image.test.js +0 -7
  369. package/lib/tntd-form/__tests__/image.test.js.map +0 -1
  370. package/lib/tntd-form/__tests__/index.test.d.ts +0 -2
  371. package/lib/tntd-form/__tests__/index.test.d.ts.map +0 -1
  372. package/lib/tntd-form/__tests__/index.test.js +0 -981
  373. package/lib/tntd-form/__tests__/index.test.js.map +0 -1
  374. package/lib/tntd-form/__tests__/list-noStyle.test.d.ts +0 -2
  375. package/lib/tntd-form/__tests__/list-noStyle.test.d.ts.map +0 -1
  376. package/lib/tntd-form/__tests__/list-noStyle.test.js +0 -46
  377. package/lib/tntd-form/__tests__/list-noStyle.test.js.map +0 -1
  378. package/lib/tntd-form/__tests__/list.test.d.ts +0 -2
  379. package/lib/tntd-form/__tests__/list.test.d.ts.map +0 -1
  380. package/lib/tntd-form/__tests__/list.test.js +0 -169
  381. package/lib/tntd-form/__tests__/list.test.js.map +0 -1
  382. package/lib/tntd-form/__tests__/ref.test.d.ts +0 -2
  383. package/lib/tntd-form/__tests__/ref.test.d.ts.map +0 -1
  384. package/lib/tntd-form/__tests__/ref.test.js +0 -50
  385. package/lib/tntd-form/__tests__/ref.test.js.map +0 -1
  386. package/lib/tntd-form/__tests__/type.test.d.ts +0 -2
  387. package/lib/tntd-form/__tests__/type.test.d.ts.map +0 -1
  388. package/lib/tntd-form/__tests__/type.test.js +0 -98
  389. package/lib/tntd-form/__tests__/type.test.js.map +0 -1
@@ -1,957 +0,0 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import React, { useState } from 'react';
13
- import scrollIntoView from 'scroll-into-view-if-needed';
14
- import classNames from 'classnames';
15
- import Form from '..';
16
- import * as Util from '../util';
17
- import Button from '../../button';
18
- import Input from '../../input';
19
- import Select from '../../select';
20
- import Upload from '../../upload';
21
- import Cascader from '../../cascader';
22
- import Checkbox from '../../checkbox';
23
- import DatePicker from '../../date-picker';
24
- import InputNumber from '../../input-number';
25
- import Radio from '../../radio';
26
- import Switch from '../../switch';
27
- import TreeSelect from '../../tree-select';
28
- import mountTest from '../../../tests/shared/mountTest';
29
- import rtlTest from '../../../tests/shared/rtlTest';
30
- import { fireEvent, render, screen, pureRender, waitFakeTimer } from '../../../tests/utils';
31
- import ConfigProvider from '../../config-provider';
32
- import Drawer from '../../drawer';
33
- import zhCN from '../../locale/zh_CN';
34
- import Modal from '../../modal';
35
- const { RangePicker } = DatePicker;
36
- const { TextArea } = Input;
37
- jest.mock('scroll-into-view-if-needed');
38
- describe('Form', () => {
39
- mountTest(Form);
40
- mountTest(Form.Item);
41
- rtlTest(Form);
42
- rtlTest(Form.Item);
43
- scrollIntoView.mockImplementation(() => { });
44
- const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => { });
45
- const warnSpy = jest.spyOn(console, 'warn').mockImplementation(() => { });
46
- // const change = async (
47
- // container: ReturnType<typeof render>['container'],
48
- // index: number,
49
- // value: string,
50
- // executeMockTimer: boolean,
51
- // ) => {
52
- // fireEvent.change(container.querySelectorAll('input')?.[index], { target: { value } });
53
- // await sleep(200);
54
- // if (executeMockTimer) {
55
- // for (let i = 0; i < 10; i += 1) {
56
- // act(() => {
57
- // jest.runAllTimers();
58
- // });
59
- // }
60
- // await sleep(1);
61
- // }
62
- // };
63
- const changeValue = async (input, value, advTimer = 1000) => {
64
- let element;
65
- if (typeof input === 'number') {
66
- element = document.querySelectorAll('input')[input];
67
- }
68
- expect(element).toBeTruthy();
69
- fireEvent.change(element, {
70
- target: {
71
- value,
72
- },
73
- });
74
- if (advTimer) {
75
- await waitFakeTimer(advTimer / 20, 20);
76
- }
77
- };
78
- beforeEach(() => {
79
- document.body.innerHTML = '';
80
- jest.useFakeTimers();
81
- scrollIntoView.mockReset();
82
- });
83
- afterEach(() => {
84
- errorSpy.mockReset();
85
- });
86
- afterAll(() => {
87
- jest.clearAllTimers();
88
- jest.useRealTimers();
89
- errorSpy.mockRestore();
90
- warnSpy.mockRestore();
91
- scrollIntoView.mockRestore();
92
- });
93
- describe('noStyle Form.Item', () => {
94
- it('should show alert when form field is required but empty', async () => {
95
- const onChange = jest.fn();
96
- const { container } = render(React.createElement(Form, null,
97
- React.createElement(Form.Item, null,
98
- React.createElement(Form.Item, { name: "test", label: "test", initialValue: "bamboo", rules: [{ required: true }] },
99
- React.createElement(Input, { onChange: onChange })))));
100
- // user type something and clear
101
- await changeValue(0, 'test');
102
- await changeValue(0, '');
103
- // should show alert with correct message and show correct styles
104
- expect(container.querySelector('.ant-form-item-explain-error')).toHaveTextContent("'test' is required");
105
- expect(container.querySelector('.ant-input-status-error')).toBeTruthy();
106
- expect(container.querySelector('.ant-form-item-has-error')).toBeTruthy();
107
- expect(onChange).toHaveBeenCalled();
108
- });
109
- it('should clean up', async () => {
110
- const Demo = () => {
111
- const [form] = Form.useForm();
112
- const onChange = async () => {
113
- // Wait a while and then some logic to validate
114
- await waitFakeTimer();
115
- try {
116
- await form.validateFields();
117
- }
118
- catch (err) {
119
- // do nothing
120
- }
121
- };
122
- return (React.createElement(Form, { form: form, initialValues: { aaa: '2' } },
123
- React.createElement(Form.Item, { name: "aaa" },
124
- React.createElement(Input, { onChange: onChange })),
125
- React.createElement(Form.Item, { shouldUpdate: true, noStyle: true }, () => {
126
- const aaa = form.getFieldValue('aaa');
127
- if (aaa === '1') {
128
- return (React.createElement(Form.Item, { name: "bbb", rules: [{ required: true, message: 'aaa' }] },
129
- React.createElement(Input, null)));
130
- }
131
- return (React.createElement(Form.Item, null,
132
- React.createElement(Form.Item, { name: "ccc", rules: [{ required: true, message: 'ccc' }], noStyle: true },
133
- React.createElement(Input, null))));
134
- })));
135
- };
136
- const { container } = render(React.createElement(Demo, null));
137
- await changeValue(0, '1');
138
- await waitFakeTimer(2000, 2000);
139
- expect(container.querySelector('.ant-form-item-explain-error')).toHaveTextContent('aaa');
140
- await changeValue(0, '2');
141
- await waitFakeTimer(2000, 2000);
142
- expect(container.querySelector('.ant-form-item-explain-error')).toHaveTextContent('ccc');
143
- await changeValue(0, '1');
144
- await waitFakeTimer(2000, 2000);
145
- expect(container.querySelector('.ant-form-item-explain-error')).toHaveTextContent('aaa');
146
- });
147
- });
148
- it('render functions require either `shouldUpdate` or `dependencies`', () => {
149
- render(React.createElement(Form, null,
150
- React.createElement(Form.Item, null, () => null)));
151
- expect(errorSpy).toHaveBeenCalledWith('Warning: [antd: Form.Item] A `Form.Item` with a render function must have either `shouldUpdate` or `dependencies`.');
152
- });
153
- it("`shouldUpdate` shouldn't work with `dependencies`", () => {
154
- render(React.createElement(Form, null,
155
- React.createElement(Form.Item, { shouldUpdate: true, dependencies: [] }, () => null)));
156
- expect(errorSpy).toHaveBeenCalledWith("Warning: [antd: Form.Item] `shouldUpdate` and `dependencies` shouldn't be used together. See https://u.ant.design/form-deps.");
157
- });
158
- it('`name` should not work with render props', () => {
159
- render(React.createElement(Form, null,
160
- React.createElement(Form.Item, { name: "test", shouldUpdate: true }, () => null)));
161
- expect(errorSpy).toHaveBeenCalledWith("Warning: [antd: Form.Item] A `Form.Item` with a render function cannot be a field, and thus cannot have a `name` prop.");
162
- });
163
- it('multiple children with a name prop', () => {
164
- render(React.createElement(Form, null,
165
- React.createElement(Form.Item, { name: "test" },
166
- React.createElement("div", null, "one"),
167
- React.createElement("div", null, "two"))));
168
- expect(errorSpy).toHaveBeenCalledWith('Warning: [antd: Form.Item] A `Form.Item` with a `name` prop must have a single child element. For information on how to render more complex form items, see https://u.ant.design/complex-form-item.');
169
- });
170
- it('input element should have the prop aria-describedby pointing to the help id when there is a help message', () => {
171
- var _a, _b;
172
- const { container } = pureRender(React.createElement(Form, null,
173
- React.createElement(Form.Item, { name: "test", help: "This is a help" },
174
- React.createElement("input", null))));
175
- expect((_a = container.querySelector('input')) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-describedby')).toBe('test_help');
176
- expect((_b = container.querySelector('.ant-form-item-explain')) === null || _b === void 0 ? void 0 : _b.id).toBe('test_help');
177
- });
178
- it('input element should not have the prop aria-describedby pointing to the help id when there is a help message and name is not defined', () => {
179
- var _a, _b;
180
- const { container } = render(React.createElement(Form, null,
181
- React.createElement(Form.Item, { help: "This is a help" },
182
- React.createElement("input", null))));
183
- expect((_a = container.querySelector('input')) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-describedby')).toBeFalsy();
184
- expect((_b = container.querySelector('.ant-form-item-explain')) === null || _b === void 0 ? void 0 : _b.id).toBeFalsy();
185
- });
186
- it('input element should have the prop aria-describedby concatenated with the form name pointing to the help id when there is a help message', () => {
187
- var _a, _b;
188
- const { container } = render(React.createElement(Form, { name: "form" },
189
- React.createElement(Form.Item, { name: "test", help: "This is a help" },
190
- React.createElement("input", null))));
191
- expect((_a = container.querySelector('input')) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-describedby')).toBe('form_test_help');
192
- expect((_b = container.querySelector('.ant-form-item-explain')) === null || _b === void 0 ? void 0 : _b.id).toBe('form_test_help');
193
- });
194
- it('input element should have the prop aria-describedby pointing to the help id when there are errors', async () => {
195
- var _a, _b;
196
- const { container } = pureRender(React.createElement(Form, null,
197
- React.createElement(Form.Item, { name: "test", rules: [{ len: 3 }, { type: 'number' }] },
198
- React.createElement("input", null))));
199
- await changeValue(0, 'Invalid number');
200
- expect((_a = container.querySelector('input')) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-describedby')).toBe('test_help');
201
- expect((_b = container.querySelector('.ant-form-item-explain')) === null || _b === void 0 ? void 0 : _b.id).toBe('test_help');
202
- });
203
- it('input element should have the prop aria-invalid when there are errors', async () => {
204
- var _a;
205
- const { container } = render(React.createElement(Form, null,
206
- React.createElement(Form.Item, { name: "test", rules: [{ len: 3 }, { type: 'number' }] },
207
- React.createElement("input", null))));
208
- await changeValue(0, 'Invalid number');
209
- expect((_a = container.querySelector('input')) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-invalid')).toBe('true');
210
- });
211
- it('input element should have the prop aria-required when the prop `required` is true', () => {
212
- var _a;
213
- const { container } = render(React.createElement(Form, null,
214
- React.createElement(Form.Item, { name: "test", required: true },
215
- React.createElement("input", null))));
216
- expect((_a = container.querySelector('input')) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-required')).toBe('true');
217
- });
218
- it('input element should have the prop aria-required when there is a rule with required', () => {
219
- var _a;
220
- const { container } = render(React.createElement(Form, null,
221
- React.createElement(Form.Item, { name: "test", rules: [{ required: true }] },
222
- React.createElement("input", null))));
223
- expect((_a = container.querySelector('input')) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-required')).toBe('true');
224
- });
225
- it('input element should have the prop aria-describedby pointing to the extra id when there is a extra message', () => {
226
- var _a, _b;
227
- const { container } = render(React.createElement(Form, null,
228
- React.createElement(Form.Item, { name: "test", extra: "This is a extra message" },
229
- React.createElement("input", null))));
230
- expect((_a = container.querySelector('input')) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-describedby')).toBe('test_extra');
231
- expect((_b = container.querySelector('.ant-form-item-extra')) === null || _b === void 0 ? void 0 : _b.id).toBe('test_extra');
232
- });
233
- it('input element should not have the prop aria-describedby pointing to the extra id when there is a extra message and name is not defined', () => {
234
- var _a, _b;
235
- const { container } = render(React.createElement(Form, null,
236
- React.createElement(Form.Item, { extra: "This is a extra message" },
237
- React.createElement("input", null))));
238
- expect((_a = container.querySelector('input')) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-describedby')).toBeFalsy();
239
- expect((_b = container.querySelector('.ant-form-item-extra')) === null || _b === void 0 ? void 0 : _b.id).toBeFalsy();
240
- });
241
- it('input element should have the prop aria-describedby pointing to the help and extra id when there is a help and extra message', () => {
242
- var _a;
243
- const { container } = render(React.createElement(Form, null,
244
- React.createElement(Form.Item, { name: "test", help: "This is a help", extra: "This is a extra message" },
245
- React.createElement("input", null))));
246
- expect((_a = container.querySelector('input')) === null || _a === void 0 ? void 0 : _a.getAttribute('aria-describedby')).toBe('test_help test_extra');
247
- });
248
- describe('scrollToField', () => {
249
- const test = (name, genForm) => {
250
- it(name, () => {
251
- let callGetForm;
252
- const Demo = () => {
253
- const { props, getForm } = genForm();
254
- callGetForm = getForm;
255
- return (React.createElement(Form, Object.assign({ name: "scroll" }, props),
256
- React.createElement(Form.Item, { name: "test" },
257
- React.createElement(Input, null))));
258
- };
259
- render(React.createElement(Demo, null));
260
- expect(scrollIntoView).not.toHaveBeenCalled();
261
- const form = callGetForm();
262
- form.scrollToField('test', {
263
- block: 'start',
264
- });
265
- const inputNode = document.getElementById('scroll_test');
266
- expect(scrollIntoView).toHaveBeenCalledWith(inputNode, {
267
- block: 'start',
268
- scrollMode: 'if-needed',
269
- });
270
- });
271
- };
272
- // hooks
273
- test('useForm', () => {
274
- const [form] = Form.useForm();
275
- return {
276
- props: { form },
277
- getForm: () => form,
278
- };
279
- });
280
- // ref
281
- test('ref', () => {
282
- let form;
283
- return {
284
- props: {
285
- ref: (instance) => {
286
- form = instance;
287
- },
288
- },
289
- getForm: () => form,
290
- };
291
- });
292
- });
293
- it('scrollToFirstError', async () => {
294
- const onFinishFailed = jest.fn();
295
- const { container } = render(React.createElement(Form, { scrollToFirstError: { block: 'center' }, onFinishFailed: onFinishFailed },
296
- React.createElement(Form.Item, { name: "test", rules: [{ required: true }] },
297
- React.createElement("input", null)),
298
- React.createElement(Form.Item, null,
299
- React.createElement(Button, { htmlType: "submit" }, "Submit"))));
300
- expect(scrollIntoView).not.toHaveBeenCalled();
301
- fireEvent.submit(container.querySelector('form'));
302
- await waitFakeTimer();
303
- const inputNode = document.getElementById('test');
304
- expect(scrollIntoView).toHaveBeenCalledWith(inputNode, {
305
- block: 'center',
306
- scrollMode: 'if-needed',
307
- });
308
- expect(onFinishFailed).toHaveBeenCalled();
309
- });
310
- it('Form.Item should support data-*、aria-* and custom attribute', () => {
311
- const { container } = render(React.createElement(Form, null,
312
- React.createElement(Form.Item, { "data-text": "123", "aria-hidden": "true", cccc: "bbbb" }, "text")));
313
- expect(container.firstChild).toMatchSnapshot();
314
- });
315
- it('warning when use `name` but children is not validate element', () => {
316
- render(React.createElement(Form, null,
317
- React.createElement(Form.Item, { name: "warning" }, "text")));
318
- expect(errorSpy).toHaveBeenCalledWith('Warning: [antd: Form.Item] `name` is only used for validate React element. If you are using Form.Item as layout display, please remove `name` instead.');
319
- });
320
- it('dynamic change required', async () => {
321
- const { container } = render(React.createElement(Form, null,
322
- React.createElement(Form.Item, { label: "light", name: "light", valuePropName: "checked" },
323
- React.createElement("input", { type: "checkbox" })),
324
- React.createElement(Form.Item, { label: "bamboo", name: "bamboo", dependencies: ['light'], rules: [({ getFieldValue }) => ({ required: getFieldValue('light') })] },
325
- React.createElement("input", null))));
326
- // should not show alert by default
327
- expect(container.querySelector('.ant-form-item-explain')).toBeFalsy();
328
- // click to change the light field value to true
329
- fireEvent.click(container.querySelector('input'));
330
- await waitFakeTimer();
331
- // user input something and clear
332
- await changeValue(1, '1');
333
- await changeValue(1, '');
334
- // should show alert says that the field is required
335
- expect(container.querySelector('.ant-form-item-explain-error')).toHaveTextContent("'bamboo' is required");
336
- });
337
- describe('should show related className when customize help', () => {
338
- it('normal', async () => {
339
- const { container } = render(React.createElement(Form, null,
340
- React.createElement(Form.Item, { help: "good" },
341
- React.createElement("input", null))));
342
- await waitFakeTimer();
343
- expect(container.querySelector('.ant-form-item-explain')).toHaveTextContent('good');
344
- expect(container.querySelector('.ant-form-item-with-help')).toBeTruthy();
345
- });
346
- it('empty string', async () => {
347
- const { container } = render(React.createElement(Form, null,
348
- React.createElement(Form.Item, { help: "" },
349
- React.createElement("input", null))));
350
- await waitFakeTimer();
351
- expect(container.querySelector('.ant-form-item-explain')).toHaveTextContent('');
352
- expect(container.querySelector('.ant-form-item-with-help')).toBeTruthy();
353
- });
354
- });
355
- it('warning when use v3 function', () => {
356
- Form.create();
357
- expect(errorSpy).toHaveBeenCalledWith('Warning: [antd: Form] antd v4 removed `Form.create`. Please remove or use `@ant-design/compatible` instead.');
358
- });
359
- // https://github.com/ant-design/ant-design/issues/20706
360
- it('Error change should work', async () => {
361
- var _a, _b;
362
- const { container } = render(React.createElement(Form, null,
363
- React.createElement(Form.Item, { name: "name", label: "test", rules: [
364
- { required: true },
365
- {
366
- validator: (_, value) => {
367
- if (value === 'p') {
368
- return Promise.reject(new Error('not a p'));
369
- }
370
- return Promise.resolve();
371
- },
372
- },
373
- ] },
374
- React.createElement(Input, null))));
375
- /* eslint-disable no-await-in-loop */
376
- for (let i = 0; i < 3; i += 1) {
377
- await changeValue(0, 'bamboo');
378
- await changeValue(0, '');
379
- expect((_a = container.querySelector('.ant-form-item-explain')) === null || _a === void 0 ? void 0 : _a.textContent).toEqual("'name' is required");
380
- await changeValue(0, 'p');
381
- expect((_b = container.querySelector('.ant-form-item-explain')) === null || _b === void 0 ? void 0 : _b.textContent).toEqual('not a p');
382
- }
383
- /* eslint-enable */
384
- });
385
- // https://github.com/ant-design/ant-design/issues/20813
386
- it('should update help directly when provided', async () => {
387
- const App = () => {
388
- const [message, updateMessage] = React.useState('');
389
- return (React.createElement(Form, null,
390
- React.createElement(Form.Item, { label: "hello", help: message },
391
- React.createElement(Input, null)),
392
- React.createElement(Button, { onClick: () => updateMessage('bamboo') })));
393
- };
394
- const { container } = render(React.createElement(App, null));
395
- // should show initial text
396
- await waitFakeTimer();
397
- expect(container.querySelector('.ant-form-item-explain')).toHaveTextContent('');
398
- fireEvent.click(container.querySelector('button'));
399
- // should show bamboo alert without opacity and hide first alert with opacity: 0
400
- await waitFakeTimer();
401
- expect(container.querySelector('.ant-form-item-explain')).toHaveTextContent('bamboo');
402
- });
403
- it('warning when use `dependencies` but `name` is empty & children is not a render props', () => {
404
- render(React.createElement(Form, null,
405
- React.createElement(Form.Item, { dependencies: [] }, "text")));
406
- expect(errorSpy).toHaveBeenCalledWith('Warning: [antd: Form.Item] Must set `name` or use a render function when `dependencies` is set.');
407
- });
408
- // https://github.com/ant-design/ant-design/issues/20948
409
- it('not repeat render when Form.Item is not a real Field', async () => {
410
- const shouldNotRender = jest.fn();
411
- const StaticInput = ({ id, value = '', }) => {
412
- shouldNotRender();
413
- return React.createElement("input", { id: id, value: value });
414
- };
415
- const shouldRender = jest.fn();
416
- const DynamicInput = ({ value = '', id, }) => {
417
- shouldRender();
418
- return React.createElement("input", { id: id, value: value });
419
- };
420
- const formRef = React.createRef();
421
- const { container } = pureRender(React.createElement(Form, { ref: formRef },
422
- React.createElement(Form.Item, null,
423
- React.createElement(StaticInput, null)),
424
- React.createElement(Form.Item, { name: "light" },
425
- React.createElement(DynamicInput, { id: "changed" }))));
426
- await waitFakeTimer();
427
- expect(container.querySelector('#changed').value).toEqual('');
428
- expect(shouldNotRender).toHaveBeenCalledTimes(1);
429
- expect(shouldRender).toHaveBeenCalledTimes(1);
430
- formRef.current.setFieldsValue({ light: 'bamboo' });
431
- await waitFakeTimer(100, 100);
432
- expect(formRef.current.getFieldsValue()).toEqual({ light: 'bamboo' });
433
- expect(container.querySelector('#changed').value).toEqual('bamboo');
434
- expect(shouldNotRender).toHaveBeenCalledTimes(1);
435
- expect(shouldRender).toHaveBeenCalledTimes(2);
436
- });
437
- it('empty help should also render', () => {
438
- const { container } = render(React.createElement(Form.Item, { help: "" },
439
- React.createElement("input", null)));
440
- expect(container.querySelectorAll('.ant-form-item-explain').length).toBeTruthy();
441
- });
442
- it('Form.Item with `help` should display error style when validate failed', async () => {
443
- const { container } = render(React.createElement(Form, null,
444
- React.createElement(Form.Item, { name: "test", label: "test", help: "help", initialValue: "bamboo", rules: [{ required: true, message: 'message' }] },
445
- React.createElement(Input, null))));
446
- await changeValue(0, '');
447
- expect(container.querySelector('.ant-form-item')).toHaveClass('ant-form-item-has-error');
448
- expect(container.querySelector('.ant-form-item-explain').textContent).toEqual('help');
449
- });
450
- it('clear validation message when', async () => {
451
- const { container } = render(React.createElement(Form, null,
452
- React.createElement(Form.Item, { name: "test", label: "test", rules: [{ required: true, message: 'message' }] },
453
- React.createElement(Input, null))));
454
- await changeValue(0, '1');
455
- expect(container.querySelectorAll('.ant-form-item-explain').length).toBeFalsy();
456
- await changeValue(0, '');
457
- expect(container.querySelectorAll('.ant-form-item-explain').length).toBeTruthy();
458
- await changeValue(0, '123');
459
- expect(container.querySelectorAll('.ant-form-item-explain').length).toBeFalsy();
460
- });
461
- // https://github.com/ant-design/ant-design/issues/21167
462
- it('`require` without `name`', () => {
463
- const { container } = render(React.createElement(Form.Item, { label: "test", name: "test", required: true },
464
- React.createElement("input", null)));
465
- // expect(screen.getByTitle('test')).toHaveClass('ant-form-item-required');
466
- expect(container.querySelector('.ant-form-item-required')).toBeTruthy();
467
- });
468
- it('0 is a validate Field', () => {
469
- render(React.createElement(Form.Item, { name: 0, label: "0" },
470
- React.createElement("input", null)));
471
- // if getByLabelText can get element, then it is a validate field with form control and label
472
- expect(screen.getByLabelText('0')).toBeInTheDocument();
473
- });
474
- it('`null` triggers warning and is treated as `undefined`', () => {
475
- render(React.createElement(Form.Item, { name: null, label: "test" },
476
- React.createElement("input", null)));
477
- // if getByLabelText can get element, then it is a validate field with form control and label
478
- expect(screen.queryByLabelText('test')).not.toBeInTheDocument();
479
- expect(errorSpy).toHaveBeenCalledWith('Warning: [antd: Form.Item] `null` is passed as `name` property');
480
- });
481
- // https://github.com/ant-design/ant-design/issues/21415
482
- it('should not throw error when Component.props.onChange is null', async () => {
483
- const CustomComponent = () => (React.createElement("input", { onChange: null }));
484
- render(React.createElement(Form, null,
485
- React.createElement(Form.Item, { name: "custom" },
486
- React.createElement(CustomComponent, null))));
487
- await changeValue(0, 'aaa');
488
- });
489
- it('change `help` should not warning', async () => {
490
- const Demo = () => {
491
- const [error, setError] = React.useState(false);
492
- return (React.createElement(Form, null,
493
- React.createElement(Form.Item, { help: error ? 'This is an error msg' : undefined, validateStatus: error ? 'error' : '', label: "Username", name: "username" },
494
- React.createElement("input", null)),
495
- React.createElement(Form.Item, null,
496
- React.createElement("button", { type: "button", onClick: () => setError(!error) }, "Trigger"))));
497
- };
498
- const { container } = render(React.createElement(Demo, null));
499
- fireEvent.click(container.querySelector('button'));
500
- expect(errorSpy).not.toHaveBeenCalled();
501
- });
502
- it('`label` support template', async () => {
503
- const { container } = render(
504
- // eslint-disable-next-line no-template-curly-in-string
505
- React.createElement(Form, { validateMessages: { required: '${label} is good!' } },
506
- React.createElement(Form.Item, { name: "test", label: "Bamboo", rules: [{ required: true }] },
507
- React.createElement("input", null))));
508
- fireEvent.submit(container.querySelector('form'));
509
- await waitFakeTimer();
510
- expect(container.querySelector('.ant-form-item-explain-error')).toHaveTextContent('Bamboo is good!');
511
- });
512
- // https://github.com/ant-design/ant-design/issues/33691
513
- it('should keep upper locale in nested ConfigProvider', async () => {
514
- const { container } = render(React.createElement(ConfigProvider, { locale: zhCN },
515
- React.createElement(ConfigProvider, null,
516
- React.createElement(Form, null,
517
- React.createElement(Form.Item, { name: "test", label: "Bamboo", rules: [{ required: true }] },
518
- React.createElement("input", null))))));
519
- fireEvent.submit(container.querySelector('form'));
520
- await waitFakeTimer();
521
- expect(container.querySelector('.ant-form-item-explain-error')).toHaveTextContent('请输入Bamboo');
522
- });
523
- it('`name` support template when label is not provided', async () => {
524
- const { container } = render(
525
- // eslint-disable-next-line no-template-curly-in-string
526
- React.createElement(Form, { validateMessages: { required: '${label} is good!' } },
527
- React.createElement(Form.Item, { name: "Bamboo", rules: [{ required: true }] },
528
- React.createElement("input", null))));
529
- fireEvent.submit(container.querySelector('form'));
530
- await waitFakeTimer();
531
- expect(container.querySelector('.ant-form-item-explain-error')).toHaveTextContent('Bamboo is good!');
532
- });
533
- it('`messageVariables` support validate', async () => {
534
- const { container } = render(
535
- // eslint-disable-next-line no-template-curly-in-string
536
- React.createElement(Form, { validateMessages: { required: '${label} is good!' } },
537
- React.createElement(Form.Item, { name: "test", messageVariables: { label: 'Bamboo' }, rules: [{ required: true }] },
538
- React.createElement("input", null))));
539
- fireEvent.submit(container.querySelector('form'));
540
- await waitFakeTimer();
541
- expect(container.querySelector('.ant-form-item-explain-error')).toHaveTextContent('Bamboo is good!');
542
- });
543
- it('validation message should has alert role', async () => {
544
- // https://github.com/ant-design/ant-design/issues/25711
545
- const { container } = render(
546
- // eslint-disable-next-line no-template-curly-in-string
547
- React.createElement(Form, { validateMessages: { required: 'name is good!' } },
548
- React.createElement(Form.Item, { name: "test", rules: [{ required: true }] },
549
- React.createElement("input", null)),
550
- React.createElement(Form.Item, null,
551
- React.createElement(Button, { htmlType: "submit" }, "Submit"))));
552
- fireEvent.submit(container.querySelector('form'));
553
- await waitFakeTimer();
554
- expect(container.querySelector('.ant-form-item-explain-error')).toHaveTextContent('name is good!');
555
- });
556
- it('return same form instance', async () => {
557
- const instances = new Set();
558
- const App = () => {
559
- const [form] = Form.useForm();
560
- instances.add(form);
561
- const [, forceUpdate] = React.useState({});
562
- return (React.createElement("button", { type: "button", onClick: () => {
563
- forceUpdate({});
564
- } }, "Refresh"));
565
- };
566
- const { container } = pureRender(React.createElement(App, null));
567
- for (let i = 0; i < 5; i += 1) {
568
- fireEvent.click(container.querySelector('button'));
569
- // eslint-disable-next-line no-await-in-loop
570
- await waitFakeTimer();
571
- }
572
- expect(instances.size).toBe(1);
573
- });
574
- it('should avoid re-render', async () => {
575
- let renderTimes = 0;
576
- const MyInput = (_a) => {
577
- var { value = '' } = _a, props = __rest(_a, ["value"]);
578
- renderTimes += 1;
579
- return React.createElement("input", Object.assign({ value: value }, props));
580
- };
581
- const Demo = () => (React.createElement(Form, null,
582
- React.createElement(Form.Item, { name: "username", label: "username", rules: [{ required: true }] },
583
- React.createElement(MyInput, null))));
584
- const { container } = pureRender(React.createElement(Demo, null));
585
- renderTimes = 0;
586
- await changeValue(0, 'a');
587
- expect(renderTimes).toEqual(1);
588
- expect(container.querySelector('input')).toHaveValue('a');
589
- });
590
- it('should warning with `defaultValue`', () => {
591
- render(React.createElement(Form, null,
592
- React.createElement(Form.Item, { name: "light" },
593
- React.createElement("input", { defaultValue: "should warning" }))));
594
- expect(errorSpy).toHaveBeenCalledWith('Warning: [antd: Form.Item] `defaultValue` will not work on controlled Field. You should use `initialValues` of Form instead.');
595
- });
596
- it('should remove Field and also reset error', async () => {
597
- const Demo = ({ showA }) => (React.createElement(Form, null, showA ? (React.createElement(Form.Item, { name: "a", help: "error" },
598
- React.createElement("input", null))) : (React.createElement(Form.Item, { name: "b" },
599
- React.createElement("input", null)))));
600
- const { container, rerender } = render(React.createElement(Demo, { showA: true }));
601
- await waitFakeTimer();
602
- expect(container.querySelector('.ant-form-item-explain')).toBeTruthy();
603
- rerender(React.createElement(Demo, { showA: false }));
604
- await waitFakeTimer();
605
- expect(container.querySelector('.ant-form-item-explain')).toBeFalsy();
606
- });
607
- it('no warning of initialValue & getValueProps & preserve', () => {
608
- render(React.createElement(Form, null,
609
- React.createElement(Form.Item, { initialValue: "bamboo", getValueProps: () => ({}), preserve: false },
610
- React.createElement(Input, null))));
611
- expect(errorSpy).not.toHaveBeenCalled();
612
- });
613
- it('should customize id when pass with id', () => {
614
- const { container } = render(React.createElement(Form, null,
615
- React.createElement(Form.Item, { name: "light" },
616
- React.createElement(Input, { id: "bamboo" }))));
617
- expect(container.querySelector('input').id).toEqual('bamboo');
618
- });
619
- it('should trigger validate when onBlur when pass validateTrigger onBlur', async () => {
620
- const { container } = render(React.createElement(Form, { validateTrigger: "onBlur" },
621
- React.createElement(Form.Item, { name: "light", label: "light", rules: [{ len: 3 }] },
622
- React.createElement(Input, null))));
623
- // type a invalidate value, not trigger validation
624
- await changeValue(0, '7777');
625
- expect(container.querySelector('.ant-form-item-explain')).toBeFalsy();
626
- // tab(onBlur) the input field, trigger and see the alert
627
- fireEvent.blur(container.querySelector('input'));
628
- await waitFakeTimer();
629
- expect(container.querySelector('.ant-form-item-explain')).toBeTruthy();
630
- });
631
- describe('Form item hidden', () => {
632
- it('should work', () => {
633
- const { container } = render(React.createElement(Form, null,
634
- React.createElement(Form.Item, { name: "light", hidden: true },
635
- React.createElement(Input, null))));
636
- expect(container.firstChild).toMatchSnapshot();
637
- });
638
- it('noStyle should not work when hidden', () => {
639
- const { container } = render(React.createElement(Form, null,
640
- React.createElement(Form.Item, { name: "light", hidden: true, noStyle: true },
641
- React.createElement(Input, null))));
642
- expect(container.firstChild).toMatchSnapshot();
643
- });
644
- });
645
- it('legacy hideRequiredMark', () => {
646
- const { container } = render(React.createElement(Form, { hideRequiredMark: true, role: "form" },
647
- React.createElement(Form.Item, { name: "light", label: "light", required: true },
648
- React.createElement(Input, null))));
649
- expect(container.querySelector('form')).toHaveClass('ant-form-hide-required-mark');
650
- });
651
- it('form should support disabled', () => {
652
- const App = () => (React.createElement(Form, { labelCol: { span: 4 }, wrapperCol: { span: 14 }, layout: "horizontal", disabled: true },
653
- React.createElement(Form.Item, { label: "Form disabled", name: "disabled", valuePropName: "checked" },
654
- React.createElement(Checkbox, null, "disabled")),
655
- React.createElement(Form.Item, { label: "Radio" },
656
- React.createElement(Radio.Group, null,
657
- React.createElement(Radio, { value: "apple" }, "Apple"),
658
- React.createElement(Radio, { value: "pear" }, "Pear"))),
659
- React.createElement(Form.Item, { label: "Input" },
660
- React.createElement(Input, null)),
661
- React.createElement(Form.Item, { label: "Select" },
662
- React.createElement(Select, null,
663
- React.createElement(Select.Option, { value: "demo" }, "Demo"))),
664
- React.createElement(Form.Item, { label: "TreeSelect" },
665
- React.createElement(TreeSelect, { treeData: [
666
- {
667
- title: 'Light',
668
- value: 'light',
669
- children: [{ title: 'Bamboo', value: 'bamboo' }],
670
- },
671
- ] })),
672
- React.createElement(Form.Item, { label: "Cascader" },
673
- React.createElement(Cascader, { options: [
674
- {
675
- value: 'zhejiang',
676
- label: 'Zhejiang',
677
- children: [{ value: 'hangzhou', label: 'Hangzhou' }],
678
- },
679
- ] })),
680
- React.createElement(Form.Item, { label: "DatePicker" },
681
- React.createElement(DatePicker, null)),
682
- React.createElement(Form.Item, { label: "RangePicker" },
683
- React.createElement(RangePicker, null)),
684
- React.createElement(Form.Item, { label: "InputNumber" },
685
- React.createElement(InputNumber, null)),
686
- React.createElement(Form.Item, { label: "TextArea" },
687
- React.createElement(TextArea, { rows: 4 })),
688
- React.createElement(Form.Item, { label: "Switch", valuePropName: "checked" },
689
- React.createElement(Switch, null)),
690
- React.createElement(Form.Item, { label: "Upload", valuePropName: "fileList" },
691
- React.createElement(Upload, null)),
692
- React.createElement(Form.Item, { label: "Button" },
693
- React.createElement(Button, null, "Button"))));
694
- const { container } = render(React.createElement(App, null));
695
- expect(container.firstChild).toMatchSnapshot();
696
- });
697
- it('_internalItemRender api test', () => {
698
- const { container } = render(React.createElement(Form, null,
699
- React.createElement(Form.Item, { name: "light",
700
- // @ts-ignore
701
- _internalItemRender: {
702
- mark: 'pro_table_render',
703
- render: (_, doms) => (React.createElement("div", null,
704
- React.createElement("h1", null, "warning title"),
705
- doms.input,
706
- doms.errorList,
707
- doms.extra)),
708
- } },
709
- React.createElement("input", { defaultValue: "should warning" }))));
710
- expect(container.querySelector('h1')).toHaveTextContent(/warning title/i);
711
- });
712
- it('Form Item element id will auto add form_item prefix if form name is empty and item name is in the black list', async () => {
713
- const mockFn = jest.spyOn(Util, 'getFieldId');
714
- const itemName = 'parentNode';
715
- // mock getFieldId old logic,if form name is empty ,and item name is parentNode,will get parentNode
716
- mockFn.mockImplementation(() => itemName);
717
- const { Option } = Select;
718
- const Demo = () => {
719
- const [open, setOpen] = useState(false);
720
- return (React.createElement(React.Fragment, null,
721
- React.createElement(Form, null,
722
- React.createElement(Form.Item, { name: itemName, label: itemName },
723
- React.createElement(Select, { className: "form_item_parentNode", defaultValue: "lucy", open: open, style: { width: 120 } },
724
- React.createElement(Option, { value: "jack" }, "Jack"),
725
- React.createElement(Option, { value: "lucy" }, "Lucy"),
726
- React.createElement(Option, { value: "Yiminghe" }, "yiminghe")))),
727
- React.createElement("button", { type: "button", onClick: () => {
728
- setOpen(true);
729
- } }, open ? 'show' : 'hidden')));
730
- };
731
- const { container, rerender } = render(React.createElement(Demo, null));
732
- expect(mockFn).toHaveBeenCalled();
733
- expect(Util.getFieldId()).toBe(itemName);
734
- // make sure input id is parentNode
735
- expect(screen.getByLabelText(itemName)).toHaveAccessibleName(itemName);
736
- fireEvent.click(container.querySelector('button'));
737
- await waitFakeTimer();
738
- expect(container.querySelector('button')).toHaveTextContent('show');
739
- mockFn.mockRestore();
740
- rerender(React.createElement(Demo, null));
741
- expect(screen.getByLabelText(itemName)).toBeInTheDocument();
742
- });
743
- describe('tooltip', () => {
744
- it('ReactNode', async () => {
745
- const { container } = render(React.createElement(Form, null,
746
- React.createElement(Form.Item, { label: "light", tooltip: React.createElement("span", null, "Bamboo") },
747
- React.createElement(Input, null))));
748
- fireEvent.mouseEnter(container.querySelector('.anticon-question-circle'));
749
- await waitFakeTimer();
750
- expect(container.querySelector('.ant-tooltip-inner')).toHaveTextContent('Bamboo');
751
- });
752
- it('config tooltip should show when hover on icon', async () => {
753
- const { container } = render(React.createElement(Form, null,
754
- React.createElement(Form.Item, { label: "light", tooltip: { title: 'Bamboo' } },
755
- React.createElement(Input, null))));
756
- fireEvent.mouseEnter(container.querySelector('.anticon-question-circle'));
757
- await waitFakeTimer();
758
- expect(container.querySelector('.ant-tooltip-inner')).toHaveTextContent('Bamboo');
759
- });
760
- });
761
- it('warningOnly validate', async () => {
762
- const { container } = render(React.createElement(Form, null,
763
- React.createElement(Form.Item, null,
764
- React.createElement(Form.Item, { name: "test", label: "test", initialValue: "bamboo", rules: [{ required: true, warningOnly: true }] },
765
- React.createElement(Input, null)))));
766
- await changeValue(0, 'test');
767
- await changeValue(0, '');
768
- expect(container.querySelector('.ant-form-item-with-help')).toBeTruthy();
769
- expect(container.querySelector('.ant-form-item-has-warning')).toBeTruthy();
770
- });
771
- it('not warning when remove on validate', async () => {
772
- let rejectFn = jest.fn();
773
- const { unmount } = render(React.createElement(Form, null,
774
- React.createElement(Form.Item, null,
775
- React.createElement(Form.Item, { noStyle: true, name: "test", initialValue: "bamboo", rules: [
776
- {
777
- validator: () => new Promise((_, reject) => {
778
- rejectFn = reject;
779
- }),
780
- },
781
- ] },
782
- React.createElement(Input, null)))));
783
- await changeValue(0, '');
784
- unmount();
785
- // Delay validate failed
786
- rejectFn(new Error('delay failed'));
787
- expect(errorSpy).not.toHaveBeenCalled();
788
- });
789
- describe('form colon', () => {
790
- it('default colon', () => {
791
- render(React.createElement(Form, null,
792
- React.createElement(Form.Item, { label: "\u59D3\u540D", name: "\u59D3\u540D" },
793
- React.createElement("input", null))));
794
- expect(screen.getByText('姓名')).not.toHaveClass('ant-form-item-no-colon');
795
- });
796
- it('set Form.Item colon false', () => {
797
- render(React.createElement(Form, { colon: true },
798
- React.createElement(Form.Item, { colon: false, label: "\u59D3\u540D", name: "\u59D3\u540D" },
799
- React.createElement(Input, null))));
800
- expect(screen.getByText('姓名')).toHaveClass('ant-form-item-no-colon');
801
- });
802
- it('set Form colon false', () => {
803
- render(React.createElement(Form, { colon: false },
804
- React.createElement(Form.Item, { label: "\u59D3\u540D", name: "\u59D3\u540D" },
805
- React.createElement(Input, null))));
806
- expect(screen.getByText('姓名')).toHaveClass('ant-form-item-no-colon');
807
- });
808
- });
809
- it('useFormInstance', () => {
810
- let formInstance;
811
- let subFormInstance;
812
- const Sub = () => {
813
- const formSub = Form.useFormInstance();
814
- subFormInstance = formSub;
815
- return null;
816
- };
817
- const Demo = () => {
818
- const [form] = Form.useForm();
819
- formInstance = form;
820
- return (React.createElement(Form, { form: form },
821
- React.createElement(Sub, null)));
822
- };
823
- render(React.createElement(Demo, null));
824
- expect(subFormInstance).toBe(formInstance);
825
- });
826
- it('noStyle should not affect status', () => {
827
- var _a, _b, _c, _d, _e, _f, _g, _h;
828
- const Demo = () => (React.createElement(Form, null,
829
- React.createElement(Form.Item, { validateStatus: "error", noStyle: true },
830
- React.createElement(Select, { className: "custom-select" })),
831
- React.createElement(Form.Item, { validateStatus: "error" },
832
- React.createElement(Form.Item, { noStyle: true },
833
- React.createElement(Select, { className: "custom-select-b" }))),
834
- React.createElement(Form.Item, { validateStatus: "error" },
835
- React.createElement(Form.Item, { noStyle: true, validateStatus: "warning" },
836
- React.createElement(Select, { className: "custom-select-c" }))),
837
- React.createElement(Form.Item, { noStyle: true },
838
- React.createElement(Form.Item, { validateStatus: "warning" },
839
- React.createElement(Select, { className: "custom-select-d" })))));
840
- const { container } = render(React.createElement(Demo, null));
841
- expect((_a = container.querySelector('.custom-select')) === null || _a === void 0 ? void 0 : _a.className).not.toContain('status-error');
842
- expect((_b = container.querySelector('.custom-select')) === null || _b === void 0 ? void 0 : _b.className).not.toContain('in-form-item');
843
- expect((_c = container.querySelector('.custom-select-b')) === null || _c === void 0 ? void 0 : _c.className).toContain('status-error');
844
- expect((_d = container.querySelector('.custom-select-b')) === null || _d === void 0 ? void 0 : _d.className).toContain('in-form-item');
845
- expect((_e = container.querySelector('.custom-select-c')) === null || _e === void 0 ? void 0 : _e.className).toContain('status-error');
846
- expect((_f = container.querySelector('.custom-select-c')) === null || _f === void 0 ? void 0 : _f.className).toContain('in-form-item');
847
- expect((_g = container.querySelector('.custom-select-d')) === null || _g === void 0 ? void 0 : _g.className).toContain('status-warning');
848
- expect((_h = container.querySelector('.custom-select-d')) === null || _h === void 0 ? void 0 : _h.className).toContain('in-form-item');
849
- });
850
- it('should not affect Popup children style', () => {
851
- var _a, _b, _c, _d;
852
- const Demo = () => (React.createElement(Form, null,
853
- React.createElement(Form.Item, { labelCol: 4, validateStatus: "error" },
854
- React.createElement(Modal, { visible: true },
855
- React.createElement(Select, { className: "modal-select" }))),
856
- React.createElement(Form.Item, { validateStatus: "error" },
857
- React.createElement(Drawer, { visible: true },
858
- React.createElement(Select, { className: "drawer-select" })))));
859
- const { container } = render(React.createElement(Demo, null), { container: document.body });
860
- expect((_a = container.querySelector('.modal-select')) === null || _a === void 0 ? void 0 : _a.className).not.toContain('in-form-item');
861
- expect((_b = container.querySelector('.modal-select')) === null || _b === void 0 ? void 0 : _b.className).not.toContain('status-error');
862
- expect((_c = container.querySelector('.drawer-select')) === null || _c === void 0 ? void 0 : _c.className).not.toContain('in-form-item');
863
- expect((_d = container.querySelector('.drawer-select')) === null || _d === void 0 ? void 0 : _d.className).not.toContain('status-error');
864
- });
865
- it('Form.Item.useStatus should work', async () => {
866
- var _a, _b, _c, _d, _e;
867
- const { Item: { useStatus }, } = Form;
868
- const CustomInput = ({ className, value, }) => {
869
- const { status } = useStatus();
870
- return React.createElement("div", { className: classNames(className, `custom-input-status-${status}`) }, value);
871
- };
872
- const Demo = () => {
873
- const [form] = Form.useForm();
874
- return (React.createElement(Form, { form: form, name: "my-form" },
875
- React.createElement(Form.Item, { name: "required", rules: [{ required: true }] },
876
- React.createElement(CustomInput, { className: "custom-input-required", value: "" })),
877
- React.createElement(Form.Item, { name: "warning", validateStatus: "warning" },
878
- React.createElement(CustomInput, { className: "custom-input-warning" })),
879
- React.createElement(Form.Item, { name: "normal" },
880
- React.createElement(CustomInput, { className: "custom-input" })),
881
- React.createElement(CustomInput, { className: "custom-input-wrong" }),
882
- React.createElement(Button, { onClick: () => form.submit(), className: "submit-button" }, "Submit")));
883
- };
884
- const { container } = render(React.createElement(Demo, null));
885
- expect((_a = container.querySelector('.custom-input-required')) === null || _a === void 0 ? void 0 : _a.classList).toContain('custom-input-status-');
886
- expect((_b = container.querySelector('.custom-input-warning')) === null || _b === void 0 ? void 0 : _b.classList).toContain('custom-input-status-warning');
887
- expect((_c = container.querySelector('.custom-input')) === null || _c === void 0 ? void 0 : _c.classList).toContain('custom-input-status-');
888
- expect((_d = container.querySelector('.custom-input-wrong')) === null || _d === void 0 ? void 0 : _d.classList).toContain('custom-input-status-undefined');
889
- expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Form.Item.useStatus should be used under Form.Item component.'));
890
- fireEvent.click(container.querySelector('.submit-button'));
891
- await waitFakeTimer();
892
- expect((_e = container.querySelector('.custom-input-required')) === null || _e === void 0 ? void 0 : _e.classList).toContain('custom-input-status-error');
893
- });
894
- it('item customize margin', async () => {
895
- const computeSpy = jest
896
- .spyOn(window, 'getComputedStyle')
897
- .mockImplementation(() => ({ marginBottom: 24 }));
898
- const { container } = render(React.createElement(Form, null,
899
- React.createElement(Form.Item, { name: "required", initialValue: "bamboo", rules: [{ required: true }] },
900
- React.createElement(Input, null))));
901
- await changeValue(0, '');
902
- computeSpy.mockRestore();
903
- expect(container.querySelector('.ant-form-item-margin-offset')).toHaveStyle({
904
- marginBottom: -24,
905
- });
906
- });
907
- it('form child components should be given priority to own disabled props when it in a disabled form', () => {
908
- const props = {
909
- name: 'file',
910
- action: 'https://www.mocky.io/v2/5cc8019d300000980a055e76',
911
- headers: {
912
- authorization: 'authorization-text',
913
- },
914
- capture: true,
915
- };
916
- const renderComps = (disabled) => [
917
- React.createElement(Button, { key: "Button", disabled: disabled, type: "primary", htmlType: "submit" }, "test"),
918
- React.createElement(Cascader, { key: "Cascader", disabled: disabled, options: [] }),
919
- React.createElement(Checkbox, { key: "Checkbox", disabled: disabled }),
920
- React.createElement(Checkbox.Group, { key: "CheckboxGroup", disabled: disabled, options: [
921
- { label: 'male', value: 0 },
922
- { label: 'female', value: 1 },
923
- ] }),
924
- React.createElement(InputNumber, { key: "InputNumber", disabled: disabled }),
925
- React.createElement(Input, { key: "Input", disabled: disabled }),
926
- React.createElement(Select, { key: "Select", disabled: disabled }),
927
- React.createElement(Switch, { key: "Switch", disabled: disabled }),
928
- React.createElement(TreeSelect, { key: "TreeSelect", disabled: disabled }),
929
- React.createElement(Upload, Object.assign({ key: "Upload" }, props, { disabled: disabled }),
930
- React.createElement(Button, { disabled: disabled }, "Click to Upload")),
931
- React.createElement(DatePicker, { key: "DatePicker", disabled: disabled }),
932
- React.createElement(DatePicker.RangePicker, { key: "DatePicker.RangePicker", disabled: disabled }),
933
- React.createElement(DatePicker.MonthPicker, { key: "DatePicker.MonthPicker", disabled: disabled }),
934
- React.createElement(DatePicker.QuarterPicker, { key: "DatePicker.QuarterPicker", disabled: disabled }),
935
- React.createElement(DatePicker.WeekPicker, { key: "DatePicker.WeekPicker", disabled: disabled }),
936
- React.createElement(DatePicker.YearPicker, { key: "DatePicker.YearPicker", disabled: disabled }),
937
- React.createElement(DatePicker.TimePicker, { key: "DatePicker.TimePicker", disabled: disabled }),
938
- ];
939
- const App = () => React.createElement(Form, { disabled: true }, renderComps(false));
940
- const wrapper = render(React.createElement(App, null));
941
- expect(wrapper.container.querySelectorAll('[disabled]').length).toBe(0);
942
- const App2 = () => React.createElement(Form, { disabled: true }, renderComps());
943
- const wrapper2 = render(React.createElement(App2, null));
944
- // 时间范围组件中会有两个 input 框,因此虽然上述只有 18 个组件,但,实际有 19 个 带有 disabled 属性的表单组件
945
- expect(wrapper2.container.querySelectorAll('[disabled]').length).toBe(19);
946
- const App3 = () => React.createElement(Form, { disabled: true }, renderComps(true));
947
- const wrapper3 = render(React.createElement(App3, null));
948
- expect(wrapper3.container.querySelectorAll('[disabled]').length).toBe(19);
949
- const App4 = () => React.createElement(Form, null, renderComps(true));
950
- const wrapper4 = render(React.createElement(App4, null));
951
- expect(wrapper4.container.querySelectorAll('[disabled]').length).toBe(19);
952
- const App5 = () => React.createElement(Form, null, renderComps());
953
- const wrapper5 = render(React.createElement(App5, null));
954
- expect(wrapper5.container.querySelectorAll('[disabled]').length).toBe(0);
955
- });
956
- });
957
- //# sourceMappingURL=index.test.js.map