@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
@@ -0,0 +1,162 @@
1
+ {
2
+ "name": "Card",
3
+ "category": "Data Display",
4
+ "description": "list-driven 卡片容器——按 list 数据源渲染多张卡片,支持每行个数 / 加载更多 / 投影边框配置。**注意:不是 antd 风格的单卡片容器**(没有 title / extra / hoverable / actions 这些 prop)",
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
+ "loadingMore"
26
+ ],
27
+ "idealProps": {
28
+ "list": {
29
+ "type": "CardItemProps[]",
30
+ "itemSchema": {
31
+ "render": { "type": "ReactNode", "description": "卡片内容,静态 ReactNode(不是函数),闭包引用循环变量:data.map(d => ({ render: <div>{d.title}</div> }))" },
32
+ "style": { "type": "React.CSSProperties", "description": "透传到该卡片外层 div 的样式(可覆盖 boxShadow / border 等组件级配置)" }
33
+ },
34
+ "description": "卡片数据源数组。**`CardItemProps = { render?: ReactNode; style?: CSSProperties; [key]: any }`**——核心字段:①`render` 是**静态 ReactNode**(不是 `(item) => ReactNode` 函数!直接写 JSX 即可,需引用循环变量时用闭包:`docs.map(d => ({ render: <div>{d.title}</div> }))`,不要写 `render: () => <div>{d.title}</div>`);②`style` 透传到该卡片外层 div;③允许任意业务字段平铺存放(`id` / `title` 等仅供业务方在 render 中闭包引用,不被 Card 内部使用)。**list 项**不需要传 React `key`——src 内部用数组 index 做 key。"
35
+ },
36
+ "lineNum": {
37
+ "type": "number | CardLineNumProps[]",
38
+ "itemSchema": {
39
+ "width": { "type": "number", "required": true, "description": "容器宽度阈值(px),当容器宽度超过此值时使用此断点配置" },
40
+ "size": { "type": "number", "required": true, "description": "该断点下每行展示的卡片数" }
41
+ },
42
+ "description": "**每行展示的卡片数**(不是总行数!)。与 `width` 互斥:仅当未传 `width` 时 `lineNum` 才生效,每张卡片宽度按容器宽度均分。传数组可做响应式:`[{width: 容器宽阈值, size: 该断点每行个数}]`,src 按 width 升序匹配第一个 `item.width > 容器宽` 的 size;都不命中时取最大档 size。**src 行为细节**(DEFECT-006):src 内部按 width 升序自动 sort,Infinity 作 width 合法且与 `>` 比较恒真;\"最大档\" = 排序后最后一项(width 最大),与 size 数值无关。"
43
+ },
44
+ "width": {
45
+ "type": "string",
46
+ "default": "300px",
47
+ "description": "每张卡片固定宽度(与 `lineNum` 互斥,**`width` 优先级高于 `lineNum`**——src 在 `props.width === undefined` 时才进入 `lineNum` 分支)。仅接受 px 等具体单位字符串;不支持 `'auto'` / 百分比(src 直接 inline style 透传,但宽度模式下 Card 不会重新计算 marginRight 收尾对齐)。"
48
+ },
49
+ "height": {
50
+ "type": "string",
51
+ "default": "140px",
52
+ "description": "每张卡片高度。仅接受 px 等具体单位字符串;**不支持 `'auto'`**——src 把 height 直接写到外层 div inline style,'auto' 会让卡片高度按 render 内容撑开但失去等高网格视觉。如需自适应内容高度,需在 render 内部用 `display: flex; flex-direction: column` 自管理。**height 不支持 'auto' / 百分比**(DEFECT-008):如需高度跟随内容,父组件需先测量后传 px 字符串(可用 ResizeObserver),Card 不感知父容器高度变化。"
53
+ },
54
+ "boxShadow": {
55
+ "type": "boolean | string",
56
+ "default": false,
57
+ "description": "是否带投影。`true` 默认值 `'1px 1px 10px 2px rgba(212,218,227,0.40)'`(src/Card/index.tsx:203);传字符串则直接作为 CSS box-shadow 值透传。**作用于所有卡片**(组件级);单卡覆盖在 list[].style.boxShadow 中传值,后者优先(Card-DEFECT-003(详见 docs/superpowers/ai-test/defects.md))。"
58
+ },
59
+ "border": {
60
+ "type": "boolean | string",
61
+ "default": false,
62
+ "description": "是否带边框。`true` 默认值 `'1px solid rgba(212, 218, 227, 0.4)'`(src/Card/index.tsx:210);传字符串则直接作为 CSS border 简写值(如 `'2px dashed #1677ff'`)透传。**作用于所有卡片**(组件级);单卡覆盖在 list[].style.border 中传值,后者优先(Card-DEFECT-003(详见 docs/superpowers/ai-test/defects.md))。"
63
+ },
64
+ "marginRight": {
65
+ "type": "string",
66
+ "default": "20px",
67
+ "description": "**卡片之间的右间距**(不是 Card 容器外边距)。每张卡片 inline `style.marginRight`;每行最后一张卡片自动重置为 0。"
68
+ },
69
+ "marginBottom": {
70
+ "type": "string",
71
+ "default": "20px",
72
+ "description": "**卡片之间的下间距**(不是 Card 容器外边距)。每张卡片 inline `style.marginBottom`。"
73
+ },
74
+ "showMore": {
75
+ "type": "boolean",
76
+ "default": false,
77
+ "description": "是否启用『加载更多』机制(与 `onMore` 配合:showMore=true 时滚动到底部触发 onMore;底部展示 moreRender / loadingMoreRender 文案)。**注意**:5.x 没有独立 `hasMore` prop——『已加载完所有数据』需在业务方 `onMore` 内自行判断后 return 短路(参见 do 段)。议题见 discussions/Card-hasMore-prop.md。"
78
+ },
79
+ "moreRender": {
80
+ "type": "ReactNode",
81
+ "default": "intl('more')",
82
+ "description": "底部『可加载』状态展示节点(非 loading 时)。点击后触发 onMore。与 loadingMoreRender 互斥:loadingMore 状态展示 loadingMoreRender,否则展示 moreRender。"
83
+ },
84
+ "loadingMoreRender": {
85
+ "type": "ReactNode",
86
+ "default": "intl('loadingMore')",
87
+ "description": "底部『加载中』状态展示节点(onMore 执行期间)。与 moreRender 互斥(见 moreRender 描述)。"
88
+ },
89
+ "onMore": {
90
+ "type": "function",
91
+ "signature": "() => Promise<void> | void",
92
+ "description": "加载更多回调(showMore=true 时滚动到底部触发)。返回 Promise 时 Card 自动管理 loadingMore 状态——业务方应在 onMore 内 await 数据请求后 setState 追加 list;同步返回时立即结束 loading。**业务方需自行维护 hasMore 标记**:到达末页时在 onMore 入口 `if (!hasMore) return` 短路。"
93
+ },
94
+ "backgroundImage": {
95
+ "type": "string",
96
+ "description": "**作用于所有卡片的统一背景图**(组件级,Card-DEFECT-002(详见 docs/superpowers/ai-test/defects.md):所有卡片共享同一张背景图,不是按 list[].cover 渲染单卡封面)。url 设置后 Card 自动追加 `backgroundSize: 100% 100%; backgroundRepeat: no-repeat`。如需每张卡封面不同,请在 list[].render 内自管理图片渲染。"
97
+ },
98
+ "className": {
99
+ "type": "string",
100
+ "description": "卡片容器自定义类名(src/Card/index.tsx:33 interface 实证,透传到根容器 div)"
101
+ },
102
+ "style": {
103
+ "type": "React.CSSProperties",
104
+ "description": "卡片容器自定义样式(src/Card/index.tsx:35 interface 实证,透传到根容器 div)"
105
+ }
106
+ },
107
+ "do": [
108
+ "用 list 一次传入数据源,让 Card 自动按 lineNum / width 排版",
109
+ "**业务数据派生 list 时**:用 `data.map(d => ({ render: <CardContent {...d} /> }))` 或 `data.map(d => ({ render: <div>{d.title}</div> }))` —— render 直接写 JSX 节点(闭包引用循环变量 d),**不要写 `render: () => <div>...</div>` 函数形式**",
110
+ "**自定义渲染撑满整张卡片**:render 节点内部用 `<div style={{ height: '100%', display: 'flex', flexDirection: 'column' }}>...</div>`,因为 Card 已经把外层 div 高度固定为 props.height",
111
+ "在 render 根 div 加 `boxSizing: border-box`(DEFECT-007):因 Card 外层 height 固定时,padding 默认会撑超溢出",
112
+ "需要响应式列数时给 lineNum 传数组(按容器宽断点;按 width 升序匹配第一个超过容器宽的档位)",
113
+ "数据较多时启用 showMore + onMore 实现分页加载;**业务方在 onMore 入口判断业务侧 hasMore 标记,到达末页 `if (!hasMore) return`** 短路(src 无 hasMore prop)",
114
+ "lineNum / width 二选一即可——传 width 时 lineNum 不生效(src 在 props.width === undefined 时才进入 lineNum 分支)",
115
+ "list 项不需要传 React `key`——src 内部用数组 index 做 key(业务字段 `id` 仅供业务方 render 内闭包引用)"
116
+ ],
117
+ "dont": [
118
+ "**不要把 render 写成 `() => ReactNode` 函数形式**——CardItemProps.render 是静态 `ReactNode`,传函数会被 React 当作 child 直接渲染,触发 `Warning: Functions are not valid as a React child` 警告(runtime 层验证失败)",
119
+ "lineNum 与 width 同时传(互斥;src 在 width 已定义时直接走 width 分支,lineNum 被忽略)",
120
+ "在 list 中传入超大 ReactNode 致渲染卡顿(应只放轻量数据,render 用 memo)",
121
+ "**试图传 antd 风格 prop**:`title` / `extra` / `hoverable` / `actions` / `cover` / `renderItem` / `dataSource` —— 这些 prop 不存在;自定义渲染只能通过 `list[].render` 节点",
122
+ "传 `height='auto'` 或百分比——src 直接 inline 透传,'auto' 会让卡片高度按内容撑开但失去等高视觉",
123
+ "依赖 `showMore=false` 切换来停止 onMore 触发——切换 false 会让底部按钮消失但已触发的 onMore 不会撤销;正确做法是 `onMore` 内 `if (!业务侧 hasMore) return`"
124
+ ],
125
+ "events": {
126
+ "onMore": {
127
+ "signature": "() => Promise<void> | void",
128
+ "asyncSupported": true,
129
+ "examples": [
130
+ "基础分页加载:onMore={async () => { const data = await api.getPage(page++); setList(prev => [...prev, ...data]); }}",
131
+ "Card 自动管理 loadingMore 状态——onMore 执行期间显示 loadingMoreRender,执行完毕自动恢复",
132
+ "业务侧维护 hasMore 标记:onMore={async () => { if (!hasMore) return; const res = await load(); if (!res.hasNext) setHasMore(false); }}"
133
+ ],
134
+ "commonMistakes": [
135
+ "期望 src 自动检测是否到达末页——src 无 hasMore prop,到达末页需在 onMore 内 return 短路",
136
+ "依赖 showMore=false 停止触发——切换 false 只隐藏底部按钮,已触发的 onMore Promise 不会撤销",
137
+ "onMore 里直接 setState 覆盖整个 list 而非追加——滚动加载应追加新数据:setList(prev => [...prev, ...newItems])"
138
+ ]
139
+ }
140
+ },
141
+ "typescriptPitfalls": [
142
+ {
143
+ "issue": "list[].render 是静态 ReactNode,不是 (item) => ReactNode 函数——传函数导致 React child 警告",
144
+ "wrong": "const list = data.map(d => ({ render: () => <CardContent data={d} /> })); // 函数被当作 child 渲染,报 Warning",
145
+ "right": "const list = data.map(d => ({ render: <CardContent data={d} /> })); // 闭包引用 d,直接写 JSX"
146
+ },
147
+ {
148
+ "issue": "lineNum 与 width 互斥——同时传时 width 优先(src 在 props.width === undefined 时才进 lineNum 分支)",
149
+ "wrong": "// 期望 lineNum 和 width 都生效\n<Card list={list} width='300px' lineNum={4} /> // lineNum 被忽略",
150
+ "right": "// 二选一:固定宽度用 width;响应式列数用 lineNum(不传 width)\n<Card list={list} lineNum={4} />"
151
+ },
152
+ {
153
+ "issue": "height 不支持 'auto'——src 直接 inline 透传,'auto' 会破坏等高网格视觉",
154
+ "wrong": "<Card list={list} height='auto' /> // 卡片高度按内容撑开,等高网格失效",
155
+ "right": "// 如需自适应内容高度,先测量再传 px 字符串,或在 render 内部自管理\n<Card list={list} height='200px' />"
156
+ }
157
+ ],
158
+ "mapping": {
159
+ "realComponent": "Card",
160
+ "adapter": null
161
+ }
162
+ }
@@ -2,7 +2,7 @@ import { default as React, FunctionComponent, ReactNode } from 'react';
2
2
  export interface CardItemProps {
3
3
  render?: ReactNode;
4
4
  style?: React.CSSProperties;
5
- [name: string]: any;
5
+ [name: string]: unknown;
6
6
  }
7
7
  export interface CardLineNumProps {
8
8
  /** 容器宽度 */
@@ -41,7 +41,7 @@ export interface CardProps {
41
41
  loadingMoreRender?: ReactNode;
42
42
  /** 加载更多事件 */
43
43
  onMore?: () => Promise<void> | void;
44
- [name: string]: any;
44
+ [name: string]: unknown;
45
45
  }
46
46
  export declare const Card: FunctionComponent<CardProps>;
47
47
  export default Card;
package/lib/Card/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const m=require("../_virtual/jsx-runtime.js"),l=require("react"),T=require("../GlobalContext/constant.js"),P=require("clsx"),G=require("../GlobalContext/useFormatMessage.js"),J=require("./lang/index.js"),K=require("../Utils/Hooks/useResizeObserver.js");;/* empty css */const $=i=>{const{className:k,style:B,list:b,boxShadow:f,border:x,backgroundImage:w,width:z="300px",height:F="140px",lineNum:h,marginRight:C="20px",marginBottom:W="20px",showMore:p=!1,moreRender:N,loadingMoreRender:y,onMore:L}=i,v=G.default("Card",J.default),[Q,A]=l.useState(),[S,j]=l.useState(!1),r=l.useRef({}),e=l.useRef(null);r.current.onMore=L,K.default({dom:e.current,cb:()=>q(),timer:0}),l.useEffect(()=>(e.current?.addEventListener("scroll",H),()=>{e.current?.removeEventListener("scroll",H)}),[]),l.useEffect(()=>{q()},[b,h]);const q=()=>{if(!e.current)return;const o=e.current.getBoundingClientRect(),c=e.current.querySelector(".card-list"),t=e.current.querySelector(".card-list > .card-item"),I=t.getBoundingClientRect(),u=parseFloat(t.style.marginRight),g=e.current.scrollHeight>e.current.clientHeight;let n=Math.floor((c.clientWidth+u)/(I.width+u));if(i.width===void 0&&i.lineNum){if(typeof h=="number")n=h;else{const d=i.lineNum.sort((s,R)=>s.width-R.width);for(let s=0,R=d.length;s<R;s++){const M=d[s];if(M.width>o.width){n=M.size;break}else s===d.length-1&&(n=M.size)}}let a=(n-1)*u;g&&(a=a+4);const D=`${a/n}px`;r.current.itemWidth=`calc(${1/n*100}% - ${D})`,e.current.querySelectorAll(".card-list > .card-item").forEach(d=>{d.style.width=r.current.itemWidth})}n!==r.current.lineNumCom&&(r.current.lineNumCom=n,A(n))},H=()=>{if(!(!p||!e.current||!r.current.onMore||r.current.loadingMore)&&e.current.scrollHeight-(e.current.clientHeight+e.current.scrollTop)<1){if(r.current.pos?.clientHeight===e.current.clientHeight&&r.current.pos?.scrollTop===e.current.scrollTop&&r.current.pos?.scrollHeight===e.current.scrollHeight){r.current.pos={};return}r.current.pos={clientHeight:e.current.clientHeight,scrollTop:e.current.scrollTop,scrollHeight:e.current.scrollHeight},E()}},E=async()=>{r.current.loadingMore||(r.current.loadingMore=!0,j(!0),await r.current.onMore(),j(!1),r.current.loadingMore=!1)},O=(o,c)=>{const t={height:F,marginBottom:W,marginRight:C};if(f&&(f===!0?t.boxShadow="1px 1px 10px 2px rgba(212,218,227,0.40)":t.boxShadow=f),x&&(x===!0?t.border="1px solid rgba(212, 218, 227, 0.4)":t.border=x),w&&(t.backgroundImage=w,t.backgroundSize="100% 100%",t.backgroundRepeat="no-repeat"),h===void 0&&(t.width=z),i.width){if(e.current){const u=e.current.querySelector(".card-list").clientWidth,g=parseFloat(C),n=parseFloat(i.width),a=r.current.lineNumCom*(n+g)-g;u-a<=n&&r.current.lineNumCom&&(c+1)%r.current.lineNumCom===0&&(t.marginRight=0)}}else r.current.lineNumCom&&(c+1)%r.current.lineNumCom===0&&(t.marginRight=0);return{...t,...o.style}},_=()=>S?y||v({id:"loadingMore"}):N||v({id:"more"});return m.jsxRuntimeExports.jsxs("div",{className:P(k,`${T.$prefixCls}-card`,{[`${T.$prefixCls}-card-more`]:p&&!S}),style:B,ref:e,children:[m.jsxRuntimeExports.jsx("div",{className:"card-list",children:b?.map((o,c)=>m.jsxRuntimeExports.jsx("div",{className:"card-item",style:O(o,c),children:o.render},c))}),p&&m.jsxRuntimeExports.jsx("div",{className:"more",children:m.jsxRuntimeExports.jsx("div",{className:"more-content",onClick:E,children:_()})})]})};exports.Card=$;exports.default=$;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const m=require("../_virtual/jsx-runtime.js"),l=require("react"),T=require("../GlobalContext/constant.js"),P=require("clsx"),G=require("../GlobalContext/useFormatMessage.js"),J=require("./lang/index.js"),K=require("../Hooks/useResizeObserver.js");;/* empty css */const $=i=>{const{className:k,style:B,list:b,boxShadow:f,border:x,backgroundImage:w,width:z="300px",height:F="140px",lineNum:h,marginRight:C="20px",marginBottom:W="20px",showMore:p=!1,moreRender:N,loadingMoreRender:y,onMore:L}=i,v=G.default("Card",J.default),[Q,A]=l.useState(),[S,j]=l.useState(!1),r=l.useRef({}),e=l.useRef(null);r.current.onMore=L,K.default({dom:e.current,cb:()=>q(),timer:0}),l.useEffect(()=>(e.current?.addEventListener("scroll",H),()=>{e.current?.removeEventListener("scroll",H)}),[]),l.useEffect(()=>{q()},[b,h]);const q=()=>{if(!e.current)return;const o=e.current.getBoundingClientRect(),c=e.current.querySelector(".card-list"),t=e.current.querySelector(".card-list > .card-item"),I=t.getBoundingClientRect(),u=parseFloat(t.style.marginRight),g=e.current.scrollHeight>e.current.clientHeight;let n=Math.floor((c.clientWidth+u)/(I.width+u));if(i.width===void 0&&i.lineNum){if(typeof h=="number")n=h;else{const d=i.lineNum.sort((s,R)=>s.width-R.width);for(let s=0,R=d.length;s<R;s++){const M=d[s];if(M.width>o.width){n=M.size;break}else s===d.length-1&&(n=M.size)}}let a=(n-1)*u;g&&(a=a+4);const D=`${a/n}px`;r.current.itemWidth=`calc(${1/n*100}% - ${D})`,e.current.querySelectorAll(".card-list > .card-item").forEach(d=>{d.style.width=r.current.itemWidth||""})}n!==r.current.lineNumCom&&(r.current.lineNumCom=n,A(n))},H=()=>{if(!(!p||!e.current||!r.current.onMore||r.current.loadingMore)&&e.current.scrollHeight-(e.current.clientHeight+e.current.scrollTop)<1){if(r.current.pos?.clientHeight===e.current.clientHeight&&r.current.pos?.scrollTop===e.current.scrollTop&&r.current.pos?.scrollHeight===e.current.scrollHeight){r.current.pos={};return}r.current.pos={clientHeight:e.current.clientHeight,scrollTop:e.current.scrollTop,scrollHeight:e.current.scrollHeight},E()}},E=async()=>{r.current.loadingMore||(r.current.loadingMore=!0,j(!0),await r.current.onMore(),j(!1),r.current.loadingMore=!1)},O=(o,c)=>{const t={height:F,marginBottom:W,marginRight:C};if(f&&(f===!0?t.boxShadow="1px 1px 10px 2px rgba(212,218,227,0.40)":t.boxShadow=f),x&&(x===!0?t.border="1px solid rgba(212, 218, 227, 0.4)":t.border=x),w&&(t.backgroundImage=w,t.backgroundSize="100% 100%",t.backgroundRepeat="no-repeat"),h===void 0&&(t.width=z),i.width){if(e.current){const u=e.current.querySelector(".card-list").clientWidth,g=parseFloat(C),n=parseFloat(i.width),a=r.current.lineNumCom*(n+g)-g;u-a<=n&&r.current.lineNumCom&&(c+1)%r.current.lineNumCom===0&&(t.marginRight=0)}}else r.current.lineNumCom&&(c+1)%r.current.lineNumCom===0&&(t.marginRight=0);return{...t,...o.style}},_=()=>S?y||v({id:"loadingMore"}):N||v({id:"more"});return m.jsxRuntimeExports.jsxs("div",{className:P(k,`${T.$prefixCls}-card`,{[`${T.$prefixCls}-card-more`]:p&&!S}),style:B,ref:e,children:[m.jsxRuntimeExports.jsx("div",{className:"card-list",children:b?.map((o,c)=>m.jsxRuntimeExports.jsx("div",{className:"card-item",style:O(o,c),children:o.render},c))}),p&&m.jsxRuntimeExports.jsx("div",{className:"more",children:m.jsxRuntimeExports.jsx("div",{className:"more-content",onClick:E,children:_()})})]})};exports.Card=$;exports.default=$;
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,142 @@
1
+ {
2
+ "name": "Carousel",
3
+ "category": "Data Display",
4
+ "description": "走马灯,用于一组图片或卡片的轮播",
5
+ "semantic": {
6
+ "intent": [
7
+ "轮播展示",
8
+ "吸引注意",
9
+ "节省空间"
10
+ ],
11
+ "useCases": [
12
+ "首页 Banner",
13
+ "产品展示",
14
+ "图片画廊"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "默认轮播"
21
+ }
22
+ },
23
+ "states": [
24
+ "active"
25
+ ],
26
+ "idealProps": {
27
+ "autoplay": {
28
+ "type": "boolean",
29
+ "default": false,
30
+ "description": "是否自动切换"
31
+ },
32
+ "autoplaySpeed": {
33
+ "type": "number",
34
+ "default": 3000,
35
+ "description": "自动播放间隔(ms),需配合 autoplay=true 使用",
36
+ "required": false
37
+ },
38
+ "infinite": {
39
+ "type": "boolean",
40
+ "default": true,
41
+ "description": "无限循环;设为 false 时到最后一张停止",
42
+ "required": false
43
+ },
44
+ "slidesToShow": {
45
+ "type": "number",
46
+ "default": 1,
47
+ "description": "一帧显示幻灯片数",
48
+ "required": false
49
+ },
50
+ "slidesToScroll": {
51
+ "type": "number",
52
+ "default": 1,
53
+ "description": "一次滚动幻灯片数",
54
+ "required": false
55
+ },
56
+ "arrows": {
57
+ "type": "boolean",
58
+ "default": false,
59
+ "description": "是否显示前后箭头",
60
+ "required": false
61
+ },
62
+ "dotPosition": {
63
+ "type": "enum",
64
+ "values": ["top", "bottom", "left", "right"],
65
+ "default": "bottom",
66
+ "description": "指示点位置",
67
+ "required": false
68
+ },
69
+ "pauseOnHover": {
70
+ "type": "boolean",
71
+ "default": true,
72
+ "description": "悬停时暂停自动播放",
73
+ "required": false
74
+ },
75
+ "dots": {
76
+ "type": "boolean",
77
+ "default": true,
78
+ "description": "是否显示指示点"
79
+ },
80
+ "effect": {
81
+ "type": "enum",
82
+ "values": [
83
+ "scrollx",
84
+ "fade"
85
+ ],
86
+ "default": "scrollx",
87
+ "description": "动画效果"
88
+ },
89
+ "afterChange": {
90
+ "type": "function",
91
+ "signature": "(current: number) => void",
92
+ "description": "切换面板的回调"
93
+ }
94
+ },
95
+ "do": [
96
+ "使用高质量的图片",
97
+ "限制 Carousel 的数量(<5)以保证性能",
98
+ "需要命令式控制(goTo/next/prev)时通过 forwardRef + useRef<CarouselRef> 获取实例方法"
99
+ ],
100
+ "dont": [
101
+ "在移动端使用非触摸友好的 Carousel",
102
+ "自动播放速度过快 (<2s) 导致用户无法看清",
103
+ "不要传 prevArrow / nextArrow prop——这两个 prop 已从 CarouselProps 中移除(TypeScript 会报错);自定义箭头外观请通过 CSS 覆盖 `.slick-prev` / `.slick-next` 样式"
104
+ ],
105
+ "events": {
106
+ "afterChange": {
107
+ "signature": "(current: number) => void",
108
+ "asyncSupported": false,
109
+ "examples": [
110
+ "切换后同步外部状态:afterChange={(index) => setActiveIndex(index)}",
111
+ "切换后更新指示器:afterChange={(index) => setTitle(slides[index].title)}",
112
+ "切换后埋点:afterChange={(index) => analytics.track('carousel_change', { slide: index })}"
113
+ ],
114
+ "commonMistakes": [
115
+ "期望 beforeChange 回调——CarouselProps 只有 afterChange,beforeChange 来自 react-slick Settings 但未在 CarouselProps 类型覆盖中暴露",
116
+ "期望 afterChange 在自动播放切换时也触发——autoplay 切换同样会触发 afterChange",
117
+ "current 参数是 0-based 索引,从 infinite=true 模式下 current 可能超过 children 数量(react-slick 克隆节点)"
118
+ ]
119
+ }
120
+ },
121
+ "typescriptPitfalls": [
122
+ {
123
+ "issue": "prevArrow 和 nextArrow 已从 CarouselProps 中通过 Omit 移除——传入会有 TS 报错",
124
+ "wrong": "<Carousel prevArrow={<MyPrev />} nextArrow={<MyNext />} /> // TS: Omit<Settings, '...prevArrow | nextArrow'>",
125
+ "right": "// 通过 CSS 覆盖箭头样式\n// .paraui-v4-carousel .slick-prev { ... }\n// .paraui-v4-carousel .slick-next { ... }"
126
+ },
127
+ {
128
+ "issue": "CarouselRef 的命令式方法(goTo/next/prev/play/pause)需要通过 forwardRef 接收,useRef 泛型必须指定",
129
+ "wrong": "const ref = useRef(null);\n// ref.current.goTo(2); // TS: null 上不存在 goTo",
130
+ "right": "import type { CarouselRef } from '@para-ui/core/Carousel';\nconst ref = useRef<CarouselRef>(null);\n// ref.current?.goTo(2);"
131
+ },
132
+ {
133
+ "issue": "effect prop 值只有 'scrollx' | 'fade'——不是 react-slick 原生的 fade boolean,内部做了映射",
134
+ "wrong": "<Carousel fade={true} /> // fade 是 react-slick 原生字段,CarouselProps 用 effect 替代",
135
+ "right": "<Carousel effect='fade' /> // src 内部将 effect='fade' 映射为 newProps.fade=true"
136
+ }
137
+ ],
138
+ "mapping": {
139
+ "realComponent": "Carousel",
140
+ "adapter": null
141
+ }
142
+ }
@@ -2,7 +2,7 @@ import { default as React } from 'react';
2
2
  import { Settings } from 'react-slick';
3
3
  export type CarouselEffect = 'scrollx' | 'fade';
4
4
  export type DotPosition = 'top' | 'bottom' | 'left' | 'right';
5
- export interface CarouselProps extends Omit<Settings, 'dots' | 'dotsClass'> {
5
+ export interface CarouselProps extends Omit<Settings, 'dots' | 'dotsClass' | 'prevArrow' | 'nextArrow'> {
6
6
  /** 动画效果函数 */
7
7
  effect?: CarouselEffect;
8
8
  /** style */
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../_virtual/jsx-runtime.js"),He=require("rc-select"),re=require("clsx"),Ke=require("rc-select/lib/hooks/useId"),Le=require("rc-tree/lib/utils/conductUtil"),Fe=require("../node_modules/@para-ui/icons/Right/index.js"),ae=require("rc-util/lib/hooks/useEvent"),Ue=require("rc-util/lib/hooks/useMergedState"),ze=require("../node_modules/@para-ui/icons/Down/index.js"),Be=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),Je=require("react"),Ge=require("./context.js"),Qe=require("./hooks/useDisplayValues.js"),Xe=require("./hooks/useEntities.js"),Ye=require("./hooks/useMissingValues.js"),Ze=require("./OptionList/index.js"),f=require("./utils/commonUtil.js"),T=require("./utils/treeUtil.js"),et=require("@snack-kit/lib"),j=require("../GlobalContext/constant.js"),ie=require("../Tooltip/index.js"),tt=require("./lang/index.js"),st=require("../GlobalContext/useFormatMessage.js"),nt=require("../HelperText/index.js");function ot(o){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const p in o)if(p!=="default"){const E=Object.getOwnPropertyDescriptor(o,p);Object.defineProperty(l,p,E.get?E:{enumerable:!0,get:()=>o[p]})}}return l.default=o,Object.freeze(l)}const n=ot(Je);function rt(o){return Array.isArray(o)&&Array.isArray(o[0])}function _(o){return o?rt(o)?o:(o.length===0?[]:[o]).map(l=>Array.isArray(l)?l:[l]):[]}const S=n.forwardRef((o,l)=>{const p=st.default("Cascader",tt.default),{id:E,prefixCls:le=`${j.$prefixCls}-cascader`,fieldNames:I,className:at,defaultValue:ce,value:y,changeOnSelect:W,onChange:R,displayRender:ue,expandTrigger:A,options:g,optionsTitle:H=[],dropdownPrefixCls:K,loadData:L,popupVisible:F,open:N,popupClassName:de,dropdownClassName:pe,dropdownMenuColumnStyle:U,popupPlacement:me,placement:he,onDropdownVisibleChange:xe,onPopupVisibleChange:fe,expandIcon:z=s.jsxRuntimeExports.jsx(Fe.Right,{}),loadingIcon:B,placeholder:q=p({id:"placeholder"}),allClear:ge=!0,menuMaxHight:Ce=158,expandJoin:je="/",disabled:V=!1,loading:w,disabledTooltip:M,error:J=!1,hideErrorDom:Ee,helperText:ye="",children:G,dropdownMatchSelectWidth:Re=!1,showCheckedStrategy:Q=f.SHOW_PARENT,...Ve}=o,we=Ke(E),[v,be]=Ue(ce,{value:y,postState:_}),c=n.useMemo(()=>f.fillFieldNames(I),[JSON.stringify(I)]),u=n.useMemo(()=>g||[],[g]),m=Xe.default(u,c),C=n.useCallback(e=>{const t=m();return e.map(r=>{const{nodes:i}=t[r];return i.map(a=>a[c.value])})},[m,c]),[h,X]=n.useState(),[P,D]=n.useState(!1),[Y,Oe]=n.useState("auto"),x=n.useRef({id:et.UUID(),level:1}),Se=e=>_(e).map(i=>T.toPathOptions(i,u,c).map(a=>a.option));n.useEffect(()=>{if(!y)return;const t=Se(y)[0];t&&X(t.map(r=>r?.label).join(je))},[y]);const Z=Ye.default(u,c),[b,ee,te]=n.useMemo(()=>{const[e,t]=Z(v);if(!v.length)return[e,[],t];const r=f.toPathKeys(e),i=m(),{checkedKeys:a,halfCheckedKeys:d}=Le.conductCheck(r,!0,i);return[C(a),C(d),t]},[v,m,C,Z]),Ne=n.useMemo(()=>{const e=f.toPathKeys(b),t=T.formatStrategyValues(e,m,Q);return[...te,...C(t)]},[b,m,C,te,Q]),qe=Qe.default(Ne,u,c,!1,ue),se=ae(e=>{be(e);const t=_(e),r=t.map(d=>T.toPathOptions(d,u,c).map(O=>O.option)),i=t[0],a=r[0];R&&R(i,a||[])}),k=ae(e=>{se(e)}),Me=(e,t)=>{if(t.type==="clear"){se([]);return}const{valueCells:r}=t.values[0];k(r)},ve=pe||de,Pe=he||me,De=e=>{D(e),xe?.(e),fe?.(e)},ne=n.useMemo(()=>({options:u,optionsTitle:H,fieldNames:c,values:b,menuMaxHight:Ce,halfValues:ee,changeOnSelect:W,onSelect:k,menuWidth:Y,dropdownPrefixCls:K,loadData:L,expandTrigger:A,expandIcon:z,loadingIcon:B,dropdownMenuColumnStyle:U,loading:w}),[Y,u,x,H,c,b,ee,W,k,K,L,A,z,B,U,w]),oe=!u.length,ke=(e,t=1)=>{let r=t;const i=[...e.map(a=>({option:a,depth:1}))];for(;i.length>0&&r<3;){const a=i.pop();if(!a)break;const{option:d,depth:O}=a;r=Math.max(r,O),d.children&&d.children.length>0&&i.push(...d.children.map(Ae=>({option:Ae,depth:O+1})))}return r};n.useEffect(()=>{D(!!(N!==void 0?N:F))},[N,F]),n.useEffect(()=>(window.addEventListener("resize",$),()=>{window.removeEventListener("resize",$)}),[]),n.useEffect(()=>{const t=g?.[0]?.children;x.current.level=!t||t.length<1||w?1:ke(g||[]),$()},[g,w]);const $e=e=>{e.stopPropagation(),X(""),R&&R([],[]),D(!1),ne.values=[]},$=()=>{const e=document.getElementById(`${x.current.id}`);if(!e)return;const{clientWidth:t}=e;Oe((t/x.current.level).toFixed(2))},Te=n.useMemo(()=>s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:h?V&&M?s.jsxRuntimeExports.jsx(ie.Tooltip,{disabled:!0,children:s.jsxRuntimeExports.jsx("span",{className:"select-label-text",children:h})}):s.jsxRuntimeExports.jsx("span",{className:"select-label-text",children:h}):V&&M?s.jsxRuntimeExports.jsx(ie.Tooltip,{disabled:!0,...M,children:s.jsxRuntimeExports.jsx("span",{className:"select-label-placeholder",children:q})}):s.jsxRuntimeExports.jsx("span",{className:"select-label-placeholder",children:q})}),[h,q]),_e=()=>{if(ge)return s.jsxRuntimeExports.jsx("span",{className:"clean-up-icon",onClick:$e,children:s.jsxRuntimeExports.jsx(Be.CloseCircleF,{})})},Ie=n.useMemo(()=>{const e=re(`${j.$prefixCls}-cascader-select-content`,{[`${j.$prefixCls}-cascader-select-value`]:h,[`${j.$prefixCls}-cascader-select-disabled`]:V,[`${j.$prefixCls}-cascader-error`]:J}),t=re("select-svg",{"select-svg-open":P});return G||s.jsxRuntimeExports.jsxs("div",{className:e,id:x.current.id,children:[Te,s.jsxRuntimeExports.jsxs("span",{className:t,children:[s.jsxRuntimeExports.jsx(ze.Down,{}),_e()]})]})},[h,P,x]),We=oe?{}:{minWidth:"auto"};return s.jsxRuntimeExports.jsxs(Ge.default.Provider,{value:ne,children:[s.jsxRuntimeExports.jsx(He.BaseSelect,{...Ve,ref:l,disabled:V,id:we,prefixCls:le,dropdownMatchSelectWidth:Re,dropdownStyle:We,showSearch:!1,searchValue:"",onSearch:()=>{console.log("not search")},displayValues:qe,onDisplayValuesChange:Me,OptionList:Ze.default,emptyOptions:oe,open:P,dropdownClassName:ve,placement:Pe,onDropdownVisibleChange:De,getRawInputElement:()=>Ie}),s.jsxRuntimeExports.jsx(nt.default,{className:"text-field-error-text",error:J,helperText:ye,hideErrorDom:Ee})]})});process.env.NODE_ENV!=="production"&&(S.displayName="Cascader");S.SHOW_PARENT=f.SHOW_PARENT;S.SHOW_CHILD=f.SHOW_CHILD;exports.default=S;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("../_virtual/jsx-runtime.js"),Ke=require("rc-select"),ce=require("clsx"),Le=require("rc-select/lib/hooks/useId"),Fe=require("rc-tree/lib/utils/conductUtil"),Ue=require("../node_modules/@para-ui/icons/Right/index.js"),ue=require("rc-util/lib/hooks/useEvent"),ze=require("rc-util/lib/hooks/useMergedState"),Be=require("../node_modules/@para-ui/icons/Down/index.js"),Je=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),Ge=require("react"),Qe=require("./context.js"),Xe=require("./hooks/useDisplayValues.js"),Ye=require("./hooks/useEntities.js"),Ze=require("./hooks/useMissingValues.js"),et=require("./OptionList/index.js"),f=require("./utils/commonUtil.js"),A=require("./utils/treeUtil.js"),tt=require("@snack-kit/lib"),j=require("../GlobalContext/constant.js"),de=require("../Tooltip/index.js"),st=require("./lang/index.js"),nt=require("../GlobalContext/useFormatMessage.js"),ot=require("../HelperText/index.js");function rt(o){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const p in o)if(p!=="default"){const E=Object.getOwnPropertyDescriptor(o,p);Object.defineProperty(l,p,E.get?E:{enumerable:!0,get:()=>o[p]})}}return l.default=o,Object.freeze(l)}const s=rt(Ge);function at(o){return Array.isArray(o)&&Array.isArray(o[0])}function H(o){return o?at(o)?o:(o.length===0?[]:[o]).map(l=>Array.isArray(l)?l:[l]):[]}const O=s.forwardRef((o,l)=>{const p=nt.default("Cascader",st.default),{id:E,prefixCls:pe=`${j.$prefixCls}-cascader`,fieldNames:K,className:it,defaultValue:me,value:R,changeOnSelect:L,onChange:y,displayRender:he,expandTrigger:F,options:g,optionsTitle:U=[],dropdownPrefixCls:z,loadData:B,popupVisible:V,open:S,popupClassName:P,dropdownClassName:xe,dropdownMenuColumnStyle:J,popupPlacement:q,placement:fe,onDropdownVisibleChange:ge,onPopupVisibleChange:M,expandIcon:G=n.jsxRuntimeExports.jsx(Ue.Right,{}),loadingIcon:Q,placeholder:D=p({id:"placeholder"}),allClear:Ce=!0,menuMaxHight:je=158,expandJoin:Ee="/",disabled:b=!1,loading:w,disabledTooltip:k,error:X=!1,hideErrorDom:Re,helperText:ye="",children:Y,dropdownMatchSelectWidth:Ve=!1,showCheckedStrategy:Z=f.SHOW_PARENT,...be}=o,we=Le(E),[$,ve]=ze(me,{value:R,postState:H}),c=s.useMemo(()=>f.fillFieldNames(K),[JSON.stringify(K)]),u=s.useMemo(()=>g||[],[g]),m=Ye.default(u,c),C=s.useCallback(e=>{const t=m();return e.map(r=>{const{nodes:i}=t[r];return i.map(a=>a[c.value])})},[m,c]),[h,ee]=s.useState(),[_,T]=s.useState(!1),[te,Ne]=s.useState("auto"),x=s.useRef({id:tt.UUID(),level:1}),Oe=e=>H(e).map(i=>A.toPathOptions(i,u,c).map(a=>a.option));s.useEffect(()=>{if(!R)return;const t=Oe(R)[0];t&&ee(t.map(r=>r?.label).join(Ee))},[R]);const se=Ze.default(u,c),[v,ne,oe]=s.useMemo(()=>{const[e,t]=se($);if(!$.length)return[e,[],t];const r=f.toPathKeys(e),i=m(),{checkedKeys:a,halfCheckedKeys:d}=Fe.conductCheck(r,!0,i);return[C(a),C(d),t]},[$,m,C,se]),Se=s.useMemo(()=>{const e=f.toPathKeys(v),t=A.formatStrategyValues(e,m,Z);return[...oe,...C(t)]},[v,m,C,oe,Z]),Pe=Xe.default(Se,u,c,!1,he),re=ue(e=>{ve(e);const t=H(e),r=t.map(d=>A.toPathOptions(d,u,c).map(N=>N.option)),i=t[0],a=r[0];y&&y(i,a||[])}),I=ue(e=>{re(e)}),qe=(e,t)=>{if(t.type==="clear"){re([]);return}const{valueCells:r}=t.values[0];I(r)},Me=xe||P,De=fe||q,ke=e=>{T(e),ge?.(e),M?.(e)},ae=s.useRef(!1);s.useEffect(()=>{if(process.env.NODE_ENV==="production"||ae.current)return;const e=[];V!==void 0&&e.push("popupVisible → open"),P!==void 0&&e.push("popupClassName → dropdownClassName"),q!==void 0&&e.push("popupPlacement → placement"),M!==void 0&&e.push("onPopupVisibleChange → onDropdownVisibleChange"),e.length!==0&&(ae.current=!0,console.warn(`[Cascader] 检测到已 @deprecated 的 popup* 命名 prop:${e.join("、")}。v5.x 仍 fallback 兼容,v6.0 移除。请按箭头右侧迁移。`))},[V,P,q,M]);const ie=s.useMemo(()=>({options:u,optionsTitle:U,fieldNames:c,values:v,menuMaxHight:je,halfValues:ne,changeOnSelect:L,onSelect:I,menuWidth:te,dropdownPrefixCls:z,loadData:B,expandTrigger:F,expandIcon:G,loadingIcon:Q,dropdownMenuColumnStyle:J,loading:w}),[te,u,x,U,c,v,ne,L,I,z,B,F,G,Q,J,w]),le=!u.length,$e=(e,t=1)=>{let r=t;const i=[...e.map(a=>({option:a,depth:1}))];for(;i.length>0&&r<3;){const a=i.pop();if(!a)break;const{option:d,depth:N}=a;r=Math.max(r,N),d.children&&d.children.length>0&&i.push(...d.children.map(He=>({option:He,depth:N+1})))}return r};s.useEffect(()=>{T(!!(S!==void 0?S:V))},[S,V]),s.useEffect(()=>(window.addEventListener("resize",W),()=>{window.removeEventListener("resize",W)}),[]),s.useEffect(()=>{const t=g?.[0]?.children;x.current.level=!t||t.length<1||w?1:$e(g||[]),W()},[g,w]);const _e=e=>{e.stopPropagation(),ee(""),y&&y([],[]),T(!1),ie.values=[]},W=()=>{const e=document.getElementById(`${x.current.id}`);if(!e)return;const{clientWidth:t}=e;Ne((t/x.current.level).toFixed(2))},Te=s.useMemo(()=>n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:h?b&&k?n.jsxRuntimeExports.jsx(de.Tooltip,{disabled:!0,children:n.jsxRuntimeExports.jsx("span",{className:"select-label-text",children:h})}):n.jsxRuntimeExports.jsx("span",{className:"select-label-text",children:h}):b&&k?n.jsxRuntimeExports.jsx(de.Tooltip,{disabled:!0,...k,children:n.jsxRuntimeExports.jsx("span",{className:"select-label-placeholder",children:D})}):n.jsxRuntimeExports.jsx("span",{className:"select-label-placeholder",children:D})}),[h,D]),Ie=()=>{if(Ce)return n.jsxRuntimeExports.jsx("span",{className:"clean-up-icon",onClick:_e,children:n.jsxRuntimeExports.jsx(Je.CloseCircleF,{})})},We=s.useMemo(()=>{const e=ce(`${j.$prefixCls}-cascader-select-content`,{[`${j.$prefixCls}-cascader-select-value`]:h,[`${j.$prefixCls}-cascader-select-disabled`]:b,[`${j.$prefixCls}-cascader-error`]:X}),t=ce("select-svg",{"select-svg-open":_});return Y||n.jsxRuntimeExports.jsxs("div",{className:e,id:x.current.id,children:[Te,n.jsxRuntimeExports.jsxs("span",{className:t,children:[n.jsxRuntimeExports.jsx(Be.Down,{}),Ie()]})]})},[h,_,x]),Ae=le?{}:{minWidth:"auto"};return n.jsxRuntimeExports.jsxs(Qe.default.Provider,{value:ie,children:[n.jsxRuntimeExports.jsx(Ke.BaseSelect,{...be,ref:l,disabled:b,id:we,prefixCls:pe,dropdownMatchSelectWidth:Ve,dropdownStyle:Ae,showSearch:!1,searchValue:"",onSearch:()=>{console.log("not search")},displayValues:Pe,onDisplayValuesChange:qe,OptionList:et.default,emptyOptions:le,open:_,dropdownClassName:Me,placement:De,onDropdownVisibleChange:ke,getRawInputElement:()=>We}),n.jsxRuntimeExports.jsx(ot.default,{className:"text-field-error-text",error:X,helperText:ye,hideErrorDom:Re})]})});process.env.NODE_ENV!=="production"&&(O.displayName="Cascader");O.SHOW_PARENT=f.SHOW_PARENT;O.SHOW_CHILD=f.SHOW_CHILD;exports.default=O;
2
2
  //# sourceMappingURL=Cascader.js.map
@@ -0,0 +1,196 @@
1
+ {
2
+ "name": "Cascader",
3
+ "category": "Data Entry",
4
+ "description": "级联选择,用于多层级数据的选择",
5
+ "semantic": {
6
+ "intent": [
7
+ "层级选择",
8
+ "地域选择",
9
+ "分类选择"
10
+ ],
11
+ "useCases": [
12
+ "省市区选择",
13
+ "商品分类",
14
+ "组织架构"
15
+ ],
16
+ "riskLevel": "normal"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "标准级联"
21
+ }
22
+ },
23
+ "states": [
24
+ "default",
25
+ "disabled",
26
+ "error",
27
+ "loading"
28
+ ],
29
+ "idealProps": {
30
+ "options": {
31
+ "type": "array",
32
+ "itemSchema": {
33
+ "label": { "type": "ReactNode", "required": true, "description": "选项显示文案" },
34
+ "value": { "type": "string | number | null", "description": "选项值" },
35
+ "children": { "type": "DefaultOptionType[]", "description": "子级选项,形成层级结构" },
36
+ "disabled": { "type": "boolean", "description": "是否禁用该选项" },
37
+ "disableCheckbox": { "type": "boolean", "description": "禁用 checkbox(checkable 模式)" },
38
+ "disableTitle": { "type": "string", "description": "禁用时 tooltip 提示文案" }
39
+ },
40
+ "description": "数据源,元素类型为 `DefaultOptionType`(包含 `label / value / children / disabled / disableTitle`;⚠️ `loading` 和 `isLeaf` **不在 DefaultOptionType 中**,是 loadData 场景扩展字段,需在业务类型中另声明)。业务自有节点类型对接三种推荐写法:(1) 泛型 `<Cascader<RegionNode> options={tree} />`(首选,Cascader 已暴露 `<OptionType extends BaseOptionType = DefaultOptionType>` 泛型);(2) 声明合并 `interface RegionNode extends DefaultOptionType { ... }`;(3) as 强转 `options={tree as DefaultOptionType[]}`(快速逃逸)。详见 docs/view/cascader/codeString.ts customOptionTypeCascader 示例。"
41
+ },
42
+ "value": {
43
+ "type": "(string | number)[]",
44
+ "description": "受控选中值;级联路径数组,每层一个值,如 `['guangdong', 'guangzhou']`。⚠️ 类型是 (string | number)[],不是 string[] 或 any[],传纯 string 路径需在调用侧 as string[]"
45
+ },
46
+ "defaultValue": {
47
+ "type": "(string | number)[]",
48
+ "description": "非受控初始选中值;格式同 value,如 `['guangdong', 'guangzhou']`。不要同时传 value + defaultValue"
49
+ },
50
+ "onChange": {
51
+ "type": "function",
52
+ "signature": "(value: (string | number)[], selectedOptions: DefaultOptionType[]) => void",
53
+ "description": "选中值改变回调。**完整签名**:第一参 value 是选中路径各级节点 value 组成的数组(如 ['guangdong', 'guangzhou']);第二参 selectedOptions 是路径各级节点完整对象数组。⚠️ **TS7006 陷阱(noImplicitAny)**:内联回调参数必须显式标注类型——`onChange={(value: (string | number)[]) => ...}` ✅;`onChange={(value) => ...}` ❌ 报 TS7006。**桥接 string[] 场景推荐写法**:`onChange={(value: (string | number)[]) => onPathChange(value as string[])}`"
54
+ },
55
+ "onDropdownVisibleChange": {
56
+ "type": "function",
57
+ "signature": "(visible: boolean) => void",
58
+ "description": "弹出层显示状态改变时的回调,visible=true 表示打开,false 表示关闭"
59
+ },
60
+ "changeOnSelect": {
61
+ "type": "boolean",
62
+ "default": false,
63
+ "description": "选择任一级即触发 onChange,无需选到末级"
64
+ },
65
+ "expandTrigger": {
66
+ "type": "enum",
67
+ "values": [
68
+ "click",
69
+ "hover"
70
+ ],
71
+ "default": "click",
72
+ "description": "展开触发方式"
73
+ },
74
+ "expandIcon": {
75
+ "type": "ReactNode",
76
+ "description": "展开箭头图标"
77
+ },
78
+ "loadingIcon": {
79
+ "type": "ReactNode",
80
+ "description": "异步加载状态图标"
81
+ },
82
+ "expandJoin": {
83
+ "type": "string",
84
+ "default": "/",
85
+ "description": "已选路径文本拼接符"
86
+ },
87
+ "fieldNames": {
88
+ "type": "object",
89
+ "default": "{ label: 'label', value: 'value', children: 'children' }",
90
+ "objectShape": {
91
+ "label": { "type": "string", "description": "数据中作为显示文案的字段名,默认 'label'" },
92
+ "value": { "type": "string", "description": "数据中作为值的字段名,默认 'value'" },
93
+ "children": { "type": "string", "description": "数据中作为子级的字段名,默认 'children'" }
94
+ },
95
+ "description": "自定义节点字段名映射"
96
+ },
97
+ "placeholder": {
98
+ "type": "string",
99
+ "default": "请选择",
100
+ "description": "占位符"
101
+ },
102
+ "disabled": {
103
+ "type": "boolean",
104
+ "default": false,
105
+ "description": "是否整体禁用"
106
+ },
107
+ "disabledTooltip": {
108
+ "type": "TooltipProps",
109
+ "description": "disabled 时悬浮于触发框的 Tooltip 配置"
110
+ },
111
+ "optionsTitle": {
112
+ "type": "Array<string | null>",
113
+ "default": "[]",
114
+ "description": "每级面板顶部标题文案,下标对应级数"
115
+ },
116
+ "checkable": {
117
+ "type": "boolean | ReactNode",
118
+ "default": false,
119
+ "description": "是否多选;true 显示 checkbox,传 ReactNode 自定义勾选图标"
120
+ },
121
+ "displayRender": {
122
+ "type": "function",
123
+ "signature": "(label: string[], selectedOptions?: DefaultOptionType[]) => ReactNode",
124
+ "description": "自定义触发框已选项渲染。label 是路径各级节点 label 的字符串数组(非单一字符串);selectedOptions 是路径各级节点完整对象数组"
125
+ },
126
+ "loadData": {
127
+ "type": "function",
128
+ "signature": "(selectedOptions: DefaultOptionType[]) => void",
129
+ "description": "异步加载下一级数据。触发条件:用户展开 isLeaf=false 且无 children 的节点。selectedOptions 为当前展开路径各级节点数组。在回调内修改数据源并通过外部 setState 更新 options(标准模式:setOptions([...options]))"
130
+ },
131
+ "notFoundContent": {
132
+ "type": "ReactNode",
133
+ "description": "options 为空或搜索无匹配时的空状态"
134
+ }
135
+ },
136
+ "do": [
137
+ "用于有明确层级关系的数据选择",
138
+ "数据量较大会延迟加载(loadData)",
139
+ "onChange 内联回调必须显式标注类型参数,避免 noImplicitAny 报错:onChange={(value: (string|number)[]) => ...}"
140
+ ],
141
+ "dont": [
142
+ "层级过深(>5级)导致横向滚动过长",
143
+ "在非层级数据中使用 Cascader(应使用 Select)"
144
+ ],
145
+ "events": {
146
+ "onChange": {
147
+ "signature": "(value: (string | number)[], selectedOptions: DefaultOptionType[]) => void",
148
+ "asyncSupported": false,
149
+ "examples": [
150
+ "基础用法:onChange={(value) => setPath(value)} // value 是路径各级 value 数组,如 ['guangdong', 'guangzhou']",
151
+ "获取完整路径对象:onChange={(value, selectedOptions) => setLabel(selectedOptions.map(o => o.label).join(' / '))}",
152
+ "桥接 string[] 类型:onChange={(value: (string|number)[]) => onPathChange(value as string[])}"
153
+ ],
154
+ "commonMistakes": [
155
+ "内联回调不标注参数类型导致 TS7006 noImplicitAny 报错——必须显式声明 value: (string|number)[]",
156
+ "期望 onChange 在 changeOnSelect=false 时每级展开都触发——只有选到末级(或 changeOnSelect=true 时任意级)才触发",
157
+ "用 value[value.length-1] 取最终叶节点值——这是最后一级的 value,但当 checkable 多选时 value 结构不同(多维数组)"
158
+ ]
159
+ },
160
+ "onDropdownVisibleChange": {
161
+ "signature": "(visible: boolean) => void",
162
+ "asyncSupported": false,
163
+ "examples": [
164
+ "弹出层打开时加载数据:onDropdownVisibleChange={(v) => { if (v && !loaded) fetchOptions(); }}",
165
+ "弹出层关闭时重置搜索:onDropdownVisibleChange={(v) => { if (!v) setSearch(''); }}",
166
+ "受控弹层:onDropdownVisibleChange={(v) => setOpen(v)}"
167
+ ],
168
+ "commonMistakes": [
169
+ "期望 onOpen / onClose 独立回调——Cascader 只有 onDropdownVisibleChange,通过 visible 参数区分",
170
+ "在 onDropdownVisibleChange 里直接 loadData——loadData prop 是每级展开时的异步回调,不是全局弹层回调",
171
+ "visible=false 时立即清空 options——关闭动画期间 Cascader 仍需 options 数据,过早清空会闪烁"
172
+ ]
173
+ }
174
+ },
175
+ "typescriptPitfalls": [
176
+ {
177
+ "issue": "onChange 内联回调参数必须显式标注类型,否则 noImplicitAny 报 TS7006",
178
+ "wrong": "<Cascader onChange={(value) => setV(value)} /> // TS7006: 'value' 参数隐式具有 'any' 类型",
179
+ "right": "<Cascader onChange={(value: (string | number)[]) => setV(value)} />"
180
+ },
181
+ {
182
+ "issue": "业务自有节点类型必须 extends BaseOptionType(含索引签名),否则泛型约束失败",
183
+ "wrong": "interface Region { label: string; value: string; code: string; } // 无索引签名\n<Cascader<Region> options={regions} /> // TS 报错:Region 不满足 BaseOptionType",
184
+ "right": "interface Region extends DefaultOptionType { code: string; } // 继承 DefaultOptionType 或直接继承 BaseOptionType"
185
+ },
186
+ {
187
+ "issue": "DefaultOptionType 的 loading 和 isLeaf 字段不在类型定义中——loadData 场景需扩展类型",
188
+ "wrong": "const node: DefaultOptionType = { label: '北京', value: 'bj', isLeaf: false }; // TS: isLeaf 不在 DefaultOptionType",
189
+ "right": "interface LazyOption extends DefaultOptionType { isLeaf?: boolean; loading?: boolean; }\nconst node: LazyOption = { label: '北京', value: 'bj', isLeaf: false };"
190
+ }
191
+ ],
192
+ "mapping": {
193
+ "realComponent": "Cascader",
194
+ "adapter": null
195
+ }
196
+ }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react"),l=require("../utils/treeUtil.js"),f=require("../utils/commonUtil.js");function p(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,i.get?i:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const c=p(a),b=(e,n)=>{const t=c.useRef({options:null,info:null});return c.useCallback(()=>(t.current.options!==e&&(t.current.options=e,t.current.info=l.convertDataToEntities(e,{fieldNames:n,initWrapper:r=>({...r,pathKeyEntities:{}}),processEntity:(r,u)=>{const o=r.nodes.map(s=>s[n.value]).join(f.VALUE_SPLIT);u.pathKeyEntities[o]=r,r.key=o}})),t.current.info.pathKeyEntities),[n,e])};exports.default=b;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react"),f=require("../utils/treeUtil.js"),p=require("../utils/commonUtil.js");function b(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const i=b(l),g=(e,n)=>{const t=i.useRef({options:null,info:null});return i.useCallback(()=>(t.current.options!==e&&(t.current.options=e,t.current.info=f.convertDataToEntities(e,{fieldNames:n,initWrapper:r=>({...r,pathKeyEntities:{}}),processEntity:(r,u)=>{const s=u,c=r.nodes.map(a=>a[n.value]).join(p.VALUE_SPLIT);s.pathKeyEntities[c]=r,r.key=c}})),t.current.info.pathKeyEntities),[n,e])};exports.default=g;
2
2
  //# sourceMappingURL=useEntities.js.map
@@ -0,0 +1 @@
1
+ export type { DefaultOptionType, BaseOptionType } from './Cascader';
@@ -15,4 +15,4 @@ export declare function toPathValueStr(pathKey: string): string[];
15
15
  export declare function fillFieldNames(fieldNames?: FieldNames): InternalFieldNames;
16
16
  export declare function isLeaf(option: DefaultOptionType, fieldNames: FieldNames): boolean;
17
17
  export declare function scrollIntoParentView(element: HTMLElement): void;
18
- export declare function getFullPathKeys(options: DefaultOptionType[], fieldNames: FieldNames): any[][];
18
+ export declare function getFullPathKeys(options: DefaultOptionType[], fieldNames: FieldNames): (SingleValueType | undefined)[];