@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,290 @@
1
+ {
2
+ "name": "TextField",
3
+ "category": "Form",
4
+ "description": "用于文本输入的表单组件",
5
+ "semantic": {
6
+ "intent": [
7
+ "输入文本",
8
+ "搜索",
9
+ "密码输入",
10
+ "多行文本"
11
+ ],
12
+ "useCases": [
13
+ "表单填写",
14
+ "搜索栏",
15
+ "评论区",
16
+ "信息录入"
17
+ ],
18
+ "riskLevel": "normal"
19
+ },
20
+ "variants": {
21
+ "standard": {
22
+ "meaning": "标准输入框"
23
+ }
24
+ },
25
+ "states": [
26
+ "default",
27
+ "disabled",
28
+ "error",
29
+ "focus"
30
+ ],
31
+ "idealProps": {
32
+ "value": {
33
+ "type": "string | number",
34
+ "description": "受控模式:输入框的值。与 onChange 配合使用"
35
+ },
36
+ "defaultValue": {
37
+ "type": "string | number",
38
+ "description": "非受控模式:初始值(不传 value 时生效)"
39
+ },
40
+ "onChange": {
41
+ "type": "function",
42
+ "signature": "(event: React.ChangeEvent<HTMLInputElement>) => void",
43
+ "description": "值变化回调。从 event.target.value 取新值"
44
+ },
45
+ "label": {
46
+ "type": "ReactNode",
47
+ "description": "输入框标题"
48
+ },
49
+ "placeholder": {
50
+ "type": "string",
51
+ "description": "占位文本"
52
+ },
53
+ "disabled": {
54
+ "type": "boolean",
55
+ "default": false,
56
+ "description": "是否禁用"
57
+ },
58
+ "error": {
59
+ "type": "boolean",
60
+ "default": false,
61
+ "description": "是否显示错误状态"
62
+ },
63
+ "helperText": {
64
+ "type": "ReactNode",
65
+ "description": "辅助提示文本或错误信息(error=true 时显示红色)"
66
+ },
67
+ "type": {
68
+ "type": "enum",
69
+ "values": [
70
+ "text",
71
+ "password",
72
+ "number"
73
+ ],
74
+ "default": "text",
75
+ "description": "输入框类型。password 类型内置显示/隐藏切换图标"
76
+ },
77
+ "multiline": {
78
+ "type": "boolean",
79
+ "default": false,
80
+ "description": "是否为多行文本域(textarea)"
81
+ },
82
+ "rows": {
83
+ "type": "number",
84
+ "default": 4,
85
+ "description": "多行文本域的行数(multiline=true 时生效)"
86
+ },
87
+ "size": {
88
+ "type": "enum",
89
+ "values": [
90
+ "small",
91
+ "medium",
92
+ "large"
93
+ ],
94
+ "default": "large",
95
+ "description": "控件大小"
96
+ },
97
+ "allowClear": {
98
+ "type": "boolean",
99
+ "default": false,
100
+ "description": "是否显示清除按钮"
101
+ },
102
+ "limitLength": {
103
+ "type": "number",
104
+ "description": "最大字符长度限制(同步 api.ts 协议 A:**onBlur 失焦时**截断到 limitLength + 触发新 onChange,**输入阶段不阻断**;需实时阻断请用 onChange slice。同时在输入框右下渲染 current/limitLength 计数)"
105
+ },
106
+ "addonBefore": {
107
+ "type": "ReactNode",
108
+ "description": "前置内容(图标或文字)"
109
+ },
110
+ "addonAfter": {
111
+ "type": "ReactNode",
112
+ "description": "后置内容(图标或文字)"
113
+ },
114
+ "autoComplete": {
115
+ "type": "string",
116
+ "description": "浏览器自动填充控制。React 使用 camelCase 的 autoComplete(不是 autocomplete),对应 HTML autocomplete 属性。R5 §A1 升级:旧字段名 autocomplete 已废弃,必须使用 autoComplete。常用值:'off'=禁用自动填充;'on'=启用;'new-password'=禁用密码自动填充;'email'/'username' 等=按字段类型提示。❌ 错误:autocomplete='off'(旧写法,React 忽略);✅ 正确:autoComplete='off'"
117
+ },
118
+ "autoFocus": {
119
+ "type": "boolean",
120
+ "description": "自动获得焦点"
121
+ },
122
+ "name": {
123
+ "type": "string",
124
+ "description": "input name 属性,表单提交时使用"
125
+ },
126
+ "required": {
127
+ "type": "boolean",
128
+ "default": false,
129
+ "description": "是否必填(显示 * 标记)"
130
+ },
131
+ "labelMode": {
132
+ "type": "enum",
133
+ "values": ["outside", "inside"],
134
+ "default": "outside",
135
+ "description": "标题位置:outside(默认 · 标题在输入框上方)/ inside(标题作 floating label 嵌在输入框内,空态时与 placeholder 视觉位置重叠 · 聚焦或有值时上浮至框顶部 · 详见 api.ts 协议 H)"
136
+ },
137
+ "rightIcon": {
138
+ "type": "ReactNode",
139
+ "description": "输入框内部右侧图标。**与 onClickIcon 自动联动**(协议 F):点击此图标会触发 onClickIcon 回调,无需额外配置 showRightIcon=true"
140
+ },
141
+ "showRightIcon": {
142
+ "type": "boolean",
143
+ "default": true,
144
+ "description": "是否显示 rightIcon(默认 true · 仅在需要隐藏时传 false)"
145
+ },
146
+ "onClickIcon": {
147
+ "type": "function",
148
+ "signature": "(event: React.PointerEvent<HTMLSpanElement>) => void",
149
+ "description": "点击 rightIcon 区域回调。仅传 rightIcon 不传此 prop → 图标只装饰;两者配对使用语义清晰"
150
+ },
151
+ "onClear": {
152
+ "type": "function",
153
+ "signature": "() => void",
154
+ "description": "点击清空按钮回调(配合 allowClear=true 使用)。受控模式下 onClear 触发后**还会自动触发 onChange('')**;推荐 onClear 内显式 setKeyword('') 作为兜底"
155
+ },
156
+ "onEnter": {
157
+ "type": "function",
158
+ "signature": "(event: React.KeyboardEvent<HTMLInputElement>) => void",
159
+ "description": "按下回车键回调(独立于 onKeydown · 仅在 keyCode 13 时触发,便于实现回车搜索)"
160
+ },
161
+ "fetchSuggestions": {
162
+ "type": "function",
163
+ "signature": "(val: string, cb: (data: any[]) => void) => void",
164
+ "description": "返回输入建议的方法(异步搜索 / 联想)。在 cb 回调中传入数据数组;数据元素可为对象(配 showSelectName 指定回填字段)或单值"
165
+ },
166
+ "renderSelectItem": {
167
+ "type": "function",
168
+ "signature": "(item: any) => ReactNode",
169
+ "description": "自定义下拉列表每项的渲染(例如显示 name + 部门组合)。**与 showSelectName 互不影响** — 此 prop 控制下拉显示,showSelectName 独立控制回填字段"
170
+ },
171
+ "showSelectName": {
172
+ "type": "string",
173
+ "default": "value",
174
+ "description": "选中下拉项后回填到输入框的字段名(默认取 item.value;若数据结构是 {name, ...} 则传 'name')。与 renderSelectItem 协同时:下拉显示由 renderSelectItem 自定义,回填字段由 showSelectName 独立控制"
175
+ },
176
+ "onSelect": {
177
+ "type": "function",
178
+ "signature": "(item: any) => void",
179
+ "description": "选择下拉项回调。item 类型即为 fetchSuggestions cb 传入的数据元素(业务自定义,需 cast)"
180
+ },
181
+ "hideErrorDom": {
182
+ "type": "boolean | null",
183
+ "default": false,
184
+ "description": "true=非错误态不渲染 helperText 占位行(节省垂直空间);false=都渲染(默认 · 保持表单各行高度一致);null=完全不渲染该 dom 节点"
185
+ }
186
+ },
187
+ "protocolSummary": {
188
+ "A_limitLength": "字符计数 + onBlur 失焦截断(**非实时阻断**),实时阻断改用 onChange slice",
189
+ "B_allowClear_addonAfter": "可共存 — allowClear 在框内右侧,addonAfter 在框外独立后缀盒,不重叠",
190
+ "C_rightSlot_order": "渲染顺序 allowClear → limitMemo → rightIcon(框内),addonAfter 在框外",
191
+ "D_multiline_eventType": "multiline=true 时 event.target 实际是 HTMLTextAreaElement(api 表声明 InputElement 是简化),业务 cast 即可 — 对 onChange/onKeyUp/onKeydown/onFocus/onBlur 五个事件一致适用",
192
+ "E_onClear_controlled": "受控 onClear 触发后会自动触发 onChange(''),推荐父层兜底 setState('')",
193
+ "F_rightIcon_onClickIcon": "传入 rightIcon 后点击自动触发 onClickIcon(无需 showRightIcon=true)",
194
+ "G_no_inputProps_passthrough": "**TextField 不支持 inputProps 透传** — 原生 HTML 属性(如 maxLength)需用组件显式 prop 或 onChange 控制",
195
+ "H_labelMode_inside": "inside 模式 = floating label:空态 label 在框中央 · 聚焦/有值时上浮至框顶 · 与 placeholder 空态视觉重叠"
196
+ },
197
+ "crossPropInteractions": [
198
+ "rightIcon + onClickIcon = 配对使用(自动联动)",
199
+ "allowClear + addonAfter = 完全可共存(框内 + 框外)",
200
+ "fetchSuggestions + renderSelectItem + showSelectName = 三件套协同(取数 + 自定义渲染 + 回填字段)",
201
+ "limitLength = 失焦截断 + 计数显示(实时阻断请用 onChange slice)",
202
+ "multiline=true + 所有 event = event.target 实际是 HTMLTextAreaElement(api 简化为 InputElement,需 cast 才能用 textarea 特性)"
203
+ ],
204
+ "commonMisconceptions": [
205
+ "❌ inputProps={{ maxLength: N }} 透传 — 不支持,改用 onChange slice",
206
+ "❌ limitLength 会实时阻断键入 — 实际是 onBlur 截断",
207
+ "❌ allowClear 与 addonAfter 不能共存 — 完全可以共存",
208
+ "❌ rightIcon 需要 showRightIcon=true 才显示 — 默认即 true",
209
+ "❌ labelMode='inside' 时同时传 label 和 placeholder — 空态视觉重叠,推荐二选一"
210
+ ],
211
+ "do": [
212
+ "使用 label 清晰描述输入内容",
213
+ "输入错误时提供 clear 的 helperText 提示",
214
+ "密码输入框应使用 type='password'",
215
+ "multiline=true 时 event.target 实际是 HTMLTextAreaElement,需要 cast:`(e.target as HTMLTextAreaElement).value`",
216
+ "受控模式下 onClear 触发后还会自动触发 onChange(''),推荐在 onClear 中显式 setState('') 兜底"
217
+ ],
218
+ "dont": [
219
+ "在没有 label 的情况下仅依赖 placeholder",
220
+ "在单行输入框中输入过长内容(应切换 multiline)",
221
+ "不要用 inputProps={{ maxLength: N }} 透传 HTML 属性——TextField 不支持 inputProps 透传,实时字数限制用 onChange slice",
222
+ "不要期望 limitLength 实时阻断键入——limitLength 是 onBlur 失焦后截断,输入阶段不拦截"
223
+ ],
224
+ "events": {
225
+ "onChange": {
226
+ "signature": "(event: React.ChangeEvent<HTMLInputElement>) => void",
227
+ "asyncSupported": false,
228
+ "examples": [
229
+ "受控模式:onChange={(e) => setValue(e.target.value)}——从 event.target.value 取新值",
230
+ "multiline=true 时 event.target 实际是 HTMLTextAreaElement,需 cast:`(e.target as HTMLTextAreaElement).value`",
231
+ "与 limitLength 配合实时截断:onChange={(e) => setValue(e.target.value.slice(0, MAX_LEN))}"
232
+ ],
233
+ "commonMistakes": [
234
+ "假设 onChange 接收 value 字符串而非 React.ChangeEvent——与 antd Input 不同,这里签名是 event 对象,需 e.target.value 取值",
235
+ "multiline=true 时对 event.target 用 HTMLInputElement 方法(如 .selectionStart)——此时 event.target 是 HTMLTextAreaElement(src 实证:onChange 内部 cast 为 React.FocusEvent<HTMLInputElement>,但实际 target 是 textarea)",
236
+ "在 limitLength 场景只监听 onChange 而不处理 onBlur——limitLength 截断发生在 onBlur,onChange 阶段不截断",
237
+ "假设 onClear 点击后不触发 onChange——受控模式下点清空会先触发 onClear 再触发 onChange('')(src/TextField/index.tsx clickClean 函数实证)"
238
+ ]
239
+ },
240
+ "onEnter": {
241
+ "signature": "(event: React.KeyboardEvent<HTMLInputElement>) => void",
242
+ "asyncSupported": false,
243
+ "examples": [
244
+ "按 Enter 键触发搜索:onEnter={(e) => handleSearch(e.currentTarget.value)}",
245
+ "回车提交表单:onEnter={() => formRef.current.check?.()}"
246
+ ],
247
+ "commonMistakes": [
248
+ "与 onKeydown 混淆——onEnter 只在 keyCode===13 时触发,相当于 onKeydown 的 Enter 子集;如需监听所有键,用 onKeydown",
249
+ "multiline=true 时期望 onEnter 换行——onEnter 总是触发,需业务侧自行判断是否阻止换行(e.preventDefault())"
250
+ ]
251
+ },
252
+ "onBlur": {
253
+ "signature": "(event: React.FocusEvent<HTMLInputElement>) => void",
254
+ "asyncSupported": false,
255
+ "examples": [
256
+ "失焦校验:onBlur={() => validate(value)}",
257
+ "limitLength 截断时机:onBlur 后组件自动截断并触发 onChange(src 实证 handValueLimit)"
258
+ ],
259
+ "commonMistakes": [
260
+ "在 onBlur 里读 e.target.value 期望得到截断后的值——onBlur 触发时截断还没完成,截断结果通过后续 onChange 回来"
261
+ ]
262
+ }
263
+ },
264
+ "typescriptPitfalls": [
265
+ {
266
+ "issue": "onChange 签名是 React.ChangeEvent<HTMLInputElement> 而非 (value: string),直接传 setter 会报类型错误",
267
+ "wrong": "onChange={setValue} // setValue: (v: string) => void,签名不匹配",
268
+ "right": "onChange={(e) => setValue(e.target.value)}"
269
+ },
270
+ {
271
+ "issue": "multiline=true 时 event.target 实际是 HTMLTextAreaElement,但 Props 声明为 HTMLInputElement",
272
+ "wrong": "onChange={(e) => { const len = e.target.selectionStart; }} // selectionStart 在 multiline 时类型检查通过,但 cast 可能出错",
273
+ "right": "onChange={(e) => { if (multiline) { const ta = e.target as unknown as HTMLTextAreaElement; } else { const inp = e.target as HTMLInputElement; } }}"
274
+ },
275
+ {
276
+ "issue": "onKeydown(小写 d)不是 onKeyDown(驼峰 D),React 标准事件名不同",
277
+ "wrong": "onKeyDown={handleKey} // React 标准 prop,TextField 不接受——组件封装的 prop 是 onKeydown",
278
+ "right": "onKeydown={handleKey} // src/TextField/index.tsx TextFieldProps 接口定义的 prop 名是 onKeydown(小写 d)"
279
+ },
280
+ {
281
+ "issue": "autoComplete 必须驼峰(不是 autocomplete),否则 React 忽略",
282
+ "wrong": "autocomplete='off' // HTML 属性小写写法,React 会警告并忽略",
283
+ "right": "autoComplete='off' // src/TextField/index.tsx 实证:prop 名为 autoComplete(驼峰)"
284
+ }
285
+ ],
286
+ "mapping": {
287
+ "realComponent": "TextField",
288
+ "adapter": null
289
+ }
290
+ }
@@ -91,8 +91,8 @@ export interface TextFieldProps extends HelperTextDetailProps {
91
91
  onSelect?: (item: Record<string, unknown>) => void;
92
92
  /** name */
93
93
  name?: string;
94
- /** autocomplete */
95
- autocomplete?: string;
94
+ /** 浏览器自动填充控制;React 要求 camelCase,对应 HTML autocomplete 属性 */
95
+ autoComplete?: string;
96
96
  }
97
97
  export declare const TextField: FunctionComponent<TextFieldProps>;
98
98
  export default TextField;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const n=require("../_virtual/jsx-runtime.js"),o=require("react"),ze=require("../Label/index.js"),Je=require("@paraview/lib"),Ge=require("../node_modules/@para-ui/icons/PreviewClose/index.js"),We=require("../node_modules/@para-ui/icons/PreviewOpen/index.js"),Qe=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),Xe=require("../AutoTips/index.js"),Ye=require("../Loading/index.js"),Ze=require("../Tooltip/index.js"),et=require("../HelperText/index.js"),tt=require("../Hooks/useGlobalProps.js"),nt=require("../Dropdown/index.js"),l=require("../GlobalContext/constant.js");;/* empty css */const P=i=>typeof i=="number"&&!isNaN(i),we=i=>{const{className:X,style:ye,size:v="large",labelMode:$="outside",placeholder:q="",label:p="",labelTooltip:E,disabled:x=!1,disabledTooltip:Y,multiline:R=!1,required:T=!1,labelSign:w,rows:B=4,error:Z=!1,hideErrorDom:Se,helperText:ke="",addonBefore:ee="",addonAfter:te="",defaultValue:st,value:y,type:f="text",onClickIcon:S,rightIcon:_,showRightIcon:ne=!0,allowClear:L=!1,limitLength:U,fetchSuggestions:m,selectPopoverClass:V,renderSelectItem:A,showSelectName:se="value",resize:be=!0,searchEmpty:oe,onBlur:ie,onFocus:le,onChange:C,onKeydown:re,onKeyUp:ce,onEnter:ae,onClickAddonBefore:ue,onClickAddonAfter:de,onSelect:D,onClear:F,...M}=tt.default(i,"TextField"),[I]=o.useState(`text-field-select-content-${Je.UUID()}`),[xe,K]=o.useState(!0),[r,k]=o.useState(""),[h,fe]=o.useState(!1),[u,O]=o.useState("text"),[b,Ne]=o.useState(!1),[H,me]=o.useState(!1),[d,qe]=o.useState([]),g=o.useRef(null),j=o.useRef(null);o.useEffect(()=>{i.defaultValue!==void 0&&k(i.defaultValue===null?"":i.defaultValue)},[]),o.useEffect(()=>{f!==u&&O(f)},[f]),o.useEffect(()=>{y!==void 0&&k(y===null?"":y)},[y]),o.useEffect(()=>{K(!(r!==""&&r!==void 0))},[r]),o.useEffect(()=>{m&&Ne(h)},[h,m]),o.useEffect(()=>(b?window.addEventListener("keydown",z):window.removeEventListener("keydown",z),()=>{window.removeEventListener("keydown",z)}),[b]),o.useEffect(()=>{if(!h&&r){const e=Te(r);if(e!==r){const t=g.current;t.value=e;const s={target:t};i.value===void 0&&k(e),i.onChange&&i.onChange(s)}}},[r,h]);const Te=e=>{let t=e;return P(i.limitLength)&&e.toString().length>Number(i.limitLength)&&(t=t.toString().substr(0,i.limitLength)),t},he=e=>{const{selectDom:t,keyCode:s,currentDom:a}=e;let c=a;const Q=s===38,He=Q?".text-field-select-content-item:last-child":".text-field-select-content-item";c?(c=Q?c.previousSibling:c.nextSibling,c||(c=t.querySelector(He))):c=t.querySelector(".text-field-select-content-item"),c&&(c.classList.add("text-field-select-content-item-keydown"),Le(c,t))},Le=(e,t)=>{const s=t.clientHeight,c=e.offsetTop+e.clientHeight-s;c>0?t.scrollTop=c:t.scrollTop=0},z=e=>{const t=document.querySelector(`.${I}`);let s=null;const a=t?.querySelector(".text-field-select-content-item-keydown");if(e.keyCode===13&&a){const c=a.dataset.val;$e(JSON.parse(c))(e),(g&&g.current)?.blur()}a&&(s=a,a.classList.remove("text-field-select-content-item-keydown")),e.keyCode===40&&t&&he({selectDom:t,keyCode:e.keyCode,currentDom:s}),e.keyCode===38&&t&&he({selectDom:t,keyCode:e.keyCode,currentDom:s})},pe=e=>{fe(!1),e.target.value===""&&K(!0),ie&&ie(e)},J=e=>{m&&(me(!0),m(e,t=>{qe(t||[]),me(!1)}))},Ce=e=>{fe(!0),le&&le(e),J(e.target.value)},ge=e=>{const t=e.target.value;t&&K(!1),i.value===void 0&&k(t),C&&C(e),J(e.target.value)},je=e=>{e.keyCode===13&&ae&&ae(e),re&&re(e)},ve=e=>{ce&&ce(e)},De=e=>{f==="password"&&(u==="text"&&O("password"),u==="password"&&O("text")),S&&S(e)},N=()=>i.value===void 0?r:y,Fe=()=>{let e=`${l.$prefixCls}-text-field-select ${l.$prefixCls}-scrollbar-small`;return v&&(e+=` ${l.$prefixCls}-text-field-select-${v}`),V&&(e+=` ${V}`),d.length>0&&(e+=` ${l.$prefixCls}-text-field-select-data`),(!d||d.length===0)&&(e+=` ${l.$prefixCls}-text-field-no-select-data`),e},$e=e=>t=>{D&&D(e)},G=o.useMemo(()=>n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:P(U)&&n.jsxRuntimeExports.jsx("span",{className:"length-limit",children:`${r?r.toString().length:0}/${U}`})}),[U,r]),W=o.useMemo(()=>{const t=_||(f==="password"?u==="password"?n.jsxRuntimeExports.jsx(Ge.PreviewClose,{}):n.jsxRuntimeExports.jsx(We.PreviewOpen,{}):null);return n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:ne&&t&&n.jsxRuntimeExports.jsx("span",{className:f==="password"?"right-icon right-icon-password":"right-icon",onClick:De,children:t})})},[ne,_,f,u,S]),Me=()=>R?n.jsxRuntimeExports.jsx("textarea",{ref:g,rows:B,value:N(),onBlur:pe,onFocus:Ce,onChange:ge,onKeyDown:je,onKeyUp:ve,disabled:x,...M}):n.jsxRuntimeExports.jsx("input",{ref:g,type:u,value:N(),onBlur:pe,onFocus:Ce,onChange:ge,onKeyDown:je,onKeyUp:ve,disabled:x,...M}),Ie=()=>{const e=g.current;e.value="",i.value===void 0&&k(""),C&&C({target:e}),J(""),F&&F()},Ke=()=>{const e=N();if((e||e===0)&&!x&&L)return n.jsxRuntimeExports.jsx("span",{className:"clean-up-icon",onClick:Ie,children:n.jsxRuntimeExports.jsx(Qe.CloseCircleF,{})})},Ee=o.useMemo(()=>{const e=()=>$==="outside"?q:n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[p||q,T&&n.jsxRuntimeExports.jsx("span",{className:"text-field-required",children:"*"}),w&&n.jsxRuntimeExports.jsx("span",{children:w})]}),t=N();return n.jsxRuntimeExports.jsxs("div",{className:"text-field-content-within",ref:j,children:[n.jsxRuntimeExports.jsxs("div",{className:"text-field-content-within-input",children:[Me(),!t&&t!==0&&n.jsxRuntimeExports.jsx("span",{className:"text-field-label-placeholder",children:e()})]}),Ke(),G,W]})},[xe,h,u,r,G,W,$,q,p,x,R,B,M,C,m,S,L,F]),Pe=o.useMemo(()=>{const e=()=>{let s="text-field-select-content";return H&&(s+=" text-field-select-content-loading"),I&&(s+=` ${I}`),s},t=s=>typeof s=="object"&&s!==null?s[se]:s;return n.jsxRuntimeExports.jsxs("div",{className:e(),style:{width:`${j&&j.current?j.current.offsetWidth:0}px`},children:[d&&d.map((s,a)=>n.jsxRuntimeExports.jsx("div",{className:"text-field-select-content-item",onMouseDown:$e(s),"data-val":JSON.stringify(s),children:A?A(s):n.jsxRuntimeExports.jsx(Xe.default,{children:t(s)})},a)),d.length===0&&oe,H&&n.jsxRuntimeExports.jsx(Ye.Loading,{})]})},[j,b,d,A,se,D,H,I,oe]),Be=o.useMemo(()=>n.jsxRuntimeExports.jsx(nt.Dropdown,{visible:b,placement:"bottomLeft",trigger:["click"],overlay:n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:Pe}),overlayClassName:Fe(),children:Ee}),[xe,h,u,r,G,W,$,q,p,x,R,B,M,C,m,D,j,b,V,v,S,d,L,F]),_e=o.useMemo(()=>{if($==="outside"&&!!(T||w||p)){const t=()=>{let s="text-field-label";return E&&E.className&&(s+=` ${E.className}`),s};return n.jsxRuntimeExports.jsx(ze.default,{label:p,required:T,labelSign:w,...E,className:t()})}return null},[$,p,w,T,E]),Ue=()=>{let e=`${l.$prefixCls}-text-field`;X&&(e+=` ${X}`),v&&!R&&(e+=` ${l.$prefixCls}-text-field-${v}`),Z&&(e+=` ${l.$prefixCls}-text-field-error`),h&&(e+=` ${l.$prefixCls}-text-field-focus`),x&&(e+=` ${l.$prefixCls}-text-field-disabled`),R&&(e+=` ${l.$prefixCls}-text-field-multiline`),P(i.limitLength)&&(e+=` ${l.$prefixCls}-text-field-limit-length`),P(i.limitLength)&&r&&r.toString().length>Number(i.limitLength)&&(e+=` ${l.$prefixCls}-text-field-limit`),be&&(e+=` ${l.$prefixCls}-text-field-resize`);const t=N();return(t||t===0)&&(e+=` ${l.$prefixCls}-text-field-value`),L&&(e+=` ${l.$prefixCls}-text-field-allow-clear`),e},Ve=e=>{ue&&ue(e)},Ae=e=>{de&&de(e)},Re=()=>n.jsxRuntimeExports.jsxs("div",{className:"text-field-content",children:[ee&&n.jsxRuntimeExports.jsx("div",{className:"text-field-content-before",onClick:Ve,children:ee}),m&&!x?Be:Ee,te&&n.jsxRuntimeExports.jsx("div",{className:"text-field-content-after",onClick:Ae,children:te})]}),Oe=()=>Y?n.jsxRuntimeExports.jsx(Ze.Tooltip,{disabled:!0,...Y,children:Re()}):Re();return n.jsxRuntimeExports.jsxs("div",{className:Ue(),style:ye,children:[_e,Oe(),n.jsxRuntimeExports.jsx(et.default,{className:"text-field-error-text",error:Z,helperText:ke,hideErrorDom:Se})]})};exports.TextField=we;exports.default=we;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const n=require("../_virtual/jsx-runtime.js"),o=require("react"),ze=require("../Label/index.js"),Je=require("@snack-kit/lib"),Ge=require("../node_modules/@para-ui/icons/PreviewClose/index.js"),We=require("../node_modules/@para-ui/icons/PreviewOpen/index.js"),Qe=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),Xe=require("../AutoTips/index.js"),Ye=require("../Loading/index.js"),Ze=require("../Tooltip/index.js"),et=require("../HelperText/index.js"),tt=require("../Hooks/useGlobalProps.js"),nt=require("../Dropdown/index.js"),l=require("../GlobalContext/constant.js");;/* empty css */const P=i=>typeof i=="number"&&!isNaN(i),we=i=>{const{className:X,style:ye,size:v="large",labelMode:E="outside",placeholder:q="",label:p="",labelTooltip:$,disabled:x=!1,disabledTooltip:Y,multiline:R=!1,required:T=!1,labelSign:w,rows:B=4,error:Z=!1,hideErrorDom:Se,helperText:ke="",addonBefore:ee="",addonAfter:te="",defaultValue:st,value:y,type:f="text",onClickIcon:S,rightIcon:_,showRightIcon:ne=!0,allowClear:L=!1,limitLength:U,fetchSuggestions:m,selectPopoverClass:V,renderSelectItem:A,showSelectName:se="value",resize:be=!0,searchEmpty:oe,onBlur:ie,onFocus:le,onChange:C,onKeydown:re,onKeyUp:ce,onEnter:ae,onClickAddonBefore:ue,onClickAddonAfter:de,onSelect:D,onClear:F,...M}=tt.default(i,"TextField"),[I]=o.useState(`text-field-select-content-${Je.UUID()}`),[xe,K]=o.useState(!0),[r,k]=o.useState(""),[h,fe]=o.useState(!1),[u,O]=o.useState("text"),[b,Ne]=o.useState(!1),[H,me]=o.useState(!1),[d,qe]=o.useState([]),g=o.useRef(null),j=o.useRef(null);o.useEffect(()=>{i.defaultValue!==void 0&&k(i.defaultValue===null?"":i.defaultValue)},[]),o.useEffect(()=>{f!==u&&O(f)},[f]),o.useEffect(()=>{y!==void 0&&k(y===null?"":y)},[y]),o.useEffect(()=>{K(!(r!==""&&r!==void 0))},[r]),o.useEffect(()=>{m&&Ne(h)},[h,m]),o.useEffect(()=>(b?window.addEventListener("keydown",z):window.removeEventListener("keydown",z),()=>{window.removeEventListener("keydown",z)}),[b]),o.useEffect(()=>{if(!h&&r){const e=Te(r);if(e!==r){const t=g.current;t.value=e;const s={target:t};i.value===void 0&&k(e),i.onChange&&i.onChange(s)}}},[r,h]);const Te=e=>{let t=e;return P(i.limitLength)&&e.toString().length>Number(i.limitLength)&&(t=t.toString().substr(0,i.limitLength)),t},he=e=>{const{selectDom:t,keyCode:s,currentDom:a}=e;let c=a;const Q=s===38,He=Q?".text-field-select-content-item:last-child":".text-field-select-content-item";c?(c=Q?c.previousSibling:c.nextSibling,c||(c=t.querySelector(He))):c=t.querySelector(".text-field-select-content-item"),c&&(c.classList.add("text-field-select-content-item-keydown"),Le(c,t))},Le=(e,t)=>{const s=t.clientHeight,c=e.offsetTop+e.clientHeight-s;c>0?t.scrollTop=c:t.scrollTop=0},z=e=>{const t=document.querySelector(`.${I}`);let s=null;const a=t?.querySelector(".text-field-select-content-item-keydown");if(e.keyCode===13&&a){const c=a.dataset.val;Ee(JSON.parse(c))(e),(g&&g.current)?.blur()}a&&(s=a,a.classList.remove("text-field-select-content-item-keydown")),e.keyCode===40&&t&&he({selectDom:t,keyCode:e.keyCode,currentDom:s}),e.keyCode===38&&t&&he({selectDom:t,keyCode:e.keyCode,currentDom:s})},pe=e=>{fe(!1),e.target.value===""&&K(!0),ie&&ie(e)},J=e=>{m&&(me(!0),m(e,t=>{qe(t||[]),me(!1)}))},Ce=e=>{fe(!0),le&&le(e),J(e.target.value)},ge=e=>{const t=e.target.value;t&&K(!1),i.value===void 0&&k(t),C&&C(e),J(e.target.value)},je=e=>{e.keyCode===13&&ae&&ae(e),re&&re(e)},ve=e=>{ce&&ce(e)},De=e=>{f==="password"&&(u==="text"&&O("password"),u==="password"&&O("text")),S&&S(e)},N=()=>i.value===void 0?r:y,Fe=()=>{let e=`${l.$prefixCls}-text-field-select ${l.$prefixCls}-scrollbar-small`;return v&&(e+=` ${l.$prefixCls}-text-field-select-${v}`),V&&(e+=` ${V}`),d.length>0&&(e+=` ${l.$prefixCls}-text-field-select-data`),(!d||d.length===0)&&(e+=` ${l.$prefixCls}-text-field-no-select-data`),e},Ee=e=>t=>{D&&D(e)},G=o.useMemo(()=>n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:P(U)&&n.jsxRuntimeExports.jsx("span",{className:"length-limit",children:`${r?r.toString().length:0}/${U}`})}),[U,r]),W=o.useMemo(()=>{const t=_||(f==="password"?u==="password"?n.jsxRuntimeExports.jsx(Ge.PreviewClose,{}):n.jsxRuntimeExports.jsx(We.PreviewOpen,{}):null);return n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:ne&&t&&n.jsxRuntimeExports.jsx("span",{className:f==="password"?"right-icon right-icon-password":"right-icon",onClick:De,children:t})})},[ne,_,f,u,S]),Me=()=>R?n.jsxRuntimeExports.jsx("textarea",{ref:g,rows:B,value:N(),onBlur:pe,onFocus:Ce,onChange:ge,onKeyDown:je,onKeyUp:ve,disabled:x,...M}):n.jsxRuntimeExports.jsx("input",{ref:g,type:u,value:N(),onBlur:pe,onFocus:Ce,onChange:ge,onKeyDown:je,onKeyUp:ve,disabled:x,...M}),Ie=()=>{const e=g.current;e.value="",i.value===void 0&&k(""),C&&C({target:e}),J(""),F&&F()},Ke=()=>{const e=N();if((e||e===0)&&!x&&L)return n.jsxRuntimeExports.jsx("span",{className:"clean-up-icon",onClick:Ie,children:n.jsxRuntimeExports.jsx(Qe.CloseCircleF,{})})},$e=o.useMemo(()=>{const e=()=>E==="outside"?q:n.jsxRuntimeExports.jsxs(n.jsxRuntimeExports.Fragment,{children:[p||q,T&&n.jsxRuntimeExports.jsx("span",{className:"text-field-required",children:"*"}),w&&n.jsxRuntimeExports.jsx("span",{children:w})]}),t=N();return n.jsxRuntimeExports.jsxs("div",{className:"text-field-content-within",ref:j,children:[n.jsxRuntimeExports.jsxs("div",{className:"text-field-content-within-input",children:[Me(),!t&&t!==0&&n.jsxRuntimeExports.jsx("span",{className:"text-field-label-placeholder",children:e()})]}),Ke(),G,W]})},[xe,h,u,r,G,W,E,q,p,x,R,B,M,C,m,S,L,F]),Pe=o.useMemo(()=>{const e=()=>{let s="text-field-select-content";return H&&(s+=" text-field-select-content-loading"),I&&(s+=` ${I}`),s},t=s=>typeof s=="object"&&s!==null?s[se]:s;return n.jsxRuntimeExports.jsxs("div",{className:e(),style:{width:`${j&&j.current?j.current.offsetWidth:0}px`},children:[d&&d.map((s,a)=>n.jsxRuntimeExports.jsx("div",{className:"text-field-select-content-item",onMouseDown:Ee(s),"data-val":JSON.stringify(s),children:A?A(s):n.jsxRuntimeExports.jsx(Xe.default,{children:t(s)})},a)),d.length===0&&oe,H&&n.jsxRuntimeExports.jsx(Ye.Loading,{})]})},[j,b,d,A,se,D,H,I,oe]),Be=o.useMemo(()=>n.jsxRuntimeExports.jsx(nt.Dropdown,{visible:b,placement:"bottomLeft",trigger:["click"],overlay:n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:Pe}),overlayClassName:Fe(),children:$e}),[xe,h,u,r,G,W,E,q,p,x,R,B,M,C,m,D,j,b,V,v,S,d,L,F]),_e=o.useMemo(()=>{if(E==="outside"&&!!(T||w||p)){const t=()=>{let s="text-field-label";return $&&$.className&&(s+=` ${$.className}`),s};return n.jsxRuntimeExports.jsx(ze.default,{label:p,required:T,labelSign:w,...$,className:t()})}return null},[E,p,w,T,$]),Ue=()=>{let e=`${l.$prefixCls}-text-field`;X&&(e+=` ${X}`),v&&!R&&(e+=` ${l.$prefixCls}-text-field-${v}`),Z&&(e+=` ${l.$prefixCls}-text-field-error`),h&&(e+=` ${l.$prefixCls}-text-field-focus`),x&&(e+=` ${l.$prefixCls}-text-field-disabled`),R&&(e+=` ${l.$prefixCls}-text-field-multiline`),P(i.limitLength)&&(e+=` ${l.$prefixCls}-text-field-limit-length`),P(i.limitLength)&&r&&r.toString().length>Number(i.limitLength)&&(e+=` ${l.$prefixCls}-text-field-limit`),be&&(e+=` ${l.$prefixCls}-text-field-resize`);const t=N();return(t||t===0)&&(e+=` ${l.$prefixCls}-text-field-value`),L&&(e+=` ${l.$prefixCls}-text-field-allow-clear`),e},Ve=e=>{ue&&ue(e)},Ae=e=>{de&&de(e)},Re=()=>n.jsxRuntimeExports.jsxs("div",{className:"text-field-content",children:[ee&&n.jsxRuntimeExports.jsx("div",{className:"text-field-content-before",onClick:Ve,children:ee}),m&&!x?Be:$e,te&&n.jsxRuntimeExports.jsx("div",{className:"text-field-content-after",onClick:Ae,children:te})]}),Oe=()=>Y?n.jsxRuntimeExports.jsx(Ze.Tooltip,{disabled:!0,...Y,children:Re()}):Re();return n.jsxRuntimeExports.jsxs("div",{className:Ue(),style:ye,children:[_e,Oe(),n.jsxRuntimeExports.jsx(et.default,{className:"text-field-error-text",error:Z,helperText:ke,hideErrorDom:Se})]})};exports.TextField=we;exports.default=we;
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,176 @@
1
+ {
2
+ "name": "TimePicker",
3
+ "category": "Data Entry",
4
+ "description": "时间选择器,基于 DatePicker 封装,支持单时间选择与范围选择(RangePicker)",
5
+ "semantic": {
6
+ "intent": [
7
+ "时间选择",
8
+ "日程安排"
9
+ ],
10
+ "useCases": [
11
+ "会议时间",
12
+ "闹钟设置",
13
+ "预约时间"
14
+ ],
15
+ "riskLevel": "low"
16
+ },
17
+ "variants": {
18
+ "default": {
19
+ "meaning": "标准时间选择"
20
+ },
21
+ "range": {
22
+ "meaning": "时间范围选择——用 TimePicker.RangePicker 或 TimePicker.TimeRangePicker(两者等价)"
23
+ }
24
+ },
25
+ "states": [
26
+ "default",
27
+ "disabled",
28
+ "error"
29
+ ],
30
+ "idealProps": {
31
+ "value": {
32
+ "type": "Dayjs | null",
33
+ "description": "受控时间值(Dayjs 对象);清空时传 null;与 onChange 配套使用"
34
+ },
35
+ "defaultValue": {
36
+ "type": "Dayjs",
37
+ "description": "非受控默认时间值;受控模式只传 value + onChange"
38
+ },
39
+ "format": {
40
+ "type": "string",
41
+ "default": "HH:mm:ss",
42
+ "description": "展示的时间格式,支持 'HH:mm' / 'HH:mm:ss' / 'hh:mm a'(12小时制)等"
43
+ },
44
+ "onChange": {
45
+ "type": "function",
46
+ "signature": "(time: Dayjs | null, timeString: string) => void",
47
+ "description": "时间发生变化的回调;清空时 time=null,timeString='';来自 rc-picker 继承"
48
+ },
49
+ "disabled": {
50
+ "type": "boolean",
51
+ "default": false,
52
+ "description": "是否禁用"
53
+ },
54
+ "disabledTooltip": {
55
+ "type": "TooltipProps",
56
+ "description": "禁用状态下的 Tooltip 配置(src/TimePicker/index.tsx:35);disabled=true 时触发 Tooltip 包裹",
57
+ "required": false
58
+ },
59
+ "placeholder": {
60
+ "type": "string",
61
+ "description": "输入框占位提示"
62
+ },
63
+ "use12Hours": {
64
+ "type": "boolean",
65
+ "default": false,
66
+ "description": "使用 12 小时制,开启时 format 建议配置为 'hh:mm a'"
67
+ },
68
+ "allowClear": {
69
+ "type": "boolean",
70
+ "default": true,
71
+ "description": "是否展示清除按钮(与 DatePicker 共享同一实现,默认 true)",
72
+ "required": false
73
+ },
74
+ "open": {
75
+ "type": "boolean",
76
+ "description": "受控控制面板是否打开",
77
+ "required": false
78
+ },
79
+ "onOpenChange": {
80
+ "type": "function",
81
+ "signature": "(open: boolean) => void",
82
+ "description": "面板打开/关闭回调",
83
+ "required": false
84
+ },
85
+ "disabledHours": {
86
+ "type": "function",
87
+ "signature": "() => number[]",
88
+ "description": "返回禁止选择的小时数组,例:() => [0,1,2,3] 禁止凌晨时段",
89
+ "required": false
90
+ },
91
+ "disabledMinutes": {
92
+ "type": "function",
93
+ "signature": "(selectedHour: number) => number[]",
94
+ "description": "返回禁止选择的分钟数组(依赖已选小时动态计算)",
95
+ "required": false
96
+ },
97
+ "disabledSeconds": {
98
+ "type": "function",
99
+ "signature": "(selectedHour: number, selectedMinute: number) => number[]",
100
+ "description": "返回禁止选择的秒数组",
101
+ "required": false
102
+ },
103
+ "showNow": {
104
+ "type": "boolean",
105
+ "description": "是否显示「此刻」快捷按钮",
106
+ "required": false
107
+ },
108
+ "addon": {
109
+ "type": "function",
110
+ "signature": "() => React.ReactNode",
111
+ "description": "面板底部额外内容(等价于 renderExtraFooter,优先级低于 renderExtraFooter);src/TimePicker/index.tsx:41-48",
112
+ "required": false
113
+ }
114
+ },
115
+ "do": [
116
+ "受控模式:传 value(Dayjs | null)+ onChange;清空时用 null 而不是空字符串",
117
+ "范围选择用 TimePicker.RangePicker(与 TimePicker.TimeRangePicker 等价)",
118
+ "禁用特定时间段用 disabledHours / disabledMinutes / disabledSeconds 组合",
119
+ "use12Hours=true 时同步设置 format='hh:mm a' 以保持展示一致",
120
+ "disabled=true 时可配合 disabledTooltip 提供操作权限提示"
121
+ ],
122
+ "dont": [
123
+ "在需要选时间段的场景使用两个 TimePicker——应用 TimePicker.RangePicker",
124
+ "传字符串给 value——value 必须是 Dayjs 对象或 null(非字符串)",
125
+ "忽略清空场景:onChange(null, '') 表示清空,直接存 time 会把 null 存入 state",
126
+ "rc-* 库 strict 校验可能报告额外 prop(已知边缘情况,非 metadata 错误)"
127
+ ],
128
+ "events": {
129
+ "onChange": {
130
+ "signature": "(time: Dayjs | null, timeString: string) => void",
131
+ "asyncSupported": false,
132
+ "examples": [
133
+ "时间选中时:time 为 Dayjs 对象,timeString 为 format 格式化字符串(如 '14:30:00')",
134
+ "清空时:time=null,timeString=''——需判断 null 避免存入 state",
135
+ "受控模式更新:onChange={(t) => setValue(t)} 同步更新 state"
136
+ ],
137
+ "commonMistakes": [
138
+ "只用 timeString 而忽略 time——timeString 是字符串,跨时区转换需用 Dayjs 对象",
139
+ "不处理 null:allowClear=true 用户点叉触发 onChange(null, ''),直接 setValue(time) 会存入 null",
140
+ "RangePicker 的 onChange 签名不同:(times: [Dayjs,Dayjs]|null, timeStrings:[string,string]) => void"
141
+ ]
142
+ },
143
+ "onOpenChange": {
144
+ "signature": "(open: boolean) => void",
145
+ "asyncSupported": false,
146
+ "examples": [
147
+ "面板弹出时触发 onOpenChange(true),关闭时触发 onOpenChange(false)",
148
+ "搭配 open 受控 prop 实现弹层自定义开关"
149
+ ],
150
+ "commonMistakes": [
151
+ "在 onOpenChange(false) 中提交表单——面板关闭不代表值已更新(需用 onChange 确认)"
152
+ ]
153
+ }
154
+ },
155
+ "typescriptPitfalls": [
156
+ {
157
+ "issue": "TimePicker value 必须是 Dayjs 对象,传字符串会导致展示异常",
158
+ "wrong": "value={'14:30:00'} // 字符串不是 Dayjs,内部格式化失败",
159
+ "right": "value={dayjs('14:30:00', 'HH:mm:ss')} // 用 dayjs() 转换;清空用 null"
160
+ },
161
+ {
162
+ "issue": "RangePicker 与 TimePicker 的 onChange 签名不同,混用导致类型错误",
163
+ "wrong": "// TimePicker.RangePicker 中用单时间签名\n<TimePicker.RangePicker onChange={(time: Dayjs) => ...} />",
164
+ "right": "<TimePicker.RangePicker onChange={(times: [Dayjs,Dayjs]|null, strs: [string,string]) => ...} />"
165
+ },
166
+ {
167
+ "issue": "rc-* 继承 prop(PickerTimeProps)在 strict 模式下可能报告未对齐,属已知边缘情况",
168
+ "wrong": "// 假设 strict 校验失败说明 metadata 写错——TimePicker/Tree 的 rc-* 继承是已知例外",
169
+ "right": "// strict 失败是已知情况;确认源码 prop 存在即可,不需要删除真实 prop"
170
+ }
171
+ ],
172
+ "mapping": {
173
+ "realComponent": "TimePicker",
174
+ "adapter": null
175
+ }
176
+ }
@@ -0,0 +1,110 @@
1
+ {
2
+ "name": "Timeline",
3
+ "category": "Data Display",
4
+ "description": "时间轴,垂直展示的时间流信息,支持正序/倒序与多种节点样式",
5
+ "semantic": {
6
+ "intent": [
7
+ "展示历史",
8
+ "流程跟踪",
9
+ "时间顺序"
10
+ ],
11
+ "useCases": [
12
+ "版本日志",
13
+ "物流详情",
14
+ "审批流程"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "左侧时间轴"
21
+ },
22
+ "right": {
23
+ "meaning": "右侧时间轴"
24
+ },
25
+ "alternate": {
26
+ "meaning": "交替时间轴"
27
+ },
28
+ "double": {
29
+ "meaning": "双侧时间轴(label 在左侧,内容在右侧)"
30
+ }
31
+ },
32
+ "states": [
33
+ "default",
34
+ "pending",
35
+ "disabled"
36
+ ],
37
+ "idealProps": {
38
+ "data": {
39
+ "type": "TimelineItemProps[]",
40
+ "description": "数据驱动模式(推荐):传入节点数组,组件内部自动渲染所有 TimelineItem;与 children JSX 方式二选一,data 优先(src/Timeline/index.tsx:118 renderItems 先判断 data?.length)",
41
+ "itemSchema": {
42
+ "content": { "type": "ReactNode", "description": "节点主体内容" },
43
+ "dotIcon": { "type": "ReactNode", "description": "自定义节点图标(对应 Timeline.Item 的 dot prop)" },
44
+ "label": { "type": "ReactNode", "description": "节点标签(仅 mode='double' 时在左侧显示)" },
45
+ "disabled": { "type": "boolean", "description": "是否禁用该节点(灰色样式)" },
46
+ "className": { "type": "string", "description": "自定义节点 className" }
47
+ }
48
+ },
49
+ "mode": {
50
+ "type": "enum",
51
+ "values": ["left", "alternate", "right", "double"],
52
+ "default": "left",
53
+ "description": "时间轴和内容的相对位置。⚠️ align prop 与 mode 同义(alias),同时传时 align 优先(src:50 `innerMode = align ?? mode`)"
54
+ },
55
+ "align": {
56
+ "type": "enum",
57
+ "values": ["left", "alternate", "right", "double"],
58
+ "description": "与 mode 同义,优先级高于 mode(src/Timeline/index.tsx:50);不建议同时传 mode 和 align"
59
+ },
60
+ "reverse": {
61
+ "type": "boolean",
62
+ "default": false,
63
+ "description": "节点排序取反(最新节点排最后变最前)"
64
+ },
65
+ "pending": {
66
+ "type": "ReactNode | boolean",
67
+ "default": null,
68
+ "description": "最后一个幽灵节点内容,传 true 显示空幽灵节点,传 ReactNode 显示自定义内容(物流'配送中'等场景)"
69
+ },
70
+ "pendingDot": {
71
+ "type": "ReactNode",
72
+ "description": "幽灵节点的时间轴点图标,配合 pending 使用"
73
+ }
74
+ },
75
+ "do": [
76
+ "优先使用 data 数组 prop(而非 JSX children)批量渲染节点,减少模板代码",
77
+ "使用 dotIcon / color 区分节点状态(绿色=成功、红色=失败、蓝色=进行中)",
78
+ "正在进行中的事项用 pending 幽灵节点展示(末尾加载动画语义)",
79
+ "需要展示日期标签时使用 mode='double' + item.label",
80
+ "最近的时间点通常排在最前面(配合 reverse=true 或数据倒序)"
81
+ ],
82
+ "dont": [
83
+ "在水平空间受限的区域使用 mode='alternate'——两侧都有内容需要足够宽度",
84
+ "不要同时传 mode 和 align——align 会覆盖 mode(src 实证)",
85
+ "节点内容过于复杂(嵌套 Table/Form 等)——Timeline 适合轻量文本+状态展示",
86
+ "不要依赖 items prop(当前 idealProps 是 data 不是 items——antd 命名差异)"
87
+ ],
88
+ "events": {},
89
+ "typescriptPitfalls": [
90
+ {
91
+ "issue": "data 数组中 dot/icon 字段名是 dotIcon 不是 dot",
92
+ "wrong": "data={[{ content: '已发货', dot: <Icon /> }]} // dot 在 data 数组中无效",
93
+ "right": "data={[{ content: '已发货', dotIcon: <Icon /> }]} // data 模式用 dotIcon;JSX 模式 <Timeline.Item dot={...}>"
94
+ },
95
+ {
96
+ "issue": "mode 和 align 同时传时 align 优先,mode 被忽略",
97
+ "wrong": "<Timeline mode='alternate' align='left'> // align='left' 覆盖 mode='alternate'",
98
+ "right": "// 只传其中一个\n<Timeline mode='alternate'> // 或 <Timeline align='left'>"
99
+ },
100
+ {
101
+ "issue": "TimelineItemProps 的 label 只在 mode='double' 时显示,其他模式传了也不渲染",
102
+ "wrong": "// mode='left' 下传 label 期望显示时间\ndata={[{ content: '审批通过', label: '2024-01-01' }]} // label 不会渲染",
103
+ "right": "// 需要显示 label 必须同时设置 mode='double'\n<Timeline mode='double' data={[{ content: '审批通过', label: '2024-01-01' }]} />"
104
+ }
105
+ ],
106
+ "mapping": {
107
+ "realComponent": "Timeline",
108
+ "adapter": null
109
+ }
110
+ }