feffery_antd_components 0.4.3-rc6 → 0.4.3

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 (462) hide show
  1. package/CONTRIBUTING.md +4 -4
  2. package/DESCRIPTION +1 -1
  3. package/LICENSE +21 -21
  4. package/MANIFEST.in +6 -6
  5. package/Project.toml +1 -1
  6. package/README-en_US.md +73 -73
  7. package/README.md +87 -87
  8. package/bug_fix.py +21 -36
  9. package/fac-logo.svg +151 -151
  10. package/feffery_antd_components/AntdAccordion.py +7 -7
  11. package/feffery_antd_components/AntdAffix.py +2 -2
  12. package/feffery_antd_components/AntdAlert.py +5 -5
  13. package/feffery_antd_components/AntdAnchor.py +5 -5
  14. package/feffery_antd_components/AntdAvatar.py +4 -4
  15. package/feffery_antd_components/AntdAvatarGroup.py +1 -1
  16. package/feffery_antd_components/AntdBackTop.py +4 -4
  17. package/feffery_antd_components/AntdBadge.py +5 -5
  18. package/feffery_antd_components/AntdBreadcrumb.py +4 -4
  19. package/feffery_antd_components/AntdButton.py +14 -14
  20. package/feffery_antd_components/AntdCalendar.py +4 -4
  21. package/feffery_antd_components/AntdCard.py +5 -5
  22. package/feffery_antd_components/AntdCardGrid.py +3 -3
  23. package/feffery_antd_components/AntdCardMeta.py +1 -1
  24. package/feffery_antd_components/AntdCarousel.py +13 -13
  25. package/feffery_antd_components/AntdCascader.py +16 -17
  26. package/feffery_antd_components/AntdCenter.py +3 -3
  27. package/feffery_antd_components/AntdCheckCard.py +7 -7
  28. package/feffery_antd_components/AntdCheckCardGroup.py +9 -9
  29. package/feffery_antd_components/AntdCheckableTag.py +2 -2
  30. package/feffery_antd_components/AntdCheckbox.py +8 -8
  31. package/feffery_antd_components/AntdCheckboxGroup.py +6 -6
  32. package/feffery_antd_components/AntdCol.py +5 -5
  33. package/feffery_antd_components/AntdCollapse.py +8 -8
  34. package/feffery_antd_components/AntdColorPicker.py +13 -13
  35. package/feffery_antd_components/AntdComment.py +7 -7
  36. package/feffery_antd_components/AntdCompact.py +3 -3
  37. package/feffery_antd_components/AntdConfigProvider.py +6 -6
  38. package/feffery_antd_components/AntdContent.py +1 -1
  39. package/feffery_antd_components/AntdCopyText.py +2 -2
  40. package/feffery_antd_components/AntdCountdown.py +1 -1
  41. package/feffery_antd_components/AntdCountup.py +1 -1
  42. package/feffery_antd_components/AntdCustomSkeleton.py +5 -5
  43. package/feffery_antd_components/AntdDatePicker.py +13 -13
  44. package/feffery_antd_components/AntdDateRangePicker.py +12 -12
  45. package/feffery_antd_components/AntdDescriptionItem.py +2 -2
  46. package/feffery_antd_components/AntdDescriptions.py +6 -6
  47. package/feffery_antd_components/AntdDivider.py +5 -5
  48. package/feffery_antd_components/AntdDraggerUpload.py +15 -15
  49. package/feffery_antd_components/AntdDrawer.py +12 -12
  50. package/feffery_antd_components/AntdDropdown.py +18 -18
  51. package/feffery_antd_components/AntdEmpty.py +2 -2
  52. package/feffery_antd_components/AntdFlex.py +6 -6
  53. package/feffery_antd_components/AntdFloatButton.py +5 -5
  54. package/feffery_antd_components/AntdFloatButtonGroup.py +3 -3
  55. package/feffery_antd_components/AntdFooter.py +1 -1
  56. package/feffery_antd_components/AntdForm.py +10 -6
  57. package/feffery_antd_components/AntdFormItem.py +4 -4
  58. package/feffery_antd_components/AntdFormRender.py +2 -2
  59. package/feffery_antd_components/AntdHappyProvider.py +2 -2
  60. package/feffery_antd_components/AntdHeader.py +1 -1
  61. package/feffery_antd_components/AntdIcon.py +3 -3
  62. package/feffery_antd_components/AntdImage.py +6 -6
  63. package/feffery_antd_components/AntdImageGroup.py +6 -6
  64. package/feffery_antd_components/AntdInput.py +17 -17
  65. package/feffery_antd_components/AntdInputNumber.py +12 -12
  66. package/feffery_antd_components/AntdLayout.py +1 -1
  67. package/feffery_antd_components/AntdMentions.py +9 -9
  68. package/feffery_antd_components/AntdMenu.py +9 -9
  69. package/feffery_antd_components/AntdMessage.py +3 -3
  70. package/feffery_antd_components/AntdModal.py +28 -28
  71. package/feffery_antd_components/AntdNotification.py +9 -9
  72. package/feffery_antd_components/AntdOTP.py +7 -7
  73. package/feffery_antd_components/AntdPageHeader.py +5 -5
  74. package/feffery_antd_components/AntdPagination.py +15 -15
  75. package/feffery_antd_components/AntdParagraph.py +2 -2
  76. package/feffery_antd_components/AntdPictureUpload.py +28 -28
  77. package/feffery_antd_components/AntdPopconfirm.py +21 -21
  78. package/feffery_antd_components/AntdPopover.py +9 -9
  79. package/feffery_antd_components/AntdPopupCard.py +9 -9
  80. package/feffery_antd_components/AntdProgress.py +9 -9
  81. package/feffery_antd_components/AntdQRCode.py +10 -10
  82. package/feffery_antd_components/AntdRadioGroup.py +9 -9
  83. package/feffery_antd_components/AntdRate.py +9 -9
  84. package/feffery_antd_components/AntdResult.py +1 -1
  85. package/feffery_antd_components/AntdRibbon.py +2 -2
  86. package/feffery_antd_components/AntdRow.py +3 -3
  87. package/feffery_antd_components/AntdSegmented.py +9 -9
  88. package/feffery_antd_components/AntdSegmentedColoring.py +11 -11
  89. package/feffery_antd_components/AntdSelect.py +19 -19
  90. package/feffery_antd_components/AntdSider.py +6 -6
  91. package/feffery_antd_components/AntdSkeleton.py +11 -11
  92. package/feffery_antd_components/AntdSkeletonAvatar.py +3 -3
  93. package/feffery_antd_components/AntdSkeletonButton.py +5 -5
  94. package/feffery_antd_components/AntdSkeletonImage.py +1 -1
  95. package/feffery_antd_components/AntdSkeletonInput.py +3 -3
  96. package/feffery_antd_components/AntdSlider.py +10 -10
  97. package/feffery_antd_components/AntdSpace.py +4 -4
  98. package/feffery_antd_components/AntdSpin.py +7 -8
  99. package/feffery_antd_components/AntdSplitter.py +5 -5
  100. package/feffery_antd_components/AntdSpoiler.py +5 -5
  101. package/feffery_antd_components/AntdStatistic.py +2 -2
  102. package/feffery_antd_components/AntdSteps.py +8 -8
  103. package/feffery_antd_components/AntdSwitch.py +8 -8
  104. package/feffery_antd_components/AntdTable.py +64 -63
  105. package/feffery_antd_components/AntdTabs.py +13 -14
  106. package/feffery_antd_components/AntdTag.py +4 -4
  107. package/feffery_antd_components/AntdText.py +2 -2
  108. package/feffery_antd_components/AntdTimePicker.py +16 -16
  109. package/feffery_antd_components/AntdTimeRangePicker.py +15 -15
  110. package/feffery_antd_components/AntdTimeline.py +2 -2
  111. package/feffery_antd_components/AntdTitle.py +2 -2
  112. package/feffery_antd_components/AntdTooltip.py +9 -9
  113. package/feffery_antd_components/AntdTour.py +9 -9
  114. package/feffery_antd_components/AntdTransfer.py +11 -11
  115. package/feffery_antd_components/AntdTree.py +17 -17
  116. package/feffery_antd_components/AntdTreeSelect.py +18 -18
  117. package/feffery_antd_components/AntdUpload.py +18 -18
  118. package/feffery_antd_components/AntdWatermark.py +6 -6
  119. package/feffery_antd_components/Fragment.py +1 -1
  120. package/feffery_antd_components/__init__.py +88 -88
  121. package/feffery_antd_components/_icons.py +559 -559
  122. package/feffery_antd_components/alias.py +222 -222
  123. package/feffery_antd_components/async-antd_table.js +2 -2
  124. package/feffery_antd_components/async-data_display.js +1 -1
  125. package/feffery_antd_components/async-data_entry.js +3 -3
  126. package/feffery_antd_components/async-upload.js +2 -2
  127. package/feffery_antd_components/feffery_antd_components.min.js +8 -8
  128. package/feffery_antd_components/metadata.json +1 -1
  129. package/feffery_antd_components/package-info.json +111 -96
  130. package/feffery_antd_components/utils.py +262 -262
  131. package/package.json +111 -96
  132. package/pytest.ini +5 -5
  133. package/release-to-test-pypi.sh +1 -1
  134. package/requirements.txt +2 -2
  135. package/review_checklist.md +47 -47
  136. package/ruff.toml +4 -4
  137. package/setup.py +33 -33
  138. package/src/jl/'feffery'_antdform.jl +2 -1
  139. package/src/jl/'feffery'_antdtable.jl +7 -6
  140. package/src/lib/components/dataDisplay/AntdAccordion.react.js +232 -232
  141. package/src/lib/components/dataDisplay/AntdAvatar.react.js +177 -177
  142. package/src/lib/components/dataDisplay/AntdAvatarGroup.react.js +133 -133
  143. package/src/lib/components/dataDisplay/AntdBadge.react.js +196 -196
  144. package/src/lib/components/dataDisplay/AntdCarousel.react.js +187 -187
  145. package/src/lib/components/dataDisplay/AntdCheckableTag.react.js +105 -105
  146. package/src/lib/components/dataDisplay/AntdCollapse.react.js +239 -239
  147. package/src/lib/components/dataDisplay/AntdComment.react.js +251 -251
  148. package/src/lib/components/dataDisplay/AntdCountdown.react.js +143 -143
  149. package/src/lib/components/dataDisplay/AntdCountup.react.js +133 -133
  150. package/src/lib/components/dataDisplay/AntdEmpty.react.js +162 -162
  151. package/src/lib/components/dataDisplay/AntdImage.react.js +202 -202
  152. package/src/lib/components/dataDisplay/AntdImageGroup.react.js +181 -181
  153. package/src/lib/components/dataDisplay/AntdPopover.react.js +220 -220
  154. package/src/lib/components/dataDisplay/AntdQRCode.react.js +191 -191
  155. package/src/lib/components/dataDisplay/AntdRibbon.react.js +105 -105
  156. package/src/lib/components/dataDisplay/AntdSegmented.react.js +234 -234
  157. package/src/lib/components/dataDisplay/AntdSpoiler.react.js +154 -154
  158. package/src/lib/components/dataDisplay/AntdStatistic.react.js +168 -168
  159. package/src/lib/components/dataDisplay/AntdTable.react.js +1859 -1858
  160. package/src/lib/components/dataDisplay/AntdTabs.react.js +352 -352
  161. package/src/lib/components/dataDisplay/AntdTag.react.js +135 -135
  162. package/src/lib/components/dataDisplay/AntdTimeline.react.js +136 -136
  163. package/src/lib/components/dataDisplay/AntdTooltip.react.js +230 -230
  164. package/src/lib/components/dataDisplay/AntdTree.react.js +641 -641
  165. package/src/lib/components/dataDisplay/card/AntdCard.react.js +249 -249
  166. package/src/lib/components/dataDisplay/card/AntdCardGrid.react.js +99 -99
  167. package/src/lib/components/dataDisplay/card/AntdCardMeta.react.js +97 -97
  168. package/src/lib/components/dataDisplay/descriptions/AntdDescriptionItem.react.js +130 -130
  169. package/src/lib/components/dataDisplay/descriptions/AntdDescriptions.react.js +237 -237
  170. package/src/lib/components/dataEntry/AntdCalendar.react.js +205 -205
  171. package/src/lib/components/dataEntry/AntdCascader.react.js +435 -435
  172. package/src/lib/components/dataEntry/AntdCheckbox.react.js +182 -182
  173. package/src/lib/components/dataEntry/AntdCheckboxGroup.react.js +193 -193
  174. package/src/lib/components/dataEntry/AntdColorPicker.react.js +240 -240
  175. package/src/lib/components/dataEntry/AntdDatePicker.react.js +432 -432
  176. package/src/lib/components/dataEntry/AntdDateRangePicker.react.js +439 -439
  177. package/src/lib/components/dataEntry/AntdInput.react.js +423 -423
  178. package/src/lib/components/dataEntry/AntdInputNumber.react.js +329 -329
  179. package/src/lib/components/dataEntry/AntdMentions.react.js +236 -236
  180. package/src/lib/components/dataEntry/AntdOTP.react.js +186 -186
  181. package/src/lib/components/dataEntry/AntdRadioGroup.react.js +241 -241
  182. package/src/lib/components/dataEntry/AntdRate.react.js +199 -199
  183. package/src/lib/components/dataEntry/AntdSegmentedColoring.react.js +251 -251
  184. package/src/lib/components/dataEntry/AntdSelect.react.js +492 -492
  185. package/src/lib/components/dataEntry/AntdSlider.react.js +325 -325
  186. package/src/lib/components/dataEntry/AntdSwitch.react.js +210 -210
  187. package/src/lib/components/dataEntry/AntdTimePicker.react.js +344 -344
  188. package/src/lib/components/dataEntry/AntdTimeRangePicker.react.js +325 -325
  189. package/src/lib/components/dataEntry/AntdTransfer.react.js +317 -317
  190. package/src/lib/components/dataEntry/AntdTreeSelect.react.js +573 -573
  191. package/src/lib/components/dataEntry/check-card/AntdCheckCard.react.js +186 -186
  192. package/src/lib/components/dataEntry/check-card/AntdCheckCardGroup.react.js +214 -214
  193. package/src/lib/components/dataEntry/form/AntdForm.react.js +201 -194
  194. package/src/lib/components/dataEntry/form/AntdFormItem.react.js +210 -210
  195. package/src/lib/components/dataEntry/upload/AntdDraggerUpload.react.js +504 -504
  196. package/src/lib/components/dataEntry/upload/AntdPictureUpload.react.js +530 -530
  197. package/src/lib/components/dataEntry/upload/AntdUpload.react.js +537 -537
  198. package/src/lib/components/feedback/AntdAlert.react.js +185 -185
  199. package/src/lib/components/feedback/AntdDrawer.react.js +306 -306
  200. package/src/lib/components/feedback/AntdMessage.react.js +143 -143
  201. package/src/lib/components/feedback/AntdModal.react.js +530 -530
  202. package/src/lib/components/feedback/AntdNotification.react.js +211 -211
  203. package/src/lib/components/feedback/AntdPopconfirm.react.js +433 -433
  204. package/src/lib/components/feedback/AntdPopupCard.react.js +362 -362
  205. package/src/lib/components/feedback/AntdProgress.react.js +300 -300
  206. package/src/lib/components/feedback/AntdResult.react.js +125 -125
  207. package/src/lib/components/feedback/AntdSpin.react.js +273 -273
  208. package/src/lib/components/feedback/skeleton/AntdCustomSkeleton.react.js +197 -197
  209. package/src/lib/components/feedback/skeleton/AntdSkeleton.react.js +291 -291
  210. package/src/lib/components/feedback/skeleton/AntdSkeletonAvatar.react.js +109 -109
  211. package/src/lib/components/feedback/skeleton/AntdSkeletonButton.react.js +114 -114
  212. package/src/lib/components/feedback/skeleton/AntdSkeletonImage.react.js +82 -82
  213. package/src/lib/components/feedback/skeleton/AntdSkeletonInput.react.js +98 -98
  214. package/src/lib/components/formRender/AntdFormRender.react.js +945 -945
  215. package/src/lib/components/general/AntdButton.react.js +328 -328
  216. package/src/lib/components/general/AntdFloatButton.react.js +157 -157
  217. package/src/lib/components/general/AntdFloatButtonGroup.react.js +162 -162
  218. package/src/lib/components/general/AntdIcon.react.js +176 -176
  219. package/src/lib/components/general/typography/AntdParagraph.react.js +202 -202
  220. package/src/lib/components/general/typography/AntdText.react.js +194 -194
  221. package/src/lib/components/general/typography/AntdTitle.react.js +186 -186
  222. package/src/lib/components/icons.react.js +1136 -1136
  223. package/src/lib/components/layout/AntdCenter.react.js +122 -122
  224. package/src/lib/components/layout/AntdCompact.react.js +108 -108
  225. package/src/lib/components/layout/AntdContent.react.js +92 -92
  226. package/src/lib/components/layout/AntdDivider.react.js +219 -219
  227. package/src/lib/components/layout/AntdFlex.react.js +143 -143
  228. package/src/lib/components/layout/AntdFooter.react.js +92 -92
  229. package/src/lib/components/layout/AntdHeader.react.js +92 -92
  230. package/src/lib/components/layout/AntdLayout.react.js +90 -90
  231. package/src/lib/components/layout/AntdSider.react.js +162 -162
  232. package/src/lib/components/layout/AntdSpace.react.js +213 -213
  233. package/src/lib/components/layout/AntdSplitter.react.js +173 -173
  234. package/src/lib/components/layout/grid/AntdCol.react.js +349 -349
  235. package/src/lib/components/layout/grid/AntdRow.react.js +152 -152
  236. package/src/lib/components/locales.react.js +197 -197
  237. package/src/lib/components/navigation/AntdAnchor.react.js +208 -208
  238. package/src/lib/components/navigation/AntdBreadcrumb.react.js +270 -270
  239. package/src/lib/components/navigation/AntdDropdown.react.js +469 -469
  240. package/src/lib/components/navigation/AntdMenu.react.js +573 -649
  241. package/src/lib/components/navigation/AntdPageHeader.react.js +139 -139
  242. package/src/lib/components/navigation/AntdPagination.react.js +303 -303
  243. package/src/lib/components/navigation/AntdSteps.react.js +199 -199
  244. package/src/lib/components/other/AntdAffix.react.js +120 -120
  245. package/src/lib/components/other/AntdBackTop.react.js +128 -128
  246. package/src/lib/components/other/AntdConfigProvider.react.js +246 -246
  247. package/src/lib/components/other/AntdCopyText.react.js +138 -138
  248. package/src/lib/components/other/AntdHappyProvider.react.js +50 -50
  249. package/src/lib/components/other/AntdTour.react.js +277 -277
  250. package/src/lib/components/other/AntdWatermark.react.js +179 -179
  251. package/src/lib/components/other/Fragment.react.js +50 -50
  252. package/src/lib/components/styles.css +513 -513
  253. package/src/lib/components/utils.js +51 -51
  254. package/src/lib/contexts/FormContext.js +4 -4
  255. package/src/lib/contexts/FormItemContext.js +4 -4
  256. package/src/lib/contexts/PropsContext.js +4 -4
  257. package/src/lib/fragments/AntdTable.react.js +2215 -2200
  258. package/src/lib/fragments/dataDisplay/AntdAccordion.react.js +101 -101
  259. package/src/lib/fragments/dataDisplay/AntdAvatar.react.js +127 -127
  260. package/src/lib/fragments/dataDisplay/AntdAvatarGroup.react.js +51 -51
  261. package/src/lib/fragments/dataDisplay/AntdBadge.react.js +73 -73
  262. package/src/lib/fragments/dataDisplay/AntdCarousel.react.js +71 -71
  263. package/src/lib/fragments/dataDisplay/AntdCheckableTag.react.js +57 -57
  264. package/src/lib/fragments/dataDisplay/AntdComment.react.js +178 -178
  265. package/src/lib/fragments/dataDisplay/AntdCountdown.react.js +83 -83
  266. package/src/lib/fragments/dataDisplay/AntdCountup.react.js +70 -70
  267. package/src/lib/fragments/dataDisplay/AntdEmpty.react.js +71 -71
  268. package/src/lib/fragments/dataDisplay/AntdImage.react.js +206 -206
  269. package/src/lib/fragments/dataDisplay/AntdImageGroup.react.js +91 -91
  270. package/src/lib/fragments/dataDisplay/AntdPopover.react.js +106 -106
  271. package/src/lib/fragments/dataDisplay/AntdQRCode.react.js +93 -93
  272. package/src/lib/fragments/dataDisplay/AntdRibbon.react.js +53 -53
  273. package/src/lib/fragments/dataDisplay/AntdSegmented.react.js +129 -129
  274. package/src/lib/fragments/dataDisplay/AntdSpoiler.react.js +96 -96
  275. package/src/lib/fragments/dataDisplay/AntdTabs.react.js +211 -211
  276. package/src/lib/fragments/dataDisplay/AntdTag.react.js +66 -66
  277. package/src/lib/fragments/dataDisplay/AntdTimeline.react.js +67 -67
  278. package/src/lib/fragments/dataDisplay/AntdTooltip.react.js +98 -98
  279. package/src/lib/fragments/dataDisplay/AntdTree.react.js +581 -581
  280. package/src/lib/fragments/dataDisplay/card/AntdCard.react.js +104 -104
  281. package/src/lib/fragments/dataDisplay/card/AntdCardGrid.react.js +54 -54
  282. package/src/lib/fragments/dataDisplay/card/AntdCardMeta.react.js +54 -54
  283. package/src/lib/fragments/dataDisplay/descriptions/AntdDescriptionItem.react.js +56 -56
  284. package/src/lib/fragments/dataDisplay/descriptions/AntdDescriptions.react.js +139 -139
  285. package/src/lib/fragments/dataEntry/AntdCalendar.react.js +178 -178
  286. package/src/lib/fragments/dataEntry/AntdCascader.react.js +319 -319
  287. package/src/lib/fragments/dataEntry/AntdCheckbox.react.js +119 -119
  288. package/src/lib/fragments/dataEntry/AntdCheckboxGroup.react.js +122 -122
  289. package/src/lib/fragments/dataEntry/AntdColorPicker.react.js +244 -244
  290. package/src/lib/fragments/dataEntry/AntdDatePicker.react.js +586 -586
  291. package/src/lib/fragments/dataEntry/AntdDateRangePicker.react.js +628 -628
  292. package/src/lib/fragments/dataEntry/AntdInput.react.js +450 -450
  293. package/src/lib/fragments/dataEntry/AntdInputNumber.react.js +194 -194
  294. package/src/lib/fragments/dataEntry/AntdMentions.react.js +180 -180
  295. package/src/lib/fragments/dataEntry/AntdOTP.react.js +127 -127
  296. package/src/lib/fragments/dataEntry/AntdRadioGroup.react.js +203 -203
  297. package/src/lib/fragments/dataEntry/AntdRate.react.js +131 -131
  298. package/src/lib/fragments/dataEntry/AntdSegmentedColoring.react.js +246 -246
  299. package/src/lib/fragments/dataEntry/AntdSelect.react.js +373 -373
  300. package/src/lib/fragments/dataEntry/AntdSlider.react.js +177 -177
  301. package/src/lib/fragments/dataEntry/AntdSwitch.react.js +132 -132
  302. package/src/lib/fragments/dataEntry/AntdTimePicker.react.js +191 -191
  303. package/src/lib/fragments/dataEntry/AntdTimeRangePicker.react.js +213 -213
  304. package/src/lib/fragments/dataEntry/AntdTransfer.react.js +183 -183
  305. package/src/lib/fragments/dataEntry/AntdTreeSelect.react.js +355 -355
  306. package/src/lib/fragments/dataEntry/check-card/AntdCheckCard.react.js +111 -111
  307. package/src/lib/fragments/dataEntry/check-card/AntdCheckCardGroup.react.js +122 -122
  308. package/src/lib/fragments/dataEntry/form/AntdForm.react.js +126 -120
  309. package/src/lib/fragments/dataEntry/form/AntdFormItem.react.js +85 -84
  310. package/src/lib/fragments/formRender/AntdFormRender.react.js +179 -179
  311. package/src/lib/fragments/upload/AntdDraggerUpload.react.js +622 -622
  312. package/src/lib/fragments/upload/AntdPictureUpload.react.js +577 -577
  313. package/src/lib/fragments/upload/AntdUpload.react.js +613 -613
  314. package/src/lib/hooks/useCss.js +28 -28
  315. package/src/lib/hooks/useStickyOffset.js +115 -115
  316. package/src/lib/index.js +240 -240
  317. package/src/lib/internal_components/UtilsLink.react.js +82 -0
  318. package/src/lib/store/formStore.js +54 -47
  319. package/tests/dash3.0tests/AntdQRCode/347/273/204/344/273/266loading/347/212/266/346/200/201/351/207/215/346/236/204/test.py +51 -51
  320. package/tests/dash3.0tests/AntdTable/345/207/275/346/225/260/345/274/217/346/224/271/351/200/240/test.py +62 -62
  321. package/tests/dash3.0tests/_dashprivate_layout/346/224/271/345/212/250/346/265/213/350/257/225/test.py +50 -50
  322. package/tests/dash3.0tests/loading_state/346/224/271/345/212/250/346/265/213/350/257/225/test.py +38 -38
  323. package/tests/dash3.0tests//345/207/275/346/225/260/345/274/217/347/273/204/344/273/266/351/273/230/350/256/244/345/200/274/351/207/215/346/236/204/test.py +30 -30
  324. package/tests/dash3.0tests//345/212/240/350/275/275/345/212/250/347/224/273/347/261/273/347/273/204/344/273/266/351/207/215/346/236/204/346/265/213/350/257/225/test.py +62 -62
  325. package/tests/dash3.0tests//347/273/204/344/273/266/345/261/236/346/200/247/345/237/272/347/241/200/346/214/201/344/271/205/345/214/226/351/207/215/346/236/204/346/265/213/350/257/225/test.py +25 -25
  326. package/tests/dataDisplay/AntdAccordion/feat_size.py +36 -36
  327. package/tests/dataDisplay/AntdAccordion/feat_styles.py +35 -35
  328. package/tests/dataDisplay/AntdCard/refactor_delete_props.py +83 -83
  329. package/tests/dataDisplay/AntdCarousel/feat_auto_play_dot_duration.py +34 -34
  330. package/tests/dataDisplay/AntdCollapse/feat_size.py +30 -30
  331. package/tests/dataDisplay/AntdCollapse/feat_styles.py +29 -29
  332. package/tests/dataDisplay/AntdCountdown/feat_finish_event.py +41 -41
  333. package/tests/dataDisplay/AntdCountdown/refactor_to_timer.py +57 -57
  334. package/tests/dataDisplay/AntdCountup/refactor_to_timer.py +57 -57
  335. package/tests/dataDisplay/AntdDescriptions/feat_span_filled.py +42 -42
  336. package/tests/dataDisplay/AntdImage/debug_preview_toolbar.py +23 -23
  337. package/tests/dataDisplay/AntdSegmented/feat_shape.py +39 -39
  338. package/tests/dataDisplay/AntdSegmented/feat_simple_options.py +43 -43
  339. package/tests/dataDisplay/AntdSegmented/feat_vertical.py +32 -32
  340. package/tests/dataDisplay/AntdTable/feat_button_mode_like_dcc_link.py +125 -0
  341. package/tests/dataDisplay/AntdTable/feat_button_mode_refactor.py +143 -143
  342. package/tests/dataDisplay/AntdTable/feat_button_mode_tooltip.py +47 -47
  343. package/tests/dataDisplay/AntdTable/feat_columns_fixed_bool.py +40 -40
  344. package/tests/dataDisplay/AntdTable/feat_columns_min_width.py +51 -51
  345. package/tests/dataDisplay/AntdTable/feat_columns_sort_order.py +131 -131
  346. package/tests/dataDisplay/AntdTable/feat_editable_disabled_keys.py +71 -71
  347. package/tests/dataDisplay/AntdTable/feat_header_align.py +38 -38
  348. package/tests/dataDisplay/AntdTable/feat_link_mode_like_dcc_link.py +49 -0
  349. package/tests/dataDisplay/AntdTable/feat_loading.py +76 -76
  350. package/tests/dataDisplay/AntdTable/feat_mini_chart_color.py +139 -139
  351. package/tests/dataDisplay/AntdTable/feat_row_class_name.py +39 -39
  352. package/tests/dataDisplay/AntdTable/feat_row_class_name_func.py +41 -41
  353. package/tests/dataDisplay/AntdTable/feat_select_mode_show_search.py +70 -70
  354. package/tests/dataDisplay/AntdTable/feat_sticky_header.py +81 -81
  355. package/tests/dataDisplay/AntdTable/feat_table_scroll.py +54 -54
  356. package/tests/dataDisplay/AntdTable/feat_tag_mode_tooltip.py +88 -88
  357. package/tests/dataDisplay/AntdTable/feat_title_popover_nodes.py +94 -79
  358. package/tests/dataDisplay/AntdTable/fix_context_locale.py +37 -37
  359. package/tests/dataDisplay/AntdTable/fix_field_bool.py +50 -50
  360. package/tests/dataDisplay/AntdTable/fix_nested_editable.py +115 -115
  361. package/tests/dataDisplay/AntdTable/fix_select_with_editable.py +84 -84
  362. package/tests/dataDisplay/AntdTable/fix_server_side_mode_filter_search.py +194 -194
  363. package/tests/dataDisplay/AntdTable/fix_summary.py +474 -474
  364. package/tests/dataDisplay/AntdTable/fix_summary_multi_level_header.py +85 -85
  365. package/tests/dataDisplay/AntdTable/fix_zero_value_filter.py +34 -34
  366. package/tests/dataDisplay/AntdTable/perf_button_mode_auto_wrap.py +39 -39
  367. package/tests/dataDisplay/AntdTable/perf_editable_column_format_constrait_message.py +65 -65
  368. package/tests/dataDisplay/AntdTable/refactor_mini_progress_mode.py +134 -134
  369. package/tests/dataDisplay/AntdTable/rollback_title_popover_info.py +46 -0
  370. package/tests/dataDisplay/AntdTabs/feat_item_icon.py +39 -39
  371. package/tests/dataDisplay/AntdTabs/feat_placeholder.py +124 -124
  372. package/tests/dataDisplay/AntdTabs/feat_tab_bar_style.py +40 -40
  373. package/tests/dataDisplay/AntdTree/feat_async_data_load.py +71 -71
  374. package/tests/dataDisplay/descriptions/AntdDescriptions/feat_extra.py +83 -83
  375. package/tests/dataEntry/AntdCalendar/feat_custom_cells.py +52 -52
  376. package/tests/dataEntry/AntdCascader/feat_prefix.py +62 -62
  377. package/tests/dataEntry/AntdCascader/feat_suffix_icon.py +62 -62
  378. package/tests/dataEntry/AntdCascader/fix_read_only.py +74 -74
  379. package/tests/dataEntry/AntdDatePicker/feat_custom_cells.py +79 -79
  380. package/tests/dataEntry/AntdDatePicker/feat_picker_value.py +38 -38
  381. package/tests/dataEntry/AntdDatePicker/feat_prefix.py +21 -21
  382. package/tests/dataEntry/AntdDatePicker/feat_suffix_icon.py +21 -21
  383. package/tests/dataEntry/AntdDateRangePicker/feat_custom_cells.py +79 -79
  384. package/tests/dataEntry/AntdDateRangePicker/feat_picker_value.py +38 -38
  385. package/tests/dataEntry/AntdDateRangePicker/feat_prefix.py +21 -21
  386. package/tests/dataEntry/AntdDateRangePicker/feat_suffix_icon.py +21 -21
  387. package/tests/dataEntry/AntdForm/feat_batch_control_tooltips.py +35 -0
  388. package/tests/dataEntry/AntdForm/feat_optional_batch_control.py +62 -62
  389. package/tests/dataEntry/AntdForm/fix_checkbox.py +65 -65
  390. package/tests/dataEntry/AntdRadioGroup/feat_block.py +40 -40
  391. package/tests/dataEntry/AntdSelect/feat_locale_ru.py +24 -24
  392. package/tests/dataEntry/AntdSelect/feat_max_count.py +28 -28
  393. package/tests/dataEntry/AntdSelect/feat_prefix.py +26 -26
  394. package/tests/dataEntry/AntdSelect/feat_show_search.py +32 -32
  395. package/tests/dataEntry/AntdSelect/feat_suffix_icon.py +46 -46
  396. package/tests/dataEntry/AntdSelect/fix_read_only.py +50 -50
  397. package/tests/dataEntry/AntdSelect/fix_read_only_with_allow_clear.py +29 -29
  398. package/tests/dataEntry/AntdSlider/feat_range_editable.py +49 -49
  399. package/tests/dataEntry/AntdTimePicker/feat_prefix.py +21 -21
  400. package/tests/dataEntry/AntdTimePicker/feat_suffix_icon.py +21 -21
  401. package/tests/dataEntry/AntdTimeRangePicker/feat_prefix.py +21 -21
  402. package/tests/dataEntry/AntdTimeRangePicker/feat_suffix_icon.py +21 -21
  403. package/tests/dataEntry/AntdTreeSelect/feat_async_data_load.py +69 -69
  404. package/tests/dataEntry/AntdTreeSelect/feat_max_count.py +71 -71
  405. package/tests/dataEntry/AntdTreeSelect/feat_prefix.py +43 -43
  406. package/tests/dataEntry/AntdTreeSelect/fix_read_only.py +50 -50
  407. package/tests/dataEntry/AntdUpload/feat_pastable.py +22 -22
  408. package/tests/dataEntry/AntdUpload/fix_follow_theme.py +28 -28
  409. package/tests/feat_variant_underlined.py +100 -100
  410. package/tests/feedback/AntdAlert/feat_icon.py +35 -35
  411. package/tests/feedback/AntdMessage/fix_follow_config_provider.py +44 -44
  412. package/tests/feedback/AntdModal/feat_force_render.py +57 -57
  413. package/tests/feedback/AntdModal/feat_loading_title.py +92 -92
  414. package/tests/feedback/AntdModal/feat_prevent_close.py +54 -54
  415. package/tests/feedback/AntdModal/feat_responsive_width.py +31 -31
  416. package/tests/feedback/AntdNotification/feat_component_content.py +64 -64
  417. package/tests/feedback/AntdNotification/feat_number_of_stack.py +40 -40
  418. package/tests/feedback/AntdNotification/feat_show_progress.py +40 -40
  419. package/tests/feedback/AntdNotification/fix_follow_config_provider.py +46 -46
  420. package/tests/feedback/AntdPopupCard/feat_force_render.py +61 -61
  421. package/tests/feedback/AntdProgress/feat_percent_position.py +39 -39
  422. package/tests/feedback/AntdProgress/perf_size.py +26 -26
  423. package/tests/feedback/AntdProgress/perf_steps.py +37 -37
  424. package/tests/feedback/AntdProgress/perf_stroke_color.py +58 -58
  425. package/tests/feedback/AntdResult/feat_extra.py +26 -26
  426. package/tests/feedback/AntdSkeleton/fix_dash3.py +43 -43
  427. package/tests/general/AntdButton/feat_color_and_variant.py +40 -40
  428. package/tests/general/AntdButton/feat_preset_color.py +46 -46
  429. package/tests/general/AntdFloatButtonGroup/feat_placement.py +83 -83
  430. package/tests/general/AntdFloatButtonGroup/feat_tooltip.py +34 -34
  431. package/tests/general/AntdIcon/feat_iconfont.py +41 -41
  432. package/tests/layout/AntdCenter/feat_use_token.py +41 -41
  433. package/tests/layout/AntdDivider/feat_plain.py +21 -21
  434. package/tests/layout/AntdDivider/feat_size.py +36 -36
  435. package/tests/layout/AntdSplitter/feat_AntdSplitter.py +210 -210
  436. package/tests/layout/AntdSplitter/feat_lazy.py +56 -56
  437. package/tests/layout/AntdSplitter/refactor.py +303 -303
  438. package/tests/navigation/AntdAnchor/feat_current_anchor.py +43 -43
  439. package/tests/navigation/AntdAnchor/feat_direction.py +43 -43
  440. package/tests/navigation/AntdAnchor/feat_replace.py +43 -43
  441. package/tests/navigation/AntdBreadcrumb/feat_menu_item_event.py +64 -64
  442. package/tests/navigation/AntdBreadcrumb/refactor_items.py +140 -140
  443. package/tests/navigation/AntdDropdown/feat_extra.py +29 -29
  444. package/tests/navigation/AntdMenu/feat_currentItem.py +85 -85
  445. package/tests/navigation/AntdMenu/feat_currentItemPath.py +85 -85
  446. package/tests/navigation/AntdMenu/feat_currentKeyPath.py +85 -85
  447. package/tests/navigation/AntdMenu/feat_custom_icon.py +57 -57
  448. package/tests/navigation/AntdMenu/feat_expandIcon.py +70 -70
  449. package/tests/navigation/AntdMenu/feat_triggerSubMenuAction.py +67 -67
  450. package/tests/navigation/AntdMenu/fix_onlyExpandCurrentSubMenu.py +57 -57
  451. package/tests/navigation/AntdMenu/fix_with_sider.py +71 -71
  452. package/tests/navigation/AntdPagination/feat_align.py +31 -31
  453. package/tests/other/AntdAffix/feat_listen_affixed.py +41 -41
  454. package/tests/other/AntdBackTop/refactor.py +18 -18
  455. package/tests/other/AntdConfigProvider/feat_use_css.py +67 -67
  456. package/tests/other/AntdCopyText/feat_copy_table.py +67 -67
  457. package/tests/other/AntdCopyText/feat_tooltips.py +61 -61
  458. package/tests/other/AntdHappyProvider/feat_component.py +60 -60
  459. package/tests/other/Fragment/feat_use_token.py +32 -32
  460. package/usage.py +34 -34
  461. package/webpack.config.js +181 -181
  462. package/webpack.serve.config.js +12 -12
@@ -1,530 +1,530 @@
1
- // react核心
2
- import React, { useContext } from 'react';
3
- import PropTypes from 'prop-types';
4
- // antd核心
5
- import { Modal, ConfigProvider } from 'antd';
6
- // 辅助库
7
- import { str2Locale } from '../locales.react';
8
- import { isString } from 'lodash';
9
- import { pickBy } from 'ramda';
10
- import { useLoading } from '../utils';
11
- // 自定义hooks
12
- import useCss from '../../hooks/useCss';
13
- // 自定义上下文
14
- import PropsContext from '../../contexts/PropsContext';
15
-
16
- /**
17
- * 对话框组件AntdModal
18
- */
19
- const AntdModal = ({
20
- id,
21
- children,
22
- className,
23
- key,
24
- style,
25
- styles,
26
- classNames,
27
- locale = 'zh-cn',
28
- setProps,
29
- title,
30
- loadingTitle,
31
- visible = false,
32
- renderFooter = false,
33
- okButtonProps,
34
- cancelButtonProps,
35
- okText,
36
- loadingOkText,
37
- cancelText,
38
- width = 520,
39
- centered = false,
40
- keyboard = true,
41
- closable = true,
42
- mask = true,
43
- maskClosable = true,
44
- okClickClose = true,
45
- preventClose = false,
46
- zIndex = 1000,
47
- okCounts = 0,
48
- cancelCounts = 0,
49
- closeCounts = 0,
50
- confirmLoading = false,
51
- confirmAutoSpin = false,
52
- transitionType = 'zoom',
53
- forceRender = false,
54
- destroyOnClose = true,
55
- loading = false,
56
- ...others
57
- }) => {
58
-
59
- const context = useContext(PropsContext)
60
- locale = (context && context.locale) || locale
61
-
62
- // 监听确认按钮点击事件
63
- const listenOk = () => {
64
- if (okClickClose) {
65
- setProps({ visible: false, okCounts: okCounts + 1 })
66
- } else if (confirmAutoSpin) {
67
- setProps({ okCounts: okCounts + 1, confirmLoading: true })
68
- } else {
69
- setProps({ okCounts: okCounts + 1 })
70
- }
71
- };
72
-
73
- // 监听取消按钮点击事件
74
- const listenCancel = () => {
75
- // 是否阻止默认的各类关闭触发行为生效
76
- if (preventClose) {
77
- setProps({ cancelCounts: cancelCounts + 1 })
78
- } else {
79
- setProps({ visible: false, cancelCounts: cancelCounts + 1 })
80
- }
81
- };
82
-
83
- const listenClose = () => {
84
- setProps({ closeCounts: closeCounts + 1 })
85
- };
86
-
87
- const effectiveTitle = loading && loadingTitle !== undefined ? loadingTitle : title;
88
-
89
- return (
90
- <ConfigProvider locale={str2Locale.get(locale)}>
91
- <Modal
92
- // 提取具有data-*或aria-*通配格式的属性
93
- {...pickBy((_, k) => k.startsWith('data-') || k.startsWith('aria-'), others)}
94
- id={id}
95
- className={
96
- isString(className) ?
97
- className :
98
- (className ? useCss(className) : undefined)
99
- }
100
- style={style}
101
- styles={styles}
102
- classNames={classNames}
103
- key={key}
104
- title={effectiveTitle}
105
- open={visible}
106
- okText={confirmLoading ? (loadingOkText || okText) : okText}
107
- cancelText={cancelText}
108
- okButtonProps={okButtonProps}
109
- cancelButtonProps={cancelButtonProps}
110
- transitionName={transitionType === 'none' ? '' : `ant-${transitionType}`}
111
- width={width}
112
- centered={centered}
113
- keyboard={keyboard}
114
- closable={closable}
115
- mask={mask}
116
- maskClosable={maskClosable}
117
- zIndex={zIndex}
118
- onOk={listenOk}
119
- onCancel={listenCancel}
120
- afterClose={listenClose}
121
- footer={renderFooter ? undefined : null}
122
- confirmLoading={confirmLoading}
123
- forceRender={forceRender}
124
- destroyOnHidden={destroyOnClose}
125
- loading={loading}
126
- data-dash-is-loading={useLoading()}
127
- >{children}</Modal>
128
- </ConfigProvider>
129
- );
130
- }
131
-
132
- AntdModal.propTypes = {
133
- /**
134
- * 组件唯一id
135
- */
136
- id: PropTypes.string,
137
-
138
- /**
139
- * 对当前组件的`key`值进行更新,可实现强制重绘当前组件的效果
140
- */
141
- key: PropTypes.string,
142
-
143
- /**
144
- * 组件型,内嵌元素
145
- */
146
- children: PropTypes.node,
147
-
148
- /**
149
- * 当前组件css样式
150
- */
151
- style: PropTypes.object,
152
-
153
- /**
154
- * 当前组件css类名,支持[动态css](/advanced-classname)
155
- */
156
- className: PropTypes.oneOfType([
157
- PropTypes.string,
158
- PropTypes.object
159
- ]),
160
-
161
- /**
162
- * 细分控制子元素css样式
163
- */
164
- styles: PropTypes.exact({
165
- /**
166
- * 遮罩层元素css样式
167
- */
168
- mask: PropTypes.object,
169
- /**
170
- * 容器元素css样式
171
- */
172
- content: PropTypes.object,
173
- /**
174
- * 包裹层元素css样式
175
- */
176
- wrapper: PropTypes.object,
177
- /**
178
- * 头部元素css样式
179
- */
180
- header: PropTypes.object,
181
- /**
182
- * 内容元素css样式
183
- */
184
- body: PropTypes.object,
185
- /**
186
- * 底部元素css样式
187
- */
188
- footer: PropTypes.object
189
- }),
190
-
191
- /**
192
- * 细分控制子元素css类名
193
- */
194
- classNames: PropTypes.exact({
195
- /**
196
- * 遮罩层元素css类名
197
- */
198
- mask: PropTypes.string,
199
- /**
200
- * 容器元素css类名
201
- */
202
- content: PropTypes.string,
203
- /**
204
- * 包裹层元素css类名
205
- */
206
- wrapper: PropTypes.string,
207
- /**
208
- * 头部元素css类名
209
- */
210
- header: PropTypes.string,
211
- /**
212
- * 内容元素css类名
213
- */
214
- body: PropTypes.string,
215
- /**
216
- * 底部元素css类名
217
- */
218
- footer: PropTypes.string
219
- }),
220
-
221
- /**
222
- * 组件文案语种,可选项有`'zh-cn'`(简体中文)、`'en-us'`(英语)、`'de-de'`(德语)、`'ru-ru'`(俄语)
223
- * 默认值:`'zh-cn'`
224
- */
225
- locale: PropTypes.oneOf(['zh-cn', 'en-us', 'de-de', 'ru-ru']),
226
-
227
- /**
228
- * 监听或设置对话框是否可见
229
- * 默认值:`false`
230
- */
231
- visible: PropTypes.bool,
232
-
233
- /**
234
- * 组件型,标题内容
235
- */
236
- title: PropTypes.node,
237
-
238
- /**
239
- * 组件型,loading状态下的标题内容
240
- */
241
- loadingTitle: PropTypes.node,
242
-
243
- /**
244
- * 是否渲染底部操作按钮
245
- * 默认值:`false`
246
- */
247
- renderFooter: PropTypes.bool,
248
-
249
- /**
250
- * 组件型,确认按钮内容
251
- */
252
- okText: PropTypes.node,
253
-
254
- /**
255
- * 配置确认按钮相关参数
256
- */
257
- okButtonProps: PropTypes.exact({
258
- /**
259
- * 按钮尺寸规格,可选项有`'small'`、`'middle'`、`'large'`
260
- * 默认值:`'middle'`
261
- */
262
- size: PropTypes.oneOf(['small', 'middle', 'large']),
263
-
264
- /**
265
- * 按钮类型,可选项有`'default'`、`'primary'`、`'ghost'`、`'dashed'`、`'link'`、`'text'`
266
- * 默认值:`'default'`
267
- */
268
- type: PropTypes.oneOf(['primary', 'ghost', 'dashed', 'link', 'text', 'default']),
269
-
270
- /**
271
- * 按钮是否呈现危险样式
272
- * 默认值:`false`
273
- */
274
- danger: PropTypes.bool,
275
-
276
- /**
277
- * 按钮是否呈现禁用状态
278
- * 默认值:`false`
279
- */
280
- disabled: PropTypes.bool,
281
-
282
- /**
283
- * 按钮形状,可选项有`'default'`、`'circle'`、`'round'`
284
- * 默认值:`'default'`
285
- */
286
- shape: PropTypes.oneOf(['circle', 'round']),
287
-
288
- /**
289
- * 按钮css样式
290
- */
291
- style: PropTypes.object,
292
-
293
- /**
294
- * 按钮css类名
295
- */
296
- className: PropTypes.string
297
- }),
298
-
299
- /**
300
- * 组件型,取消按钮内容
301
- */
302
- cancelText: PropTypes.node,
303
-
304
- /**
305
- * 配置取消按钮相关参数
306
- */
307
- cancelButtonProps: PropTypes.exact({
308
- /**
309
- * 按钮尺寸规格,可选项有`'small'`、`'middle'`、`'large'`
310
- * 默认值:`'middle'`
311
- */
312
- size: PropTypes.oneOf(['small', 'middle', 'large']),
313
-
314
- /**
315
- * 按钮类型,可选项有`'default'`、`'primary'`、`'ghost'`、`'dashed'`、`'link'`、`'text'`
316
- * 默认值:`'default'`
317
- */
318
- type: PropTypes.oneOf(['primary', 'ghost', 'dashed', 'link', 'text', 'default']),
319
-
320
- /**
321
- * 按钮是否呈现危险样式
322
- * 默认值:`false`
323
- */
324
- danger: PropTypes.bool,
325
-
326
- /**
327
- * 按钮是否呈现禁用状态
328
- * 默认值:`false`
329
- */
330
- disabled: PropTypes.bool,
331
-
332
- /**
333
- * 按钮形状,可选项有`'default'`、`'circle'`、`'round'`
334
- * 默认值:`'default'`
335
- */
336
- shape: PropTypes.oneOf(['circle', 'round']),
337
-
338
- /**
339
- * 按钮css样式
340
- */
341
- style: PropTypes.object,
342
-
343
- /**
344
- * 按钮css类名
345
- */
346
- className: PropTypes.string
347
- }),
348
-
349
- /**
350
- * 对话框像素宽度
351
- * 默认值:`520`
352
- */
353
- width: PropTypes.oneOfType([
354
- PropTypes.number,
355
- PropTypes.string,
356
- // 响应式
357
- PropTypes.shape({
358
- /**
359
- * 对应页面宽度<576px的响应式断点
360
- */
361
- xs: PropTypes.oneOfType([
362
- PropTypes.number,
363
- PropTypes.string
364
- ]),
365
- /**
366
- * 对应页面宽度≥576px的响应式断点
367
- */
368
- sm: PropTypes.oneOfType([
369
- PropTypes.number,
370
- PropTypes.string
371
- ]),
372
- /**
373
- * 对应页面宽度≥768px的响应式断点
374
- */
375
- md: PropTypes.oneOfType([
376
- PropTypes.number,
377
- PropTypes.string
378
- ]),
379
- /**
380
- * 对应页面宽度≥992px的响应式断点
381
- */
382
- lg: PropTypes.oneOfType([
383
- PropTypes.number,
384
- PropTypes.string
385
- ]),
386
- /**
387
- * 对应页面宽度≥1200px的响应式断点
388
- */
389
- xl: PropTypes.oneOfType([
390
- PropTypes.number,
391
- PropTypes.string
392
- ]),
393
- /**
394
- * 对应页面宽度≥1600px的响应式断点
395
- */
396
- xxl: PropTypes.oneOfType([
397
- PropTypes.number,
398
- PropTypes.string
399
- ])
400
- })
401
- ]),
402
-
403
- /**
404
- * 是否垂直居中显示对话框
405
- * 默认值:`false`
406
- */
407
- centered: PropTypes.bool,
408
-
409
- /**
410
- * 是否支持键盘esc关闭对话框
411
- * 默认值:`true`
412
- */
413
- keyboard: PropTypes.bool,
414
-
415
- /**
416
- * 是否显示右上角的关闭按钮
417
- * 默认值:`true`
418
- */
419
- closable: PropTypes.bool,
420
-
421
- /**
422
- * 是否显示背景遮罩
423
- * 默认值:`true`
424
- */
425
- mask: PropTypes.bool,
426
-
427
- /**
428
- * 是否允许点击遮罩层关闭对话框
429
- * 默认值:`true`
430
- */
431
- maskClosable: PropTypes.bool,
432
-
433
- /**
434
- * 是否点击确认按钮触发对话框关闭
435
- * 默认值:`true`
436
- */
437
- okClickClose: PropTypes.bool,
438
-
439
- /**
440
- * 是否阻止通过点击关闭图标、点击遮罩层区域、点击取消、按下ESC等方式自动触发的对话框关闭行为
441
- * 默认值:`false`
442
- */
443
- preventClose: PropTypes.bool,
444
-
445
- /**
446
- * 模态框z-index
447
- * 默认值:`1000`
448
- */
449
- zIndex: PropTypes.number,
450
-
451
- /**
452
- * 监听确认按钮累计点击次数
453
- * 默认值:`0`
454
- */
455
- okCounts: PropTypes.number,
456
-
457
- /**
458
- * 监听取消按钮累计点击次数
459
- * 默认值:`0`
460
- */
461
- cancelCounts: PropTypes.number,
462
-
463
- /**
464
- * 监听关闭按钮累计点击次数
465
- * 默认值:`0`
466
- */
467
- closeCounts: PropTypes.number,
468
-
469
- /**
470
- * 是否在每次确认按钮点击之后,自动更新`confirmLoading=true`
471
- * 默认值:`false`
472
- */
473
- confirmAutoSpin: PropTypes.bool,
474
-
475
- /**
476
- * 组件型,`confirmLoading=true`时,确认按钮的内容
477
- */
478
- loadingOkText: PropTypes.node,
479
-
480
- /**
481
- * 底部确认按钮是否处于加载中状态
482
- * 默认值:`false`
483
- */
484
- confirmLoading: PropTypes.bool,
485
-
486
- /**
487
- * 模态框显隐动画类型,可选项有`'none'`、`'fade'`、`'zoom'`、`'zoom-big'`、`'zoom-big-fast'`、`'slide-up'`、`'slide-down'`、`'slide-left'`、`'slide-right'`、`'move-up'`、`'move-down'`、`'move-left'`、`'move-right'`
488
- * 默认值:`'zoom'`
489
- */
490
- transitionType: PropTypes.oneOf([
491
- 'none', 'fade', 'zoom', 'zoom-big', 'zoom-big-fast', 'slide-up',
492
- 'slide-down', 'slide-left', 'slide-right', 'move-up', 'move-down', 'move-left', 'move-right'
493
- ]),
494
-
495
- /**
496
- * 是否在初始化模态框未显示时,强制渲染模态框内部元素
497
- * 默认值:`false`
498
- */
499
- forceRender: PropTypes.bool,
500
-
501
- /**
502
- * 是否在模态框关闭后自动销毁内部元素
503
- * 默认值:`true`
504
- */
505
- destroyOnClose: PropTypes.bool,
506
-
507
- /**
508
- * 是否整体渲染为加载中状态
509
- * 默认值:`false`
510
- */
511
- loading: PropTypes.bool,
512
-
513
- /**
514
- * `data-*`格式属性通配
515
- */
516
- 'data-*': PropTypes.string,
517
-
518
- /**
519
- * `aria-*`格式属性通配
520
- */
521
- 'aria-*': PropTypes.string,
522
-
523
- /**
524
- * Dash-assigned callback that should be called to report property changes
525
- * to Dash, to make them available for callbacks.
526
- */
527
- setProps: PropTypes.func
528
- };
529
-
530
- export default AntdModal;
1
+ // react核心
2
+ import React, { useContext } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ // antd核心
5
+ import { Modal, ConfigProvider } from 'antd';
6
+ // 辅助库
7
+ import { str2Locale } from '../locales.react';
8
+ import { isString } from 'lodash';
9
+ import { pickBy } from 'ramda';
10
+ import { useLoading } from '../utils';
11
+ // 自定义hooks
12
+ import useCss from '../../hooks/useCss';
13
+ // 自定义上下文
14
+ import PropsContext from '../../contexts/PropsContext';
15
+
16
+ /**
17
+ * 对话框组件AntdModal
18
+ */
19
+ const AntdModal = ({
20
+ id,
21
+ children,
22
+ className,
23
+ key,
24
+ style,
25
+ styles,
26
+ classNames,
27
+ locale = 'zh-cn',
28
+ setProps,
29
+ title,
30
+ loadingTitle,
31
+ visible = false,
32
+ renderFooter = false,
33
+ okButtonProps,
34
+ cancelButtonProps,
35
+ okText,
36
+ loadingOkText,
37
+ cancelText,
38
+ width = 520,
39
+ centered = false,
40
+ keyboard = true,
41
+ closable = true,
42
+ mask = true,
43
+ maskClosable = true,
44
+ okClickClose = true,
45
+ preventClose = false,
46
+ zIndex = 1000,
47
+ okCounts = 0,
48
+ cancelCounts = 0,
49
+ closeCounts = 0,
50
+ confirmLoading = false,
51
+ confirmAutoSpin = false,
52
+ transitionType = 'zoom',
53
+ forceRender = false,
54
+ destroyOnClose = true,
55
+ loading = false,
56
+ ...others
57
+ }) => {
58
+
59
+ const context = useContext(PropsContext)
60
+ locale = (context && context.locale) || locale
61
+
62
+ // 监听确认按钮点击事件
63
+ const listenOk = () => {
64
+ if (okClickClose) {
65
+ setProps({ visible: false, okCounts: okCounts + 1 })
66
+ } else if (confirmAutoSpin) {
67
+ setProps({ okCounts: okCounts + 1, confirmLoading: true })
68
+ } else {
69
+ setProps({ okCounts: okCounts + 1 })
70
+ }
71
+ };
72
+
73
+ // 监听取消按钮点击事件
74
+ const listenCancel = () => {
75
+ // 是否阻止默认的各类关闭触发行为生效
76
+ if (preventClose) {
77
+ setProps({ cancelCounts: cancelCounts + 1 })
78
+ } else {
79
+ setProps({ visible: false, cancelCounts: cancelCounts + 1 })
80
+ }
81
+ };
82
+
83
+ const listenClose = () => {
84
+ setProps({ closeCounts: closeCounts + 1 })
85
+ };
86
+
87
+ const effectiveTitle = loading && loadingTitle !== undefined ? loadingTitle : title;
88
+
89
+ return (
90
+ <ConfigProvider locale={str2Locale.get(locale)}>
91
+ <Modal
92
+ // 提取具有data-*或aria-*通配格式的属性
93
+ {...pickBy((_, k) => k.startsWith('data-') || k.startsWith('aria-'), others)}
94
+ id={id}
95
+ className={
96
+ isString(className) ?
97
+ className :
98
+ (className ? useCss(className) : undefined)
99
+ }
100
+ style={style}
101
+ styles={styles}
102
+ classNames={classNames}
103
+ key={key}
104
+ title={effectiveTitle}
105
+ open={visible}
106
+ okText={confirmLoading ? (loadingOkText || okText) : okText}
107
+ cancelText={cancelText}
108
+ okButtonProps={okButtonProps}
109
+ cancelButtonProps={cancelButtonProps}
110
+ transitionName={transitionType === 'none' ? '' : `ant-${transitionType}`}
111
+ width={width}
112
+ centered={centered}
113
+ keyboard={keyboard}
114
+ closable={closable}
115
+ mask={mask}
116
+ maskClosable={maskClosable}
117
+ zIndex={zIndex}
118
+ onOk={listenOk}
119
+ onCancel={listenCancel}
120
+ afterClose={listenClose}
121
+ footer={renderFooter ? undefined : null}
122
+ confirmLoading={confirmLoading}
123
+ forceRender={forceRender}
124
+ destroyOnHidden={destroyOnClose}
125
+ loading={loading}
126
+ data-dash-is-loading={useLoading()}
127
+ >{children}</Modal>
128
+ </ConfigProvider>
129
+ );
130
+ }
131
+
132
+ AntdModal.propTypes = {
133
+ /**
134
+ * 组件唯一id
135
+ */
136
+ id: PropTypes.string,
137
+
138
+ /**
139
+ * 对当前组件的`key`值进行更新,可实现强制重绘当前组件的效果
140
+ */
141
+ key: PropTypes.string,
142
+
143
+ /**
144
+ * 组件型,内嵌元素
145
+ */
146
+ children: PropTypes.node,
147
+
148
+ /**
149
+ * 当前组件css样式
150
+ */
151
+ style: PropTypes.object,
152
+
153
+ /**
154
+ * 当前组件css类名,支持[动态css](/advanced-classname)
155
+ */
156
+ className: PropTypes.oneOfType([
157
+ PropTypes.string,
158
+ PropTypes.object
159
+ ]),
160
+
161
+ /**
162
+ * 细分控制子元素css样式
163
+ */
164
+ styles: PropTypes.exact({
165
+ /**
166
+ * 遮罩层元素css样式
167
+ */
168
+ mask: PropTypes.object,
169
+ /**
170
+ * 容器元素css样式
171
+ */
172
+ content: PropTypes.object,
173
+ /**
174
+ * 包裹层元素css样式
175
+ */
176
+ wrapper: PropTypes.object,
177
+ /**
178
+ * 头部元素css样式
179
+ */
180
+ header: PropTypes.object,
181
+ /**
182
+ * 内容元素css样式
183
+ */
184
+ body: PropTypes.object,
185
+ /**
186
+ * 底部元素css样式
187
+ */
188
+ footer: PropTypes.object
189
+ }),
190
+
191
+ /**
192
+ * 细分控制子元素css类名
193
+ */
194
+ classNames: PropTypes.exact({
195
+ /**
196
+ * 遮罩层元素css类名
197
+ */
198
+ mask: PropTypes.string,
199
+ /**
200
+ * 容器元素css类名
201
+ */
202
+ content: PropTypes.string,
203
+ /**
204
+ * 包裹层元素css类名
205
+ */
206
+ wrapper: PropTypes.string,
207
+ /**
208
+ * 头部元素css类名
209
+ */
210
+ header: PropTypes.string,
211
+ /**
212
+ * 内容元素css类名
213
+ */
214
+ body: PropTypes.string,
215
+ /**
216
+ * 底部元素css类名
217
+ */
218
+ footer: PropTypes.string
219
+ }),
220
+
221
+ /**
222
+ * 组件文案语种,可选项有`'zh-cn'`(简体中文)、`'en-us'`(英语)、`'de-de'`(德语)、`'ru-ru'`(俄语)
223
+ * 默认值:`'zh-cn'`
224
+ */
225
+ locale: PropTypes.oneOf(['zh-cn', 'en-us', 'de-de', 'ru-ru']),
226
+
227
+ /**
228
+ * 监听或设置对话框是否可见
229
+ * 默认值:`false`
230
+ */
231
+ visible: PropTypes.bool,
232
+
233
+ /**
234
+ * 组件型,标题内容
235
+ */
236
+ title: PropTypes.node,
237
+
238
+ /**
239
+ * 组件型,loading状态下的标题内容
240
+ */
241
+ loadingTitle: PropTypes.node,
242
+
243
+ /**
244
+ * 是否渲染底部操作按钮
245
+ * 默认值:`false`
246
+ */
247
+ renderFooter: PropTypes.bool,
248
+
249
+ /**
250
+ * 组件型,确认按钮内容
251
+ */
252
+ okText: PropTypes.node,
253
+
254
+ /**
255
+ * 配置确认按钮相关参数
256
+ */
257
+ okButtonProps: PropTypes.exact({
258
+ /**
259
+ * 按钮尺寸规格,可选项有`'small'`、`'middle'`、`'large'`
260
+ * 默认值:`'middle'`
261
+ */
262
+ size: PropTypes.oneOf(['small', 'middle', 'large']),
263
+
264
+ /**
265
+ * 按钮类型,可选项有`'default'`、`'primary'`、`'ghost'`、`'dashed'`、`'link'`、`'text'`
266
+ * 默认值:`'default'`
267
+ */
268
+ type: PropTypes.oneOf(['primary', 'ghost', 'dashed', 'link', 'text', 'default']),
269
+
270
+ /**
271
+ * 按钮是否呈现危险样式
272
+ * 默认值:`false`
273
+ */
274
+ danger: PropTypes.bool,
275
+
276
+ /**
277
+ * 按钮是否呈现禁用状态
278
+ * 默认值:`false`
279
+ */
280
+ disabled: PropTypes.bool,
281
+
282
+ /**
283
+ * 按钮形状,可选项有`'default'`、`'circle'`、`'round'`
284
+ * 默认值:`'default'`
285
+ */
286
+ shape: PropTypes.oneOf(['circle', 'round']),
287
+
288
+ /**
289
+ * 按钮css样式
290
+ */
291
+ style: PropTypes.object,
292
+
293
+ /**
294
+ * 按钮css类名
295
+ */
296
+ className: PropTypes.string
297
+ }),
298
+
299
+ /**
300
+ * 组件型,取消按钮内容
301
+ */
302
+ cancelText: PropTypes.node,
303
+
304
+ /**
305
+ * 配置取消按钮相关参数
306
+ */
307
+ cancelButtonProps: PropTypes.exact({
308
+ /**
309
+ * 按钮尺寸规格,可选项有`'small'`、`'middle'`、`'large'`
310
+ * 默认值:`'middle'`
311
+ */
312
+ size: PropTypes.oneOf(['small', 'middle', 'large']),
313
+
314
+ /**
315
+ * 按钮类型,可选项有`'default'`、`'primary'`、`'ghost'`、`'dashed'`、`'link'`、`'text'`
316
+ * 默认值:`'default'`
317
+ */
318
+ type: PropTypes.oneOf(['primary', 'ghost', 'dashed', 'link', 'text', 'default']),
319
+
320
+ /**
321
+ * 按钮是否呈现危险样式
322
+ * 默认值:`false`
323
+ */
324
+ danger: PropTypes.bool,
325
+
326
+ /**
327
+ * 按钮是否呈现禁用状态
328
+ * 默认值:`false`
329
+ */
330
+ disabled: PropTypes.bool,
331
+
332
+ /**
333
+ * 按钮形状,可选项有`'default'`、`'circle'`、`'round'`
334
+ * 默认值:`'default'`
335
+ */
336
+ shape: PropTypes.oneOf(['circle', 'round']),
337
+
338
+ /**
339
+ * 按钮css样式
340
+ */
341
+ style: PropTypes.object,
342
+
343
+ /**
344
+ * 按钮css类名
345
+ */
346
+ className: PropTypes.string
347
+ }),
348
+
349
+ /**
350
+ * 对话框像素宽度
351
+ * 默认值:`520`
352
+ */
353
+ width: PropTypes.oneOfType([
354
+ PropTypes.number,
355
+ PropTypes.string,
356
+ // 响应式
357
+ PropTypes.shape({
358
+ /**
359
+ * 对应页面宽度<576px的响应式断点
360
+ */
361
+ xs: PropTypes.oneOfType([
362
+ PropTypes.number,
363
+ PropTypes.string
364
+ ]),
365
+ /**
366
+ * 对应页面宽度≥576px的响应式断点
367
+ */
368
+ sm: PropTypes.oneOfType([
369
+ PropTypes.number,
370
+ PropTypes.string
371
+ ]),
372
+ /**
373
+ * 对应页面宽度≥768px的响应式断点
374
+ */
375
+ md: PropTypes.oneOfType([
376
+ PropTypes.number,
377
+ PropTypes.string
378
+ ]),
379
+ /**
380
+ * 对应页面宽度≥992px的响应式断点
381
+ */
382
+ lg: PropTypes.oneOfType([
383
+ PropTypes.number,
384
+ PropTypes.string
385
+ ]),
386
+ /**
387
+ * 对应页面宽度≥1200px的响应式断点
388
+ */
389
+ xl: PropTypes.oneOfType([
390
+ PropTypes.number,
391
+ PropTypes.string
392
+ ]),
393
+ /**
394
+ * 对应页面宽度≥1600px的响应式断点
395
+ */
396
+ xxl: PropTypes.oneOfType([
397
+ PropTypes.number,
398
+ PropTypes.string
399
+ ])
400
+ })
401
+ ]),
402
+
403
+ /**
404
+ * 是否垂直居中显示对话框
405
+ * 默认值:`false`
406
+ */
407
+ centered: PropTypes.bool,
408
+
409
+ /**
410
+ * 是否支持键盘esc关闭对话框
411
+ * 默认值:`true`
412
+ */
413
+ keyboard: PropTypes.bool,
414
+
415
+ /**
416
+ * 是否显示右上角的关闭按钮
417
+ * 默认值:`true`
418
+ */
419
+ closable: PropTypes.bool,
420
+
421
+ /**
422
+ * 是否显示背景遮罩
423
+ * 默认值:`true`
424
+ */
425
+ mask: PropTypes.bool,
426
+
427
+ /**
428
+ * 是否允许点击遮罩层关闭对话框
429
+ * 默认值:`true`
430
+ */
431
+ maskClosable: PropTypes.bool,
432
+
433
+ /**
434
+ * 是否点击确认按钮触发对话框关闭
435
+ * 默认值:`true`
436
+ */
437
+ okClickClose: PropTypes.bool,
438
+
439
+ /**
440
+ * 是否阻止通过点击关闭图标、点击遮罩层区域、点击取消、按下ESC等方式自动触发的对话框关闭行为
441
+ * 默认值:`false`
442
+ */
443
+ preventClose: PropTypes.bool,
444
+
445
+ /**
446
+ * 模态框z-index
447
+ * 默认值:`1000`
448
+ */
449
+ zIndex: PropTypes.number,
450
+
451
+ /**
452
+ * 监听确认按钮累计点击次数
453
+ * 默认值:`0`
454
+ */
455
+ okCounts: PropTypes.number,
456
+
457
+ /**
458
+ * 监听取消按钮累计点击次数
459
+ * 默认值:`0`
460
+ */
461
+ cancelCounts: PropTypes.number,
462
+
463
+ /**
464
+ * 监听关闭按钮累计点击次数
465
+ * 默认值:`0`
466
+ */
467
+ closeCounts: PropTypes.number,
468
+
469
+ /**
470
+ * 是否在每次确认按钮点击之后,自动更新`confirmLoading=true`
471
+ * 默认值:`false`
472
+ */
473
+ confirmAutoSpin: PropTypes.bool,
474
+
475
+ /**
476
+ * 组件型,`confirmLoading=true`时,确认按钮的内容
477
+ */
478
+ loadingOkText: PropTypes.node,
479
+
480
+ /**
481
+ * 底部确认按钮是否处于加载中状态
482
+ * 默认值:`false`
483
+ */
484
+ confirmLoading: PropTypes.bool,
485
+
486
+ /**
487
+ * 模态框显隐动画类型,可选项有`'none'`、`'fade'`、`'zoom'`、`'zoom-big'`、`'zoom-big-fast'`、`'slide-up'`、`'slide-down'`、`'slide-left'`、`'slide-right'`、`'move-up'`、`'move-down'`、`'move-left'`、`'move-right'`
488
+ * 默认值:`'zoom'`
489
+ */
490
+ transitionType: PropTypes.oneOf([
491
+ 'none', 'fade', 'zoom', 'zoom-big', 'zoom-big-fast', 'slide-up',
492
+ 'slide-down', 'slide-left', 'slide-right', 'move-up', 'move-down', 'move-left', 'move-right'
493
+ ]),
494
+
495
+ /**
496
+ * 是否在初始化模态框未显示时,强制渲染模态框内部元素
497
+ * 默认值:`false`
498
+ */
499
+ forceRender: PropTypes.bool,
500
+
501
+ /**
502
+ * 是否在模态框关闭后自动销毁内部元素
503
+ * 默认值:`true`
504
+ */
505
+ destroyOnClose: PropTypes.bool,
506
+
507
+ /**
508
+ * 是否整体渲染为加载中状态
509
+ * 默认值:`false`
510
+ */
511
+ loading: PropTypes.bool,
512
+
513
+ /**
514
+ * `data-*`格式属性通配
515
+ */
516
+ 'data-*': PropTypes.string,
517
+
518
+ /**
519
+ * `aria-*`格式属性通配
520
+ */
521
+ 'aria-*': PropTypes.string,
522
+
523
+ /**
524
+ * Dash-assigned callback that should be called to report property changes
525
+ * to Dash, to make them available for callbacks.
526
+ */
527
+ setProps: PropTypes.func
528
+ };
529
+
530
+ export default AntdModal;