@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,387 @@
1
+ # Workflow 7: Search + Filter + Table 三件套
2
+
3
+ > **覆盖 baseline 失败任务**:Task 2(Search 受控模式)/ 加强对比 Task 22/28/30 已通过的模式
4
+ > **集成 typescriptPitfalls**:Search 3 条(onChange 第一参 string / onKeydown 小写 / onClickBtn)+ SelectInput 联合泛型陷阱(M3 修复同款)+ DatePicker.RangePicker RangeValue 类型 + Select 多选 value 数组 + Table headData / render row / rowKey
5
+
6
+ ---
7
+
8
+ ## 何时使用
9
+
10
+ 列表页面需要组合多个过滤条件缩小结果集,然后展示到 Table:
11
+
12
+ ```
13
+ Search 关键字搜索 + Select/SelectInput 枚举过滤 + DatePicker.RangePicker 时间范围 → Table 联动展示
14
+ ```
15
+
16
+ **典型业务**:订单搜索 / 用户列表筛选 / 资产查询 / 任务记录过滤
17
+
18
+ **不要用此模板的场景**:
19
+ - 全局顶部搜索(跨模块跳转)→ 用独立的 GlobalSearch 组件
20
+ - 只有单个关键字搜索,无组合过滤 → 只用 Search + Table 即可
21
+ - 搜索条件极其复杂(≥10 个字段)→ 考虑拆成高级搜索面板 + 简单搜索默认视图
22
+
23
+ ---
24
+
25
+ ## 关键模式(与脑补的区别)
26
+
27
+ | 错误模式(AI 常犯) | 正确模式 |
28
+ |------------------|--------|
29
+ | ❌ `<Search onChange={(e) => setVal(e.target.value)} />` | ✅ **`onChange={(val) => setVal(val)}`**(第一参是 string 值,不是 event;与原生 input 不同) |
30
+ | ❌ `<Search onKeyDown={handleEnter} />` | ✅ **`onKeydown={handleEnter}`**(prop 名小写 d;onKeyDown 驼峰 D 不存在,静默无效) |
31
+ | ❌ `<SelectInput onChange={(val, _e) => setCategory(val)} />` 触发 TS7006 | ✅ **`onChange={(val: string \| undefined, _e: React.SyntheticEvent) => setCategory(val ?? '')}`**(联合泛型推断失败时 val 隐式 any,必须显式标注) |
32
+ | ❌ `<DatePicker.RangePicker value={[dayjs(), dayjs().add(7,'day')]} />` | ✅ **`const range: RangeValue<Dayjs> = [...]; <DatePicker.RangePicker value={range} />`**(必须显式标注 `RangeValue<Dayjs>`,普通数组推断为 `Dayjs[]` 不匹配) |
33
+ | ❌ `<Select multiple value={'active'} />` | ✅ **`<Select multiple value={['active']} />`**(多选 value 始终是数组) |
34
+ | ❌ `headData={[{ title: '名称', dataIndex: 'name' }]}` | ✅ **`headData={[{ label: '名称', name: 'name' }]}`**(Para UI 用 label/name,不是 antd 的 title/dataIndex) |
35
+ | ❌ `render={(value) => <Tag>{value}</Tag>}` | ✅ **`render={(row) => <Tag>{row.status}</Tag>}`**(第一参是整行 row,不是单元格值,与 antd 相反) |
36
+
37
+ ---
38
+
39
+ ## 完整代码(自包含,可直接复制)
40
+
41
+ ```tsx
42
+ import React, { FunctionComponent, useMemo, useState } from 'react';
43
+ import dayjs, { Dayjs } from 'dayjs';
44
+ import { Button, DatePicker, Search, Select, SelectInput, Table } from '@para-ui/core';
45
+ import { Message } from '@para-ui/core/Message';
46
+ import type { HeadDataProps, RangeValue } from '@para-ui/core';
47
+
48
+ // ---- 业务类型 ----
49
+ type OrderStatus = 'pending' | 'processing' | 'completed' | 'cancelled';
50
+
51
+ interface OrderRow {
52
+ id: string;
53
+ name: string;
54
+ category: string;
55
+ status: OrderStatus;
56
+ amount: number;
57
+ createdAt: string; // ISO 日期字符串
58
+ }
59
+
60
+ // ---- 过滤条件类型 ----
61
+ interface FilterState {
62
+ keyword: string;
63
+ category: string;
64
+ statusList: OrderStatus[];
65
+ dateRange: RangeValue<Dayjs>; // ⚠️ 必须用 RangeValue<Dayjs>,不能用 Dayjs[] 或 [Dayjs, Dayjs]
66
+ }
67
+
68
+ // ---- 模拟数据 ----
69
+ const mockOrders: OrderRow[] = [
70
+ { id: 'o1', name: '标准订单 A', category: 'standard', status: 'pending', amount: 100, createdAt: '2026-04-01' },
71
+ { id: 'o2', name: '加急订单 B', category: 'express', status: 'completed', amount: 250, createdAt: '2026-04-15' },
72
+ { id: 'o3', name: '标准订单 C', category: 'standard', status: 'processing', amount: 80, createdAt: '2026-05-01' },
73
+ { id: 'o4', name: '批量订单 D', category: 'bulk', status: 'cancelled', amount: 500, createdAt: '2026-05-10' },
74
+ ];
75
+
76
+ const statusMap: Record<OrderStatus, string> = {
77
+ pending: '待处理',
78
+ processing: '处理中',
79
+ completed: '已完成',
80
+ cancelled: '已取消',
81
+ };
82
+
83
+ // ---- 主组件 ----
84
+ const OrderListPage: FunctionComponent = () => {
85
+ // ---- 过滤状态 ----
86
+ const [filter, setFilter] = useState<FilterState>({
87
+ keyword: '',
88
+ category: '',
89
+ statusList: [],
90
+ dateRange: null, // RangeValue<Dayjs> 初始为 null
91
+ });
92
+
93
+ // ---- 关键字搜索(受控)----
94
+ // Search.onChange 第一参是 string 值,不是 event
95
+ const handleKeywordChange = (val: string): void => {
96
+ setFilter(prev => ({ ...prev, keyword: val }));
97
+ };
98
+
99
+ // 点击搜索按钮或回车时触发查询
100
+ const handleSearch = (val: string): void => {
101
+ setFilter(prev => ({ ...prev, keyword: val }));
102
+ Message.info(`搜索: ${val || '(全部)'}`, 1500);
103
+ };
104
+
105
+ // ---- SelectInput 分类过滤 ----
106
+ // M3 修复同款:联合泛型推断失败时 val 隐式 any,必须显式标注参数类型
107
+ const handleCategoryChange = (val: string | undefined, _e: React.SyntheticEvent): void => {
108
+ setFilter(prev => ({ ...prev, category: val ?? '' }));
109
+ };
110
+
111
+ // ---- Select 多选状态过滤 ----
112
+ // ⚠️ Select onChange 签名是 (val: T | T[] | undefined, e),多选时 val 是 T[]
113
+ // 直接传 (val: OrderStatus[]) 报类型错误——用 as 断言或在函数体内收窄
114
+ const handleStatusChange = (val: OrderStatus[] | OrderStatus | undefined, _e: React.SyntheticEvent): void => {
115
+ const list = Array.isArray(val) ? val : [];
116
+ setFilter(prev => ({ ...prev, statusList: list }));
117
+ };
118
+
119
+ // ---- DatePicker.RangePicker 时间范围 ----
120
+ // ⚠️ onChange 第一参类型是 RangeValue<Dayjs>(来自 rc-picker),不是 [Dayjs, Dayjs] | null
121
+ // RangeValue<Dayjs> = [EventValue<Dayjs>, EventValue<Dayjs>] | null
122
+ // EventValue<Dayjs> = Dayjs | null(rc-picker 定义)
123
+ const handleDateRangeChange = (
124
+ dates: RangeValue<Dayjs>,
125
+ _strs: [string, string]
126
+ ): void => {
127
+ setFilter(prev => ({ ...prev, dateRange: dates }));
128
+ };
129
+
130
+ // ---- 过滤逻辑(前端过滤,实际项目中通常是发 API 请求)----
131
+ const filteredData = useMemo<OrderRow[]>(() => {
132
+ return mockOrders.filter(order => {
133
+ if (filter.keyword && !order.name.includes(filter.keyword)) return false;
134
+ if (filter.category && order.category !== filter.category) return false;
135
+ if (filter.statusList.length > 0 && !filter.statusList.includes(order.status)) return false;
136
+ if (filter.dateRange) {
137
+ const [start, end] = filter.dateRange;
138
+ const created = dayjs(order.createdAt);
139
+ // ⚠️ RangeValue 子项可能是 string | Dayjs | null | undefined(NullableDateType)
140
+ // 用 dayjs.isDayjs 收窄类型再调用 Dayjs 方法
141
+ if (start && dayjs.isDayjs(start) && created.isBefore(start.startOf('day'))) return false;
142
+ if (end && dayjs.isDayjs(end) && created.isAfter(end.endOf('day'))) return false;
143
+ }
144
+ return true;
145
+ });
146
+ }, [filter]);
147
+
148
+ // ---- 重置所有过滤条件 ----
149
+ const handleReset = (): void => {
150
+ setFilter({ keyword: '', category: '', statusList: [], dateRange: null });
151
+ };
152
+
153
+ // ---- Table headData(Para UI 用 label/name,render 第一参是 row)----
154
+ const headData = useMemo<HeadDataProps<OrderRow>[]>(() => [
155
+ {
156
+ name: 'name',
157
+ label: '订单名称',
158
+ width: 160,
159
+ },
160
+ {
161
+ name: 'category',
162
+ label: '类别',
163
+ width: 100,
164
+ // render 第一参是整行 row(与 antd 相反,不是单元格 value)
165
+ render: (row) => ({ standard: '标准', express: '加急', bulk: '批量' }[row.category] ?? row.category),
166
+ },
167
+ {
168
+ name: 'status',
169
+ label: '状态',
170
+ width: 100,
171
+ render: (row) => statusMap[row.status],
172
+ },
173
+ {
174
+ name: 'amount',
175
+ label: '金额',
176
+ width: 100,
177
+ sort: true, // Para UI 用 sort: boolean,不是 antd 的 sorter 函数
178
+ },
179
+ {
180
+ name: 'createdAt',
181
+ label: '创建时间',
182
+ width: 120,
183
+ },
184
+ ], []);
185
+
186
+ return (
187
+ <div style={{ padding: 24 }}>
188
+ <h2>订单列表</h2>
189
+
190
+ {/* 过滤工具栏 */}
191
+ <div style={{ display: 'flex', flexWrap: 'wrap', gap: 12, marginBottom: 16, alignItems: 'center' }}>
192
+
193
+ {/* 关键字搜索:受控模式 */}
194
+ <Search
195
+ value={filter.keyword}
196
+ placeholder="搜索订单名称"
197
+ allowClear={true}
198
+ // ⚠️ onChange 第一参是 string 值,不是 event(与原生 input 不同)
199
+ onChange={handleKeywordChange}
200
+ // ⚠️ prop 名是 onKeydown(小写 d),不是 onKeyDown(大写 D)
201
+ onKeydown={(e) => { if (e.key === 'Enter') handleSearch(filter.keyword); }}
202
+ onClickBtn={handleSearch}
203
+ onClear={() => setFilter(prev => ({ ...prev, keyword: '' }))}
204
+ style={{ width: 200 }}
205
+ />
206
+
207
+ {/* SelectInput 分类过滤 */}
208
+ {/* ⚠️ M3 修复同款:onChange val 隐式 any,必须显式标注 (val: string | undefined, _e: React.SyntheticEvent) */}
209
+ <SelectInput
210
+ value={filter.category}
211
+ placeholder="全部类别"
212
+ list={[
213
+ { label: '标准', value: 'standard' },
214
+ { label: '加急', value: 'express' },
215
+ { label: '批量', value: 'bulk' },
216
+ ]}
217
+ onChange={handleCategoryChange}
218
+ style={{ width: 140 }}
219
+ />
220
+
221
+ {/* Select 多选状态过滤 */}
222
+ {/* ⚠️ multiple=true 时 value 是数组,onChange 签名是 (T | T[] | undefined, e) 联合 */}
223
+ <Select
224
+ multiple={true}
225
+ value={filter.statusList}
226
+ placeholder="全部状态"
227
+ list={[
228
+ { label: '待处理', value: 'pending' },
229
+ { label: '处理中', value: 'processing' },
230
+ { label: '已完成', value: 'completed' },
231
+ { label: '已取消', value: 'cancelled' },
232
+ ]}
233
+ onChange={handleStatusChange}
234
+ style={{ width: 160 }}
235
+ />
236
+
237
+ {/* DatePicker.RangePicker 时间范围 */}
238
+ {/* ⚠️ value 必须是 RangeValue<Dayjs>(不能是普通 Dayjs[]) */}
239
+ <DatePicker.RangePicker
240
+ value={filter.dateRange}
241
+ onChange={handleDateRangeChange}
242
+ placeholder={['开始日期', '结束日期']}
243
+ format="YYYY-MM-DD"
244
+ // disabledDate 参数是 Dayjs,不是 Date(无 .getTime())
245
+ disabledDate={(cur) => cur && cur.isAfter(dayjs().endOf('day'))}
246
+ />
247
+
248
+ <Button variant="outlined" onClick={handleReset}>重置</Button>
249
+ </div>
250
+
251
+ {/* 结果计数 */}
252
+ <div style={{ marginBottom: 8, color: '#666', fontSize: 13 }}>
253
+ 共 {filteredData.length} 条结果
254
+ </div>
255
+
256
+ {/* Table:Para UI 风格(headData / render row / rowKey string) */}
257
+ <Table<OrderRow>
258
+ rowKey="id" // ⚠️ 必须显式传 rowKey(默认 'key' 在业务数据中几乎不存在)
259
+ data={filteredData}
260
+ headData={headData} // ⚠️ Para UI 用 headData,不是 antd 的 columns
261
+ pagination={false}
262
+ autoSize={false}
263
+ />
264
+ </div>
265
+ );
266
+ };
267
+
268
+ export default OrderListPage;
269
+ ```
270
+
271
+ ---
272
+
273
+ ## 5 个真实陷阱(来自 M2/M3 修复实证)
274
+
275
+ ### ❌ 陷阱 1:Search onChange 当 event 处理(与原生 input 不同)
276
+
277
+ ```tsx
278
+ // 错(Task 2 失败根因)
279
+ <Search onChange={(e) => setKeyword(e.target.value)} />
280
+ // TS 报:string 上不存在属性 'target'
281
+ // Search.onChange 第一参是 string 值,不是 SyntheticEvent
282
+
283
+ // 对
284
+ <Search onChange={(val) => setKeyword(val)} />
285
+ // val: string,直接使用
286
+
287
+ // 陷阱变体:onKeyDown 大写 D 静默无效
288
+ <Search onKeyDown={handleEnter} /> // 不存在,静默忽略
289
+ <Search onKeydown={handleEnter} /> // ✅ prop 名小写 d(src/Search/index.tsx:36 实证)
290
+ ```
291
+
292
+ ### ❌ 陷阱 2:SelectInput onChange 参数隐式 any(M3 修复同款)
293
+
294
+ ```tsx
295
+ // 错(M3 修复发现:联合泛型 Single | Multiple 在泛型 T 未推断时 val 隐式 any)
296
+ <SelectInput onChange={(val, _e) => setCategory(val as string)} />
297
+ // TS7006: Parameter 'val' implicitly has an 'any' type
298
+
299
+ // 对:显式标注参数类型
300
+ // 单选模式:
301
+ <SelectInput onChange={(val: string | undefined, _e: React.SyntheticEvent) => setCategory(val ?? '')} />
302
+ // 多选模式:
303
+ <SelectInput onChange={(val: string[], _e: React.SyntheticEvent) => setValues(val ?? [])} />
304
+ ```
305
+
306
+ ### ❌ 陷阱 3:DatePicker.RangePicker value 用普通数组类型,onChange 签名写错
307
+
308
+ ```tsx
309
+ // 错 1:value 推断为 Dayjs[],不匹配 RangeValue<Dayjs>
310
+ const [range, setRange] = useState([dayjs(), dayjs().add(7, 'day')]);
311
+ <DatePicker.RangePicker value={range} />
312
+ // TS2322: 'Dayjs[]' is not assignable to type 'RangeValue<Dayjs>'
313
+
314
+ // 错 2:onChange 参数类型写成 [Dayjs, Dayjs] | null
315
+ // 实际签名来自 rc-picker:(values: RangeValue<DateType>, formatString: [string, string]) => void
316
+ onChange={(dates: [Dayjs, Dayjs] | null, strs) => setRange(dates)}
317
+ // TS2322: RangeValue<Dayjs> 不能赋给 [Dayjs, Dayjs] | null
318
+
319
+ // 错 3:直接对解构值调用 Dayjs 方法(类型是 NullableDateType = string|Dayjs|null|undefined)
320
+ const [start, end] = range;
321
+ if (start && created.isBefore(start.startOf('day'))) ...
322
+ // TS2339: Property 'startOf' does not exist on type 'string | Dayjs'
323
+
324
+ // 对:显式标注 RangeValue<Dayjs>,onChange 也用 RangeValue;解构值用 dayjs.isDayjs 收窄
325
+ import type { RangeValue } from '@para-ui/core';
326
+ const [range, setRange] = useState<RangeValue<Dayjs>>(null);
327
+ <DatePicker.RangePicker
328
+ value={range}
329
+ onChange={(dates: RangeValue<Dayjs>, _strs: [string, string]) => setRange(dates)}
330
+ />
331
+ // 解构后用 dayjs.isDayjs 收窄再调用方法
332
+ const [start, end] = range ?? [null, null];
333
+ if (start && dayjs.isDayjs(start) && created.isBefore(start.startOf('day'))) ...
334
+ ```
335
+
336
+ ### ❌ 陷阱 4:Select 多选 onChange 直接传窄类型函数
337
+
338
+ ```tsx
339
+ // 错(Select onChange 是联合重载 (T | T[] | undefined, e),传窄类型函数报类型不匹配)
340
+ const handleStatus = (val: OrderStatus[], _e: React.SyntheticEvent) => { ... };
341
+ <Select multiple onChange={handleStatus} />
342
+ // TS2322: (val: OrderStatus[], _e) 不能赋给 (val: OrderStatus | OrderStatus[] | undefined, e) => void
343
+
344
+ // 另一个常见错误:多选 value 传单值
345
+ <Select multiple value={'pending'} /> // multiple=true 时 value 应是数组
346
+
347
+ // 对:handler 参数用联合类型,函数体内用 Array.isArray 收窄
348
+ const handleStatus = (val: OrderStatus[] | OrderStatus | undefined, _e: React.SyntheticEvent) => {
349
+ const list = Array.isArray(val) ? val : [];
350
+ setStatusList(list);
351
+ };
352
+ <Select multiple value={statusList} onChange={handleStatus} />
353
+ ```
354
+
355
+ ### ❌ 陷阱 5:Table headData / render 用 antd 风格
356
+
357
+ ```tsx
358
+ // 错(Task 22/28/30 常见混淆:antd columns 风格移植到 Para UI)
359
+ <Table columns={[
360
+ { title: '状态', dataIndex: 'status', sorter: true,
361
+ render: (value) => <Tag>{value}</Tag> } // 第一参是 value(antd 惯例)
362
+ ]} />
363
+
364
+ // 对:Para UI 用 headData,render 第一参是整行 row
365
+ <Table<OrderRow>
366
+ rowKey="id" // 必须显式传,默认 'key' 几乎不存在
367
+ headData={[
368
+ { label: '状态', name: 'status', sort: true, // sort: boolean,不是 sorter 函数
369
+ render: (row) => statusMap[row.status] } // 第一参是 row(整行数据)
370
+ ]}
371
+ />
372
+ ```
373
+
374
+ ---
375
+
376
+ ## 真实参考
377
+
378
+ **Para 团队真实业务代码**(因路径隔离,以下是任务说明中的引用路径):
379
+
380
+ | 关键模式 | 所在文件 | 说明 |
381
+ |---------|---------|------|
382
+ | 搜索 + 过滤模式 | `console/src/package/Cluster/src/content.tsx` | Search + Select 联动 + Table |
383
+ | SelectInput onChange 显式类型 | `src/SelectInput/component.json` typescriptPitfalls[2] | M3 修复同款:val 隐式 any |
384
+ | RangeValue<Dayjs> 类型 | `src/DatePicker/component.json` typescriptPitfalls[2] | RangePicker value 必须用 RangeValue |
385
+ | Select 多选 value 数组 | `src/Select/component.json` typescriptPitfalls[3] | multiple=true 时 value 是 T[] |
386
+ | Table headData / render row | `src/Table/component.json` typescriptPitfalls[0-1] | label/name 字段;render 第一参是 row |
387
+ | Search onChange string 直接用 | `src/Search/component.json` typescriptPitfalls[0] | val: string,不是 event |