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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (565) hide show
  1. package/AGENTS.md +315 -0
  2. package/AlignBox/component.json +89 -0
  3. package/Anchor/component.json +130 -0
  4. package/Argv/component.json +216 -0
  5. package/AutoBox/component.json +133 -0
  6. package/AutoButton/component.json +109 -0
  7. package/AutoTips/component.json +121 -0
  8. package/Badge/component.json +92 -0
  9. package/Breadcrumbs/component.json +142 -0
  10. package/Button/component.json +168 -0
  11. package/ButtonGroup/component.json +132 -0
  12. package/Card/component.json +162 -0
  13. package/Carousel/component.json +142 -0
  14. package/Cascader/component.json +196 -0
  15. package/Checkbox/component.json +138 -0
  16. package/CheckboxGroup/component.json +152 -0
  17. package/CodeEditor/component.json +189 -0
  18. package/Collapse/component.json +166 -0
  19. package/CollapseBox/component.json +84 -0
  20. package/CollapseLayout/component.json +155 -0
  21. package/ColorPicker/component.json +142 -0
  22. package/ComboSelect/component.json +181 -0
  23. package/Container/component.json +111 -0
  24. package/ContentBox/component.json +81 -0
  25. package/CopyText/component.json +118 -0
  26. package/CycleSelector/component.json +98 -0
  27. package/DatePicker/component.json +192 -0
  28. package/Descriptions/component.json +142 -0
  29. package/Desktop/component.json +171 -0
  30. package/DragVerify/component.json +114 -0
  31. package/Drawer/component.json +200 -0
  32. package/Dropdown/component.json +147 -0
  33. package/DynamicMultiBox/component.json +278 -0
  34. package/Empty/component.json +123 -0
  35. package/FieldForm/component.json +196 -0
  36. package/Form/component.json +161 -0
  37. package/FormItem/component.json +171 -0
  38. package/FunctionModal/component.json +197 -0
  39. package/Help/component.json +118 -0
  40. package/HelperText/component.json +126 -0
  41. package/Image/component.json +165 -0
  42. package/InputCode/component.json +191 -0
  43. package/InputLang/component.json +205 -0
  44. package/InputNumber/component.json +162 -0
  45. package/Label/component.json +126 -0
  46. package/Loading/component.json +91 -0
  47. package/Menu/component.json +180 -0
  48. package/Message/component.json +246 -0
  49. package/Modal/component.json +277 -0
  50. package/MultiBox/component.json +216 -0
  51. package/Notification/component.json +184 -0
  52. package/OperateBtn/component.json +134 -0
  53. package/PageHeader/component.json +112 -0
  54. package/Pagination/component.json +181 -0
  55. package/PasswordRules/component.json +105 -0
  56. package/PopConfirm/component.json +227 -0
  57. package/PopMenu/component.json +131 -0
  58. package/Popover/component.json +165 -0
  59. package/Progress/component.json +161 -0
  60. package/Prompt/component.json +144 -0
  61. package/Querying/component.json +96 -0
  62. package/QuickReply/component.json +129 -0
  63. package/Radio/component.json +136 -0
  64. package/RadioGroup/component.json +149 -0
  65. package/RangeInput/component.json +198 -0
  66. package/Result/component.json +104 -0
  67. package/ScrollBar/component.json +115 -0
  68. package/Search/component.json +177 -0
  69. package/Select/component.json +244 -0
  70. package/SelectInput/component.json +184 -0
  71. package/Selector/component.json +203 -0
  72. package/SelectorPicker/component.json +179 -0
  73. package/SingleBox/component.json +151 -0
  74. package/Slider/component.json +181 -0
  75. package/SortBox/component.json +108 -0
  76. package/Status/component.json +104 -0
  77. package/Stepper/component.json +129 -0
  78. package/Switch/component.json +207 -0
  79. package/Table/component.json +547 -0
  80. package/Tabs/component.json +227 -0
  81. package/Tag/component.json +221 -0
  82. package/TextEditor/component.json +186 -0
  83. package/TextField/component.json +290 -0
  84. package/TimePicker/component.json +176 -0
  85. package/Timeline/component.json +110 -0
  86. package/Title/component.json +156 -0
  87. package/ToggleButton/component.json +153 -0
  88. package/Tooltip/component.json +176 -0
  89. package/Transfer/component.json +157 -0
  90. package/Tree/component.json +512 -0
  91. package/Upload/component.json +450 -0
  92. package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
  93. package/ai-workflows/02-rbac-operation-buttons.md +290 -0
  94. package/ai-workflows/03-complex-form-async-cascade.md +350 -0
  95. package/ai-workflows/04-array-field-form.md +281 -0
  96. package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
  97. package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
  98. package/ai-workflows/07-search-filter-table-trio.md +387 -0
  99. package/ai-workflows/08-table-advanced-features.md +365 -0
  100. package/ai-workflows/09-batch-operation-export-progress.md +367 -0
  101. package/ai-workflows/10-cross-component-state-coordination.md +412 -0
  102. package/codemods/modal-onCancel-to-onDismiss.js +69 -0
  103. package/es/AlignBox/component.json +89 -0
  104. package/es/AlignBox/index.css +1 -1
  105. package/es/AlignBox/index.d.ts +6 -2
  106. package/es/AlignBox/index.js +1 -1
  107. package/es/AlignBox/style/index.css +1 -1
  108. package/es/Anchor/anchorMenu/index.d.ts +2 -1
  109. package/es/Anchor/anchorMenu/index.js +36 -33
  110. package/es/Anchor/component.json +130 -0
  111. package/es/Anchor/index.js +50 -47
  112. package/es/Anchor/type.d.ts +8 -4
  113. package/es/Argv/component.json +216 -0
  114. package/es/Argv/index.d.ts +5 -6
  115. package/es/AutoBox/component.json +133 -0
  116. package/es/AutoBox/index.d.ts +3 -3
  117. package/es/AutoBox/index.js +1 -1
  118. package/es/AutoBox/protal.d.ts +2 -2
  119. package/es/AutoBox/protal.js +32 -29
  120. package/es/AutoButton/component.json +109 -0
  121. package/es/AutoButton/index.js +1 -1
  122. package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  123. package/es/AutoTips/autoTipsMultiline/index.js +1 -1
  124. package/es/AutoTips/component.json +121 -0
  125. package/es/Badge/component.json +92 -0
  126. package/es/Breadcrumbs/component.json +142 -0
  127. package/es/Breadcrumbs/index.js +1 -1
  128. package/es/Button/SplitButton.d.ts +2 -2
  129. package/es/Button/component.json +168 -0
  130. package/es/Button/index.js +44 -44
  131. package/es/ButtonGroup/component.json +132 -0
  132. package/es/ButtonGroup/index.d.ts +1 -1
  133. package/es/Card/component.json +162 -0
  134. package/es/Card/index.d.ts +2 -2
  135. package/es/Card/index.js +2 -2
  136. package/es/Carousel/component.json +142 -0
  137. package/es/Carousel/index.d.ts +1 -1
  138. package/es/Cascader/Cascader.js +188 -180
  139. package/es/Cascader/component.json +196 -0
  140. package/es/Cascader/hooks/useEntities.js +7 -7
  141. package/es/Cascader/interface.d.ts +1 -0
  142. package/es/Cascader/utils/commonUtil.d.ts +1 -1
  143. package/es/Cascader/utils/commonUtil.js +16 -16
  144. package/es/Cascader/utils/treeUtil.d.ts +14 -5
  145. package/es/Cascader/utils/treeUtil.js +1 -1
  146. package/es/Checkbox/component.json +138 -0
  147. package/es/CheckboxGroup/component.json +152 -0
  148. package/es/CodeEditor/component.json +189 -0
  149. package/es/CodeEditor/index.d.ts +10 -9
  150. package/es/Collapse/component.json +166 -0
  151. package/es/Collapse/index.d.ts +1 -1
  152. package/es/Collapse/index.js +41 -33
  153. package/es/CollapseBox/component.json +84 -0
  154. package/es/CollapseLayout/component.json +155 -0
  155. package/es/ColorPicker/component.json +142 -0
  156. package/es/ComboSelect/component.json +181 -0
  157. package/es/ComboSelect/index.js +299 -287
  158. package/es/ComboSelect/interface.d.ts +6 -3
  159. package/es/ComboSelect/utils.d.ts +3 -3
  160. package/es/ComboSelect/utils.js +1 -1
  161. package/es/Container/component.json +111 -0
  162. package/es/ContentBox/component.json +81 -0
  163. package/es/CopyText/component.json +118 -0
  164. package/es/CycleSelector/component.json +98 -0
  165. package/es/CycleSelector/index.js +14 -13
  166. package/es/DatePicker/component.json +192 -0
  167. package/es/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
  168. package/es/DatePicker/generatePicker/generateRangePicker.js +73 -65
  169. package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  170. package/es/DatePicker/generatePicker/index.d.ts +11 -4
  171. package/es/Descriptions/component.json +142 -0
  172. package/es/Descriptions/index.d.ts +1 -1
  173. package/es/Desktop/component.json +171 -0
  174. package/es/DragVerify/component.json +114 -0
  175. package/es/DragVerify/index.js +19 -19
  176. package/es/Drawer/component.json +200 -0
  177. package/es/Drawer/index.js +86 -86
  178. package/es/Drawer/interface.d.ts +1 -1
  179. package/es/Drawer/util.d.ts +1 -6
  180. package/es/Drawer/util.js +9 -6
  181. package/es/Dropdown/component.json +147 -0
  182. package/es/DynamicMultiBox/component.json +278 -0
  183. package/es/DynamicMultiBox/formItem.d.ts +1 -1
  184. package/es/DynamicMultiBox/rowForm.d.ts +2 -2
  185. package/es/Empty/component.json +123 -0
  186. package/es/Empty/index.css +1 -1
  187. package/es/Empty/index.d.ts +2 -2
  188. package/es/Empty/index.js +27 -26
  189. package/es/Empty/style/index.css +1 -1
  190. package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  191. package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
  192. package/es/FieldForm/Form.d.ts +2 -2
  193. package/es/FieldForm/FormList.d.ts +2 -2
  194. package/es/FieldForm/component.json +196 -0
  195. package/es/FieldForm/context.d.ts +5 -1
  196. package/es/FieldForm/context.js +2 -2
  197. package/es/FieldForm/hooks/useForm.d.ts +4 -3
  198. package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
  199. package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  200. package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
  201. package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
  202. package/es/FieldForm/hooks/useItemRef.js +6 -6
  203. package/es/Form/component.json +161 -0
  204. package/es/Form/index.d.ts +52 -49
  205. package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  206. package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
  207. package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  208. package/es/FormItem/compoments/formFile/index.js +8 -8
  209. package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  210. package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
  211. package/es/FormItem/component.json +171 -0
  212. package/es/FormItem/index.d.ts +5 -5
  213. package/es/FormItem/index.js +23 -23
  214. package/es/FormItem/itemType.js +1 -1
  215. package/es/FunctionModal/component.json +197 -0
  216. package/es/FunctionModal/dialog.d.ts +1 -1
  217. package/es/FunctionModal/modalContext.d.ts +4 -1
  218. package/es/Help/component.json +118 -0
  219. package/es/HelperText/component.json +126 -0
  220. package/es/Image/component.json +165 -0
  221. package/es/InputCode/component.json +191 -0
  222. package/es/InputCode/index.d.ts +2 -2
  223. package/es/InputLang/component.json +205 -0
  224. package/es/InputLang/index.js +1 -1
  225. package/es/InputNumber/component.json +162 -0
  226. package/es/Label/component.json +126 -0
  227. package/es/Label/index.d.ts +2 -2
  228. package/es/Loading/component.json +91 -0
  229. package/es/Menu/component.json +180 -0
  230. package/es/Message/component.json +246 -0
  231. package/es/Message/index.d.ts +2 -2
  232. package/es/Message/index.js +2 -2
  233. package/es/Modal/Confirm/index.d.ts +1 -1
  234. package/es/Modal/Confirm/index.js +81 -75
  235. package/es/Modal/component.json +277 -0
  236. package/es/Modal/index.d.ts +97 -6
  237. package/es/Modal/index.js +174 -122
  238. package/es/Modal/interface.d.ts +1 -0
  239. package/es/MultiBox/component.json +216 -0
  240. package/es/MultiBox/index.js +19 -14
  241. package/es/Notification/component.json +184 -0
  242. package/es/OperateBtn/component.json +134 -0
  243. package/es/OperateBtn/index.d.ts +3 -3
  244. package/es/PageHeader/component.json +112 -0
  245. package/es/Pagination/component.json +181 -0
  246. package/es/Pagination/index.js +15 -15
  247. package/es/PasswordRules/component.json +105 -0
  248. package/es/PasswordRules/index.d.ts +4 -4
  249. package/es/PopConfirm/component.json +227 -0
  250. package/es/PopConfirm/index.d.ts +1 -1
  251. package/es/PopConfirm/index.js +1 -1
  252. package/es/PopMenu/component.json +131 -0
  253. package/es/PopMenu/hooks.d.ts +1 -1
  254. package/es/PopMenu/index.js +8 -8
  255. package/es/Popover/component.json +165 -0
  256. package/es/Popover/index.js +1 -1
  257. package/es/Progress/component.json +161 -0
  258. package/es/Prompt/component.json +144 -0
  259. package/es/Querying/component.json +96 -0
  260. package/es/Querying/index.css +1 -1
  261. package/es/Querying/index.d.ts +2 -2
  262. package/es/Querying/index.js +20 -19
  263. package/es/Querying/style/index.css +1 -1
  264. package/es/QuickReply/component.json +129 -0
  265. package/es/QuickReply/index.d.ts +1 -1
  266. package/es/Radio/component.json +136 -0
  267. package/es/RadioGroup/component.json +149 -0
  268. package/es/RangeInput/component.json +198 -0
  269. package/es/RangeInput/index.js +1 -1
  270. package/es/Result/component.json +104 -0
  271. package/es/ScrollBar/component.json +115 -0
  272. package/es/Search/component.json +177 -0
  273. package/es/Search/index.d.ts +1 -1
  274. package/es/Select/component.json +244 -0
  275. package/es/Select/index.js +113 -113
  276. package/es/SelectInput/component.json +184 -0
  277. package/es/Selector/component.json +203 -0
  278. package/es/Selector/index.js +28 -27
  279. package/es/Selector/interface.d.ts +1 -1
  280. package/es/Selector/selectorMain/index.js +2 -2
  281. package/es/Selector/selectorNode/index.js +1 -1
  282. package/es/Selector/util.d.ts +2 -2
  283. package/es/SelectorPicker/component.json +179 -0
  284. package/es/SelectorPicker/index.d.ts +5 -5
  285. package/es/SelectorPicker/index.js +15 -15
  286. package/es/SingleBox/component.json +151 -0
  287. package/es/SingleBox/index.d.ts +2 -2
  288. package/es/Slider/component.json +181 -0
  289. package/es/SortBox/component.json +108 -0
  290. package/es/Status/component.json +104 -0
  291. package/es/Stepper/component.json +129 -0
  292. package/es/Stepper/index.d.ts +2 -2
  293. package/es/Switch/component.json +207 -0
  294. package/es/Switch/index.css +1 -1
  295. package/es/Switch/index.d.ts +3 -2
  296. package/es/Switch/index.js +60 -59
  297. package/es/Switch/style/index.css +1 -1
  298. package/es/Table/component.json +547 -0
  299. package/es/Table/index.d.ts +2 -2
  300. package/es/Table/index.js +414 -414
  301. package/es/Table/interface.d.ts +6 -0
  302. package/es/Tabs/component.json +227 -0
  303. package/es/Tag/component.json +221 -0
  304. package/es/Tag/index.css +1 -1
  305. package/es/Tag/index.d.ts +1 -1
  306. package/es/Tag/index.js +20 -20
  307. package/es/Tag/style/index.css +1 -1
  308. package/es/TextEditor/component.json +186 -0
  309. package/es/TextEditor/index.d.ts +5 -5
  310. package/es/TextField/component.json +290 -0
  311. package/es/TextField/index.d.ts +2 -2
  312. package/es/TimePicker/component.json +176 -0
  313. package/es/Timeline/component.json +110 -0
  314. package/es/Title/component.json +156 -0
  315. package/es/ToggleButton/component.json +153 -0
  316. package/es/Tooltip/component.json +176 -0
  317. package/es/Tooltip/index.js +74 -63
  318. package/es/Tooltip/interface.d.ts +14 -1
  319. package/es/Tooltip/utils.js +6 -6
  320. package/es/Transfer/component.json +157 -0
  321. package/es/Tree/component.json +512 -0
  322. package/es/Upload/component.json +450 -0
  323. package/es/Utils/type.d.ts +0 -2
  324. package/es/index.d.ts +2 -0
  325. package/es/index.js +1 -1
  326. package/es/locale/en_US.d.ts +361 -0
  327. package/es/locale/en_US.js +364 -0
  328. package/es/locale/index.d.ts +1 -723
  329. package/es/locale/index2.js +10 -0
  330. package/es/locale/zh_CN.d.ts +361 -0
  331. package/es/locale/zh_CN.js +364 -0
  332. package/lib/AlignBox/component.json +89 -0
  333. package/lib/AlignBox/index.css +1 -1
  334. package/lib/AlignBox/index.d.ts +6 -2
  335. package/lib/AlignBox/index.js +1 -1
  336. package/lib/AlignBox/style/index.css +1 -1
  337. package/lib/Anchor/anchorMenu/index.d.ts +2 -1
  338. package/lib/Anchor/anchorMenu/index.js +1 -1
  339. package/lib/Anchor/component.json +130 -0
  340. package/lib/Anchor/index.js +1 -1
  341. package/lib/Anchor/type.d.ts +8 -4
  342. package/lib/Argv/component.json +216 -0
  343. package/lib/Argv/index.d.ts +5 -6
  344. package/lib/AutoBox/component.json +133 -0
  345. package/lib/AutoBox/index.d.ts +3 -3
  346. package/lib/AutoBox/index.js +1 -1
  347. package/lib/AutoBox/protal.d.ts +2 -2
  348. package/lib/AutoBox/protal.js +1 -1
  349. package/lib/AutoButton/component.json +109 -0
  350. package/lib/AutoButton/index.js +1 -1
  351. package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  352. package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
  353. package/lib/AutoTips/component.json +121 -0
  354. package/lib/Badge/component.json +92 -0
  355. package/lib/Breadcrumbs/component.json +142 -0
  356. package/lib/Breadcrumbs/index.js +1 -1
  357. package/lib/Button/SplitButton.d.ts +2 -2
  358. package/lib/Button/component.json +168 -0
  359. package/lib/Button/index.js +1 -1
  360. package/lib/ButtonGroup/component.json +132 -0
  361. package/lib/ButtonGroup/index.d.ts +1 -1
  362. package/lib/Card/component.json +162 -0
  363. package/lib/Card/index.d.ts +2 -2
  364. package/lib/Card/index.js +1 -1
  365. package/lib/Carousel/component.json +142 -0
  366. package/lib/Carousel/index.d.ts +1 -1
  367. package/lib/Cascader/Cascader.js +1 -1
  368. package/lib/Cascader/component.json +196 -0
  369. package/lib/Cascader/hooks/useEntities.js +1 -1
  370. package/lib/Cascader/interface.d.ts +1 -0
  371. package/lib/Cascader/utils/commonUtil.d.ts +1 -1
  372. package/lib/Cascader/utils/commonUtil.js +1 -1
  373. package/lib/Cascader/utils/treeUtil.d.ts +14 -5
  374. package/lib/Cascader/utils/treeUtil.js +1 -1
  375. package/lib/Checkbox/component.json +138 -0
  376. package/lib/CheckboxGroup/component.json +152 -0
  377. package/lib/CodeEditor/component.json +189 -0
  378. package/lib/CodeEditor/index.d.ts +10 -9
  379. package/lib/Collapse/component.json +166 -0
  380. package/lib/Collapse/index.d.ts +1 -1
  381. package/lib/Collapse/index.js +1 -1
  382. package/lib/CollapseBox/component.json +84 -0
  383. package/lib/CollapseLayout/component.json +155 -0
  384. package/lib/ColorPicker/component.json +142 -0
  385. package/lib/ComboSelect/component.json +181 -0
  386. package/lib/ComboSelect/index.js +1 -1
  387. package/lib/ComboSelect/interface.d.ts +6 -3
  388. package/lib/ComboSelect/utils.d.ts +3 -3
  389. package/lib/ComboSelect/utils.js +1 -1
  390. package/lib/Container/component.json +111 -0
  391. package/lib/ContentBox/component.json +81 -0
  392. package/lib/CopyText/component.json +118 -0
  393. package/lib/CycleSelector/component.json +98 -0
  394. package/lib/CycleSelector/index.js +1 -1
  395. package/lib/DatePicker/component.json +192 -0
  396. package/lib/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
  397. package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
  398. package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  399. package/lib/DatePicker/generatePicker/index.d.ts +11 -4
  400. package/lib/Descriptions/component.json +142 -0
  401. package/lib/Descriptions/index.d.ts +1 -1
  402. package/lib/Desktop/component.json +171 -0
  403. package/lib/DragVerify/component.json +114 -0
  404. package/lib/DragVerify/index.js +1 -1
  405. package/lib/Drawer/component.json +200 -0
  406. package/lib/Drawer/index.js +1 -1
  407. package/lib/Drawer/interface.d.ts +1 -1
  408. package/lib/Drawer/util.d.ts +1 -6
  409. package/lib/Drawer/util.js +1 -1
  410. package/lib/Dropdown/component.json +147 -0
  411. package/lib/DynamicMultiBox/component.json +278 -0
  412. package/lib/DynamicMultiBox/formItem.d.ts +1 -1
  413. package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
  414. package/lib/Empty/component.json +123 -0
  415. package/lib/Empty/index.css +1 -1
  416. package/lib/Empty/index.d.ts +2 -2
  417. package/lib/Empty/index.js +1 -1
  418. package/lib/Empty/style/index.css +1 -1
  419. package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  420. package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
  421. package/lib/FieldForm/Form.d.ts +2 -2
  422. package/lib/FieldForm/FormList.d.ts +2 -2
  423. package/lib/FieldForm/component.json +196 -0
  424. package/lib/FieldForm/context.d.ts +5 -1
  425. package/lib/FieldForm/context.js +1 -1
  426. package/lib/FieldForm/hooks/useForm.d.ts +4 -3
  427. package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
  428. package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  429. package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
  430. package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
  431. package/lib/FieldForm/hooks/useItemRef.js +1 -1
  432. package/lib/Form/component.json +161 -0
  433. package/lib/Form/index.d.ts +52 -49
  434. package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  435. package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
  436. package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  437. package/lib/FormItem/compoments/formFile/index.js +1 -1
  438. package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  439. package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
  440. package/lib/FormItem/component.json +171 -0
  441. package/lib/FormItem/index.d.ts +5 -5
  442. package/lib/FormItem/index.js +1 -1
  443. package/lib/FormItem/itemType.js +1 -1
  444. package/lib/FunctionModal/component.json +197 -0
  445. package/lib/FunctionModal/dialog.d.ts +1 -1
  446. package/lib/FunctionModal/modalContext.d.ts +4 -1
  447. package/lib/Help/component.json +118 -0
  448. package/lib/HelperText/component.json +126 -0
  449. package/lib/Image/component.json +165 -0
  450. package/lib/InputCode/component.json +191 -0
  451. package/lib/InputCode/index.d.ts +2 -2
  452. package/lib/InputLang/component.json +205 -0
  453. package/lib/InputLang/index.js +1 -1
  454. package/lib/InputNumber/component.json +162 -0
  455. package/lib/Label/component.json +126 -0
  456. package/lib/Label/index.d.ts +2 -2
  457. package/lib/Loading/component.json +91 -0
  458. package/lib/Menu/component.json +180 -0
  459. package/lib/Message/component.json +246 -0
  460. package/lib/Message/index.d.ts +2 -2
  461. package/lib/Message/index.js +1 -1
  462. package/lib/Modal/Confirm/index.d.ts +1 -1
  463. package/lib/Modal/Confirm/index.js +1 -1
  464. package/lib/Modal/component.json +277 -0
  465. package/lib/Modal/index.d.ts +97 -6
  466. package/lib/Modal/index.js +1 -1
  467. package/lib/Modal/interface.d.ts +1 -0
  468. package/lib/MultiBox/component.json +216 -0
  469. package/lib/MultiBox/index.js +1 -1
  470. package/lib/Notification/component.json +184 -0
  471. package/lib/OperateBtn/component.json +134 -0
  472. package/lib/OperateBtn/index.d.ts +3 -3
  473. package/lib/PageHeader/component.json +112 -0
  474. package/lib/Pagination/component.json +181 -0
  475. package/lib/Pagination/index.js +1 -1
  476. package/lib/PasswordRules/component.json +105 -0
  477. package/lib/PasswordRules/index.d.ts +4 -4
  478. package/lib/PopConfirm/component.json +227 -0
  479. package/lib/PopConfirm/index.d.ts +1 -1
  480. package/lib/PopConfirm/index.js +1 -1
  481. package/lib/PopMenu/component.json +131 -0
  482. package/lib/PopMenu/hooks.d.ts +1 -1
  483. package/lib/PopMenu/index.js +1 -1
  484. package/lib/Popover/component.json +165 -0
  485. package/lib/Popover/index.js +1 -1
  486. package/lib/Progress/component.json +161 -0
  487. package/lib/Prompt/component.json +144 -0
  488. package/lib/Querying/component.json +96 -0
  489. package/lib/Querying/index.css +1 -1
  490. package/lib/Querying/index.d.ts +2 -2
  491. package/lib/Querying/index.js +1 -1
  492. package/lib/Querying/style/index.css +1 -1
  493. package/lib/QuickReply/component.json +129 -0
  494. package/lib/QuickReply/index.d.ts +1 -1
  495. package/lib/Radio/component.json +136 -0
  496. package/lib/RadioGroup/component.json +149 -0
  497. package/lib/RangeInput/component.json +198 -0
  498. package/lib/RangeInput/index.js +1 -1
  499. package/lib/Result/component.json +104 -0
  500. package/lib/ScrollBar/component.json +115 -0
  501. package/lib/Search/component.json +177 -0
  502. package/lib/Search/index.d.ts +1 -1
  503. package/lib/Select/component.json +244 -0
  504. package/lib/Select/index.js +1 -1
  505. package/lib/SelectInput/component.json +184 -0
  506. package/lib/Selector/component.json +203 -0
  507. package/lib/Selector/index.js +1 -1
  508. package/lib/Selector/interface.d.ts +1 -1
  509. package/lib/Selector/selectorMain/index.js +1 -1
  510. package/lib/Selector/selectorNode/index.js +1 -1
  511. package/lib/Selector/util.d.ts +2 -2
  512. package/lib/SelectorPicker/component.json +179 -0
  513. package/lib/SelectorPicker/index.d.ts +5 -5
  514. package/lib/SelectorPicker/index.js +1 -1
  515. package/lib/SingleBox/component.json +151 -0
  516. package/lib/SingleBox/index.d.ts +2 -2
  517. package/lib/Slider/component.json +181 -0
  518. package/lib/SortBox/component.json +108 -0
  519. package/lib/Status/component.json +104 -0
  520. package/lib/Stepper/component.json +129 -0
  521. package/lib/Stepper/index.d.ts +2 -2
  522. package/lib/Switch/component.json +207 -0
  523. package/lib/Switch/index.css +1 -1
  524. package/lib/Switch/index.d.ts +3 -2
  525. package/lib/Switch/index.js +1 -1
  526. package/lib/Switch/style/index.css +1 -1
  527. package/lib/Table/component.json +547 -0
  528. package/lib/Table/index.d.ts +2 -2
  529. package/lib/Table/index.js +1 -1
  530. package/lib/Table/interface.d.ts +6 -0
  531. package/lib/Tabs/component.json +227 -0
  532. package/lib/Tag/component.json +221 -0
  533. package/lib/Tag/index.css +1 -1
  534. package/lib/Tag/index.d.ts +1 -1
  535. package/lib/Tag/index.js +1 -1
  536. package/lib/Tag/style/index.css +1 -1
  537. package/lib/TextEditor/component.json +186 -0
  538. package/lib/TextEditor/index.d.ts +5 -5
  539. package/lib/TextField/component.json +290 -0
  540. package/lib/TextField/index.d.ts +2 -2
  541. package/lib/TimePicker/component.json +176 -0
  542. package/lib/Timeline/component.json +110 -0
  543. package/lib/Title/component.json +156 -0
  544. package/lib/ToggleButton/component.json +153 -0
  545. package/lib/Tooltip/component.json +176 -0
  546. package/lib/Tooltip/index.js +1 -1
  547. package/lib/Tooltip/interface.d.ts +14 -1
  548. package/lib/Tooltip/utils.js +1 -1
  549. package/lib/Transfer/component.json +157 -0
  550. package/lib/Tree/component.json +512 -0
  551. package/lib/Upload/component.json +450 -0
  552. package/lib/Utils/type.d.ts +0 -2
  553. package/lib/index.d.ts +2 -0
  554. package/lib/index.js +1 -1
  555. package/lib/locale/en_US.d.ts +361 -0
  556. package/lib/locale/en_US.js +2 -0
  557. package/lib/locale/index.d.ts +1 -723
  558. package/lib/locale/index2.js +2 -0
  559. package/lib/locale/zh_CN.d.ts +361 -0
  560. package/lib/locale/zh_CN.js +2 -0
  561. package/package.json +10 -3
  562. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  563. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
  564. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  565. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
package/es/Modal/index.js CHANGED
@@ -1,70 +1,122 @@
1
1
  import { j as t } from "../_virtual/jsx-runtime.js";
2
- import p from "react";
3
- import le from "rc-dialog";
4
- import { Button as m } from "../Button/index.js";
5
- import { Close as ae } from "../node_modules/@para-ui/icons/Close/index.js";
6
- import ie from "../GlobalContext/useFormatMessage.js";
7
- import ce from "./lang/index.js";
8
- import { Confirm as Ne } from "./Confirm/index.js";
9
- import C from "clsx";
10
- import { $prefixCls as y } from "../GlobalContext/constant.js";
11
- import me from "../AutoTips/index.js";
2
+ import n from "react";
3
+ import _e from "rc-dialog";
4
+ import { Button as k } from "../Button/index.js";
5
+ import { Close as ze } from "../node_modules/@para-ui/icons/Close/index.js";
6
+ import Fe from "../GlobalContext/useFormatMessage.js";
7
+ import Te from "./lang/index.js";
8
+ import { Confirm as to } from "./Confirm/index.js";
9
+ import P from "clsx";
10
+ import { $prefixCls as W } from "../GlobalContext/constant.js";
11
+ import Ie from "../AutoTips/index.js";
12
12
  import './index.css';/* empty css */
13
- let u;
14
- const ue = (o) => {
15
- u = {
16
- x: o.pageX,
17
- y: o.pageY
13
+ let h;
14
+ const Ke = (e) => {
15
+ h = {
16
+ x: e.pageX,
17
+ y: e.pageY
18
18
  }, setTimeout(() => {
19
- u = null;
19
+ h = null;
20
20
  }, 100);
21
21
  };
22
- window.document.documentElement && document.documentElement.addEventListener("click", ue, !0);
23
- const we = (o) => {
22
+ window.document.documentElement && document.documentElement.addEventListener("click", Ke, !0);
23
+ const oo = (e) => {
24
24
  const {
25
- open: $,
26
- visible: b = !1,
27
- closeIcon: S,
28
- centered: w = !0,
29
- focusTriggerAfterClose: j = !0,
30
- title: z,
31
- footer: N,
32
- showActions: B = !0,
33
- actions: F,
34
- header: d,
35
- hideHeader: H = !1,
36
- showCancel: M = !0,
37
- maskClosable: v = !1,
38
- disableBackdropClick: A = !0,
39
- keyboard: T = !1,
40
- disableEscapeKeyDown: E = !0,
41
- fullScreen: P,
42
- customizeSize: I,
43
- style: D,
44
- bodyStyle: L,
45
- contentWidth: O,
46
- contentHeight: f,
47
- contentStyle: h,
48
- size: s = "md",
49
- children: R,
50
- closable: W = !0,
51
- mask: g = !0,
52
- ..._
53
- } = o, J = P || s === "fullScreen", x = ie("Modal", ce), e = `${y}-modal`, a = (n) => {
54
- o.onCancel?.(n);
55
- }, K = (n) => {
56
- o.onOk?.(n);
57
- }, X = () => {
58
- const n = {
59
- sm: `${e}-sm`,
60
- md: `${e}-md`,
61
- lg: `${e}-lg`,
62
- auto: `${e}-auto`,
63
- fullScreen: `${e}-fullscreen`
25
+ open: f,
26
+ visible: m,
27
+ defaultOpen: v,
28
+ closeIcon: X,
29
+ centered: L = !0,
30
+ focusTriggerAfterClose: J = !0,
31
+ title: Q,
32
+ footer: U,
33
+ showActions: Y = !0,
34
+ actions: q,
35
+ header: E,
36
+ hideHeader: Z = !1,
37
+ showCancel: ee = !0,
38
+ maskClosable: oe = !1,
39
+ disableBackdropClick: ne = !0,
40
+ closeOnBackdrop: p,
41
+ keyboard: se = !1,
42
+ disableEscapeKeyDown: te = !0,
43
+ closeOnEsc: x,
44
+ restoreFocusOnClose: g,
45
+ fullScreen: le,
46
+ customizeSize: ae,
47
+ style: re,
48
+ bodyStyle: ce,
49
+ contentWidth: ie,
50
+ contentHeight: N,
51
+ contentStyle: b,
52
+ size: a = "md",
53
+ children: de,
54
+ closable: ue = !0,
55
+ mask: w = !0,
56
+ ...fe
57
+ } = e, O = Fe("Modal", Te), i = e.onClose !== void 0, S = n.useRef(!1);
58
+ n.useEffect(() => {
59
+ process.env.NODE_ENV !== "production" && i && !S.current && (S.current = !0, console.warn(
60
+ "[Modal] onClose 已在 v5.x.next 标记为 @deprecated,将在 v6.0 移除。请迁移到 onDismiss(处理 X/ESC/mask 关闭)+ onOk(确定按钮)+ onCancel(取消按钮)三回调模式。详见 BREAKING-CHANGES §B-Modal-props-rework。"
61
+ ));
62
+ }, [i]);
63
+ const B = m !== void 0, D = n.useRef(!1);
64
+ n.useEffect(() => {
65
+ process.env.NODE_ENV !== "production" && B && !D.current && (D.current = !0, console.warn(
66
+ "[Modal] visible 已在 v5.x.next 标记为 @deprecated,将在 v6.0 移除。请改用 open prop。详见 BREAKING-CHANGES §B-Modal-props-rework 子条 #3-A"
67
+ ));
68
+ }, [B]);
69
+ const A = e.onOk !== void 0, M = e.onSubmit !== void 0, y = n.useRef(!1);
70
+ n.useEffect(() => {
71
+ process.env.NODE_ENV !== "production" && A && !M && !y.current && (y.current = !0, console.warn(
72
+ "[Modal] onOk 已在 v5.x.next 标记为 @deprecated,将在 v6.0 移除。请改用 onSubmit prop(语义更清晰)。详见 BREAKING-CHANGES §B-Modal-props-rework"
73
+ ));
74
+ }, [A, M]);
75
+ const R = e.onCancel !== void 0, $ = e.onDismiss !== void 0, j = n.useRef(!1);
76
+ n.useEffect(() => {
77
+ if (process.env.NODE_ENV !== "production" && R && !$ && !i && !j.current)
78
+ throw j.current = !0, new Error(
79
+ "[Modal] v5.0.0-beta.14 起 X / ESC / 蒙层关闭路径主职责已交给 onDismiss(γ 互斥语义)。当前仅传 onCancel 而未传 onDismiss/onClose,prod 走 fallback 兼容,dev 抛 Error 强制迁移。一键迁移:`npx jscodeshift -t node_modules/@para-ui/core/codemods/modal-onCancel-to-onDismiss.js --parser=tsx src/`。v6.0(2026 Q3)起 fallback 删除,届时 X/ESC/mask 静默失效。详见 docs/UPGRADE_v4_to_v5.md §3.D.0 + BREAKING-CHANGES §B-Modal-props-rework 子条 #5。"
80
+ );
81
+ }, [R, $, i]);
82
+ const H = e.maskClosable !== void 0, G = e.disableBackdropClick !== void 0, _ = e.disableEscapeKeyDown !== void 0, z = e.focusTriggerAfterClose !== void 0, F = n.useRef(!1);
83
+ n.useEffect(() => {
84
+ if (process.env.NODE_ENV === "production" || F.current) return;
85
+ const o = [];
86
+ H && o.push("maskClosable → closeOnBackdrop"), G && o.push("disableBackdropClick → closeOnBackdrop"), _ && o.push("disableEscapeKeyDown → closeOnEsc"), z && o.push("focusTriggerAfterClose → restoreFocusOnClose"), o.length !== 0 && (F.current = !0, console.warn(
87
+ `[Modal] 检测到 v5.x.next 已 @deprecated 的反向命名 prop:${o.join("、")}。v5.x 仍 fallback 兼容,v6.0 移除。请按箭头右侧迁移到正向命名(对齐业界 antd/chakra/mui)。详见 BREAKING-CHANGES §B-Modal-props-rework + §B6。`
88
+ ));
89
+ }, [H, G, _, z]);
90
+ const l = f !== void 0 || m !== void 0, [me, d] = n.useState(v ?? !1), Ce = l ? f ?? m ?? !1 : me, T = v !== void 0, I = f !== void 0;
91
+ n.useEffect(() => {
92
+ process.env.NODE_ENV !== "production" && I && T && console.warn(
93
+ "[Modal] 同时传 open + defaultOpen,defaultOpen 被忽略(open 优先,受控模式)。详见 BREAKING-CHANGES §B-Modal-props-rework 子条 #2"
94
+ );
95
+ }, [I, T]);
96
+ const K = n.useRef(l);
97
+ n.useEffect(() => {
98
+ K.current !== l && (process.env.NODE_ENV !== "production" && console.warn("[Modal] open 受控/非受控状态运行时切换,React 不支持此模式,请保持一致。"), K.current = l);
99
+ }, [l]);
100
+ const ke = le || a === "fullScreen", s = `${W}-modal`, he = x !== void 0 ? x : !te, ve = p !== void 0 ? p : !ne, Ee = g !== void 0 ? g : J, pe = (o) => {
101
+ e.onCancel?.(o), e.onClose?.("cancel"), l || d(!1);
102
+ }, xe = (o) => {
103
+ e.onClose !== void 0 ? (e.onCancel?.(o), e.onClose("x")) : e.onDismiss !== void 0 ? e.onDismiss("x") : e.onCancel?.(o), l || d(!1);
104
+ }, ge = (o) => {
105
+ const r = o && o.type === "keydown" ? "esc" : "mask";
106
+ e.onClose !== void 0 ? (e.onCancel?.(o), e.onClose(r)) : e.onDismiss !== void 0 ? e.onDismiss(r) : e.onCancel?.(o), l || d(!1);
107
+ }, Ne = (o) => {
108
+ e.onSubmit ? e.onSubmit(o) : e.onOk?.(o), e.onClose?.("ok"), l || d(!1);
109
+ }, be = () => {
110
+ const o = {
111
+ sm: `${s}-sm`,
112
+ md: `${s}-md`,
113
+ lg: `${s}-lg`,
114
+ auto: `${s}-auto`,
115
+ fullScreen: `${s}-fullscreen`
64
116
  };
65
- if (!h)
66
- return J ? n.fullScreen : n[s];
67
- }, Y = () => !s || s === "fullScreen" || s === "auto" ? void 0 : {
117
+ if (!b)
118
+ return ke ? o.fullScreen : o[a];
119
+ }, we = () => !a || a === "fullScreen" || a === "auto" ? void 0 : {
68
120
  sm: {
69
121
  width: 430,
70
122
  maxHeight: 118
@@ -77,94 +129,94 @@ const we = (o) => {
77
129
  width: 948,
78
130
  maxHeight: 478
79
131
  }
80
- }[s], q = () => g ? `${e}-with-mask` : `${e}-without-mask`, G = () => ({ ...I, ...D }), Q = () => {
81
- const { maxHeight: n, width: i } = Y() || {};
132
+ }[a], Oe = () => w ? `${s}-with-mask` : `${s}-without-mask`, Se = () => ({ ...ae, ...re }), Be = () => {
133
+ const { maxHeight: o, width: r } = we() || {};
82
134
  return {
83
135
  // contentWidth 和 contentHeight 优先级总是最高
84
- maxHeight: f || n || "calc(100vh - 142px)",
85
- width: O || i,
86
- height: f,
136
+ maxHeight: N || o || "calc(100vh - 142px)",
137
+ width: ie || r,
138
+ height: N,
87
139
  // minHeight: contentHeight || 118,
88
- ...L,
89
- ...h
140
+ ...ce,
141
+ ...b
90
142
  };
91
- }, U = () => {
92
- if (H) return null;
93
- if (d) return d;
94
- const n = W && /* @__PURE__ */ t.jsx(
95
- m.IconButton,
143
+ }, De = () => {
144
+ if (Z) return null;
145
+ if (E) return E;
146
+ const o = ue && /* @__PURE__ */ t.jsx(
147
+ k.IconButton,
96
148
  {
97
- onClick: a,
98
- className: `${e}-close`,
149
+ onClick: xe,
150
+ className: `${s}-close`,
99
151
  variant: "outlined",
100
152
  size: "small",
101
- children: S || /* @__PURE__ */ t.jsx(ae, { className: `${e}-close-icon` })
153
+ children: X || /* @__PURE__ */ t.jsx(ze, { className: `${s}-close-icon` })
102
154
  }
103
155
  );
104
156
  return /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
105
- /* @__PURE__ */ t.jsx(me, { className: `${e}-title-text`, children: z }),
106
- n
157
+ /* @__PURE__ */ t.jsx(Ie, { className: `${s}-title-text`, children: Q }),
158
+ o
107
159
  ] });
108
- }, V = () => {
109
- if (!B) return null;
110
- const { okText: n, cancelText: i, okButtonProps: te, cancelButtonProps: ne, confirmLoading: oe = !1 } = o, se = /* @__PURE__ */ t.jsx(
111
- m,
160
+ }, Ae = () => {
161
+ if (!Y) return null;
162
+ const { okText: o, cancelText: r, okButtonProps: Re, cancelButtonProps: $e, confirmLoading: je = !1 } = e, He = /* @__PURE__ */ t.jsx(
163
+ k,
112
164
  {
113
165
  variant: "contained",
114
166
  size: "large",
115
- loading: oe,
116
- onClick: K,
117
- ...te,
118
- children: n ?? x({ id: "ok" })
167
+ loading: je,
168
+ onClick: Ne,
169
+ ...Re,
170
+ children: o ?? O({ id: "ok" })
119
171
  }
120
- ), k = [M && /* @__PURE__ */ t.jsx(
121
- m,
172
+ ), V = [ee && /* @__PURE__ */ t.jsx(
173
+ k,
122
174
  {
123
175
  variant: "outlined",
124
176
  size: "large",
125
- onClick: a,
126
- ...ne,
127
- children: i ?? x({ id: "cancel" })
177
+ onClick: pe,
178
+ ...$e,
179
+ children: r ?? O({ id: "cancel" })
128
180
  }
129
- ), se], l = F ?? N;
130
- if (typeof l == "function") {
131
- const r = l(k);
132
- return /* @__PURE__ */ t.jsx(t.Fragment, { children: Array.isArray(r) ? r.map((c, re) => /* @__PURE__ */ t.jsx(p.Fragment, { children: c }, re)) : r });
133
- } else if (l)
134
- return l;
135
- return /* @__PURE__ */ t.jsx(t.Fragment, { children: k.map((r, c) => /* @__PURE__ */ t.jsx(p.Fragment, { children: r }, c)) });
136
- }, Z = C(o.wrapClassName, {
137
- [`${e}-centered`]: w
138
- }), ee = C(o.className, `${y}-scrollbar-small`, X(), q());
181
+ ), He], u = q ?? U;
182
+ if (typeof u == "function") {
183
+ const c = u(V);
184
+ return /* @__PURE__ */ t.jsx(t.Fragment, { children: Array.isArray(c) ? c.map((C, Ge) => /* @__PURE__ */ t.jsx(n.Fragment, { children: C }, Ge)) : c });
185
+ } else if (u)
186
+ return u;
187
+ return /* @__PURE__ */ t.jsx(t.Fragment, { children: V.map((c, C) => /* @__PURE__ */ t.jsx(n.Fragment, { children: c }, C)) });
188
+ }, Me = P(e.wrapClassName, {
189
+ [`${s}-centered`]: L
190
+ }), ye = P(e.className, `${W}-scrollbar-small`, be(), Oe());
139
191
  return /* @__PURE__ */ t.jsx(
140
- le,
192
+ _e,
141
193
  {
142
- ..._,
143
- mask: g,
144
- visible: $ ?? b,
145
- title: U(),
146
- footer: V(),
147
- style: G(),
148
- bodyStyle: Q(),
149
- prefixCls: e,
150
- className: ee,
151
- wrapClassName: Z,
152
- mousePosition: u,
153
- onClose: a,
194
+ ...fe,
195
+ mask: w,
196
+ visible: Ce,
197
+ title: De(),
198
+ footer: Ae(),
199
+ style: Se(),
200
+ bodyStyle: Be(),
201
+ prefixCls: s,
202
+ className: ye,
203
+ wrapClassName: Me,
204
+ mousePosition: h,
205
+ onClose: ge,
154
206
  closable: !1,
155
207
  closeIcon: null,
156
- maskClosable: !A || v,
157
- keyboard: !E || T,
158
- focusTriggerAfterClose: j,
159
- transitionName: `${e}-zoom`,
160
- maskTransitionName: `${e}-fade`,
161
- children: R
208
+ maskClosable: ve || oe,
209
+ keyboard: he || se,
210
+ focusTriggerAfterClose: Ee,
211
+ transitionName: `${s}-zoom`,
212
+ maskTransitionName: `${s}-fade`,
213
+ children: de
162
214
  }
163
215
  );
164
216
  };
165
217
  export {
166
- Ne as Confirm,
167
- we as Modal,
168
- we as default
218
+ to as Confirm,
219
+ oo as Modal,
220
+ oo as default
169
221
  };
170
222
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ export type ModalDismissReason = 'esc' | 'mask' | 'x';
@@ -0,0 +1,216 @@
1
+ {
2
+ "name": "MultiBox",
3
+ "category": "Data Entry",
4
+ "description": "键值对列表输入组件(支持增删行、补全、行级禁用)。内部用 Record<string,string>[] 作为受控值类型,默认字段名为 label/value,可通过 replaceFields 改成业务字段名",
5
+ "semantic": {
6
+ "intent": [
7
+ "键值录入",
8
+ "参数配置",
9
+ "可增删行的键值对编辑"
10
+ ],
11
+ "useCases": [
12
+ "HTTP Headers 编辑器",
13
+ "环境变量 / 配置项",
14
+ "URL Query 参数",
15
+ "Dictionary / Map 类型业务数据录入"
16
+ ],
17
+ "riskLevel": "normal"
18
+ },
19
+ "protocolSummary": "**核心:value 类型是 Record<string, string>[],默认字段名 label / value**。业务类型(如 `{key, value}[]` 或 `{name, val}[]`)通过 replaceFields 映射进来。**replaceFields 是 partial override**(L115 实证),只写 `{key: 'k'}` 会保留默认的 `value: 'value'` 映射。onChange 回调返回的字段名跟随 replaceFields(双向联动)",
20
+ "typeCastingGuide": {
21
+ "issue": "R23 通过率 2/5 fail 根因:业务类型如 `{key: string; value: string}[]` 想透传给 MultiBox.value(类型为 `Record<string,string>[]`),sub-agent 写 `value as Record<string,string>[]` —— **TS 5.x nominal 类型严格,即使结构兼容也拒绝直接 as cast** (TS2352 'may be a mistake because neither type sufficiently overlaps')",
22
+ "wrongPattern": "// ❌ 错误:TS 5.x 拒绝\nconst value = headers as Record<string, string>[];\nconst handleChange = (val: Record<string, string>[]) => setHeaders(val as HeaderPair[]);",
23
+ "correctPatternA": "**推荐:不要 cast,直接用 Record<string, string>[] 业务类型**\n```ts\ninterface HttpEditor {\n headers: Record<string, string>[]; // 业务类型直接用 MultiBox 期望类型\n onHeadersChange: (next: Record<string, string>[]) => void;\n}\n<MultiBox value={headers} onChange={onHeadersChange} replaceFields={{ key: 'key', value: 'value' }} />\n```\n业务接口字段名是 `key`/`value` 时,Record<string,string>[] 本来就能容纳,无需自定义业务类型",
24
+ "correctPatternB": "**如必须保留自定义业务类型 + 双向 cast:用 unknown 中转**\n```ts\ninterface HeaderPair { key: string; value: string; }\nconst handleChange = (val: Record<string, string>[]) => {\n onHeadersChange(val as unknown as HeaderPair[]);\n};\n<MultiBox\n value={headers as unknown as Record<string, string>[]}\n onChange={handleChange}\n replaceFields={{ key: 'key', value: 'value' }}\n/>\n```\n**注意 unknown 中转是逃避 TS 严格 cast 校验,业务有责任保证字段名真的兼容**",
25
+ "correctPatternC": "**改 replaceFields 适配业务字段名**(最干净):\n```ts\n// 业务数据是 {name, val}[],不是 {key, value}[]\nconst data: {name: string; val: string}[] = [...];\n<MultiBox\n value={data as unknown as Record<string, string>[]}\n onChange={(v) => setData(v as unknown as {name:string;val:string}[])}\n replaceFields={{ key: 'name', value: 'val' }} // ← 让 src 按 'name'/'val' 解析\n/>\n```"
26
+ },
27
+ "replaceFieldsBehavior": {
28
+ "default": "{ key: 'label', value: 'value' }",
29
+ "mergeSemantics": "**partial override(浅合并)**:src 内部 `{ ...defaultReplaceFields, ...userReplaceFields }`。只写一个字段会保留另一个默认。例如 `replaceFields={{ key: 'name' }}` 等价于 `{ key: 'name', value: 'value' }`",
30
+ "outputBinding": "onChange 回调返回的 val 数组中每项字段名**跟随 replaceFields 设置**(双向联动)。即:`replaceFields={{ key: 'name' }}` 时 onChange 收到的 val 是 `{ name: string; value: string }[]` 形态",
31
+ "warning": "改 replaceFields 后必须同步改 value/defaultValue 元素的字段名,单改一侧(只改 replaceFields 没改 value 数据)会导致 src 找不到字段,显示空内容"
32
+ },
33
+ "variants": {
34
+ "default": {
35
+ "meaning": "默认样式"
36
+ }
37
+ },
38
+ "states": [
39
+ "default",
40
+ "disabled",
41
+ "error"
42
+ ],
43
+ "idealProps": {
44
+ "size": {
45
+ "type": "enum",
46
+ "values": [
47
+ "small",
48
+ "medium",
49
+ "large"
50
+ ],
51
+ "default": "large",
52
+ "description": "控件大小(影响 TextField 行高 + padding,具体像素由 SCSS 变量决定)"
53
+ },
54
+ "label": {
55
+ "type": "ReactNode",
56
+ "description": "标题"
57
+ },
58
+ "labelTooltip": {
59
+ "type": "LabelTooltipProps",
60
+ "description": "标题旁帮助提示"
61
+ },
62
+ "labelSign": {
63
+ "type": "ReactNode",
64
+ "description": "标题旁次级提示(短文本/标签)"
65
+ },
66
+ "placeholderKey": {
67
+ "type": "ReactNode",
68
+ "description": "键侧提示语"
69
+ },
70
+ "placeholderValue": {
71
+ "type": "ReactNode",
72
+ "description": "值侧提示语"
73
+ },
74
+ "separator": {
75
+ "type": "ReactNode",
76
+ "default": "':'",
77
+ "description": "键/值之间的分隔符 UI"
78
+ },
79
+ "value": {
80
+ "type": "Record<string, string>[]",
81
+ "description": "**受控值**。每项是一行键/值对象,默认按 'label'/'value' 字段名解析,可通过 replaceFields 改字段名。**业务类型如 `{key, value}[]` 与 Record<string,string>[] 的 TS cast 处理见 typeCastingGuide**"
82
+ },
83
+ "defaultValue": {
84
+ "type": "Record<string, string>[]",
85
+ "description": "**非受控初始值**;形态同 value。仅 mount + 引用变化时灌入"
86
+ },
87
+ "onChange": {
88
+ "type": "(val: Record<string, string>[]) => void",
89
+ "description": "值变化回调;val 是**完整对象数组**(不是 string[]),字段名跟随 replaceFields 设置"
90
+ },
91
+ "replaceFields": {
92
+ "type": "{ key?: string; value?: string }",
93
+ "default": "{ key: 'label', value: 'value' }",
94
+ "description": "**partial override**(浅合并默认值,见 replaceFieldsBehavior.mergeSemantics)。改后:1) value/defaultValue 元素字段名必须同步改 2) onChange 回调返回的字段名也跟随改(双向联动)。**单改一侧 src 找不到字段,显示空内容**"
95
+ },
96
+ "required": {
97
+ "type": "boolean",
98
+ "default": "false",
99
+ "description": "是否必填(影响 label 后是否显示红星 * 等视觉)"
100
+ },
101
+ "disabled": {
102
+ "type": "boolean | { [name: string]: boolean }[]",
103
+ "default": "false",
104
+ "description": "**两种形态**:1) `true` 整体禁用所有行所有字段;2) `{ [name: string]: boolean }[]` **行级 + 字段级禁用**——数组每项对应一行,对象 key 对应 replaceFields 的字段名(默认 'label'/'value'),value 为 true 时禁用该行该字段。例如 `[{label: true, value: false}, {label: false, value: true}]` 禁用第 1 行的 key 列 + 第 2 行的 value 列"
105
+ },
106
+ "disabledTooltip": {
107
+ "type": "TooltipProps",
108
+ "description": "禁用态 hover 提示"
109
+ },
110
+ "helperText": {
111
+ "type": "ReactNode | Record<string, ReactNode>[]",
112
+ "description": "**两种形态**:① ReactNode/string = 整体错误提示文字(typeof === 'string' 时激活 error 视觉,所有行都标红);② Record<string, ReactNode>[] = **row-level + 字段级错误**,数组每项对应一行,对象 key 对应 replaceFields 字段名,value 为错误文本"
113
+ },
114
+ "hideErrorDom": {
115
+ "type": "boolean | null",
116
+ "description": "见 HelperText 同名 prop:true=无错误不渲染,false=都渲染(布局稳定),null=永不渲染"
117
+ },
118
+ "fetchSuggestionsKey": {
119
+ "type": "(val: string, cb: (data: Record<string, unknown>[]) => void) => void",
120
+ "description": "**键侧补全数据源**(用户输入 key 时调用)。**cb 接受 Record<string, unknown>[]** 不是 string[]。每项至少要有 label 字段(显示在下拉),value 字段(选中后填回)。例:`cb([{label: 'Content-Type', value: 'Content-Type'}, ...])`。**通常与 fetchSuggestionsValue 成对使用**"
121
+ },
122
+ "fetchSuggestionsValue": {
123
+ "type": "(val: string, cb: (data: Record<string, unknown>[]) => void) => void",
124
+ "description": "**值侧补全数据源**;cb 形态同 fetchSuggestionsKey"
125
+ },
126
+ "keyOtherProps": {
127
+ "type": "(index: number, val: string) => TextFieldProps",
128
+ "description": "键侧 TextField 的额外 props(按 index 区分行,可实现某行只读 / 加 prefix 等)"
129
+ },
130
+ "valueOtherProps": {
131
+ "type": "(index: number, val: string) => TextFieldProps",
132
+ "description": "值侧 TextField 的额外 props"
133
+ }
134
+ },
135
+ "commonMisconceptions": {
136
+ "M1": {
137
+ "wrong": "用 `as Record<string, string>[]` 把业务类型 `HeaderPair[]` / `EnvVar[]` 强制转给 MultiBox.value",
138
+ "result": "**TS 5.x 报错 TS2352** 'Conversion may be a mistake because neither type sufficiently overlaps' —— TS nominal 类型严格,即使结构兼容也拒绝。R23 MultiBox-001/002/003 fail 都是这个",
139
+ "fix": "**3 种方案**(详见 typeCastingGuide):A) 业务直接用 Record<string,string>[] 类型(最干净);B) 用 `as unknown as` 中转(逃避 TS 严格 cast);C) 改 replaceFields 适配业务字段名 + unknown 中转"
140
+ },
141
+ "M2": {
142
+ "wrong": "改 replaceFields 字段名但忘记同步改 value 数据: `replaceFields={{ key: 'name' }} value={[{label: 'x', value: 'y'}]}`(value 仍按默认 label/value 字段名)",
143
+ "result": "src 按 replaceFieldsCom.key='name' 在 value 元素里找 `.name` 字段,**找不到 → 显示空内容**",
144
+ "fix": "改 replaceFields 时必须同步改 value 元素字段名:`replaceFields={{ key: 'name' }} value={[{name: 'x', value: 'y'}]}`(注意 value 字段也要保留或同时改 replaceFields.value)"
145
+ },
146
+ "M3": {
147
+ "wrong": "假设 replaceFields 是完全替换语义: `replaceFields={{ key: 'k' }}` 期望 value 字段名也是 'k'",
148
+ "result": "**replaceFields 是 partial override**(浅合并),只写 key 会保留默认 value:'value'。所以 `value={[{k: 'x', val: 'y'}]}` 不工作,需写成 `[{k: 'x', value: 'y'}]`",
149
+ "fix": "1) 单字段改:确保 value 用对应字段名 + 默认 value:'value';2) 双字段都改:`replaceFields={{ key: 'k', value: 'v' }}` 双向同步"
150
+ },
151
+ "M4": {
152
+ "wrong": "假设 disabled 只是 boolean: `disabled={ rowIndex === 0 }`",
153
+ "result": "整体禁用整个 MultiBox,而非'第 1 行禁用'。**disabled 支持 `{ [name]: boolean }[]` 形态做行级 + 字段级禁用**",
154
+ "fix": "用对象数组形态:`disabled={[{label: true, value: false}, {label: false, value: false}]}`(第 1 行 key 列禁用,其他全开)"
155
+ },
156
+ "M5": {
157
+ "wrong": "用 helperText: string 期望某行某列单独红框",
158
+ "result": "**string 形态的 helperText 激活整体错误视觉**(所有行标红),不是 row-level",
159
+ "fix": "row-level + 字段级错误:用 `Record<string, ReactNode>[]` 形态: `helperText={[{label: 'key 重复'}, {}, {value: '格式错误'}]}`(第 1 行 key 列报错 + 第 3 行 value 列报错)"
160
+ }
161
+ },
162
+ "do": [
163
+ "**优先用 Record<string, string>[] 作为业务类型**,避免 TS cast(M1 patternA)",
164
+ "**必须自定义业务类型**:用 `as unknown as` 中转(M1 patternB)",
165
+ "**业务字段名不叫 label/value**:同时改 replaceFields **和** value/defaultValue 数据字段名(M2/M3)",
166
+ "行级禁用:用 `disabled={[{label/value: boolean}]}` 对象数组形态(M4)",
167
+ "行级错误:用 `helperText={[{label/value: errorMsg}]}` 对象数组形态(M5)",
168
+ "自动补全:fetchSuggestionsKey 和 fetchSuggestionsValue 通常成对使用,cb 接受 `{label, value}` 对象数组(不是 string[])"
169
+ ],
170
+ "dont": [
171
+ "**不要**直接 `as Record<string, string>[]` 强制 cast 业务类型——TS5 严格拒绝(M1)",
172
+ "**不要**单改 replaceFields 而不改 value 字段名——src 找不到字段(M2)",
173
+ "**不要**假设 replaceFields 完全替换——是 partial override(M3)",
174
+ "**不要**假设 disabled 只能 boolean——对象数组形态做行级禁用(M4)",
175
+ "**不要**用 string helperText 期望 row-level 错误——整体激活(M5)",
176
+ "键或值过长时不做截断/省略——TextField 自身样式",
177
+ "复杂嵌套对象录入——MultiBox 仅 2 层(key + value),换 FieldForm + dynamicFields"
178
+ ],
179
+ "events": {
180
+ "onChange": {
181
+ "signature": "(val: Record<string, string>[]) => void",
182
+ "asyncSupported": false,
183
+ "examples": [
184
+ "onChange={(val) => setHeaders(val)} — val 是完整对象数组,字段名跟随 replaceFields 设置(默认 label/value)",
185
+ "增/删行也触发 onChange,val 是操作后完整的新数组(不是 diff)",
186
+ "行内 TextField 值变化实时触发 onChange(不是 onBlur)"
187
+ ],
188
+ "commonMistakes": [
189
+ "期望 onChange 返回 string[]——实际返回 Record<string, string>[](对象数组),需取对应字段:val.map(v => v.value)",
190
+ "用 as Record<string, string>[] 把业务类型传给 onChange setter——TS 5.x 拒绝结构兼容 cast,需用 as unknown as 中转",
191
+ "只处理 onChange 不处理新增/删除——增删操作也走同一 onChange,val 是全量数组,不是操作了哪一行"
192
+ ]
193
+ }
194
+ },
195
+ "typescriptPitfalls": [
196
+ {
197
+ "issue": "业务类型 `{key: string; value: string}[]` 与 `Record<string, string>[]` 在 TS 5.x 不能直接 as cast",
198
+ "wrong": "const headers: {key: string; value: string}[] = []; <MultiBox value={headers as Record<string, string>[]} /> // TS2352 拒绝",
199
+ "right": "<MultiBox value={headers as unknown as Record<string, string>[]} replaceFields={{ key: 'key', value: 'value' }} /> // unknown 中转"
200
+ },
201
+ {
202
+ "issue": "改 replaceFields.key 但不改 value 数据字段名,src 找不到字段显示空",
203
+ "wrong": "replaceFields={{ key: 'name' }} value={[{label: 'x', value: 'y'}]} // src 按 'name' 读,label 字段被忽略",
204
+ "right": "replaceFields={{ key: 'name' }} value={[{name: 'x', value: 'y'}]} // replaceFields 和数据字段名必须同步"
205
+ },
206
+ {
207
+ "issue": "disabled 只传 boolean 期望行级禁用——boolean true 是整体禁用,行级需用对象数组",
208
+ "wrong": "disabled={rowIndex === 0} // 期望第一行禁用,实际 disabled=true 时整体禁用所有行",
209
+ "right": "disabled={[{label: true, value: false}, {label: false, value: false}]} // 对象数组:第一行 key 列禁用"
210
+ }
211
+ ],
212
+ "mapping": {
213
+ "realComponent": "MultiBox",
214
+ "adapter": null
215
+ }
216
+ }