@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,115 @@
1
+ {
2
+ "name": "ScrollBar",
3
+ "category": "Layout",
4
+ "description": "滚动条美化:既支持全局 CSS 主题(默认场景),也提供 stand-alone 自驱动组件(虚拟列表/Canvas 等高级场景)",
5
+ "semantic": {
6
+ "intent": [
7
+ "美化原生滚动条",
8
+ "自驱动滚动指示器"
9
+ ],
10
+ "useCases": [
11
+ "固定高度内容溢出滚动(模式 A)",
12
+ "横向画廊(模式 A)",
13
+ "侧边栏/抽屉内容(模式 A)",
14
+ "虚拟列表/Canvas 自定义滚动(模式 B)"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "variants": {
19
+ "themedNative": {
20
+ "meaning": "模式 A:全局 className 主题 + native overflow(99% 场景推荐);使用 className `paraui-v4-scrollbar-{small|medium|large}{-deep}?` + native overflow:auto,不需要 import 任何组件"
21
+ },
22
+ "selfDriven": {
23
+ "meaning": "模式 B:<ScrollBar> stand-alone 组件,业务侧自驱动 scroll state(虚拟列表/Canvas 高级场景);组件本身不接受 children"
24
+ }
25
+ },
26
+ "states": [
27
+ "default",
28
+ "scrolling"
29
+ ],
30
+ "idealProps": {
31
+ "type": {
32
+ "type": "'horizontal' | 'vertical'",
33
+ "values": ["horizontal", "vertical"],
34
+ "default": "'vertical'",
35
+ "description": "(模式 B)滚动条方向"
36
+ },
37
+ "size": {
38
+ "type": "'small' | 'medium' | 'large'",
39
+ "values": ["small", "medium", "large"],
40
+ "default": "'large'",
41
+ "description": "(模式 B)滚动条粗细;small/medium 同款细(4px),large 粗(8px)"
42
+ },
43
+ "color": {
44
+ "type": "'deep' | 'light'",
45
+ "values": ["deep", "light"],
46
+ "default": "'light'",
47
+ "description": "(模式 B)配色;light 浅背景,deep 深背景"
48
+ },
49
+ "scrollTotalLength": {
50
+ "type": "number",
51
+ "description": "(模式 B)内容总滚动距离(px);= contentTotalSize - visualWindowSize;业务侧从 scrollHeight - clientHeight 计算并传入"
52
+ },
53
+ "scrollLength": {
54
+ "type": "number",
55
+ "description": "(模式 B)当前滚动距离(px);业务侧从 native scrollTop/scrollLeft 同步进来;变化时组件移动滑块位置"
56
+ },
57
+ "onScroll": {
58
+ "type": "function",
59
+ "signature": "(val: number) => void",
60
+ "description": "(模式 B)用户拖拽滚动条时回调;val = 用户操作后业务侧应同步到 native 元素的 scrollTop/scrollLeft 值"
61
+ },
62
+ "themedClassName": {
63
+ "type": "string (literal)",
64
+ "description": "(模式 A)在 native overflow 容器上加 className,从下面选一个:'paraui-v4-scrollbar-small' / 'paraui-v4-scrollbar-medium' / 'paraui-v4-scrollbar-large' / '*-deep' 深色变体;src/Styles/scrollbar.scss 实现 ::-webkit-scrollbar-* 美化"
65
+ }
66
+ },
67
+ "do": [
68
+ "默认场景(限高容器 + 子内容溢出)用模式 A:className 主题 + native overflow:auto",
69
+ "横向滚动用 overflowX:auto + className 'paraui-v4-scrollbar-small' 等主题",
70
+ "虚拟列表 / Canvas 等业务侧已有 scroll state 的场景用模式 B:<ScrollBar /> 组件 + scrollTotalLength + scrollLength",
71
+ "深色背景上的滚动条用 *-deep 变体(浅色背景上保持默认或显式 light)"
72
+ ],
73
+ "dont": [
74
+ "**不要给 <ScrollBar> 组件传 children**(它不是 scroll 容器,是 visual indicator)",
75
+ "不要在普通业务场景重复实现 scrollTotalLength/scrollLength 计算 — 用模式 A className 即可",
76
+ "不要嵌套两层 ScrollBar 容器(双滚动条体验差)",
77
+ "不要忘了模式 B 必须搭配 native overflow:hidden 的容器才能视觉上接管滚动"
78
+ ],
79
+ "events": {
80
+ "onScroll": {
81
+ "signature": "(val: number) => void",
82
+ "asyncSupported": false,
83
+ "examples": [
84
+ "用户拖拽滚动条时触发,val = 应同步到 native 元素的 scrollTop/scrollLeft 值",
85
+ "onScroll={(val) => { nativeRef.current.scrollTop = val; setScrollLength(val); }}",
86
+ "双向绑定:业务侧同时监听 native onScroll 更新 scrollLength prop,ScrollBar.onScroll 更新 native scrollTop"
87
+ ],
88
+ "commonMistakes": [
89
+ "只传 onScroll 未更新 native 元素的 scrollTop——val 是期望值,需业务侧手动同步到 DOM",
90
+ "onScroll 和 scrollLength 没有形成闭环——用户拖 scrollbar 时 onScroll 触发更新 scrollTop;native 滚动时 onScroll 不触发,需监听 native onScroll 更新 scrollLength"
91
+ ]
92
+ }
93
+ },
94
+ "typescriptPitfalls": [
95
+ {
96
+ "issue": "ScrollBar 组件的 Props interface 名是 Props(不是 ScrollBarProps),外部无法直接 import 类型",
97
+ "wrong": "import { ScrollBarProps } from '@para-ui/core/ScrollBar' // 类型未导出",
98
+ "right": "// 直接使用 JSX 不需要类型引用;如需类型可自行 declare 或用 React.ComponentProps<typeof ScrollBar>"
99
+ },
100
+ {
101
+ "issue": "scrollTotalLength 传错含义——应是「可滚动距离」不是「内容总高度」",
102
+ "wrong": "scrollTotalLength={contentHeight} // 期望传内容总高度——实际应传 scrollHeight - clientHeight",
103
+ "right": "scrollTotalLength={scrollHeight - clientHeight} // = contentTotalSize - visualWindowSize"
104
+ },
105
+ {
106
+ "issue": "模式 A(className 主题)不需要 import ScrollBar 组件,直接加 className 即可",
107
+ "wrong": "import ScrollBar from '@para-ui/core/ScrollBar'; <ScrollBar>...</ScrollBar> // ScrollBar 不接受 children",
108
+ "right": "<div className='paraui-v4-scrollbar-small' style={{overflowY: 'auto'}}>...</div> // 模式 A 不 import 组件"
109
+ }
110
+ ],
111
+ "mapping": {
112
+ "realComponent": "ScrollBar",
113
+ "adapter": null
114
+ }
115
+ }
@@ -0,0 +1,177 @@
1
+ {
2
+ "name": "Search",
3
+ "category": "Data Entry",
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
+ "focused"
25
+ ],
26
+ "idealProps": {
27
+ "value": {
28
+ "type": "string",
29
+ "description": "受控输入值(src/Search/index.tsx:26 实证)。与 `defaultValue` 互斥——传 value 后为受控模式,内部 state 不自动更新,需配合 onChange 手动同步"
30
+ },
31
+ "defaultValue": {
32
+ "type": "string",
33
+ "description": "非受控初始值(src/Search/index.tsx:24 实证)。组件 mount 时一次性设置,之后内部管理输入 state。与 value 互斥——不要同时传"
34
+ },
35
+ "placeholder": {
36
+ "type": "string | ReactNode",
37
+ "description": "输入框占位文案(src/Search/index.tsx:22 实证,类型 ReactNode,实际用 string 即可)。默认空字符串"
38
+ },
39
+ "allowClear": {
40
+ "type": "boolean",
41
+ "default": true,
42
+ "description": "是否显示清空按钮(src/Search/index.tsx:28 实证,默认 true)。清空时触发 `onClear` 回调"
43
+ },
44
+ "onChange": {
45
+ "type": "function",
46
+ "signature": "(val: string, event: React.ChangeEvent<HTMLInputElement> | null) => void",
47
+ "description": "输入值变化回调(src/Search/index.tsx:30 实证签名,两参:val 字符串值 + event 原生事件)。⚠️ **第一参是 string 值,不是 event**——区别于原生 input onChange。当点击搜索按钮且未传 onClickBtn 时也会触发 onChange(event 此时为 null)"
48
+ },
49
+ "onClickBtn": {
50
+ "type": "function",
51
+ "signature": "(val: string) => void",
52
+ "description": "点击右侧搜索按钮的回调(src/Search/index.tsx:40 实证签名)。参数 val 为当前输入框的值。⚠️ **若不传 onClickBtn,点击按钮会 fallback 触发 onChange**(src:99-104)。`onClickRightIcon` 是其已废弃别名"
53
+ },
54
+ "onEnter": {
55
+ "type": "function",
56
+ "signature": "(event: React.KeyboardEvent<HTMLInputElement>) => void",
57
+ "description": "回车键按下的回调(src/Search/index.tsx:46 实证签名)。通常与 onClickBtn 配合覆盖「按钮触发搜索」和「回车触发搜索」两种路径"
58
+ },
59
+ "onClear": {
60
+ "type": "function",
61
+ "signature": "() => void",
62
+ "description": "点击清空按钮的回调(src/Search/index.tsx:44 实证签名,无参)。清空后输入框值变为空字符串;allowClear=true 时清空按钮才可见"
63
+ },
64
+ "onFocus": {
65
+ "type": "function",
66
+ "signature": "(event: React.FocusEvent<HTMLInputElement>) => void",
67
+ "description": "输入框获得焦点的回调(src/Search/index.tsx:34 实证签名)"
68
+ },
69
+ "onBlur": {
70
+ "type": "function",
71
+ "signature": "(event: React.FocusEvent<HTMLInputElement>) => void",
72
+ "description": "输入框失去焦点的回调(src/Search/index.tsx:32 实证签名)"
73
+ },
74
+ "size": {
75
+ "type": "enum",
76
+ "values": [
77
+ "small",
78
+ "medium",
79
+ "large"
80
+ ],
81
+ "default": "large",
82
+ "description": "控件大小(src/Search/index.tsx:18 实证,默认 large)"
83
+ },
84
+ "radius": {
85
+ "type": "boolean",
86
+ "default": false,
87
+ "description": "是否使用圆角样式(src/Search/index.tsx:20 实证)"
88
+ },
89
+ "onClickRightIcon": {
90
+ "type": "function",
91
+ "signature": "(val: string) => void",
92
+ "description": "⚠️ **已废弃,请使用 `onClickBtn`**(src/Search/index.tsx:41 注释实证)。点击输入框右侧图标的回调,与 onClickBtn 同时触发"
93
+ },
94
+ "onKeydown": {
95
+ "type": "function",
96
+ "signature": "(event: React.KeyboardEvent<HTMLInputElement>) => void",
97
+ "description": "键盘按下事件回调(src/Search/index.tsx:36 实证)。⚠️ **注意拼写:onKeydown(非 onKeyDown)**,prop 名首字母 d 小写"
98
+ },
99
+ "onKeyUp": {
100
+ "type": "function",
101
+ "signature": "(event: React.KeyboardEvent<HTMLInputElement>) => void",
102
+ "description": "键盘抬起事件回调(src/Search/index.tsx:38 实证)"
103
+ }
104
+ },
105
+ "do": [
106
+ "支持回车搜索:同时传 onEnter 和 onClickBtn 覆盖「回车触发」和「点击按钮触发」两条路径",
107
+ "提供清空按钮:allowClear 默认 true,清空时只触发 onClear,不触发 onChange",
108
+ "受控模式:传 value + onChange 实现受控;onChange 第一参是 string 值(不是 event)",
109
+ "非受控模式:只传 defaultValue,内部管理输入 state;不要同时传 value 和 defaultValue"
110
+ ],
111
+ "dont": [
112
+ "不要把 onChange 的第一参当 event 使用——Search.onChange 签名是 (val: string, event) 而非 antd Input.onChange 的 (event) 签名",
113
+ "不要忽略 onClickBtn 为空时点击搜索按钮的 fallback 行为——未传 onClickBtn 时点击会触发 onChange(event 为 null)",
114
+ "搜索时不给反馈(网络搜索场景应配合 loading 状态)"
115
+ ],
116
+ "events": {
117
+ "onChange": {
118
+ "signature": "(val: string, event: React.ChangeEvent<HTMLInputElement> | null) => void",
119
+ "asyncSupported": false,
120
+ "examples": [
121
+ "用户实时输入时触发,val 是当前输入框字符串值",
122
+ "点击右侧搜索按钮且未传 onClickBtn 时也触发,此时 event 为 null",
123
+ "受控用法:const [keyword, setKeyword] = useState(''); <Search value={keyword} onChange={(val) => setKeyword(val)} />"
124
+ ],
125
+ "commonMistakes": [
126
+ "误按 antd Input 习惯写 onChange={(e) => setValue(e.target.value)} — 第一参是 string 不是 event",
127
+ "期望清空按钮触发 onChange — 清空只触发 onClear,需同时监听 onClear 来清空外部 state",
128
+ "忘记 onClickBtn 未传时 onChange event 参数可能为 null — 应做 null 判断再访问 event.target"
129
+ ]
130
+ },
131
+ "onClickBtn": {
132
+ "signature": "(val: string) => void",
133
+ "asyncSupported": false,
134
+ "examples": [
135
+ "用户点击右侧搜索图标时触发,val 为当前输入框的值",
136
+ "通常与 onEnter 一起传:点击和回车都调用同一个 search 函数"
137
+ ],
138
+ "commonMistakes": [
139
+ "不传 onClickBtn 时点击按钮 fallback 触发 onChange(event=null)— 若只需按钮触发必须显式传 onClickBtn",
140
+ "与 onClickRightIcon 混淆 — onClickRightIcon 是 onClickBtn 的已废弃别名,二者同时触发"
141
+ ]
142
+ },
143
+ "onEnter": {
144
+ "signature": "(event: React.KeyboardEvent<HTMLInputElement>) => void",
145
+ "asyncSupported": false,
146
+ "examples": [
147
+ "用户在输入框按回车键触发,event 是 KeyboardEvent",
148
+ "取当前值:event.currentTarget.value 或从外部 state 直接读 keyword"
149
+ ],
150
+ "commonMistakes": [
151
+ "与 onClickBtn 语义重复时未合并为同一个函数 — 可在父组件定义 handleSearch 同时传给两个 prop",
152
+ "假设 onEnter 触发时 onChange 也会触发 — 回车不会触发 onChange,需在 onEnter 里单独处理搜索逻辑"
153
+ ]
154
+ }
155
+ },
156
+ "typescriptPitfalls": [
157
+ {
158
+ "issue": "onChange 签名与原生 input onChange 不同,第一参是 string 值而非 event",
159
+ "wrong": "onChange={(e) => setVal(e.target.value)} // TS 报 string 没有 .target 属性",
160
+ "right": "onChange={(val) => setVal(val)} // val: string 直接使用"
161
+ },
162
+ {
163
+ "issue": "onKeydown prop 名小写 d,不是 onKeyDown(驼峰 D)",
164
+ "wrong": "<Search onKeyDown={handler} /> // prop 名不存在,静默无效",
165
+ "right": "<Search onKeydown={handler} /> // src/Search/index.tsx:36 interface 实证 onKeydown 小写 d"
166
+ },
167
+ {
168
+ "issue": "onClickRightIcon 已废弃,运行时与 onClickBtn 同时触发造成双重执行",
169
+ "wrong": "<Search onClickRightIcon={handleSearch} /> // 废弃 API,src 注释明确不建议使用",
170
+ "right": "<Search onClickBtn={handleSearch} /> // 推荐替代 prop"
171
+ }
172
+ ],
173
+ "mapping": {
174
+ "realComponent": "Search",
175
+ "adapter": null
176
+ }
177
+ }
@@ -33,7 +33,7 @@ export interface SearchProps {
33
33
  onClear?: () => void;
34
34
  /** 回车事件 */
35
35
  onEnter?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
36
- [name: string]: any;
36
+ [name: string]: unknown;
37
37
  }
38
38
  export declare const Search: FunctionComponent<SearchProps>;
39
39
  export default Search;
@@ -0,0 +1,244 @@
1
+ {
2
+ "name": "Select",
3
+ "category": "Form",
4
+ "description": "下拉选择器,支持单选、多选、搜索和树形数据",
5
+ "semantic": {
6
+ "intent": [
7
+ "选择选项",
8
+ "搜素选择",
9
+ "多选"
10
+ ],
11
+ "useCases": [
12
+ "表单选择",
13
+ "数据筛选",
14
+ "标签输入"
15
+ ],
16
+ "riskLevel": "normal"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "标准选择器"
21
+ },
22
+ "multiple": {
23
+ "meaning": "多选选择器"
24
+ },
25
+ "search": {
26
+ "meaning": "带搜索的选择器"
27
+ }
28
+ },
29
+ "states": [
30
+ "default",
31
+ "disabled",
32
+ "error",
33
+ "open",
34
+ "loading"
35
+ ],
36
+ "idealProps": {
37
+ "value": {
38
+ "type": "T | T[] | undefined",
39
+ "description": "当前选中的值(受控)。**Select 是泛型组件 `Select<T extends SelectOptionValue, Item extends SelectOptionBase>`**——传 `<Select<'zh-CN'|'en-US'>>` 收紧 value 类型避免 as 强转(DEFECT-003);single=undefined 表示无选中、multiple=[] 表示空选"
40
+ },
41
+ "defaultValue": {
42
+ "type": "T | T[]",
43
+ "description": "默认值(非受控);同时传 value + defaultValue 时以 value 为准"
44
+ },
45
+ "onChange": {
46
+ "type": "(val: T | T[] | undefined, e: React.SyntheticEvent) => void",
47
+ "description": "选中值变化回调。**签名 `(val: T | T[] | undefined, e: React.SyntheticEvent) => void`**(DEFECT-001:src/Select/index.tsx:151/168/240 实证 — 带 e、带泛型 T、明确清空时 val=undefined 而非 '' 或 null)。**multiple=false 时** val 为 `T | undefined`(单选清空 → undefined);**multiple=true 时** val 为 `T[]`(空数组 [] 表已清空)。第二参数 e 是合成事件,业务侧不需要可省略。**泛型用法见 docs/view/select/api.ts 顶部 \"泛型签名\" 注释段**"
48
+ },
49
+ "list": {
50
+ "type": "Item[]",
51
+ "description": "数据源。`Item extends SelectOptionBase`,即 `{ label?: ReactNode; value?: string|number|boolean; disabled?: boolean; children?: SelectOptionBase[] }`。**自定义字段名时(如 cityName/cityCode),interface 必须 extends SelectOptionBase 或加 `label?/value?` 可选字段,否则 TypeScript 报不兼容错误。** 推荐:`interface MyOption extends SelectOptionBase { cityName: string; cityCode: string }` 配合 `showName='cityName' showValue='cityCode'`"
52
+ },
53
+ "renderContent": {
54
+ "type": "function",
55
+ "signature": "(item: Item, type: boolean | 'more') => ReactNode",
56
+ "description": "自定义选项 / 选中态渲染(DEFECT-002)。**第二参数 type 三态**:`type === false` → 渲染选中态(在选择框中回显);`type === true` → 渲染下拉浮层中的每一项;`type === 'more'` → 渲染下拉浮层底部的『更多』占位项。historic 命名 isSelect 实际语义按 type 三态对应"
57
+ },
58
+ "placeholder": {
59
+ "type": "ReactNode",
60
+ "description": "选择框默认文字"
61
+ },
62
+ "disabled": {
63
+ "type": "boolean | any[]",
64
+ "default": false,
65
+ "description": "禁用控制。boolean=整体禁用;any[]=**禁用部分选项的 value 列表**(src 实证 `disabled.indexOf(val)`,传 value 数组而非 option 对象数组或索引)"
66
+ },
67
+ "allowClear": {
68
+ "type": "boolean",
69
+ "default": false,
70
+ "description": "支持清除"
71
+ },
72
+ "search": {
73
+ "type": "boolean",
74
+ "default": false,
75
+ "description": "是否使能搜索(不传 fetchSuggestions 时按 showName 字段做客户端 includes 子串匹配)"
76
+ },
77
+ "multiple": {
78
+ "type": "boolean",
79
+ "default": false,
80
+ "description": "是否多选"
81
+ },
82
+ "size": {
83
+ "type": "enum",
84
+ "values": [
85
+ "small",
86
+ "medium",
87
+ "large"
88
+ ],
89
+ "default": "large"
90
+ },
91
+ "label": {
92
+ "type": "ReactNode",
93
+ "description": "标签文本"
94
+ },
95
+ "labelMode": {
96
+ "type": "enum",
97
+ "values": [
98
+ "outside",
99
+ "inside"
100
+ ],
101
+ "default": "outside"
102
+ },
103
+ "showName": {
104
+ "type": "string",
105
+ "default": "label",
106
+ "required": false,
107
+ "description": "数据源的显示字段名,默认 'label'。⚠️ AI 常见错误:数据源字段名不是 label 时忘记传此 prop,导致下拉无文字或显示 undefined。正确做法:数据格式为 { name, id } 时传 showName='name'"
108
+ },
109
+ "showValue": {
110
+ "type": "string",
111
+ "default": "value",
112
+ "required": false,
113
+ "description": "数据源的取值字段名,默认 'value'。⚠️ AI 常见错误:数据源字段名不是 value 时忘记传此 prop,导致 onChange 返回 undefined 或选中异常。正确做法:数据格式为 { name, id } 时传 showValue='id'"
114
+ },
115
+ "childrenName": {
116
+ "type": "string",
117
+ "default": "children",
118
+ "required": false,
119
+ "description": "数据源的子级字段名,默认 'children',树形 Select 时使用。数据格式为 { name, id, subItems } 时传 childrenName='subItems'"
120
+ },
121
+ "fetchSuggestions": {
122
+ "type": "(inputValue: string, callback: (suggestions: any[]) => void) => void",
123
+ "required": false,
124
+ "description": "异步搜索回调,search=true 时生效。用户输入时触发,通过 callback 返回建议列表。⚠️ 传了 fetchSuggestions 则客户端 includes 过滤失效,建议列表完全由 callback 控制"
125
+ },
126
+ "searchModel": {
127
+ "type": "enum",
128
+ "values": ["outside", "inside"],
129
+ "default": "inside",
130
+ "required": false,
131
+ "description": "搜索框位置,outside=浮层外(触发框变搜索框)/ inside=浮层内(下拉顶部搜索框,默认)"
132
+ },
133
+ "onClear": {
134
+ "type": "() => void",
135
+ "required": false,
136
+ "description": "点击清空按钮时触发,allowClear=true 时有效"
137
+ },
138
+ "onEnterInput": {
139
+ "type": "(val: string) => void",
140
+ "required": false,
141
+ "description": "搜索框回车事件,val 为当前搜索框输入值"
142
+ }
143
+ },
144
+ "commonMisconceptions": [
145
+ "AI 常见错误:数据源字段名不是 label/value 时,忘记传 showName/showValue,导致下拉无数据或显示异常。正确做法:数据格式为 { name, id } 时,应传 showName='name' showValue='id'",
146
+ "AI 常见错误:自定义 interface(如 { cityName, cityCode })直接传给 list,TypeScript 报 '不满足 SelectOptionBase'——正确做法:interface MyOption extends SelectOptionBase { cityName: string; cityCode: string },或在 interface 里加 label?/value? 可选字段",
147
+ "AI 常见错误:onChange 单选清空时误以为 val 为 '' 或 null——实际为 undefined(DEFECT-001)",
148
+ "AI 常见错误:按 renderContent 参数名 isSelect 字面理解——实际按 type 三态(false=选中回显/true=下拉项/'more'=占位)(DEFECT-002)"
149
+ ],
150
+ "do": [
151
+ "选项过多时应当使用 search 开启搜索功能",
152
+ "使用 list 属性传入其数据源以优化性能",
153
+ "**显式收紧 value 泛型**:`<Select<'zh-CN'|'en-US'> value={lang} ... />`,避免 as 强转(DEFECT-003)",
154
+ "renderContent 用 type 取值区分三态:`type === false` 选中态、`type === true` 下拉项、`type === 'more'` 占位项",
155
+ "disabled 数组传 value 列表(不是 option 对象、不是索引)"
156
+ ],
157
+ "dont": [
158
+ "选项少于 5 个时建议优先使用 Radio.Group",
159
+ "直接在 options 中渲染过于复杂的 DOM 结构",
160
+ "不要假设 onChange 单选清空时 val 为 \\'\\\\'\\\\' 或 null——实际为 undefined(DEFECT-001)",
161
+ "不要按 renderContent 参数名 isSelect 字面理解——实际按 type 三态(DEFECT-002)"
162
+ ],
163
+ "events": {
164
+ "onChange": {
165
+ "signature": "(val: T | T[] | undefined, e: React.SyntheticEvent) => void",
166
+ "asyncSupported": false,
167
+ "examples": [
168
+ "单选时接收选中项 value(清空时 val 为 undefined,不是 '' 或 null)",
169
+ "多选时接收当前已选项的 value 数组(清空时 val 为 [])",
170
+ "结合泛型收紧类型:<Select<number> onChange={(val) => setId(val)} />(val 推断为 number | undefined)"
171
+ ],
172
+ "commonMistakes": [
173
+ "假设单选清空时 val 为 ''——实际为 undefined(src/Select/index.tsx:151 `onChange?: (val: T | undefined, e: React.SyntheticEvent) => void`)",
174
+ "忽略第二参数 e(SyntheticEvent),直接写 onChange={handleChange} 时 TypeScript 报签名不匹配——应写 (val, _e) => handle(val)",
175
+ "多选模式下假设 val 不会是数组——multiple=true 时 val 始终是 T[],即使只选了一项也是 [item]",
176
+ "假设 onChange 只在点击选项时触发——清空按钮(allowClear=true)也触发 onChange,此时 val 为 undefined 或 []"
177
+ ]
178
+ },
179
+ "onEnter": {
180
+ "signature": "(val: T | T[]) => void",
181
+ "asyncSupported": false,
182
+ "examples": [
183
+ "单选模式:用户在选中项后按回车,val 为当前选中的单值",
184
+ "多选模式:val 为当前已选的 T[] 数组"
185
+ ],
186
+ "commonMistakes": [
187
+ "与 onEnterInput 混淆——onEnter 是选中回车(在选项上回车),onEnterInput 是搜索框输入回车(val 为搜索字符串)",
188
+ "假设 onEnter 一定触发——仅在 search=true 或 input=true 模式下且搜索框/输入框有焦点时有效"
189
+ ]
190
+ },
191
+ "onClear": {
192
+ "signature": "() => void",
193
+ "asyncSupported": false,
194
+ "examples": [
195
+ "用户点击清空图标时触发(需 allowClear=true),此时 onChange 也会同时触发"
196
+ ],
197
+ "commonMistakes": [
198
+ "只监听 onClear 而不监听 onChange——受控模式下还需在 onChange 中同步清空 state",
199
+ "allowClear=false 时期望 onClear 触发——不会触发,清空按钮不显示"
200
+ ]
201
+ },
202
+ "onEnterInput": {
203
+ "signature": "(val: string) => void",
204
+ "asyncSupported": false,
205
+ "examples": [
206
+ "搜索框回车时触发,val 为当前输入的字符串——适合实现「按回车新建标签」场景"
207
+ ],
208
+ "commonMistakes": [
209
+ "与 onEnter 混淆——onEnterInput 是搜索输入框回车,onEnter 是选项选中回车"
210
+ ]
211
+ }
212
+ },
213
+ "typescriptPitfalls": [
214
+ {
215
+ "issue": "onChange 签名带第二参数 e: React.SyntheticEvent,直接传函数时签名不匹配",
216
+ "wrong": "onChange={setLang} // setLang: (val: string) => void,少了 e 参数",
217
+ "right": "onChange={(val, _e) => setLang(val ?? '')} // 显式声明,保持签名兼容"
218
+ },
219
+ {
220
+ "issue": "自定义数据结构未 extends SelectOptionBase,直接传给 list 报类型错误",
221
+ "wrong": "interface CityOpt { cityName: string; cityCode: string } // 无 label/value,不兼容 SelectOptionBase",
222
+ "right": "interface CityOpt extends SelectOptionBase { cityName: string; cityCode: string } // 配合 showName='cityName' showValue='cityCode'"
223
+ },
224
+ {
225
+ "issue": "disabled 传对象数组而非 value 列表,运行时选项不禁用",
226
+ "wrong": "disabled={[{ label: 'A', value: 'a' }]} // 传了整个 option 对象,indexOf 永远匹配不到",
227
+ "right": "disabled={['a', 'b']} // 传禁用项的 value(取值字段)列表(src 实证 disabled.indexOf(val))"
228
+ },
229
+ {
230
+ "issue": "多选模式 value 传单值而非数组,受控不生效",
231
+ "wrong": "<Select multiple value={'a'} /> // multiple=true 时 value 应为 T[]",
232
+ "right": "<Select multiple value={['a']} /> // 多选 value 始终是数组"
233
+ },
234
+ {
235
+ "issue": "renderContent 用 isSelect 命名的第二参数字面理解为 boolean,忽略 'more' 态",
236
+ "wrong": "renderContent={(item, isSelect) => isSelect ? <Selected /> : <Option />} // 漏掉 isSelect==='more' 分支",
237
+ "right": "renderContent={(item, type) => type === false ? <Selected /> : type === 'more' ? <MoreTag /> : <Option />}"
238
+ }
239
+ ],
240
+ "mapping": {
241
+ "realComponent": "Select",
242
+ "adapter": null
243
+ }
244
+ }