tntd 2.7.3 → 2.7.4

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