@para-ui/core 5.0.0-beta.11 → 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 (650) 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 +52 -49
  111. package/es/Anchor/type.d.ts +8 -4
  112. package/es/Argv/component.json +216 -0
  113. package/es/Argv/dataGenerator/index.js +1 -1
  114. package/es/Argv/index.d.ts +5 -6
  115. package/es/Argv/index.js +1 -1
  116. package/es/AutoBox/component.json +133 -0
  117. package/es/AutoBox/index.d.ts +3 -3
  118. package/es/AutoBox/index.js +1 -1
  119. package/es/AutoBox/protal.d.ts +2 -2
  120. package/es/AutoBox/protal.js +33 -30
  121. package/es/AutoButton/component.json +109 -0
  122. package/es/AutoButton/index.js +1 -1
  123. package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  124. package/es/AutoTips/autoTipsMultiline/index.js +1 -1
  125. package/es/AutoTips/component.json +121 -0
  126. package/es/AutoTips/index.js +1 -1
  127. package/es/Badge/component.json +92 -0
  128. package/es/Breadcrumbs/component.json +142 -0
  129. package/es/Breadcrumbs/index.js +1 -1
  130. package/es/Button/SplitButton.d.ts +2 -2
  131. package/es/Button/component.json +168 -0
  132. package/es/Button/index.js +44 -44
  133. package/es/ButtonGroup/component.json +132 -0
  134. package/es/ButtonGroup/index.d.ts +1 -1
  135. package/es/Card/component.json +162 -0
  136. package/es/Card/index.d.ts +2 -2
  137. package/es/Card/index.js +2 -2
  138. package/es/Carousel/component.json +142 -0
  139. package/es/Carousel/index.d.ts +1 -1
  140. package/es/Cascader/Cascader.js +1 -1
  141. package/es/Cascader/OptionList/Column.js +1 -1
  142. package/es/Cascader/OptionList/index.js +1 -1
  143. package/es/Cascader/component.json +196 -0
  144. package/es/Cascader/hooks/useEntities.js +7 -7
  145. package/es/Cascader/interface.d.ts +1 -0
  146. package/es/Cascader/utils/commonUtil.d.ts +1 -1
  147. package/es/Cascader/utils/commonUtil.js +16 -16
  148. package/es/Cascader/utils/treeUtil.d.ts +14 -5
  149. package/es/Cascader/utils/treeUtil.js +1 -1
  150. package/es/Checkbox/component.json +138 -0
  151. package/es/CheckboxGroup/component.json +152 -0
  152. package/es/CheckboxGroup/index.js +1 -1
  153. package/es/CodeEditor/component.json +189 -0
  154. package/es/CodeEditor/index.d.ts +11 -10
  155. package/es/CodeEditor/index.js +19 -19
  156. package/es/Collapse/component.json +166 -0
  157. package/es/Collapse/index.d.ts +1 -1
  158. package/es/Collapse/index.js +23 -22
  159. package/es/CollapseBox/component.json +84 -0
  160. package/es/CollapseLayout/component.json +155 -0
  161. package/es/ColorPicker/component.json +142 -0
  162. package/es/ComboSelect/component.json +181 -0
  163. package/es/ComboSelect/index.js +115 -109
  164. package/es/ComboSelect/interface.d.ts +2 -2
  165. package/es/ComboSelect/utils.d.ts +3 -3
  166. package/es/ComboSelect/utils.js +1 -1
  167. package/es/Container/component.json +111 -0
  168. package/es/ContentBox/component.json +81 -0
  169. package/es/CopyText/component.json +118 -0
  170. package/es/CycleSelector/component.json +98 -0
  171. package/es/CycleSelector/index.js +14 -13
  172. package/es/DatePicker/component.json +192 -0
  173. package/es/DatePicker/generatePicker/generateRangePicker.js +11 -11
  174. package/es/DatePicker/generatePicker/generateSinglePicker.js +2 -2
  175. package/es/Descriptions/component.json +142 -0
  176. package/es/Descriptions/index.d.ts +1 -1
  177. package/es/Desktop/component.json +171 -0
  178. package/es/Desktop/index.js +1 -1
  179. package/es/DragVerify/component.json +114 -0
  180. package/es/DragVerify/index.js +19 -19
  181. package/es/Drawer/component.json +200 -0
  182. package/es/Drawer/index.js +86 -86
  183. package/es/Drawer/interface.d.ts +1 -1
  184. package/es/Drawer/util.d.ts +1 -6
  185. package/es/Drawer/util.js +9 -6
  186. package/es/Dropdown/component.json +147 -0
  187. package/es/Dropdown/index.js +1 -1
  188. package/es/DynamicMultiBox/component.json +278 -0
  189. package/es/DynamicMultiBox/formItem.d.ts +1 -1
  190. package/es/DynamicMultiBox/index.js +1 -1
  191. package/es/DynamicMultiBox/rowForm.d.ts +2 -2
  192. package/es/Empty/component.json +123 -0
  193. package/es/Empty/index.css +1 -1
  194. package/es/Empty/index.d.ts +2 -2
  195. package/es/Empty/index.js +27 -26
  196. package/es/Empty/style/index.css +1 -1
  197. package/es/FieldForm/FieldFormItem/ItemHolder.js +1 -1
  198. package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  199. package/es/FieldForm/FieldFormItem/StatusProvider.js +1 -1
  200. package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
  201. package/es/FieldForm/Form.d.ts +2 -2
  202. package/es/FieldForm/Form.js +1 -1
  203. package/es/FieldForm/FormItemInput.js +1 -1
  204. package/es/FieldForm/FormItemLabel.js +1 -1
  205. package/es/FieldForm/FormList.d.ts +2 -2
  206. package/es/FieldForm/component.json +196 -0
  207. package/es/FieldForm/context.d.ts +5 -1
  208. package/es/FieldForm/context.js +2 -2
  209. package/es/FieldForm/hooks/useForm.d.ts +4 -3
  210. package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
  211. package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  212. package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
  213. package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
  214. package/es/FieldForm/hooks/useItemRef.js +6 -6
  215. package/es/Form/component.json +161 -0
  216. package/es/Form/index.d.ts +52 -49
  217. package/es/Form/index.js +1 -1
  218. package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  219. package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
  220. package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  221. package/es/FormItem/compoments/formFile/index.js +8 -8
  222. package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  223. package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
  224. package/es/FormItem/component.json +171 -0
  225. package/es/FormItem/index.d.ts +5 -5
  226. package/es/FormItem/index.js +23 -23
  227. package/es/FormItem/itemType.js +1 -1
  228. package/es/FunctionModal/component.json +197 -0
  229. package/es/FunctionModal/dialog.d.ts +1 -1
  230. package/es/FunctionModal/modalContext.d.ts +4 -1
  231. package/es/GlobalContext/confirmLocale.js +1 -1
  232. package/es/GlobalContext/index.js +1 -1
  233. package/es/Help/component.json +118 -0
  234. package/es/HelperText/component.json +126 -0
  235. package/es/Image/PreviewGroup.js +1 -1
  236. package/es/Image/component.json +165 -0
  237. package/es/Image/index.js +1 -1
  238. package/es/InputCode/component.json +191 -0
  239. package/es/InputCode/index.d.ts +2 -2
  240. package/es/InputLang/component.json +205 -0
  241. package/es/InputLang/index.js +2 -2
  242. package/es/InputNumber/component.json +162 -0
  243. package/es/Label/component.json +126 -0
  244. package/es/Label/index.d.ts +2 -2
  245. package/es/Loading/component.json +91 -0
  246. package/es/Menu/component.json +180 -0
  247. package/es/Menu/verticalMenuList.js +1 -1
  248. package/es/Message/component.json +246 -0
  249. package/es/Message/index.d.ts +2 -2
  250. package/es/Message/index.js +2 -2
  251. package/es/Modal/Confirm/index.d.ts +1 -1
  252. package/es/Modal/Confirm/index.js +1 -1
  253. package/es/Modal/component.json +277 -0
  254. package/es/Modal/index.d.ts +85 -5
  255. package/es/Modal/index.js +159 -122
  256. package/es/Modal/interface.d.ts +1 -0
  257. package/es/MultiBox/component.json +216 -0
  258. package/es/MultiBox/index.js +19 -14
  259. package/es/Notification/component.json +184 -0
  260. package/es/OperateBtn/component.json +134 -0
  261. package/es/OperateBtn/index.d.ts +3 -3
  262. package/es/PageHeader/component.json +112 -0
  263. package/es/PageHeader/horizontalMeun.js +1 -1
  264. package/es/PageHeader/horizontalMeunRight.js +1 -1
  265. package/es/Pagination/component.json +181 -0
  266. package/es/Pagination/index.js +15 -15
  267. package/es/ParauiProvider/index.js +1 -1
  268. package/es/PasswordRules/component.json +105 -0
  269. package/es/PasswordRules/index.d.ts +4 -4
  270. package/es/PopConfirm/component.json +227 -0
  271. package/es/PopConfirm/index.d.ts +1 -1
  272. package/es/PopConfirm/index.js +1 -1
  273. package/es/PopMenu/component.json +131 -0
  274. package/es/PopMenu/hooks.d.ts +1 -1
  275. package/es/PopMenu/index.js +8 -8
  276. package/es/Popover/component.json +165 -0
  277. package/es/Popover/index.js +1 -1
  278. package/es/Progress/component.json +161 -0
  279. package/es/Prompt/component.json +144 -0
  280. package/es/Querying/component.json +96 -0
  281. package/es/Querying/index.css +1 -1
  282. package/es/Querying/index.d.ts +2 -2
  283. package/es/Querying/index.js +20 -19
  284. package/es/Querying/style/index.css +1 -1
  285. package/es/QuickReply/QuickReplyCode/index.js +1 -1
  286. package/es/QuickReply/component.json +129 -0
  287. package/es/QuickReply/index.d.ts +1 -1
  288. package/es/Radio/component.json +136 -0
  289. package/es/RadioGroup/component.json +149 -0
  290. package/es/RangeInput/component.json +198 -0
  291. package/es/RangeInput/index.js +20 -20
  292. package/es/Result/component.json +104 -0
  293. package/es/ScrollBar/component.json +115 -0
  294. package/es/Search/component.json +177 -0
  295. package/es/Search/index.d.ts +1 -1
  296. package/es/Select/component.json +244 -0
  297. package/es/Select/index.js +114 -114
  298. package/es/SelectInput/component.json +184 -0
  299. package/es/Selector/component.json +203 -0
  300. package/es/Selector/index.js +56 -50
  301. package/es/Selector/interface.d.ts +2 -2
  302. package/es/Selector/selectorData/index.js +1 -1
  303. package/es/Selector/selectorMain/index.js +3 -3
  304. package/es/Selector/selectorNode/index.js +1 -1
  305. package/es/Selector/util.d.ts +3 -3
  306. package/es/Selector/util.js +6 -12
  307. package/es/SelectorPicker/component.json +179 -0
  308. package/es/SelectorPicker/index.d.ts +5 -5
  309. package/es/SelectorPicker/index.js +15 -15
  310. package/es/SingleBox/component.json +151 -0
  311. package/es/SingleBox/index.d.ts +2 -2
  312. package/es/Slider/component.json +181 -0
  313. package/es/SortBox/component.json +108 -0
  314. package/es/Status/component.json +104 -0
  315. package/es/Stepper/component.json +129 -0
  316. package/es/Stepper/index.d.ts +2 -2
  317. package/es/Switch/component.json +207 -0
  318. package/es/Switch/index.css +1 -1
  319. package/es/Switch/index.d.ts +3 -2
  320. package/es/Switch/index.js +60 -59
  321. package/es/Switch/style/index.css +1 -1
  322. package/es/Table/component.json +547 -0
  323. package/es/Table/index.d.ts +2 -2
  324. package/es/Table/index.js +385 -382
  325. package/es/Table/interface.d.ts +30 -0
  326. package/es/Table/tableHead.js +1 -1
  327. package/es/Table/util.d.ts +1 -1
  328. package/es/Table/util.js +3 -12
  329. package/es/Tabs/component.json +227 -0
  330. package/es/Tag/component.json +221 -0
  331. package/es/Tag/index.css +1 -1
  332. package/es/Tag/index.d.ts +1 -1
  333. package/es/Tag/index.js +20 -20
  334. package/es/Tag/style/index.css +1 -1
  335. package/es/TextEditor/component.json +186 -0
  336. package/es/TextEditor/index.d.ts +5 -5
  337. package/es/TextEditor/index.js +1 -1
  338. package/es/TextField/component.json +290 -0
  339. package/es/TextField/index.d.ts +2 -2
  340. package/es/TextField/index.js +1 -1
  341. package/es/TimePicker/component.json +176 -0
  342. package/es/Timeline/component.json +110 -0
  343. package/es/Title/component.json +156 -0
  344. package/es/ToggleButton/component.json +153 -0
  345. package/es/ToggleButton/index.js +1 -1
  346. package/es/Tooltip/component.json +176 -0
  347. package/es/Tooltip/index.js +58 -53
  348. package/es/Tooltip/interface.d.ts +14 -1
  349. package/es/Tooltip/utils.js +6 -6
  350. package/es/Transfer/component.json +157 -0
  351. package/es/Tree/OperateBar/index.js +1 -1
  352. package/es/Tree/Tree.js +3 -3
  353. package/es/Tree/component.json +512 -0
  354. package/es/Tree/interface.d.ts +1 -1
  355. package/es/Upload/component.json +450 -0
  356. package/es/Upload/util.js +1 -1
  357. package/es/Utils/snack-kit-shims.d.ts +18 -0
  358. package/es/Utils/snack-kit-shims.js +19 -0
  359. package/es/Utils/type.d.ts +0 -2
  360. package/es/_virtual/index.js +5 -3
  361. package/es/_virtual/index2.js +2 -5
  362. package/es/index.d.ts +2 -0
  363. package/es/index.js +1 -1
  364. package/es/locale/en_US.d.ts +361 -0
  365. package/es/locale/en_US.js +364 -0
  366. package/es/locale/index.d.ts +1 -723
  367. package/es/locale/index2.js +10 -0
  368. package/es/locale/zh_CN.d.ts +361 -0
  369. package/es/locale/zh_CN.js +364 -0
  370. package/es/node_modules/classnames/index.js +1 -1
  371. package/lib/AlignBox/component.json +89 -0
  372. package/lib/AlignBox/index.css +1 -1
  373. package/lib/AlignBox/index.d.ts +6 -2
  374. package/lib/AlignBox/index.js +1 -1
  375. package/lib/AlignBox/style/index.css +1 -1
  376. package/lib/Anchor/anchorMenu/index.d.ts +2 -1
  377. package/lib/Anchor/anchorMenu/index.js +1 -1
  378. package/lib/Anchor/component.json +130 -0
  379. package/lib/Anchor/index.js +1 -1
  380. package/lib/Anchor/type.d.ts +8 -4
  381. package/lib/Argv/component.json +216 -0
  382. package/lib/Argv/dataGenerator/index.js +1 -1
  383. package/lib/Argv/index.d.ts +5 -6
  384. package/lib/Argv/index.js +1 -1
  385. package/lib/AutoBox/component.json +133 -0
  386. package/lib/AutoBox/index.d.ts +3 -3
  387. package/lib/AutoBox/index.js +1 -1
  388. package/lib/AutoBox/protal.d.ts +2 -2
  389. package/lib/AutoBox/protal.js +1 -1
  390. package/lib/AutoButton/component.json +109 -0
  391. package/lib/AutoButton/index.js +1 -1
  392. package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  393. package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
  394. package/lib/AutoTips/component.json +121 -0
  395. package/lib/AutoTips/index.js +1 -1
  396. package/lib/Badge/component.json +92 -0
  397. package/lib/Breadcrumbs/component.json +142 -0
  398. package/lib/Breadcrumbs/index.js +1 -1
  399. package/lib/Button/SplitButton.d.ts +2 -2
  400. package/lib/Button/component.json +168 -0
  401. package/lib/Button/index.js +1 -1
  402. package/lib/ButtonGroup/component.json +132 -0
  403. package/lib/ButtonGroup/index.d.ts +1 -1
  404. package/lib/Card/component.json +162 -0
  405. package/lib/Card/index.d.ts +2 -2
  406. package/lib/Card/index.js +1 -1
  407. package/lib/Carousel/component.json +142 -0
  408. package/lib/Carousel/index.d.ts +1 -1
  409. package/lib/Cascader/Cascader.js +1 -1
  410. package/lib/Cascader/OptionList/Column.js +1 -1
  411. package/lib/Cascader/OptionList/index.js +1 -1
  412. package/lib/Cascader/component.json +196 -0
  413. package/lib/Cascader/hooks/useEntities.js +1 -1
  414. package/lib/Cascader/interface.d.ts +1 -0
  415. package/lib/Cascader/utils/commonUtil.d.ts +1 -1
  416. package/lib/Cascader/utils/commonUtil.js +1 -1
  417. package/lib/Cascader/utils/treeUtil.d.ts +14 -5
  418. package/lib/Cascader/utils/treeUtil.js +1 -1
  419. package/lib/Checkbox/component.json +138 -0
  420. package/lib/CheckboxGroup/component.json +152 -0
  421. package/lib/CheckboxGroup/index.js +1 -1
  422. package/lib/CodeEditor/component.json +189 -0
  423. package/lib/CodeEditor/index.d.ts +11 -10
  424. package/lib/CodeEditor/index.js +1 -1
  425. package/lib/Collapse/component.json +166 -0
  426. package/lib/Collapse/index.d.ts +1 -1
  427. package/lib/Collapse/index.js +1 -1
  428. package/lib/CollapseBox/component.json +84 -0
  429. package/lib/CollapseLayout/component.json +155 -0
  430. package/lib/ColorPicker/component.json +142 -0
  431. package/lib/ComboSelect/component.json +181 -0
  432. package/lib/ComboSelect/index.js +1 -1
  433. package/lib/ComboSelect/interface.d.ts +2 -2
  434. package/lib/ComboSelect/utils.d.ts +3 -3
  435. package/lib/ComboSelect/utils.js +1 -1
  436. package/lib/Container/component.json +111 -0
  437. package/lib/ContentBox/component.json +81 -0
  438. package/lib/CopyText/component.json +118 -0
  439. package/lib/CycleSelector/component.json +98 -0
  440. package/lib/CycleSelector/index.js +1 -1
  441. package/lib/DatePicker/component.json +192 -0
  442. package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
  443. package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  444. package/lib/Descriptions/component.json +142 -0
  445. package/lib/Descriptions/index.d.ts +1 -1
  446. package/lib/Desktop/component.json +171 -0
  447. package/lib/Desktop/index.js +1 -1
  448. package/lib/DragVerify/component.json +114 -0
  449. package/lib/DragVerify/index.js +1 -1
  450. package/lib/Drawer/component.json +200 -0
  451. package/lib/Drawer/index.js +1 -1
  452. package/lib/Drawer/interface.d.ts +1 -1
  453. package/lib/Drawer/util.d.ts +1 -6
  454. package/lib/Drawer/util.js +1 -1
  455. package/lib/Dropdown/component.json +147 -0
  456. package/lib/Dropdown/index.js +1 -1
  457. package/lib/DynamicMultiBox/component.json +278 -0
  458. package/lib/DynamicMultiBox/formItem.d.ts +1 -1
  459. package/lib/DynamicMultiBox/index.js +1 -1
  460. package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
  461. package/lib/Empty/component.json +123 -0
  462. package/lib/Empty/index.css +1 -1
  463. package/lib/Empty/index.d.ts +2 -2
  464. package/lib/Empty/index.js +1 -1
  465. package/lib/Empty/style/index.css +1 -1
  466. package/lib/FieldForm/FieldFormItem/ItemHolder.js +1 -1
  467. package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  468. package/lib/FieldForm/FieldFormItem/StatusProvider.js +1 -1
  469. package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
  470. package/lib/FieldForm/Form.d.ts +2 -2
  471. package/lib/FieldForm/Form.js +1 -1
  472. package/lib/FieldForm/FormItemInput.js +1 -1
  473. package/lib/FieldForm/FormItemLabel.js +1 -1
  474. package/lib/FieldForm/FormList.d.ts +2 -2
  475. package/lib/FieldForm/component.json +196 -0
  476. package/lib/FieldForm/context.d.ts +5 -1
  477. package/lib/FieldForm/context.js +1 -1
  478. package/lib/FieldForm/hooks/useForm.d.ts +4 -3
  479. package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
  480. package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  481. package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
  482. package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
  483. package/lib/FieldForm/hooks/useItemRef.js +1 -1
  484. package/lib/Form/component.json +161 -0
  485. package/lib/Form/index.d.ts +52 -49
  486. package/lib/Form/index.js +1 -1
  487. package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  488. package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
  489. package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  490. package/lib/FormItem/compoments/formFile/index.js +1 -1
  491. package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  492. package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
  493. package/lib/FormItem/component.json +171 -0
  494. package/lib/FormItem/index.d.ts +5 -5
  495. package/lib/FormItem/index.js +1 -1
  496. package/lib/FormItem/itemType.js +1 -1
  497. package/lib/FunctionModal/component.json +197 -0
  498. package/lib/FunctionModal/dialog.d.ts +1 -1
  499. package/lib/FunctionModal/modalContext.d.ts +4 -1
  500. package/lib/GlobalContext/confirmLocale.js +1 -1
  501. package/lib/GlobalContext/index.js +1 -1
  502. package/lib/Help/component.json +118 -0
  503. package/lib/HelperText/component.json +126 -0
  504. package/lib/Image/PreviewGroup.js +1 -1
  505. package/lib/Image/component.json +165 -0
  506. package/lib/Image/index.js +1 -1
  507. package/lib/InputCode/component.json +191 -0
  508. package/lib/InputCode/index.d.ts +2 -2
  509. package/lib/InputLang/component.json +205 -0
  510. package/lib/InputLang/index.js +1 -1
  511. package/lib/InputNumber/component.json +162 -0
  512. package/lib/Label/component.json +126 -0
  513. package/lib/Label/index.d.ts +2 -2
  514. package/lib/Loading/component.json +91 -0
  515. package/lib/Menu/component.json +180 -0
  516. package/lib/Menu/verticalMenuList.js +1 -1
  517. package/lib/Message/component.json +246 -0
  518. package/lib/Message/index.d.ts +2 -2
  519. package/lib/Message/index.js +1 -1
  520. package/lib/Modal/Confirm/index.d.ts +1 -1
  521. package/lib/Modal/Confirm/index.js +1 -1
  522. package/lib/Modal/component.json +277 -0
  523. package/lib/Modal/index.d.ts +85 -5
  524. package/lib/Modal/index.js +1 -1
  525. package/lib/Modal/interface.d.ts +1 -0
  526. package/lib/MultiBox/component.json +216 -0
  527. package/lib/MultiBox/index.js +1 -1
  528. package/lib/Notification/component.json +184 -0
  529. package/lib/OperateBtn/component.json +134 -0
  530. package/lib/OperateBtn/index.d.ts +3 -3
  531. package/lib/PageHeader/component.json +112 -0
  532. package/lib/PageHeader/horizontalMeun.js +1 -1
  533. package/lib/PageHeader/horizontalMeunRight.js +1 -1
  534. package/lib/Pagination/component.json +181 -0
  535. package/lib/Pagination/index.js +1 -1
  536. package/lib/ParauiProvider/index.js +1 -1
  537. package/lib/PasswordRules/component.json +105 -0
  538. package/lib/PasswordRules/index.d.ts +4 -4
  539. package/lib/PopConfirm/component.json +227 -0
  540. package/lib/PopConfirm/index.d.ts +1 -1
  541. package/lib/PopConfirm/index.js +1 -1
  542. package/lib/PopMenu/component.json +131 -0
  543. package/lib/PopMenu/hooks.d.ts +1 -1
  544. package/lib/PopMenu/index.js +1 -1
  545. package/lib/Popover/component.json +165 -0
  546. package/lib/Popover/index.js +1 -1
  547. package/lib/Progress/component.json +161 -0
  548. package/lib/Prompt/component.json +144 -0
  549. package/lib/Querying/component.json +96 -0
  550. package/lib/Querying/index.css +1 -1
  551. package/lib/Querying/index.d.ts +2 -2
  552. package/lib/Querying/index.js +1 -1
  553. package/lib/Querying/style/index.css +1 -1
  554. package/lib/QuickReply/QuickReplyCode/index.js +1 -1
  555. package/lib/QuickReply/component.json +129 -0
  556. package/lib/QuickReply/index.d.ts +1 -1
  557. package/lib/Radio/component.json +136 -0
  558. package/lib/RadioGroup/component.json +149 -0
  559. package/lib/RangeInput/component.json +198 -0
  560. package/lib/RangeInput/index.js +1 -1
  561. package/lib/Result/component.json +104 -0
  562. package/lib/ScrollBar/component.json +115 -0
  563. package/lib/Search/component.json +177 -0
  564. package/lib/Search/index.d.ts +1 -1
  565. package/lib/Select/component.json +244 -0
  566. package/lib/Select/index.js +1 -1
  567. package/lib/SelectInput/component.json +184 -0
  568. package/lib/Selector/component.json +203 -0
  569. package/lib/Selector/index.js +1 -1
  570. package/lib/Selector/interface.d.ts +2 -2
  571. package/lib/Selector/selectorData/index.js +1 -1
  572. package/lib/Selector/selectorMain/index.js +1 -1
  573. package/lib/Selector/selectorNode/index.js +1 -1
  574. package/lib/Selector/util.d.ts +3 -3
  575. package/lib/Selector/util.js +1 -1
  576. package/lib/SelectorPicker/component.json +179 -0
  577. package/lib/SelectorPicker/index.d.ts +5 -5
  578. package/lib/SelectorPicker/index.js +1 -1
  579. package/lib/SingleBox/component.json +151 -0
  580. package/lib/SingleBox/index.d.ts +2 -2
  581. package/lib/Slider/component.json +181 -0
  582. package/lib/SortBox/component.json +108 -0
  583. package/lib/Status/component.json +104 -0
  584. package/lib/Stepper/component.json +129 -0
  585. package/lib/Stepper/index.d.ts +2 -2
  586. package/lib/Switch/component.json +207 -0
  587. package/lib/Switch/index.css +1 -1
  588. package/lib/Switch/index.d.ts +3 -2
  589. package/lib/Switch/index.js +1 -1
  590. package/lib/Switch/style/index.css +1 -1
  591. package/lib/Table/component.json +547 -0
  592. package/lib/Table/index.d.ts +2 -2
  593. package/lib/Table/index.js +1 -1
  594. package/lib/Table/interface.d.ts +30 -0
  595. package/lib/Table/tableHead.js +1 -1
  596. package/lib/Table/util.d.ts +1 -1
  597. package/lib/Table/util.js +1 -1
  598. package/lib/Tabs/component.json +227 -0
  599. package/lib/Tag/component.json +221 -0
  600. package/lib/Tag/index.css +1 -1
  601. package/lib/Tag/index.d.ts +1 -1
  602. package/lib/Tag/index.js +1 -1
  603. package/lib/Tag/style/index.css +1 -1
  604. package/lib/TextEditor/component.json +186 -0
  605. package/lib/TextEditor/index.d.ts +5 -5
  606. package/lib/TextEditor/index.js +1 -1
  607. package/lib/TextField/component.json +290 -0
  608. package/lib/TextField/index.d.ts +2 -2
  609. package/lib/TextField/index.js +1 -1
  610. package/lib/TimePicker/component.json +176 -0
  611. package/lib/Timeline/component.json +110 -0
  612. package/lib/Title/component.json +156 -0
  613. package/lib/ToggleButton/component.json +153 -0
  614. package/lib/ToggleButton/index.js +1 -1
  615. package/lib/Tooltip/component.json +176 -0
  616. package/lib/Tooltip/index.js +1 -1
  617. package/lib/Tooltip/interface.d.ts +14 -1
  618. package/lib/Tooltip/utils.js +1 -1
  619. package/lib/Transfer/component.json +157 -0
  620. package/lib/Tree/OperateBar/index.js +2 -2
  621. package/lib/Tree/Tree.js +1 -1
  622. package/lib/Tree/component.json +512 -0
  623. package/lib/Tree/interface.d.ts +1 -1
  624. package/lib/Upload/component.json +450 -0
  625. package/lib/Upload/util.js +1 -1
  626. package/lib/Utils/snack-kit-shims.d.ts +18 -0
  627. package/lib/Utils/snack-kit-shims.js +2 -0
  628. package/lib/Utils/type.d.ts +0 -2
  629. package/lib/_virtual/index.js +1 -1
  630. package/lib/_virtual/index2.js +1 -1
  631. package/lib/index.d.ts +2 -0
  632. package/lib/index.js +1 -1
  633. package/lib/locale/en_US.d.ts +361 -0
  634. package/lib/locale/en_US.js +2 -0
  635. package/lib/locale/index.d.ts +1 -723
  636. package/lib/locale/index2.js +2 -0
  637. package/lib/locale/zh_CN.d.ts +361 -0
  638. package/lib/locale/zh_CN.js +2 -0
  639. package/lib/node_modules/classnames/index.js +1 -1
  640. package/package.json +11 -4
  641. package/es/_virtual/index3.js +0 -5
  642. package/es/_virtual/index4.js +0 -5
  643. package/es/node_modules/@para-snack/core/dist/index.js +0 -5231
  644. package/lib/_virtual/index3.js +0 -2
  645. package/lib/_virtual/index4.js +0 -2
  646. package/lib/node_modules/@para-snack/core/dist/index.js +0 -20
  647. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  648. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
  649. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  650. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "Badge",
3
+ "category": "Data Display",
4
+ "description": "出现在子元素角部的标记节点。**注意:不接受 antd 风格的 count / dot / maxCount / overflowCount 这些 prop**——本组件用 sign 作为核心标记内容(ReactNode),不传 sign 时退化为小圆点;传 null 时不显示",
5
+ "semantic": {
6
+ "intent": [
7
+ "展示数量",
8
+ "展示状态",
9
+ "吸引注意"
10
+ ],
11
+ "useCases": [
12
+ "消息计数",
13
+ "在线状态",
14
+ "新功能标记"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "默认(带 sign 内容时按 sign 渲染;不传 sign 退化为小圆点)"
21
+ }
22
+ },
23
+ "states": [
24
+ "visible",
25
+ "hidden"
26
+ ],
27
+ "idealProps": {
28
+ "children": {
29
+ "type": "ReactNode",
30
+ "description": "被徽标包裹的目标元素,Badge 会在其右上角(或 placement 指定位置)叠加徽标显示",
31
+ "required": false
32
+ },
33
+ "sign": {
34
+ "type": "ReactNode",
35
+ "description": "标记内容。**核心 prop**:传数字 / 字符串显示文本徽标;不传退化为小圆点;传 null 时整个徽标不显示(用于条件展示)"
36
+ },
37
+ "backgroundColor": {
38
+ "type": "string",
39
+ "description": "徽标背景色(CSS 颜色字符串)"
40
+ },
41
+ "color": {
42
+ "type": "string",
43
+ "description": "徽标文字色(CSS 颜色字符串)"
44
+ },
45
+ "offset": {
46
+ "type": "[number, number]",
47
+ "description": "徽标相对默认位置的像素偏移 [x, y]"
48
+ },
49
+ "placement": {
50
+ "type": "enum",
51
+ "values": [
52
+ "top-left",
53
+ "top-right",
54
+ "bottom-left",
55
+ "bottom-right"
56
+ ],
57
+ "default": "top-right",
58
+ "description": "徽标在子元素四角的位置"
59
+ }
60
+ },
61
+ "do": [
62
+ "用 sign 传 ReactNode 作为标记(数字 / 短字符串 / 状态点)",
63
+ "条件展示:传 sign={null} 隐藏徽标但保留 children 占位",
64
+ "超过 999 的数字自动显示 '999+',无需业务方手动判断"
65
+ ],
66
+ "dont": [
67
+ "传 count / dot / maxCount / overflowCount / status——这些 antd 风格 prop 不存在",
68
+ "把核心内容放到 children——children 是被标记的目标元素,不是徽标本身"
69
+ ],
70
+ "events": {},
71
+ "typescriptPitfalls": [
72
+ {
73
+ "issue": "sign 是 ReactNode 而非数字,传 null 和不传 sign 含义不同",
74
+ "wrong": "// 期望隐藏徽标,传 sign={0} 却仍然显示数字 0\n<Badge sign={0}>图标</Badge> // 0 是数字,显示'0'文本徽标",
75
+ "right": "// 传 null 才能隐藏徽标\n<Badge sign={null}>图标</Badge> // handleType 返回 'null',handleSign 返回 null 不渲染"
76
+ },
77
+ {
78
+ "issue": "offset 是 [number, number] 元组,不是对象 { x, y }",
79
+ "wrong": "<Badge offset={{ x: 4, y: -4 }}>图标</Badge> // TS 类型报错:期望 [number, number]",
80
+ "right": "<Badge offset={[4, -4]}>图标</Badge> // [offsetX, offsetY],正数向右/向下"
81
+ },
82
+ {
83
+ "issue": "不要传 antd 风格的 count / dot / maxCount / overflowCount prop——它们不存在于 BadgeProps",
84
+ "wrong": "<Badge count={5} dot={false}>图标</Badge> // count/dot 不在 BadgeProps,静默失效",
85
+ "right": "<Badge sign={5}>图标</Badge> // para-ui 用 sign 作为核心标记内容"
86
+ }
87
+ ],
88
+ "mapping": {
89
+ "realComponent": "Badge",
90
+ "adapter": null
91
+ }
92
+ }
@@ -0,0 +1,142 @@
1
+ {
2
+ "name": "Breadcrumbs",
3
+ "category": "Navigation",
4
+ "description": "面包屑导航,显示当前页面在系统层级结构中的位置;内置自适应收缩:容器宽度不足时自动折叠中间项到'更多'弹层",
5
+ "semantic": {
6
+ "intent": [
7
+ "展示路径",
8
+ "向上导航",
9
+ "定位上下文"
10
+ ],
11
+ "useCases": [
12
+ "多级菜单",
13
+ "详情页",
14
+ "层级浏览"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "标准面包屑"
21
+ }
22
+ },
23
+ "states": [
24
+ "default"
25
+ ],
26
+ "idealProps": {
27
+ "list": {
28
+ "type": "listOptions[]",
29
+ "typeDefinition": "interface listOptions { label: ReactNode; maxWidth?: string; disabled?: boolean; [name: string]: any }",
30
+ "description": "路由数据列表。**每项必填 label**(显示文案,ReactNode);disabled=true 时该项不可点击;maxWidth 覆盖单项最大宽度(默认用顶层 maxWidth)。**末尾项(最后一项)自动不可点击**(src:154 实证)"
31
+ },
32
+ "separator": {
33
+ "type": "string",
34
+ "default": "/",
35
+ "description": "分隔符(src:38 interface 实证:类型为 string,不是 ReactNode)"
36
+ },
37
+ "maxWidth": {
38
+ "type": "string",
39
+ "default": "160px",
40
+ "description": "每项最大宽度(px),超出则内部 AutoTips 自动截断显示省略号"
41
+ },
42
+ "isShrink": {
43
+ "type": "boolean",
44
+ "default": true,
45
+ "description": "是否启用自适应收缩(容器宽度不足时折叠中间项到'更多'弹层)"
46
+ },
47
+ "minNum": {
48
+ "type": "number",
49
+ "default": 2,
50
+ "description": "收缩时最少保留显示的项数(末尾 N 项始终显示)"
51
+ },
52
+ "isBack": {
53
+ "type": "boolean",
54
+ "default": false,
55
+ "description": "是否显示返回按钮(在面包屑右侧)"
56
+ },
57
+ "backRender": {
58
+ "type": "ReactNode",
59
+ "description": "自定义返回按钮内容(不传时显示默认返回图标 + 文字)"
60
+ },
61
+ "onClickItem": {
62
+ "type": "(ops: listOptions) => void",
63
+ "description": "点击非末尾且非 disabled 项时的回调(末尾项和 disabled 项不触发)"
64
+ },
65
+ "onBack": {
66
+ "type": "() => void",
67
+ "description": "点击返回按钮的回调;不传时默认点击 list 倒数第二项"
68
+ },
69
+ "trigger": {
70
+ "type": "'hover' | 'click'",
71
+ "default": "hover",
72
+ "description": "收缩弹层的触发方式"
73
+ },
74
+ "placement": {
75
+ "type": "string",
76
+ "default": "bottomLeft",
77
+ "description": "收缩弹层的弹出位置"
78
+ }
79
+ },
80
+ "do": [
81
+ "在层级较深的系统中提供 Breadcrumbs",
82
+ "保持层级路径清晰,避免过深 (>5级)",
83
+ "list 末尾项自动不可点击,无需手动设 disabled",
84
+ "需要返回上级功能用 isBack=true,需要自定义返回行为用 onBack 回调"
85
+ ],
86
+ "dont": [
87
+ "在扁平化结构的站点强行使用 Breadcrumbs",
88
+ "Breadcrumbs 替代主导航",
89
+ "传 separator={<Icon />} ReactNode 类型——src interface 类型为 string,传 ReactNode 会有 TS 警告"
90
+ ],
91
+ "events": {
92
+ "onClickItem": {
93
+ "signature": "(ops: listOptions) => void",
94
+ "asyncSupported": false,
95
+ "examples": [
96
+ "点击面包屑项导航:onClickItem={(item) => router.push(item.path)}",
97
+ "传入回调时只有非末尾、非 disabled 的项才触发(src:154 实证)",
98
+ "结合 list 的扩展字段:onClickItem={(item) => { if (item.href) window.location.href = item.href; }}"
99
+ ],
100
+ "commonMistakes": [
101
+ "期望末尾项也能 onClickItem——末尾项(list.length-1 === index)在 src:154 被拦截,永远不触发",
102
+ "把路由信息放到 onClickItem 回调参数之外——item 是 listOptions 对象,可通过索引签名携带任意业务字段",
103
+ "期望 onClickItem 携带 index 参数——签名只有 (ops: listOptions),无 index;需要 index 请在 list 中嵌入业务 id"
104
+ ]
105
+ },
106
+ "onBack": {
107
+ "signature": "() => void",
108
+ "asyncSupported": false,
109
+ "examples": [
110
+ "自定义返回行为:onBack={() => navigate(-1)}",
111
+ "不传时默认点击 list 倒数第二项(触发 onClickItem)",
112
+ "配合 isBack=true 使用:<Breadcrumbs isBack onBack={handleBack} />"
113
+ ],
114
+ "commonMistakes": [
115
+ "传了 onBack 但忘传 isBack=true——onBack 存在但不显示返回按钮,回调永远不触发",
116
+ "期望 onBack 携带当前最后一项——回调无参数,最后一项可从 list[list.length-1] 直接取",
117
+ "同时期望 onBack 和返回按钮的默认行为(点 list[-2])——传了 onBack 就完全覆盖默认行为"
118
+ ]
119
+ }
120
+ },
121
+ "typescriptPitfalls": [
122
+ {
123
+ "issue": "separator 类型为 string,不支持 ReactNode,传 ReactNode 会有 TS 报错",
124
+ "wrong": "<Breadcrumbs separator={<ChevronRight />} list={list} /> // TS: ReactNode 不可分配给 string",
125
+ "right": "<Breadcrumbs separator='>' list={list} /> // 只接受字符串"
126
+ },
127
+ {
128
+ "issue": "listOptions 有索引签名 [name: string]: any,但 label 是必填字段,不传会导致运行时显示空白",
129
+ "wrong": "const list = [{ path: '/home' }, { path: '/detail' }]; // 缺少 label,显示空白",
130
+ "right": "const list: listOptions[] = [{ label: '首页', path: '/home' }, { label: '详情', path: '/detail' }];"
131
+ },
132
+ {
133
+ "issue": "disabled 字段是 listOptions 可选属性(boolean),但 TypeScript 在索引签名下不强制检查类型",
134
+ "wrong": "const list = [{ label: '返回', disabled: 'true' }]; // 字符串 'true' 在 runtime 按 truthy 处理,但语义错",
135
+ "right": "const list: listOptions[] = [{ label: '返回', disabled: true }]; // 显式声明 listOptions[] 让 TS 检查"
136
+ }
137
+ ],
138
+ "mapping": {
139
+ "realComponent": "Breadcrumbs",
140
+ "adapter": null
141
+ }
142
+ }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const t=require("../_virtual/jsx-runtime.js"),u=require("react"),D=require("../Popover/index.js"),H=require("../AutoTips/index.js"),L=require("../node_modules/@para-ui/icons/More/index.js"),O=require("../node_modules/@para-ui/icons/Return/index.js"),l=require("../GlobalContext/constant.js"),z=require("../GlobalContext/useFormatMessage.js"),I=require("./lang/index.js"),G=require("../Utils/Hooks/useResizeObserver.js");;/* empty css */const $=q=>{const{maxWidth:S="160px",className:p,list:c,separator:f="/",popoverClassName:j,isShrink:o=!0,isBack:m=!1,minNum:R=2,trigger:A="hover",placement:M="bottomLeft",backRender:k,onClickItem:E,onBack:g,style:y}=q,W=z.default("Breadcrumbs",I.default),[v,N]=u.useState(!1),[d,x]=u.useState([]),i=u.useRef(null),e=u.useRef({minNum:R,isBack:m,isShrink:o,timer:null,showMore:!1,hideArr:[],hidePos:0,list:c});e.current.isBack=m,e.current.showMore=v,e.current.isShrink=o,e.current.minNum=R,e.current.list=c,G.default({dom:i.current,cb:()=>h()}),u.useEffect(()=>()=>{e.current.timer&&clearTimeout(e.current.timer)},[]),u.useEffect(()=>{const r=new Array(e.current.list.length).fill(!1);e.current.hideArr=r,x(r),h()},[c]);const b=(r,s)=>()=>{e.current.list.length-1===s||r.disabled||E&&E(r)},B=()=>{if(g)return g();if(e.current.list.length<2)return;const r=e.current.list[e.current.list.length-2];b(r,e.current.list.length-2)()},a=()=>{i.current?.classList?.remove(`${l.$prefixCls}-breadcrumbs-calculation`)},h=r=>{if(!e.current.isShrink)return a();if(e.current.timer&&clearTimeout(e.current.timer),!r){e.current.hidePos=0,e.current.showMore=!1;const s=new Array(e.current.list.length).fill(!1);e.current.hideArr=s,x(s),N(!1)}if(e.current.list.length<=e.current.minNum+1||e.current.hidePos===e.current.list.length-e.current.minNum-1)return a();i.current&&(i.current.classList.add(`${l.$prefixCls}-breadcrumbs-calculation`),e.current.timer=setTimeout(()=>{if(!i.current)return;const s=i.current.clientWidth,n=i.current.querySelector(".breadcrumbs-list"),F=n?n.clientWidth:0,C=i.current.querySelector(".breadcrumbs-back"),_=e.current.isBack&&C?C.clientWidth:0;s>F+_?a():(e.current.hidePos+=1,e.current.hideArr[e.current.hidePos]=!0,x([...e.current.hideArr]),N(!0),h(!0))},50))},P=()=>t.jsxRuntimeExports.jsx("div",{className:"breadcrumbs-popover-content",children:c.map((r,s)=>{if(!d[s])return null;let n="breadcrumbs-popover-content-item";return s!==c.length-1&&!r.disabled&&(n+=" breadcrumbs-popover-content-item-click"),s===c.length-1&&(n+=" breadcrumbs-popover-content-item-current"),r.disabled&&(n+=" breadcrumbs-popover-content-item-disabled"),t.jsxRuntimeExports.jsx("div",{className:n,onClick:b(r,s),children:r.label},s)})}),w=()=>{let r=`${l.$prefixCls}-breadcrumbs-popover`;return j&&(r+=` ${j}`),r},T=()=>{let r=`${l.$prefixCls}-breadcrumbs`;return o&&(r+=` ${l.$prefixCls}-breadcrumbs-shrink`),p&&(r+=` ${p}`),r};return t.jsxRuntimeExports.jsxs("div",{className:T(),style:y,ref:i,children:[t.jsxRuntimeExports.jsx("ul",{className:"breadcrumbs-list",children:c.map((r,s)=>{if(d[s])return;let n="breadcrumbs-item";return s===c.length-1&&(n+=" breadcrumbs-item-current"),s!==c.length-1&&!r.disabled&&(n+=" breadcrumbs-item-click"),r.disabled&&(n+=" breadcrumbs-item-disabled"),t.jsxRuntimeExports.jsxs(u.Fragment,{children:[t.jsxRuntimeExports.jsx("li",{className:n,style:{maxWidth:r.maxWidth||S},onClick:b(r,s),children:t.jsxRuntimeExports.jsx(H.default,{children:t.jsxRuntimeExports.jsx("span",{className:"breadcrumbs-item-content",children:r.label})})}),s!==c.length-1&&t.jsxRuntimeExports.jsx("li",{className:"separator",children:f}),v&&s===0&&t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[t.jsxRuntimeExports.jsx(D.Popover,{content:P(),overlayClassName:w(),trigger:A,placement:M,destroyTooltipOnHide:!0,children:t.jsxRuntimeExports.jsx("li",{className:"breadcrumbs-item-more",children:t.jsxRuntimeExports.jsx(L.More,{})})}),!d[c.length-1]&&t.jsxRuntimeExports.jsx("li",{className:"separator",children:f})]})]},s)})}),m&&t.jsxRuntimeExports.jsxs("div",{className:"breadcrumbs-back",children:[t.jsxRuntimeExports.jsx("span",{className:"line"}),t.jsxRuntimeExports.jsx("div",{className:"breadcrumbs-back-content",onClick:B,children:k||t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[t.jsxRuntimeExports.jsx(O.Return,{}),t.jsxRuntimeExports.jsx("span",{children:W({id:"back"})})]})})]})]})};exports.Breadcrumbs=$;exports.default=$;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const t=require("../_virtual/jsx-runtime.js"),u=require("react"),D=require("../Popover/index.js"),H=require("../AutoTips/index.js"),L=require("../node_modules/@para-ui/icons/More/index.js"),O=require("../node_modules/@para-ui/icons/Return/index.js"),l=require("../GlobalContext/constant.js"),z=require("../GlobalContext/useFormatMessage.js"),I=require("./lang/index.js"),G=require("../Hooks/useResizeObserver.js");;/* empty css */const $=q=>{const{maxWidth:S="160px",className:p,list:c,separator:f="/",popoverClassName:j,isShrink:o=!0,isBack:m=!1,minNum:R=2,trigger:A="hover",placement:M="bottomLeft",backRender:k,onClickItem:E,onBack:g,style:y}=q,W=z.default("Breadcrumbs",I.default),[v,N]=u.useState(!1),[d,x]=u.useState([]),i=u.useRef(null),e=u.useRef({minNum:R,isBack:m,isShrink:o,timer:null,showMore:!1,hideArr:[],hidePos:0,list:c});e.current.isBack=m,e.current.showMore=v,e.current.isShrink=o,e.current.minNum=R,e.current.list=c,G.default({dom:i.current,cb:()=>h()}),u.useEffect(()=>()=>{e.current.timer&&clearTimeout(e.current.timer)},[]),u.useEffect(()=>{const r=new Array(e.current.list.length).fill(!1);e.current.hideArr=r,x(r),h()},[c]);const b=(r,s)=>()=>{e.current.list.length-1===s||r.disabled||E&&E(r)},B=()=>{if(g)return g();if(e.current.list.length<2)return;const r=e.current.list[e.current.list.length-2];b(r,e.current.list.length-2)()},a=()=>{i.current?.classList?.remove(`${l.$prefixCls}-breadcrumbs-calculation`)},h=r=>{if(!e.current.isShrink)return a();if(e.current.timer&&clearTimeout(e.current.timer),!r){e.current.hidePos=0,e.current.showMore=!1;const s=new Array(e.current.list.length).fill(!1);e.current.hideArr=s,x(s),N(!1)}if(e.current.list.length<=e.current.minNum+1||e.current.hidePos===e.current.list.length-e.current.minNum-1)return a();i.current&&(i.current.classList.add(`${l.$prefixCls}-breadcrumbs-calculation`),e.current.timer=setTimeout(()=>{if(!i.current)return;const s=i.current.clientWidth,n=i.current.querySelector(".breadcrumbs-list"),F=n?n.clientWidth:0,C=i.current.querySelector(".breadcrumbs-back"),_=e.current.isBack&&C?C.clientWidth:0;s>F+_?a():(e.current.hidePos+=1,e.current.hideArr[e.current.hidePos]=!0,x([...e.current.hideArr]),N(!0),h(!0))},50))},P=()=>t.jsxRuntimeExports.jsx("div",{className:"breadcrumbs-popover-content",children:c.map((r,s)=>{if(!d[s])return null;let n="breadcrumbs-popover-content-item";return s!==c.length-1&&!r.disabled&&(n+=" breadcrumbs-popover-content-item-click"),s===c.length-1&&(n+=" breadcrumbs-popover-content-item-current"),r.disabled&&(n+=" breadcrumbs-popover-content-item-disabled"),t.jsxRuntimeExports.jsx("div",{className:n,onClick:b(r,s),children:r.label},s)})}),w=()=>{let r=`${l.$prefixCls}-breadcrumbs-popover`;return j&&(r+=` ${j}`),r},T=()=>{let r=`${l.$prefixCls}-breadcrumbs`;return o&&(r+=` ${l.$prefixCls}-breadcrumbs-shrink`),p&&(r+=` ${p}`),r};return t.jsxRuntimeExports.jsxs("div",{className:T(),style:y,ref:i,children:[t.jsxRuntimeExports.jsx("ul",{className:"breadcrumbs-list",children:c.map((r,s)=>{if(d[s])return;let n="breadcrumbs-item";return s===c.length-1&&(n+=" breadcrumbs-item-current"),s!==c.length-1&&!r.disabled&&(n+=" breadcrumbs-item-click"),r.disabled&&(n+=" breadcrumbs-item-disabled"),t.jsxRuntimeExports.jsxs(u.Fragment,{children:[t.jsxRuntimeExports.jsx("li",{className:n,style:{maxWidth:r.maxWidth||S},onClick:b(r,s),children:t.jsxRuntimeExports.jsx(H.default,{children:t.jsxRuntimeExports.jsx("span",{className:"breadcrumbs-item-content",children:r.label})})}),s!==c.length-1&&t.jsxRuntimeExports.jsx("li",{className:"separator",children:f}),v&&s===0&&t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[t.jsxRuntimeExports.jsx(D.Popover,{content:P(),overlayClassName:w(),trigger:A,placement:M,destroyTooltipOnHide:!0,children:t.jsxRuntimeExports.jsx("li",{className:"breadcrumbs-item-more",children:t.jsxRuntimeExports.jsx(L.More,{})})}),!d[c.length-1]&&t.jsxRuntimeExports.jsx("li",{className:"separator",children:f})]})]},s)})}),m&&t.jsxRuntimeExports.jsxs("div",{className:"breadcrumbs-back",children:[t.jsxRuntimeExports.jsx("span",{className:"line"}),t.jsxRuntimeExports.jsx("div",{className:"breadcrumbs-back-content",onClick:B,children:k||t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[t.jsxRuntimeExports.jsx(O.Return,{}),t.jsxRuntimeExports.jsx("span",{children:W({id:"back"})})]})})]})]})};exports.Breadcrumbs=$;exports.default=$;
2
2
  //# sourceMappingURL=index.js.map
@@ -12,7 +12,7 @@ interface Option {
12
12
  /**
13
13
  * 按钮value
14
14
  */
15
- value?: any;
15
+ value?: unknown;
16
16
  /**
17
17
  * 禁用按钮
18
18
  */
@@ -23,7 +23,7 @@ interface Option {
23
23
  disabledTooltip?: TooltipProps;
24
24
  /** 气泡确认框参数 */
25
25
  popConfirmProps?: PopConfirmProps;
26
- [name: string]: any;
26
+ [name: string]: unknown;
27
27
  }
28
28
  type GroupOption = Array<Option>;
29
29
  export interface SplitButtonProps {
@@ -0,0 +1,168 @@
1
+ {
2
+ "name": "Button",
3
+ "category": "Basic",
4
+ "description": "用于触发用户操作的按钮组件",
5
+ "semantic": {
6
+ "intent": [
7
+ "提交",
8
+ "确认",
9
+ "触发操作",
10
+ "导航"
11
+ ],
12
+ "useCases": [
13
+ "表单提交",
14
+ "弹窗确认",
15
+ "页面主操作",
16
+ "表格操作栏"
17
+ ],
18
+ "riskLevel": "normal"
19
+ },
20
+ "variants": {
21
+ "contained": {
22
+ "meaning": "主要操作,强调引导用户点击",
23
+ "constraints": [
24
+ "一个操作区域通常只放置一个 contained 按钮"
25
+ ]
26
+ },
27
+ "outlined": {
28
+ "meaning": "次要操作,作为一个替代选择"
29
+ },
30
+ "text": {
31
+ "meaning": "最轻量级的操作,通常用于表格行内或辅助位置"
32
+ }
33
+ },
34
+ "modifiers": {
35
+ "danger": {
36
+ "meaning": "高风险操作标识(如删除、重置),与 variant 正交——可与 contained/outlined/text 任一组合",
37
+ "constraints": [
38
+ "建议配合二次确认(如 PopConfirm)使用,但非强制"
39
+ ]
40
+ }
41
+ },
42
+ "states": [
43
+ "default",
44
+ "disabled",
45
+ "loading"
46
+ ],
47
+ "idealProps": {
48
+ "variant": {
49
+ "type": "enum",
50
+ "values": [
51
+ "contained",
52
+ "outlined",
53
+ "text"
54
+ ],
55
+ "default": "contained"
56
+ },
57
+ "size": {
58
+ "type": "enum",
59
+ "values": [
60
+ "small",
61
+ "medium",
62
+ "large"
63
+ ],
64
+ "default": "large",
65
+ "description": "按钮尺寸。**注意:默认 large**(与 antd/MUI 业界惯例 medium 不同——这是 para-ui 的设计选择,DEFECT-003 wont-fix 留设计评审)。如需业界默认尺寸请显式传 size='medium'"
66
+ },
67
+ "loading": {
68
+ "type": "boolean | { delay: number }",
69
+ "default": false,
70
+ "description": "载入状态。loading=true 时按钮显示 loading 图标 + 自动加 disabled 属性(**隐含 disabled,onClick 不触发**)——与 antd/MUI 惯例一致。`loading={delay: ms}`:loading spinner 最短可见时长(delay 毫秒),防止快速请求场景闪烁",
71
+ "behaviorNote": "v5.x DEFECT-001 修复:之前需要 `disabled={loading}` 双写防御,**现在 loading=true 已自动隐含 disabled(onClick 不触发),无需再写 disabled={loading}**——双写不造成 bug 但属于冗余代码。零破坏:src 业务 0 引用此 prop;docs 仅 1 处示例不受影响"
72
+ },
73
+ "disabled": {
74
+ "type": "boolean",
75
+ "default": false
76
+ },
77
+ "danger": {
78
+ "type": "boolean",
79
+ "default": false,
80
+ "description": "危险操作修饰符;与 variant 正交(可与 contained/outlined/text 任一组合)。详见顶层 modifiers.danger"
81
+ },
82
+ "startIcon": {
83
+ "type": "ReactNode",
84
+ "description": "前置图标"
85
+ },
86
+ "endIcon": {
87
+ "type": "ReactNode",
88
+ "description": "后置图标"
89
+ },
90
+ "href": {
91
+ "type": "string",
92
+ "description": "跳转链接,传入此属性时行为类似 a 标签"
93
+ },
94
+ "target": {
95
+ "type": "string",
96
+ "description": "链接打开方式"
97
+ },
98
+ "toolTipTitle": {
99
+ "type": "ReactNode",
100
+ "description": "**hover 悬停提示(最简快捷写法)——仅 disabled=false 时生效**。src 内 toolTipTitle 路径把 Tooltip `disabled={disabled}` 透传,因此按钮禁用时 Tooltip 同时被禁用(tooltip 不显示)。⚠️ Tooltip 相关共有 3 个 prop(toolTipTitle / TooltipProps / disabledTooltip),命名风格不一致 + 职责重叠是已知问题(DEFECT-002,独立 epic 评审中——src 内 134+ 处使用)。**优先级(src 实证)**:① disabled=true + disabledTooltip 有值 → 走 disabledTooltip 路径;② toolTipTitle 非空 → 显示 Tooltip(disabled=false 时);③ TooltipProps 覆盖 toolTipTitle 的 arrow/placement 等样式参数。**结论:disabled 状态的悬停提示必须用 disabledTooltip,toolTipTitle 在 disabled=true 时不显示**。**传 undefined / null / false 时等价于不传,不渲染 Tooltip wrapper,不影响点击区域**"
101
+ },
102
+ "disabledTooltip": {
103
+ "type": "{ title: ReactNode; placement?: string; arrow?: boolean; [key: string]: any }",
104
+ "description": "**disabled=true 时的悬停提示**(toolTipTitle 在 disabled=true 时不生效,需用此 prop)。TooltipProps 核心字段:`title: ReactNode`(必填)/ `placement?`(弹出方向,默认 'top')/ `arrow?: boolean`(箭头)。**最简写法**:`disabledTooltip={{ title: '不可操作原因' }}`"
105
+ },
106
+ "children": {
107
+ "type": "ReactNode",
108
+ "description": "**按钮文案或内容(正式 prop)**。通过 React 标准 children 传入;可传字符串或 ReactNode,与 startIcon/endIcon 可同时使用。ButtonProps extends ButtonOrAnchorAttributes(继承自 React.ButtonHTMLAttributes),children 是标准 React prop——不单独在此处列出不代表不支持"
109
+ }
110
+ },
111
+ "do": [
112
+ "主要操作使用 contained",
113
+ "重要但非主要操作使用 outlined",
114
+ "危险操作必须明确标识(danger 属性)",
115
+ "表单提交场景传 `type='submit'`(默认 `type='button'` 防意外表单提交;Button 通过 restProps 透传 HTML 原生 button 属性,`type='submit'` 会覆盖默认值生效)。⚠️ **type 是 HTML native attribute · 只接受 'button' / 'submit' / 'reset'。若你想用 antd 风格 `type='primary'` · paraui 对应是 `variant='contained'`;若你想 antd `type='default'` · paraui 用 `variant='outlined'`;若 antd `type='danger'` · paraui 用 `danger={true}`(modifier · 与 variant 正交)**",
116
+ "disabled 状态需要悬停提示时用 disabledTooltip(toolTipTitle 在 disabled=true 时不显示)",
117
+ "loading 状态无需额外写 disabled={loading}——loading=true 已自动隐含 disabled(DEFECT-001 修复)",
118
+ "**ButtonProps extends ButtonOrAnchorAttributes**(src/Button/index.tsx:21):所有原生 button/a 属性均可安全透传,TypeScript 严格模式下不会类型报错——`type='submit'` / `name` / `form`(关联 form id)/ `disabled` / `aria-*` 等均可用"
119
+ ],
120
+ "dont": [
121
+ "在同一区域放置过多 contained 按钮",
122
+ "使用 disabled 按钮作为唯一的禁用反馈(应配合 Tooltip 解释原因)",
123
+ "❌ 不要用 `type='primary'` / `type='default'` / `type='danger'`(antd 风格)· paraui 用 `variant='contained'` / `variant='outlined'` / `danger={true}`(modifier 与 variant 正交)",
124
+ "❌ 不要用 `color='primary'`(MUI 风格)· paraui 用 variant + danger 拆分语义"
125
+ ],
126
+ "events": {
127
+ "onClick": {
128
+ "signature": "(event: React.MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void",
129
+ "asyncSupported": false,
130
+ "examples": [
131
+ "基本点击处理:onClick={() => handleSubmit()}",
132
+ "需要阻止冒泡:onClick={(e) => { e.stopPropagation(); doAction(); }}",
133
+ "loading 状态下 onClick 不触发(已自动隐含 disabled):无需 onClick 里手动判断 isLoading"
134
+ ],
135
+ "commonMistakes": [
136
+ "loading=true 时期望 onClick 还触发——loading 自动隐含 disabled,onClick 被屏蔽;无需再写 disabled={loading}",
137
+ "disabled=true 时用 toolTipTitle 做禁用提示——disabled 状态下 toolTipTitle 不显示;需改用 disabledTooltip prop",
138
+ "在 href 模式(传了 href)下期望 onClick 阻止跳转——渲染为 <a>,onClick 里需 e.preventDefault() 才能阻止"
139
+ ]
140
+ }
141
+ },
142
+ "typescriptPitfalls": [
143
+ {
144
+ "issue": "variant 不是 antd 的 type,不接受 'primary'/'default'/'danger',只接受 'contained'/'outlined'/'text'",
145
+ "wrong": "// antd 风格:\n<Button type='primary'>提交</Button> // 这里 type 是 HTML button type,不是样式!",
146
+ "right": "// para-ui 风格:\n<Button variant='contained'>提交</Button> // 主要操作用 contained\n<Button variant='outlined'>取消</Button> // 次要操作用 outlined\n<Button danger>删除</Button> // 危险操作加 danger modifier"
147
+ },
148
+ {
149
+ "issue": "type prop 是 HTML 原生 button type('button'|'submit'|'reset'),不是样式 variant",
150
+ "wrong": "<Button type='primary'>提交</Button> // TypeScript 报错:'primary' 不在 'button'|'submit'|'reset' 联合类型",
151
+ "right": "<Button variant='contained' type='submit'>提交</Button> // type 只管 form 提交行为,默认 'button'"
152
+ },
153
+ {
154
+ "issue": "loading 的对象形式需要传 { delay: number },不能传其他结构",
155
+ "wrong": "loading={{ duration: 300 }} // TS 类型报错:对象形式只接受 { delay: number }",
156
+ "right": "loading={{ delay: 300 }} // delay 是 loading spinner 最短可见毫秒数"
157
+ },
158
+ {
159
+ "issue": "disabledTooltip 的 title 字段必填,TooltipProps 的 disabled 字段含义是'禁用 tooltip 本身'——不要传 disabled",
160
+ "wrong": "disabledTooltip={{ disabled: true, title: '...' }} // disabled 是 Tooltip 的开关,传 true 反而不显示",
161
+ "right": "disabledTooltip={{ title: '不可操作原因' }} // 只需 title,Button disabled=true 时自动触发"
162
+ }
163
+ ],
164
+ "mapping": {
165
+ "realComponent": "Button",
166
+ "adapter": null
167
+ }
168
+ }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const t=require("../_virtual/jsx-runtime.js"),g=require("react"),y=require("clsx"),k=require("../node_modules/@para-ui/icons/LoadingF/index.js"),E=require("../Tooltip/index.js"),I=require("./SplitButton.js"),e=require("../GlobalContext/constant.js");;/* empty css */const P=d=>{const{variant:C="contained",size:T="large",className:b,disabled:n=!1,children:r,startIcon:s,endIcon:o,loading:l=!1,toolTipTitle:m="",TooltipProps:N,danger:B=!1,href:j,target:$,disabledTooltip:a,...p}=d,[u,f]=g.useState(!1),c="href"in d,i=()=>y(`${e.$prefixCls}-button`,b,`${e.$prefixCls}-button-${C}`,`${e.$prefixCls}-button-${T}`,u&&`${e.$prefixCls}-button-loading`,B&&!n&&`${e.$prefixCls}-button-dangerous`,c&&`${e.$prefixCls}-button-link`,c&&n&&`${e.$prefixCls}-button-link-disabled`),x=L=>{if(!u)return L==="start"&&s?t.jsxRuntimeExports.jsx("span",{className:"button-icon",children:s}):L==="end"&&o?t.jsxRuntimeExports.jsx("span",{className:"button-icon button-icon-end",children:o}):null;if(typeof l=="object"){const q=l.delay||0;setTimeout(()=>f(!1),q)}return L==="start"?t.jsxRuntimeExports.jsx("span",{className:"button-icon button-icon-loading",children:t.jsxRuntimeExports.jsx(k.LoadingF,{})}):null},h=()=>c?t.jsxRuntimeExports.jsxs("a",{...p,href:j,target:$,className:i(),children:[x("start"),r&&t.jsxRuntimeExports.jsx("span",{className:"button-label",children:r}),x("end")]}):t.jsxRuntimeExports.jsxs("button",{disabled:n,type:"button",className:i(),...p,children:[x("start"),r&&t.jsxRuntimeExports.jsx("span",{className:"button-label",children:r}),x("end")]});return g.useEffect(()=>{f(!!l)},[l]),n&&a?t.jsxRuntimeExports.jsx(E.Tooltip,{disabled:!0,...a,children:t.jsxRuntimeExports.jsx("span",{className:`${e.$prefixCls}-button--disabled`,children:h()})}):m?t.jsxRuntimeExports.jsx(E.Tooltip,{arrow:!1,placement:"bottomLeft",...N,disabled:n,title:m,children:n?t.jsxRuntimeExports.jsx("span",{className:`${e.$prefixCls}-button--disabled`,children:h()}):h()}):h()},S=d=>{const{variant:C="contained",size:T="large",toolTipTitle:b="",children:n,className:r,disabled:s=!1,loading:o=!1,TooltipProps:l,danger:m=!1,href:N,target:B,disabledTooltip:j,...$}=d,[a,p]=g.useState(!1),u="href"in d,f=()=>y(`${e.$prefixCls}-button ${e.$prefixCls}-icon-button`,r,`${e.$prefixCls}-icon-button-${C}`,`${e.$prefixCls}-icon-button-${T}`,a&&`${e.$prefixCls}-icon-button-loading`,m&&!s&&`${e.$prefixCls}-icon-button-dangerous`,u&&`${e.$prefixCls}-button-link`,u&&s&&`${e.$prefixCls}-button-link-disabled`),c=()=>{if(!a)return n;if(typeof o=="object"){const x=o.delay||0;setTimeout(()=>p(!1),x)}return t.jsxRuntimeExports.jsx("span",{className:"button-loading-icon",children:t.jsxRuntimeExports.jsx(k.LoadingF,{})})},i=()=>u?t.jsxRuntimeExports.jsx("a",{...$,href:N,target:B,className:f(),children:c()}):t.jsxRuntimeExports.jsx("button",{...$,disabled:s,type:"button",className:f(),children:c()});return g.useEffect(()=>{p(!!o)},[o]),s&&j?t.jsxRuntimeExports.jsx(E.Tooltip,{disabled:!0,...j,children:t.jsxRuntimeExports.jsx("span",{className:`${e.$prefixCls}-button--disabled`,children:i()})}):b?t.jsxRuntimeExports.jsx(E.Tooltip,{arrow:!1,placement:"bottomLeft",...l,disabled:s,title:b,children:s?t.jsxRuntimeExports.jsx("span",{className:`${e.$prefixCls}-button--disabled`,children:i()}):i()},+a):i()},R=P;R.IconButton=S;R.SplitButton=I.default;exports.Button=R;exports.default=R;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const t=require("../_virtual/jsx-runtime.js"),g=require("react"),y=require("clsx"),k=require("../node_modules/@para-ui/icons/LoadingF/index.js"),E=require("../Tooltip/index.js"),I=require("./SplitButton.js"),e=require("../GlobalContext/constant.js");;/* empty css */const P=x=>{const{variant:C="contained",size:T="large",className:b,disabled:n=!1,children:a,startIcon:s,endIcon:o,loading:u=!1,toolTipTitle:m="",TooltipProps:N,danger:B=!1,href:j,target:$,disabledTooltip:i,...p}=x,[r,f]=g.useState(!1),c="href"in x,l=()=>y(`${e.$prefixCls}-button`,b,`${e.$prefixCls}-button-${C}`,`${e.$prefixCls}-button-${T}`,r&&`${e.$prefixCls}-button-loading`,B&&!n&&`${e.$prefixCls}-button-dangerous`,c&&`${e.$prefixCls}-button-link`,c&&n&&`${e.$prefixCls}-button-link-disabled`),d=L=>{if(!r)return L==="start"&&s?t.jsxRuntimeExports.jsx("span",{className:"button-icon",children:s}):L==="end"&&o?t.jsxRuntimeExports.jsx("span",{className:"button-icon button-icon-end",children:o}):null;if(typeof u=="object"){const q=u.delay||0;setTimeout(()=>f(!1),q)}return L==="start"?t.jsxRuntimeExports.jsx("span",{className:"button-icon button-icon-loading",children:t.jsxRuntimeExports.jsx(k.LoadingF,{})}):null},h=()=>c?t.jsxRuntimeExports.jsxs("a",{...p,href:j,target:$,className:l(),children:[d("start"),a&&t.jsxRuntimeExports.jsx("span",{className:"button-label",children:a}),d("end")]}):t.jsxRuntimeExports.jsxs("button",{disabled:n||r,type:"button",className:l(),...p,children:[d("start"),a&&t.jsxRuntimeExports.jsx("span",{className:"button-label",children:a}),d("end")]});return g.useEffect(()=>{f(!!u)},[u]),n&&i?t.jsxRuntimeExports.jsx(E.Tooltip,{disabled:!0,...i,children:t.jsxRuntimeExports.jsx("span",{className:`${e.$prefixCls}-button--disabled`,children:h()})}):m?t.jsxRuntimeExports.jsx(E.Tooltip,{arrow:!1,placement:"bottomLeft",...N,disabled:n,title:m,children:n?t.jsxRuntimeExports.jsx("span",{className:`${e.$prefixCls}-button--disabled`,children:h()}):h()}):h()},S=x=>{const{variant:C="contained",size:T="large",toolTipTitle:b="",children:n,className:a,disabled:s=!1,loading:o=!1,TooltipProps:u,danger:m=!1,href:N,target:B,disabledTooltip:j,...$}=x,[i,p]=g.useState(!1),r="href"in x,f=()=>y(`${e.$prefixCls}-button ${e.$prefixCls}-icon-button`,a,`${e.$prefixCls}-icon-button-${C}`,`${e.$prefixCls}-icon-button-${T}`,i&&`${e.$prefixCls}-icon-button-loading`,m&&!s&&`${e.$prefixCls}-icon-button-dangerous`,r&&`${e.$prefixCls}-button-link`,r&&s&&`${e.$prefixCls}-button-link-disabled`),c=()=>{if(!i)return n;if(typeof o=="object"){const d=o.delay||0;setTimeout(()=>p(!1),d)}return t.jsxRuntimeExports.jsx("span",{className:"button-loading-icon",children:t.jsxRuntimeExports.jsx(k.LoadingF,{})})},l=()=>r?t.jsxRuntimeExports.jsx("a",{...$,href:N,target:B,className:f(),children:c()}):t.jsxRuntimeExports.jsx("button",{...$,disabled:s||i,type:"button",className:f(),children:c()});return g.useEffect(()=>{p(!!o)},[o]),s&&j?t.jsxRuntimeExports.jsx(E.Tooltip,{disabled:!0,...j,children:t.jsxRuntimeExports.jsx("span",{className:`${e.$prefixCls}-button--disabled`,children:l()})}):b?t.jsxRuntimeExports.jsx(E.Tooltip,{arrow:!1,placement:"bottomLeft",...u,disabled:s,title:b,children:s?t.jsxRuntimeExports.jsx("span",{className:`${e.$prefixCls}-button--disabled`,children:l()}):l()},+i):l()},R=P;R.IconButton=S;R.SplitButton=I.default;exports.Button=R;exports.default=R;
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,132 @@
1
+ {
2
+ "name": "ButtonGroup",
3
+ "category": "General",
4
+ "description": "按钮组,将多个按钮组合在一起",
5
+ "semantic": {
6
+ "intent": [
7
+ "操作分组",
8
+ "互斥选择"
9
+ ],
10
+ "useCases": [
11
+ "视图切换",
12
+ "格式化工具栏",
13
+ "分段控制"
14
+ ],
15
+ "riskLevel": "low"
16
+ },
17
+ "variants": {
18
+ "icon": {
19
+ "meaning": "图标模式"
20
+ },
21
+ "iconSplit": {
22
+ "meaning": "图标分割模式"
23
+ },
24
+ "text": {
25
+ "meaning": "文本模式"
26
+ }
27
+ },
28
+ "states": [
29
+ "default",
30
+ "disabled"
31
+ ],
32
+ "idealProps": {
33
+ "data": {
34
+ "type": "ButtonItem[]",
35
+ "itemSchema": {
36
+ "icon": { "type": "ReactNode", "description": "按钮图标" },
37
+ "text": { "type": "ReactNode", "description": "按钮文本(icon/iconSplit 模式下仅作 tooltip 默认值;text 模式下为显示文字)" },
38
+ "disabled": { "type": "boolean", "description": "单项禁用(覆盖组件级 disabled)" },
39
+ "toolTipTitle": { "type": "ReactNode", "description": "该项 tooltip 文案(优先级高于 text)" },
40
+ "variant": { "type": "'contained' | 'outlined' | 'text'", "description": "继承自 ButtonProps,text 模式下用于标识激活态" }
41
+ },
42
+ "description": "按钮组数据数组,每项 ButtonItem extends ButtonProps(来自 src/Button — 可用 variant / size / loading / type 等全部 Button 字段),额外含 ButtonGroup 专用字段 icon? / text? / toolTipTitle? + 索引签名透传业务字段;src/ButtonGroup/index.tsx:15。**text 字段双语义**:icon/iconSplit 模式下 text 仅作 tooltip 默认值(不显示为按钮文字),text 模式下 text 才是按钮显示文字。**ButtonItem.value 字段冲突**:继承自 Button 类型为 `string | number | readonly string[] | undefined`,**不是单纯 string** — 业务标识请用 viewId / actionKey / menuKey 等独有名避免 tsc 报错(R22 ButtonGroup-004 实证)。**data[].disabled** 是单项独立覆盖字段(boolean,非字符串)"
43
+ },
44
+ "mode": {
45
+ "type": "enum",
46
+ "values": [
47
+ "icon",
48
+ "iconSplit",
49
+ "text"
50
+ ],
51
+ "default": "icon",
52
+ "description": "按钮组模式(icon=纯图标 / iconSplit=分割可见 / text=纯文字)。**text 模式下 variant 切换有效**:variant='contained' 实心高亮 / variant='outlined' 描边弱化 — 配合外部 activeKey state 实现 tabs 视觉切换(组件无内置 active 状态)"
53
+ },
54
+ "layout": {
55
+ "type": "enum",
56
+ "values": [
57
+ "horizontal",
58
+ "vertical"
59
+ ],
60
+ "default": "horizontal",
61
+ "description": "布局方向"
62
+ },
63
+ "showToolTip": {
64
+ "type": "boolean",
65
+ "default": "false",
66
+ "description": "对每按钮显示 tooltip,未设 toolTipTitle 时自动用 text 作为提示;单项 toolTipTitle 优先级高于此自动逻辑"
67
+ },
68
+ "showIcon": {
69
+ "type": "boolean",
70
+ "default": "false",
71
+ "description": "text 模式下文字前显示 icon(icon/iconSplit 模式无效)"
72
+ },
73
+ "disabled": {
74
+ "type": "boolean",
75
+ "default": "false",
76
+ "description": "整组禁用;单项可通过 data[].disabled(**boolean,不是字符串 'true'**)单独覆盖;src/ButtonGroup/index.tsx:88 单项若未设则继承顶层"
77
+ },
78
+ "onClick": {
79
+ "type": "(item: ButtonItem, event?: React.MouseEvent) => void",
80
+ "description": "点击回调;**item 是被点击的整个 ButtonItem 对象**(含 data 项里的所有自定义字段,如业务 id / viewId 等)— 推荐做法:在 data 每项上挂 value / viewId 等业务字段,onClick 内 item.viewId 直取(不必维护 index → 业务 id 的映射)"
81
+ }
82
+ },
83
+ "do": [
84
+ "用于互斥或相关操作的分组",
85
+ "保持按钮数量适中(2-5)",
86
+ "在 data 每项透传业务字段(如 value / viewId / actionKey),onClick 内 item.业务字段 取值"
87
+ ],
88
+ "dont": [
89
+ "ButtonGroup 内放置不相关的操作",
90
+ "按钮过多导致布局拥挤",
91
+ "把 data[].disabled 传字符串 'true'(必须 boolean — runtime 行为不可信)",
92
+ "假设 ButtonGroup 有内置 active/selected 状态(无此 prop — tabs 切换需外部 state 维护 activeKey,根据 activeKey 在 data 项里切 variant: 'contained' | 'outlined')",
93
+ "把业务标识透传到 ButtonItem.value 字段(value 继承自 Button 是宽类型 `string | number | readonly string[] | undefined` — tsc 会报错;业务标识用 viewId / actionKey / menuKey 等独有名)"
94
+ ],
95
+ "events": {
96
+ "onClick": {
97
+ "signature": "(item: ButtonItem, event?: React.MouseEvent) => void",
98
+ "asyncSupported": false,
99
+ "examples": [
100
+ "通用点击入口:onClick={(item) => dispatch({ type: item.actionKey })}",
101
+ "获取被点击项的业务标识:onClick={(item) => navigate(item.viewId)}",
102
+ "需要事件对象:onClick={(item, event) => { event?.stopPropagation(); handleItem(item); }}"
103
+ ],
104
+ "commonMistakes": [
105
+ "期望 item 只是 index 或 key——item 是被点击的完整 ButtonItem 对象,含 data[] 中该项的所有字段",
106
+ "在 data 里用 ButtonItem.value 存业务 id——value 继承自 Button 是宽类型 string|number|readonly string[]|undefined,建议用 viewId/actionKey 等独有字段名",
107
+ "event 参数是可选的(签名 event?),回调内直接访问 event.target 前需检查 event 非 undefined"
108
+ ]
109
+ }
110
+ },
111
+ "typescriptPitfalls": [
112
+ {
113
+ "issue": "ButtonItem 继承自 ButtonProps,value 字段类型是 string|number|readonly string[]|undefined,不是单纯 string",
114
+ "wrong": "const items: ButtonItem[] = [{ icon: <Icon/>, text: '编辑', value: 'edit' }];\n// onClick 中:const id: string = item.value; // TS 报错:不可分配给 string",
115
+ "right": "// 使用自定义字段名避免冲突\nconst items: ButtonItem[] = [{ icon: <Icon/>, text: '编辑', actionKey: 'edit' }];\n// onClick 中:const key = (item as any).actionKey;"
116
+ },
117
+ {
118
+ "issue": "ButtonGroup 没有内置 active/selected 状态,需要外部 state 维护并通过 variant 切换视觉",
119
+ "wrong": "// 期望有 activeKey prop 自动高亮\n<ButtonGroup data={tabs} activeKey='tab1' /> // activeKey 不在 ButtonGroupProps,静默失效",
120
+ "right": "// 外部维护 activeKey,按需设置 variant\nconst [active, setActive] = useState('tab1');\n<ButtonGroup\n mode='text'\n data={tabs.map(t => ({ ...t, variant: t.id === active ? 'contained' : 'outlined' }))}\n onClick={(item) => setActive((item as any).id)}\n/>"
121
+ },
122
+ {
123
+ "issue": "data[].disabled 必须是 boolean,不能是字符串 'true',因为 ButtonGroup src 用 typeof _disabled === 'undefined' 做判断",
124
+ "wrong": "const items: ButtonItem[] = [{ text: '删除', disabled: 'true' as any }]; // 字符串 'true' 是 truthy,不是 boolean true",
125
+ "right": "const items: ButtonItem[] = [{ text: '删除', disabled: true }]; // 明确传 boolean"
126
+ }
127
+ ],
128
+ "mapping": {
129
+ "realComponent": "ButtonGroup",
130
+ "adapter": null
131
+ }
132
+ }
@@ -5,7 +5,7 @@ export interface ButtonItem extends ButtonProps {
5
5
  icon?: ReactNode;
6
6
  /** 文本*/
7
7
  text?: ReactNode;
8
- [key: string]: any;
8
+ [key: string]: unknown;
9
9
  }
10
10
  export interface ButtonGroupProps {
11
11
  /** 按钮组模式 */