@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,365 @@
1
+ # Workflow 8: 表格高级特性(排序 / 行内编辑 / 展开 / 分页)
2
+
3
+ > **基于**:console/src/package/Service/src/content.tsx(Para 团队真实业务代码)
4
+ > **覆盖 baseline 失败任务**:Task 4(排序)/ Task 5(行展开)/ Task 6(行内编辑)/ Task 7(分页)/ Task 8(多选+批量)
5
+ > **集成 typescriptPitfalls**:HeadDataProps 泛型必填 / render 第一参是 row 不是 value / headData 字段 label/sort 不是 title/sorter / rowKey 必传 / RangeValue 类型 / method 首字母大写
6
+
7
+ ---
8
+
9
+ ## 何时使用
10
+
11
+ 数据管理列表需要以下能力中的 2 项及以上:
12
+
13
+ ```
14
+ 列排序 + 行展开详情 + 行内编辑(Switch/状态切换) + 客户端/服务端分页 + 多选批量操作
15
+ ```
16
+
17
+ **典型业务**:任务管理 / 订单列表 / 资产台账 / 用户管理 / 角色权限列表
18
+
19
+ **不要用此模板的场景**:
20
+ - 只需基础展示(无交互)→ 用基础 Table
21
+ - 没有行展开、排序、行内编辑需求 → 用 Workflow 1(CRUD 列表)
22
+
23
+ ---
24
+
25
+ ## 关键模式(与脑补的区别)
26
+
27
+ | 错误模式(AI 常犯) | 正确模式 |
28
+ |------------------|--------|
29
+ | ❌ `headData: HeadDataProps[]`(无泛型)导致 render 中 row 类型是 unknown | ✅ **`headData: HeadDataProps<TaskRow>[]`** 或 `<Table<TaskRow>>` 泛型传导,render 有类型提示 |
30
+ | ❌ `{ title: '状态', dataIndex: 'status', sorter: true }` antd 风格 | ✅ **`{ label: '状态', name: 'status', sort: true }`**(label/name/sort,不是 title/dataIndex/sorter)|
31
+ | ❌ `render={(value) => <Tag>{value}</Tag>}` 以为第一参是单元格值 | ✅ **`render={(row) => <Tag>{row.status}</Tag>}`** 第一参是整行数据(与 antd 相反)|
32
+ | ❌ `<Table data={list} />` 不传 rowKey | ✅ **`rowKey='id'`** 必传,默认 'key' 业务数据几乎没有该字段 |
33
+ | ❌ `rowKey={(row) => row.id}` 函数形式 | ✅ **`rowKey='id'`** 只接受字符串字段名 |
34
+ | ❌ RangePicker 传普通数组 `[dayjs(), dayjs()]` | ✅ **`const val: RangeValue<Dayjs> = [...]`** 显式类型声明 |
35
+
36
+ ---
37
+
38
+ ## 完整代码(自包含,可直接复制)
39
+
40
+ ```tsx
41
+ import React, { FunctionComponent, useState, useMemo } from 'react';
42
+ import { Table, Button, Switch, PopConfirm, DatePicker } from '@para-ui/core';
43
+ import { Message } from '@para-ui/core/Message';
44
+ import type { HeadDataProps } from '@para-ui/core';
45
+ import type { OperateBtnListProps } from '@para-ui/core/OperateBtn';
46
+ import type { RangeValue } from '@para-ui/core';
47
+ import { Dayjs } from 'dayjs';
48
+
49
+ // 行数据类型(必须定义,用于 HeadDataProps<TaskRow> 泛型)
50
+ interface TaskRow {
51
+ id: string;
52
+ title: string;
53
+ assignee: string;
54
+ status: 'pending' | 'running' | 'done' | 'failed';
55
+ priority: 'low' | 'medium' | 'high';
56
+ disabled: boolean;
57
+ createdAt: string;
58
+ detail: string;
59
+ }
60
+
61
+ const TaskListPage: FunctionComponent = () => {
62
+ const [refresh, setRefresh] = useState<number>(0);
63
+ const refreshData = (): void => setRefresh(Math.random());
64
+
65
+ // Switch 行内切换的异步 loading map(key = 行 id)
66
+ const [switchLoadingMap, setSwitchLoadingMap] = useState<Record<string, boolean>>({});
67
+
68
+ // 多选 state
69
+ const [checkValue, setCheckValue] = useState<string[]>([]);
70
+
71
+ // 日期范围筛选(注意:RangeValue<Dayjs> 不能传普通 Dayjs[])
72
+ const [dateRange, setDateRange] = useState<RangeValue<Dayjs>>(null);
73
+
74
+ // 新建 Drawer
75
+ const [openForm, setOpenForm] = useState<boolean>(false);
76
+ const [editRow, setEditRow] = useState<TaskRow | undefined>();
77
+
78
+ // ---- Switch 行内切换(带 loading)----
79
+ const handleToggleDisabled = async (row: TaskRow): Promise<void> => {
80
+ setSwitchLoadingMap(prev => ({ ...prev, [row.id]: true }));
81
+ try {
82
+ await mockApi.updateStatus(row.id, !row.disabled);
83
+ Message.success(`已${row.disabled ? '启用' : '停用'} ${row.title}`);
84
+ refreshData();
85
+ } finally {
86
+ setSwitchLoadingMap(prev => ({ ...prev, [row.id]: false }));
87
+ }
88
+ };
89
+
90
+ // ---- 操作列定义 ----
91
+ const buildOperateBtnList = (row: TaskRow): OperateBtnListProps[] => [
92
+ {
93
+ key: 'edit',
94
+ label: '编辑',
95
+ onClick: () => { setEditRow(row); setOpenForm(true); }
96
+ },
97
+ {
98
+ key: 'delete',
99
+ label: '删除',
100
+ disabled: row.status === 'running',
101
+ toolTipTitle: row.status === 'running' ? '运行中不可删除' : undefined,
102
+ onClick: async () => {
103
+ await mockApi.deleteTask(row.id);
104
+ Message.success('已删除');
105
+ refreshData();
106
+ }
107
+ }
108
+ ];
109
+
110
+ // ---- 列定义(必须带泛型 HeadDataProps<TaskRow>,否则 render 中 row 是 unknown)----
111
+ const headData = useMemo<HeadDataProps<TaskRow>[]>(() => [
112
+ // sort: true 是布尔值,不是函数;字段名是 label/name/sort,不是 title/dataIndex/sorter
113
+ { name: 'title', label: '任务名称', sort: true, width: 200 },
114
+ { name: 'assignee', label: '负责人', width: 120 },
115
+ {
116
+ name: 'priority',
117
+ label: '优先级',
118
+ sort: true,
119
+ width: 100,
120
+ // render 第一参是整行数据(row),不是单元格值(与 antd 相反)
121
+ render: (row) => {
122
+ const map: Record<TaskRow['priority'], string> = {
123
+ low: '低', medium: '中', high: '高'
124
+ };
125
+ return map[row.priority];
126
+ }
127
+ },
128
+ {
129
+ name: 'status',
130
+ label: '状态',
131
+ width: 120,
132
+ render: (row) => {
133
+ const statusMap: Record<TaskRow['status'], string> = {
134
+ pending: '等待中', running: '运行中', done: '已完成', failed: '失败'
135
+ };
136
+ return statusMap[row.status];
137
+ }
138
+ },
139
+ {
140
+ name: 'disabled',
141
+ label: '启用',
142
+ width: 100,
143
+ render: (row) => (
144
+ // Switch loading 通过 loadingMap 控制,PopConfirm 包裹确认
145
+ <PopConfirm
146
+ title={row.disabled ? '确认启用此任务?' : '确认停用此任务?'}
147
+ onOk={() => handleToggleDisabled(row)}
148
+ >
149
+ <Switch
150
+ checked={!row.disabled}
151
+ loading={switchLoadingMap[row.id] ?? false}
152
+ />
153
+ </PopConfirm>
154
+ )
155
+ },
156
+ { name: 'createdAt', label: '创建时间', sort: true, width: 150 }
157
+ ], [switchLoadingMap]);
158
+
159
+ // ---- 批量操作 ----
160
+ const handleBatchStop = async (): Promise<void> => {
161
+ await mockApi.batchStop(checkValue);
162
+ Message.success(`已停用 ${checkValue.length} 个任务`);
163
+ setCheckValue([]);
164
+ refreshData();
165
+ };
166
+
167
+ return (
168
+ <div>
169
+ {/* 顶部筛选区 */}
170
+ <div style={{ marginBottom: 16, display: 'flex', gap: 8, alignItems: 'center' }}>
171
+ {/* RangePicker value 必须是 RangeValue<Dayjs>,不是普通 Dayjs[] */}
172
+ <DatePicker.RangePicker
173
+ value={dateRange}
174
+ onChange={(dates: RangeValue<Dayjs>) => setDateRange(dates)}
175
+ />
176
+ <Button onClick={() => { setDateRange(null); refreshData(); }}>
177
+ 重置
178
+ </Button>
179
+ <Button onClick={() => { setEditRow(undefined); setOpenForm(true); }}>
180
+ 新建任务
181
+ </Button>
182
+ {checkValue.length > 0 && (
183
+ <>
184
+ <span style={{ alignSelf: 'center' }}>已选 {checkValue.length} 项</span>
185
+ <PopConfirm title="确认批量停用?" onOk={handleBatchStop}>
186
+ <Button>批量停用</Button>
187
+ </PopConfirm>
188
+ </>
189
+ )}
190
+ </div>
191
+
192
+ {/* 表格本体 */}
193
+ {/* 关键:Table<TaskRow> 泛型 + rowKey='id'(字符串,不是函数)*/}
194
+ {/* pagination 只接受 boolean,不接受对象;分页配置用 paginationType */}
195
+ <Table<TaskRow>
196
+ rowKey="id"
197
+ data={mockData}
198
+ headData={headData}
199
+ refresh={refresh}
200
+ pagination={true}
201
+ paginationType="complex"
202
+ // 排序由 headData[n].sort: true 开启,Table 内部处理
203
+ // 操作列
204
+ operate={{
205
+ label: '操作',
206
+ width: 160,
207
+ operateBtnRender: (row: TaskRow) => ({
208
+ list: buildOperateBtnList(row),
209
+ showNum: 3
210
+ })
211
+ }}
212
+ // 多选;setCheck 签名 (keys: string[], data: T[]) => void
213
+ check={true}
214
+ setCheck={(keys: string[]) => setCheckValue(keys)}
215
+ // 行展开:expandable 是函数,返回展开内容
216
+ expandable={(row: TaskRow) => (
217
+ <div style={{ padding: '8px 16px', background: '#fafafa' }}>
218
+ <strong>详情:</strong>{row.detail}
219
+ </div>
220
+ )}
221
+ />
222
+
223
+ {/* 新建/编辑 Drawer 占位 */}
224
+ {openForm && (
225
+ <TaskFormDrawer
226
+ open={openForm}
227
+ rowData={editRow}
228
+ onFinish={(saved?: boolean) => {
229
+ setOpenForm(false);
230
+ setEditRow(undefined);
231
+ if (saved) refreshData();
232
+ }}
233
+ />
234
+ )}
235
+ </div>
236
+ );
237
+ };
238
+
239
+ export default TaskListPage;
240
+
241
+ // === 占位 Mock(实际项目来自业务 API)===
242
+ const mockData: TaskRow[] = [];
243
+ const mockApi = {
244
+ updateStatus: async (id: string, disabled: boolean): Promise<void> => { void id; void disabled; },
245
+ deleteTask: async (id: string): Promise<void> => { void id; },
246
+ batchStop: async (ids: string[]): Promise<void> => { void ids; }
247
+ };
248
+ const TaskFormDrawer: FunctionComponent<{
249
+ open: boolean; rowData?: TaskRow; onFinish: (saved?: boolean) => void
250
+ }> = () => null;
251
+ ```
252
+
253
+ ---
254
+
255
+ ## 5 个真实陷阱(来自 M2/M3 修复实证)
256
+
257
+ ### ❌ 陷阱 1:HeadDataProps 不带泛型 → render row 类型是 unknown(50% 对照实验失败的代表)
258
+
259
+ ```tsx
260
+ // 错(最高频陷阱,M2/M3 修复实证:50% Task 失败来自此处)
261
+ const headData: HeadDataProps[] = [
262
+ { name: 'status', label: '状态', render: (row) => row.status }
263
+ // ^^ TS: 类型"unknown"上不存在属性"status"
264
+ ];
265
+
266
+ // 对(方式 A:声明时带泛型)
267
+ const headData: HeadDataProps<TaskRow>[] = [
268
+ { name: 'status', label: '状态', render: (row) => row.status }
269
+ // ^^ row: TaskRow,有类型提示
270
+ ];
271
+
272
+ // 对(方式 B:Table 组件泛型传导)
273
+ <Table<TaskRow> headData={headData} ... />
274
+ // 让泛型从组件级传导到 headData 中的 render 函数
275
+ ```
276
+
277
+ ### ❌ 陷阱 2:headData 字段名用 antd 风格(title/sorter/dataIndex)
278
+
279
+ ```tsx
280
+ // 错(M2 ComboSelect 修复发现的高频错误,Table 同款)
281
+ const headData = [
282
+ { title: '任务名', dataIndex: 'title', sorter: true }
283
+ // title → 不认识,label 才是正确字段名
284
+ // dataIndex → 不认识,name 才是正确字段名
285
+ // sorter: true → sorter 不是 sort,且 sort 只接受 boolean
286
+ ];
287
+
288
+ // 对
289
+ const headData: HeadDataProps<TaskRow>[] = [
290
+ { label: '任务名', name: 'title', sort: true }
291
+ // ^^^^^ label ^^^^ name ^^^^ sort: boolean(不是函数)
292
+ ];
293
+ ```
294
+
295
+ ### ❌ 陷阱 3:render 第一参以为是单元格 value(与 antd 相反)
296
+
297
+ ```tsx
298
+ // 错(antd 习惯带来的认知偏差)
299
+ { name: 'priority', label: '优先级', render: (value) => {
300
+ // value 实际上是整行 TaskRow 对象,不是 row.priority 字符串
301
+ return <Tag>{value}</Tag>; // 渲染出 [object Object]
302
+ }}
303
+
304
+ // 对:第一参是 row,第二参是 index,第三参是 val(单元格值)
305
+ { name: 'priority', label: '优先级', render: (row) => {
306
+ return <Tag>{row.priority}</Tag>; // row.priority 是 'low' | 'medium' | 'high'
307
+ }}
308
+ // 如果确实需要单元格值:render: (row, index, val) => val
309
+ ```
310
+
311
+ ### ❌ 陷阱 4:RangePicker value 传普通数组导致 TS 类型错误
312
+
313
+ ```tsx
314
+ // 错(隐式类型推断为 Dayjs[],不匹配 RangeValue<Dayjs>)
315
+ const [dateRange, setDateRange] = useState([dayjs(), dayjs().add(7, 'day')]);
316
+ // ^ 推断为 Dayjs[],不是 RangeValue<Dayjs>
317
+
318
+ <DatePicker.RangePicker
319
+ value={dateRange} // TS: Type 'Dayjs[]' is not assignable to type 'RangeValue<Dayjs>'
320
+ onChange={(dates) => setDateRange(dates)}
321
+ />
322
+
323
+ // 对
324
+ import type { RangeValue } from '@para-ui/core';
325
+ const [dateRange, setDateRange] = useState<RangeValue<Dayjs>>(null);
326
+ // 显式泛型 ↑,初始值 null 是合法的 RangeValue<Dayjs>
327
+
328
+ <DatePicker.RangePicker
329
+ value={dateRange}
330
+ onChange={(dates: RangeValue<Dayjs>) => setDateRange(dates)}
331
+ />
332
+ ```
333
+
334
+ ### ❌ 陷阱 5:rowKey 传函数形式 + Switch loading 直接用 boolean state
335
+
336
+ ```tsx
337
+ // 错(rowKey 只接受字符串字段名)
338
+ <Table rowKey={(row) => row.id} ... />
339
+ // TS: Type '(row: any) => string' is not assignable to type 'string'
340
+
341
+ // 错(Switch loading 用单个 boolean state,多行并发切换会互相覆盖)
342
+ const [loading, setLoading] = useState(false);
343
+ // 点击 A 行时 B 行 Switch 也会进入 loading
344
+
345
+ // 对:rowKey 用字符串;loading 用 loadingMap
346
+ <Table rowKey="id" ... />
347
+ const [switchLoadingMap, setSwitchLoadingMap] = useState<Record<string, boolean>>({});
348
+ // 每行有独立 loading 状态,互不影响
349
+ <Switch loading={switchLoadingMap[row.id] ?? false} />
350
+ ```
351
+
352
+ ---
353
+
354
+ ## 真实参考
355
+
356
+ **Para 团队真实业务代码**:`console/src/package/Service/src/content.tsx`
357
+
358
+ | 关键模式 | 行号 |
359
+ |---------|------|
360
+ | `useAsync(updateDisabled, 'id')` + `updateDisabledLoadingMap[row.id]` 实现 Switch loadingMap | 66, 452 |
361
+ | `headData: HeadDataProps[]`(真实列定义,render row 第一参) | 249-481 |
362
+ | `PopConfirm` 包裹 Switch 实现确认切换 | 425-455 |
363
+ | `operate.operateBtnRender` + `showNum: 5` | 598-608 |
364
+ | `check={true}` + `setCheck={onChangeTableCheck}` | 609-612 |
365
+ | `refresh={refresh}` + `setRefresh(Math.random())` 驱动刷新 | 56, 77 |