@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
@@ -0,0 +1,216 @@
1
+ {
2
+ "name": "Argv",
3
+ "category": "Data Entry",
4
+ "description": "动态参数键值对编辑器。用户可以增删行、编辑每行的 key/value,value 支持多类型(string/number/boolean/object)。典型场景:命令行参数配置、环境变量编辑、动态配置项。**重要:这是一个'对象 ⇄ 列表'双形态组件,内部数据形态是 IArgvItem[],外部数据形态可以是对象(Record<string,any>)或列表(IArgvItem[]),通过两套不同的 prop 通道分别接入(见 controlledChannels)**",
5
+ "semantic": {
6
+ "intent": [
7
+ "动态键值对编辑",
8
+ "参数配置",
9
+ "可增删行的表单"
10
+ ],
11
+ "useCases": [
12
+ "命令行参数配置面板(CLI argv 编辑)",
13
+ "环境变量编辑器(KEY=VALUE 列表)",
14
+ "HTTP Header / Query 参数编辑",
15
+ "动态配置项编辑(配置中心场景)",
16
+ "脚本变量定义"
17
+ ],
18
+ "riskLevel": "normal"
19
+ },
20
+ "protocolSummary": "**双形态受控对**:外部可用 **对象形态**(defaultValue: Record<string,any> + onChange: (val: Record<string,any>) => void,**onChange 防抖 200ms**)或 **列表形态**(list: IArgvItem[] + onListChange: (val: IArgvItem[]) => void,**无防抖**)接入数据。defaultValue 仅 mount + 引用变化时灌入(不受控);list 是受控通道(每次变化都会被同步)。两套通道可同时存在(各自独立 fire)。**无 value/values prop,无 schema/argSchema prop——这是常见误解**",
21
+ "controlledChannels": {
22
+ "objectMode": {
23
+ "in": "defaultValue: Record<string, any>",
24
+ "out": "onChange: (val: Record<string, any>) => void",
25
+ "behavior": "**非受控**:defaultValue 引用变化时(useEffect 依赖)重置内部 state,父层 setState 后再传入相同引用不会重置。onChange 内部 200ms 防抖,返回值已经 formatDataToObject 转成普通对象(丢弃空 key 项)",
26
+ "whenToUse": "外部数据天然是对象(API 返回的 config 对象、env vars 对象),且不需要严格受控(用户编辑过程中父层不需要插队覆盖)"
27
+ },
28
+ "listMode": {
29
+ "in": "list: IArgvItem[]",
30
+ "out": "onListChange: (val: IArgvItem[]) => void",
31
+ "behavior": "**受控**:list 每次变化都会被同步进内部 state(useEffect 依赖 list 引用)。onListChange 无防抖,每次按键 / 增删行立即 fire,返回原始 IArgvItem[](保留空 key 项,保留类型元数据)",
32
+ "whenToUse": "需要保留输入过程中间态(空 key 行、未填值)、需要保留类型元数据(dataType=string/number/boolean/object)、或父层做严格受控(每次输入都过父层 reducer)"
33
+ },
34
+ "bothModes": "list 和 defaultValue 可以同时传(list 会覆盖 defaultValue 的初始化效果);onChange 和 onListChange 可同时监听,两个回调都会触发,**但 onChange 因防抖会延迟 200ms 且只回传对象形态**"
35
+ },
36
+ "dataFlow": {
37
+ "objectToList": "**formatObjectToData(obj: Record<string,any>): IArgvItem[]** — Object.keys 遍历, 每个 [k,v] 转换成 IArgvItem(自动推断 dataType: typeof v)。导出函数,可在父层提前调用",
38
+ "listToObject": "**formatDataToObject(list: IArgvItem[]): Record<string,any>** — 遍历 list, 跳过 item.key 为空的项, 用 item.key 作为对象 key, formatGeneratorToData 还原 value。导出函数",
39
+ "validate": "**checkArgvData(list: IArgvItem[], intl: Function): { error: boolean, detail: Record<string,string>[] }** — 校验每行 key 非空 + value 格式正确,返回的 detail 可以直接喂给 errors prop"
40
+ },
41
+ "variants": {
42
+ "default": {
43
+ "meaning": "默认样式(无 variant 切换,样式由 size/disabled 等控制)"
44
+ }
45
+ },
46
+ "states": [
47
+ "default",
48
+ "disabled",
49
+ "error"
50
+ ],
51
+ "idealProps": {
52
+ "list": {
53
+ "type": "IArgvItem[]",
54
+ "description": "**受控形态的数据通道**。每项结构: `{ key: string, data: IDataGeneratorValue }`,其中 `IDataGeneratorValue = { dataType: 'string' | 'number' | 'boolean' | 'object', data: any }`。**与 onListChange 配对使用,无防抖**。如果同时传了 defaultValue,list 优先级更高(list 引用变化会覆盖)",
55
+ "shape": {
56
+ "key": "string — 参数名(显示在左侧 TextField)。允许空字符串,但 formatDataToObject 转对象时会被跳过",
57
+ "data": "IDataGeneratorValue — 参数值容器,含 dataType (类型选择器) + data (实际值,类型与 dataType 联动)"
58
+ }
59
+ },
60
+ "onListChange": {
61
+ "type": "(val: IArgvItem[]) => void",
62
+ "description": "**列表形态变化回调,无防抖**。每次按键 / 增删行 / 类型切换都立即触发。返回完整 IArgvItem[](保留空 key 项)。如果只想拿对象形态结果,用 onChange",
63
+ "pairsWith": "list"
64
+ },
65
+ "defaultValue": {
66
+ "type": "Record<string, any>",
67
+ "description": "**对象形态的初始值,非受控**。组件 mount 时 + 引用变化时(useEffect 依赖)灌入,父层用 setState 重新传相同引用不会重置(常见坑:误以为 defaultValue 是受控,见 commonMisconceptions.M1)。内部用 formatObjectToData 自动推断每个 value 的 dataType",
68
+ "controlled": false
69
+ },
70
+ "onChange": {
71
+ "type": "(val: Record<string, any>) => void",
72
+ "description": "**对象形态变化回调,内部 200ms 防抖**。返回值已经 formatDataToObject 转成普通对象(item.key 空的行被跳过, item.data 还原成对应 dataType 的原始值)。**适合保存到 state 但不适合做严格受控**(防抖期间输入和 state 不同步)",
73
+ "pairsWith": "defaultValue"
74
+ },
75
+ "errors": {
76
+ "type": "Record<string, string>[]",
77
+ "description": "**按 list 行索引对齐**(errors[0] 对应 list[0],以此类推)。**不是按 key 名映射**(常见误解,见 commonMisconceptions.M3)。每项结构 `{ key?: string, value?: string }`: `key` 字段填非空字符串时,该行左侧 TextField 红框 + 显示该字符串作为 helperText;`value` 字段填非空字符串时,该行右侧 DataGenerator 红框 + 显示该字符串。如不需要某行/某列显示错误就不填或填空字符串",
78
+ "shape": {
79
+ "[index].key": "string | undefined — 该行 key 列的错误文案(空字符串/undefined = 无错误)",
80
+ "[index].value": "string | undefined — 该行 value 列的错误文案"
81
+ },
82
+ "tip": "直接消费 checkArgvData(list, intl).detail 即可,无需手工拼装"
83
+ },
84
+ "disabled": {
85
+ "type": "boolean",
86
+ "default": false,
87
+ "description": "**整体禁用**:禁用所有 TextField + DataGenerator,屏蔽新增按钮(点击 add 时 early return)、屏蔽删除按钮(点击 del 时 early return)。不存在子字段单独禁用——若需更细颗粒度,改用底层 TextField + DataGenerator 自行编排"
88
+ },
89
+ "label": {
90
+ "type": "LabelProps['label']",
91
+ "description": "顶部标题文本(string 或 ReactNode)。不传时显示 i18n 默认值('环境变量' / 'Environment Variable')。注意这是顶层 label,**不是每行的 label**(每行只有 key/value 两个 TextField,无独立 label 位)"
92
+ },
93
+ "labelProps": {
94
+ "type": "LabelProps",
95
+ "description": "传给顶部 Label 组件的完整 props(覆盖默认 label),用于调整 required / tooltip / labelWidth 等。`label` 字段会被外层 label prop 覆盖(外层优先)"
96
+ },
97
+ "className": {
98
+ "type": "string",
99
+ "description": "外层 div 的 className"
100
+ },
101
+ "style": {
102
+ "type": "React.CSSProperties",
103
+ "description": "外层 div 的 style"
104
+ }
105
+ },
106
+ "commonMisconceptions": {
107
+ "M1": {
108
+ "wrong": "把 defaultValue 当受控 prop 用: `<Argv defaultValue={state} onChange={setState} />` 期望父层 setState 后 Argv 内部跟着更新",
109
+ "result": "defaultValue 只在引用变化时灌入,父层 setState 后 React 重渲传入新引用确实会重置——但**正在编辑的行会被清空**(useEffect 重跑 formatObjectToData),导致用户输入丢失",
110
+ "fix": "需要严格受控就用 **list + onListChange**(列表形态、受控、无防抖);只需保存最终结果用 defaultValue + onChange(对象形态、非受控、防抖)。**不要混用**"
111
+ },
112
+ "M2": {
113
+ "wrong": "想给 Argv 传 schema / argSchema 限制可选 key 列表或字段类型: `<Argv schema={...} />`",
114
+ "result": "Argv **不存在 schema / argSchema prop**——传入会被 TypeScript 直接报错。Argv 是自由键值对编辑器,没有内置 schema 约束",
115
+ "fix": "需要约束 key 白名单:在父层 onListChange 里过滤;需要约束 value 类型:Argv 内部已有 DataGenerator 让用户选 dataType(string/number/boolean/object);需要强 schema(必填 + 正则等):换用 FieldForm + FieldForm.Item rules"
116
+ },
117
+ "M3": {
118
+ "wrong": "errors 按 key 名映射: `errors={{ username: '必填', email: '格式错' }}` (Record<string,string>)",
119
+ "result": "类型不匹配——errors 是 `Record<string, string>[]` 数组,**按 list 行索引对齐**,不是按字段名映射。传错形态会导致 errors[index] 取值为 undefined,所有行都不显示错误",
120
+ "fix": "用 `errors={[{key: '', value: '必填'}, {key: '重复', value: ''}]}` 或直接 `errors={checkArgvData(list, intl).detail}`(detail 已经是正确形态)"
121
+ },
122
+ "M4": {
123
+ "wrong": "想用 `value` / `values` prop 做受控: `<Argv value={data} onChange={setData} />`",
124
+ "result": "Argv **无 value 也无 values prop**——TypeScript 报错。常见的受控套路在 Argv 上不直接成立",
125
+ "fix": "Argv 的受控通道叫 **list + onListChange**(命名上 list 替代了 value 角色,IArgvItem[] 替代了 普通对象)。如果父层数据是普通对象,可以在父层用 formatObjectToData / formatDataToObject 工具函数转换"
126
+ },
127
+ "M5": {
128
+ "wrong": "同时监听 onChange 和 onListChange 并期望它们的回调时机一致",
129
+ "result": "**onListChange 立即触发,onChange 防抖 200ms**——按键过程中两个 callback 看到的数据可能短暂不一致,且 onChange 收到的是对象形态(过滤了空 key 项),onListChange 收到的是列表形态(保留全部)",
130
+ "fix": "通常只监听一个:严格受控用 onListChange,只关心最终对象结果用 onChange。如必须两个都监听,理解 200ms 时差是预期行为"
131
+ }
132
+ },
133
+ "completeExample": "// 标准用法:list 受控模式 + errors 校验\nimport React, { useState, useMemo } from 'react';\nimport Argv, { IArgvItem, checkArgvData } from '@para-ui/core/Argv';\nimport useFormatMessage from '@para-ui/core/GlobalContext/useFormatMessage';\n\nconst Demo: React.FC = () => {\n const [list, setList] = useState<IArgvItem[]>([\n { key: 'NODE_ENV', data: { dataType: 'string', data: 'production' } },\n { key: 'PORT', data: { dataType: 'number', data: 3000 } },\n { key: 'DEBUG', data: { dataType: 'boolean', data: false } }\n ]);\n const intl = useFormatMessage('Argv');\n // 校验:返回 { error: boolean, detail: errors 形态 }\n const validation = useMemo(() => checkArgvData(list, intl), [list, intl]);\n return (\n <div>\n <Argv\n label='环境变量配置'\n list={list}\n onListChange={setList}\n errors={validation.detail}\n />\n <button disabled={validation.error}>保存</button>\n </div>\n );\n};\nexport default Demo;",
134
+ "utilities": {
135
+ "formatObjectToData": {
136
+ "import": "import { formatObjectToData } from '@para-ui/core/Argv';",
137
+ "signature": "(data: Record<string, any>) => IArgvItem[]",
138
+ "purpose": "把普通对象转成 IArgvItem[](自动推断 dataType)。父层有对象形态数据但想用 list 受控通道时用"
139
+ },
140
+ "formatDataToObject": {
141
+ "import": "import { formatDataToObject } from '@para-ui/core/Argv';",
142
+ "signature": "(data: IArgvItem[]) => Record<string, any>",
143
+ "purpose": "把 IArgvItem[] 转回普通对象(跳过空 key,还原 dataType)。保存到后端时用"
144
+ },
145
+ "checkArgvData": {
146
+ "import": "import { checkArgvData } from '@para-ui/core/Argv';",
147
+ "signature": "(data: IArgvItem[], intl: Function) => { error: boolean, detail: Record<string,string>[] }",
148
+ "purpose": "内置校验:每行 key 非空 + value 格式正确。detail 可以直接喂给 errors prop"
149
+ }
150
+ },
151
+ "do": [
152
+ "需要严格受控(中途插队 / 实时同步):用 **list + onListChange**(列表形态、无防抖)",
153
+ "只需保存最终结果到父层 state:用 **defaultValue + onChange**(对象形态、200ms 防抖)",
154
+ "errors 直接消费 **checkArgvData(list, intl).detail**,无需手工拼装",
155
+ "保存到后端前用 **formatDataToObject(list)** 转成对象形态",
156
+ "理解'对象 ⇄ 列表'两套通道是平级且独立的,不要混用"
157
+ ],
158
+ "dont": [
159
+ "**不要**给 Argv 传 schema / argSchema / value / values prop——这些都不存在(见 commonMisconceptions M2/M4)",
160
+ "**不要**把 defaultValue 当受控 prop 用——会导致编辑过程中数据被清空(M1)",
161
+ "**不要**按 key 名映射 errors——errors 按行索引对齐(M3)",
162
+ "**不要**期望 onChange 和 onListChange 时机一致——前者有 200ms 防抖(M5)",
163
+ "参数过多(>10 行)不分组用同一个 Argv——考虑分多个 Argv 或换 FieldForm"
164
+ ],
165
+ "events": {
166
+ "onChange": {
167
+ "signature": "(val: Record<string, any>) => void",
168
+ "asyncSupported": false,
169
+ "examples": [
170
+ "对象形态回调,内部 200ms 防抖,适合保存到 state 但不适合严格受控",
171
+ "返回值已经 formatDataToObject 转换,跳过空 key 项,还原 dataType 原始值",
172
+ "async 场景可直接 await 包裹:const save = async (val) => { await api.save(val); setDirty(false); }"
173
+ ],
174
+ "commonMistakes": [
175
+ "期望 onChange 和 onListChange 在同一帧触发——onChange 有 200ms 防抖,onListChange 立即触发,两者不同步",
176
+ "期望 onChange 回传 IArgvItem[] 列表形态——onChange 返回普通对象 Record<string,any>,要列表形态用 onListChange",
177
+ "把 onChange 当受控 prop 配合 defaultValue 用——defaultValue 非受控,引用不变不触发重置,严格受控用 list+onListChange"
178
+ ]
179
+ },
180
+ "onListChange": {
181
+ "signature": "(val: IArgvItem[]) => void",
182
+ "asyncSupported": false,
183
+ "examples": [
184
+ "每次按键 / 增删行 / 类型切换立即触发,无防抖,适合严格受控场景",
185
+ "返回完整 IArgvItem[](保留空 key 行),可直接回传给 list prop 实现受控循环",
186
+ "结合 checkArgvData 做实时校验:onListChange={val => { setList(val); setErrors(checkArgvData(val, intl).detail); }}"
187
+ ],
188
+ "commonMistakes": [
189
+ "期望 onListChange 返回对象形态——它返回 IArgvItem[],要对象形态用 onChange 或 formatDataToObject",
190
+ "onListChange 频率比 onChange 高,如果 handler 有重计算逻辑应加 useMemo/useCallback 避免性能问题",
191
+ "同时传 list 和 defaultValue 但期望 onListChange 只触发一次——list 引用变化会触发,defaultValue 也会灌入,两套通道独立"
192
+ ]
193
+ }
194
+ },
195
+ "typescriptPitfalls": [
196
+ {
197
+ "issue": "errors prop 是按行索引对齐的数组,不是按 key 名映射的对象",
198
+ "wrong": "// 错误:按字段名映射\n<Argv errors={{ NODE_ENV: '必填', PORT: '格式错' }} /> // TS 类型报错:期望数组",
199
+ "right": "// 正确:按 list 行索引对齐\n<Argv errors={[{ key: '', value: '必填' }, { key: '重复', value: '' }]} />\n// 或直接消费 checkArgvData 结果\n<Argv errors={checkArgvData(list, intl).detail} />"
200
+ },
201
+ {
202
+ "issue": "Argv 无 value / values prop,受控通道叫 list + onListChange",
203
+ "wrong": "// antd/MUI 风格受控写法\n<Argv value={data} onChange={setData} /> // TS 报错:value 不在 ArgvProps",
204
+ "right": "// para-ui Argv 受控写法\n<Argv list={list} onListChange={setList} />"
205
+ },
206
+ {
207
+ "issue": "IArgvItem.data.dataType 是字符串联合类型,不能传任意字符串",
208
+ "wrong": "const item: IArgvItem = { key: 'PORT', data: { dataType: 'int', data: 3000 } }; // 'int' 不在联合类型",
209
+ "right": "const item: IArgvItem = { key: 'PORT', data: { dataType: 'number', data: 3000 } }; // 只有 'string'|'number'|'boolean'|'object'"
210
+ }
211
+ ],
212
+ "mapping": {
213
+ "realComponent": "Argv",
214
+ "adapter": null
215
+ }
216
+ }
@@ -1,7 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { IDataGeneratorValue } from './dataGenerator';
3
3
  import { LabelProps } from '../Label';
4
- import { IObject } from '../Utils/type';
5
4
  export interface IArgvItem {
6
5
  key: string;
7
6
  data: IDataGeneratorValue;
@@ -14,11 +13,11 @@ export interface ArgvProps {
14
13
  /** 禁用 */
15
14
  disabled?: boolean;
16
15
  /** 默认值 不受控 */
17
- defaultValue?: IObject;
16
+ defaultValue?: Record<string, unknown>;
18
17
  /** label */
19
18
  label?: LabelProps['label'];
20
19
  /** 改变值 */
21
- onChange?: (val: IObject) => void;
20
+ onChange?: (val: Record<string, unknown>) => void;
22
21
  /** 格式化的列表 */
23
22
  list?: IArgvItem[];
24
23
  /** 改变值 */
@@ -30,6 +29,6 @@ export interface ArgvProps {
30
29
  }
31
30
  declare const Argv: (props: ArgvProps) => import("react/jsx-runtime").JSX.Element;
32
31
  export default Argv;
33
- export declare const formatObjectToData: (data: IObject) => IArgvItem[];
34
- export declare const formatDataToObject: (data: IArgvItem[]) => IObject;
35
- export declare const checkArgvData: (data: IArgvItem[], intl: Function) => Record<string, any>;
32
+ export declare const formatObjectToData: (data: Record<string, unknown>) => IArgvItem[];
33
+ export declare const formatDataToObject: (data: IArgvItem[]) => Record<string, unknown>;
34
+ export declare const checkArgvData: (data: IArgvItem[], intl: Function) => Record<string, unknown>;
@@ -0,0 +1,133 @@
1
+ {
2
+ "name": "AutoBox",
3
+ "category": "Layout",
4
+ "description": "自适应容器,根据容器宽度自动计算可见项数量,超出部分折叠到'更多'下拉弹层中展示",
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
+ "expanded"
25
+ ],
26
+ "idealProps": {
27
+ "list": {
28
+ "type": "array",
29
+ "description": "需要自适应容纳的子节点数组(ReactNode[]);事件挂在节点自身,AutoBox 不暴露 item-level onClick"
30
+ },
31
+ "showNum": {
32
+ "type": "number",
33
+ "description": "强制显示前 N 项(跳过自适应计算),溢出全部进'更多'"
34
+ },
35
+ "trigger": {
36
+ "type": "enum",
37
+ "values": [
38
+ "click",
39
+ "hover"
40
+ ],
41
+ "default": "click",
42
+ "description": "'更多'弹层触发方式"
43
+ },
44
+ "placement": {
45
+ "type": "string",
46
+ "default": "bottomLeft",
47
+ "description": "'更多'弹层位置(透传 Popover placement)"
48
+ },
49
+ "hideMore": {
50
+ "type": "boolean",
51
+ "default": false,
52
+ "description": "隐藏内置'更多'按钮(配 anchorEl + openMore 自管理外置触发器)"
53
+ },
54
+ "moreCustomize": {
55
+ "type": "ReactNode",
56
+ "description": "自定义'更多'触发节点,替换默认 More 图标按钮"
57
+ },
58
+ "openMore": {
59
+ "type": "boolean",
60
+ "default": false,
61
+ "description": "外部受控弹层显隐"
62
+ },
63
+ "onShowMore": {
64
+ "type": "function",
65
+ "description": "(bol: boolean) => void 是否有溢出项的状态回调"
66
+ },
67
+ "onCloseMore": {
68
+ "type": "function",
69
+ "description": "() => void 受控弹层关闭回调"
70
+ }
71
+ },
72
+ "do": [
73
+ "用于空间有限需要收纳溢出内容的场景",
74
+ "配合 Popover 展示更多",
75
+ "list 中每个 ReactNode 自行绑定点击事件——AutoBox 只做布局计算和'更多'收纳"
76
+ ],
77
+ "dont": [
78
+ "在固定宽度布局中滥用",
79
+ "列表项过多时不做分页",
80
+ "期望 AutoBox 暴露单项 onClick——事件需要挂在 list 元素自身上"
81
+ ],
82
+ "events": {
83
+ "onShowMore": {
84
+ "signature": "(bol: boolean) => void",
85
+ "asyncSupported": false,
86
+ "examples": [
87
+ "bol=true 表示当前有溢出项(list.length > morePos),可用于显示/隐藏外部操作按钮",
88
+ "bol=false 表示所有项都可见,无需显示外部'更多'入口",
89
+ "配合 hideMore + openMore 实现外置触发器:onShowMore={setHasMore},只在 hasMore 时渲染自定义按钮"
90
+ ],
91
+ "commonMistakes": [
92
+ "期望 onShowMore 返回具体溢出项数量——它只返回 boolean,溢出项数量需自行计算(list.length - morePos)",
93
+ "在 onShowMore 里 setState 引发重渲染后,AutoBox 内部 resize 可能再次触发 onShowMore,注意避免循环",
94
+ "onShowMore 在 list prop 变化或 window resize 后都会重新触发,不要依赖它的调用次数做副作用"
95
+ ]
96
+ },
97
+ "onCloseMore": {
98
+ "signature": "() => void",
99
+ "asyncSupported": false,
100
+ "examples": [
101
+ "弹层关闭时同步外部受控状态:onCloseMore={() => setOpenMore(false)}",
102
+ "关闭时记录日志:onCloseMore={() => analytics.track('more_closed')}",
103
+ "配合 openMore 实现受控弹层:<AutoBox openMore={open} onCloseMore={() => setOpen(false)} />"
104
+ ],
105
+ "commonMistakes": [
106
+ "传了 onCloseMore 但忘记传 openMore——二者需配合使用才能实现受控弹层",
107
+ "期望 onCloseMore 在用户点击弹层内容后也触发——只有弹层关闭时触发,内容点击需在 list 节点自身处理",
108
+ "期望 onCloseMore 携带关闭原因——回调无参数,无法区分是点击外部还是 ESC 关闭"
109
+ ]
110
+ }
111
+ },
112
+ "typescriptPitfalls": [
113
+ {
114
+ "issue": "list 类型是 any[],但传入非 ReactNode 元素会导致 runtime 渲染异常",
115
+ "wrong": "// list 传了原始数据对象,忘记 map 成 ReactNode\n<AutoBox list={[{ id: 1, name: '标签' }]} /> // 对象不是合法 ReactNode,渲染报错",
116
+ "right": "// 先 map 成 ReactNode\n<AutoBox list={data.map(d => <Tag key={d.id}>{d.name}</Tag>)} />"
117
+ },
118
+ {
119
+ "issue": "moreCustomize 声明为 ReactNode,但 src 内部也处理了函数形式(typeof moreCustomize === 'function'),类型声明不完整",
120
+ "wrong": "// 传函数期望接收 morePos 参数,但 TypeScript 按 ReactNode 检查会报类型错误\nmoreCustomize={(morePos) => <span>+{morePos}</span>}",
121
+ "right": "// 如需传函数绕过类型检查需显式 as any,或直接传静态 ReactNode\nmoreCustomize={<span>更多</span>}"
122
+ },
123
+ {
124
+ "issue": "AutoBoxProps 有索引签名 [name: string]: any,传错误 prop 名不会报 TS 错误",
125
+ "wrong": "// 拼写错误不会被 TS 捕获\n<AutoBox list={list} closeMore={() => {}} /> // closeMore 应为 onCloseMore,静默失效",
126
+ "right": "// 注意使用正确 prop 名\n<AutoBox list={list} onCloseMore={() => {}} />"
127
+ }
128
+ ],
129
+ "mapping": {
130
+ "realComponent": "AutoBox",
131
+ "adapter": null
132
+ }
133
+ }
@@ -6,7 +6,7 @@ export interface AutoBoxProps {
6
6
  /** style */
7
7
  style?: React.CSSProperties;
8
8
  /** list选项 */
9
- list?: any[];
9
+ list?: React.ReactNode[];
10
10
  /** 指定渲染几项,存在这个参数,则不自适应 */
11
11
  showNum?: number;
12
12
  /** 下拉框样式 */
@@ -18,7 +18,7 @@ export interface AutoBoxProps {
18
18
  /** 打开下拉框 */
19
19
  openMore?: boolean;
20
20
  /** 定位元素 */
21
- anchorEl?: any;
21
+ anchorEl?: HTMLElement | null;
22
22
  /** 关闭弹窗 */
23
23
  onCloseMore?: () => void;
24
24
  /** 显示更多 */
@@ -27,7 +27,7 @@ export interface AutoBoxProps {
27
27
  trigger?: 'click' | 'hover';
28
28
  /** 位置 */
29
29
  placement?: TooltipPlacement;
30
- [name: string]: any;
30
+ [name: string]: unknown;
31
31
  }
32
32
  export declare const AutoBox: FunctionComponent<AutoBoxProps>;
33
33
  export default AutoBox;
@@ -19,7 +19,7 @@ const U = (s) => {
19
19
  style: L,
20
20
  trigger: y = "click",
21
21
  placement: R = "bottomLeft"
22
- } = s, x = z(null), [t, f] = p(null), [j, h] = p(!1), [d] = p({}), S = z();
22
+ } = s, x = z(null), [t, f] = p(null), [j, h] = p(!1), [d] = p({}), S = z(null);
23
23
  a(() => {
24
24
  s.openMore !== void 0 && h(s.openMore);
25
25
  }, [s.openMore]), a(() => {
@@ -2,11 +2,11 @@ import { FunctionComponent, ReactNode } from 'react';
2
2
  export interface ProtalBoxProps {
3
3
  className?: string;
4
4
  /** 定位元素 */
5
- anchorEl?: any;
5
+ anchorEl?: HTMLElement | null;
6
6
  /** 关闭事件 */
7
7
  onClose?: () => void;
8
8
  children?: ReactNode;
9
- [name: string]: any;
9
+ [name: string]: unknown;
10
10
  }
11
11
  export declare const Protal: FunctionComponent<ProtalBoxProps>;
12
12
  export default Protal;
@@ -1,54 +1,57 @@
1
- import { j as o } from "../_virtual/jsx-runtime.js";
2
- import { useState as v, useRef as i, useEffect as y } from "react";
1
+ import { j as c } from "../_virtual/jsx-runtime.js";
2
+ import { useState as v, useRef as a, useEffect as y } from "react";
3
3
  import { createPortal as E } from "react-dom";
4
4
  import { UUID as S } from "@snack-kit/lib";
5
5
  import { $prefixCls as h } from "../GlobalContext/constant.js";
6
6
  const M = (p) => {
7
- const { children: w, className: a, anchorEl: l, onClose: m } = p, [g, x] = v({}), c = i({
7
+ const { children: w, className: u, anchorEl: m, onClose: f } = p, [g, x] = v({}), i = a({
8
8
  uuid: `${h}-protal-box-content-${S()}`
9
- }), r = i(), s = i();
10
- y(() => (R(), window.addEventListener("click", f), () => {
11
- r && r.current && r.current.remove(), window.removeEventListener("click", f);
9
+ }), s = a(null), l = a(null);
10
+ y(() => (R(), window.addEventListener("click", d), () => {
11
+ s && s.current && s.current.remove(), window.removeEventListener("click", d);
12
12
  }), []);
13
- const C = (t, n) => {
14
- const e = t.matches || t.webkitMatchesSelector || t.mozMatchesSelector || t.msMatchesSelector;
15
- for (; t && !e.call(t, n); )
16
- t = t.parentElement;
17
- return t;
18
- }, f = (t) => {
19
- if (!c.current) return;
20
- C(t.target, `.${c.current.uuid}`) || m && m();
13
+ const C = (e, o) => {
14
+ if (!e) return null;
15
+ const t = e, r = t.matches || t.webkitMatchesSelector || t.mozMatchesSelector || t.msMatchesSelector;
16
+ if (!r) return null;
17
+ let n = e;
18
+ for (; n && !r.call(n, o); )
19
+ n = n.parentElement;
20
+ return n;
21
+ }, d = (e) => {
22
+ if (!i.current) return;
23
+ C(e.target, `.${i.current.uuid}`) || f && f();
21
24
  }, R = () => {
22
- if (!l || !s.current) return;
23
- const t = l.getBoundingClientRect(), n = s.current.getBoundingClientRect(), e = {
25
+ if (!m || !l.current) return;
26
+ const e = m.getBoundingClientRect(), o = l.current.getBoundingClientRect(), t = {
24
27
  opacity: 1,
25
- left: t.left,
26
- top: t.top + t.height
27
- }, u = window.innerHeight, d = window.innerWidth;
28
- e.left + n.width > d && (e.left = d - n.width - 8, e.left < 0 && (e.left = 0)), e.top + n.height > u && (e.top = u - n.height - 8, e.top < 0 && (e.top = 0)), x(e);
28
+ left: e.left,
29
+ top: e.top + e.height
30
+ }, r = window.innerHeight, n = window.innerWidth;
31
+ t.left + o.width > n && (t.left = n - o.width - 8, t.left < 0 && (t.left = 0)), t.top + o.height > r && (t.top = r - o.height - 8, t.top < 0 && (t.top = 0)), x(t);
29
32
  }, b = () => {
30
- let t = `${h}-protal-box`;
31
- return a && (t += ` ${a}`), t;
32
- }, j = () => /* @__PURE__ */ o.jsxs(
33
+ let e = `${h}-protal-box`;
34
+ return u && (e += ` ${u}`), e;
35
+ }, j = () => /* @__PURE__ */ c.jsxs(
33
36
  "div",
34
37
  {
35
38
  className: b(),
36
- ref: r,
39
+ ref: s,
37
40
  children: [
38
- /* @__PURE__ */ o.jsx("div", { className: "protal-mask" }),
39
- /* @__PURE__ */ o.jsx(
41
+ /* @__PURE__ */ c.jsx("div", { className: "protal-mask" }),
42
+ /* @__PURE__ */ c.jsx(
40
43
  "div",
41
44
  {
42
- className: `protal-content ${c.current.uuid}`,
45
+ className: `protal-content ${i.current.uuid}`,
43
46
  style: g,
44
- ref: s,
47
+ ref: l,
45
48
  children: w
46
49
  }
47
50
  )
48
51
  ]
49
52
  }
50
53
  );
51
- return /* @__PURE__ */ o.jsx(o.Fragment, { children: E(j(), document.getElementsByTagName("body")[0]) });
54
+ return /* @__PURE__ */ c.jsx(c.Fragment, { children: E(j(), document.getElementsByTagName("body")[0]) });
52
55
  };
53
56
  export {
54
57
  M as Protal,
@@ -0,0 +1,109 @@
1
+ {
2
+ "name": "AutoButton",
3
+ "category": "General",
4
+ "description": "自适应按钮组,根据容器宽度自动折叠超出的按钮到'更多'下拉弹层,list 每项支持 buttonType 切换图标/分割/普通三种形态",
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
+ "expanded"
25
+ ],
26
+ "idealProps": {
27
+ "list": {
28
+ "type": "array",
29
+ "description": "按钮项数据数组,每项为 AutoButtonItemProps(union: ButtonProps | IconButtonProps | SplitButtonProps + 扩展 buttonType/popConfirmProps)"
30
+ },
31
+ "marginRight": {
32
+ "type": "string",
33
+ "default": "16px",
34
+ "description": "按钮间右间距"
35
+ },
36
+ "moreProps": {
37
+ "type": "object",
38
+ "objectShape": {
39
+ "buttonType": { "type": "'icon'", "description": "强制图标模式(不显示文字)" },
40
+ "icon": { "type": "ReactNode", "description": "自定义'更多'图标(默认 MoreVert)" },
41
+ "children": { "type": "ReactNode", "description": "自定义'更多'按钮文字内容" }
42
+ },
43
+ "description": "溢出折叠后'更多'按钮的展示形态({ buttonType?: 'icon'; icon?: ReactNode; children?: ReactNode })"
44
+ },
45
+ "morePlacement": {
46
+ "type": "string",
47
+ "default": "bottomLeft",
48
+ "description": "'更多'浮层弹出位置(透传 Dropdown placement)"
49
+ },
50
+ "moreMaxWidth": {
51
+ "type": "string",
52
+ "default": "500px",
53
+ "description": "'更多'浮层最大宽度,超出自动换行"
54
+ },
55
+ "trigger": {
56
+ "type": "array",
57
+ "default": "['hover']",
58
+ "description": "'更多'浮层触发方式数组('click' | 'hover' | 'contextMenu')[]"
59
+ }
60
+ },
61
+ "do": [
62
+ "在工具栏中使用收纳溢出按钮",
63
+ "保持主要操作可见,把低频操作放到 list 后面让其优先被折叠",
64
+ "每个 list 项用 buttonType 区分形态:不传=普通按钮 / 'icon'=图标按钮 / 'split'=分割按钮",
65
+ "需要二次确认时用 list 项的 popConfirmProps 属性透传 PopConfirm 参数"
66
+ ],
67
+ "dont": [
68
+ "主要操作被收纳进更多(应调整 list 顺序)",
69
+ "按钮过多时不分优先级",
70
+ "在 list 每项上传 buttonType='split' 时忘记提供 options 字段——split 按钮的子项来自 options"
71
+ ],
72
+ "events": {
73
+ "list[].onClick": {
74
+ "signature": "(event: React.MouseEvent<HTMLButtonElement>) => void",
75
+ "asyncSupported": false,
76
+ "examples": [
77
+ "每项 onClick 挂在 AutoButtonItemProps 上:list={[{ children: '编辑', onClick: handleEdit }]}",
78
+ "溢出后在'更多'弹层中点击时,AutoButton 内部会代理调用该项的 onClick",
79
+ "需要区分是哪个按钮被点击:在每项的 onClick 闭包里引用各自的业务 id"
80
+ ],
81
+ "commonMistakes": [
82
+ "期望 AutoButton 暴露统一 onItemClick(index, item) 回调——AutoButton 无此 prop,onClick 挂在每项上",
83
+ "buttonType='split' 的子项点击时,src 会把 parentItem.onClick 也触发一次——注意避免重复处理",
84
+ "弹层中点击时 event.currentTarget 是弹层内 Button,不是原始按钮 DOM,不要依赖 currentTarget 做 DOM 查找"
85
+ ]
86
+ }
87
+ },
88
+ "typescriptPitfalls": [
89
+ {
90
+ "issue": "AutoButtonItemProps 是 ButtonProps | IconButtonProps | SplitButtonProps 的 union,TypeScript 需要用 buttonType 做类型守卫",
91
+ "wrong": "// 直接访问 split 专属字段\nconst item: AutoButtonItemProps = { buttonType: 'split', options: [...] }; // options 不在 ButtonProps 上,TS 报错",
92
+ "right": "// 断言为具体类型\nimport type { SplitButtonProps } from '@para-ui/core/Button';\nconst item: AutoButtonItemProps = { buttonType: 'split', ...(splitProps as SplitButtonProps) };"
93
+ },
94
+ {
95
+ "issue": "trigger prop 是数组类型,不是字符串,与部分其他组件的字符串 trigger 不同",
96
+ "wrong": "<AutoButton list={list} trigger='hover' /> // 期望字符串,实际是 string[] 类型报错",
97
+ "right": "<AutoButton list={list} trigger={['hover']} /> // 数组形式"
98
+ },
99
+ {
100
+ "issue": "list 的 popConfirmProps 是可选字段,传了但 items 没有此字段时 TypeScript 不报错(union 类型),但 runtime 才生效",
101
+ "wrong": "// 误以为所有 list 项都有 popConfirmProps 类型定义,直接访问\nconst confirm = item.popConfirmProps; // 可能 undefined,需要 ?. 操作符",
102
+ "right": "const confirm = (item as AutoButtonItemProps).popConfirmProps; // 先断言再访问,配合 ?. 操作符"
103
+ }
104
+ ],
105
+ "mapping": {
106
+ "realComponent": "AutoButton",
107
+ "adapter": null
108
+ }
109
+ }