@para-ui/core 5.0.0-beta.8 → 5.0.0

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 (735) 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/ExpressionInput/component.json +79 -0
  36. package/FieldForm/component.json +196 -0
  37. package/Form/component.json +161 -0
  38. package/FormItem/component.json +171 -0
  39. package/FunctionModal/component.json +197 -0
  40. package/Help/component.json +118 -0
  41. package/HelperText/component.json +126 -0
  42. package/Image/component.json +165 -0
  43. package/InputCode/component.json +191 -0
  44. package/InputLang/component.json +205 -0
  45. package/InputNumber/component.json +162 -0
  46. package/Label/component.json +126 -0
  47. package/Loading/component.json +91 -0
  48. package/Menu/component.json +180 -0
  49. package/Message/component.json +246 -0
  50. package/Modal/component.json +277 -0
  51. package/MultiBox/component.json +216 -0
  52. package/Notification/component.json +184 -0
  53. package/OperateBtn/component.json +134 -0
  54. package/PageHeader/component.json +112 -0
  55. package/Pagination/component.json +181 -0
  56. package/PasswordRules/component.json +105 -0
  57. package/PopConfirm/component.json +227 -0
  58. package/PopMenu/component.json +131 -0
  59. package/Popover/component.json +165 -0
  60. package/Progress/component.json +161 -0
  61. package/Prompt/component.json +144 -0
  62. package/Querying/component.json +96 -0
  63. package/QuickReply/component.json +129 -0
  64. package/README.md +0 -5
  65. package/Radio/component.json +136 -0
  66. package/RadioGroup/component.json +149 -0
  67. package/RangeInput/component.json +198 -0
  68. package/Result/component.json +104 -0
  69. package/ScrollBar/component.json +115 -0
  70. package/Search/component.json +177 -0
  71. package/Select/component.json +244 -0
  72. package/SelectInput/component.json +184 -0
  73. package/Selector/component.json +203 -0
  74. package/SelectorPicker/component.json +179 -0
  75. package/SingleBox/component.json +151 -0
  76. package/Slider/component.json +181 -0
  77. package/SortBox/component.json +108 -0
  78. package/Status/component.json +104 -0
  79. package/Stepper/component.json +129 -0
  80. package/Switch/component.json +207 -0
  81. package/Table/component.json +547 -0
  82. package/Tabs/component.json +227 -0
  83. package/Tag/component.json +221 -0
  84. package/TextEditor/component.json +186 -0
  85. package/TextField/component.json +290 -0
  86. package/TimePicker/component.json +176 -0
  87. package/Timeline/component.json +110 -0
  88. package/Title/component.json +156 -0
  89. package/ToggleButton/component.json +153 -0
  90. package/Tooltip/component.json +176 -0
  91. package/Transfer/component.json +157 -0
  92. package/Tree/component.json +512 -0
  93. package/Upload/component.json +450 -0
  94. package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
  95. package/ai-workflows/02-rbac-operation-buttons.md +290 -0
  96. package/ai-workflows/03-complex-form-async-cascade.md +350 -0
  97. package/ai-workflows/04-array-field-form.md +281 -0
  98. package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
  99. package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
  100. package/ai-workflows/07-search-filter-table-trio.md +387 -0
  101. package/ai-workflows/08-table-advanced-features.md +365 -0
  102. package/ai-workflows/09-batch-operation-export-progress.md +367 -0
  103. package/ai-workflows/10-cross-component-state-coordination.md +412 -0
  104. package/es/AlignBox/component.json +89 -0
  105. package/es/AlignBox/index.css +1 -1
  106. package/es/AlignBox/index.d.ts +6 -2
  107. package/es/AlignBox/index.js +1 -1
  108. package/es/AlignBox/style/index.css +1 -1
  109. package/es/Anchor/anchorMenu/index.d.ts +2 -1
  110. package/es/Anchor/anchorMenu/index.js +36 -33
  111. package/es/Anchor/component.json +130 -0
  112. package/es/Anchor/index.js +52 -49
  113. package/es/Anchor/type.d.ts +8 -4
  114. package/es/Argv/batchEdit/index.js +1 -1
  115. package/es/Argv/component.json +216 -0
  116. package/es/Argv/dataGenerator/index.js +1 -1
  117. package/es/Argv/index.d.ts +5 -6
  118. package/es/Argv/index.js +1 -1
  119. package/es/AutoBox/component.json +133 -0
  120. package/es/AutoBox/index.d.ts +3 -3
  121. package/es/AutoBox/index.js +1 -1
  122. package/es/AutoBox/protal.d.ts +2 -2
  123. package/es/AutoBox/protal.js +33 -30
  124. package/es/AutoButton/component.json +109 -0
  125. package/es/AutoButton/index.js +1 -1
  126. package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  127. package/es/AutoTips/autoTipsMultiline/index.js +1 -1
  128. package/es/AutoTips/component.json +121 -0
  129. package/es/AutoTips/index.js +1 -1
  130. package/es/Badge/component.json +92 -0
  131. package/es/Breadcrumbs/component.json +142 -0
  132. package/es/Breadcrumbs/index.js +1 -1
  133. package/es/Button/SplitButton.d.ts +2 -2
  134. package/es/Button/component.json +168 -0
  135. package/es/Button/index.js +44 -44
  136. package/es/ButtonGroup/component.json +132 -0
  137. package/es/ButtonGroup/index.d.ts +1 -1
  138. package/es/Card/component.json +162 -0
  139. package/es/Card/index.d.ts +2 -2
  140. package/es/Card/index.js +2 -2
  141. package/es/Carousel/component.json +142 -0
  142. package/es/Carousel/index.d.ts +1 -1
  143. package/es/Cascader/Cascader.js +1 -1
  144. package/es/Cascader/OptionList/Column.js +1 -1
  145. package/es/Cascader/OptionList/index.js +1 -1
  146. package/es/Cascader/component.json +196 -0
  147. package/es/Cascader/hooks/useEntities.js +7 -7
  148. package/es/Cascader/interface.d.ts +1 -0
  149. package/es/Cascader/utils/commonUtil.d.ts +1 -1
  150. package/es/Cascader/utils/commonUtil.js +16 -16
  151. package/es/Cascader/utils/treeUtil.d.ts +14 -5
  152. package/es/Cascader/utils/treeUtil.js +1 -1
  153. package/es/Checkbox/component.json +138 -0
  154. package/es/CheckboxGroup/component.json +152 -0
  155. package/es/CheckboxGroup/index.js +1 -1
  156. package/es/CodeEditor/component.json +189 -0
  157. package/es/CodeEditor/index.d.ts +11 -10
  158. package/es/CodeEditor/index.js +25 -25
  159. package/es/Collapse/component.json +166 -0
  160. package/es/Collapse/index.d.ts +1 -1
  161. package/es/Collapse/index.js +23 -22
  162. package/es/CollapseBox/component.json +84 -0
  163. package/es/CollapseLayout/component.json +155 -0
  164. package/es/ColorPicker/component.json +142 -0
  165. package/es/ComboSelect/component.json +181 -0
  166. package/es/ComboSelect/index.js +115 -109
  167. package/es/ComboSelect/interface.d.ts +2 -2
  168. package/es/ComboSelect/utils.d.ts +3 -3
  169. package/es/ComboSelect/utils.js +1 -1
  170. package/es/Container/component.json +111 -0
  171. package/es/ContentBox/component.json +81 -0
  172. package/es/CopyText/component.json +118 -0
  173. package/es/CycleSelector/component.json +98 -0
  174. package/es/CycleSelector/index.js +14 -13
  175. package/es/DatePicker/component.json +192 -0
  176. package/es/DatePicker/generatePicker/generateRangePicker.js +11 -11
  177. package/es/DatePicker/generatePicker/generateSinglePicker.js +2 -2
  178. package/es/Descriptions/component.json +142 -0
  179. package/es/Descriptions/index.d.ts +1 -1
  180. package/es/Desktop/component.json +171 -0
  181. package/es/Desktop/index.js +1 -1
  182. package/es/DragVerify/component.json +114 -0
  183. package/es/DragVerify/index.js +19 -19
  184. package/es/Drawer/component.json +200 -0
  185. package/es/Drawer/index.js +86 -86
  186. package/es/Drawer/interface.d.ts +1 -1
  187. package/es/Drawer/util.d.ts +1 -6
  188. package/es/Drawer/util.js +9 -6
  189. package/es/Dropdown/component.json +147 -0
  190. package/es/Dropdown/index.js +1 -1
  191. package/es/DynamicMultiBox/component.json +278 -0
  192. package/es/DynamicMultiBox/formItem.d.ts +1 -1
  193. package/es/DynamicMultiBox/index.d.ts +2 -2
  194. package/es/DynamicMultiBox/index.js +1 -1
  195. package/es/DynamicMultiBox/interface.d.ts +76 -76
  196. package/es/DynamicMultiBox/rowForm.d.ts +2 -2
  197. package/es/Empty/component.json +123 -0
  198. package/es/Empty/index.css +1 -1
  199. package/es/Empty/index.d.ts +2 -2
  200. package/es/Empty/index.js +27 -26
  201. package/es/Empty/style/index.css +1 -1
  202. package/es/ExpressionInput/HighlightOverlay.d.ts +8 -0
  203. package/es/ExpressionInput/HighlightOverlay.js +27 -0
  204. package/es/ExpressionInput/Popup.d.ts +19 -0
  205. package/es/ExpressionInput/Popup.js +93 -0
  206. package/es/ExpressionInput/component.json +79 -0
  207. package/es/ExpressionInput/detectChainAtCursor.d.ts +17 -0
  208. package/es/ExpressionInput/detectChainAtCursor.js +31 -0
  209. package/es/ExpressionInput/filterCandidatesByPartial.d.ts +2 -0
  210. package/es/ExpressionInput/filterCandidatesByPartial.js +15 -0
  211. package/es/ExpressionInput/highlightSegments.d.ts +9 -0
  212. package/es/ExpressionInput/highlightSegments.js +14 -0
  213. package/es/ExpressionInput/index.css +1 -0
  214. package/es/ExpressionInput/index.d.ts +5 -0
  215. package/es/ExpressionInput/index.js +178 -0
  216. package/es/ExpressionInput/interface.d.ts +52 -0
  217. package/es/ExpressionInput/isExpressionValue.d.ts +5 -0
  218. package/es/ExpressionInput/isExpressionValue.js +18 -0
  219. package/es/ExpressionInput/lang/en_US.d.ts +4 -0
  220. package/es/ExpressionInput/lang/en_US.js +7 -0
  221. package/es/ExpressionInput/lang/index.d.ts +9 -0
  222. package/es/ExpressionInput/lang/index.js +10 -0
  223. package/es/ExpressionInput/lang/zh_CN.d.ts +4 -0
  224. package/es/ExpressionInput/lang/zh_CN.js +7 -0
  225. package/es/ExpressionInput/style/css.js +1 -0
  226. package/es/ExpressionInput/style/index.css +1 -0
  227. package/es/ExpressionInput/style/index.js +1 -0
  228. package/es/ExpressionInput/useExpressionInput.d.ts +26 -0
  229. package/es/ExpressionInput/useExpressionInput.js +59 -0
  230. package/es/FieldForm/FieldFormItem/ItemHolder.js +1 -1
  231. package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  232. package/es/FieldForm/FieldFormItem/StatusProvider.js +1 -1
  233. package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
  234. package/es/FieldForm/Form.d.ts +2 -2
  235. package/es/FieldForm/Form.js +1 -1
  236. package/es/FieldForm/FormItemInput.js +1 -1
  237. package/es/FieldForm/FormItemLabel.js +1 -1
  238. package/es/FieldForm/FormList.d.ts +2 -2
  239. package/es/FieldForm/component.json +196 -0
  240. package/es/FieldForm/context.d.ts +5 -1
  241. package/es/FieldForm/context.js +2 -2
  242. package/es/FieldForm/hooks/useForm.d.ts +4 -3
  243. package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
  244. package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  245. package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
  246. package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
  247. package/es/FieldForm/hooks/useItemRef.js +6 -6
  248. package/es/Form/component.json +161 -0
  249. package/es/Form/index.d.ts +52 -49
  250. package/es/Form/index.js +1 -1
  251. package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  252. package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
  253. package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  254. package/es/FormItem/compoments/formFile/index.js +8 -8
  255. package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  256. package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
  257. package/es/FormItem/component.json +171 -0
  258. package/es/FormItem/index.d.ts +5 -5
  259. package/es/FormItem/index.js +23 -23
  260. package/es/FormItem/itemType.js +1 -1
  261. package/es/FunctionModal/component.json +197 -0
  262. package/es/FunctionModal/dialog.d.ts +1 -1
  263. package/es/FunctionModal/modalContext.d.ts +4 -1
  264. package/es/GlobalContext/confirmLocale.js +1 -1
  265. package/es/GlobalContext/index.js +1 -1
  266. package/es/Help/component.json +118 -0
  267. package/es/HelperText/component.json +126 -0
  268. package/es/Image/PreviewGroup.js +1 -1
  269. package/es/Image/component.json +165 -0
  270. package/es/Image/index.js +1 -1
  271. package/es/InputCode/component.json +191 -0
  272. package/es/InputCode/index.d.ts +2 -2
  273. package/es/InputCode/index.js +1 -1
  274. package/es/InputLang/component.json +205 -0
  275. package/es/InputLang/index.js +2 -2
  276. package/es/InputNumber/component.json +162 -0
  277. package/es/InputNumber/index.d.ts +13 -7
  278. package/es/InputNumber/index.js +152 -144
  279. package/es/Label/component.json +126 -0
  280. package/es/Label/index.d.ts +2 -2
  281. package/es/Loading/component.json +91 -0
  282. package/es/Menu/component.json +180 -0
  283. package/es/Menu/verticalMenuList.js +1 -1
  284. package/es/Message/component.json +246 -0
  285. package/es/Message/index.d.ts +2 -2
  286. package/es/Message/index.js +19 -19
  287. package/es/Modal/Confirm/index.d.ts +1 -1
  288. package/es/Modal/Confirm/index.js +1 -1
  289. package/es/Modal/component.json +277 -0
  290. package/es/Modal/index.d.ts +85 -5
  291. package/es/Modal/index.js +159 -122
  292. package/es/Modal/interface.d.ts +1 -0
  293. package/es/MultiBox/component.json +216 -0
  294. package/es/MultiBox/index.js +19 -14
  295. package/es/Notification/component.json +184 -0
  296. package/es/OperateBtn/component.json +134 -0
  297. package/es/OperateBtn/index.d.ts +3 -3
  298. package/es/PageHeader/component.json +112 -0
  299. package/es/PageHeader/horizontalMeun.js +1 -1
  300. package/es/PageHeader/horizontalMeunRight.js +1 -1
  301. package/es/Pagination/component.json +181 -0
  302. package/es/Pagination/index.js +15 -15
  303. package/es/ParauiProvider/index.js +1 -1
  304. package/es/PasswordRules/component.json +105 -0
  305. package/es/PasswordRules/index.d.ts +4 -4
  306. package/es/PopConfirm/component.json +227 -0
  307. package/es/PopConfirm/index.d.ts +1 -1
  308. package/es/PopConfirm/index.js +1 -1
  309. package/es/PopMenu/component.json +131 -0
  310. package/es/PopMenu/hooks.d.ts +1 -1
  311. package/es/PopMenu/index.js +8 -8
  312. package/es/Popover/component.json +165 -0
  313. package/es/Popover/index.js +1 -1
  314. package/es/Progress/component.json +161 -0
  315. package/es/Prompt/component.json +144 -0
  316. package/es/Querying/component.json +96 -0
  317. package/es/Querying/index.css +1 -1
  318. package/es/Querying/index.d.ts +2 -2
  319. package/es/Querying/index.js +20 -19
  320. package/es/Querying/style/index.css +1 -1
  321. package/es/QuickReply/QuickReplyCode/index.js +1 -1
  322. package/es/QuickReply/component.json +129 -0
  323. package/es/QuickReply/index.d.ts +1 -1
  324. package/es/Radio/component.json +136 -0
  325. package/es/RadioGroup/component.json +149 -0
  326. package/es/RangeInput/component.json +198 -0
  327. package/es/RangeInput/index.d.ts +15 -7
  328. package/es/RangeInput/index.js +120 -103
  329. package/es/Result/component.json +104 -0
  330. package/es/ScrollBar/component.json +115 -0
  331. package/es/Search/component.json +177 -0
  332. package/es/Search/index.d.ts +1 -1
  333. package/es/Select/component.json +244 -0
  334. package/es/Select/index.d.ts +11 -8
  335. package/es/Select/index.js +441 -438
  336. package/es/SelectInput/component.json +184 -0
  337. package/es/SelectInput/index.d.ts +4 -4
  338. package/es/SelectInput/index.js +8 -8
  339. package/es/Selector/component.json +203 -0
  340. package/es/Selector/index.js +56 -50
  341. package/es/Selector/interface.d.ts +2 -2
  342. package/es/Selector/selectorData/index.js +1 -1
  343. package/es/Selector/selectorMain/index.js +3 -3
  344. package/es/Selector/selectorNode/index.js +1 -1
  345. package/es/Selector/util.d.ts +3 -3
  346. package/es/Selector/util.js +6 -12
  347. package/es/SelectorPicker/component.json +179 -0
  348. package/es/SelectorPicker/index.d.ts +5 -5
  349. package/es/SelectorPicker/index.js +15 -15
  350. package/es/SingleBox/component.json +151 -0
  351. package/es/SingleBox/index.d.ts +2 -2
  352. package/es/Slider/component.json +181 -0
  353. package/es/SortBox/component.json +108 -0
  354. package/es/Status/component.json +104 -0
  355. package/es/Stepper/component.json +129 -0
  356. package/es/Stepper/index.d.ts +2 -2
  357. package/es/Switch/component.json +207 -0
  358. package/es/Switch/index.css +1 -1
  359. package/es/Switch/index.d.ts +3 -2
  360. package/es/Switch/index.js +60 -59
  361. package/es/Switch/style/index.css +1 -1
  362. package/es/Table/component.json +547 -0
  363. package/es/Table/index.d.ts +2 -2
  364. package/es/Table/index.js +385 -382
  365. package/es/Table/interface.d.ts +30 -0
  366. package/es/Table/tableHead.js +1 -1
  367. package/es/Table/util.d.ts +1 -1
  368. package/es/Table/util.js +3 -12
  369. package/es/Tabs/component.json +227 -0
  370. package/es/Tag/component.json +221 -0
  371. package/es/Tag/index.css +1 -1
  372. package/es/Tag/index.d.ts +1 -1
  373. package/es/Tag/index.js +20 -20
  374. package/es/Tag/style/index.css +1 -1
  375. package/es/TextEditor/component.json +186 -0
  376. package/es/TextEditor/index.d.ts +5 -5
  377. package/es/TextEditor/index.js +1 -1
  378. package/es/TextField/component.json +290 -0
  379. package/es/TextField/index.d.ts +2 -2
  380. package/es/TextField/index.js +1 -1
  381. package/es/TimePicker/component.json +176 -0
  382. package/es/Timeline/component.json +110 -0
  383. package/es/Title/component.json +156 -0
  384. package/es/ToggleButton/component.json +153 -0
  385. package/es/ToggleButton/index.js +1 -1
  386. package/es/Tooltip/component.json +176 -0
  387. package/es/Tooltip/index.js +58 -53
  388. package/es/Tooltip/interface.d.ts +14 -1
  389. package/es/Tooltip/utils.js +6 -6
  390. package/es/Transfer/component.json +157 -0
  391. package/es/Tree/OperateBar/index.js +1 -1
  392. package/es/Tree/Tree.js +3 -3
  393. package/es/Tree/component.json +512 -0
  394. package/es/Tree/interface.d.ts +1 -1
  395. package/es/Upload/component.json +450 -0
  396. package/es/Upload/util.js +1 -1
  397. package/es/Utils/snack-kit-shims.d.ts +18 -0
  398. package/es/Utils/snack-kit-shims.js +19 -0
  399. package/es/Utils/type.d.ts +0 -6
  400. package/es/_virtual/index.js +5 -3
  401. package/es/_virtual/index2.js +2 -5
  402. package/es/index.d.ts +4 -0
  403. package/es/index.js +152 -150
  404. package/es/locale/en-US.d.ts +3 -0
  405. package/es/locale/en-US.js +3 -0
  406. package/es/locale/en_US.d.ts +361 -0
  407. package/es/locale/en_US.js +364 -0
  408. package/es/locale/index.d.ts +1 -723
  409. package/es/locale/index2.js +10 -0
  410. package/es/locale/zh-CN.d.ts +3 -0
  411. package/es/locale/zh-CN.js +3 -0
  412. package/es/locale/zh_CN.d.ts +361 -0
  413. package/es/locale/zh_CN.js +364 -0
  414. package/es/node_modules/classnames/index.js +1 -1
  415. package/lib/AlignBox/component.json +89 -0
  416. package/lib/AlignBox/index.css +1 -1
  417. package/lib/AlignBox/index.d.ts +6 -2
  418. package/lib/AlignBox/index.js +1 -1
  419. package/lib/AlignBox/style/index.css +1 -1
  420. package/lib/Anchor/anchorMenu/index.d.ts +2 -1
  421. package/lib/Anchor/anchorMenu/index.js +1 -1
  422. package/lib/Anchor/component.json +130 -0
  423. package/lib/Anchor/index.js +1 -1
  424. package/lib/Anchor/type.d.ts +8 -4
  425. package/lib/Argv/component.json +216 -0
  426. package/lib/Argv/dataGenerator/index.js +1 -1
  427. package/lib/Argv/index.d.ts +5 -6
  428. package/lib/Argv/index.js +1 -1
  429. package/lib/AutoBox/component.json +133 -0
  430. package/lib/AutoBox/index.d.ts +3 -3
  431. package/lib/AutoBox/index.js +1 -1
  432. package/lib/AutoBox/protal.d.ts +2 -2
  433. package/lib/AutoBox/protal.js +1 -1
  434. package/lib/AutoButton/component.json +109 -0
  435. package/lib/AutoButton/index.js +1 -1
  436. package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  437. package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
  438. package/lib/AutoTips/component.json +121 -0
  439. package/lib/AutoTips/index.js +1 -1
  440. package/lib/Badge/component.json +92 -0
  441. package/lib/Breadcrumbs/component.json +142 -0
  442. package/lib/Breadcrumbs/index.js +1 -1
  443. package/lib/Button/SplitButton.d.ts +2 -2
  444. package/lib/Button/component.json +168 -0
  445. package/lib/Button/index.js +1 -1
  446. package/lib/ButtonGroup/component.json +132 -0
  447. package/lib/ButtonGroup/index.d.ts +1 -1
  448. package/lib/Card/component.json +162 -0
  449. package/lib/Card/index.d.ts +2 -2
  450. package/lib/Card/index.js +1 -1
  451. package/lib/Carousel/component.json +142 -0
  452. package/lib/Carousel/index.d.ts +1 -1
  453. package/lib/Cascader/Cascader.js +1 -1
  454. package/lib/Cascader/OptionList/Column.js +1 -1
  455. package/lib/Cascader/OptionList/index.js +1 -1
  456. package/lib/Cascader/component.json +196 -0
  457. package/lib/Cascader/hooks/useEntities.js +1 -1
  458. package/lib/Cascader/interface.d.ts +1 -0
  459. package/lib/Cascader/utils/commonUtil.d.ts +1 -1
  460. package/lib/Cascader/utils/commonUtil.js +1 -1
  461. package/lib/Cascader/utils/treeUtil.d.ts +14 -5
  462. package/lib/Cascader/utils/treeUtil.js +1 -1
  463. package/lib/Checkbox/component.json +138 -0
  464. package/lib/CheckboxGroup/component.json +152 -0
  465. package/lib/CheckboxGroup/index.js +1 -1
  466. package/lib/CodeEditor/component.json +189 -0
  467. package/lib/CodeEditor/index.d.ts +11 -10
  468. package/lib/CodeEditor/index.js +1 -1
  469. package/lib/Collapse/component.json +166 -0
  470. package/lib/Collapse/index.d.ts +1 -1
  471. package/lib/Collapse/index.js +1 -1
  472. package/lib/CollapseBox/component.json +84 -0
  473. package/lib/CollapseLayout/component.json +155 -0
  474. package/lib/ColorPicker/component.json +142 -0
  475. package/lib/ComboSelect/component.json +181 -0
  476. package/lib/ComboSelect/index.js +1 -1
  477. package/lib/ComboSelect/interface.d.ts +2 -2
  478. package/lib/ComboSelect/utils.d.ts +3 -3
  479. package/lib/ComboSelect/utils.js +1 -1
  480. package/lib/Container/component.json +111 -0
  481. package/lib/ContentBox/component.json +81 -0
  482. package/lib/CopyText/component.json +118 -0
  483. package/lib/CycleSelector/component.json +98 -0
  484. package/lib/CycleSelector/index.js +1 -1
  485. package/lib/DatePicker/component.json +192 -0
  486. package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
  487. package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  488. package/lib/Descriptions/component.json +142 -0
  489. package/lib/Descriptions/index.d.ts +1 -1
  490. package/lib/Desktop/component.json +171 -0
  491. package/lib/Desktop/index.js +1 -1
  492. package/lib/DragVerify/component.json +114 -0
  493. package/lib/DragVerify/index.js +1 -1
  494. package/lib/Drawer/component.json +200 -0
  495. package/lib/Drawer/index.js +1 -1
  496. package/lib/Drawer/interface.d.ts +1 -1
  497. package/lib/Drawer/util.d.ts +1 -6
  498. package/lib/Drawer/util.js +1 -1
  499. package/lib/Dropdown/component.json +147 -0
  500. package/lib/Dropdown/index.js +1 -1
  501. package/lib/DynamicMultiBox/component.json +278 -0
  502. package/lib/DynamicMultiBox/formItem.d.ts +1 -1
  503. package/lib/DynamicMultiBox/index.d.ts +2 -2
  504. package/lib/DynamicMultiBox/index.js +1 -1
  505. package/lib/DynamicMultiBox/interface.d.ts +76 -76
  506. package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
  507. package/lib/Empty/component.json +123 -0
  508. package/lib/Empty/index.css +1 -1
  509. package/lib/Empty/index.d.ts +2 -2
  510. package/lib/Empty/index.js +1 -1
  511. package/lib/Empty/style/index.css +1 -1
  512. package/lib/ExpressionInput/HighlightOverlay.d.ts +8 -0
  513. package/lib/ExpressionInput/HighlightOverlay.js +2 -0
  514. package/lib/ExpressionInput/Popup.d.ts +19 -0
  515. package/lib/ExpressionInput/Popup.js +2 -0
  516. package/lib/ExpressionInput/component.json +79 -0
  517. package/lib/ExpressionInput/detectChainAtCursor.d.ts +17 -0
  518. package/lib/ExpressionInput/detectChainAtCursor.js +2 -0
  519. package/lib/ExpressionInput/filterCandidatesByPartial.d.ts +2 -0
  520. package/lib/ExpressionInput/filterCandidatesByPartial.js +2 -0
  521. package/lib/ExpressionInput/highlightSegments.d.ts +9 -0
  522. package/lib/ExpressionInput/highlightSegments.js +2 -0
  523. package/lib/ExpressionInput/index.css +1 -0
  524. package/lib/ExpressionInput/index.d.ts +5 -0
  525. package/lib/ExpressionInput/index.js +2 -0
  526. package/lib/ExpressionInput/interface.d.ts +52 -0
  527. package/lib/ExpressionInput/isExpressionValue.d.ts +5 -0
  528. package/lib/ExpressionInput/isExpressionValue.js +2 -0
  529. package/lib/ExpressionInput/lang/en_US.d.ts +4 -0
  530. package/lib/ExpressionInput/lang/en_US.js +2 -0
  531. package/lib/ExpressionInput/lang/index.d.ts +9 -0
  532. package/lib/ExpressionInput/lang/index.js +2 -0
  533. package/lib/ExpressionInput/lang/zh_CN.d.ts +4 -0
  534. package/lib/ExpressionInput/lang/zh_CN.js +2 -0
  535. package/lib/ExpressionInput/style/css.js +1 -0
  536. package/lib/ExpressionInput/style/index.css +1 -0
  537. package/lib/ExpressionInput/style/index.js +1 -0
  538. package/lib/ExpressionInput/useExpressionInput.d.ts +26 -0
  539. package/lib/ExpressionInput/useExpressionInput.js +2 -0
  540. package/lib/FieldForm/FieldFormItem/ItemHolder.js +1 -1
  541. package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  542. package/lib/FieldForm/FieldFormItem/StatusProvider.js +1 -1
  543. package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
  544. package/lib/FieldForm/Form.d.ts +2 -2
  545. package/lib/FieldForm/Form.js +1 -1
  546. package/lib/FieldForm/FormItemInput.js +1 -1
  547. package/lib/FieldForm/FormItemLabel.js +1 -1
  548. package/lib/FieldForm/FormList.d.ts +2 -2
  549. package/lib/FieldForm/component.json +196 -0
  550. package/lib/FieldForm/context.d.ts +5 -1
  551. package/lib/FieldForm/context.js +1 -1
  552. package/lib/FieldForm/hooks/useForm.d.ts +4 -3
  553. package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
  554. package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  555. package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
  556. package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
  557. package/lib/FieldForm/hooks/useItemRef.js +1 -1
  558. package/lib/Form/component.json +161 -0
  559. package/lib/Form/index.d.ts +52 -49
  560. package/lib/Form/index.js +1 -1
  561. package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  562. package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
  563. package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  564. package/lib/FormItem/compoments/formFile/index.js +1 -1
  565. package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  566. package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
  567. package/lib/FormItem/component.json +171 -0
  568. package/lib/FormItem/index.d.ts +5 -5
  569. package/lib/FormItem/index.js +1 -1
  570. package/lib/FormItem/itemType.js +1 -1
  571. package/lib/FunctionModal/component.json +197 -0
  572. package/lib/FunctionModal/dialog.d.ts +1 -1
  573. package/lib/FunctionModal/modalContext.d.ts +4 -1
  574. package/lib/GlobalContext/confirmLocale.js +1 -1
  575. package/lib/GlobalContext/index.js +1 -1
  576. package/lib/Help/component.json +118 -0
  577. package/lib/HelperText/component.json +126 -0
  578. package/lib/Image/PreviewGroup.js +1 -1
  579. package/lib/Image/component.json +165 -0
  580. package/lib/Image/index.js +1 -1
  581. package/lib/InputCode/component.json +191 -0
  582. package/lib/InputCode/index.d.ts +2 -2
  583. package/lib/InputLang/component.json +205 -0
  584. package/lib/InputLang/index.js +1 -1
  585. package/lib/InputNumber/component.json +162 -0
  586. package/lib/InputNumber/index.d.ts +13 -7
  587. package/lib/InputNumber/index.js +1 -1
  588. package/lib/Label/component.json +126 -0
  589. package/lib/Label/index.d.ts +2 -2
  590. package/lib/Loading/component.json +91 -0
  591. package/lib/Menu/component.json +180 -0
  592. package/lib/Menu/verticalMenuList.js +1 -1
  593. package/lib/Message/component.json +246 -0
  594. package/lib/Message/index.d.ts +2 -2
  595. package/lib/Message/index.js +1 -1
  596. package/lib/Modal/Confirm/index.d.ts +1 -1
  597. package/lib/Modal/Confirm/index.js +1 -1
  598. package/lib/Modal/component.json +277 -0
  599. package/lib/Modal/index.d.ts +85 -5
  600. package/lib/Modal/index.js +1 -1
  601. package/lib/Modal/interface.d.ts +1 -0
  602. package/lib/MultiBox/component.json +216 -0
  603. package/lib/MultiBox/index.js +1 -1
  604. package/lib/Notification/component.json +184 -0
  605. package/lib/OperateBtn/component.json +134 -0
  606. package/lib/OperateBtn/index.d.ts +3 -3
  607. package/lib/PageHeader/component.json +112 -0
  608. package/lib/PageHeader/horizontalMeun.js +1 -1
  609. package/lib/PageHeader/horizontalMeunRight.js +1 -1
  610. package/lib/Pagination/component.json +181 -0
  611. package/lib/Pagination/index.js +1 -1
  612. package/lib/ParauiProvider/index.js +1 -1
  613. package/lib/PasswordRules/component.json +105 -0
  614. package/lib/PasswordRules/index.d.ts +4 -4
  615. package/lib/PopConfirm/component.json +227 -0
  616. package/lib/PopConfirm/index.d.ts +1 -1
  617. package/lib/PopConfirm/index.js +1 -1
  618. package/lib/PopMenu/component.json +131 -0
  619. package/lib/PopMenu/hooks.d.ts +1 -1
  620. package/lib/PopMenu/index.js +1 -1
  621. package/lib/Popover/component.json +165 -0
  622. package/lib/Popover/index.js +1 -1
  623. package/lib/Progress/component.json +161 -0
  624. package/lib/Prompt/component.json +144 -0
  625. package/lib/Querying/component.json +96 -0
  626. package/lib/Querying/index.css +1 -1
  627. package/lib/Querying/index.d.ts +2 -2
  628. package/lib/Querying/index.js +1 -1
  629. package/lib/Querying/style/index.css +1 -1
  630. package/lib/QuickReply/QuickReplyCode/index.js +1 -1
  631. package/lib/QuickReply/component.json +129 -0
  632. package/lib/QuickReply/index.d.ts +1 -1
  633. package/lib/Radio/component.json +136 -0
  634. package/lib/RadioGroup/component.json +149 -0
  635. package/lib/RangeInput/component.json +198 -0
  636. package/lib/RangeInput/index.d.ts +15 -7
  637. package/lib/RangeInput/index.js +1 -1
  638. package/lib/Result/component.json +104 -0
  639. package/lib/ScrollBar/component.json +115 -0
  640. package/lib/Search/component.json +177 -0
  641. package/lib/Search/index.d.ts +1 -1
  642. package/lib/Select/component.json +244 -0
  643. package/lib/Select/index.d.ts +11 -8
  644. package/lib/Select/index.js +1 -1
  645. package/lib/SelectInput/component.json +184 -0
  646. package/lib/SelectInput/index.d.ts +4 -4
  647. package/lib/SelectInput/index.js +1 -1
  648. package/lib/Selector/component.json +203 -0
  649. package/lib/Selector/index.js +1 -1
  650. package/lib/Selector/interface.d.ts +2 -2
  651. package/lib/Selector/selectorData/index.js +1 -1
  652. package/lib/Selector/selectorMain/index.js +1 -1
  653. package/lib/Selector/selectorNode/index.js +1 -1
  654. package/lib/Selector/util.d.ts +3 -3
  655. package/lib/Selector/util.js +1 -1
  656. package/lib/SelectorPicker/component.json +179 -0
  657. package/lib/SelectorPicker/index.d.ts +5 -5
  658. package/lib/SelectorPicker/index.js +1 -1
  659. package/lib/SingleBox/component.json +151 -0
  660. package/lib/SingleBox/index.d.ts +2 -2
  661. package/lib/Slider/component.json +181 -0
  662. package/lib/SortBox/component.json +108 -0
  663. package/lib/Status/component.json +104 -0
  664. package/lib/Stepper/component.json +129 -0
  665. package/lib/Stepper/index.d.ts +2 -2
  666. package/lib/Switch/component.json +207 -0
  667. package/lib/Switch/index.css +1 -1
  668. package/lib/Switch/index.d.ts +3 -2
  669. package/lib/Switch/index.js +1 -1
  670. package/lib/Switch/style/index.css +1 -1
  671. package/lib/Table/component.json +547 -0
  672. package/lib/Table/index.d.ts +2 -2
  673. package/lib/Table/index.js +1 -1
  674. package/lib/Table/interface.d.ts +30 -0
  675. package/lib/Table/tableHead.js +1 -1
  676. package/lib/Table/util.d.ts +1 -1
  677. package/lib/Table/util.js +1 -1
  678. package/lib/Tabs/component.json +227 -0
  679. package/lib/Tag/component.json +221 -0
  680. package/lib/Tag/index.css +1 -1
  681. package/lib/Tag/index.d.ts +1 -1
  682. package/lib/Tag/index.js +1 -1
  683. package/lib/Tag/style/index.css +1 -1
  684. package/lib/TextEditor/component.json +186 -0
  685. package/lib/TextEditor/index.d.ts +5 -5
  686. package/lib/TextEditor/index.js +1 -1
  687. package/lib/TextField/component.json +290 -0
  688. package/lib/TextField/index.d.ts +2 -2
  689. package/lib/TextField/index.js +1 -1
  690. package/lib/TimePicker/component.json +176 -0
  691. package/lib/Timeline/component.json +110 -0
  692. package/lib/Title/component.json +156 -0
  693. package/lib/ToggleButton/component.json +153 -0
  694. package/lib/ToggleButton/index.js +1 -1
  695. package/lib/Tooltip/component.json +176 -0
  696. package/lib/Tooltip/index.js +1 -1
  697. package/lib/Tooltip/interface.d.ts +14 -1
  698. package/lib/Tooltip/utils.js +1 -1
  699. package/lib/Transfer/component.json +157 -0
  700. package/lib/Tree/OperateBar/index.js +2 -2
  701. package/lib/Tree/Tree.js +1 -1
  702. package/lib/Tree/component.json +512 -0
  703. package/lib/Tree/interface.d.ts +1 -1
  704. package/lib/Upload/component.json +450 -0
  705. package/lib/Upload/util.js +1 -1
  706. package/lib/Utils/snack-kit-shims.d.ts +18 -0
  707. package/lib/Utils/snack-kit-shims.js +2 -0
  708. package/lib/Utils/type.d.ts +0 -6
  709. package/lib/_virtual/index.js +1 -1
  710. package/lib/_virtual/index2.js +1 -1
  711. package/lib/index.d.ts +4 -0
  712. package/lib/index.js +1 -1
  713. package/lib/locale/en-US.d.ts +3 -0
  714. package/lib/locale/en-US.js +1 -1
  715. package/lib/locale/en_US.d.ts +361 -0
  716. package/lib/locale/en_US.js +2 -0
  717. package/lib/locale/index.d.ts +1 -723
  718. package/lib/locale/index2.js +2 -0
  719. package/lib/locale/zh-CN.d.ts +3 -0
  720. package/lib/locale/zh-CN.js +1 -1
  721. package/lib/locale/zh_CN.d.ts +361 -0
  722. package/lib/locale/zh_CN.js +2 -0
  723. package/lib/node_modules/classnames/index.js +1 -1
  724. package/package.json +24 -4
  725. package/es/_virtual/index3.js +0 -5
  726. package/es/_virtual/index4.js +0 -5
  727. package/es/node_modules/@para-snack/core/dist/index.js +0 -5231
  728. package/lib/_virtual/index3.js +0 -2
  729. package/lib/_virtual/index4.js +0 -2
  730. package/lib/node_modules/@para-snack/core/dist/index.js +0 -20
  731. /package/es/{InputCode → CodeEditor}/index.css +0 -0
  732. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  733. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
  734. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  735. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const s=require("../_virtual/jsx-runtime.js"),n=require("react"),y=require("clsx"),S=require("../GlobalContext/constant.js"),Q=require("./anchorMenu/index.js"),B=require("../node_modules/@para-ui/icons/ToRight/index.js"),F=require("../node_modules/@para-ui/icons/ToLeft/index.js"),U=require("../node_modules/@para-ui/icons/PreviewOpen/index.js"),X=require("../Search/index.js"),Y=require("../GlobalContext/useFormatMessage.js"),Z=require("./lang/index.js"),_=require("@paraview/lib");;/* empty css */const ee=q=>{const{style:W,className:z,title:E="",scrollId:R=`${S.$prefixCls}-anchor-scroll-id`,list:d=[],listClassName:I,scrollClassName:D,placement:i="right",allExpanded:G=!0,search:H=!1,customPrefixIcon:$,listWidth:p}=q,J=Y.default("Anchor",Z.default),[C,L]=n.useState(""),[m,K]=n.useState(!1),[h,g]=n.useState({}),[T,M]=n.useState(!1),[N,O]=n.useState(""),[f,v]=n.useState(null),o=n.useRef({currentAnchorId:"",anchorList:d,anchorMap:{},searchValue:"",scrolling:!1}),V=T?"50px":p?`${p+20}px`:"160px";n.useEffect(()=>{o.current.anchorList=d;const e={};let r=!1;const c=(x,a="")=>{x.forEach(t=>{(t?.expanded===void 0||t?.expanded===null)&&(t.expanded=!1),a&&(t.parentId=a),e[t.id]=t,t.children&&(r=!0,c(t.children,t.id))})};c(d),K(r),o.current.anchorMap=e,g(e)},[d]),n.useEffect(()=>{const e=document.getElementById(R),r=_.throttle(async()=>{if(o.current.scrolling)return;const c=e?.querySelectorAll("[id]")||[],a=Array.from(c).map(l=>({id:l.id,offsetTop:l.offsetTop-(e?.offsetTop||0)}));let t=0,u="";const A=a.find(l=>(t<l.offsetTop&&(t=l.offsetTop,u=l.id),l.offsetTop>=(e?.scrollTop||0)));if(A?.id!==o.current.currentAnchorId){let l=A?.id||"";e?.scrollTop&&!A?.id&&(l=u),L(l)}},300);return r(),e?.addEventListener("scroll",r,{passive:!0}),()=>{e?.addEventListener("scroll",r)}},[]);const k=e=>{const r=document.getElementById(R),c=r?.querySelectorAll("[id]")||[],x=Array.from(c).findIndex(t=>String(t.id)===String(e)),a=c[x];a&&(L(e),o.current.currentAnchorId=e,o.current.scrolling=!0,setTimeout(()=>{o.current.scrolling=!1},1e3),r?.scrollTo({top:a?.offsetTop||0-(r?.offsetTop||0),behavior:"smooth"}))},b=()=>{Object.keys(h).forEach(e=>{h[e].expanded=!0}),g({...h})},j=n.useMemo(()=>_.debounce(async()=>{const e=o.current.searchValue;if(!e){v(null);return}const r=o.current.anchorList||[],c=[],x=(a,t="")=>{a.forEach(u=>{u?.name?.indexOf(e)>-1&&c.push(u),u.children&&x(u.children,u.id)})};x(r),v(c)},200),[]),w=n.useMemo(()=>E?s.jsxRuntimeExports.jsxs(s.jsxRuntimeExports.Fragment,{children:[s.jsxRuntimeExports.jsxs("div",{className:"anchor-menu-title",children:[s.jsxRuntimeExports.jsx("div",{className:"title",children:E}),s.jsxRuntimeExports.jsxs("div",{className:"opera-area",children:[m&&G&&s.jsxRuntimeExports.jsxs(s.jsxRuntimeExports.Fragment,{children:[s.jsxRuntimeExports.jsx(U.PreviewOpen,{onClick:b}),s.jsxRuntimeExports.jsx("div",{className:"split-line"})]}),s.jsxRuntimeExports.jsx("div",{onClick:()=>M(!0),children:i==="left"?s.jsxRuntimeExports.jsx(F.ToLeft,{}):s.jsxRuntimeExports.jsx(B.ToRight,{})})]})]}),H&&s.jsxRuntimeExports.jsx(X.Search,{size:"small",value:N,onChange:e=>{O(e),o.current.searchValue=e,j()},onClickRightIcon:j,onEnter:j,onClear:()=>{O(""),o.current.searchValue="",v(null)},placeholder:J("pleaseEnter"),style:{padding:"0 4px",marginBottom:"6px"}})]}):null,[E,m,N,b,j]),P=n.useMemo(()=>{if(!d?.length)return null;if(T)return s.jsxRuntimeExports.jsx("div",{className:"collapse-icon-area",onClick:()=>M(!1),children:i==="left"?s.jsxRuntimeExports.jsx(B.ToRight,{}):s.jsxRuntimeExports.jsx(F.ToLeft,{})});const e=f||d;return s.jsxRuntimeExports.jsxs("div",{className:y("anchor-menu-list",I),style:{width:p?`${p}px`:"140px"},children:[w,e.map((r,c)=>s.jsxRuntimeExports.jsx(Q.default,{data:r,currentAnchorId:C,handleClick:k,isTree:f?!1:m,anchorMap:h,setAnchorMap:g,customPrefixIcon:$,onlyOneLevel:!!f},r?.id))]})},[d,C,I,k,m,w,h,$,T,f]);return s.jsxRuntimeExports.jsxs("div",{className:y(`${S.$prefixCls}-anchor`,z,{[`${S.$prefixCls}-anchor-${i}`]:i}),style:W,children:[i==="left"&&P,s.jsxRuntimeExports.jsx("div",{id:R,className:y("anchor-scroll",D),style:{paddingLeft:i==="left"?V:"0",paddingRight:i==="right"?V:"0"},children:q.children}),i==="right"&&P]})};exports.default=ee;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const s=require("../_virtual/jsx-runtime.js"),n=require("react"),y=require("clsx"),S=require("../GlobalContext/constant.js"),U=require("./anchorMenu/index.js"),F=require("../node_modules/@para-ui/icons/ToRight/index.js"),_=require("../node_modules/@para-ui/icons/ToLeft/index.js"),X=require("../node_modules/@para-ui/icons/PreviewOpen/index.js"),Y=require("../Search/index.js"),Z=require("../GlobalContext/useFormatMessage.js"),ee=require("./lang/index.js"),D=require("@snack-kit/lib");;/* empty css */const se=q=>{const{style:W,className:z,title:E="",scrollId:R=`${S.$prefixCls}-anchor-scroll-id`,list:d=[],listClassName:I,scrollClassName:G,placement:i="right",allExpanded:H=!0,search:J=!1,customPrefixIcon:C,listWidth:p}=q,K=Z.default("Anchor",ee.default),[L,M]=n.useState(""),[m,Q]=n.useState(!1),[h,g]=n.useState({}),[T,$]=n.useState(!1),[N,O]=n.useState(""),[f,v]=n.useState(null),o=n.useRef({currentAnchorId:"",anchorList:d,anchorMap:{},searchValue:"",scrolling:!1}),V=T?"50px":p?`${p+20}px`:"160px";n.useEffect(()=>{o.current.anchorList=d;const e={};let r=!1;const c=(x,l="")=>{x.forEach(t=>{(t?.expanded===void 0||t?.expanded===null)&&(t.expanded=!1),l&&(t.parentId=l),e[t.id]=t,t.children&&(r=!0,c(t.children,t.id))})};c(d),Q(r),o.current.anchorMap=e,g(e)},[d]),n.useEffect(()=>{const e=document.getElementById(R),r=D.Throttle(async()=>{if(o.current.scrolling)return;const c=e?.querySelectorAll("[id]")||[],l=Array.from(c).map(a=>{const B=a;return{id:B.id,offsetTop:B.offsetTop-(e?.offsetTop||0)}});let t=0,u="";const A=l.find(a=>(t<a.offsetTop&&(t=a.offsetTop,u=a.id),a.offsetTop>=(e?.scrollTop||0)));if(A?.id!==o.current.currentAnchorId){let a=A?.id||"";e?.scrollTop&&!A?.id&&(a=u),M(a)}},300);return r(),e?.addEventListener("scroll",r,{passive:!0}),()=>{e?.addEventListener("scroll",r)}},[]);const b=e=>{const r=document.getElementById(R),c=r?.querySelectorAll("[id]")||[],x=Array.from(c).findIndex(t=>String(t.id)===String(e)),l=c[x];l&&(M(e),o.current.currentAnchorId=e,o.current.scrolling=!0,setTimeout(()=>{o.current.scrolling=!1},1e3),r?.scrollTo({top:l?.offsetTop||0-(r?.offsetTop||0),behavior:"smooth"}))},k=()=>{Object.keys(h).forEach(e=>{h[e].expanded=!0}),g({...h})},j=n.useMemo(()=>D.Debounce(async()=>{const e=o.current.searchValue;if(!e){v(null);return}const r=o.current.anchorList||[],c=[],x=(l,t="")=>{l.forEach(u=>{u?.name?.indexOf(e)>-1&&c.push(u),u.children&&x(u.children,u.id)})};x(r),v(c)},200),[]),w=n.useMemo(()=>E?s.jsxRuntimeExports.jsxs(s.jsxRuntimeExports.Fragment,{children:[s.jsxRuntimeExports.jsxs("div",{className:"anchor-menu-title",children:[s.jsxRuntimeExports.jsx("div",{className:"title",children:E}),s.jsxRuntimeExports.jsxs("div",{className:"opera-area",children:[m&&H&&s.jsxRuntimeExports.jsxs(s.jsxRuntimeExports.Fragment,{children:[s.jsxRuntimeExports.jsx(X.PreviewOpen,{onClick:k}),s.jsxRuntimeExports.jsx("div",{className:"split-line"})]}),s.jsxRuntimeExports.jsx("div",{onClick:()=>$(!0),children:i==="left"?s.jsxRuntimeExports.jsx(_.ToLeft,{}):s.jsxRuntimeExports.jsx(F.ToRight,{})})]})]}),J&&s.jsxRuntimeExports.jsx(Y.Search,{size:"small",value:N,onChange:e=>{O(e),o.current.searchValue=e,j()},onClickRightIcon:j,onEnter:j,onClear:()=>{O(""),o.current.searchValue="",v(null)},placeholder:K("pleaseEnter"),style:{padding:"0 4px",marginBottom:"6px"}})]}):null,[E,m,N,k,j]),P=n.useMemo(()=>{if(!d?.length)return null;if(T)return s.jsxRuntimeExports.jsx("div",{className:"collapse-icon-area",onClick:()=>$(!1),children:i==="left"?s.jsxRuntimeExports.jsx(F.ToRight,{}):s.jsxRuntimeExports.jsx(_.ToLeft,{})});const e=f||d;return s.jsxRuntimeExports.jsxs("div",{className:y("anchor-menu-list",I),style:{width:p?`${p}px`:"140px"},children:[w,e.map((r,c)=>s.jsxRuntimeExports.jsx(U.default,{data:r,currentAnchorId:L,handleClick:b,isTree:f?!1:m,anchorMap:h,setAnchorMap:g,customPrefixIcon:C,onlyOneLevel:!!f},r?.id))]})},[d,L,I,b,m,w,h,C,T,f]);return s.jsxRuntimeExports.jsxs("div",{className:y(`${S.$prefixCls}-anchor`,z,{[`${S.$prefixCls}-anchor-${i}`]:i}),style:W,children:[i==="left"&&P,s.jsxRuntimeExports.jsx("div",{id:R,className:y("anchor-scroll",G),style:{paddingLeft:i==="left"?V:"0",paddingRight:i==="right"?V:"0"},children:q.children}),i==="right"&&P]})};exports.default=se;
2
2
  //# sourceMappingURL=index.js.map
@@ -18,8 +18,8 @@ export interface AnchorProps {
18
18
  style?: React.CSSProperties;
19
19
  /** 类名 */
20
20
  className?: string;
21
- /** 标题 */
22
- title?: string;
21
+ /** 标题(R6 §6 类型放宽:string → ReactNode,支持嵌入徽标/计数/动态状态文本;string 是 ReactNode 子集,完全向后兼容) */
22
+ title?: ReactNode;
23
23
  /** 滚动盒子Id */
24
24
  scrollId?: string;
25
25
  /** 子元素 */
@@ -31,8 +31,12 @@ export interface AnchorProps {
31
31
  /** 位置 */
32
32
  placement?: 'left' | 'right';
33
33
  /** 默认展示的锚点 */
34
- /** 自定义前缀符号 */
35
- customPrefixIcon?: ReactNode;
34
+ /**
35
+ * 自定义前缀符号(R6 §6 类型放宽):
36
+ * - 静态 ReactNode — 所有目录项共用同一前缀图标(原行为)
37
+ * - 函数形式 `(item, isActive) => ReactNode` — 按当前激活态返回不同 ReactNode(墨水点指示器等激活态联动场景);函数版本每次激活变化触发 list 重渲染,内部 AnchorListMemo 已优化
38
+ */
39
+ customPrefixIcon?: ReactNode | ((item: AnchorItem, isActive: boolean) => ReactNode);
36
40
  /** 全部展开功能是否开启 */
37
41
  allExpanded?: boolean;
38
42
  /** 是否带目录搜索 */
@@ -0,0 +1,216 @@
1
+ {
2
+ "name": "Argv",
3
+ "category": "Data Entry",
4
+ "description": "动态参数键值对编辑器。用户可以增删行、编辑每行的 key/value,value 支持多类型(string/number/boolean/object)。典型场景:命令行参数配置、环境变量编辑、动态配置项。**重要:这是一个'对象 ⇄ 列表'双形态组件,内部数据形态是 IArgvItem[],外部数据形态可以是对象(Record<string,any>)或列表(IArgvItem[]),通过两套不同的 prop 通道分别接入(见 controlledChannels)**",
5
+ "semantic": {
6
+ "intent": [
7
+ "动态键值对编辑",
8
+ "参数配置",
9
+ "可增删行的表单"
10
+ ],
11
+ "useCases": [
12
+ "命令行参数配置面板(CLI argv 编辑)",
13
+ "环境变量编辑器(KEY=VALUE 列表)",
14
+ "HTTP Header / Query 参数编辑",
15
+ "动态配置项编辑(配置中心场景)",
16
+ "脚本变量定义"
17
+ ],
18
+ "riskLevel": "normal"
19
+ },
20
+ "protocolSummary": "**双形态受控对**:外部可用 **对象形态**(defaultValue: Record<string,any> + onChange: (val: Record<string,any>) => void,**onChange 防抖 200ms**)或 **列表形态**(list: IArgvItem[] + onListChange: (val: IArgvItem[]) => void,**无防抖**)接入数据。defaultValue 仅 mount + 引用变化时灌入(不受控);list 是受控通道(每次变化都会被同步)。两套通道可同时存在(各自独立 fire)。**无 value/values prop,无 schema/argSchema prop——这是常见误解**",
21
+ "controlledChannels": {
22
+ "objectMode": {
23
+ "in": "defaultValue: Record<string, any>",
24
+ "out": "onChange: (val: Record<string, any>) => void",
25
+ "behavior": "**非受控**:defaultValue 引用变化时(useEffect 依赖)重置内部 state,父层 setState 后再传入相同引用不会重置。onChange 内部 200ms 防抖,返回值已经 formatDataToObject 转成普通对象(丢弃空 key 项)",
26
+ "whenToUse": "外部数据天然是对象(API 返回的 config 对象、env vars 对象),且不需要严格受控(用户编辑过程中父层不需要插队覆盖)"
27
+ },
28
+ "listMode": {
29
+ "in": "list: IArgvItem[]",
30
+ "out": "onListChange: (val: IArgvItem[]) => void",
31
+ "behavior": "**受控**:list 每次变化都会被同步进内部 state(useEffect 依赖 list 引用)。onListChange 无防抖,每次按键 / 增删行立即 fire,返回原始 IArgvItem[](保留空 key 项,保留类型元数据)",
32
+ "whenToUse": "需要保留输入过程中间态(空 key 行、未填值)、需要保留类型元数据(dataType=string/number/boolean/object)、或父层做严格受控(每次输入都过父层 reducer)"
33
+ },
34
+ "bothModes": "list 和 defaultValue 可以同时传(list 会覆盖 defaultValue 的初始化效果);onChange 和 onListChange 可同时监听,两个回调都会触发,**但 onChange 因防抖会延迟 200ms 且只回传对象形态**"
35
+ },
36
+ "dataFlow": {
37
+ "objectToList": "**formatObjectToData(obj: Record<string,any>): IArgvItem[]** — Object.keys 遍历, 每个 [k,v] 转换成 IArgvItem(自动推断 dataType: typeof v)。导出函数,可在父层提前调用",
38
+ "listToObject": "**formatDataToObject(list: IArgvItem[]): Record<string,any>** — 遍历 list, 跳过 item.key 为空的项, 用 item.key 作为对象 key, formatGeneratorToData 还原 value。导出函数",
39
+ "validate": "**checkArgvData(list: IArgvItem[], intl: Function): { error: boolean, detail: Record<string,string>[] }** — 校验每行 key 非空 + value 格式正确,返回的 detail 可以直接喂给 errors prop"
40
+ },
41
+ "variants": {
42
+ "default": {
43
+ "meaning": "默认样式(无 variant 切换,样式由 size/disabled 等控制)"
44
+ }
45
+ },
46
+ "states": [
47
+ "default",
48
+ "disabled",
49
+ "error"
50
+ ],
51
+ "idealProps": {
52
+ "list": {
53
+ "type": "IArgvItem[]",
54
+ "description": "**受控形态的数据通道**。每项结构: `{ key: string, data: IDataGeneratorValue }`,其中 `IDataGeneratorValue = { dataType: 'string' | 'number' | 'boolean' | 'object', data: any }`。**与 onListChange 配对使用,无防抖**。如果同时传了 defaultValue,list 优先级更高(list 引用变化会覆盖)",
55
+ "shape": {
56
+ "key": "string — 参数名(显示在左侧 TextField)。允许空字符串,但 formatDataToObject 转对象时会被跳过",
57
+ "data": "IDataGeneratorValue — 参数值容器,含 dataType (类型选择器) + data (实际值,类型与 dataType 联动)"
58
+ }
59
+ },
60
+ "onListChange": {
61
+ "type": "(val: IArgvItem[]) => void",
62
+ "description": "**列表形态变化回调,无防抖**。每次按键 / 增删行 / 类型切换都立即触发。返回完整 IArgvItem[](保留空 key 项)。如果只想拿对象形态结果,用 onChange",
63
+ "pairsWith": "list"
64
+ },
65
+ "defaultValue": {
66
+ "type": "Record<string, any>",
67
+ "description": "**对象形态的初始值,非受控**。组件 mount 时 + 引用变化时(useEffect 依赖)灌入,父层用 setState 重新传相同引用不会重置(常见坑:误以为 defaultValue 是受控,见 commonMisconceptions.M1)。内部用 formatObjectToData 自动推断每个 value 的 dataType",
68
+ "controlled": false
69
+ },
70
+ "onChange": {
71
+ "type": "(val: Record<string, any>) => void",
72
+ "description": "**对象形态变化回调,内部 200ms 防抖**。返回值已经 formatDataToObject 转成普通对象(item.key 空的行被跳过, item.data 还原成对应 dataType 的原始值)。**适合保存到 state 但不适合做严格受控**(防抖期间输入和 state 不同步)",
73
+ "pairsWith": "defaultValue"
74
+ },
75
+ "errors": {
76
+ "type": "Record<string, string>[]",
77
+ "description": "**按 list 行索引对齐**(errors[0] 对应 list[0],以此类推)。**不是按 key 名映射**(常见误解,见 commonMisconceptions.M3)。每项结构 `{ key?: string, value?: string }`: `key` 字段填非空字符串时,该行左侧 TextField 红框 + 显示该字符串作为 helperText;`value` 字段填非空字符串时,该行右侧 DataGenerator 红框 + 显示该字符串。如不需要某行/某列显示错误就不填或填空字符串",
78
+ "shape": {
79
+ "[index].key": "string | undefined — 该行 key 列的错误文案(空字符串/undefined = 无错误)",
80
+ "[index].value": "string | undefined — 该行 value 列的错误文案"
81
+ },
82
+ "tip": "直接消费 checkArgvData(list, intl).detail 即可,无需手工拼装"
83
+ },
84
+ "disabled": {
85
+ "type": "boolean",
86
+ "default": false,
87
+ "description": "**整体禁用**:禁用所有 TextField + DataGenerator,屏蔽新增按钮(点击 add 时 early return)、屏蔽删除按钮(点击 del 时 early return)。不存在子字段单独禁用——若需更细颗粒度,改用底层 TextField + DataGenerator 自行编排"
88
+ },
89
+ "label": {
90
+ "type": "LabelProps['label']",
91
+ "description": "顶部标题文本(string 或 ReactNode)。不传时显示 i18n 默认值('环境变量' / 'Environment Variable')。注意这是顶层 label,**不是每行的 label**(每行只有 key/value 两个 TextField,无独立 label 位)"
92
+ },
93
+ "labelProps": {
94
+ "type": "LabelProps",
95
+ "description": "传给顶部 Label 组件的完整 props(覆盖默认 label),用于调整 required / tooltip / labelWidth 等。`label` 字段会被外层 label prop 覆盖(外层优先)"
96
+ },
97
+ "className": {
98
+ "type": "string",
99
+ "description": "外层 div 的 className"
100
+ },
101
+ "style": {
102
+ "type": "React.CSSProperties",
103
+ "description": "外层 div 的 style"
104
+ }
105
+ },
106
+ "commonMisconceptions": {
107
+ "M1": {
108
+ "wrong": "把 defaultValue 当受控 prop 用: `<Argv defaultValue={state} onChange={setState} />` 期望父层 setState 后 Argv 内部跟着更新",
109
+ "result": "defaultValue 只在引用变化时灌入,父层 setState 后 React 重渲传入新引用确实会重置——但**正在编辑的行会被清空**(useEffect 重跑 formatObjectToData),导致用户输入丢失",
110
+ "fix": "需要严格受控就用 **list + onListChange**(列表形态、受控、无防抖);只需保存最终结果用 defaultValue + onChange(对象形态、非受控、防抖)。**不要混用**"
111
+ },
112
+ "M2": {
113
+ "wrong": "想给 Argv 传 schema / argSchema 限制可选 key 列表或字段类型: `<Argv schema={...} />`",
114
+ "result": "Argv **不存在 schema / argSchema prop**——传入会被 TypeScript 直接报错。Argv 是自由键值对编辑器,没有内置 schema 约束",
115
+ "fix": "需要约束 key 白名单:在父层 onListChange 里过滤;需要约束 value 类型:Argv 内部已有 DataGenerator 让用户选 dataType(string/number/boolean/object);需要强 schema(必填 + 正则等):换用 FieldForm + FieldForm.Item rules"
116
+ },
117
+ "M3": {
118
+ "wrong": "errors 按 key 名映射: `errors={{ username: '必填', email: '格式错' }}` (Record<string,string>)",
119
+ "result": "类型不匹配——errors 是 `Record<string, string>[]` 数组,**按 list 行索引对齐**,不是按字段名映射。传错形态会导致 errors[index] 取值为 undefined,所有行都不显示错误",
120
+ "fix": "用 `errors={[{key: '', value: '必填'}, {key: '重复', value: ''}]}` 或直接 `errors={checkArgvData(list, intl).detail}`(detail 已经是正确形态)"
121
+ },
122
+ "M4": {
123
+ "wrong": "想用 `value` / `values` prop 做受控: `<Argv value={data} onChange={setData} />`",
124
+ "result": "Argv **无 value 也无 values prop**——TypeScript 报错。常见的受控套路在 Argv 上不直接成立",
125
+ "fix": "Argv 的受控通道叫 **list + onListChange**(命名上 list 替代了 value 角色,IArgvItem[] 替代了 普通对象)。如果父层数据是普通对象,可以在父层用 formatObjectToData / formatDataToObject 工具函数转换"
126
+ },
127
+ "M5": {
128
+ "wrong": "同时监听 onChange 和 onListChange 并期望它们的回调时机一致",
129
+ "result": "**onListChange 立即触发,onChange 防抖 200ms**——按键过程中两个 callback 看到的数据可能短暂不一致,且 onChange 收到的是对象形态(过滤了空 key 项),onListChange 收到的是列表形态(保留全部)",
130
+ "fix": "通常只监听一个:严格受控用 onListChange,只关心最终对象结果用 onChange。如必须两个都监听,理解 200ms 时差是预期行为"
131
+ }
132
+ },
133
+ "completeExample": "// 标准用法:list 受控模式 + errors 校验\nimport React, { useState, useMemo } from 'react';\nimport Argv, { IArgvItem, checkArgvData } from '@para-ui/core/Argv';\nimport useFormatMessage from '@para-ui/core/GlobalContext/useFormatMessage';\n\nconst Demo: React.FC = () => {\n const [list, setList] = useState<IArgvItem[]>([\n { key: 'NODE_ENV', data: { dataType: 'string', data: 'production' } },\n { key: 'PORT', data: { dataType: 'number', data: 3000 } },\n { key: 'DEBUG', data: { dataType: 'boolean', data: false } }\n ]);\n const intl = useFormatMessage('Argv');\n // 校验:返回 { error: boolean, detail: errors 形态 }\n const validation = useMemo(() => checkArgvData(list, intl), [list, intl]);\n return (\n <div>\n <Argv\n label='环境变量配置'\n list={list}\n onListChange={setList}\n errors={validation.detail}\n />\n <button disabled={validation.error}>保存</button>\n </div>\n );\n};\nexport default Demo;",
134
+ "utilities": {
135
+ "formatObjectToData": {
136
+ "import": "import { formatObjectToData } from '@para-ui/core/Argv';",
137
+ "signature": "(data: Record<string, any>) => IArgvItem[]",
138
+ "purpose": "把普通对象转成 IArgvItem[](自动推断 dataType)。父层有对象形态数据但想用 list 受控通道时用"
139
+ },
140
+ "formatDataToObject": {
141
+ "import": "import { formatDataToObject } from '@para-ui/core/Argv';",
142
+ "signature": "(data: IArgvItem[]) => Record<string, any>",
143
+ "purpose": "把 IArgvItem[] 转回普通对象(跳过空 key,还原 dataType)。保存到后端时用"
144
+ },
145
+ "checkArgvData": {
146
+ "import": "import { checkArgvData } from '@para-ui/core/Argv';",
147
+ "signature": "(data: IArgvItem[], intl: Function) => { error: boolean, detail: Record<string,string>[] }",
148
+ "purpose": "内置校验:每行 key 非空 + value 格式正确。detail 可以直接喂给 errors prop"
149
+ }
150
+ },
151
+ "do": [
152
+ "需要严格受控(中途插队 / 实时同步):用 **list + onListChange**(列表形态、无防抖)",
153
+ "只需保存最终结果到父层 state:用 **defaultValue + onChange**(对象形态、200ms 防抖)",
154
+ "errors 直接消费 **checkArgvData(list, intl).detail**,无需手工拼装",
155
+ "保存到后端前用 **formatDataToObject(list)** 转成对象形态",
156
+ "理解'对象 ⇄ 列表'两套通道是平级且独立的,不要混用"
157
+ ],
158
+ "dont": [
159
+ "**不要**给 Argv 传 schema / argSchema / value / values prop——这些都不存在(见 commonMisconceptions M2/M4)",
160
+ "**不要**把 defaultValue 当受控 prop 用——会导致编辑过程中数据被清空(M1)",
161
+ "**不要**按 key 名映射 errors——errors 按行索引对齐(M3)",
162
+ "**不要**期望 onChange 和 onListChange 时机一致——前者有 200ms 防抖(M5)",
163
+ "参数过多(>10 行)不分组用同一个 Argv——考虑分多个 Argv 或换 FieldForm"
164
+ ],
165
+ "events": {
166
+ "onChange": {
167
+ "signature": "(val: Record<string, any>) => void",
168
+ "asyncSupported": false,
169
+ "examples": [
170
+ "对象形态回调,内部 200ms 防抖,适合保存到 state 但不适合严格受控",
171
+ "返回值已经 formatDataToObject 转换,跳过空 key 项,还原 dataType 原始值",
172
+ "async 场景可直接 await 包裹:const save = async (val) => { await api.save(val); setDirty(false); }"
173
+ ],
174
+ "commonMistakes": [
175
+ "期望 onChange 和 onListChange 在同一帧触发——onChange 有 200ms 防抖,onListChange 立即触发,两者不同步",
176
+ "期望 onChange 回传 IArgvItem[] 列表形态——onChange 返回普通对象 Record<string,any>,要列表形态用 onListChange",
177
+ "把 onChange 当受控 prop 配合 defaultValue 用——defaultValue 非受控,引用不变不触发重置,严格受控用 list+onListChange"
178
+ ]
179
+ },
180
+ "onListChange": {
181
+ "signature": "(val: IArgvItem[]) => void",
182
+ "asyncSupported": false,
183
+ "examples": [
184
+ "每次按键 / 增删行 / 类型切换立即触发,无防抖,适合严格受控场景",
185
+ "返回完整 IArgvItem[](保留空 key 行),可直接回传给 list prop 实现受控循环",
186
+ "结合 checkArgvData 做实时校验:onListChange={val => { setList(val); setErrors(checkArgvData(val, intl).detail); }}"
187
+ ],
188
+ "commonMistakes": [
189
+ "期望 onListChange 返回对象形态——它返回 IArgvItem[],要对象形态用 onChange 或 formatDataToObject",
190
+ "onListChange 频率比 onChange 高,如果 handler 有重计算逻辑应加 useMemo/useCallback 避免性能问题",
191
+ "同时传 list 和 defaultValue 但期望 onListChange 只触发一次——list 引用变化会触发,defaultValue 也会灌入,两套通道独立"
192
+ ]
193
+ }
194
+ },
195
+ "typescriptPitfalls": [
196
+ {
197
+ "issue": "errors prop 是按行索引对齐的数组,不是按 key 名映射的对象",
198
+ "wrong": "// 错误:按字段名映射\n<Argv errors={{ NODE_ENV: '必填', PORT: '格式错' }} /> // TS 类型报错:期望数组",
199
+ "right": "// 正确:按 list 行索引对齐\n<Argv errors={[{ key: '', value: '必填' }, { key: '重复', value: '' }]} />\n// 或直接消费 checkArgvData 结果\n<Argv errors={checkArgvData(list, intl).detail} />"
200
+ },
201
+ {
202
+ "issue": "Argv 无 value / values prop,受控通道叫 list + onListChange",
203
+ "wrong": "// antd/MUI 风格受控写法\n<Argv value={data} onChange={setData} /> // TS 报错:value 不在 ArgvProps",
204
+ "right": "// para-ui Argv 受控写法\n<Argv list={list} onListChange={setList} />"
205
+ },
206
+ {
207
+ "issue": "IArgvItem.data.dataType 是字符串联合类型,不能传任意字符串",
208
+ "wrong": "const item: IArgvItem = { key: 'PORT', data: { dataType: 'int', data: 3000 } }; // 'int' 不在联合类型",
209
+ "right": "const item: IArgvItem = { key: 'PORT', data: { dataType: 'number', data: 3000 } }; // 只有 'string'|'number'|'boolean'|'object'"
210
+ }
211
+ ],
212
+ "mapping": {
213
+ "realComponent": "Argv",
214
+ "adapter": null
215
+ }
216
+ }
@@ -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"),u=require("react"),N=require("../../TextField/index.js"),M=require("../../Select/index.js"),y=require("./config.js"),D=require("../../node_modules/@para-ui/icons/ExpandPart/index.js"),w=require("../../InputNumber/index.js"),G=require("../../Modal/index.js"),I=require("../../Message/index.js"),_=require("../../GlobalContext/useFormatMessage.js"),O=require("../lang/index.js"),F=require("@paraview/lib");;/* empty css */const J=e=>{const{defaultValue:i,value:t,disabled:o,onChange:d,error:p,helperText:f,placeholderTextField:T}=e,E=_.default("Argv",O.default),[s,x]=u.useState({dataType:"string",data:""}),[S,m]=u.useState(!1),[g,j]=u.useState(""),v=u.useRef({dataMapping:{...y.defaultInputValueMapping},uuid:F.UUID()});u.useEffect(()=>{i!==void 0&&x(i)},[]),u.useEffect(()=>{t!==void 0&&x(t)},[t]);const q=a=>{const r=a;if(r!==s.dataType){const h=v.current.dataMapping[r]??"",b={...s,dataType:r,data:h};x(b),d&&d(b)}},c=a=>{const r={...s,data:a};x(r),d&&d(r);const l=s.dataType,h=v.current.dataMapping;h[l]=a},C=u.useMemo(()=>{const{dataType:a,data:r}=s;if(a==="number"){const l=Number(r);return n.jsxRuntimeExports.jsx(w.InputNumber,{placeholder:T,disabled:o,className:"data-input",value:l,onChange:c,error:p,helperText:f})}return a==="boolean"?n.jsxRuntimeExports.jsx(M.default,{disabled:o,className:"data-input",list:y.booleanSelectList,value:r,onChange:c,error:p,helperText:f}):n.jsxRuntimeExports.jsx(N.TextField,{placeholder:T,className:"data-input",multiline:!0,value:r,rightIcon:n.jsxRuntimeExports.jsx(D.ExpandPart,{}),onClickIcon:()=>{m(!0),j(r)},onChange:l=>c(l.target.value),rows:1,resize:!1,error:p,helperText:f})},[s,c,p,f]),R=()=>{if(s.dataType==="string"&&(c(g),m(!1)),s.dataType==="object")try{const a=JSON.parse(g);c(g),m(!1)}catch{I.Message.warn(E("formatErrorJson"))}};return n.jsxRuntimeExports.jsxs("div",{className:"argv-data-generator",children:[n.jsxRuntimeExports.jsxs("div",{className:"data-generator-content",children:[n.jsxRuntimeExports.jsx(M.default,{disabled:o,className:"datatype-select",list:y.dataTypeSelectList,value:s?.dataType,onChange:q}),C]}),n.jsxRuntimeExports.jsx(G.Modal,{open:S,hideHeader:!0,size:"auto",onCancel:()=>m(!1),onOk:R,children:n.jsxRuntimeExports.jsx("div",{style:{width:"600px",height:"auto",paddingTop:"20px"},children:n.jsxRuntimeExports.jsx(N.TextField,{disabled:o,multiline:!0,rows:12,value:g||"",onChange:a=>j(a.target.value)})})})]})},V=e=>{const{dataType:i,data:t}=e;switch(i){case"number":return!isNaN(Number(t));case"boolean":return!0;case"string":return!0;case"object":try{return JSON.parse(t),!0}catch{return!1}default:return!1}},k=e=>{if(!e)return"";const{dataType:i,data:t}=e;switch(i){case"number":return Number(t);case"boolean":return!!t;case"string":return t;case"object":try{return JSON.parse(t)}catch{return{}}default:return t}},$=e=>typeof e=="number"?{dataType:"number",data:e}:typeof e=="boolean"?{dataType:"boolean",data:e}:typeof e=="string"?{dataType:"string",data:e}:typeof e=="object"?{dataType:"object",data:JSON.stringify(e)}:{dataType:"string",data:""};exports.checkGeneratorData=V;exports.default=J;exports.formatDataToGenerator=$;exports.formatGeneratorToData=k;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const n=require("../../_virtual/jsx-runtime.js"),u=require("react"),N=require("../../TextField/index.js"),M=require("../../Select/index.js"),y=require("./config.js"),D=require("../../node_modules/@para-ui/icons/ExpandPart/index.js"),w=require("../../InputNumber/index.js"),G=require("../../Modal/index.js"),I=require("../../Message/index.js"),_=require("../../GlobalContext/useFormatMessage.js"),O=require("../lang/index.js"),F=require("@snack-kit/lib");;/* empty css */const J=e=>{const{defaultValue:i,value:t,disabled:o,onChange:d,error:p,helperText:f,placeholderTextField:T}=e,E=_.default("Argv",O.default),[s,x]=u.useState({dataType:"string",data:""}),[S,m]=u.useState(!1),[g,j]=u.useState(""),b=u.useRef({dataMapping:{...y.defaultInputValueMapping},uuid:F.UUID()});u.useEffect(()=>{i!==void 0&&x(i)},[]),u.useEffect(()=>{t!==void 0&&x(t)},[t]);const q=a=>{const r=a;if(r!==s.dataType){const h=b.current.dataMapping[r]??"",v={...s,dataType:r,data:h};x(v),d&&d(v)}},c=a=>{const r={...s,data:a};x(r),d&&d(r);const l=s.dataType,h=b.current.dataMapping;h[l]=a},C=u.useMemo(()=>{const{dataType:a,data:r}=s;if(a==="number"){const l=Number(r);return n.jsxRuntimeExports.jsx(w.InputNumber,{placeholder:T,disabled:o,className:"data-input",value:l,onChange:c,error:p,helperText:f})}return a==="boolean"?n.jsxRuntimeExports.jsx(M.default,{disabled:o,className:"data-input",list:y.booleanSelectList,value:r,onChange:c,error:p,helperText:f}):n.jsxRuntimeExports.jsx(N.TextField,{placeholder:T,className:"data-input",multiline:!0,value:r,rightIcon:n.jsxRuntimeExports.jsx(D.ExpandPart,{}),onClickIcon:()=>{m(!0),j(r)},onChange:l=>c(l.target.value),rows:1,resize:!1,error:p,helperText:f})},[s,c,p,f]),R=()=>{if(s.dataType==="string"&&(c(g),m(!1)),s.dataType==="object")try{const a=JSON.parse(g);c(g),m(!1)}catch{I.Message.warn(E("formatErrorJson"))}};return n.jsxRuntimeExports.jsxs("div",{className:"argv-data-generator",children:[n.jsxRuntimeExports.jsxs("div",{className:"data-generator-content",children:[n.jsxRuntimeExports.jsx(M.default,{disabled:o,className:"datatype-select",list:y.dataTypeSelectList,value:s?.dataType,onChange:q}),C]}),n.jsxRuntimeExports.jsx(G.Modal,{open:S,hideHeader:!0,size:"auto",onCancel:()=>m(!1),onOk:R,children:n.jsxRuntimeExports.jsx("div",{style:{width:"600px",height:"auto",paddingTop:"20px"},children:n.jsxRuntimeExports.jsx(N.TextField,{disabled:o,multiline:!0,rows:12,value:g||"",onChange:a=>j(a.target.value)})})})]})},V=e=>{const{dataType:i,data:t}=e;switch(i){case"number":return!isNaN(Number(t));case"boolean":return!0;case"string":return!0;case"object":try{return JSON.parse(t),!0}catch{return!1}default:return!1}},k=e=>{if(!e)return"";const{dataType:i,data:t}=e;switch(i){case"number":return Number(t);case"boolean":return!!t;case"string":return t;case"object":try{return JSON.parse(t)}catch{return{}}default:return t}},z=e=>typeof e=="number"?{dataType:"number",data:e}:typeof e=="boolean"?{dataType:"boolean",data:e}:typeof e=="string"?{dataType:"string",data:e}:typeof e=="object"?{dataType:"object",data:JSON.stringify(e)}:{dataType:"string",data:""};exports.checkGeneratorData=V;exports.default=J;exports.formatDataToGenerator=z;exports.formatGeneratorToData=k;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { IDataGeneratorValue } from './dataGenerator';
3
3
  import { LabelProps } from '../Label';
4
- import { IObject } from '../Utils/type';
5
4
  export interface IArgvItem {
6
5
  key: string;
7
6
  data: IDataGeneratorValue;
@@ -14,11 +13,11 @@ export interface ArgvProps {
14
13
  /** 禁用 */
15
14
  disabled?: boolean;
16
15
  /** 默认值 不受控 */
17
- defaultValue?: IObject;
16
+ defaultValue?: Record<string, unknown>;
18
17
  /** label */
19
18
  label?: LabelProps['label'];
20
19
  /** 改变值 */
21
- onChange?: (val: IObject) => void;
20
+ onChange?: (val: Record<string, unknown>) => void;
22
21
  /** 格式化的列表 */
23
22
  list?: IArgvItem[];
24
23
  /** 改变值 */
@@ -30,6 +29,6 @@ export interface ArgvProps {
30
29
  }
31
30
  declare const Argv: (props: ArgvProps) => import("react/jsx-runtime").JSX.Element;
32
31
  export default Argv;
33
- export declare const formatObjectToData: (data: IObject) => IArgvItem[];
34
- export declare const formatDataToObject: (data: IArgvItem[]) => IObject;
35
- export declare const checkArgvData: (data: IArgvItem[], intl: Function) => Record<string, any>;
32
+ export declare const formatObjectToData: (data: Record<string, unknown>) => IArgvItem[];
33
+ export declare const formatDataToObject: (data: IArgvItem[]) => Record<string, unknown>;
34
+ export declare const checkArgvData: (data: IArgvItem[], intl: Function) => Record<string, unknown>;
package/lib/Argv/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const e=require("../_virtual/jsx-runtime.js"),x=require("react"),S=require("clsx"),_=require("../GlobalContext/constant.js"),K=require("../GlobalContext/useFormatMessage.js"),J=require("@paraview/lib"),L=require("./lang/index.js"),P=require("./batchEdit/index.js"),j=require("./dataGenerator/index.js"),I=require("../Label/index.js"),B=require("../TextField/index.js"),U=require("../node_modules/@para-ui/icons/Delete/index.js"),w=require("../node_modules/@para-ui/icons/PlusCircleF/index.js"),N=require("../Utils/index.js");;/* empty css */const z=i=>{const{style:u,className:n,defaultValue:a,disabled:c,label:f,labelProps:h,errors:g,onChange:m,list:l,onListChange:k}=i,p=K.default("Argv",L.default),[s,v]=x.useState([]),T={key:"",data:{dataType:"string",data:""}};x.useEffect(()=>{if(!a||!N.isObject(a)){v([]);return}v(C(a))},[a]),x.useEffect(()=>{l!==void 0&&v(l)},[l]);const $=x.useMemo(()=>J.debounce(async r=>{const t=O(r);m&&m(t)},200),[]),E=r=>{v(r),k&&k(r),$(r)},A=()=>{c||(s.push({...T}),E([...s]))},q=r=>{c||(s.splice(r,1),E([...s]))},b=(r,t,o)=>{s[t]||(s[t]={...T}),s[t]={...s[t],[o]:r},E([...s])},M=x.useMemo(()=>e.jsxRuntimeExports.jsx("div",{className:"argv-label",children:e.jsxRuntimeExports.jsx(I.default,{label:f||p("environmentVariable"),...h})}),[f,h]),F=x.useMemo(()=>s.map((t,o)=>{const d=g?.[o]??{},y=d?.key||"",D=d?.value||"";return e.jsxRuntimeExports.jsx("div",{children:e.jsxRuntimeExports.jsxs("div",{className:"argv-item",children:[e.jsxRuntimeExports.jsx("div",{className:"argv-key",children:e.jsxRuntimeExports.jsx(B.TextField,{value:t?.key||"",placeholder:p("pleaseEnterKey"),onChange:R=>b(R.target.value,o,"key"),disabled:c,error:!!y,helperText:y})}),e.jsxRuntimeExports.jsx("div",{className:"middle-icon",children:":"}),e.jsxRuntimeExports.jsx("div",{className:"argv-value",children:e.jsxRuntimeExports.jsx(j.default,{value:t?.data,onChange:R=>b(R,o,"data"),disabled:c,error:!!D,helperText:D,placeholderTextField:p("pleaseEnterValue")})}),e.jsxRuntimeExports.jsx("div",{className:`argv-btn-del ${c?"disabled":""}`,children:e.jsxRuntimeExports.jsx(U.Delete,{onClick:()=>q(o)})})]},o)},o)}),[s,b,q]),V=()=>{if(!Array.isArray(s))return"";const r=s.map(t=>{const o=j.formatGeneratorToData(t.data);return{key:t.key||"",value:o}});try{return JSON.stringify(r,null,4)}catch{return""}},G=r=>{let t=[];try{t=JSON.parse(r)}catch{return[]}return Array.isArray(t)?t.map(d=>{const y=j.formatDataToGenerator(d?.value);return{key:d.key,data:y}}):[]};return e.jsxRuntimeExports.jsxs("div",{className:S(`${_.$prefixCls}-argv`,n,{}),style:u,children:[e.jsxRuntimeExports.jsx("div",{className:"btn-batch-edit",children:e.jsxRuntimeExports.jsx(P.default,{sourceData:s,dataToJson:V,jsonToData:G,onFinish:r=>{console.log(r,"BatchEdit===>"),E([...r])}})}),M,e.jsxRuntimeExports.jsx("div",{className:"argv-list",children:F}),e.jsxRuntimeExports.jsxs("div",{className:`argv-btn-add ${c?"disabled":""}`,onClick:A,children:[e.jsxRuntimeExports.jsx(w.PlusCircleF,{}),e.jsxRuntimeExports.jsx("span",{children:p("add")})]})]})},C=i=>{if(!N.isObject(i))return[];const u=Object.keys(i),n=[];return u.forEach(a=>{const c=j.formatDataToGenerator(i?.[a]);n.push({key:a,data:c})}),n},O=i=>{const u={};return i.forEach(n=>{if(n.key){const a=j.formatGeneratorToData(n.data);u[n.key]=a}}),u},H=(i,u)=>{const n=[];let a=!1;return i.forEach((c,f)=>{const{key:h,data:g}=c,m=!h,l=!j.checkGeneratorData(g);(m||l)&&(a=!0,n[f]={key:m?u("required"):"",value:l?u("formatError"):""})}),{error:a,detail:n}};exports.checkArgvData=H;exports.default=z;exports.formatDataToObject=O;exports.formatObjectToData=C;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const e=require("../_virtual/jsx-runtime.js"),x=require("react"),S=require("clsx"),_=require("../GlobalContext/constant.js"),K=require("../GlobalContext/useFormatMessage.js"),J=require("@snack-kit/lib"),L=require("./lang/index.js"),P=require("./batchEdit/index.js"),j=require("./dataGenerator/index.js"),I=require("../Label/index.js"),B=require("../TextField/index.js"),U=require("../node_modules/@para-ui/icons/Delete/index.js"),w=require("../node_modules/@para-ui/icons/PlusCircleF/index.js"),N=require("../Utils/index.js");;/* empty css */const z=i=>{const{style:l,className:n,defaultValue:a,disabled:c,label:f,labelProps:h,errors:g,onChange:m,list:u,onListChange:k}=i,p=K.default("Argv",L.default),[s,v]=x.useState([]),D={key:"",data:{dataType:"string",data:""}};x.useEffect(()=>{if(!a||!N.isObject(a)){v([]);return}v(C(a))},[a]),x.useEffect(()=>{u!==void 0&&v(u)},[u]);const A=x.useMemo(()=>J.Debounce(async r=>{const t=O(r);m&&m(t)},200),[]),E=r=>{v(r),k&&k(r),A(r)},M=()=>{c||(s.push({...D}),E([...s]))},T=r=>{c||(s.splice(r,1),E([...s]))},b=(r,t,o)=>{s[t]||(s[t]={...D}),s[t]={...s[t],[o]:r},E([...s])},$=x.useMemo(()=>e.jsxRuntimeExports.jsx("div",{className:"argv-label",children:e.jsxRuntimeExports.jsx(I.default,{label:f||p("environmentVariable"),...h})}),[f,h]),F=x.useMemo(()=>s.map((t,o)=>{const d=g?.[o]??{},y=d?.key||"",q=d?.value||"";return e.jsxRuntimeExports.jsx("div",{children:e.jsxRuntimeExports.jsxs("div",{className:"argv-item",children:[e.jsxRuntimeExports.jsx("div",{className:"argv-key",children:e.jsxRuntimeExports.jsx(B.TextField,{value:t?.key||"",placeholder:p("pleaseEnterKey"),onChange:R=>b(R.target.value,o,"key"),disabled:c,error:!!y,helperText:y})}),e.jsxRuntimeExports.jsx("div",{className:"middle-icon",children:":"}),e.jsxRuntimeExports.jsx("div",{className:"argv-value",children:e.jsxRuntimeExports.jsx(j.default,{value:t?.data,onChange:R=>b(R,o,"data"),disabled:c,error:!!q,helperText:q,placeholderTextField:p("pleaseEnterValue")})}),e.jsxRuntimeExports.jsx("div",{className:`argv-btn-del ${c?"disabled":""}`,children:e.jsxRuntimeExports.jsx(U.Delete,{onClick:()=>T(o)})})]},o)},o)}),[s,b,T]),V=()=>{if(!Array.isArray(s))return"";const r=s.map(t=>{const o=j.formatGeneratorToData(t.data);return{key:t.key||"",value:o}});try{return JSON.stringify(r,null,4)}catch{return""}},G=r=>{let t=[];try{t=JSON.parse(r)}catch{return[]}return Array.isArray(t)?t.map(d=>{const y=j.formatDataToGenerator(d?.value);return{key:d.key,data:y}}):[]};return e.jsxRuntimeExports.jsxs("div",{className:S(`${_.$prefixCls}-argv`,n,{}),style:l,children:[e.jsxRuntimeExports.jsx("div",{className:"btn-batch-edit",children:e.jsxRuntimeExports.jsx(P.default,{sourceData:s,dataToJson:V,jsonToData:G,onFinish:r=>{console.log(r,"BatchEdit===>"),E([...r])}})}),$,e.jsxRuntimeExports.jsx("div",{className:"argv-list",children:F}),e.jsxRuntimeExports.jsxs("div",{className:`argv-btn-add ${c?"disabled":""}`,onClick:M,children:[e.jsxRuntimeExports.jsx(w.PlusCircleF,{}),e.jsxRuntimeExports.jsx("span",{children:p("add")})]})]})},C=i=>{if(!N.isObject(i))return[];const l=Object.keys(i),n=[];return l.forEach(a=>{const c=j.formatDataToGenerator(i?.[a]);n.push({key:a,data:c})}),n},O=i=>{const l={};return i.forEach(n=>{if(n.key){const a=j.formatGeneratorToData(n.data);l[n.key]=a}}),l},H=(i,l)=>{const n=[];let a=!1;return i.forEach((c,f)=>{const{key:h,data:g}=c,m=!h,u=!j.checkGeneratorData(g);(m||u)&&(a=!0,n[f]={key:m?l("required"):"",value:u?l("formatError"):""})}),{error:a,detail:n}};exports.checkArgvData=H;exports.default=z;exports.formatDataToObject=O;exports.formatObjectToData=C;
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,133 @@
1
+ {
2
+ "name": "AutoBox",
3
+ "category": "Layout",
4
+ "description": "自适应容器,根据容器宽度自动计算可见项数量,超出部分折叠到'更多'下拉弹层中展示",
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
+ },
22
+ "states": [
23
+ "default",
24
+ "expanded"
25
+ ],
26
+ "idealProps": {
27
+ "list": {
28
+ "type": "array",
29
+ "description": "需要自适应容纳的子节点数组(ReactNode[]);事件挂在节点自身,AutoBox 不暴露 item-level onClick"
30
+ },
31
+ "showNum": {
32
+ "type": "number",
33
+ "description": "强制显示前 N 项(跳过自适应计算),溢出全部进'更多'"
34
+ },
35
+ "trigger": {
36
+ "type": "enum",
37
+ "values": [
38
+ "click",
39
+ "hover"
40
+ ],
41
+ "default": "click",
42
+ "description": "'更多'弹层触发方式"
43
+ },
44
+ "placement": {
45
+ "type": "string",
46
+ "default": "bottomLeft",
47
+ "description": "'更多'弹层位置(透传 Popover placement)"
48
+ },
49
+ "hideMore": {
50
+ "type": "boolean",
51
+ "default": false,
52
+ "description": "隐藏内置'更多'按钮(配 anchorEl + openMore 自管理外置触发器)"
53
+ },
54
+ "moreCustomize": {
55
+ "type": "ReactNode",
56
+ "description": "自定义'更多'触发节点,替换默认 More 图标按钮"
57
+ },
58
+ "openMore": {
59
+ "type": "boolean",
60
+ "default": false,
61
+ "description": "外部受控弹层显隐"
62
+ },
63
+ "onShowMore": {
64
+ "type": "function",
65
+ "description": "(bol: boolean) => void 是否有溢出项的状态回调"
66
+ },
67
+ "onCloseMore": {
68
+ "type": "function",
69
+ "description": "() => void 受控弹层关闭回调"
70
+ }
71
+ },
72
+ "do": [
73
+ "用于空间有限需要收纳溢出内容的场景",
74
+ "配合 Popover 展示更多",
75
+ "list 中每个 ReactNode 自行绑定点击事件——AutoBox 只做布局计算和'更多'收纳"
76
+ ],
77
+ "dont": [
78
+ "在固定宽度布局中滥用",
79
+ "列表项过多时不做分页",
80
+ "期望 AutoBox 暴露单项 onClick——事件需要挂在 list 元素自身上"
81
+ ],
82
+ "events": {
83
+ "onShowMore": {
84
+ "signature": "(bol: boolean) => void",
85
+ "asyncSupported": false,
86
+ "examples": [
87
+ "bol=true 表示当前有溢出项(list.length > morePos),可用于显示/隐藏外部操作按钮",
88
+ "bol=false 表示所有项都可见,无需显示外部'更多'入口",
89
+ "配合 hideMore + openMore 实现外置触发器:onShowMore={setHasMore},只在 hasMore 时渲染自定义按钮"
90
+ ],
91
+ "commonMistakes": [
92
+ "期望 onShowMore 返回具体溢出项数量——它只返回 boolean,溢出项数量需自行计算(list.length - morePos)",
93
+ "在 onShowMore 里 setState 引发重渲染后,AutoBox 内部 resize 可能再次触发 onShowMore,注意避免循环",
94
+ "onShowMore 在 list prop 变化或 window resize 后都会重新触发,不要依赖它的调用次数做副作用"
95
+ ]
96
+ },
97
+ "onCloseMore": {
98
+ "signature": "() => void",
99
+ "asyncSupported": false,
100
+ "examples": [
101
+ "弹层关闭时同步外部受控状态:onCloseMore={() => setOpenMore(false)}",
102
+ "关闭时记录日志:onCloseMore={() => analytics.track('more_closed')}",
103
+ "配合 openMore 实现受控弹层:<AutoBox openMore={open} onCloseMore={() => setOpen(false)} />"
104
+ ],
105
+ "commonMistakes": [
106
+ "传了 onCloseMore 但忘记传 openMore——二者需配合使用才能实现受控弹层",
107
+ "期望 onCloseMore 在用户点击弹层内容后也触发——只有弹层关闭时触发,内容点击需在 list 节点自身处理",
108
+ "期望 onCloseMore 携带关闭原因——回调无参数,无法区分是点击外部还是 ESC 关闭"
109
+ ]
110
+ }
111
+ },
112
+ "typescriptPitfalls": [
113
+ {
114
+ "issue": "list 类型是 any[],但传入非 ReactNode 元素会导致 runtime 渲染异常",
115
+ "wrong": "// list 传了原始数据对象,忘记 map 成 ReactNode\n<AutoBox list={[{ id: 1, name: '标签' }]} /> // 对象不是合法 ReactNode,渲染报错",
116
+ "right": "// 先 map 成 ReactNode\n<AutoBox list={data.map(d => <Tag key={d.id}>{d.name}</Tag>)} />"
117
+ },
118
+ {
119
+ "issue": "moreCustomize 声明为 ReactNode,但 src 内部也处理了函数形式(typeof moreCustomize === 'function'),类型声明不完整",
120
+ "wrong": "// 传函数期望接收 morePos 参数,但 TypeScript 按 ReactNode 检查会报类型错误\nmoreCustomize={(morePos) => <span>+{morePos}</span>}",
121
+ "right": "// 如需传函数绕过类型检查需显式 as any,或直接传静态 ReactNode\nmoreCustomize={<span>更多</span>}"
122
+ },
123
+ {
124
+ "issue": "AutoBoxProps 有索引签名 [name: string]: any,传错误 prop 名不会报 TS 错误",
125
+ "wrong": "// 拼写错误不会被 TS 捕获\n<AutoBox list={list} closeMore={() => {}} /> // closeMore 应为 onCloseMore,静默失效",
126
+ "right": "// 注意使用正确 prop 名\n<AutoBox list={list} onCloseMore={() => {}} />"
127
+ }
128
+ ],
129
+ "mapping": {
130
+ "realComponent": "AutoBox",
131
+ "adapter": null
132
+ }
133
+ }
@@ -6,7 +6,7 @@ export interface AutoBoxProps {
6
6
  /** style */
7
7
  style?: React.CSSProperties;
8
8
  /** list选项 */
9
- list?: any[];
9
+ list?: React.ReactNode[];
10
10
  /** 指定渲染几项,存在这个参数,则不自适应 */
11
11
  showNum?: number;
12
12
  /** 下拉框样式 */
@@ -18,7 +18,7 @@ export interface AutoBoxProps {
18
18
  /** 打开下拉框 */
19
19
  openMore?: boolean;
20
20
  /** 定位元素 */
21
- anchorEl?: any;
21
+ anchorEl?: HTMLElement | null;
22
22
  /** 关闭弹窗 */
23
23
  onCloseMore?: () => void;
24
24
  /** 显示更多 */
@@ -27,7 +27,7 @@ export interface AutoBoxProps {
27
27
  trigger?: 'click' | 'hover';
28
28
  /** 位置 */
29
29
  placement?: TooltipPlacement;
30
- [name: string]: any;
30
+ [name: string]: unknown;
31
31
  }
32
32
  export declare const AutoBox: FunctionComponent<AutoBoxProps>;
33
33
  export default AutoBox;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const s=require("../_virtual/jsx-runtime.js"),t=require("react"),_=require("../Popover/index.js"),A=require("./protal.js"),F=require("../node_modules/@para-ui/icons/More/index.js"),N=require("../GlobalContext/constant.js");;/* empty css */const w=i=>{const{className:x,list:o=[],popoverClassName:p,moreCustomize:l,anchorEl:v,hideMore:q=!1,showNum:m,onCloseMore:j,onShowMore:u,style:P,trigger:S="click",placement:$="bottomLeft"}=i,M=t.useRef(null),[r,f]=t.useState(null),[E,d]=t.useState(!1),[h]=t.useState({}),z=t.useRef();t.useEffect(()=>{i.openMore!==void 0&&d(i.openMore)},[i.openMore]),t.useEffect(()=>{if(i.showNum===void 0)return a(),window.addEventListener("resize",a),()=>{window.removeEventListener("resize",a),clearTimeout(h.timer)}},[o]),t.useEffect(()=>{m!==void 0&&(f(m),window.removeEventListener("resize",a))},[m]),t.useEffect(()=>{r!==null&&o.length>r?u&&u(!0):u&&u(!1)},[o,r,u]);const y=e=>{if(e)return d(!0);c()},c=()=>{d(!1),j&&j()},D=()=>{c()},C=e=>{if(e===null||e===0)return;e===void 0&&(e=o.length);const n=M.current;if(n)if(n.scrollWidth>n.clientWidth){const b=Number(e)-1;f(b),C(b)}else o.length<=e&&D()},a=()=>{clearTimeout(h.timer),c(),h.timer=setTimeout(()=>{f(o.length),C()},100)},L=()=>{let e=`${N.$prefixCls}-auto-box`;return x&&(e+=` ${x}`),e},g=()=>{let e=`${N.$prefixCls}-auto-box-popover`;return p&&(e+=` ${p}`),e},R=()=>s.jsxRuntimeExports.jsx("div",{className:"auto-box-popover-content",children:o&&o.map((e,n)=>r!==null&&r>n?null:s.jsxRuntimeExports.jsx(t.Fragment,{children:e},n))}),T=()=>{if(r!==null&&o.length>r&&!q){const e=()=>l?typeof l=="function"?l(r):l:s.jsxRuntimeExports.jsx(F.More,{});return s.jsxRuntimeExports.jsx(_.Popover,{open:E,content:R(),overlayClassName:g(),placement:$,trigger:S,onVisibleChange:y,children:s.jsxRuntimeExports.jsx("div",{className:"auto-box-more",ref:z,children:e()})})}},B=()=>{if(v&&E)return s.jsxRuntimeExports.jsx(A.Protal,{className:g(),anchorEl:v,onClose:c,children:R()})};return s.jsxRuntimeExports.jsxs("div",{className:L(),style:P,ref:M,children:[o.map((e,n)=>r!==null&&r<=n?null:s.jsxRuntimeExports.jsx(t.Fragment,{children:e},n)),T(),B()]})};exports.AutoBox=w;exports.default=w;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const s=require("../_virtual/jsx-runtime.js"),t=require("react"),_=require("../Popover/index.js"),A=require("./protal.js"),F=require("../node_modules/@para-ui/icons/More/index.js"),N=require("../GlobalContext/constant.js");;/* empty css */const w=i=>{const{className:x,list:o=[],popoverClassName:p,moreCustomize:l,anchorEl:v,hideMore:q=!1,showNum:m,onCloseMore:j,onShowMore:u,style:P,trigger:S="click",placement:$="bottomLeft"}=i,M=t.useRef(null),[r,f]=t.useState(null),[E,d]=t.useState(!1),[h]=t.useState({}),z=t.useRef(null);t.useEffect(()=>{i.openMore!==void 0&&d(i.openMore)},[i.openMore]),t.useEffect(()=>{if(i.showNum===void 0)return a(),window.addEventListener("resize",a),()=>{window.removeEventListener("resize",a),clearTimeout(h.timer)}},[o]),t.useEffect(()=>{m!==void 0&&(f(m),window.removeEventListener("resize",a))},[m]),t.useEffect(()=>{r!==null&&o.length>r?u&&u(!0):u&&u(!1)},[o,r,u]);const y=e=>{if(e)return d(!0);c()},c=()=>{d(!1),j&&j()},D=()=>{c()},C=e=>{if(e===null||e===0)return;e===void 0&&(e=o.length);const n=M.current;if(n)if(n.scrollWidth>n.clientWidth){const b=Number(e)-1;f(b),C(b)}else o.length<=e&&D()},a=()=>{clearTimeout(h.timer),c(),h.timer=setTimeout(()=>{f(o.length),C()},100)},L=()=>{let e=`${N.$prefixCls}-auto-box`;return x&&(e+=` ${x}`),e},g=()=>{let e=`${N.$prefixCls}-auto-box-popover`;return p&&(e+=` ${p}`),e},R=()=>s.jsxRuntimeExports.jsx("div",{className:"auto-box-popover-content",children:o&&o.map((e,n)=>r!==null&&r>n?null:s.jsxRuntimeExports.jsx(t.Fragment,{children:e},n))}),T=()=>{if(r!==null&&o.length>r&&!q){const e=()=>l?typeof l=="function"?l(r):l:s.jsxRuntimeExports.jsx(F.More,{});return s.jsxRuntimeExports.jsx(_.Popover,{open:E,content:R(),overlayClassName:g(),placement:$,trigger:S,onVisibleChange:y,children:s.jsxRuntimeExports.jsx("div",{className:"auto-box-more",ref:z,children:e()})})}},B=()=>{if(v&&E)return s.jsxRuntimeExports.jsx(A.Protal,{className:g(),anchorEl:v,onClose:c,children:R()})};return s.jsxRuntimeExports.jsxs("div",{className:L(),style:P,ref:M,children:[o.map((e,n)=>r!==null&&r<=n?null:s.jsxRuntimeExports.jsx(t.Fragment,{children:e},n)),T(),B()]})};exports.AutoBox=w;exports.default=w;
2
2
  //# sourceMappingURL=index.js.map
@@ -2,11 +2,11 @@ import { FunctionComponent, ReactNode } from 'react';
2
2
  export interface ProtalBoxProps {
3
3
  className?: string;
4
4
  /** 定位元素 */
5
- anchorEl?: any;
5
+ anchorEl?: HTMLElement | null;
6
6
  /** 关闭事件 */
7
7
  onClose?: () => void;
8
8
  children?: ReactNode;
9
- [name: string]: any;
9
+ [name: string]: unknown;
10
10
  }
11
11
  export declare const Protal: FunctionComponent<ProtalBoxProps>;
12
12
  export default Protal;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("../_virtual/jsx-runtime.js"),r=require("react"),v=require("react-dom"),C=require("@paraview/lib"),h=require("../GlobalContext/constant.js"),p=x=>{const{children:R,className:u,anchorEl:a,onClose:l}=x,[g,w]=r.useState({}),c=r.useRef({uuid:`${h.$prefixCls}-protal-box-content-${C.UUID()}`}),s=r.useRef(),i=r.useRef();r.useEffect(()=>(E(),window.addEventListener("click",d),()=>{s&&s.current&&s.current.remove(),window.removeEventListener("click",d)}),[]);const j=(t,n)=>{const e=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;for(;t&&!e.call(t,n);)t=t.parentElement;return t},d=t=>{if(!c.current)return;j(t.target,`.${c.current.uuid}`)||l&&l()},E=()=>{if(!a||!i.current)return;const t=a.getBoundingClientRect(),n=i.current.getBoundingClientRect(),e={opacity:1,left:t.left,top:t.top+t.height},f=window.innerHeight,m=window.innerWidth;e.left+n.width>m&&(e.left=m-n.width-8,e.left<0&&(e.left=0)),e.top+n.height>f&&(e.top=f-n.height-8,e.top<0&&(e.top=0)),w(e)},$=()=>{let t=`${h.$prefixCls}-protal-box`;return u&&(t+=` ${u}`),t},b=()=>o.jsxRuntimeExports.jsxs("div",{className:$(),ref:s,children:[o.jsxRuntimeExports.jsx("div",{className:"protal-mask"}),o.jsxRuntimeExports.jsx("div",{className:`protal-content ${c.current.uuid}`,style:g,ref:i,children:R})]});return o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:v.createPortal(b(),document.getElementsByTagName("body")[0])})};exports.Protal=p;exports.default=p;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../_virtual/jsx-runtime.js"),c=require("react"),C=require("react-dom"),S=require("@snack-kit/lib"),h=require("../GlobalContext/constant.js"),p=x=>{const{children:R,className:a,anchorEl:d,onClose:f}=x,[g,w]=c.useState({}),l=c.useRef({uuid:`${h.$prefixCls}-protal-box-content-${S.UUID()}`}),i=c.useRef(null),u=c.useRef(null);c.useEffect(()=>(E(),window.addEventListener("click",m),()=>{i&&i.current&&i.current.remove(),window.removeEventListener("click",m)}),[]);const j=(e,o)=>{if(!e)return null;const t=e,r=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;if(!r)return null;let n=e;for(;n&&!r.call(n,o);)n=n.parentElement;return n},m=e=>{if(!l.current)return;j(e.target,`.${l.current.uuid}`)||f&&f()},E=()=>{if(!d||!u.current)return;const e=d.getBoundingClientRect(),o=u.current.getBoundingClientRect(),t={opacity:1,left:e.left,top:e.top+e.height},r=window.innerHeight,n=window.innerWidth;t.left+o.width>n&&(t.left=n-o.width-8,t.left<0&&(t.left=0)),t.top+o.height>r&&(t.top=r-o.height-8,t.top<0&&(t.top=0)),w(t)},b=()=>{let e=`${h.$prefixCls}-protal-box`;return a&&(e+=` ${a}`),e},v=()=>s.jsxRuntimeExports.jsxs("div",{className:b(),ref:i,children:[s.jsxRuntimeExports.jsx("div",{className:"protal-mask"}),s.jsxRuntimeExports.jsx("div",{className:`protal-content ${l.current.uuid}`,style:g,ref:u,children:R})]});return s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:C.createPortal(v(),document.getElementsByTagName("body")[0])})};exports.Protal=p;exports.default=p;
2
2
  //# sourceMappingURL=protal.js.map