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

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 (556) 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/es/AlignBox/component.json +89 -0
  103. package/es/AlignBox/index.css +1 -1
  104. package/es/AlignBox/index.d.ts +6 -2
  105. package/es/AlignBox/index.js +1 -1
  106. package/es/AlignBox/style/index.css +1 -1
  107. package/es/Anchor/anchorMenu/index.d.ts +2 -1
  108. package/es/Anchor/anchorMenu/index.js +36 -33
  109. package/es/Anchor/component.json +130 -0
  110. package/es/Anchor/index.js +50 -47
  111. package/es/Anchor/type.d.ts +8 -4
  112. package/es/Argv/component.json +216 -0
  113. package/es/Argv/index.d.ts +5 -6
  114. package/es/AutoBox/component.json +133 -0
  115. package/es/AutoBox/index.d.ts +3 -3
  116. package/es/AutoBox/index.js +1 -1
  117. package/es/AutoBox/protal.d.ts +2 -2
  118. package/es/AutoBox/protal.js +32 -29
  119. package/es/AutoButton/component.json +109 -0
  120. package/es/AutoButton/index.js +1 -1
  121. package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  122. package/es/AutoTips/autoTipsMultiline/index.js +1 -1
  123. package/es/AutoTips/component.json +121 -0
  124. package/es/Badge/component.json +92 -0
  125. package/es/Breadcrumbs/component.json +142 -0
  126. package/es/Breadcrumbs/index.js +1 -1
  127. package/es/Button/SplitButton.d.ts +2 -2
  128. package/es/Button/component.json +168 -0
  129. package/es/Button/index.js +44 -44
  130. package/es/ButtonGroup/component.json +132 -0
  131. package/es/ButtonGroup/index.d.ts +1 -1
  132. package/es/Card/component.json +162 -0
  133. package/es/Card/index.d.ts +2 -2
  134. package/es/Card/index.js +2 -2
  135. package/es/Carousel/component.json +142 -0
  136. package/es/Carousel/index.d.ts +1 -1
  137. package/es/Cascader/component.json +196 -0
  138. package/es/Cascader/hooks/useEntities.js +7 -7
  139. package/es/Cascader/interface.d.ts +1 -0
  140. package/es/Cascader/utils/commonUtil.d.ts +1 -1
  141. package/es/Cascader/utils/commonUtil.js +16 -16
  142. package/es/Cascader/utils/treeUtil.d.ts +14 -5
  143. package/es/Cascader/utils/treeUtil.js +1 -1
  144. package/es/Checkbox/component.json +138 -0
  145. package/es/CheckboxGroup/component.json +152 -0
  146. package/es/CodeEditor/component.json +189 -0
  147. package/es/CodeEditor/index.d.ts +10 -9
  148. package/es/Collapse/component.json +166 -0
  149. package/es/Collapse/index.d.ts +1 -1
  150. package/es/Collapse/index.js +23 -22
  151. package/es/CollapseBox/component.json +84 -0
  152. package/es/CollapseLayout/component.json +155 -0
  153. package/es/ColorPicker/component.json +142 -0
  154. package/es/ComboSelect/component.json +181 -0
  155. package/es/ComboSelect/index.js +73 -68
  156. package/es/ComboSelect/interface.d.ts +2 -2
  157. package/es/ComboSelect/utils.d.ts +3 -3
  158. package/es/ComboSelect/utils.js +1 -1
  159. package/es/Container/component.json +111 -0
  160. package/es/ContentBox/component.json +81 -0
  161. package/es/CopyText/component.json +118 -0
  162. package/es/CycleSelector/component.json +98 -0
  163. package/es/CycleSelector/index.js +14 -13
  164. package/es/DatePicker/component.json +192 -0
  165. package/es/DatePicker/generatePicker/generateRangePicker.js +10 -10
  166. package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  167. package/es/Descriptions/component.json +142 -0
  168. package/es/Descriptions/index.d.ts +1 -1
  169. package/es/Desktop/component.json +171 -0
  170. package/es/DragVerify/component.json +114 -0
  171. package/es/DragVerify/index.js +19 -19
  172. package/es/Drawer/component.json +200 -0
  173. package/es/Drawer/index.js +86 -86
  174. package/es/Drawer/interface.d.ts +1 -1
  175. package/es/Drawer/util.d.ts +1 -6
  176. package/es/Drawer/util.js +9 -6
  177. package/es/Dropdown/component.json +147 -0
  178. package/es/DynamicMultiBox/component.json +278 -0
  179. package/es/DynamicMultiBox/formItem.d.ts +1 -1
  180. package/es/DynamicMultiBox/rowForm.d.ts +2 -2
  181. package/es/Empty/component.json +123 -0
  182. package/es/Empty/index.css +1 -1
  183. package/es/Empty/index.d.ts +2 -2
  184. package/es/Empty/index.js +27 -26
  185. package/es/Empty/style/index.css +1 -1
  186. package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  187. package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
  188. package/es/FieldForm/Form.d.ts +2 -2
  189. package/es/FieldForm/FormList.d.ts +2 -2
  190. package/es/FieldForm/component.json +196 -0
  191. package/es/FieldForm/context.d.ts +5 -1
  192. package/es/FieldForm/context.js +2 -2
  193. package/es/FieldForm/hooks/useForm.d.ts +4 -3
  194. package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
  195. package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  196. package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
  197. package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
  198. package/es/FieldForm/hooks/useItemRef.js +6 -6
  199. package/es/Form/component.json +161 -0
  200. package/es/Form/index.d.ts +52 -49
  201. package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  202. package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
  203. package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  204. package/es/FormItem/compoments/formFile/index.js +8 -8
  205. package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  206. package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
  207. package/es/FormItem/component.json +171 -0
  208. package/es/FormItem/index.d.ts +5 -5
  209. package/es/FormItem/index.js +23 -23
  210. package/es/FormItem/itemType.js +1 -1
  211. package/es/FunctionModal/component.json +197 -0
  212. package/es/FunctionModal/dialog.d.ts +1 -1
  213. package/es/FunctionModal/modalContext.d.ts +4 -1
  214. package/es/Help/component.json +118 -0
  215. package/es/HelperText/component.json +126 -0
  216. package/es/Image/component.json +165 -0
  217. package/es/InputCode/component.json +191 -0
  218. package/es/InputCode/index.d.ts +2 -2
  219. package/es/InputLang/component.json +205 -0
  220. package/es/InputLang/index.js +1 -1
  221. package/es/InputNumber/component.json +162 -0
  222. package/es/Label/component.json +126 -0
  223. package/es/Label/index.d.ts +2 -2
  224. package/es/Loading/component.json +91 -0
  225. package/es/Menu/component.json +180 -0
  226. package/es/Message/component.json +246 -0
  227. package/es/Message/index.d.ts +2 -2
  228. package/es/Message/index.js +2 -2
  229. package/es/Modal/Confirm/index.d.ts +1 -1
  230. package/es/Modal/component.json +277 -0
  231. package/es/Modal/index.d.ts +85 -5
  232. package/es/Modal/index.js +159 -122
  233. package/es/Modal/interface.d.ts +1 -0
  234. package/es/MultiBox/component.json +216 -0
  235. package/es/MultiBox/index.js +19 -14
  236. package/es/Notification/component.json +184 -0
  237. package/es/OperateBtn/component.json +134 -0
  238. package/es/OperateBtn/index.d.ts +3 -3
  239. package/es/PageHeader/component.json +112 -0
  240. package/es/Pagination/component.json +181 -0
  241. package/es/Pagination/index.js +15 -15
  242. package/es/PasswordRules/component.json +105 -0
  243. package/es/PasswordRules/index.d.ts +4 -4
  244. package/es/PopConfirm/component.json +227 -0
  245. package/es/PopConfirm/index.d.ts +1 -1
  246. package/es/PopConfirm/index.js +1 -1
  247. package/es/PopMenu/component.json +131 -0
  248. package/es/PopMenu/hooks.d.ts +1 -1
  249. package/es/PopMenu/index.js +8 -8
  250. package/es/Popover/component.json +165 -0
  251. package/es/Popover/index.js +1 -1
  252. package/es/Progress/component.json +161 -0
  253. package/es/Prompt/component.json +144 -0
  254. package/es/Querying/component.json +96 -0
  255. package/es/Querying/index.css +1 -1
  256. package/es/Querying/index.d.ts +2 -2
  257. package/es/Querying/index.js +20 -19
  258. package/es/Querying/style/index.css +1 -1
  259. package/es/QuickReply/component.json +129 -0
  260. package/es/QuickReply/index.d.ts +1 -1
  261. package/es/Radio/component.json +136 -0
  262. package/es/RadioGroup/component.json +149 -0
  263. package/es/RangeInput/component.json +198 -0
  264. package/es/RangeInput/index.js +1 -1
  265. package/es/Result/component.json +104 -0
  266. package/es/ScrollBar/component.json +115 -0
  267. package/es/Search/component.json +177 -0
  268. package/es/Search/index.d.ts +1 -1
  269. package/es/Select/component.json +244 -0
  270. package/es/Select/index.js +113 -113
  271. package/es/SelectInput/component.json +184 -0
  272. package/es/Selector/component.json +203 -0
  273. package/es/Selector/index.js +28 -27
  274. package/es/Selector/interface.d.ts +1 -1
  275. package/es/Selector/selectorMain/index.js +2 -2
  276. package/es/Selector/selectorNode/index.js +1 -1
  277. package/es/Selector/util.d.ts +2 -2
  278. package/es/SelectorPicker/component.json +179 -0
  279. package/es/SelectorPicker/index.d.ts +5 -5
  280. package/es/SelectorPicker/index.js +15 -15
  281. package/es/SingleBox/component.json +151 -0
  282. package/es/SingleBox/index.d.ts +2 -2
  283. package/es/Slider/component.json +181 -0
  284. package/es/SortBox/component.json +108 -0
  285. package/es/Status/component.json +104 -0
  286. package/es/Stepper/component.json +129 -0
  287. package/es/Stepper/index.d.ts +2 -2
  288. package/es/Switch/component.json +207 -0
  289. package/es/Switch/index.css +1 -1
  290. package/es/Switch/index.d.ts +3 -2
  291. package/es/Switch/index.js +60 -59
  292. package/es/Switch/style/index.css +1 -1
  293. package/es/Table/component.json +547 -0
  294. package/es/Table/index.d.ts +2 -2
  295. package/es/Table/index.js +414 -414
  296. package/es/Table/interface.d.ts +6 -0
  297. package/es/Tabs/component.json +227 -0
  298. package/es/Tag/component.json +221 -0
  299. package/es/Tag/index.css +1 -1
  300. package/es/Tag/index.d.ts +1 -1
  301. package/es/Tag/index.js +20 -20
  302. package/es/Tag/style/index.css +1 -1
  303. package/es/TextEditor/component.json +186 -0
  304. package/es/TextEditor/index.d.ts +5 -5
  305. package/es/TextField/component.json +290 -0
  306. package/es/TextField/index.d.ts +2 -2
  307. package/es/TimePicker/component.json +176 -0
  308. package/es/Timeline/component.json +110 -0
  309. package/es/Title/component.json +156 -0
  310. package/es/ToggleButton/component.json +153 -0
  311. package/es/Tooltip/component.json +176 -0
  312. package/es/Tooltip/index.js +58 -53
  313. package/es/Tooltip/interface.d.ts +14 -1
  314. package/es/Tooltip/utils.js +6 -6
  315. package/es/Transfer/component.json +157 -0
  316. package/es/Tree/component.json +512 -0
  317. package/es/Upload/component.json +450 -0
  318. package/es/Utils/type.d.ts +0 -2
  319. package/es/index.d.ts +2 -0
  320. package/es/index.js +1 -1
  321. package/es/locale/en_US.d.ts +361 -0
  322. package/es/locale/en_US.js +364 -0
  323. package/es/locale/index.d.ts +1 -723
  324. package/es/locale/index2.js +10 -0
  325. package/es/locale/zh_CN.d.ts +361 -0
  326. package/es/locale/zh_CN.js +364 -0
  327. package/lib/AlignBox/component.json +89 -0
  328. package/lib/AlignBox/index.css +1 -1
  329. package/lib/AlignBox/index.d.ts +6 -2
  330. package/lib/AlignBox/index.js +1 -1
  331. package/lib/AlignBox/style/index.css +1 -1
  332. package/lib/Anchor/anchorMenu/index.d.ts +2 -1
  333. package/lib/Anchor/anchorMenu/index.js +1 -1
  334. package/lib/Anchor/component.json +130 -0
  335. package/lib/Anchor/index.js +1 -1
  336. package/lib/Anchor/type.d.ts +8 -4
  337. package/lib/Argv/component.json +216 -0
  338. package/lib/Argv/index.d.ts +5 -6
  339. package/lib/AutoBox/component.json +133 -0
  340. package/lib/AutoBox/index.d.ts +3 -3
  341. package/lib/AutoBox/index.js +1 -1
  342. package/lib/AutoBox/protal.d.ts +2 -2
  343. package/lib/AutoBox/protal.js +1 -1
  344. package/lib/AutoButton/component.json +109 -0
  345. package/lib/AutoButton/index.js +1 -1
  346. package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  347. package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
  348. package/lib/AutoTips/component.json +121 -0
  349. package/lib/Badge/component.json +92 -0
  350. package/lib/Breadcrumbs/component.json +142 -0
  351. package/lib/Breadcrumbs/index.js +1 -1
  352. package/lib/Button/SplitButton.d.ts +2 -2
  353. package/lib/Button/component.json +168 -0
  354. package/lib/Button/index.js +1 -1
  355. package/lib/ButtonGroup/component.json +132 -0
  356. package/lib/ButtonGroup/index.d.ts +1 -1
  357. package/lib/Card/component.json +162 -0
  358. package/lib/Card/index.d.ts +2 -2
  359. package/lib/Card/index.js +1 -1
  360. package/lib/Carousel/component.json +142 -0
  361. package/lib/Carousel/index.d.ts +1 -1
  362. package/lib/Cascader/component.json +196 -0
  363. package/lib/Cascader/hooks/useEntities.js +1 -1
  364. package/lib/Cascader/interface.d.ts +1 -0
  365. package/lib/Cascader/utils/commonUtil.d.ts +1 -1
  366. package/lib/Cascader/utils/commonUtil.js +1 -1
  367. package/lib/Cascader/utils/treeUtil.d.ts +14 -5
  368. package/lib/Cascader/utils/treeUtil.js +1 -1
  369. package/lib/Checkbox/component.json +138 -0
  370. package/lib/CheckboxGroup/component.json +152 -0
  371. package/lib/CodeEditor/component.json +189 -0
  372. package/lib/CodeEditor/index.d.ts +10 -9
  373. package/lib/Collapse/component.json +166 -0
  374. package/lib/Collapse/index.d.ts +1 -1
  375. package/lib/Collapse/index.js +1 -1
  376. package/lib/CollapseBox/component.json +84 -0
  377. package/lib/CollapseLayout/component.json +155 -0
  378. package/lib/ColorPicker/component.json +142 -0
  379. package/lib/ComboSelect/component.json +181 -0
  380. package/lib/ComboSelect/index.js +1 -1
  381. package/lib/ComboSelect/interface.d.ts +2 -2
  382. package/lib/ComboSelect/utils.d.ts +3 -3
  383. package/lib/ComboSelect/utils.js +1 -1
  384. package/lib/Container/component.json +111 -0
  385. package/lib/ContentBox/component.json +81 -0
  386. package/lib/CopyText/component.json +118 -0
  387. package/lib/CycleSelector/component.json +98 -0
  388. package/lib/CycleSelector/index.js +1 -1
  389. package/lib/DatePicker/component.json +192 -0
  390. package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
  391. package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  392. package/lib/Descriptions/component.json +142 -0
  393. package/lib/Descriptions/index.d.ts +1 -1
  394. package/lib/Desktop/component.json +171 -0
  395. package/lib/DragVerify/component.json +114 -0
  396. package/lib/DragVerify/index.js +1 -1
  397. package/lib/Drawer/component.json +200 -0
  398. package/lib/Drawer/index.js +1 -1
  399. package/lib/Drawer/interface.d.ts +1 -1
  400. package/lib/Drawer/util.d.ts +1 -6
  401. package/lib/Drawer/util.js +1 -1
  402. package/lib/Dropdown/component.json +147 -0
  403. package/lib/DynamicMultiBox/component.json +278 -0
  404. package/lib/DynamicMultiBox/formItem.d.ts +1 -1
  405. package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
  406. package/lib/Empty/component.json +123 -0
  407. package/lib/Empty/index.css +1 -1
  408. package/lib/Empty/index.d.ts +2 -2
  409. package/lib/Empty/index.js +1 -1
  410. package/lib/Empty/style/index.css +1 -1
  411. package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  412. package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
  413. package/lib/FieldForm/Form.d.ts +2 -2
  414. package/lib/FieldForm/FormList.d.ts +2 -2
  415. package/lib/FieldForm/component.json +196 -0
  416. package/lib/FieldForm/context.d.ts +5 -1
  417. package/lib/FieldForm/context.js +1 -1
  418. package/lib/FieldForm/hooks/useForm.d.ts +4 -3
  419. package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
  420. package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  421. package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
  422. package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
  423. package/lib/FieldForm/hooks/useItemRef.js +1 -1
  424. package/lib/Form/component.json +161 -0
  425. package/lib/Form/index.d.ts +52 -49
  426. package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  427. package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
  428. package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  429. package/lib/FormItem/compoments/formFile/index.js +1 -1
  430. package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  431. package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
  432. package/lib/FormItem/component.json +171 -0
  433. package/lib/FormItem/index.d.ts +5 -5
  434. package/lib/FormItem/index.js +1 -1
  435. package/lib/FormItem/itemType.js +1 -1
  436. package/lib/FunctionModal/component.json +197 -0
  437. package/lib/FunctionModal/dialog.d.ts +1 -1
  438. package/lib/FunctionModal/modalContext.d.ts +4 -1
  439. package/lib/Help/component.json +118 -0
  440. package/lib/HelperText/component.json +126 -0
  441. package/lib/Image/component.json +165 -0
  442. package/lib/InputCode/component.json +191 -0
  443. package/lib/InputCode/index.d.ts +2 -2
  444. package/lib/InputLang/component.json +205 -0
  445. package/lib/InputLang/index.js +1 -1
  446. package/lib/InputNumber/component.json +162 -0
  447. package/lib/Label/component.json +126 -0
  448. package/lib/Label/index.d.ts +2 -2
  449. package/lib/Loading/component.json +91 -0
  450. package/lib/Menu/component.json +180 -0
  451. package/lib/Message/component.json +246 -0
  452. package/lib/Message/index.d.ts +2 -2
  453. package/lib/Message/index.js +1 -1
  454. package/lib/Modal/Confirm/index.d.ts +1 -1
  455. package/lib/Modal/component.json +277 -0
  456. package/lib/Modal/index.d.ts +85 -5
  457. package/lib/Modal/index.js +1 -1
  458. package/lib/Modal/interface.d.ts +1 -0
  459. package/lib/MultiBox/component.json +216 -0
  460. package/lib/MultiBox/index.js +1 -1
  461. package/lib/Notification/component.json +184 -0
  462. package/lib/OperateBtn/component.json +134 -0
  463. package/lib/OperateBtn/index.d.ts +3 -3
  464. package/lib/PageHeader/component.json +112 -0
  465. package/lib/Pagination/component.json +181 -0
  466. package/lib/Pagination/index.js +1 -1
  467. package/lib/PasswordRules/component.json +105 -0
  468. package/lib/PasswordRules/index.d.ts +4 -4
  469. package/lib/PopConfirm/component.json +227 -0
  470. package/lib/PopConfirm/index.d.ts +1 -1
  471. package/lib/PopConfirm/index.js +1 -1
  472. package/lib/PopMenu/component.json +131 -0
  473. package/lib/PopMenu/hooks.d.ts +1 -1
  474. package/lib/PopMenu/index.js +1 -1
  475. package/lib/Popover/component.json +165 -0
  476. package/lib/Popover/index.js +1 -1
  477. package/lib/Progress/component.json +161 -0
  478. package/lib/Prompt/component.json +144 -0
  479. package/lib/Querying/component.json +96 -0
  480. package/lib/Querying/index.css +1 -1
  481. package/lib/Querying/index.d.ts +2 -2
  482. package/lib/Querying/index.js +1 -1
  483. package/lib/Querying/style/index.css +1 -1
  484. package/lib/QuickReply/component.json +129 -0
  485. package/lib/QuickReply/index.d.ts +1 -1
  486. package/lib/Radio/component.json +136 -0
  487. package/lib/RadioGroup/component.json +149 -0
  488. package/lib/RangeInput/component.json +198 -0
  489. package/lib/RangeInput/index.js +1 -1
  490. package/lib/Result/component.json +104 -0
  491. package/lib/ScrollBar/component.json +115 -0
  492. package/lib/Search/component.json +177 -0
  493. package/lib/Search/index.d.ts +1 -1
  494. package/lib/Select/component.json +244 -0
  495. package/lib/Select/index.js +1 -1
  496. package/lib/SelectInput/component.json +184 -0
  497. package/lib/Selector/component.json +203 -0
  498. package/lib/Selector/index.js +1 -1
  499. package/lib/Selector/interface.d.ts +1 -1
  500. package/lib/Selector/selectorMain/index.js +1 -1
  501. package/lib/Selector/selectorNode/index.js +1 -1
  502. package/lib/Selector/util.d.ts +2 -2
  503. package/lib/SelectorPicker/component.json +179 -0
  504. package/lib/SelectorPicker/index.d.ts +5 -5
  505. package/lib/SelectorPicker/index.js +1 -1
  506. package/lib/SingleBox/component.json +151 -0
  507. package/lib/SingleBox/index.d.ts +2 -2
  508. package/lib/Slider/component.json +181 -0
  509. package/lib/SortBox/component.json +108 -0
  510. package/lib/Status/component.json +104 -0
  511. package/lib/Stepper/component.json +129 -0
  512. package/lib/Stepper/index.d.ts +2 -2
  513. package/lib/Switch/component.json +207 -0
  514. package/lib/Switch/index.css +1 -1
  515. package/lib/Switch/index.d.ts +3 -2
  516. package/lib/Switch/index.js +1 -1
  517. package/lib/Switch/style/index.css +1 -1
  518. package/lib/Table/component.json +547 -0
  519. package/lib/Table/index.d.ts +2 -2
  520. package/lib/Table/index.js +1 -1
  521. package/lib/Table/interface.d.ts +6 -0
  522. package/lib/Tabs/component.json +227 -0
  523. package/lib/Tag/component.json +221 -0
  524. package/lib/Tag/index.css +1 -1
  525. package/lib/Tag/index.d.ts +1 -1
  526. package/lib/Tag/index.js +1 -1
  527. package/lib/Tag/style/index.css +1 -1
  528. package/lib/TextEditor/component.json +186 -0
  529. package/lib/TextEditor/index.d.ts +5 -5
  530. package/lib/TextField/component.json +290 -0
  531. package/lib/TextField/index.d.ts +2 -2
  532. package/lib/TimePicker/component.json +176 -0
  533. package/lib/Timeline/component.json +110 -0
  534. package/lib/Title/component.json +156 -0
  535. package/lib/ToggleButton/component.json +153 -0
  536. package/lib/Tooltip/component.json +176 -0
  537. package/lib/Tooltip/index.js +1 -1
  538. package/lib/Tooltip/interface.d.ts +14 -1
  539. package/lib/Tooltip/utils.js +1 -1
  540. package/lib/Transfer/component.json +157 -0
  541. package/lib/Tree/component.json +512 -0
  542. package/lib/Upload/component.json +450 -0
  543. package/lib/Utils/type.d.ts +0 -2
  544. package/lib/index.d.ts +2 -0
  545. package/lib/index.js +1 -1
  546. package/lib/locale/en_US.d.ts +361 -0
  547. package/lib/locale/en_US.js +2 -0
  548. package/lib/locale/index.d.ts +1 -723
  549. package/lib/locale/index2.js +2 -0
  550. package/lib/locale/zh_CN.d.ts +361 -0
  551. package/lib/locale/zh_CN.js +2 -0
  552. package/package.json +9 -3
  553. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  554. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
  555. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  556. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
@@ -8,7 +8,7 @@ export type formInputType = 'checkGroup' | 'select' | 'radioGroup' | 'textarea'
8
8
  * 表单操作项的其他配置
9
9
  */
10
10
  interface inputProps {
11
- [name: string]: any;
11
+ [name: string]: unknown;
12
12
  }
13
13
  /**
14
14
  * 校验规则
@@ -73,7 +73,7 @@ export interface FormItemProps {
73
73
  /**
74
74
  * 值改变传出
75
75
  */
76
- change?: (value: any) => void;
76
+ change?: (value: unknown) => void;
77
77
  /**
78
78
  * 不显示 该选项
79
79
  */
@@ -114,7 +114,7 @@ export interface FormItemProps {
114
114
  * 回填数据
115
115
  */
116
116
  backData?: {
117
- [name: string]: any;
117
+ [name: string]: unknown;
118
118
  };
119
119
  /**
120
120
  * 是否启用必填框,不允许输入纯空格
@@ -131,7 +131,7 @@ export interface FormItemProps {
131
131
  /**
132
132
  * 其他配置
133
133
  */
134
- [name: string]: any;
134
+ [name: string]: unknown;
135
135
  /**
136
136
  * 自定义class
137
137
  */
@@ -140,7 +140,7 @@ export interface FormItemProps {
140
140
  * 默认值
141
141
  * 会被backData,回填数据替换
142
142
  */
143
- defaultValue?: any;
143
+ defaultValue?: unknown;
144
144
  /**
145
145
  * 是否是paraui表单组件
146
146
  * */
@@ -1,8 +1,8 @@
1
- import { j as r } from "../_virtual/jsx-runtime.js";
2
- import p from "react";
1
+ import { j as e } from "../_virtual/jsx-runtime.js";
2
+ import h from "react";
3
3
  import L from "./itemType.js";
4
4
  import R from "./errorTips.js";
5
- import h from "clsx";
5
+ import p from "clsx";
6
6
  import k from "../Label/index.js";
7
7
  import { $prefixCls as c } from "../GlobalContext/constant.js";
8
8
  import './index.css';/* empty css */
@@ -30,51 +30,51 @@ const C = {
30
30
  backData: a = {},
31
31
  defaultValue: $,
32
32
  name: t,
33
- hideError: y = !1,
33
+ hideError: j = !1,
34
34
  className: d = "",
35
- labelProps: j,
35
+ labelProps: y,
36
36
  helperTextProps: T,
37
37
  requiredElement: E,
38
38
  disRequiredElement: N = !1
39
39
  } = l;
40
40
  a[t] === void 0 && (a[t] = $);
41
- const m = p.useRef(), I = (e) => {
42
- m.current && m.current(e);
43
- }, g = (e) => s === "vertical" ? /* @__PURE__ */ r.jsx(
41
+ const m = h.useRef(), g = (r) => {
42
+ m.current && m.current(r);
43
+ }, I = (r) => s === "vertical" ? /* @__PURE__ */ e.jsx(
44
44
  "div",
45
45
  {
46
46
  className: `form-content-vertical form-content-vertical-${t}`,
47
47
  style: { width: `calc(100% - ${n}px)` },
48
- children: e.children
48
+ children: r.children
49
49
  }
50
- ) : e.children, q = p.useCallback(() => i ? typeof i == "string" ? i : i(l) : "", [i]), w = () => {
51
- let e = `${c}-form-item ${c}-form-item-${t}`;
52
- return d && (e += ` ${d}`), typeof o == "string" && C[o] && (e += ` ${c}-form-item-${o}`), e;
50
+ ) : /* @__PURE__ */ e.jsx(e.Fragment, { children: r.children }), q = h.useCallback(() => i ? typeof i == "string" ? i : i(l) : "", [i]), w = () => {
51
+ let r = `${c}-form-item ${c}-form-item-${t}`;
52
+ return d && (r += ` ${d}`), typeof o == "string" && C[o] && (r += ` ${c}-form-item-${o}`), r;
53
53
  };
54
- return /* @__PURE__ */ r.jsxs("div", { className: w(), children: [
55
- !v && /* @__PURE__ */ r.jsx(
54
+ return /* @__PURE__ */ e.jsxs("div", { className: w(), children: [
55
+ !v && /* @__PURE__ */ e.jsx(
56
56
  "div",
57
57
  {
58
- className: h(`form-label form-label-${t}`, s === "vertical" && "form-label-vertical"),
58
+ className: p(`form-label form-label-${t}`, s === "vertical" && "form-label-vertical"),
59
59
  style: { width: s === "vertical" ? `${n}px` : "" },
60
- children: /* @__PURE__ */ r.jsx(
60
+ children: /* @__PURE__ */ e.jsx(
61
61
  k,
62
62
  {
63
- className: h("form-labe-text", f && "form-labe-text-hastips"),
63
+ className: p("form-labe-text", f && "form-labe-text-hastips"),
64
64
  label: q(),
65
65
  required: !!l?.rules?.validate?.required,
66
66
  tooltip: f,
67
67
  tooltipIcon: N ? "" : E,
68
- ...j
68
+ ...y
69
69
  }
70
70
  )
71
71
  }
72
72
  ),
73
- /* @__PURE__ */ r.jsxs(g, { children: [
74
- /* @__PURE__ */ r.jsx("div", { className: `form-edit form-edit-${t}`, children: l.children ? l.children : /* @__PURE__ */ r.jsx(
73
+ /* @__PURE__ */ e.jsxs(I, { children: [
74
+ /* @__PURE__ */ e.jsx("div", { className: `form-edit form-edit-${t}`, children: l.children ? l.children : /* @__PURE__ */ e.jsx(
75
75
  L,
76
76
  {
77
- setError: I,
77
+ setError: g,
78
78
  error: !!u,
79
79
  itemType: o,
80
80
  backData: a,
@@ -82,10 +82,10 @@ const C = {
82
82
  setValue: b
83
83
  }
84
84
  ) }),
85
- !y && /* @__PURE__ */ r.jsx("div", { className: `form-error form-error-${t}`, children: /* @__PURE__ */ r.jsx(
85
+ !j && /* @__PURE__ */ e.jsx("div", { className: `form-error form-error-${t}`, children: /* @__PURE__ */ e.jsx(
86
86
  R,
87
87
  {
88
- getSetError: (e) => m.current = e,
88
+ getSetError: (r) => m.current = r,
89
89
  helperTextProps: T,
90
90
  errorMessage: u
91
91
  }
@@ -179,7 +179,7 @@ const Z = (u) => {
179
179
  x,
180
180
  {
181
181
  defaultValue: t[r] || "",
182
- autocomplete: "off",
182
+ autoComplete: "off",
183
183
  error: m,
184
184
  placeholder: c,
185
185
  onChange: (e) => {
@@ -0,0 +1,197 @@
1
+ {
2
+ "name": "FunctionModal",
3
+ "category": "Feedback",
4
+ "description": "函数式弹窗(命令式 Modal)。**通过 React Hook + Promise 工作,不是命令式静态方法**。典型场景:确认对话框、信息提示、错误警告、表单二次确认。**关键:必须先用 FunctionModalProvider 包裹应用根节点,然后在子组件用 useModal() Hook 拿到调用函数,调用返回 Promise<boolean>**",
5
+ "semantic": {
6
+ "intent": [
7
+ "命令式确认弹窗",
8
+ "Promise 驱动的对话流",
9
+ "全局唯一挂载点的临时 Modal"
10
+ ],
11
+ "useCases": [
12
+ "确认删除 / 重要操作前的二次确认",
13
+ "成功 / 失败 / 警告等系统通知",
14
+ "异步操作前的用户确认(checkFunction 拦截)",
15
+ "需要自动关闭 / 超时关闭的提示弹窗(getClose)"
16
+ ],
17
+ "riskLevel": "normal"
18
+ },
19
+ "protocolSummary": "**Hook + Provider + Promise 三件套**。不是 `FunctionModal({...})` 命令式调用!正确流程:\n1. 应用根节点用 `<FunctionModalProvider>{App}</FunctionModalProvider>` 包裹(挂载点,无之则 useModal 拿到 reject Promise)\n2. 子组件 `const modal = useModal();` 拿到调用函数\n3. `modal({ title, content, ... })` 触发,返回 `Promise<boolean>`(确认=true,取消=false)\n4. 用 `.then(ok => ...)` 或 `await modal({...})` 拿用户选择\n5. **不要传 onOk / onCancel**——FDialog 内部已硬接管点击事件,外部回调会被忽略(常见误解 M1)",
20
+ "controlledChannels": {
21
+ "openApi": {
22
+ "entryPoint": "import FunctionModal, { FunctionModalProvider } from '@para-ui/core/FunctionModal'",
23
+ "defaultExport": "FunctionModal 的 default export 实际就是 useModal —— 写 `import { useModal } from '@para-ui/core/FunctionModal'` 或 `import useModal from '@para-ui/core/FunctionModal'` 等效",
24
+ "callPattern": "const modal = useModal(); await modal({ title, content }); // 不是 FunctionModal({...})!",
25
+ "returnValue": "Promise<boolean> —— 用户点确定 resolve(true),点取消 / 关闭按钮 resolve(false)(除非 disCatchOnCancel=true 强制 true)"
26
+ },
27
+ "providerSetup": {
28
+ "where": "应用根节点(App.tsx / index.tsx),通常和路由 Provider 同层",
29
+ "code": "<FunctionModalProvider><App /></FunctionModalProvider>",
30
+ "ifMissing": "useModal() 返回的函数实际是 Promise.reject —— 调用任何 modal({...}) 都立即 reject,且无 UI 弹出"
31
+ },
32
+ "closeAllApi": {
33
+ "import": "import { useClose } from '@para-ui/core/FunctionModal'",
34
+ "signature": "const closeAll = useClose(); closeAll(); // 关闭页面上所有 FunctionModal 实例",
35
+ "useCase": "路由切换 / 全局登出时清空所有遗留弹窗"
36
+ }
37
+ },
38
+ "variants": {
39
+ "default": {
40
+ "meaning": "默认样式(无 variant 切换)"
41
+ }
42
+ },
43
+ "states": [
44
+ "open",
45
+ "closed"
46
+ ],
47
+ "idealProps": {
48
+ "title": {
49
+ "type": "string",
50
+ "description": "弹窗标题(注意 type 是 string,不是 ReactNode—— FDialog 内部把它当 string 传给底层 Modal)"
51
+ },
52
+ "content": {
53
+ "type": "ReactElement",
54
+ "description": "弹窗主体内容(可以是任意 JSX),与 context 字段二选一(context 是早期遗留命名,优先用 content)"
55
+ },
56
+ "context": {
57
+ "type": "ReactElement",
58
+ "description": "等价于 content(早期命名遗留),如果同时传 content 和 context,content 优先"
59
+ },
60
+ "size": {
61
+ "type": "enum",
62
+ "values": [
63
+ "sm",
64
+ "md",
65
+ "lg",
66
+ "auto",
67
+ "fullScreen"
68
+ ],
69
+ "default": "md",
70
+ "description": "弹窗尺寸,透传给底层 Modal 组件"
71
+ },
72
+ "checkFunction": {
73
+ "type": "() => boolean | Promise<boolean>",
74
+ "description": "**用户点确定按钮时先执行此函数,返回 true 才真正关闭弹窗 + resolve(true);返回 false 不关闭(可用于表单校验失败拦截)**。支持异步:return await api.validate()",
75
+ "useCase": "异步校验、二次拦截、表单提交前的服务端检查"
76
+ },
77
+ "getClose": {
78
+ "type": "(close: Function) => void",
79
+ "description": "**回调拿到这个弹窗实例的 close 方法**。用法:`getClose: (close) => { setTimeout(() => close(), 3000); }` 实现定时自动关闭。close 调用等价于用户点取消(resolve(false),除非 disCatchOnCancel)",
80
+ "useCase": "成功提示自动消失 / 外部主动关闭单个实例(不影响其他弹窗)"
81
+ },
82
+ "disCatchOnCancel": {
83
+ "type": "boolean",
84
+ "default": false,
85
+ "description": "**默认 false**:取消 / 关闭按钮触发 resolve(false)。设为 true:取消也 resolve(true)(异常关闭仍按确认处理)",
86
+ "useCase": "非常用,默认就够"
87
+ },
88
+ "ModalProps": {
89
+ "type": "ModalProps",
90
+ "description": "透传给底层 Modal 组件的完整 props,用于调整 mask / okText / cancelText / okButtonProps 等。**注意**:Modal 的 onClose / onOk / onCancel 已被 FDialog 硬接管,在 ModalProps 里写也无效"
91
+ }
92
+ },
93
+ "commonMisconceptions": {
94
+ "M1": {
95
+ "wrong": "把 FunctionModal 当 antd 的 Modal.confirm() 命令式静态方法用: `FunctionModal({ title, content, onOk })` 直接调用",
96
+ "result": "**TS 报错 TS2554 'Expected 0 arguments, but got 1'**——FunctionModal 的 default export 是 useModal Hook(无参函数),不接受参数。R20-R23 ai-test 100% fail 都是这个原因",
97
+ "fix": "改用 Hook 模式: `const modal = useModal(); modal({title, content})`。完整流程见 protocolSummary + completeExample"
98
+ },
99
+ "M2": {
100
+ "wrong": "在 modalOptions 里传 onOk / onCancel: `modal({ title, content, onOk: handleOk, onCancel: handleCancel })`",
101
+ "result": "**外部传的 onOk / onCancel 被 FDialog 内部硬覆盖**(`onCancel={() => onClose(listIndex)}` 强制接管),回调不触发。R20-R23 报告里 4 个 high 困惑都是这个",
102
+ "fix": "用 Promise 返回值: `modal({title, content}).then(ok => ok ? handleOk() : handleCancel())` 或 `const ok = await modal({...}); if (ok) handleOk(); else handleCancel();`"
103
+ },
104
+ "M3": {
105
+ "wrong": "忘记在应用根节点挂 `<FunctionModalProvider>`,直接在某个子组件用 useModal()",
106
+ "result": "**useModal() 拿到的是 Promise.reject 函数**——任何 modal({...}) 调用都立即 reject,且无 UI 弹出,且无报错(Promise reject 默认静默)",
107
+ "fix": "在 App.tsx 或 index.tsx 顶层加 `<FunctionModalProvider>{children}</FunctionModalProvider>` 包裹"
108
+ },
109
+ "M4": {
110
+ "wrong": "想要弹窗自动关闭就给 modalOptions 加 duration / autoClose 字段: `modal({ title, content, duration: 3000 })`",
111
+ "result": "**modalOptions 没有 duration / autoClose 字段**——TS 报错或字段被忽略",
112
+ "fix": "用 getClose 拿到 close handle 后自己定时: `modal({ title, content, getClose: (close) => setTimeout(close, 3000) })`(见 completeExample 的自动关闭用例)"
113
+ },
114
+ "M5": {
115
+ "wrong": "把 title 传 ReactNode: `modal({ title: <span>富文本</span>, content: ... })`",
116
+ "result": "title 的类型签名是 string,传 ReactNode 会渲染异常或 TS 报错",
117
+ "fix": "title 只用纯字符串。富文本标题放到 content 顶部用大字号样式区分"
118
+ }
119
+ },
120
+ "completeExample": "// 1. App 根节点挂 Provider (一次性)\n// App.tsx\nimport { FunctionModalProvider } from '@para-ui/core/FunctionModal';\nconst App: React.FC = () => (\n <FunctionModalProvider>\n <YourRoutesAndPages />\n </FunctionModalProvider>\n);\n\n// 2. 子组件用 useModal + Promise\nimport useModal from '@para-ui/core/FunctionModal';\nimport Button from '@para-ui/core/Button';\n\nconst DeleteButton: React.FC<{ onConfirm: () => void }> = ({ onConfirm }) => {\n const modal = useModal();\n const handleClick = async () => {\n const ok = await modal({\n title: '确认删除',\n content: <span>此操作不可恢复,确定要删除吗?</span>,\n size: 'sm'\n });\n if (ok) onConfirm();\n // 不需要 else 分支,取消时无操作\n };\n return <Button danger onClick={handleClick}>删除</Button>;\n};\n\n// 3. 进阶:自动关闭 + 异步校验\nconst AdvancedDemo: React.FC = () => {\n const modal = useModal();\n const showAutoClose = () => {\n modal({\n title: '操作成功',\n content: '3 秒后自动关闭',\n getClose: (close) => setTimeout(close, 3000)\n });\n };\n const showWithCheck = async () => {\n const ok = await modal({\n title: '提交订单',\n content: '提交后需调用支付接口',\n checkFunction: async () => {\n const result = await api.validatePayment();\n return result.canProceed; // false 时弹窗不关闭\n }\n });\n if (ok) console.log('支付成功');\n };\n return (\n <>\n <Button onClick={showAutoClose}>成功提示</Button>\n <Button onClick={showWithCheck}>带校验的确认</Button>\n </>\n );\n};",
121
+ "do": [
122
+ "**先在 App 根节点挂 `<FunctionModalProvider>` 一次**,然后在任何子组件用 useModal()",
123
+ "**用 Promise 返回值拿用户选择**:`const ok = await modal({...})` 或 `modal({...}).then(ok => ...)`",
124
+ "异步校验拦截关闭:用 `checkFunction: async () => boolean`",
125
+ "自动关闭:`getClose: (close) => setTimeout(close, ms)`",
126
+ "全局清空所有弹窗:`const closeAll = useClose(); closeAll();`(路由切换时调用)"
127
+ ],
128
+ "dont": [
129
+ "**不要**直接调用 `FunctionModal({title, ...})`——它是 Hook,不是命令式函数(M1)",
130
+ "**不要**传 onOk / onCancel——内部硬接管,不会触发(M2)",
131
+ "**不要**忘记挂 FunctionModalProvider——会导致 Promise 静默 reject(M3)",
132
+ "**不要**期望 modalOptions 有 duration / autoClose 字段——用 getClose 实现(M4)",
133
+ "**不要**给 title 传 ReactNode——title 类型是 string(M5)",
134
+ "复杂表单场景请用 Modal 直接控制 open/close,不要用 FunctionModal"
135
+ ],
136
+ "events": {
137
+ "useModal": {
138
+ "signature": "() => (options: modalOptions) => Promise<boolean>",
139
+ "asyncSupported": true,
140
+ "examples": [
141
+ "const modal = useModal(); const ok = await modal({ title: '确认删除', content: <span>操作不可撤销</span> }); if (ok) doDelete(); — 标准 await 用法",
142
+ "modal({ title: '提示', content: '操作完成', getClose: (close) => setTimeout(close, 3000) }) — 自动关闭不需要等待 Promise",
143
+ "const ok = await modal({ title: '提交', content: '...', checkFunction: async () => await api.validate() }); — checkFunction 拦截异步校验"
144
+ ],
145
+ "commonMistakes": [
146
+ "直接调用 FunctionModal({...}) 而不是先 useModal() 再调用——FunctionModal default export 是 Hook 本身,不是可调用函数",
147
+ "在 modalOptions 里传 onOk/onCancel 期望回调——FDialog 内部硬接管,回调不触发,应用 Promise 返回值",
148
+ "忘记在 App 根节点挂 <FunctionModalProvider>——useModal() 返回的函数是 Promise.reject,调用时立即 reject 且无 UI"
149
+ ]
150
+ },
151
+ "useClose": {
152
+ "signature": "() => () => void",
153
+ "asyncSupported": false,
154
+ "examples": [
155
+ "const closeAll = useClose(); closeAll(); — 关闭当前页面所有 FunctionModal 实例",
156
+ "路由切换时调用:useEffect(() => { return () => closeAll(); }, [pathname]); — 离开页面清空遗留弹窗",
157
+ "登出时全局清空:const closeAll = useClose(); onLogout(() => closeAll());"
158
+ ],
159
+ "commonMistakes": [
160
+ "期望 useClose 关闭单个弹窗——useClose 关闭所有实例,关闭单个需用 getClose 拿到单实例 close 函数",
161
+ "在 FunctionModalProvider 外部调用 useClose——useClose 内部引用 setState 模块变量,Provider 未挂载时 setState 为 undefined,调用报错",
162
+ "多次调用 useClose() 拿多个 closeAll 函数——结果等价,均是同一 setState 引用"
163
+ ]
164
+ }
165
+ },
166
+ "typescriptPitfalls": [
167
+ {
168
+ "issue": "FunctionModal default export 是 useModal Hook,不能当命令式函数直接调用",
169
+ "wrong": "import FunctionModal from '@para-ui/core/FunctionModal'; FunctionModal({ title: '确认', content: <p>内容</p> }); // TS2554: Expected 0 arguments, but got 1",
170
+ "right": "import useModal from '@para-ui/core/FunctionModal'; const modal = useModal(); await modal({ title: '确认', content: <p>内容</p> });"
171
+ },
172
+ {
173
+ "issue": "modalOptions.title 类型是 string,不是 ReactNode,传 JSX 会报 TS 错误",
174
+ "wrong": "modal({ title: <span>富文本<b>标题</b></span>, content: <p>内容</p> }); // title 类型签名是 string",
175
+ "right": "modal({ title: '标题', content: <><h3>富文本标题</h3><p>内容</p></> }); // 把富文本放到 content 顶部"
176
+ },
177
+ {
178
+ "issue": "checkFunction 返回 false 不关闭弹窗,但异步返回 void/undefined 等同于 falsy 也不关闭",
179
+ "wrong": "checkFunction={async () => { await doSomething(); }} // 没有 return,隐式返回 undefined → 弹窗不关闭",
180
+ "right": "checkFunction={async () => { await doSomething(); return true; }} // 明确 return true 才关闭"
181
+ },
182
+ {
183
+ "issue": "modalOptions 不包含 duration/autoClose 字段——自动关闭需用 getClose 回调",
184
+ "wrong": "modal({ title: '成功', content: '已保存', duration: 2000 }); // TS2353: duration does not exist in type modalOptions",
185
+ "right": "modal({ title: '成功', content: '已保存', getClose: (close) => setTimeout(close, 2000) }); // 用 getClose + setTimeout 实现"
186
+ },
187
+ {
188
+ "issue": "useModal 在 FunctionModalProvider 外部调用返回的函数立即 reject,无 UI 弹出",
189
+ "wrong": "// 忘记在 App 根包 Provider,子组件直接用 useModal\nconst modal = useModal(); modal({...}); // 静默 reject,Promise rejected 但没有 catch 不报错",
190
+ "right": "// App.tsx 包 Provider 后子组件才能正常用\n<FunctionModalProvider><App /></FunctionModalProvider>"
191
+ }
192
+ ],
193
+ "mapping": {
194
+ "realComponent": "FunctionModal",
195
+ "adapter": null
196
+ }
197
+ }
@@ -4,7 +4,7 @@ import { JsxElement } from 'typescript';
4
4
  /**
5
5
  * 弹窗配置
6
6
  */
7
- export interface modalOptions extends ModalProps {
7
+ export interface modalOptions extends Omit<ModalProps, 'onClose'> {
8
8
  /**
9
9
  * 非正常关闭仍然返回true
10
10
  */
@@ -1,3 +1,4 @@
1
+ import { default as React } from 'react';
1
2
  import { modalOptions } from './dialog';
2
3
  /**
3
4
  * 弹出框组件
@@ -10,5 +11,7 @@ export declare const useModal: () => (options: modalOptions) => Promise<boolean>
10
11
  /**
11
12
  * 函数弹窗组件Provider
12
13
  */
13
- export declare const FunctionModalProvider: ({ children }: any) => import("react/jsx-runtime").JSX.Element;
14
+ export declare const FunctionModalProvider: ({ children }: {
15
+ children?: React.ReactNode;
16
+ }) => import("react/jsx-runtime").JSX.Element;
14
17
  export declare const useClose: () => Function;
@@ -0,0 +1,118 @@
1
+ {
2
+ "name": "Help",
3
+ "category": "Data Display",
4
+ "description": "帮助提示图标组件,hover 触发 Tooltip 展示帮助信息;默认渲染问号图标,支持自定义触发节点",
5
+ "semantic": {
6
+ "intent": [
7
+ "帮助说明",
8
+ "提示信息"
9
+ ],
10
+ "useCases": [
11
+ "字段说明",
12
+ "功能提示",
13
+ "操作指引"
14
+ ],
15
+ "riskLevel": "low"
16
+ },
17
+ "variants": {
18
+ "default": {
19
+ "meaning": "默认样式"
20
+ }
21
+ },
22
+ "states": [
23
+ "default"
24
+ ],
25
+ "idealProps": {
26
+ "title": {
27
+ "type": "NonNullable<ReactNode>",
28
+ "description": "弹层内容(任意 ReactNode)。**⚠️ 类型严格 NonNullable<ReactNode> 排除 null/undefined**;外层 props 用 `React.ReactNode` 直传会撞 TS2322。正确写法:① title={text ?? ''} 兜底 ② props 字段类型收窄为 NonNullable<ReactNode> ③ 父组件提前 narrow。长度为 0 的字符串不显示弹层"
29
+ },
30
+ "children": {
31
+ "type": "ReactNode",
32
+ "description": "自定义触发图标/节点;不传则内置渲染问号图标 <HelpIcon /> 作为默认触发(hover 触发,不支持 click)"
33
+ },
34
+ "placement": {
35
+ "type": "enum",
36
+ "values": [
37
+ "top",
38
+ "top-start",
39
+ "top-end",
40
+ "bottom",
41
+ "bottom-start",
42
+ "bottom-end",
43
+ "left",
44
+ "left-start",
45
+ "left-end",
46
+ "right",
47
+ "right-start",
48
+ "right-end"
49
+ ],
50
+ "default": "top-start",
51
+ "description": "弹层位置:12 档(4 边方位 × 3 对齐)。仅指定方向时推荐用基础值(top/bottom/left/right,中心对齐)"
52
+ },
53
+ "arrow": {
54
+ "type": "boolean",
55
+ "default": true,
56
+ "description": "是否显示指向箭头(连接到触发图标的小三角)"
57
+ },
58
+ "className": {
59
+ "type": "string",
60
+ "description": "外层 <span> 的 className"
61
+ },
62
+ "style": {
63
+ "type": "React.CSSProperties",
64
+ "description": "外层 <span> 的 style"
65
+ }
66
+ },
67
+ "trigger": {
68
+ "method": "hover",
69
+ "description": "触发方式继承自 Tooltip 默认行为:hover 触发元素显示,移开收起;**不支持配置为 click**(需点击场景请用 Popover)"
70
+ },
71
+ "do": [
72
+ "在复杂字段旁提供帮助图标,title 保持简洁(< 50 字)",
73
+ "帮助内容简洁明了",
74
+ "需要点击触发场景时改用 Popover 组件",
75
+ "title 可能为空字符串时组件不渲染 Tooltip 弹层——利用此行为动态控制提示是否出现"
76
+ ],
77
+ "dont": [
78
+ "过度使用帮助图标——每行超过 2 个会造成视觉噪音",
79
+ "帮助内容过长(> 100 字)——改用 Drawer/Modal 展示详情"
80
+ ],
81
+ "events": {
82
+ "onHover": {
83
+ "signature": "继承自 Tooltip TooltipProps(onOpen / onClose)",
84
+ "asyncSupported": false,
85
+ "examples": [
86
+ "Help 自身没有独立事件——交互由底层 Tooltip 管理(hover in → show, hover out → hide)",
87
+ "需要监听 Tooltip 开关状态:透传 Tooltip 的 onOpen/onClose prop(通过 ...restProps 传入)",
88
+ "需要 click 触发:改用 Popover 组件,不要在 Help children 上绑 onClick 期望触发 Tooltip 逻辑"
89
+ ],
90
+ "commonMistakes": [
91
+ "给 children 添加 onClick 期望触发提示弹层——Help 底层 Tooltip 默认 hover,click 不会触发",
92
+ "期望 Help 有 visible/open 受控 prop——请直接用 Tooltip 组件并传自定义 children",
93
+ "期望 title='' 也显示弹层——空字符串 title 不弹出 Tooltip(Tooltip 内部空 title 行为)"
94
+ ]
95
+ }
96
+ },
97
+ "typescriptPitfalls": [
98
+ {
99
+ "issue": "title 类型是 NonNullable<ReactNode>,父组件直传 ReactNode 类型时会触发 TS2322",
100
+ "wrong": "const tip: React.ReactNode = getTooltip(); <Help title={tip} /> // TS2322: Type 'ReactNode' not assignable to NonNullable<ReactNode>(含 null/undefined 分支)",
101
+ "right": "const tip = getTooltip(); <Help title={tip ?? ''} /> // 用 ?? '' 兜底,确保不为 null/undefined"
102
+ },
103
+ {
104
+ "issue": "Help 继承 TooltipProps(Omit children),不能直接传 Tooltip 专有 props 会被 TS 拦截",
105
+ "wrong": "<Help title='说明' disableHoverListener /> // disableHoverListener 不在 HelpProps 里,TS 报错",
106
+ "right": "<Help title='说明' /> // 需要关闭 hover:改用 Tooltip 直接封装;Help 不支持所有 TooltipProps 的覆盖"
107
+ },
108
+ {
109
+ "issue": "HelpProps extends Omit<TooltipProps, 'children'>,children 被重新声明为 ReactNode(可选),不接受 multiple children",
110
+ "wrong": "<Help title='说明'><span>图标</span><span>附加</span></Help> // 多子节点在 span wrapper 内合法,但语义上只用单个节点",
111
+ "right": "<Help title='说明'><span>自定义图标</span></Help> // 单个节点作为 trigger"
112
+ }
113
+ ],
114
+ "mapping": {
115
+ "realComponent": "Help",
116
+ "adapter": null
117
+ }
118
+ }
@@ -0,0 +1,126 @@
1
+ {
2
+ "name": "HelperText",
3
+ "category": "Data Display",
4
+ "description": "表单字段下方的辅助文本(校验错误 / 提示信息)。简单原子组件,核心交互只有 3 个 prop:error 控样式,helperText 给文案,hideErrorDom 控渲染策略",
5
+ "semantic": {
6
+ "intent": [
7
+ "表单字段错误提示",
8
+ "输入框辅助说明",
9
+ "字段下方的灰色提示文案"
10
+ ],
11
+ "useCases": [
12
+ "TextField / FieldForm.Item 下方的校验提示",
13
+ "Form 字段的 hint 文案",
14
+ "条件性错误信息显示"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "protocolSummary": "**三态 hideErrorDom 真值表**(组件渲染策略):\n| hideErrorDom | error=false | error=true |\n|---|---|---|\n| **true** (默认推荐) | 不渲染 (return null) | 渲染 <p>(红色错误样式) |\n| **false** | 渲染 <p>(中性样式,helperText 即使为空也占位) | 渲染 <p>(红色错误样式) |\n| **null** | 不渲染 (return null,无视 error) | 不渲染 (return null,无视 error) |\n\n**默认值**:hideErrorDom 默认是 **false**(都渲染,占位)。**null 是一种'禁用整个组件'的快捷写法**——传 null 时无论 error 真假都不渲染",
19
+ "states": [
20
+ "default",
21
+ "error"
22
+ ],
23
+ "variants": {
24
+ "default": {
25
+ "meaning": "默认样式(无 variant 切换)"
26
+ }
27
+ },
28
+ "idealProps": {
29
+ "error": {
30
+ "type": "boolean",
31
+ "default": false,
32
+ "description": "是否处于错误态。error=true 时给 <p> 加上 `.paraui-v4-helper-text-error` 类(红色文字样式);error=false 时只有基础 `.paraui-v4-helper-text` 类(中性灰色样式)"
33
+ },
34
+ "helperText": {
35
+ "type": "ReactNode",
36
+ "description": "渲染在 <p> 内的内容。可以是字符串、JSX 或 undefined。**不影响是否渲染**——只要 hideErrorDom 不是 null + 不是 (hideErrorDom=true && !error),<p> 都会渲染(即使 helperText 为 undefined / 空字符串)"
37
+ },
38
+ "hideErrorDom": {
39
+ "type": "boolean | null",
40
+ "default": false,
41
+ "description": "**渲染策略三态**(见 protocolSummary 真值表):\n- **true** = 没有错误时不渲染(节省 DOM,error=true 时正常渲染)——表单常用,只在出错时才占位\n- **false**(默认) = 都渲染(error=true 红字,error=false 中性占位,即使 helperText 为空也占用 line-height 的高度,**保留布局稳定**)\n- **null** = 永不渲染(无论 error 真假都 return null,等于禁用组件)"
42
+ },
43
+ "className": {
44
+ "type": "string",
45
+ "description": "外层 <p> 的 className(追加,不覆盖内置 prefix 类)"
46
+ },
47
+ "style": {
48
+ "type": "React.CSSProperties",
49
+ "description": "外层 <p> 的 style"
50
+ }
51
+ },
52
+ "commonMisconceptions": {
53
+ "M1": {
54
+ "wrong": "把 hideErrorDom 当 'error 为 false 时不渲染' 的开关 —— 期望 hideErrorDom=false 时 error=false 也不渲染",
55
+ "result": "hideErrorDom=false 时即使 error=false 也会渲染 <p>(中性样式 + 空内容,占用 line-height 高度,**这是为了表单布局稳定**)",
56
+ "fix": "想要无错误就完全不渲染:用 hideErrorDom=true(推荐)。想要无错误时根本不挂载组件:用 hideErrorDom=null 或父层条件渲染 `{error && <HelperText error helperText={msg} />}`"
57
+ },
58
+ "M2": {
59
+ "wrong": "认为 helperText 控制是否渲染 —— 期望 helperText 为空字符串 / undefined 时 <p> 不渲染",
60
+ "result": "helperText 只控制 <p> 内的内容,不控制是否渲染。空 helperText + hideErrorDom=false 会渲染空白 <p>(仍占 line-height 高度)",
61
+ "fix": "想根据 helperText 空否决定渲染:用 hideErrorDom=true(error=false 时不渲染),或父层条件渲染"
62
+ },
63
+ "M3": {
64
+ "wrong": "认为 hideErrorDom=null 只在 error=false 时生效 —— 期望 hideErrorDom=null && error=true 时还会渲染错误",
65
+ "result": "**hideErrorDom=null 时优先级最高,直接 return null,无视 error**——传 null 就完全屏蔽组件",
66
+ "fix": "条件性禁用错误显示:用动态 hideErrorDom={ shouldHide ? null : false } 切换;只在错误时显示:用 hideErrorDom=true(默认推荐)"
67
+ },
68
+ "M4": {
69
+ "wrong": "error=false 时给特殊 helperText 颜色(成功绿 / 警告黄)期望 HelperText 自动配色",
70
+ "result": "**HelperText 只有两态样式**:error=true 红色错误 + error=false 中性灰色。没有 success / warning variant",
71
+ "fix": "需要多状态色:用 className 自定义,或换更通用的 Tip / Alert 组件"
72
+ }
73
+ },
74
+ "completeExample": "// 三态 hideErrorDom × error 真假演示\nimport React, { useState } from 'react';\nimport HelperText from '@para-ui/core/HelperText';\nimport TextField from '@para-ui/core/TextField';\n\nconst Demo: React.FC = () => {\n const [value, setValue] = useState('');\n const error = value.length > 0 && value.length < 6;\n return (\n <div>\n <TextField\n value={value}\n onChange={e => setValue(e.target.value)}\n placeholder='输入至少 6 位'\n />\n {/* 推荐:hideErrorDom=true,无错误时不渲染,布局可能跳动 */}\n <HelperText\n error={error}\n helperText={error ? '至少 6 位' : ''}\n hideErrorDom={true}\n />\n {/* 布局稳定:hideErrorDom=false,无错误时占位 */}\n <HelperText\n error={error}\n helperText={error ? '至少 6 位' : '至少 6 位(无错时占位)'}\n hideErrorDom={false}\n />\n {/* 禁用组件:hideErrorDom=null,永不渲染 */}\n <HelperText\n error={true}\n helperText='永不显示'\n hideErrorDom={null}\n />\n </div>\n );\n};\nexport default Demo;",
75
+ "do": [
76
+ "**默认推荐**:用 `hideErrorDom=true`(只在 error=true 时渲染),节省 DOM",
77
+ "**布局稳定优先**(避免出错时整体跳动):用 `hideErrorDom=false`(默认值),即使 error=false 也占 line-height 高度",
78
+ "**整组屏蔽**:用 `hideErrorDom={null}`(等价于不挂载组件)",
79
+ "在 TextField / FieldForm.Item 下方使用,作为校验反馈通道",
80
+ "helperText 文案保持简短(< 30 字),长错误信息考虑用 Alert 组件"
81
+ ],
82
+ "dont": [
83
+ "**不要**期望 hideErrorDom=false 时空 helperText 不渲染——会渲染空白 <p>(M1/M2)",
84
+ "**不要**期望 hideErrorDom=null + error=true 时仍渲染——null 优先级最高(M3)",
85
+ "**不要**用 HelperText 做 success / warning 提示——只有 error 一种着色态(M4)",
86
+ "错误信息过长(>30 字)不要塞 HelperText——换 Alert / Tip",
87
+ "同一字段同时显示多个错误信息——合并成一条"
88
+ ],
89
+ "events": {
90
+ "render": {
91
+ "signature": "无事件 prop——HelperText 是纯展示组件",
92
+ "asyncSupported": false,
93
+ "examples": [
94
+ "HelperText 本身不触发任何事件;渲染控制完全由 error/hideErrorDom/helperText 三个 prop 驱动",
95
+ "配合外层 TextField 的 onBlur:onBlur={() => setError(validate(value))} → <HelperText error={!!error} helperText={error} hideErrorDom={true} />",
96
+ "父组件主动清除错误:setError('') 后 error=false,hideErrorDom=true 时 HelperText 不渲染,布局收起"
97
+ ],
98
+ "commonMistakes": [
99
+ "期望给 HelperText 传 onClick 或 onClose 回调——HelperText 是纯展示 <p> 节点,无交互",
100
+ "传 onChange/onInput 期望监听文本变化——helperText 是静态展示内容,不是输入框",
101
+ "期望 HelperText 自动监听父组件 error 状态——需父组件主动把 error state 传给 error prop"
102
+ ]
103
+ }
104
+ },
105
+ "typescriptPitfalls": [
106
+ {
107
+ "issue": "hideErrorDom 类型是 boolean | null,传 undefined 等同于不传(默认 false),不等于 null 的行为",
108
+ "wrong": "const hide: boolean | undefined = getHide(); <HelperText hideErrorDom={hide} /> // undefined 时按 false 处理(都渲染),不是 null(禁用)",
109
+ "right": "const hide = getHide(); <HelperText hideErrorDom={hide ?? false} /> // 明确兜底,或用 null 显式禁用:hideErrorDom={shouldHide ? null : false}"
110
+ },
111
+ {
112
+ "issue": "helperText 类型是 ReactNode,传 false 是合法 ReactNode 但不渲染——可能造成混淆",
113
+ "wrong": "const msg: string | false = getMsg(); <HelperText helperText={msg} /> // msg=false 时 React 不渲染 false,但 <p> 仍然渲染(空白占位)",
114
+ "right": "const msg = getMsg(); <HelperText helperText={msg || ''} error={!!msg} hideErrorDom={true} /> // 用 hideErrorDom=true 避免空白占位"
115
+ },
116
+ {
117
+ "issue": "HelperText 的 error prop 默认 false——不传 error 时始终以中性灰色样式渲染,不显示红色",
118
+ "wrong": "<HelperText helperText='格式不正确' /> // 没传 error=true,文字显示为灰色而非红色错误样式",
119
+ "right": "<HelperText error={true} helperText='格式不正确' /> // 必须显式传 error={true} 才触发红色错误样式"
120
+ }
121
+ ],
122
+ "mapping": {
123
+ "realComponent": "HelperText",
124
+ "adapter": null
125
+ }
126
+ }