@para-ui/core 5.0.0-beta.12 → 5.0.0-beta.14

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 (565) hide show
  1. package/AGENTS.md +315 -0
  2. package/AlignBox/component.json +89 -0
  3. package/Anchor/component.json +130 -0
  4. package/Argv/component.json +216 -0
  5. package/AutoBox/component.json +133 -0
  6. package/AutoButton/component.json +109 -0
  7. package/AutoTips/component.json +121 -0
  8. package/Badge/component.json +92 -0
  9. package/Breadcrumbs/component.json +142 -0
  10. package/Button/component.json +168 -0
  11. package/ButtonGroup/component.json +132 -0
  12. package/Card/component.json +162 -0
  13. package/Carousel/component.json +142 -0
  14. package/Cascader/component.json +196 -0
  15. package/Checkbox/component.json +138 -0
  16. package/CheckboxGroup/component.json +152 -0
  17. package/CodeEditor/component.json +189 -0
  18. package/Collapse/component.json +166 -0
  19. package/CollapseBox/component.json +84 -0
  20. package/CollapseLayout/component.json +155 -0
  21. package/ColorPicker/component.json +142 -0
  22. package/ComboSelect/component.json +181 -0
  23. package/Container/component.json +111 -0
  24. package/ContentBox/component.json +81 -0
  25. package/CopyText/component.json +118 -0
  26. package/CycleSelector/component.json +98 -0
  27. package/DatePicker/component.json +192 -0
  28. package/Descriptions/component.json +142 -0
  29. package/Desktop/component.json +171 -0
  30. package/DragVerify/component.json +114 -0
  31. package/Drawer/component.json +200 -0
  32. package/Dropdown/component.json +147 -0
  33. package/DynamicMultiBox/component.json +278 -0
  34. package/Empty/component.json +123 -0
  35. package/FieldForm/component.json +196 -0
  36. package/Form/component.json +161 -0
  37. package/FormItem/component.json +171 -0
  38. package/FunctionModal/component.json +197 -0
  39. package/Help/component.json +118 -0
  40. package/HelperText/component.json +126 -0
  41. package/Image/component.json +165 -0
  42. package/InputCode/component.json +191 -0
  43. package/InputLang/component.json +205 -0
  44. package/InputNumber/component.json +162 -0
  45. package/Label/component.json +126 -0
  46. package/Loading/component.json +91 -0
  47. package/Menu/component.json +180 -0
  48. package/Message/component.json +246 -0
  49. package/Modal/component.json +277 -0
  50. package/MultiBox/component.json +216 -0
  51. package/Notification/component.json +184 -0
  52. package/OperateBtn/component.json +134 -0
  53. package/PageHeader/component.json +112 -0
  54. package/Pagination/component.json +181 -0
  55. package/PasswordRules/component.json +105 -0
  56. package/PopConfirm/component.json +227 -0
  57. package/PopMenu/component.json +131 -0
  58. package/Popover/component.json +165 -0
  59. package/Progress/component.json +161 -0
  60. package/Prompt/component.json +144 -0
  61. package/Querying/component.json +96 -0
  62. package/QuickReply/component.json +129 -0
  63. package/Radio/component.json +136 -0
  64. package/RadioGroup/component.json +149 -0
  65. package/RangeInput/component.json +198 -0
  66. package/Result/component.json +104 -0
  67. package/ScrollBar/component.json +115 -0
  68. package/Search/component.json +177 -0
  69. package/Select/component.json +244 -0
  70. package/SelectInput/component.json +184 -0
  71. package/Selector/component.json +203 -0
  72. package/SelectorPicker/component.json +179 -0
  73. package/SingleBox/component.json +151 -0
  74. package/Slider/component.json +181 -0
  75. package/SortBox/component.json +108 -0
  76. package/Status/component.json +104 -0
  77. package/Stepper/component.json +129 -0
  78. package/Switch/component.json +207 -0
  79. package/Table/component.json +547 -0
  80. package/Tabs/component.json +227 -0
  81. package/Tag/component.json +221 -0
  82. package/TextEditor/component.json +186 -0
  83. package/TextField/component.json +290 -0
  84. package/TimePicker/component.json +176 -0
  85. package/Timeline/component.json +110 -0
  86. package/Title/component.json +156 -0
  87. package/ToggleButton/component.json +153 -0
  88. package/Tooltip/component.json +176 -0
  89. package/Transfer/component.json +157 -0
  90. package/Tree/component.json +512 -0
  91. package/Upload/component.json +450 -0
  92. package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
  93. package/ai-workflows/02-rbac-operation-buttons.md +290 -0
  94. package/ai-workflows/03-complex-form-async-cascade.md +350 -0
  95. package/ai-workflows/04-array-field-form.md +281 -0
  96. package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
  97. package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
  98. package/ai-workflows/07-search-filter-table-trio.md +387 -0
  99. package/ai-workflows/08-table-advanced-features.md +365 -0
  100. package/ai-workflows/09-batch-operation-export-progress.md +367 -0
  101. package/ai-workflows/10-cross-component-state-coordination.md +412 -0
  102. package/codemods/modal-onCancel-to-onDismiss.js +69 -0
  103. package/es/AlignBox/component.json +89 -0
  104. package/es/AlignBox/index.css +1 -1
  105. package/es/AlignBox/index.d.ts +6 -2
  106. package/es/AlignBox/index.js +1 -1
  107. package/es/AlignBox/style/index.css +1 -1
  108. package/es/Anchor/anchorMenu/index.d.ts +2 -1
  109. package/es/Anchor/anchorMenu/index.js +36 -33
  110. package/es/Anchor/component.json +130 -0
  111. package/es/Anchor/index.js +50 -47
  112. package/es/Anchor/type.d.ts +8 -4
  113. package/es/Argv/component.json +216 -0
  114. package/es/Argv/index.d.ts +5 -6
  115. package/es/AutoBox/component.json +133 -0
  116. package/es/AutoBox/index.d.ts +3 -3
  117. package/es/AutoBox/index.js +1 -1
  118. package/es/AutoBox/protal.d.ts +2 -2
  119. package/es/AutoBox/protal.js +32 -29
  120. package/es/AutoButton/component.json +109 -0
  121. package/es/AutoButton/index.js +1 -1
  122. package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  123. package/es/AutoTips/autoTipsMultiline/index.js +1 -1
  124. package/es/AutoTips/component.json +121 -0
  125. package/es/Badge/component.json +92 -0
  126. package/es/Breadcrumbs/component.json +142 -0
  127. package/es/Breadcrumbs/index.js +1 -1
  128. package/es/Button/SplitButton.d.ts +2 -2
  129. package/es/Button/component.json +168 -0
  130. package/es/Button/index.js +44 -44
  131. package/es/ButtonGroup/component.json +132 -0
  132. package/es/ButtonGroup/index.d.ts +1 -1
  133. package/es/Card/component.json +162 -0
  134. package/es/Card/index.d.ts +2 -2
  135. package/es/Card/index.js +2 -2
  136. package/es/Carousel/component.json +142 -0
  137. package/es/Carousel/index.d.ts +1 -1
  138. package/es/Cascader/Cascader.js +188 -180
  139. package/es/Cascader/component.json +196 -0
  140. package/es/Cascader/hooks/useEntities.js +7 -7
  141. package/es/Cascader/interface.d.ts +1 -0
  142. package/es/Cascader/utils/commonUtil.d.ts +1 -1
  143. package/es/Cascader/utils/commonUtil.js +16 -16
  144. package/es/Cascader/utils/treeUtil.d.ts +14 -5
  145. package/es/Cascader/utils/treeUtil.js +1 -1
  146. package/es/Checkbox/component.json +138 -0
  147. package/es/CheckboxGroup/component.json +152 -0
  148. package/es/CodeEditor/component.json +189 -0
  149. package/es/CodeEditor/index.d.ts +10 -9
  150. package/es/Collapse/component.json +166 -0
  151. package/es/Collapse/index.d.ts +1 -1
  152. package/es/Collapse/index.js +41 -33
  153. package/es/CollapseBox/component.json +84 -0
  154. package/es/CollapseLayout/component.json +155 -0
  155. package/es/ColorPicker/component.json +142 -0
  156. package/es/ComboSelect/component.json +181 -0
  157. package/es/ComboSelect/index.js +299 -287
  158. package/es/ComboSelect/interface.d.ts +6 -3
  159. package/es/ComboSelect/utils.d.ts +3 -3
  160. package/es/ComboSelect/utils.js +1 -1
  161. package/es/Container/component.json +111 -0
  162. package/es/ContentBox/component.json +81 -0
  163. package/es/CopyText/component.json +118 -0
  164. package/es/CycleSelector/component.json +98 -0
  165. package/es/CycleSelector/index.js +14 -13
  166. package/es/DatePicker/component.json +192 -0
  167. package/es/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
  168. package/es/DatePicker/generatePicker/generateRangePicker.js +73 -65
  169. package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  170. package/es/DatePicker/generatePicker/index.d.ts +11 -4
  171. package/es/Descriptions/component.json +142 -0
  172. package/es/Descriptions/index.d.ts +1 -1
  173. package/es/Desktop/component.json +171 -0
  174. package/es/DragVerify/component.json +114 -0
  175. package/es/DragVerify/index.js +19 -19
  176. package/es/Drawer/component.json +200 -0
  177. package/es/Drawer/index.js +86 -86
  178. package/es/Drawer/interface.d.ts +1 -1
  179. package/es/Drawer/util.d.ts +1 -6
  180. package/es/Drawer/util.js +9 -6
  181. package/es/Dropdown/component.json +147 -0
  182. package/es/DynamicMultiBox/component.json +278 -0
  183. package/es/DynamicMultiBox/formItem.d.ts +1 -1
  184. package/es/DynamicMultiBox/rowForm.d.ts +2 -2
  185. package/es/Empty/component.json +123 -0
  186. package/es/Empty/index.css +1 -1
  187. package/es/Empty/index.d.ts +2 -2
  188. package/es/Empty/index.js +27 -26
  189. package/es/Empty/style/index.css +1 -1
  190. package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  191. package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
  192. package/es/FieldForm/Form.d.ts +2 -2
  193. package/es/FieldForm/FormList.d.ts +2 -2
  194. package/es/FieldForm/component.json +196 -0
  195. package/es/FieldForm/context.d.ts +5 -1
  196. package/es/FieldForm/context.js +2 -2
  197. package/es/FieldForm/hooks/useForm.d.ts +4 -3
  198. package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
  199. package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  200. package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
  201. package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
  202. package/es/FieldForm/hooks/useItemRef.js +6 -6
  203. package/es/Form/component.json +161 -0
  204. package/es/Form/index.d.ts +52 -49
  205. package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  206. package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
  207. package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  208. package/es/FormItem/compoments/formFile/index.js +8 -8
  209. package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  210. package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
  211. package/es/FormItem/component.json +171 -0
  212. package/es/FormItem/index.d.ts +5 -5
  213. package/es/FormItem/index.js +23 -23
  214. package/es/FormItem/itemType.js +1 -1
  215. package/es/FunctionModal/component.json +197 -0
  216. package/es/FunctionModal/dialog.d.ts +1 -1
  217. package/es/FunctionModal/modalContext.d.ts +4 -1
  218. package/es/Help/component.json +118 -0
  219. package/es/HelperText/component.json +126 -0
  220. package/es/Image/component.json +165 -0
  221. package/es/InputCode/component.json +191 -0
  222. package/es/InputCode/index.d.ts +2 -2
  223. package/es/InputLang/component.json +205 -0
  224. package/es/InputLang/index.js +1 -1
  225. package/es/InputNumber/component.json +162 -0
  226. package/es/Label/component.json +126 -0
  227. package/es/Label/index.d.ts +2 -2
  228. package/es/Loading/component.json +91 -0
  229. package/es/Menu/component.json +180 -0
  230. package/es/Message/component.json +246 -0
  231. package/es/Message/index.d.ts +2 -2
  232. package/es/Message/index.js +2 -2
  233. package/es/Modal/Confirm/index.d.ts +1 -1
  234. package/es/Modal/Confirm/index.js +81 -75
  235. package/es/Modal/component.json +277 -0
  236. package/es/Modal/index.d.ts +97 -6
  237. package/es/Modal/index.js +174 -122
  238. package/es/Modal/interface.d.ts +1 -0
  239. package/es/MultiBox/component.json +216 -0
  240. package/es/MultiBox/index.js +19 -14
  241. package/es/Notification/component.json +184 -0
  242. package/es/OperateBtn/component.json +134 -0
  243. package/es/OperateBtn/index.d.ts +3 -3
  244. package/es/PageHeader/component.json +112 -0
  245. package/es/Pagination/component.json +181 -0
  246. package/es/Pagination/index.js +15 -15
  247. package/es/PasswordRules/component.json +105 -0
  248. package/es/PasswordRules/index.d.ts +4 -4
  249. package/es/PopConfirm/component.json +227 -0
  250. package/es/PopConfirm/index.d.ts +1 -1
  251. package/es/PopConfirm/index.js +1 -1
  252. package/es/PopMenu/component.json +131 -0
  253. package/es/PopMenu/hooks.d.ts +1 -1
  254. package/es/PopMenu/index.js +8 -8
  255. package/es/Popover/component.json +165 -0
  256. package/es/Popover/index.js +1 -1
  257. package/es/Progress/component.json +161 -0
  258. package/es/Prompt/component.json +144 -0
  259. package/es/Querying/component.json +96 -0
  260. package/es/Querying/index.css +1 -1
  261. package/es/Querying/index.d.ts +2 -2
  262. package/es/Querying/index.js +20 -19
  263. package/es/Querying/style/index.css +1 -1
  264. package/es/QuickReply/component.json +129 -0
  265. package/es/QuickReply/index.d.ts +1 -1
  266. package/es/Radio/component.json +136 -0
  267. package/es/RadioGroup/component.json +149 -0
  268. package/es/RangeInput/component.json +198 -0
  269. package/es/RangeInput/index.js +1 -1
  270. package/es/Result/component.json +104 -0
  271. package/es/ScrollBar/component.json +115 -0
  272. package/es/Search/component.json +177 -0
  273. package/es/Search/index.d.ts +1 -1
  274. package/es/Select/component.json +244 -0
  275. package/es/Select/index.js +113 -113
  276. package/es/SelectInput/component.json +184 -0
  277. package/es/Selector/component.json +203 -0
  278. package/es/Selector/index.js +28 -27
  279. package/es/Selector/interface.d.ts +1 -1
  280. package/es/Selector/selectorMain/index.js +2 -2
  281. package/es/Selector/selectorNode/index.js +1 -1
  282. package/es/Selector/util.d.ts +2 -2
  283. package/es/SelectorPicker/component.json +179 -0
  284. package/es/SelectorPicker/index.d.ts +5 -5
  285. package/es/SelectorPicker/index.js +15 -15
  286. package/es/SingleBox/component.json +151 -0
  287. package/es/SingleBox/index.d.ts +2 -2
  288. package/es/Slider/component.json +181 -0
  289. package/es/SortBox/component.json +108 -0
  290. package/es/Status/component.json +104 -0
  291. package/es/Stepper/component.json +129 -0
  292. package/es/Stepper/index.d.ts +2 -2
  293. package/es/Switch/component.json +207 -0
  294. package/es/Switch/index.css +1 -1
  295. package/es/Switch/index.d.ts +3 -2
  296. package/es/Switch/index.js +60 -59
  297. package/es/Switch/style/index.css +1 -1
  298. package/es/Table/component.json +547 -0
  299. package/es/Table/index.d.ts +2 -2
  300. package/es/Table/index.js +414 -414
  301. package/es/Table/interface.d.ts +6 -0
  302. package/es/Tabs/component.json +227 -0
  303. package/es/Tag/component.json +221 -0
  304. package/es/Tag/index.css +1 -1
  305. package/es/Tag/index.d.ts +1 -1
  306. package/es/Tag/index.js +20 -20
  307. package/es/Tag/style/index.css +1 -1
  308. package/es/TextEditor/component.json +186 -0
  309. package/es/TextEditor/index.d.ts +5 -5
  310. package/es/TextField/component.json +290 -0
  311. package/es/TextField/index.d.ts +2 -2
  312. package/es/TimePicker/component.json +176 -0
  313. package/es/Timeline/component.json +110 -0
  314. package/es/Title/component.json +156 -0
  315. package/es/ToggleButton/component.json +153 -0
  316. package/es/Tooltip/component.json +176 -0
  317. package/es/Tooltip/index.js +74 -63
  318. package/es/Tooltip/interface.d.ts +14 -1
  319. package/es/Tooltip/utils.js +6 -6
  320. package/es/Transfer/component.json +157 -0
  321. package/es/Tree/component.json +512 -0
  322. package/es/Upload/component.json +450 -0
  323. package/es/Utils/type.d.ts +0 -2
  324. package/es/index.d.ts +2 -0
  325. package/es/index.js +1 -1
  326. package/es/locale/en_US.d.ts +361 -0
  327. package/es/locale/en_US.js +364 -0
  328. package/es/locale/index.d.ts +1 -723
  329. package/es/locale/index2.js +10 -0
  330. package/es/locale/zh_CN.d.ts +361 -0
  331. package/es/locale/zh_CN.js +364 -0
  332. package/lib/AlignBox/component.json +89 -0
  333. package/lib/AlignBox/index.css +1 -1
  334. package/lib/AlignBox/index.d.ts +6 -2
  335. package/lib/AlignBox/index.js +1 -1
  336. package/lib/AlignBox/style/index.css +1 -1
  337. package/lib/Anchor/anchorMenu/index.d.ts +2 -1
  338. package/lib/Anchor/anchorMenu/index.js +1 -1
  339. package/lib/Anchor/component.json +130 -0
  340. package/lib/Anchor/index.js +1 -1
  341. package/lib/Anchor/type.d.ts +8 -4
  342. package/lib/Argv/component.json +216 -0
  343. package/lib/Argv/index.d.ts +5 -6
  344. package/lib/AutoBox/component.json +133 -0
  345. package/lib/AutoBox/index.d.ts +3 -3
  346. package/lib/AutoBox/index.js +1 -1
  347. package/lib/AutoBox/protal.d.ts +2 -2
  348. package/lib/AutoBox/protal.js +1 -1
  349. package/lib/AutoButton/component.json +109 -0
  350. package/lib/AutoButton/index.js +1 -1
  351. package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  352. package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
  353. package/lib/AutoTips/component.json +121 -0
  354. package/lib/Badge/component.json +92 -0
  355. package/lib/Breadcrumbs/component.json +142 -0
  356. package/lib/Breadcrumbs/index.js +1 -1
  357. package/lib/Button/SplitButton.d.ts +2 -2
  358. package/lib/Button/component.json +168 -0
  359. package/lib/Button/index.js +1 -1
  360. package/lib/ButtonGroup/component.json +132 -0
  361. package/lib/ButtonGroup/index.d.ts +1 -1
  362. package/lib/Card/component.json +162 -0
  363. package/lib/Card/index.d.ts +2 -2
  364. package/lib/Card/index.js +1 -1
  365. package/lib/Carousel/component.json +142 -0
  366. package/lib/Carousel/index.d.ts +1 -1
  367. package/lib/Cascader/Cascader.js +1 -1
  368. package/lib/Cascader/component.json +196 -0
  369. package/lib/Cascader/hooks/useEntities.js +1 -1
  370. package/lib/Cascader/interface.d.ts +1 -0
  371. package/lib/Cascader/utils/commonUtil.d.ts +1 -1
  372. package/lib/Cascader/utils/commonUtil.js +1 -1
  373. package/lib/Cascader/utils/treeUtil.d.ts +14 -5
  374. package/lib/Cascader/utils/treeUtil.js +1 -1
  375. package/lib/Checkbox/component.json +138 -0
  376. package/lib/CheckboxGroup/component.json +152 -0
  377. package/lib/CodeEditor/component.json +189 -0
  378. package/lib/CodeEditor/index.d.ts +10 -9
  379. package/lib/Collapse/component.json +166 -0
  380. package/lib/Collapse/index.d.ts +1 -1
  381. package/lib/Collapse/index.js +1 -1
  382. package/lib/CollapseBox/component.json +84 -0
  383. package/lib/CollapseLayout/component.json +155 -0
  384. package/lib/ColorPicker/component.json +142 -0
  385. package/lib/ComboSelect/component.json +181 -0
  386. package/lib/ComboSelect/index.js +1 -1
  387. package/lib/ComboSelect/interface.d.ts +6 -3
  388. package/lib/ComboSelect/utils.d.ts +3 -3
  389. package/lib/ComboSelect/utils.js +1 -1
  390. package/lib/Container/component.json +111 -0
  391. package/lib/ContentBox/component.json +81 -0
  392. package/lib/CopyText/component.json +118 -0
  393. package/lib/CycleSelector/component.json +98 -0
  394. package/lib/CycleSelector/index.js +1 -1
  395. package/lib/DatePicker/component.json +192 -0
  396. package/lib/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
  397. package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
  398. package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  399. package/lib/DatePicker/generatePicker/index.d.ts +11 -4
  400. package/lib/Descriptions/component.json +142 -0
  401. package/lib/Descriptions/index.d.ts +1 -1
  402. package/lib/Desktop/component.json +171 -0
  403. package/lib/DragVerify/component.json +114 -0
  404. package/lib/DragVerify/index.js +1 -1
  405. package/lib/Drawer/component.json +200 -0
  406. package/lib/Drawer/index.js +1 -1
  407. package/lib/Drawer/interface.d.ts +1 -1
  408. package/lib/Drawer/util.d.ts +1 -6
  409. package/lib/Drawer/util.js +1 -1
  410. package/lib/Dropdown/component.json +147 -0
  411. package/lib/DynamicMultiBox/component.json +278 -0
  412. package/lib/DynamicMultiBox/formItem.d.ts +1 -1
  413. package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
  414. package/lib/Empty/component.json +123 -0
  415. package/lib/Empty/index.css +1 -1
  416. package/lib/Empty/index.d.ts +2 -2
  417. package/lib/Empty/index.js +1 -1
  418. package/lib/Empty/style/index.css +1 -1
  419. package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  420. package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
  421. package/lib/FieldForm/Form.d.ts +2 -2
  422. package/lib/FieldForm/FormList.d.ts +2 -2
  423. package/lib/FieldForm/component.json +196 -0
  424. package/lib/FieldForm/context.d.ts +5 -1
  425. package/lib/FieldForm/context.js +1 -1
  426. package/lib/FieldForm/hooks/useForm.d.ts +4 -3
  427. package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
  428. package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  429. package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
  430. package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
  431. package/lib/FieldForm/hooks/useItemRef.js +1 -1
  432. package/lib/Form/component.json +161 -0
  433. package/lib/Form/index.d.ts +52 -49
  434. package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  435. package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
  436. package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  437. package/lib/FormItem/compoments/formFile/index.js +1 -1
  438. package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  439. package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
  440. package/lib/FormItem/component.json +171 -0
  441. package/lib/FormItem/index.d.ts +5 -5
  442. package/lib/FormItem/index.js +1 -1
  443. package/lib/FormItem/itemType.js +1 -1
  444. package/lib/FunctionModal/component.json +197 -0
  445. package/lib/FunctionModal/dialog.d.ts +1 -1
  446. package/lib/FunctionModal/modalContext.d.ts +4 -1
  447. package/lib/Help/component.json +118 -0
  448. package/lib/HelperText/component.json +126 -0
  449. package/lib/Image/component.json +165 -0
  450. package/lib/InputCode/component.json +191 -0
  451. package/lib/InputCode/index.d.ts +2 -2
  452. package/lib/InputLang/component.json +205 -0
  453. package/lib/InputLang/index.js +1 -1
  454. package/lib/InputNumber/component.json +162 -0
  455. package/lib/Label/component.json +126 -0
  456. package/lib/Label/index.d.ts +2 -2
  457. package/lib/Loading/component.json +91 -0
  458. package/lib/Menu/component.json +180 -0
  459. package/lib/Message/component.json +246 -0
  460. package/lib/Message/index.d.ts +2 -2
  461. package/lib/Message/index.js +1 -1
  462. package/lib/Modal/Confirm/index.d.ts +1 -1
  463. package/lib/Modal/Confirm/index.js +1 -1
  464. package/lib/Modal/component.json +277 -0
  465. package/lib/Modal/index.d.ts +97 -6
  466. package/lib/Modal/index.js +1 -1
  467. package/lib/Modal/interface.d.ts +1 -0
  468. package/lib/MultiBox/component.json +216 -0
  469. package/lib/MultiBox/index.js +1 -1
  470. package/lib/Notification/component.json +184 -0
  471. package/lib/OperateBtn/component.json +134 -0
  472. package/lib/OperateBtn/index.d.ts +3 -3
  473. package/lib/PageHeader/component.json +112 -0
  474. package/lib/Pagination/component.json +181 -0
  475. package/lib/Pagination/index.js +1 -1
  476. package/lib/PasswordRules/component.json +105 -0
  477. package/lib/PasswordRules/index.d.ts +4 -4
  478. package/lib/PopConfirm/component.json +227 -0
  479. package/lib/PopConfirm/index.d.ts +1 -1
  480. package/lib/PopConfirm/index.js +1 -1
  481. package/lib/PopMenu/component.json +131 -0
  482. package/lib/PopMenu/hooks.d.ts +1 -1
  483. package/lib/PopMenu/index.js +1 -1
  484. package/lib/Popover/component.json +165 -0
  485. package/lib/Popover/index.js +1 -1
  486. package/lib/Progress/component.json +161 -0
  487. package/lib/Prompt/component.json +144 -0
  488. package/lib/Querying/component.json +96 -0
  489. package/lib/Querying/index.css +1 -1
  490. package/lib/Querying/index.d.ts +2 -2
  491. package/lib/Querying/index.js +1 -1
  492. package/lib/Querying/style/index.css +1 -1
  493. package/lib/QuickReply/component.json +129 -0
  494. package/lib/QuickReply/index.d.ts +1 -1
  495. package/lib/Radio/component.json +136 -0
  496. package/lib/RadioGroup/component.json +149 -0
  497. package/lib/RangeInput/component.json +198 -0
  498. package/lib/RangeInput/index.js +1 -1
  499. package/lib/Result/component.json +104 -0
  500. package/lib/ScrollBar/component.json +115 -0
  501. package/lib/Search/component.json +177 -0
  502. package/lib/Search/index.d.ts +1 -1
  503. package/lib/Select/component.json +244 -0
  504. package/lib/Select/index.js +1 -1
  505. package/lib/SelectInput/component.json +184 -0
  506. package/lib/Selector/component.json +203 -0
  507. package/lib/Selector/index.js +1 -1
  508. package/lib/Selector/interface.d.ts +1 -1
  509. package/lib/Selector/selectorMain/index.js +1 -1
  510. package/lib/Selector/selectorNode/index.js +1 -1
  511. package/lib/Selector/util.d.ts +2 -2
  512. package/lib/SelectorPicker/component.json +179 -0
  513. package/lib/SelectorPicker/index.d.ts +5 -5
  514. package/lib/SelectorPicker/index.js +1 -1
  515. package/lib/SingleBox/component.json +151 -0
  516. package/lib/SingleBox/index.d.ts +2 -2
  517. package/lib/Slider/component.json +181 -0
  518. package/lib/SortBox/component.json +108 -0
  519. package/lib/Status/component.json +104 -0
  520. package/lib/Stepper/component.json +129 -0
  521. package/lib/Stepper/index.d.ts +2 -2
  522. package/lib/Switch/component.json +207 -0
  523. package/lib/Switch/index.css +1 -1
  524. package/lib/Switch/index.d.ts +3 -2
  525. package/lib/Switch/index.js +1 -1
  526. package/lib/Switch/style/index.css +1 -1
  527. package/lib/Table/component.json +547 -0
  528. package/lib/Table/index.d.ts +2 -2
  529. package/lib/Table/index.js +1 -1
  530. package/lib/Table/interface.d.ts +6 -0
  531. package/lib/Tabs/component.json +227 -0
  532. package/lib/Tag/component.json +221 -0
  533. package/lib/Tag/index.css +1 -1
  534. package/lib/Tag/index.d.ts +1 -1
  535. package/lib/Tag/index.js +1 -1
  536. package/lib/Tag/style/index.css +1 -1
  537. package/lib/TextEditor/component.json +186 -0
  538. package/lib/TextEditor/index.d.ts +5 -5
  539. package/lib/TextField/component.json +290 -0
  540. package/lib/TextField/index.d.ts +2 -2
  541. package/lib/TimePicker/component.json +176 -0
  542. package/lib/Timeline/component.json +110 -0
  543. package/lib/Title/component.json +156 -0
  544. package/lib/ToggleButton/component.json +153 -0
  545. package/lib/Tooltip/component.json +176 -0
  546. package/lib/Tooltip/index.js +1 -1
  547. package/lib/Tooltip/interface.d.ts +14 -1
  548. package/lib/Tooltip/utils.js +1 -1
  549. package/lib/Transfer/component.json +157 -0
  550. package/lib/Tree/component.json +512 -0
  551. package/lib/Upload/component.json +450 -0
  552. package/lib/Utils/type.d.ts +0 -2
  553. package/lib/index.d.ts +2 -0
  554. package/lib/index.js +1 -1
  555. package/lib/locale/en_US.d.ts +361 -0
  556. package/lib/locale/en_US.js +2 -0
  557. package/lib/locale/index.d.ts +1 -723
  558. package/lib/locale/index2.js +2 -0
  559. package/lib/locale/zh_CN.d.ts +361 -0
  560. package/lib/locale/zh_CN.js +2 -0
  561. package/package.json +10 -3
  562. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  563. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
  564. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  565. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
@@ -0,0 +1,98 @@
1
+ {
2
+ "name": "CycleSelector",
3
+ "category": "Data Entry",
4
+ "description": "周期选择器,用于选择周期性时间",
5
+ "semantic": {
6
+ "intent": [
7
+ "周期选择",
8
+ "定时任务"
9
+ ],
10
+ "useCases": [
11
+ "定时任务",
12
+ "数据备份",
13
+ "报表生成"
14
+ ],
15
+ "riskLevel": "normal"
16
+ },
17
+ "variants": {
18
+ "default": {
19
+ "meaning": "默认样式"
20
+ }
21
+ },
22
+ "states": [
23
+ "default",
24
+ "disabled",
25
+ "error"
26
+ ],
27
+ "idealProps": {
28
+ "value": {
29
+ "type": "CycleSelectorValueProps",
30
+ "description": "周期配置对象 · cron-like 调度(不是简单 cycle 切换器 · 不要传 string 如 'month')。**完整 9 字段**:`startTime`(开始时间 · string | number)· `cycleType`(周期类型 number · 0=不重复 / 1=每天 / 2=每周 / 3=每月 / 4=每年 / 5=自定义)· `frequency`(周期频率 number)· `frequencyUnit`(频率单位 string · 'day' / 'week' / 'month' / 'year')· `monthCycleType`(月维度 string · 'day' / 'week' · 仅 cycleType=3 时)· `executionDay`(执行周几列表 string · '0,1,2,3,4,5,6' 逗号分隔 · 0=周日)· `endType`(结束方式 number · 0=无限重复 / 1=截至时间 / 2=限定次数)· `limitNum`(限定次数 number · endType=2 时)· `endTime`(结束日期 string | number · endType=1 时)。**示例** 每周三五重复:`{ startTime: '2026-05-15 09:00', cycleType: 2, frequency: 1, frequencyUnit: 'week', executionDay: '3,5', endType: 0 }`。完整 interface 见 `dist/es/CycleSelector/index.d.ts`(发布产物)"
31
+ },
32
+ "onChange": {
33
+ "type": "function",
34
+ "signature": "(val: CycleSelectorValueProps) => void",
35
+ "description": "值变化回调 · 接收完整 CycleSelectorValueProps 对象"
36
+ },
37
+ "timeType": {
38
+ "type": "enum",
39
+ "values": [
40
+ "undefined",
41
+ "zone",
42
+ "stamp"
43
+ ],
44
+ "default": "undefined",
45
+ "description": "时间格式:undefined=YYYY-MM-DD HH:mm:ss · zone=YYYY-MM-DD[T]HH:mm:ss[Z] · stamp=时间戳"
46
+ },
47
+ "disabled": {
48
+ "type": "boolean",
49
+ "description": "是否禁用"
50
+ }
51
+ },
52
+ "do": [
53
+ "用于 Cron 表达式或周期性任务配置场景——startTime 是触发时间,cycleType 决定重复方式",
54
+ "提供直观的周期选择界面(日/周/月/年/自定义),onChange 返回完整 CycleSelectorValueProps 对象",
55
+ "通过 cRef.current.getTipText() 获取周期摘要文本(用于展示当前配置的自然语言描述)"
56
+ ],
57
+ "dont": [
58
+ "在简单日期选择中使用——单纯时间选择用 DatePicker,CycleSelector 专用于周期性重复场景",
59
+ "忽略时区处理——默认出参格式为 'YYYY-MM-DD HH:mm:ss';需要 ISO 时区格式传 timeType='zone',需要时间戳传 timeType='stamp'"
60
+ ],
61
+ "events": {
62
+ "onChange": {
63
+ "signature": "(val: CycleSelectorValueProps) => void",
64
+ "asyncSupported": false,
65
+ "examples": [
66
+ "基本用法:<CycleSelector value={cycleValue} onChange={(val) => setCycleValue(val)} />",
67
+ "onChange 返回完整 CycleSelectorValueProps 对象,字段按 cycleType 不同动态增减(非自定义时删除 frequency/frequencyUnit 等字段)",
68
+ "cycleType=0(不重复)时 val 只含 startTime + cycleType,其余字段被删除"
69
+ ],
70
+ "commonMistakes": [
71
+ "假设 onChange 每次都返回完整的 9 个字段——实际按 cycleType 动态清除无关字段(如 cycleType=0 时删除 frequency 等)",
72
+ "在 onChange 外部直接修改 val 对象后回传——CycleSelectorValueProps 是内部 state 引用,应拷贝后修改:{ ...val, extraField: value }",
73
+ "value 传 null/undefined——value 是必填 prop(src/CycleSelector/index.tsx:60 无问号),传空会导致运行时错误"
74
+ ]
75
+ }
76
+ },
77
+ "typescriptPitfalls": [
78
+ {
79
+ "issue": "value prop 是必填(无问号),不能传 null/undefined",
80
+ "wrong": "const [cycle, setCycle] = useState<CycleSelectorValueProps | null>(null);\n<CycleSelector value={cycle} /> // null 导致运行时错误",
81
+ "right": "const [cycle, setCycle] = useState<CycleSelectorValueProps>({});\n<CycleSelector value={cycle} onChange={setCycle} />"
82
+ },
83
+ {
84
+ "issue": "onChange 是必填(无问号),不传会导致 TS 类型错误",
85
+ "wrong": "<CycleSelector value={cycleValue} /> // 缺少 onChange,TS 报错",
86
+ "right": "<CycleSelector value={cycleValue} onChange={(val) => setCycleValue(val)} />"
87
+ },
88
+ {
89
+ "issue": "cRef 需要 useRef<CycleSelectorRefProps> 类型,直接 useRef() 推断为 unknown",
90
+ "wrong": "const cRef = useRef(null); cRef.current.getTipText(); // current 可能为 null",
91
+ "right": "import { CycleSelectorRefProps } from '@para-ui/core';\nconst cRef = useRef<CycleSelectorRefProps>({} as CycleSelectorRefProps);\n<CycleSelector cRef={cRef} ... />"
92
+ }
93
+ ],
94
+ "mapping": {
95
+ "realComponent": "CycleSelector",
96
+ "adapter": null
97
+ }
98
+ }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const r=require("../_virtual/jsx-runtime.js"),u=require("react"),De=require("clsx"),g=require("dayjs"),Ne=require("../node_modules/@para-ui/icons/Close/index.js"),be=require("../node_modules/@para-ui/icons/WarningCircleF/index.js"),B=require("../GlobalContext/constant.js"),F=require("../DatePicker/index.js"),f=require("../Select/index.js"),qe=require("../TextField/index.js"),ge=require("../Popover/index.js"),k=require("../Button/index.js"),ke=require("../GlobalContext/index.js"),$e=require("../GlobalContext/useFormatMessage.js"),we=require("./lang/index.js"),Se=require("../HelperText/index.js"),Ye=require("../Utils/index.js");;/* empty css */const Me=O=>{const{className:V,style:W,value:p,disabled:E=!1,error:R,hideErrorDom:I,helperText:z,disabledDate:$,disabledTime:w,timeType:S,tipRender:Y,showPopover:y,cRef:A,onChange:G,disabledCustom:M=!1}=O,{language:U,locale:Ue}=u.useContext(ke.default),n=$e.default("CycleSelector",we.default),[i,m]=u.useState({}),[J,L]=u.useState([]),[K,h]=u.useState(!1),[Q,X]=u.useState([]),[Z,ee]=u.useState([]),[te,ne]=u.useState([]),[re,se]=u.useState([]),[ie,H]=u.useState(!1),t=u.useRef({valueCom:i,value:p});t.current.valueCom=i,t.current.value=p,u.useEffect(()=>{const e=[];for(let s=1;s<32;s++)e.push({label:n("every")+s,value:s});return X(e),ee([{label:n("day"),value:"day"},{label:n("week"),value:"week"},{label:n("month"),value:"month"},{label:n("year"),value:"year"}]),ne([{label:n("infiniteRepetition"),value:0},{label:n("deadline"),value:1},{label:n("limitNum"),value:2}]),t.current.endTypeMap={0:n("infiniteRepetition"),1:n("deadline"),2:n("limitNum")},()=>{clearTimeout(t.current.timerTip)}},[U]),u.useEffect(()=>{const e=p?{...p}:{};e.startTime||(e.cycleType=0),e.startTime&&(e.startTime=D(e.startTime,"YYYY-MM-DD HH:mm")),e.endTime&&(e.endTime=D(e.endTime,"YYYY-MM-DD")),m(e),t.current.valueCom=e,le()},[p,U,M]),u.useEffect(()=>{y!==void 0&&y&&N()},[y]),u.useImperativeHandle(A,()=>({getTipText:e=>P(e,!0)}));const _=e=>e?S==="zone"?new Date(e).toISOString():S==="stamp"?new Date(e).getTime():e:"",D=(e,s)=>e?g(e).format(s):"",le=()=>{if(!t.current.valueCom?.startTime){L([{label:n("noRepetition"),value:0}]);return}t.current.timeDetail=Ye.getDateYYYYMMddHHMM(t.current.valueCom?.startTime);const{month:e,day:s,weekDay:l,hm:a,week:c,date:d}=t.current.timeDetail;let o=[{label:n("noRepetition"),value:0},{label:`${n("repeatEveryDay")} ${a}`,value:1},{label:`${n("repeatEveryWeek")} ${n(`week${l}`)} ${a}`,value:2},{label:`${n("repeatEveryMonth")} ${s}${n("th")} ${a}`,value:3},{label:`${n("repeatEveryYear")} ${e}${n("month")}${s}${n("th")} ${a}`,value:4},{label:n("customRepetition"),value:5}];M&&(o=o.filter(v=>v.value!==5)),L(o),se([{label:n(`day${s}`),value:"day"},{label:n(`the${c}`)+n(`week${l}`),value:"week"}]),t.current.monthCycleTypeListMap={day:n(`day${s}`),week:n(`the${c}`)+n(`week${l}`)}},ae=(e,s)=>{t.current.valueCom.startTime=s,ue(),T()},x=e=>{const s=t.current.valueCom[e];return s===void 0||s===""||s===null},N=()=>{if(x("frequency")&&(t.current.valueCom.frequency=1),x("frequencyUnit")&&(t.current.valueCom.frequencyUnit="day"),x("endType")&&(t.current.valueCom.endType=0),x("monthCycleType")&&(t.current.valueCom.monthCycleType="day"),x("endTime")&&(t.current.valueCom.endTime=t.current.timeDetail?.date),x("limitNum")&&(t.current.valueCom.limitNum=1),x("executionDay")){const e=b(Number(t.current.timeDetail?.weekDay));t.current.valueCom.executionDay=`${e}`}m({...t.current.valueCom})},ue=()=>{t.current.valueCom={startTime:t.current.valueCom.startTime,cycleType:0}},ce=e=>{t.current.valueCom.cycleType=e,m({...t.current.valueCom}),e===5?(h(!0),N()):T()},T=e=>{t.current.valueCom.cycleType===5?(t.current.valueCom.frequencyUnit==="week"?delete t.current.valueCom.monthCycleType:(t.current.valueCom.frequencyUnit==="month"||delete t.current.valueCom.monthCycleType,delete t.current.valueCom.executionDay),t.current.valueCom.endType===0?(delete t.current.valueCom.endTime,delete t.current.valueCom.limitNum):t.current.valueCom.endType===1?delete t.current.valueCom.limitNum:delete t.current.valueCom.endTime):(delete t.current.valueCom.frequency,delete t.current.valueCom.frequencyUnit,delete t.current.valueCom.endType,delete t.current.valueCom.monthCycleType,delete t.current.valueCom.endTime,delete t.current.valueCom.limitNum,delete t.current.valueCom.executionDay);const s=e?{...t.current.value}:{...t.current.valueCom};s.startTime&&(s.startTime=_(s.startTime)),s.endTime&&(s.endTime=_(s.endTime)),G(s)},oe=e=>{e||q()},me=()=>{h(!0),N()},P=(e,s)=>{const l=e||p;if(l?.cycleType!==5||R)return;const a=[],c=n("every")+l.frequency+n(l.frequencyUnit),d=t.current.timeDetail?.hm;if(Y)return Y();if(l.frequencyUnit==="week"){const o=[];let v;l.executionDay?.split(",").forEach(Re=>{let C=Number(Re)-1;C===0?(C=7,v=n(`week${C}`)):o.push(n(`week${C}`))}),v&&o.push(v),a.push(n("text1",{every:c+o.join("、"),time:d}))}else if(l.frequencyUnit==="month")a.push(n("text1",{every:c,time:(t.current.monthCycleTypeListMap?.[l.monthCycleType]||"")+(d||"")}));else if(l.frequencyUnit==="day")a.push(n("text1",{every:c,time:d}));else{const o=n("monthDay",{month:t.current.timeDetail?.month,day:t.current.timeDetail?.day});a.push(n("text1",{every:c,time:`${o.join("")} ${d}`}))}return l.endType===2&&a.push(n("text2",{limitNum:l.limitNum})),l.endType===1&&a.push(n("text3",{date:D(l.endTime,"YYYY-MM-DD")})),s?a:r.jsxRuntimeExports.jsxs("p",{className:"text-tip",children:[a,!E&&r.jsxRuntimeExports.jsx(k.Button,{variant:"text",onClick:me,children:n("update")})]})},de=(e,s)=>{i.endTime=s,m({...i})},xe=e=>{e.target.value!==""&&parseInt(e.target.value.toString()),i.limitNum=e.target.value,m({...i})},pe=e=>{(e.target.value!==""?parseInt(e.target.value.toString()):0)<=0&&(i.limitNum=1,m({...i}))},j=e=>s=>{i[e]=s,m({...i})},b=e=>(e+=1,e===8&&(e=1),e),ye=e=>()=>{if(t.current.timeDetail?.weekDay===e){H(!0),clearTimeout(t.current.timerTip),t.current.timerTip=setTimeout(()=>{H(!1)},1300);return}ve(e)},ve=e=>{e=b(e);const s=i.executionDay?.split(",")||[],l={};s.forEach(a=>{l[a]=!0}),l[e.toString()]?delete l[e.toString()]:l[e.toString()]=!0,i.executionDay=Object.keys(l).join(","),t.current.valueCom={...i},m({...i})},fe=()=>r.jsxRuntimeExports.jsxs(r.jsxRuntimeExports.Fragment,{children:[r.jsxRuntimeExports.jsxs("div",{className:"item frequency",children:[r.jsxRuntimeExports.jsx("div",{className:"label",children:n("repetitionFrequency")}),r.jsxRuntimeExports.jsxs("div",{className:"form-content",children:[r.jsxRuntimeExports.jsx(f.default,{value:i.frequency,list:Q,className:"frequency-select",onChange:j("frequency")}),r.jsxRuntimeExports.jsx(f.default,{value:i.frequencyUnit,list:Z,onChange:j("frequencyUnit")})]})]}),i.frequencyUnit==="week"&&r.jsxRuntimeExports.jsxs("div",{className:"item execution-day",children:[r.jsxRuntimeExports.jsx("div",{className:"label"}),r.jsxRuntimeExports.jsxs("div",{className:"form-content",children:[r.jsxRuntimeExports.jsx("div",{className:"execution-day-select",children:new Array(7).fill(1).map((e,s)=>{const l={1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven"},a=b(s+1),c=i.executionDay?.indexOf(a.toString());let d=c!==void 0&&c!==-1;return t.current.timeDetail?.weekDay===s+1&&(d=!0),r.jsxRuntimeExports.jsx("div",{className:d?"select-item":"",onClick:ye(s+1),children:n(l[s+1])},s)})}),r.jsxRuntimeExports.jsxs("p",{className:ie?"tip show-tip":"tip",children:[r.jsxRuntimeExports.jsx(be.WarningCircleF,{}),r.jsxRuntimeExports.jsx("span",{children:n("weekTip",{week:n(`week${t.current.timeDetail?.weekDay}`)})})]})]})]}),i.frequencyUnit==="month"&&r.jsxRuntimeExports.jsxs("div",{className:"item month-cycle-type-list",children:[r.jsxRuntimeExports.jsx("div",{className:"label"}),r.jsxRuntimeExports.jsxs("div",{className:"form-content",children:[r.jsxRuntimeExports.jsx("div",{}),r.jsxRuntimeExports.jsx(f.default,{value:i.monthCycleType,list:re,onChange:j("monthCycleType")})]})]}),r.jsxRuntimeExports.jsxs("div",{className:"item end-type",children:[r.jsxRuntimeExports.jsx("div",{className:"label",children:n("endRepetition")}),r.jsxRuntimeExports.jsxs("div",{className:"form-content",children:[r.jsxRuntimeExports.jsx(f.default,{value:i.endType,list:te,className:"end-type-select",onChange:j("endType")}),r.jsxRuntimeExports.jsxs("div",{className:"right-box",children:[i.endType===1&&r.jsxRuntimeExports.jsx(F.default,{disabledDate:e=>e&&e<g(new Date(i.startTime).getTime()-1440*60*1e3),value:i.endTime,format:"YYYY-MM-DD",allowClear:!1,onChange:de}),i.endType===2&&r.jsxRuntimeExports.jsx(qe.TextField,{min:1,type:"number",placeholder:n("placeholder"),value:i.limitNum,onChange:xe,onBlur:pe,rightIcon:n("next")})]})]})]})]}),q=()=>{h(!1),T(!0)},he=()=>{h(!1),T()},Te=()=>r.jsxRuntimeExports.jsxs("div",{className:"cycle-selector-popover-content",children:[r.jsxRuntimeExports.jsxs("div",{className:"title",children:[r.jsxRuntimeExports.jsx("span",{className:"label",children:n("customCycle")}),r.jsxRuntimeExports.jsx(Ne.Close,{onClick:q})]}),r.jsxRuntimeExports.jsx("div",{className:"content",children:fe()}),r.jsxRuntimeExports.jsxs("div",{className:"footer",children:[r.jsxRuntimeExports.jsx(k.Button,{variant:"outlined",onClick:q,children:n("cancel")}),r.jsxRuntimeExports.jsx(k.Button,{onClick:he,children:n("confirm")})]})]}),je=()=>$||(e=>e&&e<g(new Date().getTime()-1440*60*1e3)),Ce=()=>{if(w)return w},Ee=()=>y!==void 0?y:K;return r.jsxRuntimeExports.jsxs("div",{className:De(`${B.$prefixCls}-cycle-selector`,V),style:W,children:[r.jsxRuntimeExports.jsx(ge.Popover,{content:Te(),open:Ee(),placement:"bottomRight",overlayClassName:`${B.$prefixCls}-cycle-selector-popover`,onVisibleChange:oe,children:r.jsxRuntimeExports.jsxs("div",{className:"cycle-selector-content",children:[r.jsxRuntimeExports.jsx(F.default,{disabled:E,value:i.startTime,className:"time-select",showTime:!0,format:"YYYY-MM-DD HH:mm",disabledDate:je(),disabledTime:Ce(),placeholder:n("pleaseSelect"),onChange:ae,error:R}),r.jsxRuntimeExports.jsx(f.default,{disabled:!i.startTime||E,list:J,className:"select-type",placeholder:n("pleaseSelect"),value:i.cycleType,onChange:e=>ce(Number(e))})]})}),P(),r.jsxRuntimeExports.jsx(Se.default,{error:R,hideErrorDom:I,helperText:z})]})};exports.default=Me;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const r=require("../_virtual/jsx-runtime.js"),u=require("react"),De=require("clsx"),g=require("dayjs"),Ne=require("../node_modules/@para-ui/icons/Close/index.js"),be=require("../node_modules/@para-ui/icons/WarningCircleF/index.js"),B=require("../GlobalContext/constant.js"),F=require("../DatePicker/index.js"),f=require("../Select/index.js"),qe=require("../TextField/index.js"),ge=require("../Popover/index.js"),k=require("../Button/index.js"),ke=require("../GlobalContext/index.js"),$e=require("../GlobalContext/useFormatMessage.js"),we=require("./lang/index.js"),Se=require("../HelperText/index.js"),Ye=require("../Utils/index.js");;/* empty css */const Me=O=>{const{className:V,style:W,value:p,disabled:E=!1,error:R,hideErrorDom:I,helperText:z,disabledDate:$,disabledTime:w,timeType:S,tipRender:Y,showPopover:y,cRef:A,onChange:G,disabledCustom:M=!1}=O,{language:U,locale:Ue}=u.useContext(ke.default),n=$e.default("CycleSelector",we.default),[i,m]=u.useState({}),[J,L]=u.useState([]),[K,h]=u.useState(!1),[Q,X]=u.useState([]),[Z,ee]=u.useState([]),[te,ne]=u.useState([]),[re,se]=u.useState([]),[ie,H]=u.useState(!1),t=u.useRef({valueCom:i,value:p});t.current.valueCom=i,t.current.value=p,u.useEffect(()=>{const e=[];for(let s=1;s<32;s++)e.push({label:n("every")+s,value:s});return X(e),ee([{label:n("day"),value:"day"},{label:n("week"),value:"week"},{label:n("month"),value:"month"},{label:n("year"),value:"year"}]),ne([{label:n("infiniteRepetition"),value:0},{label:n("deadline"),value:1},{label:n("limitNum"),value:2}]),t.current.endTypeMap={0:n("infiniteRepetition"),1:n("deadline"),2:n("limitNum")},()=>{clearTimeout(t.current.timerTip)}},[U]),u.useEffect(()=>{const e=p?{...p}:{};e.startTime||(e.cycleType=0),e.startTime&&(e.startTime=D(e.startTime,"YYYY-MM-DD HH:mm")),e.endTime&&(e.endTime=D(e.endTime,"YYYY-MM-DD")),m(e),t.current.valueCom=e,le()},[p,U,M]),u.useEffect(()=>{y!==void 0&&y&&N()},[y]),u.useImperativeHandle(A,()=>({getTipText:e=>P(e,!0)}));const _=e=>e?S==="zone"?new Date(e).toISOString():S==="stamp"?new Date(e).getTime():e:"",D=(e,s)=>e?g(e).format(s):"",le=()=>{if(!t.current.valueCom?.startTime){L([{label:n("noRepetition"),value:0}]);return}t.current.timeDetail=Ye.getDateYYYYMMddHHMM(t.current.valueCom?.startTime);const{month:e,day:s,weekDay:l,hm:a,week:c,date:d}=t.current.timeDetail;let o=[{label:n("noRepetition"),value:0},{label:`${n("repeatEveryDay")} ${a}`,value:1},{label:`${n("repeatEveryWeek")} ${n(`week${l}`)} ${a}`,value:2},{label:`${n("repeatEveryMonth")} ${s}${n("th")} ${a}`,value:3},{label:`${n("repeatEveryYear")} ${e}${n("month")}${s}${n("th")} ${a}`,value:4},{label:n("customRepetition"),value:5}];M&&(o=o.filter(v=>v.value!==5)),L(o),se([{label:n(`day${s}`),value:"day"},{label:n(`the${c}`)+n(`week${l}`),value:"week"}]),t.current.monthCycleTypeListMap={day:n(`day${s}`),week:n(`the${c}`)+n(`week${l}`)}},ae=(e,s)=>{t.current.valueCom.startTime=s,ue(),T()},x=e=>{const s=t.current.valueCom[e];return s===void 0||s===""||s===null},N=()=>{if(x("frequency")&&(t.current.valueCom.frequency=1),x("frequencyUnit")&&(t.current.valueCom.frequencyUnit="day"),x("endType")&&(t.current.valueCom.endType=0),x("monthCycleType")&&(t.current.valueCom.monthCycleType="day"),x("endTime")&&(t.current.valueCom.endTime=t.current.timeDetail?.date),x("limitNum")&&(t.current.valueCom.limitNum=1),x("executionDay")){const e=b(Number(t.current.timeDetail?.weekDay));t.current.valueCom.executionDay=`${e}`}m({...t.current.valueCom})},ue=()=>{t.current.valueCom={startTime:t.current.valueCom.startTime,cycleType:0}},ce=e=>{t.current.valueCom.cycleType=e,m({...t.current.valueCom}),e===5?(h(!0),N()):T()},T=e=>{t.current.valueCom.cycleType===5?(t.current.valueCom.frequencyUnit==="week"?delete t.current.valueCom.monthCycleType:(t.current.valueCom.frequencyUnit==="month"||delete t.current.valueCom.monthCycleType,delete t.current.valueCom.executionDay),t.current.valueCom.endType===0?(delete t.current.valueCom.endTime,delete t.current.valueCom.limitNum):t.current.valueCom.endType===1?delete t.current.valueCom.limitNum:delete t.current.valueCom.endTime):(delete t.current.valueCom.frequency,delete t.current.valueCom.frequencyUnit,delete t.current.valueCom.endType,delete t.current.valueCom.monthCycleType,delete t.current.valueCom.endTime,delete t.current.valueCom.limitNum,delete t.current.valueCom.executionDay);const s=e?{...t.current.value}:{...t.current.valueCom};s.startTime&&(s.startTime=_(s.startTime)),s.endTime&&(s.endTime=_(s.endTime)),G(s)},oe=e=>{e||q()},me=()=>{h(!0),N()},P=(e,s)=>{const l=e||p;if(l?.cycleType!==5||R)return;const a=[],c=n("every")+l.frequency+n(l.frequencyUnit),d=t.current.timeDetail?.hm;if(Y)return Y();if(l.frequencyUnit==="week"){const o=[];let v;l.executionDay?.split(",").forEach(Re=>{let C=Number(Re)-1;C===0?(C=7,v=n(`week${C}`)):o.push(n(`week${C}`))}),v&&o.push(v),a.push(n("text1",{every:c+o.join("、"),time:d}))}else if(l.frequencyUnit==="month")a.push(n("text1",{every:c,time:(t.current.monthCycleTypeListMap?.[l.monthCycleType]||"")+(d||"")}));else if(l.frequencyUnit==="day")a.push(n("text1",{every:c,time:d}));else{const o=n("monthDay",{month:t.current.timeDetail?.month,day:t.current.timeDetail?.day});a.push(n("text1",{every:c,time:`${o.join("")} ${d}`}))}return l.endType===2&&a.push(n("text2",{limitNum:l.limitNum})),l.endType===1&&a.push(n("text3",{date:D(l.endTime,"YYYY-MM-DD")})),s?a:r.jsxRuntimeExports.jsxs("p",{className:"text-tip",children:[a,!E&&r.jsxRuntimeExports.jsx(k.Button,{variant:"text",onClick:me,children:n("update")})]})},de=(e,s)=>{i.endTime=s,m({...i})},xe=e=>{const s=e.target.value!==""?parseInt(e.target.value.toString()):0;i.limitNum=s,m({...i})},pe=e=>{(e.target.value!==""?parseInt(e.target.value.toString()):0)<=0&&(i.limitNum=1,m({...i}))},j=e=>s=>{i[e]=s,m({...i})},b=e=>(e+=1,e===8&&(e=1),e),ye=e=>()=>{if(t.current.timeDetail?.weekDay===e){H(!0),clearTimeout(t.current.timerTip),t.current.timerTip=setTimeout(()=>{H(!1)},1300);return}ve(e)},ve=e=>{e=b(e);const s=i.executionDay?.split(",")||[],l={};s.forEach(a=>{l[a]=!0}),l[e.toString()]?delete l[e.toString()]:l[e.toString()]=!0,i.executionDay=Object.keys(l).join(","),t.current.valueCom={...i},m({...i})},fe=()=>r.jsxRuntimeExports.jsxs(r.jsxRuntimeExports.Fragment,{children:[r.jsxRuntimeExports.jsxs("div",{className:"item frequency",children:[r.jsxRuntimeExports.jsx("div",{className:"label",children:n("repetitionFrequency")}),r.jsxRuntimeExports.jsxs("div",{className:"form-content",children:[r.jsxRuntimeExports.jsx(f.default,{value:i.frequency,list:Q,className:"frequency-select",onChange:j("frequency")}),r.jsxRuntimeExports.jsx(f.default,{value:i.frequencyUnit,list:Z,onChange:j("frequencyUnit")})]})]}),i.frequencyUnit==="week"&&r.jsxRuntimeExports.jsxs("div",{className:"item execution-day",children:[r.jsxRuntimeExports.jsx("div",{className:"label"}),r.jsxRuntimeExports.jsxs("div",{className:"form-content",children:[r.jsxRuntimeExports.jsx("div",{className:"execution-day-select",children:new Array(7).fill(1).map((e,s)=>{const l={1:"one",2:"two",3:"three",4:"four",5:"five",6:"six",7:"seven"},a=b(s+1),c=i.executionDay?.indexOf(a.toString());let d=c!==void 0&&c!==-1;return t.current.timeDetail?.weekDay===s+1&&(d=!0),r.jsxRuntimeExports.jsx("div",{className:d?"select-item":"",onClick:ye(s+1),children:n(l[s+1])},s)})}),r.jsxRuntimeExports.jsxs("p",{className:ie?"tip show-tip":"tip",children:[r.jsxRuntimeExports.jsx(be.WarningCircleF,{}),r.jsxRuntimeExports.jsx("span",{children:n("weekTip",{week:n(`week${t.current.timeDetail?.weekDay}`)})})]})]})]}),i.frequencyUnit==="month"&&r.jsxRuntimeExports.jsxs("div",{className:"item month-cycle-type-list",children:[r.jsxRuntimeExports.jsx("div",{className:"label"}),r.jsxRuntimeExports.jsxs("div",{className:"form-content",children:[r.jsxRuntimeExports.jsx("div",{}),r.jsxRuntimeExports.jsx(f.default,{value:i.monthCycleType,list:re,onChange:j("monthCycleType")})]})]}),r.jsxRuntimeExports.jsxs("div",{className:"item end-type",children:[r.jsxRuntimeExports.jsx("div",{className:"label",children:n("endRepetition")}),r.jsxRuntimeExports.jsxs("div",{className:"form-content",children:[r.jsxRuntimeExports.jsx(f.default,{value:i.endType,list:te,className:"end-type-select",onChange:j("endType")}),r.jsxRuntimeExports.jsxs("div",{className:"right-box",children:[i.endType===1&&r.jsxRuntimeExports.jsx(F.default,{disabledDate:e=>e&&e<g(new Date(i.startTime).getTime()-1440*60*1e3),value:i.endTime,format:"YYYY-MM-DD",allowClear:!1,onChange:de}),i.endType===2&&r.jsxRuntimeExports.jsx(qe.TextField,{min:1,type:"number",placeholder:n("placeholder"),value:i.limitNum,onChange:xe,onBlur:pe,rightIcon:n("next")})]})]})]})]}),q=()=>{h(!1),T(!0)},he=()=>{h(!1),T()},Te=()=>r.jsxRuntimeExports.jsxs("div",{className:"cycle-selector-popover-content",children:[r.jsxRuntimeExports.jsxs("div",{className:"title",children:[r.jsxRuntimeExports.jsx("span",{className:"label",children:n("customCycle")}),r.jsxRuntimeExports.jsx(Ne.Close,{onClick:q})]}),r.jsxRuntimeExports.jsx("div",{className:"content",children:fe()}),r.jsxRuntimeExports.jsxs("div",{className:"footer",children:[r.jsxRuntimeExports.jsx(k.Button,{variant:"outlined",onClick:q,children:n("cancel")}),r.jsxRuntimeExports.jsx(k.Button,{onClick:he,children:n("confirm")})]})]}),je=()=>$||(e=>e&&e<g(new Date().getTime()-1440*60*1e3)),Ce=()=>{if(w)return w},Ee=()=>y!==void 0?y:K;return r.jsxRuntimeExports.jsxs("div",{className:De(`${B.$prefixCls}-cycle-selector`,V),style:W,children:[r.jsxRuntimeExports.jsx(ge.Popover,{content:Te(),open:Ee(),placement:"bottomRight",overlayClassName:`${B.$prefixCls}-cycle-selector-popover`,onVisibleChange:oe,children:r.jsxRuntimeExports.jsxs("div",{className:"cycle-selector-content",children:[r.jsxRuntimeExports.jsx(F.default,{disabled:E,value:i.startTime,className:"time-select",showTime:!0,format:"YYYY-MM-DD HH:mm",disabledDate:je(),disabledTime:Ce(),placeholder:n("pleaseSelect"),onChange:ae,error:R}),r.jsxRuntimeExports.jsx(f.default,{disabled:!i.startTime||E,list:J,className:"select-type",placeholder:n("pleaseSelect"),value:i.cycleType,onChange:e=>ce(Number(e))})]})}),P(),r.jsxRuntimeExports.jsx(Se.default,{error:R,hideErrorDom:I,helperText:z})]})};exports.default=Me;
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,192 @@
1
+ {
2
+ "name": "DatePicker",
3
+ "category": "Data Entry",
4
+ "description": "输入或选择日期的控件",
5
+ "semantic": {
6
+ "intent": [
7
+ "选择日期",
8
+ "选择时间",
9
+ "选择日期范围"
10
+ ],
11
+ "useCases": [
12
+ "表单日期录入",
13
+ "日程安排",
14
+ "数据报表时间筛选"
15
+ ],
16
+ "riskLevel": "normal"
17
+ },
18
+ "variants": {
19
+ "date": {
20
+ "meaning": "日期选择"
21
+ },
22
+ "range": {
23
+ "meaning": "日期范围选择"
24
+ },
25
+ "time": {
26
+ "meaning": "时间选择"
27
+ }
28
+ },
29
+ "states": [
30
+ "default",
31
+ "disabled",
32
+ "error",
33
+ "open"
34
+ ],
35
+ "idealProps": {
36
+ "value": {
37
+ "type": "Dayjs | null(DatePicker)/ [Dayjs, Dayjs] | null(RangePicker)",
38
+ "description": "当前选中的日期。**受控模式必传**——传入 null 表示未选中(清空状态);与 onChange 配套使用。注意:RangePicker 的 value 才是 dayjs[],DatePicker 不要传数组",
39
+ "_typeNote": "原'dayjs | dayjs[]'写法误导——分别属于 DatePicker / RangePicker,不是同一组件的联合类型"
40
+ },
41
+ "onChange": {
42
+ "type": "function",
43
+ "signature": "(date: Dayjs | null, dateString: string) => void",
44
+ "description": "日期变化回调。date=null 时表示清空(当 allowClear=true 用户点叉触发);dateString 是按 format 格式化后的字符串,清空时为空串"
45
+ },
46
+ "picker": {
47
+ "type": "enum",
48
+ "values": [
49
+ "date",
50
+ "week",
51
+ "month",
52
+ "quarter",
53
+ "year"
54
+ ],
55
+ "default": "date",
56
+ "description": "选择器类型"
57
+ },
58
+ "showTime": {
59
+ "type": "boolean | object",
60
+ "objectShape": {
61
+ "format": { "type": "string", "description": "时间格式,例:'HH:mm:ss'" },
62
+ "defaultValue": { "type": "Dayjs", "description": "时间默认值" },
63
+ "disabledTime": { "type": "function", "description": "禁用时间回调" }
64
+ },
65
+ "default": false,
66
+ "description": "是否增加时间选择功能。传 true 使用默认时间选项;传对象可配置时间选择器参数(format/defaultValue/disabledTime 等)"
67
+ },
68
+ "format": {
69
+ "type": "string | string[]",
70
+ "default": "YYYY-MM-DD",
71
+ "description": "展示的日期格式"
72
+ },
73
+ "disabled": {
74
+ "type": "boolean",
75
+ "default": false,
76
+ "description": "是否禁用"
77
+ },
78
+ "allowClear": {
79
+ "type": "boolean",
80
+ "default": true,
81
+ "description": "是否显示清除按钮"
82
+ },
83
+ "bordered": {
84
+ "type": "boolean",
85
+ "default": true,
86
+ "description": "是否有边框"
87
+ },
88
+ "placeholder": {
89
+ "type": "string(DatePicker) | [string, string](RangePicker,开始日期 + 结束日期 placeholder)",
90
+ "description": "输入框提示文字。DatePicker 接受 string;RangePicker 接受 [string, string] 元组(首/末 placeholder 分别)"
91
+ },
92
+ "disabledDate": {
93
+ "type": "function",
94
+ "signature": "(currentDate: Dayjs) => boolean",
95
+ "description": "不可选择的日期。返回 true 表示该日期不可选。currentDate 在 picker='date' 时为当天 00:00:00(无时分秒),可直接 `current < dayjs().endOf('day')` 比较;在 showTime 模式下含完整时分秒,此时若做日维度比较应用 `dayjs().startOf('day')` / `endOf('day')` 兜底"
96
+ },
97
+ "defaultValue": {
98
+ "type": "Dayjs",
99
+ "required": false,
100
+ "description": "默认日期(非受控)。初始渲染时的默认选中日期;⚠️ 不要同时传 value + defaultValue,受控模式只传 value + onChange,非受控模式只传 defaultValue"
101
+ },
102
+ "onOpenChange": {
103
+ "type": "function",
104
+ "signature": "(open: boolean) => void",
105
+ "required": false,
106
+ "description": "弹出日历/关闭日历时的回调,open=true 表示打开,open=false 表示关闭"
107
+ },
108
+ "open": {
109
+ "type": "boolean",
110
+ "required": false,
111
+ "description": "控制弹层是否展开(受控),配合 onOpenChange 使用"
112
+ },
113
+ "showToday": {
114
+ "type": "boolean",
115
+ "default": "true",
116
+ "required": false,
117
+ "description": "是否展示「今天」快捷按钮,picker='date' 时有效"
118
+ },
119
+ "showNow": {
120
+ "type": "boolean",
121
+ "required": false,
122
+ "description": "showTime=true 时是否展示「此刻」按钮"
123
+ }
124
+ },
125
+ "do": [
126
+ "使用 format 属性统一日期显示格式",
127
+ "对于需要选择范围的场景,使用 DatePicker.RangePicker(从同一导入中解构:`const { RangePicker } = DatePicker`)",
128
+ "受控模式只传 value + onChange,非受控模式只传 defaultValue——不要同时传两者",
129
+ "showTime=true 时,value 必须是含时分秒的 Dayjs 对象;onChange 接收的 date 参数也会含完整时间信息",
130
+ "禁用日期用 disabledDate 回调(返回 true 表示不可选);禁止今天之前:`disabledDate={(cur) => cur && cur < dayjs().startOf('day')}`"
131
+ ],
132
+ "dont": [
133
+ "混用 moment 和 dayjs 对象(本项目统一使用 dayjs,value/defaultValue/disabledDate 参数都是 Dayjs 类型)",
134
+ "在移动端过度依赖复杂的弹出面板",
135
+ "不要对 DatePicker 传 value 数组——RangePicker.value 才是 [Dayjs, Dayjs],DatePicker.value 是单个 Dayjs | null"
136
+ ],
137
+ "events": {
138
+ "onChange": {
139
+ "signature": "(date: Dayjs | null, dateString: string) => void",
140
+ "asyncSupported": false,
141
+ "examples": [
142
+ "日期选中时触发:date 为 Dayjs 对象,dateString 为 format 格式化后的字符串",
143
+ "用户点清空按钮时触发:date=null,dateString=''——需判断 null 再处理",
144
+ "showTime=true 模式下,date 包含完整时分秒(Dayjs),dateString 按 format 含时间部分"
145
+ ],
146
+ "commonMistakes": [
147
+ "只用 dateString 而忽略 date 参数——dateString 是 format 格式化结果,跨时区场景需用 date(Dayjs 对象)再转换",
148
+ "不处理 date=null 的清空场景——allowClear=true 时 user 点叉会触发 onChange(null, ''),此时直接存 date 会把 null 存入 state",
149
+ "RangePicker 的 onChange 签名不同——`(dates: [Dayjs, Dayjs] | null, dateStrings: [string, string]) => void`,不要用 DatePicker 的签名",
150
+ "假设 onChange 仅在确认时触发——date picker 模式(无 showTime)选日期即触发;showTime 模式需点「确定」按钮才触发"
151
+ ]
152
+ },
153
+ "onOpenChange": {
154
+ "signature": "(open: boolean) => void",
155
+ "asyncSupported": false,
156
+ "examples": [
157
+ "弹层打开时触发 onOpenChange(true),关闭时触发 onOpenChange(false)",
158
+ "搭配 open 受控 prop 实现自定义开关逻辑(如点击外部关闭)"
159
+ ],
160
+ "commonMistakes": [
161
+ "在 onOpenChange 中直接做表单提交——open=false 仅表示面板关闭,value 不一定已更新",
162
+ "忘记 RangePicker 关闭时 src 代码会主动调 blur(generateRangePicker.tsx 实证)——不需要手动调"
163
+ ]
164
+ }
165
+ },
166
+ "typescriptPitfalls": [
167
+ {
168
+ "issue": "DatePicker value 类型应为 Dayjs | null,传字符串会导致显示异常",
169
+ "wrong": "value={'2024-01-01'} // 字符串不是 Dayjs 对象,组件内部格式化会失败",
170
+ "right": "value={dayjs('2024-01-01')} // 必须用 dayjs() 转换;清空用 null"
171
+ },
172
+ {
173
+ "issue": "RangePicker 和 DatePicker 的 onChange 签名不同,混用会导致类型错误",
174
+ "wrong": "// RangePicker 中用 DatePicker 的 onChange 签名\nonChange={(date: Dayjs, str: string) => ...} // 应为数组",
175
+ "right": "// RangePicker\nonChange={(dates: [Dayjs, Dayjs] | null, strs: [string, string]) => ...}"
176
+ },
177
+ {
178
+ "issue": "RangePicker value 是 RangeValue<Dayjs> 类型(可 null 的二元元组),不能传普通数组",
179
+ "wrong": "value={[dayjs(), dayjs().add(7, 'day')]} // 推断为 Dayjs[],不匹配 RangeValue<Dayjs>",
180
+ "right": "import type { RangeValue } from '@para-ui/core'; const val: RangeValue<Dayjs> = [dayjs(), dayjs().add(7,'day')]; <DatePicker.RangePicker value={val} />"
181
+ },
182
+ {
183
+ "issue": "disabledDate 参数是 Dayjs 对象不是 Date,直接用 Date 方法会报类型错误",
184
+ "wrong": "disabledDate={(cur) => cur.getTime() < Date.now()} // Dayjs 没有 getTime() 方法",
185
+ "right": "disabledDate={(cur) => cur && cur.isBefore(dayjs().startOf('day'))} // 使用 Dayjs 的 isBefore / isAfter"
186
+ }
187
+ ],
188
+ "mapping": {
189
+ "realComponent": "DatePicker",
190
+ "adapter": null
191
+ }
192
+ }
@@ -1,12 +1,6 @@
1
- import { default as React } from 'react';
2
1
  import { GenerateConfig } from 'rc-picker/lib/generate/index';
3
2
  import { RangePickerProps } from '.';
4
- import { RangeValue } from 'rc-picker/lib/interface';
5
3
  import { PickerComponentClass } from './interface';
6
- interface PresetDate<T> {
7
- label: React.ReactNode;
8
- value: T | (() => T);
9
- }
10
4
  export default function generateRangePicker<DateType>(generateConfig: GenerateConfig<DateType>): PickerComponentClass<RangePickerProps<DateType> & {
11
5
  /**
12
6
  * @deprecated `dropdownClassName` is deprecated which will be removed in next major
@@ -14,6 +8,4 @@ export default function generateRangePicker<DateType>(generateConfig: GenerateCo
14
8
  */
15
9
  dropdownClassName?: string;
16
10
  popupClassName?: string;
17
- presets?: PresetDate<Exclude<RangeValue<DateType>, null>>[];
18
11
  }>;
19
- export {};
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../../_virtual/jsx-runtime.js"),o=require("react"),x=require("clsx"),ee=require("../../node_modules/@para-ui/icons/CloseCircleF/index.js"),re=require("../../node_modules/@para-ui/icons/SortRight/index.js"),te=require("../../node_modules/@para-ui/icons/Calendar/index.js"),se=require("../../node_modules/@para-ui/icons/Time/index.js"),ne=require("rc-picker"),s=require("../util.js"),T=require("./index.js"),w=require("../lang/index.js"),oe=require("../../GlobalContext/index.js"),ae=require("../../Label/index.js"),le=require("../../HelperText/index.js"),y=require("../../GlobalContext/constant.js"),ie=require("@snack-kit/lib"),I=require("../PickerTag.js"),ue=require("../../Tooltip/index.js");function ce(z){return o.forwardRef((i,L)=>{const{className:O,size:xe,bordered:_=!0,placeholder:H,error:u=!1,helperText:M,style:S,value:V,defaultValue:F,label:d="",labelTooltip:A,required:f=!1,shortcuts:m,presets:j,ranges:de,shortcutsPlacement:R="left",getPopupContainer:D,isolationPopupOnHide:U=!1,disabled:g,disabledTooltip:P,...c}=i,{format:p,showTime:h,picker:n,use12Hours:B}=i,l=o.useRef(null),b=o.useRef(),C=o.useMemo(()=>ie.UUID(),[]),t=`${y.$prefixCls}-picker`,{language:$,locale:q}=o.useContext(oe.default);let E={};if(q){const e=q[$||"zh"];e&&(E=e.DatePicker)}const G=w.default[$||"zh"]||w.default.zh,v=s.mergedLocale(E,G);let a={};a={...a,...h?s.getTimeProps({format:p,picker:n,...h}):{},...n==="time"?s.getTimeProps({format:p,...i,picker:n}):{}},a.style&&delete a.style;const k=e=>{if(!Array.isArray(e))return e;const Y=p??T.pickerFormatMap[n];return e.map(Z=>s.formatPickerValue(Z,Y))},J=()=>d||f?r.jsxRuntimeExports.jsx(ae.default,{label:d,required:f,...A}):null;o.useImperativeHandle(L,()=>({focus:()=>l.current?.focus(),blur:()=>l.current?.blur()}));const N=j?j.map(e=>({label:typeof e.label=="string"?r.jsxRuntimeExports.jsx(I.default,{children:e.label}):e.label,value:e.value})):m?m.map(e=>({label:typeof e.text=="string"?r.jsxRuntimeExports.jsx(I.default,{children:e.text}):e.text,value:typeof e.value=="function"?e.value():e.value})):[],K=!!N?.length,Q=x(C,c.dropdownClassName,`${y.$prefixCls}-scrollbar-small`,{[`${t}-use12Hours`]:B,[`${t}-presets-${R}`]:K}),W=e=>s.getPopupContainer(e,D,b),X=e=>{c.onOpenChange?.(e),U&&s.isolationPopupPollution(e,C),e||l.current?.blur()};return(()=>{const e=r.jsxRuntimeExports.jsxs("div",{ref:b,className:x(`${t}-wrapper`,O),style:S,children:[J(),r.jsxRuntimeExports.jsx(ne.RangePicker,{separator:r.jsxRuntimeExports.jsx("span",{"aria-label":"to",className:`${t}-separator`,children:r.jsxRuntimeExports.jsx(re.SortRight,{})}),ref:l,placeholder:s.getRangePlaceholder(n,v,H),suffixIcon:n==="time"?r.jsxRuntimeExports.jsx(se.Time,{}):r.jsxRuntimeExports.jsx(te.Calendar,{className:"picker-icon"}),clearIcon:r.jsxRuntimeExports.jsx(ee.CloseCircleF,{}),allowClear:!0,disabled:g,...c,...a,defaultValue:k(F),value:k(V),presets:N,className:x({[`${t}-borderless`]:!_,[`${t}-error`]:u,[`${t}-shortcuts-${R}`]:u}),locale:v.lang,prefixCls:t,generateConfig:z,prevIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-prev-icon`}),nextIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-next-icon`}),superPrevIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-super-prev-icon`}),superNextIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-super-next-icon`}),components:T.Components,direction:"ltr",dropdownClassName:Q,getPopupContainer:W,onOpenChange:X}),r.jsxRuntimeExports.jsx(le.default,{error:u,helperText:M})]});return g&&P?r.jsxRuntimeExports.jsx(ue.Tooltip,{disabled:!0,...P,children:e}):e})()})}exports.default=ce;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../../_virtual/jsx-runtime.js"),o=require("react"),p=require("clsx"),te=require("../../node_modules/@para-ui/icons/CloseCircleF/index.js"),se=require("../../node_modules/@para-ui/icons/SortRight/index.js"),ne=require("../../node_modules/@para-ui/icons/Calendar/index.js"),oe=require("../../node_modules/@para-ui/icons/Time/index.js"),ae=require("rc-picker"),s=require("../util.js"),T=require("./index.js"),w=require("../lang/index.js"),le=require("../../GlobalContext/index.js"),ie=require("../../Label/index.js"),ue=require("../../HelperText/index.js"),y=require("../../GlobalContext/constant.js"),ce=require("@snack-kit/lib"),I=require("../PickerTag.js"),pe=require("../../Tooltip/index.js");function xe(z){return o.forwardRef((i,L)=>{const{className:O,size:fe,bordered:_=!0,placeholder:H,error:u=!1,helperText:M,style:S,value:V,defaultValue:F,label:x="",labelTooltip:A,required:d=!1,shortcuts:f,presets:m,ranges:me,shortcutsPlacement:j="left",getPopupContainer:D,isolationPopupOnHide:U=!1,disabled:R,disabledTooltip:g,dropdownClassName:B,popupClassName:G,...P}=i,{format:c,showTime:h,picker:n,use12Hours:J}=i,l=o.useRef(null),b=o.useRef(null),C=o.useMemo(()=>ce.UUID(),[]),t=`${y.$prefixCls}-picker`,{language:$,locale:q}=o.useContext(le.default);let E={};if(q){const e=q[$||"zh"];e&&(E=e.DatePicker)}const K=w.default[$||"zh"]||w.default.zh,v=s.mergedLocale(E,K);let a={};a={...a,...h?s.getTimeProps({format:c,picker:n,...h}):{},...n==="time"?s.getTimeProps({format:c,...i,picker:n}):{}},a.style&&delete a.style;const k=e=>{if(!Array.isArray(e))return e;const ee=c??T.pickerFormatMap[n];return e.map(re=>s.formatPickerValue(re,ee))},Q=()=>x||d?r.jsxRuntimeExports.jsx(ie.default,{label:x,required:d,...A}):null;o.useImperativeHandle(L,()=>({focus:()=>l.current?.focus(),blur:()=>l.current?.blur()}));const N=m?m.map(e=>({label:typeof e.label=="string"?r.jsxRuntimeExports.jsx(I.default,{children:e.label}):e.label,value:e.value})):f?f.map(e=>({label:typeof e.text=="string"?r.jsxRuntimeExports.jsx(I.default,{children:e.text}):e.text,value:typeof e.value=="function"?e.value():e.value})):[],W=!!N?.length,X=p(C,B,G,`${y.$prefixCls}-scrollbar-small`,{[`${t}-use12Hours`]:J,[`${t}-presets-${j}`]:W}),Y=e=>s.getPopupContainer(e,D,b),Z=e=>{P.onOpenChange?.(e),U&&s.isolationPopupPollution(e,C),e||l.current?.blur()};return(()=>{const e=r.jsxRuntimeExports.jsxs("div",{ref:b,className:p(`${t}-wrapper`,O),style:S,children:[Q(),r.jsxRuntimeExports.jsx(ae.RangePicker,{separator:r.jsxRuntimeExports.jsx("span",{"aria-label":"to",className:`${t}-separator`,children:r.jsxRuntimeExports.jsx(se.SortRight,{})}),ref:l,placeholder:s.getRangePlaceholder(n,v,H),suffixIcon:n==="time"?r.jsxRuntimeExports.jsx(oe.Time,{}):r.jsxRuntimeExports.jsx(ne.Calendar,{className:"picker-icon"}),clearIcon:r.jsxRuntimeExports.jsx(te.CloseCircleF,{}),allowClear:!0,disabled:R,...P,...a,defaultValue:k(F),value:k(V),presets:N,className:p({[`${t}-borderless`]:!_,[`${t}-error`]:u,[`${t}-shortcuts-${j}`]:u}),locale:v.lang,prefixCls:t,generateConfig:z,prevIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-prev-icon`}),nextIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-next-icon`}),superPrevIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-super-prev-icon`}),superNextIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-super-next-icon`}),components:T.Components,direction:"ltr",dropdownClassName:X,getPopupContainer:Y,onOpenChange:Z}),r.jsxRuntimeExports.jsx(ue.default,{error:u,helperText:M})]});return R&&g?r.jsxRuntimeExports.jsx(pe.Tooltip,{disabled:!0,...g,children:e}):e})()})}exports.default=xe;
2
2
  //# sourceMappingURL=generateRangePicker.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../../_virtual/jsx-runtime.js"),l=require("react"),x=require("clsx"),se=require("rc-picker"),ne=require("../../node_modules/@para-ui/icons/CloseCircleF/index.js"),oe=require("../../node_modules/@para-ui/icons/Calendar/index.js"),ie=require("../../node_modules/@para-ui/icons/Time/index.js"),s=require("../util.js"),E=require("./index.js"),N=require("../lang/index.js"),le=require("../../GlobalContext/index.js"),ae=require("../../Label/index.js"),ce=require("../../HelperText/index.js"),w=require("../../GlobalContext/constant.js"),ue=require("@snack-kit/lib"),pe=require("../PickerTag.js"),de=require("../../Tooltip/index.js");function xe(y){function n(c,me){return l.forwardRef((a,M)=>{const{className:V,size:Pe,bordered:D=!0,placeholder:F,error:m=!1,helperText:S,style:U,value:G,defaultValue:Q,label:f="",labelTooltip:W,required:P=!1,presets:j,getPopupContainer:Y,isolationPopupOnHide:A=!1,disabled:g,disabledTooltip:k,...u}=a,p=l.useRef(null),R=l.useRef(),{format:d,showTime:C,use12Hours:B}=a,t=`${w.$prefixCls}-picker`,b=l.useMemo(()=>ue.UUID(),[]),{language:h,locale:q}=l.useContext(le.default);let $={};if(q){const e=q[h||"zh"];e&&($=e.DatePicker)}const J=N.default[h||"zh"]||N.default.zh,T=s.mergedLocale($,J),K={showToday:!0};let o={};c&&(o.picker=c);const i=c||a.picker;o={...o,...C?s.getTimeProps({format:d,picker:i,...C}):{},...i==="time"?s.getTimeProps({format:d,...a,picker:i}):{}},o.style&&delete o.style;const v=e=>{const te=d??E.pickerFormatMap[i];return s.formatPickerValue(e,te)},X=()=>f||P?r.jsxRuntimeExports.jsx(ae.default,{label:f,required:P,...W}):null;l.useImperativeHandle(M,()=>({focus:()=>p.current?.focus(),blur:()=>p.current?.blur()}));const Z=j?j.map(e=>({label:typeof e.label=="string"?r.jsxRuntimeExports.jsx(pe.default,{children:e.label}):e.label,value:e.value})):[],ee=e=>s.getPopupContainer(e,Y,R),re=e=>{u.onOpenChange?.(e),A&&s.isolationPopupPollution(e,b)};return(()=>{const e=r.jsxRuntimeExports.jsxs("div",{ref:R,className:x(`${t}-wrapper`,V),style:U,children:[X(),r.jsxRuntimeExports.jsx(se,{ref:p,placeholder:s.getPlaceholder(i,T,F),suffixIcon:i==="time"?r.jsxRuntimeExports.jsx(ie.Time,{}):r.jsxRuntimeExports.jsx(oe.Calendar,{}),clearIcon:r.jsxRuntimeExports.jsx(ne.CloseCircleF,{}),allowClear:!0,disabled:g,...K,...u,...o,defaultValue:v(Q),value:v(G),locale:T.lang,className:x({[`${t}-borderless`]:!D,[`${t}-error`]:m}),prefixCls:t,presets:Z,generateConfig:y,prevIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-prev-icon`}),nextIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-next-icon`}),superPrevIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-super-prev-icon`}),superNextIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-super-next-icon`}),components:E.Components,direction:"ltr",dropdownClassName:x(b,u.dropdownClassName,B&&`${t}-use12Hours`,`${w.$prefixCls}-scrollbar-small`),getPopupContainer:ee,onOpenChange:re}),r.jsxRuntimeExports.jsx(ce.default,{error:m,helperText:S})]});return g&&k?r.jsxRuntimeExports.jsx(de.Tooltip,{disabled:!0,...k,children:e}):e})()})}const I=n(),z=n("week"),L=n("month"),O=n("year"),_=n("time"),H=n("quarter");return{DatePicker:I,WeekPicker:z,MonthPicker:L,YearPicker:O,TimePicker:_,QuarterPicker:H}}exports.default=xe;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../../_virtual/jsx-runtime.js"),l=require("react"),x=require("clsx"),se=require("rc-picker"),ne=require("../../node_modules/@para-ui/icons/CloseCircleF/index.js"),oe=require("../../node_modules/@para-ui/icons/Calendar/index.js"),ie=require("../../node_modules/@para-ui/icons/Time/index.js"),s=require("../util.js"),E=require("./index.js"),N=require("../lang/index.js"),le=require("../../GlobalContext/index.js"),ae=require("../../Label/index.js"),ce=require("../../HelperText/index.js"),w=require("../../GlobalContext/constant.js"),ue=require("@snack-kit/lib"),pe=require("../PickerTag.js"),de=require("../../Tooltip/index.js");function xe(y){function n(c,me){return l.forwardRef((a,M)=>{const{className:V,size:Pe,bordered:D=!0,placeholder:F,error:m=!1,helperText:S,style:U,value:G,defaultValue:Q,label:f="",labelTooltip:W,required:P=!1,presets:j,getPopupContainer:Y,isolationPopupOnHide:A=!1,disabled:g,disabledTooltip:k,...u}=a,p=l.useRef(null),R=l.useRef(null),{format:d,showTime:C,use12Hours:B}=a,t=`${w.$prefixCls}-picker`,b=l.useMemo(()=>ue.UUID(),[]),{language:h,locale:q}=l.useContext(le.default);let $={};if(q){const e=q[h||"zh"];e&&($=e.DatePicker)}const J=N.default[h||"zh"]||N.default.zh,T=s.mergedLocale($,J),K={showToday:!0};let o={};c&&(o.picker=c);const i=c||a.picker;o={...o,...C?s.getTimeProps({format:d,picker:i,...C}):{},...i==="time"?s.getTimeProps({format:d,...a,picker:i}):{}},o.style&&delete o.style;const v=e=>{const te=d??E.pickerFormatMap[i];return s.formatPickerValue(e,te)},X=()=>f||P?r.jsxRuntimeExports.jsx(ae.default,{label:f,required:P,...W}):null;l.useImperativeHandle(M,()=>({focus:()=>p.current?.focus(),blur:()=>p.current?.blur()}));const Z=j?j.map(e=>({label:typeof e.label=="string"?r.jsxRuntimeExports.jsx(pe.default,{children:e.label}):e.label,value:e.value})):[],ee=e=>s.getPopupContainer(e,Y,R),re=e=>{u.onOpenChange?.(e),A&&s.isolationPopupPollution(e,b)};return(()=>{const e=r.jsxRuntimeExports.jsxs("div",{ref:R,className:x(`${t}-wrapper`,V),style:U,children:[X(),r.jsxRuntimeExports.jsx(se,{ref:p,placeholder:s.getPlaceholder(i,T,F),suffixIcon:i==="time"?r.jsxRuntimeExports.jsx(ie.Time,{}):r.jsxRuntimeExports.jsx(oe.Calendar,{}),clearIcon:r.jsxRuntimeExports.jsx(ne.CloseCircleF,{}),allowClear:!0,disabled:g,...K,...u,...o,defaultValue:v(Q),value:v(G),locale:T.lang,className:x({[`${t}-borderless`]:!D,[`${t}-error`]:m}),prefixCls:t,presets:Z,generateConfig:y,prevIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-prev-icon`}),nextIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-next-icon`}),superPrevIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-super-prev-icon`}),superNextIcon:r.jsxRuntimeExports.jsx("span",{className:`${t}-super-next-icon`}),components:E.Components,direction:"ltr",dropdownClassName:x(b,u.dropdownClassName,B&&`${t}-use12Hours`,`${w.$prefixCls}-scrollbar-small`),getPopupContainer:ee,onOpenChange:re}),r.jsxRuntimeExports.jsx(ce.default,{error:m,helperText:S})]});return g&&k?r.jsxRuntimeExports.jsx(de.Tooltip,{disabled:!0,...k,children:e}):e})()})}const I=n(),z=n("week"),L=n("month"),O=n("year"),_=n("time"),H=n("quarter");return{DatePicker:I,WeekPicker:z,MonthPicker:L,YearPicker:O,TimePicker:_,QuarterPicker:H}}exports.default=xe;
2
2
  //# sourceMappingURL=generateSinglePicker.js.map
@@ -5,6 +5,7 @@ import { RangePickerBaseProps as RCRangePickerBaseProps, RangePickerDateProps as
5
5
  import { Locale as RcPickerLocale } from 'rc-picker/lib/interface';
6
6
  import { default as PickerButton } from '../PickerButton';
7
7
  import { default as PickerTag } from '../PickerTag';
8
+ import { PresetDate } from './generateSinglePicker';
8
9
  import { Dayjs } from 'dayjs';
9
10
  import { LabelTooltipProps } from '../../Label';
10
11
  import { TooltipProps } from '../../Tooltip';
@@ -89,18 +90,24 @@ export type RangePickerProps<DateType> = (RangePickerBaseProps<DateType> | Range
89
90
  shortcuts?: ShortcutType[];
90
91
  /** 预设范围选择面板位置 */
91
92
  shortcutsPlacement?: 'left' | 'right';
93
+ /**
94
+ * 预设时间范围(v5.x 推荐,替换旧 `shortcuts`)。
95
+ * 修复:v5.0.0-beta.14 起从内部 DateRangePickerProps 提升到导出类型,
96
+ * 解决下游业务方 `<RangePicker presets={...}>` TS2322 报错(PARA_UI_BETA13_FEEDBACK P1)。
97
+ */
98
+ presets?: PresetDate<Exclude<RangeValue<DateType>, null>>[];
92
99
  };
93
100
  declare function generatePicker<DateType>(generateConfig: GenerateConfig<DateType>): import('./interface').PickerComponentClass<PickerProps<DateType> & {
94
- presets?: import('./generateSinglePicker').PresetDate<DateType>[] | undefined;
101
+ presets?: PresetDate<DateType>[] | undefined;
95
102
  }, unknown> & {
96
103
  WeekPicker: import('./interface').PickerComponentClass<Omit<PickerProps<DateType> & {
97
- presets?: import('./generateSinglePicker').PresetDate<DateType>[] | undefined;
104
+ presets?: PresetDate<DateType>[] | undefined;
98
105
  }, "picker">, unknown>;
99
106
  MonthPicker: import('./interface').PickerComponentClass<Omit<PickerProps<DateType> & {
100
- presets?: import('./generateSinglePicker').PresetDate<DateType>[] | undefined;
107
+ presets?: PresetDate<DateType>[] | undefined;
101
108
  }, "picker">, unknown>;
102
109
  YearPicker: import('./interface').PickerComponentClass<Omit<PickerProps<DateType> & {
103
- presets?: import('./generateSinglePicker').PresetDate<DateType>[] | undefined;
110
+ presets?: PresetDate<DateType>[] | undefined;
104
111
  }, "picker">, unknown>;
105
112
  RangePicker: React.ComponentClass<RangePickerProps<DateType>>;
106
113
  TimePicker: import('./interface').PickerComponentClass<PickerTimeProps<DateType>, unknown>;
@@ -0,0 +1,142 @@
1
+ {
2
+ "name": "Descriptions",
3
+ "category": "Data Display",
4
+ "description": "描述列表,成组展示多个只读键值对字段,支持折叠展开和边框模式",
5
+ "semantic": {
6
+ "intent": [
7
+ "信息展示",
8
+ "详情查看",
9
+ "键值对展示"
10
+ ],
11
+ "useCases": [
12
+ "用户信息",
13
+ "订单详情",
14
+ "配置概览"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "标准描述列表(无边框,horizontal 布局)"
21
+ },
22
+ "bordered": {
23
+ "meaning": "带边框描述列表(border=true)"
24
+ }
25
+ },
26
+ "states": [
27
+ "default",
28
+ "collapsed",
29
+ "expanded"
30
+ ],
31
+ "idealProps": {
32
+ "list": {
33
+ "type": "DescriptionsListProps[]",
34
+ "description": "列表配置数组;DescriptionsListProps 字段:label(ReactNode 标题)、content(ReactNode 内容)、column(number 占比列数,默认 1)。**不是 antd 风格的 items 字段——para-ui 用 list**"
35
+ },
36
+ "layout": {
37
+ "type": "enum",
38
+ "values": [
39
+ "horizontal",
40
+ "vertical"
41
+ ],
42
+ "default": "horizontal",
43
+ "description": "布局方向;horizontal=标题+内容在同一行,vertical=标题在上内容在下(各占一行)"
44
+ },
45
+ "column": {
46
+ "type": "number",
47
+ "description": "每行显示的列数;horizontal 无 border 默认 4,horizontal 有 border 默认 3,vertical 默认 4;也可通过 list 每项的 column 字段单独设置跨列数"
48
+ },
49
+ "border": {
50
+ "type": "boolean",
51
+ "default": false,
52
+ "description": "是否显示边框(table 形式);border=true 时 collapse 功能不可用(src/Descriptions/index.tsx:235 实证:collapse && !border 才启用折叠)"
53
+ },
54
+ "title": {
55
+ "type": "string | TitleProps",
56
+ "description": "标题;传 string 时自动包装为 TitleProps;传 TitleProps 对象可自定义 title/subtitle/action 等"
57
+ },
58
+ "collapse": {
59
+ "type": "boolean",
60
+ "default": false,
61
+ "description": "是否启用折叠(仅 horizontal 无 border 时有效);启用后显示展开/收起按钮,配合 collapsedHeight 控制收起最小高度"
62
+ },
63
+ "collapsedHeight": {
64
+ "type": "string | number",
65
+ "default": 60,
66
+ "description": "收起状态最小高度(default 60);仅 collapse=true 且 border=false 时生效"
67
+ },
68
+ "defaultOpen": {
69
+ "type": "boolean",
70
+ "default": false,
71
+ "description": "初始是否展开(非受控,仅首次渲染生效)"
72
+ },
73
+ "open": {
74
+ "type": "boolean",
75
+ "description": "受控展开状态;传入后外部可控制展开/收起;不传时组件内部维护状态"
76
+ },
77
+ "onCollapse": {
78
+ "type": "(bol: boolean) => void",
79
+ "description": "折叠状态变化回调;bol=true 表示展开"
80
+ },
81
+ "paddingRight": {
82
+ "type": "number | string",
83
+ "default": 40,
84
+ "description": "横向模式每个字段的右内边距(控制标题与内容间距)"
85
+ },
86
+ "className": {
87
+ "type": "string",
88
+ "description": "根容器自定义类名"
89
+ },
90
+ "style": {
91
+ "type": "React.CSSProperties",
92
+ "description": "根容器自定义样式"
93
+ }
94
+ },
95
+ "do": [
96
+ "用于展示键值对形式的详情数据——list 每项传 { label, content } 即可",
97
+ "根据内容量决定 column:内容较少用 column=2,内容较多用 column=3/4",
98
+ "需要折叠功能:传 collapse=true(仅 horizontal + 无 border 时有效),配合 collapsedHeight 设置预览高度"
99
+ ],
100
+ "dont": [
101
+ "在 Descriptions 中放入可编辑表单——应使用 Form 组件",
102
+ "Label 过长导致排版错乱——label 超过 6 个字时建议配合 AutoTips 或缩短文案",
103
+ "border=true 时传 collapse=true 期望折叠生效——两者互斥(src 实证:border=true 时 collapse 被忽略)",
104
+ "用 items 字段传数据(antd 风格)——para-ui Descriptions 用 list 字段"
105
+ ],
106
+ "events": {
107
+ "onCollapse": {
108
+ "signature": "(bol: boolean) => void",
109
+ "asyncSupported": false,
110
+ "examples": [
111
+ "受控折叠:<Descriptions collapse open={isOpen} onCollapse={(bol) => setIsOpen(bol)} />",
112
+ "仅监听不受控:<Descriptions collapse onCollapse={(bol) => trackEvent(bol ? 'expand' : 'collapse')} />",
113
+ "bol=true 表示用户点击展开,bol=false 表示用户点击收起"
114
+ ],
115
+ "commonMistakes": [
116
+ "期望 border=true 时 onCollapse 触发——collapse 功能在 border=true 时不可用,onCollapse 永不触发",
117
+ "传 open 不传 onCollapse,以为可以完全受控——open prop 变化会同步状态,但不传 onCollapse 用户点击无法反向通知父端"
118
+ ]
119
+ }
120
+ },
121
+ "typescriptPitfalls": [
122
+ {
123
+ "issue": "list 字段名是 list,不是 antd 风格的 items",
124
+ "wrong": "<Descriptions items={[{ label: '姓名', children: '张三' }]} /> // items/children 是 antd 风格,para-ui 不支持",
125
+ "right": "<Descriptions list={[{ label: '姓名', content: '张三' }]} /> // 用 list + content"
126
+ },
127
+ {
128
+ "issue": "border=true 时 collapse 不生效,两者在 TS 层面不互斥但运行时 border 优先级更高",
129
+ "wrong": "<Descriptions border collapse /> // border=true 时 collapse 被忽略,无折叠按钮",
130
+ "right": "<Descriptions collapse /> // 折叠功能只在 border=false(默认)时可用"
131
+ },
132
+ {
133
+ "issue": "title 同时接受 string 和 TitleProps 对象,混用导致 TS 联合类型错误",
134
+ "wrong": "title={{ text: '标题' }} // TitleProps 字段是 title,不是 text",
135
+ "right": "title='标题' // 字符串即可;或 title={{ title: '标题', subtitle: '副标题' }}"
136
+ }
137
+ ],
138
+ "mapping": {
139
+ "realComponent": "Descriptions",
140
+ "adapter": null
141
+ }
142
+ }
@@ -7,7 +7,7 @@ export interface DescriptionsListProps {
7
7
  content?: ReactNode;
8
8
  /** 占比列,默认占比1 */
9
9
  column?: number;
10
- [name: string]: any;
10
+ [name: string]: unknown;
11
11
  }
12
12
  export interface DescriptionsProps {
13
13
  /** 样式class */