@para-ui/core 5.0.0-beta.12 → 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 (556) 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 +50 -47
  111. package/es/Anchor/type.d.ts +8 -4
  112. package/es/Argv/component.json +216 -0
  113. package/es/Argv/index.d.ts +5 -6
  114. package/es/AutoBox/component.json +133 -0
  115. package/es/AutoBox/index.d.ts +3 -3
  116. package/es/AutoBox/index.js +1 -1
  117. package/es/AutoBox/protal.d.ts +2 -2
  118. package/es/AutoBox/protal.js +32 -29
  119. package/es/AutoButton/component.json +109 -0
  120. package/es/AutoButton/index.js +1 -1
  121. package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  122. package/es/AutoTips/autoTipsMultiline/index.js +1 -1
  123. package/es/AutoTips/component.json +121 -0
  124. package/es/Badge/component.json +92 -0
  125. package/es/Breadcrumbs/component.json +142 -0
  126. package/es/Breadcrumbs/index.js +1 -1
  127. package/es/Button/SplitButton.d.ts +2 -2
  128. package/es/Button/component.json +168 -0
  129. package/es/Button/index.js +44 -44
  130. package/es/ButtonGroup/component.json +132 -0
  131. package/es/ButtonGroup/index.d.ts +1 -1
  132. package/es/Card/component.json +162 -0
  133. package/es/Card/index.d.ts +2 -2
  134. package/es/Card/index.js +2 -2
  135. package/es/Carousel/component.json +142 -0
  136. package/es/Carousel/index.d.ts +1 -1
  137. package/es/Cascader/component.json +196 -0
  138. package/es/Cascader/hooks/useEntities.js +7 -7
  139. package/es/Cascader/interface.d.ts +1 -0
  140. package/es/Cascader/utils/commonUtil.d.ts +1 -1
  141. package/es/Cascader/utils/commonUtil.js +16 -16
  142. package/es/Cascader/utils/treeUtil.d.ts +14 -5
  143. package/es/Cascader/utils/treeUtil.js +1 -1
  144. package/es/Checkbox/component.json +138 -0
  145. package/es/CheckboxGroup/component.json +152 -0
  146. package/es/CodeEditor/component.json +189 -0
  147. package/es/CodeEditor/index.d.ts +10 -9
  148. package/es/Collapse/component.json +166 -0
  149. package/es/Collapse/index.d.ts +1 -1
  150. package/es/Collapse/index.js +23 -22
  151. package/es/CollapseBox/component.json +84 -0
  152. package/es/CollapseLayout/component.json +155 -0
  153. package/es/ColorPicker/component.json +142 -0
  154. package/es/ComboSelect/component.json +181 -0
  155. package/es/ComboSelect/index.js +73 -68
  156. package/es/ComboSelect/interface.d.ts +2 -2
  157. package/es/ComboSelect/utils.d.ts +3 -3
  158. package/es/ComboSelect/utils.js +1 -1
  159. package/es/Container/component.json +111 -0
  160. package/es/ContentBox/component.json +81 -0
  161. package/es/CopyText/component.json +118 -0
  162. package/es/CycleSelector/component.json +98 -0
  163. package/es/CycleSelector/index.js +14 -13
  164. package/es/DatePicker/component.json +192 -0
  165. package/es/DatePicker/generatePicker/generateRangePicker.js +10 -10
  166. package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  167. package/es/Descriptions/component.json +142 -0
  168. package/es/Descriptions/index.d.ts +1 -1
  169. package/es/Desktop/component.json +171 -0
  170. package/es/DragVerify/component.json +114 -0
  171. package/es/DragVerify/index.js +19 -19
  172. package/es/Drawer/component.json +200 -0
  173. package/es/Drawer/index.js +86 -86
  174. package/es/Drawer/interface.d.ts +1 -1
  175. package/es/Drawer/util.d.ts +1 -6
  176. package/es/Drawer/util.js +9 -6
  177. package/es/Dropdown/component.json +147 -0
  178. package/es/DynamicMultiBox/component.json +278 -0
  179. package/es/DynamicMultiBox/formItem.d.ts +1 -1
  180. package/es/DynamicMultiBox/rowForm.d.ts +2 -2
  181. package/es/Empty/component.json +123 -0
  182. package/es/Empty/index.css +1 -1
  183. package/es/Empty/index.d.ts +2 -2
  184. package/es/Empty/index.js +27 -26
  185. package/es/Empty/style/index.css +1 -1
  186. package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  187. package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
  188. package/es/FieldForm/Form.d.ts +2 -2
  189. package/es/FieldForm/FormList.d.ts +2 -2
  190. package/es/FieldForm/component.json +196 -0
  191. package/es/FieldForm/context.d.ts +5 -1
  192. package/es/FieldForm/context.js +2 -2
  193. package/es/FieldForm/hooks/useForm.d.ts +4 -3
  194. package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
  195. package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  196. package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
  197. package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
  198. package/es/FieldForm/hooks/useItemRef.js +6 -6
  199. package/es/Form/component.json +161 -0
  200. package/es/Form/index.d.ts +52 -49
  201. package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  202. package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
  203. package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  204. package/es/FormItem/compoments/formFile/index.js +8 -8
  205. package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  206. package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
  207. package/es/FormItem/component.json +171 -0
  208. package/es/FormItem/index.d.ts +5 -5
  209. package/es/FormItem/index.js +23 -23
  210. package/es/FormItem/itemType.js +1 -1
  211. package/es/FunctionModal/component.json +197 -0
  212. package/es/FunctionModal/dialog.d.ts +1 -1
  213. package/es/FunctionModal/modalContext.d.ts +4 -1
  214. package/es/Help/component.json +118 -0
  215. package/es/HelperText/component.json +126 -0
  216. package/es/Image/component.json +165 -0
  217. package/es/InputCode/component.json +191 -0
  218. package/es/InputCode/index.d.ts +2 -2
  219. package/es/InputLang/component.json +205 -0
  220. package/es/InputLang/index.js +1 -1
  221. package/es/InputNumber/component.json +162 -0
  222. package/es/Label/component.json +126 -0
  223. package/es/Label/index.d.ts +2 -2
  224. package/es/Loading/component.json +91 -0
  225. package/es/Menu/component.json +180 -0
  226. package/es/Message/component.json +246 -0
  227. package/es/Message/index.d.ts +2 -2
  228. package/es/Message/index.js +2 -2
  229. package/es/Modal/Confirm/index.d.ts +1 -1
  230. package/es/Modal/component.json +277 -0
  231. package/es/Modal/index.d.ts +85 -5
  232. package/es/Modal/index.js +159 -122
  233. package/es/Modal/interface.d.ts +1 -0
  234. package/es/MultiBox/component.json +216 -0
  235. package/es/MultiBox/index.js +19 -14
  236. package/es/Notification/component.json +184 -0
  237. package/es/OperateBtn/component.json +134 -0
  238. package/es/OperateBtn/index.d.ts +3 -3
  239. package/es/PageHeader/component.json +112 -0
  240. package/es/Pagination/component.json +181 -0
  241. package/es/Pagination/index.js +15 -15
  242. package/es/PasswordRules/component.json +105 -0
  243. package/es/PasswordRules/index.d.ts +4 -4
  244. package/es/PopConfirm/component.json +227 -0
  245. package/es/PopConfirm/index.d.ts +1 -1
  246. package/es/PopConfirm/index.js +1 -1
  247. package/es/PopMenu/component.json +131 -0
  248. package/es/PopMenu/hooks.d.ts +1 -1
  249. package/es/PopMenu/index.js +8 -8
  250. package/es/Popover/component.json +165 -0
  251. package/es/Popover/index.js +1 -1
  252. package/es/Progress/component.json +161 -0
  253. package/es/Prompt/component.json +144 -0
  254. package/es/Querying/component.json +96 -0
  255. package/es/Querying/index.css +1 -1
  256. package/es/Querying/index.d.ts +2 -2
  257. package/es/Querying/index.js +20 -19
  258. package/es/Querying/style/index.css +1 -1
  259. package/es/QuickReply/component.json +129 -0
  260. package/es/QuickReply/index.d.ts +1 -1
  261. package/es/Radio/component.json +136 -0
  262. package/es/RadioGroup/component.json +149 -0
  263. package/es/RangeInput/component.json +198 -0
  264. package/es/RangeInput/index.js +1 -1
  265. package/es/Result/component.json +104 -0
  266. package/es/ScrollBar/component.json +115 -0
  267. package/es/Search/component.json +177 -0
  268. package/es/Search/index.d.ts +1 -1
  269. package/es/Select/component.json +244 -0
  270. package/es/Select/index.js +113 -113
  271. package/es/SelectInput/component.json +184 -0
  272. package/es/Selector/component.json +203 -0
  273. package/es/Selector/index.js +28 -27
  274. package/es/Selector/interface.d.ts +1 -1
  275. package/es/Selector/selectorMain/index.js +2 -2
  276. package/es/Selector/selectorNode/index.js +1 -1
  277. package/es/Selector/util.d.ts +2 -2
  278. package/es/SelectorPicker/component.json +179 -0
  279. package/es/SelectorPicker/index.d.ts +5 -5
  280. package/es/SelectorPicker/index.js +15 -15
  281. package/es/SingleBox/component.json +151 -0
  282. package/es/SingleBox/index.d.ts +2 -2
  283. package/es/Slider/component.json +181 -0
  284. package/es/SortBox/component.json +108 -0
  285. package/es/Status/component.json +104 -0
  286. package/es/Stepper/component.json +129 -0
  287. package/es/Stepper/index.d.ts +2 -2
  288. package/es/Switch/component.json +207 -0
  289. package/es/Switch/index.css +1 -1
  290. package/es/Switch/index.d.ts +3 -2
  291. package/es/Switch/index.js +60 -59
  292. package/es/Switch/style/index.css +1 -1
  293. package/es/Table/component.json +547 -0
  294. package/es/Table/index.d.ts +2 -2
  295. package/es/Table/index.js +414 -414
  296. package/es/Table/interface.d.ts +6 -0
  297. package/es/Tabs/component.json +227 -0
  298. package/es/Tag/component.json +221 -0
  299. package/es/Tag/index.css +1 -1
  300. package/es/Tag/index.d.ts +1 -1
  301. package/es/Tag/index.js +20 -20
  302. package/es/Tag/style/index.css +1 -1
  303. package/es/TextEditor/component.json +186 -0
  304. package/es/TextEditor/index.d.ts +5 -5
  305. package/es/TextField/component.json +290 -0
  306. package/es/TextField/index.d.ts +2 -2
  307. package/es/TimePicker/component.json +176 -0
  308. package/es/Timeline/component.json +110 -0
  309. package/es/Title/component.json +156 -0
  310. package/es/ToggleButton/component.json +153 -0
  311. package/es/Tooltip/component.json +176 -0
  312. package/es/Tooltip/index.js +58 -53
  313. package/es/Tooltip/interface.d.ts +14 -1
  314. package/es/Tooltip/utils.js +6 -6
  315. package/es/Transfer/component.json +157 -0
  316. package/es/Tree/component.json +512 -0
  317. package/es/Upload/component.json +450 -0
  318. package/es/Utils/type.d.ts +0 -2
  319. package/es/index.d.ts +2 -0
  320. package/es/index.js +1 -1
  321. package/es/locale/en_US.d.ts +361 -0
  322. package/es/locale/en_US.js +364 -0
  323. package/es/locale/index.d.ts +1 -723
  324. package/es/locale/index2.js +10 -0
  325. package/es/locale/zh_CN.d.ts +361 -0
  326. package/es/locale/zh_CN.js +364 -0
  327. package/lib/AlignBox/component.json +89 -0
  328. package/lib/AlignBox/index.css +1 -1
  329. package/lib/AlignBox/index.d.ts +6 -2
  330. package/lib/AlignBox/index.js +1 -1
  331. package/lib/AlignBox/style/index.css +1 -1
  332. package/lib/Anchor/anchorMenu/index.d.ts +2 -1
  333. package/lib/Anchor/anchorMenu/index.js +1 -1
  334. package/lib/Anchor/component.json +130 -0
  335. package/lib/Anchor/index.js +1 -1
  336. package/lib/Anchor/type.d.ts +8 -4
  337. package/lib/Argv/component.json +216 -0
  338. package/lib/Argv/index.d.ts +5 -6
  339. package/lib/AutoBox/component.json +133 -0
  340. package/lib/AutoBox/index.d.ts +3 -3
  341. package/lib/AutoBox/index.js +1 -1
  342. package/lib/AutoBox/protal.d.ts +2 -2
  343. package/lib/AutoBox/protal.js +1 -1
  344. package/lib/AutoButton/component.json +109 -0
  345. package/lib/AutoButton/index.js +1 -1
  346. package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
  347. package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
  348. package/lib/AutoTips/component.json +121 -0
  349. package/lib/Badge/component.json +92 -0
  350. package/lib/Breadcrumbs/component.json +142 -0
  351. package/lib/Breadcrumbs/index.js +1 -1
  352. package/lib/Button/SplitButton.d.ts +2 -2
  353. package/lib/Button/component.json +168 -0
  354. package/lib/Button/index.js +1 -1
  355. package/lib/ButtonGroup/component.json +132 -0
  356. package/lib/ButtonGroup/index.d.ts +1 -1
  357. package/lib/Card/component.json +162 -0
  358. package/lib/Card/index.d.ts +2 -2
  359. package/lib/Card/index.js +1 -1
  360. package/lib/Carousel/component.json +142 -0
  361. package/lib/Carousel/index.d.ts +1 -1
  362. package/lib/Cascader/component.json +196 -0
  363. package/lib/Cascader/hooks/useEntities.js +1 -1
  364. package/lib/Cascader/interface.d.ts +1 -0
  365. package/lib/Cascader/utils/commonUtil.d.ts +1 -1
  366. package/lib/Cascader/utils/commonUtil.js +1 -1
  367. package/lib/Cascader/utils/treeUtil.d.ts +14 -5
  368. package/lib/Cascader/utils/treeUtil.js +1 -1
  369. package/lib/Checkbox/component.json +138 -0
  370. package/lib/CheckboxGroup/component.json +152 -0
  371. package/lib/CodeEditor/component.json +189 -0
  372. package/lib/CodeEditor/index.d.ts +10 -9
  373. package/lib/Collapse/component.json +166 -0
  374. package/lib/Collapse/index.d.ts +1 -1
  375. package/lib/Collapse/index.js +1 -1
  376. package/lib/CollapseBox/component.json +84 -0
  377. package/lib/CollapseLayout/component.json +155 -0
  378. package/lib/ColorPicker/component.json +142 -0
  379. package/lib/ComboSelect/component.json +181 -0
  380. package/lib/ComboSelect/index.js +1 -1
  381. package/lib/ComboSelect/interface.d.ts +2 -2
  382. package/lib/ComboSelect/utils.d.ts +3 -3
  383. package/lib/ComboSelect/utils.js +1 -1
  384. package/lib/Container/component.json +111 -0
  385. package/lib/ContentBox/component.json +81 -0
  386. package/lib/CopyText/component.json +118 -0
  387. package/lib/CycleSelector/component.json +98 -0
  388. package/lib/CycleSelector/index.js +1 -1
  389. package/lib/DatePicker/component.json +192 -0
  390. package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
  391. package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
  392. package/lib/Descriptions/component.json +142 -0
  393. package/lib/Descriptions/index.d.ts +1 -1
  394. package/lib/Desktop/component.json +171 -0
  395. package/lib/DragVerify/component.json +114 -0
  396. package/lib/DragVerify/index.js +1 -1
  397. package/lib/Drawer/component.json +200 -0
  398. package/lib/Drawer/index.js +1 -1
  399. package/lib/Drawer/interface.d.ts +1 -1
  400. package/lib/Drawer/util.d.ts +1 -6
  401. package/lib/Drawer/util.js +1 -1
  402. package/lib/Dropdown/component.json +147 -0
  403. package/lib/DynamicMultiBox/component.json +278 -0
  404. package/lib/DynamicMultiBox/formItem.d.ts +1 -1
  405. package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
  406. package/lib/Empty/component.json +123 -0
  407. package/lib/Empty/index.css +1 -1
  408. package/lib/Empty/index.d.ts +2 -2
  409. package/lib/Empty/index.js +1 -1
  410. package/lib/Empty/style/index.css +1 -1
  411. package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
  412. package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
  413. package/lib/FieldForm/Form.d.ts +2 -2
  414. package/lib/FieldForm/FormList.d.ts +2 -2
  415. package/lib/FieldForm/component.json +196 -0
  416. package/lib/FieldForm/context.d.ts +5 -1
  417. package/lib/FieldForm/context.js +1 -1
  418. package/lib/FieldForm/hooks/useForm.d.ts +4 -3
  419. package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
  420. package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
  421. package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
  422. package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
  423. package/lib/FieldForm/hooks/useItemRef.js +1 -1
  424. package/lib/Form/component.json +161 -0
  425. package/lib/Form/index.d.ts +52 -49
  426. package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
  427. package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
  428. package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
  429. package/lib/FormItem/compoments/formFile/index.js +1 -1
  430. package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
  431. package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
  432. package/lib/FormItem/component.json +171 -0
  433. package/lib/FormItem/index.d.ts +5 -5
  434. package/lib/FormItem/index.js +1 -1
  435. package/lib/FormItem/itemType.js +1 -1
  436. package/lib/FunctionModal/component.json +197 -0
  437. package/lib/FunctionModal/dialog.d.ts +1 -1
  438. package/lib/FunctionModal/modalContext.d.ts +4 -1
  439. package/lib/Help/component.json +118 -0
  440. package/lib/HelperText/component.json +126 -0
  441. package/lib/Image/component.json +165 -0
  442. package/lib/InputCode/component.json +191 -0
  443. package/lib/InputCode/index.d.ts +2 -2
  444. package/lib/InputLang/component.json +205 -0
  445. package/lib/InputLang/index.js +1 -1
  446. package/lib/InputNumber/component.json +162 -0
  447. package/lib/Label/component.json +126 -0
  448. package/lib/Label/index.d.ts +2 -2
  449. package/lib/Loading/component.json +91 -0
  450. package/lib/Menu/component.json +180 -0
  451. package/lib/Message/component.json +246 -0
  452. package/lib/Message/index.d.ts +2 -2
  453. package/lib/Message/index.js +1 -1
  454. package/lib/Modal/Confirm/index.d.ts +1 -1
  455. package/lib/Modal/component.json +277 -0
  456. package/lib/Modal/index.d.ts +85 -5
  457. package/lib/Modal/index.js +1 -1
  458. package/lib/Modal/interface.d.ts +1 -0
  459. package/lib/MultiBox/component.json +216 -0
  460. package/lib/MultiBox/index.js +1 -1
  461. package/lib/Notification/component.json +184 -0
  462. package/lib/OperateBtn/component.json +134 -0
  463. package/lib/OperateBtn/index.d.ts +3 -3
  464. package/lib/PageHeader/component.json +112 -0
  465. package/lib/Pagination/component.json +181 -0
  466. package/lib/Pagination/index.js +1 -1
  467. package/lib/PasswordRules/component.json +105 -0
  468. package/lib/PasswordRules/index.d.ts +4 -4
  469. package/lib/PopConfirm/component.json +227 -0
  470. package/lib/PopConfirm/index.d.ts +1 -1
  471. package/lib/PopConfirm/index.js +1 -1
  472. package/lib/PopMenu/component.json +131 -0
  473. package/lib/PopMenu/hooks.d.ts +1 -1
  474. package/lib/PopMenu/index.js +1 -1
  475. package/lib/Popover/component.json +165 -0
  476. package/lib/Popover/index.js +1 -1
  477. package/lib/Progress/component.json +161 -0
  478. package/lib/Prompt/component.json +144 -0
  479. package/lib/Querying/component.json +96 -0
  480. package/lib/Querying/index.css +1 -1
  481. package/lib/Querying/index.d.ts +2 -2
  482. package/lib/Querying/index.js +1 -1
  483. package/lib/Querying/style/index.css +1 -1
  484. package/lib/QuickReply/component.json +129 -0
  485. package/lib/QuickReply/index.d.ts +1 -1
  486. package/lib/Radio/component.json +136 -0
  487. package/lib/RadioGroup/component.json +149 -0
  488. package/lib/RangeInput/component.json +198 -0
  489. package/lib/RangeInput/index.js +1 -1
  490. package/lib/Result/component.json +104 -0
  491. package/lib/ScrollBar/component.json +115 -0
  492. package/lib/Search/component.json +177 -0
  493. package/lib/Search/index.d.ts +1 -1
  494. package/lib/Select/component.json +244 -0
  495. package/lib/Select/index.js +1 -1
  496. package/lib/SelectInput/component.json +184 -0
  497. package/lib/Selector/component.json +203 -0
  498. package/lib/Selector/index.js +1 -1
  499. package/lib/Selector/interface.d.ts +1 -1
  500. package/lib/Selector/selectorMain/index.js +1 -1
  501. package/lib/Selector/selectorNode/index.js +1 -1
  502. package/lib/Selector/util.d.ts +2 -2
  503. package/lib/SelectorPicker/component.json +179 -0
  504. package/lib/SelectorPicker/index.d.ts +5 -5
  505. package/lib/SelectorPicker/index.js +1 -1
  506. package/lib/SingleBox/component.json +151 -0
  507. package/lib/SingleBox/index.d.ts +2 -2
  508. package/lib/Slider/component.json +181 -0
  509. package/lib/SortBox/component.json +108 -0
  510. package/lib/Status/component.json +104 -0
  511. package/lib/Stepper/component.json +129 -0
  512. package/lib/Stepper/index.d.ts +2 -2
  513. package/lib/Switch/component.json +207 -0
  514. package/lib/Switch/index.css +1 -1
  515. package/lib/Switch/index.d.ts +3 -2
  516. package/lib/Switch/index.js +1 -1
  517. package/lib/Switch/style/index.css +1 -1
  518. package/lib/Table/component.json +547 -0
  519. package/lib/Table/index.d.ts +2 -2
  520. package/lib/Table/index.js +1 -1
  521. package/lib/Table/interface.d.ts +6 -0
  522. package/lib/Tabs/component.json +227 -0
  523. package/lib/Tag/component.json +221 -0
  524. package/lib/Tag/index.css +1 -1
  525. package/lib/Tag/index.d.ts +1 -1
  526. package/lib/Tag/index.js +1 -1
  527. package/lib/Tag/style/index.css +1 -1
  528. package/lib/TextEditor/component.json +186 -0
  529. package/lib/TextEditor/index.d.ts +5 -5
  530. package/lib/TextField/component.json +290 -0
  531. package/lib/TextField/index.d.ts +2 -2
  532. package/lib/TimePicker/component.json +176 -0
  533. package/lib/Timeline/component.json +110 -0
  534. package/lib/Title/component.json +156 -0
  535. package/lib/ToggleButton/component.json +153 -0
  536. package/lib/Tooltip/component.json +176 -0
  537. package/lib/Tooltip/index.js +1 -1
  538. package/lib/Tooltip/interface.d.ts +14 -1
  539. package/lib/Tooltip/utils.js +1 -1
  540. package/lib/Transfer/component.json +157 -0
  541. package/lib/Tree/component.json +512 -0
  542. package/lib/Upload/component.json +450 -0
  543. package/lib/Utils/type.d.ts +0 -2
  544. package/lib/index.d.ts +2 -0
  545. package/lib/index.js +1 -1
  546. package/lib/locale/en_US.d.ts +361 -0
  547. package/lib/locale/en_US.js +2 -0
  548. package/lib/locale/index.d.ts +1 -723
  549. package/lib/locale/index2.js +2 -0
  550. package/lib/locale/zh_CN.d.ts +361 -0
  551. package/lib/locale/zh_CN.js +2 -0
  552. package/package.json +9 -3
  553. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  554. /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
  555. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
  556. /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
@@ -0,0 +1,115 @@
1
+ {
2
+ "name": "ScrollBar",
3
+ "category": "Layout",
4
+ "description": "滚动条美化:既支持全局 CSS 主题(默认场景),也提供 stand-alone 自驱动组件(虚拟列表/Canvas 等高级场景)",
5
+ "semantic": {
6
+ "intent": [
7
+ "美化原生滚动条",
8
+ "自驱动滚动指示器"
9
+ ],
10
+ "useCases": [
11
+ "固定高度内容溢出滚动(模式 A)",
12
+ "横向画廊(模式 A)",
13
+ "侧边栏/抽屉内容(模式 A)",
14
+ "虚拟列表/Canvas 自定义滚动(模式 B)"
15
+ ],
16
+ "riskLevel": "low"
17
+ },
18
+ "variants": {
19
+ "themedNative": {
20
+ "meaning": "模式 A:全局 className 主题 + native overflow(99% 场景推荐);使用 className `paraui-v4-scrollbar-{small|medium|large}{-deep}?` + native overflow:auto,不需要 import 任何组件"
21
+ },
22
+ "selfDriven": {
23
+ "meaning": "模式 B:<ScrollBar> stand-alone 组件,业务侧自驱动 scroll state(虚拟列表/Canvas 高级场景);组件本身不接受 children"
24
+ }
25
+ },
26
+ "states": [
27
+ "default",
28
+ "scrolling"
29
+ ],
30
+ "idealProps": {
31
+ "type": {
32
+ "type": "'horizontal' | 'vertical'",
33
+ "values": ["horizontal", "vertical"],
34
+ "default": "'vertical'",
35
+ "description": "(模式 B)滚动条方向"
36
+ },
37
+ "size": {
38
+ "type": "'small' | 'medium' | 'large'",
39
+ "values": ["small", "medium", "large"],
40
+ "default": "'large'",
41
+ "description": "(模式 B)滚动条粗细;small/medium 同款细(4px),large 粗(8px)"
42
+ },
43
+ "color": {
44
+ "type": "'deep' | 'light'",
45
+ "values": ["deep", "light"],
46
+ "default": "'light'",
47
+ "description": "(模式 B)配色;light 浅背景,deep 深背景"
48
+ },
49
+ "scrollTotalLength": {
50
+ "type": "number",
51
+ "description": "(模式 B)内容总滚动距离(px);= contentTotalSize - visualWindowSize;业务侧从 scrollHeight - clientHeight 计算并传入"
52
+ },
53
+ "scrollLength": {
54
+ "type": "number",
55
+ "description": "(模式 B)当前滚动距离(px);业务侧从 native scrollTop/scrollLeft 同步进来;变化时组件移动滑块位置"
56
+ },
57
+ "onScroll": {
58
+ "type": "function",
59
+ "signature": "(val: number) => void",
60
+ "description": "(模式 B)用户拖拽滚动条时回调;val = 用户操作后业务侧应同步到 native 元素的 scrollTop/scrollLeft 值"
61
+ },
62
+ "themedClassName": {
63
+ "type": "string (literal)",
64
+ "description": "(模式 A)在 native overflow 容器上加 className,从下面选一个:'paraui-v4-scrollbar-small' / 'paraui-v4-scrollbar-medium' / 'paraui-v4-scrollbar-large' / '*-deep' 深色变体;src/Styles/scrollbar.scss 实现 ::-webkit-scrollbar-* 美化"
65
+ }
66
+ },
67
+ "do": [
68
+ "默认场景(限高容器 + 子内容溢出)用模式 A:className 主题 + native overflow:auto",
69
+ "横向滚动用 overflowX:auto + className 'paraui-v4-scrollbar-small' 等主题",
70
+ "虚拟列表 / Canvas 等业务侧已有 scroll state 的场景用模式 B:<ScrollBar /> 组件 + scrollTotalLength + scrollLength",
71
+ "深色背景上的滚动条用 *-deep 变体(浅色背景上保持默认或显式 light)"
72
+ ],
73
+ "dont": [
74
+ "**不要给 <ScrollBar> 组件传 children**(它不是 scroll 容器,是 visual indicator)",
75
+ "不要在普通业务场景重复实现 scrollTotalLength/scrollLength 计算 — 用模式 A className 即可",
76
+ "不要嵌套两层 ScrollBar 容器(双滚动条体验差)",
77
+ "不要忘了模式 B 必须搭配 native overflow:hidden 的容器才能视觉上接管滚动"
78
+ ],
79
+ "events": {
80
+ "onScroll": {
81
+ "signature": "(val: number) => void",
82
+ "asyncSupported": false,
83
+ "examples": [
84
+ "用户拖拽滚动条时触发,val = 应同步到 native 元素的 scrollTop/scrollLeft 值",
85
+ "onScroll={(val) => { nativeRef.current.scrollTop = val; setScrollLength(val); }}",
86
+ "双向绑定:业务侧同时监听 native onScroll 更新 scrollLength prop,ScrollBar.onScroll 更新 native scrollTop"
87
+ ],
88
+ "commonMistakes": [
89
+ "只传 onScroll 未更新 native 元素的 scrollTop——val 是期望值,需业务侧手动同步到 DOM",
90
+ "onScroll 和 scrollLength 没有形成闭环——用户拖 scrollbar 时 onScroll 触发更新 scrollTop;native 滚动时 onScroll 不触发,需监听 native onScroll 更新 scrollLength"
91
+ ]
92
+ }
93
+ },
94
+ "typescriptPitfalls": [
95
+ {
96
+ "issue": "ScrollBar 组件的 Props interface 名是 Props(不是 ScrollBarProps),外部无法直接 import 类型",
97
+ "wrong": "import { ScrollBarProps } from '@para-ui/core/ScrollBar' // 类型未导出",
98
+ "right": "// 直接使用 JSX 不需要类型引用;如需类型可自行 declare 或用 React.ComponentProps<typeof ScrollBar>"
99
+ },
100
+ {
101
+ "issue": "scrollTotalLength 传错含义——应是「可滚动距离」不是「内容总高度」",
102
+ "wrong": "scrollTotalLength={contentHeight} // 期望传内容总高度——实际应传 scrollHeight - clientHeight",
103
+ "right": "scrollTotalLength={scrollHeight - clientHeight} // = contentTotalSize - visualWindowSize"
104
+ },
105
+ {
106
+ "issue": "模式 A(className 主题)不需要 import ScrollBar 组件,直接加 className 即可",
107
+ "wrong": "import ScrollBar from '@para-ui/core/ScrollBar'; <ScrollBar>...</ScrollBar> // ScrollBar 不接受 children",
108
+ "right": "<div className='paraui-v4-scrollbar-small' style={{overflowY: 'auto'}}>...</div> // 模式 A 不 import 组件"
109
+ }
110
+ ],
111
+ "mapping": {
112
+ "realComponent": "ScrollBar",
113
+ "adapter": null
114
+ }
115
+ }
@@ -0,0 +1,177 @@
1
+ {
2
+ "name": "Search",
3
+ "category": "Data Entry",
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
+ "focused"
25
+ ],
26
+ "idealProps": {
27
+ "value": {
28
+ "type": "string",
29
+ "description": "受控输入值(src/Search/index.tsx:26 实证)。与 `defaultValue` 互斥——传 value 后为受控模式,内部 state 不自动更新,需配合 onChange 手动同步"
30
+ },
31
+ "defaultValue": {
32
+ "type": "string",
33
+ "description": "非受控初始值(src/Search/index.tsx:24 实证)。组件 mount 时一次性设置,之后内部管理输入 state。与 value 互斥——不要同时传"
34
+ },
35
+ "placeholder": {
36
+ "type": "string | ReactNode",
37
+ "description": "输入框占位文案(src/Search/index.tsx:22 实证,类型 ReactNode,实际用 string 即可)。默认空字符串"
38
+ },
39
+ "allowClear": {
40
+ "type": "boolean",
41
+ "default": true,
42
+ "description": "是否显示清空按钮(src/Search/index.tsx:28 实证,默认 true)。清空时触发 `onClear` 回调"
43
+ },
44
+ "onChange": {
45
+ "type": "function",
46
+ "signature": "(val: string, event: React.ChangeEvent<HTMLInputElement> | null) => void",
47
+ "description": "输入值变化回调(src/Search/index.tsx:30 实证签名,两参:val 字符串值 + event 原生事件)。⚠️ **第一参是 string 值,不是 event**——区别于原生 input onChange。当点击搜索按钮且未传 onClickBtn 时也会触发 onChange(event 此时为 null)"
48
+ },
49
+ "onClickBtn": {
50
+ "type": "function",
51
+ "signature": "(val: string) => void",
52
+ "description": "点击右侧搜索按钮的回调(src/Search/index.tsx:40 实证签名)。参数 val 为当前输入框的值。⚠️ **若不传 onClickBtn,点击按钮会 fallback 触发 onChange**(src:99-104)。`onClickRightIcon` 是其已废弃别名"
53
+ },
54
+ "onEnter": {
55
+ "type": "function",
56
+ "signature": "(event: React.KeyboardEvent<HTMLInputElement>) => void",
57
+ "description": "回车键按下的回调(src/Search/index.tsx:46 实证签名)。通常与 onClickBtn 配合覆盖「按钮触发搜索」和「回车触发搜索」两种路径"
58
+ },
59
+ "onClear": {
60
+ "type": "function",
61
+ "signature": "() => void",
62
+ "description": "点击清空按钮的回调(src/Search/index.tsx:44 实证签名,无参)。清空后输入框值变为空字符串;allowClear=true 时清空按钮才可见"
63
+ },
64
+ "onFocus": {
65
+ "type": "function",
66
+ "signature": "(event: React.FocusEvent<HTMLInputElement>) => void",
67
+ "description": "输入框获得焦点的回调(src/Search/index.tsx:34 实证签名)"
68
+ },
69
+ "onBlur": {
70
+ "type": "function",
71
+ "signature": "(event: React.FocusEvent<HTMLInputElement>) => void",
72
+ "description": "输入框失去焦点的回调(src/Search/index.tsx:32 实证签名)"
73
+ },
74
+ "size": {
75
+ "type": "enum",
76
+ "values": [
77
+ "small",
78
+ "medium",
79
+ "large"
80
+ ],
81
+ "default": "large",
82
+ "description": "控件大小(src/Search/index.tsx:18 实证,默认 large)"
83
+ },
84
+ "radius": {
85
+ "type": "boolean",
86
+ "default": false,
87
+ "description": "是否使用圆角样式(src/Search/index.tsx:20 实证)"
88
+ },
89
+ "onClickRightIcon": {
90
+ "type": "function",
91
+ "signature": "(val: string) => void",
92
+ "description": "⚠️ **已废弃,请使用 `onClickBtn`**(src/Search/index.tsx:41 注释实证)。点击输入框右侧图标的回调,与 onClickBtn 同时触发"
93
+ },
94
+ "onKeydown": {
95
+ "type": "function",
96
+ "signature": "(event: React.KeyboardEvent<HTMLInputElement>) => void",
97
+ "description": "键盘按下事件回调(src/Search/index.tsx:36 实证)。⚠️ **注意拼写:onKeydown(非 onKeyDown)**,prop 名首字母 d 小写"
98
+ },
99
+ "onKeyUp": {
100
+ "type": "function",
101
+ "signature": "(event: React.KeyboardEvent<HTMLInputElement>) => void",
102
+ "description": "键盘抬起事件回调(src/Search/index.tsx:38 实证)"
103
+ }
104
+ },
105
+ "do": [
106
+ "支持回车搜索:同时传 onEnter 和 onClickBtn 覆盖「回车触发」和「点击按钮触发」两条路径",
107
+ "提供清空按钮:allowClear 默认 true,清空时只触发 onClear,不触发 onChange",
108
+ "受控模式:传 value + onChange 实现受控;onChange 第一参是 string 值(不是 event)",
109
+ "非受控模式:只传 defaultValue,内部管理输入 state;不要同时传 value 和 defaultValue"
110
+ ],
111
+ "dont": [
112
+ "不要把 onChange 的第一参当 event 使用——Search.onChange 签名是 (val: string, event) 而非 antd Input.onChange 的 (event) 签名",
113
+ "不要忽略 onClickBtn 为空时点击搜索按钮的 fallback 行为——未传 onClickBtn 时点击会触发 onChange(event 为 null)",
114
+ "搜索时不给反馈(网络搜索场景应配合 loading 状态)"
115
+ ],
116
+ "events": {
117
+ "onChange": {
118
+ "signature": "(val: string, event: React.ChangeEvent<HTMLInputElement> | null) => void",
119
+ "asyncSupported": false,
120
+ "examples": [
121
+ "用户实时输入时触发,val 是当前输入框字符串值",
122
+ "点击右侧搜索按钮且未传 onClickBtn 时也触发,此时 event 为 null",
123
+ "受控用法:const [keyword, setKeyword] = useState(''); <Search value={keyword} onChange={(val) => setKeyword(val)} />"
124
+ ],
125
+ "commonMistakes": [
126
+ "误按 antd Input 习惯写 onChange={(e) => setValue(e.target.value)} — 第一参是 string 不是 event",
127
+ "期望清空按钮触发 onChange — 清空只触发 onClear,需同时监听 onClear 来清空外部 state",
128
+ "忘记 onClickBtn 未传时 onChange event 参数可能为 null — 应做 null 判断再访问 event.target"
129
+ ]
130
+ },
131
+ "onClickBtn": {
132
+ "signature": "(val: string) => void",
133
+ "asyncSupported": false,
134
+ "examples": [
135
+ "用户点击右侧搜索图标时触发,val 为当前输入框的值",
136
+ "通常与 onEnter 一起传:点击和回车都调用同一个 search 函数"
137
+ ],
138
+ "commonMistakes": [
139
+ "不传 onClickBtn 时点击按钮 fallback 触发 onChange(event=null)— 若只需按钮触发必须显式传 onClickBtn",
140
+ "与 onClickRightIcon 混淆 — onClickRightIcon 是 onClickBtn 的已废弃别名,二者同时触发"
141
+ ]
142
+ },
143
+ "onEnter": {
144
+ "signature": "(event: React.KeyboardEvent<HTMLInputElement>) => void",
145
+ "asyncSupported": false,
146
+ "examples": [
147
+ "用户在输入框按回车键触发,event 是 KeyboardEvent",
148
+ "取当前值:event.currentTarget.value 或从外部 state 直接读 keyword"
149
+ ],
150
+ "commonMistakes": [
151
+ "与 onClickBtn 语义重复时未合并为同一个函数 — 可在父组件定义 handleSearch 同时传给两个 prop",
152
+ "假设 onEnter 触发时 onChange 也会触发 — 回车不会触发 onChange,需在 onEnter 里单独处理搜索逻辑"
153
+ ]
154
+ }
155
+ },
156
+ "typescriptPitfalls": [
157
+ {
158
+ "issue": "onChange 签名与原生 input onChange 不同,第一参是 string 值而非 event",
159
+ "wrong": "onChange={(e) => setVal(e.target.value)} // TS 报 string 没有 .target 属性",
160
+ "right": "onChange={(val) => setVal(val)} // val: string 直接使用"
161
+ },
162
+ {
163
+ "issue": "onKeydown prop 名小写 d,不是 onKeyDown(驼峰 D)",
164
+ "wrong": "<Search onKeyDown={handler} /> // prop 名不存在,静默无效",
165
+ "right": "<Search onKeydown={handler} /> // src/Search/index.tsx:36 interface 实证 onKeydown 小写 d"
166
+ },
167
+ {
168
+ "issue": "onClickRightIcon 已废弃,运行时与 onClickBtn 同时触发造成双重执行",
169
+ "wrong": "<Search onClickRightIcon={handleSearch} /> // 废弃 API,src 注释明确不建议使用",
170
+ "right": "<Search onClickBtn={handleSearch} /> // 推荐替代 prop"
171
+ }
172
+ ],
173
+ "mapping": {
174
+ "realComponent": "Search",
175
+ "adapter": null
176
+ }
177
+ }
@@ -33,7 +33,7 @@ export interface SearchProps {
33
33
  onClear?: () => void;
34
34
  /** 回车事件 */
35
35
  onEnter?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
36
- [name: string]: any;
36
+ [name: string]: unknown;
37
37
  }
38
38
  export declare const Search: FunctionComponent<SearchProps>;
39
39
  export default Search;
@@ -0,0 +1,244 @@
1
+ {
2
+ "name": "Select",
3
+ "category": "Form",
4
+ "description": "下拉选择器,支持单选、多选、搜索和树形数据",
5
+ "semantic": {
6
+ "intent": [
7
+ "选择选项",
8
+ "搜素选择",
9
+ "多选"
10
+ ],
11
+ "useCases": [
12
+ "表单选择",
13
+ "数据筛选",
14
+ "标签输入"
15
+ ],
16
+ "riskLevel": "normal"
17
+ },
18
+ "variants": {
19
+ "default": {
20
+ "meaning": "标准选择器"
21
+ },
22
+ "multiple": {
23
+ "meaning": "多选选择器"
24
+ },
25
+ "search": {
26
+ "meaning": "带搜索的选择器"
27
+ }
28
+ },
29
+ "states": [
30
+ "default",
31
+ "disabled",
32
+ "error",
33
+ "open",
34
+ "loading"
35
+ ],
36
+ "idealProps": {
37
+ "value": {
38
+ "type": "T | T[] | undefined",
39
+ "description": "当前选中的值(受控)。**Select 是泛型组件 `Select<T extends SelectOptionValue, Item extends SelectOptionBase>`**——传 `<Select<'zh-CN'|'en-US'>>` 收紧 value 类型避免 as 强转(DEFECT-003);single=undefined 表示无选中、multiple=[] 表示空选"
40
+ },
41
+ "defaultValue": {
42
+ "type": "T | T[]",
43
+ "description": "默认值(非受控);同时传 value + defaultValue 时以 value 为准"
44
+ },
45
+ "onChange": {
46
+ "type": "(val: T | T[] | undefined, e: React.SyntheticEvent) => void",
47
+ "description": "选中值变化回调。**签名 `(val: T | T[] | undefined, e: React.SyntheticEvent) => void`**(DEFECT-001:src/Select/index.tsx:151/168/240 实证 — 带 e、带泛型 T、明确清空时 val=undefined 而非 '' 或 null)。**multiple=false 时** val 为 `T | undefined`(单选清空 → undefined);**multiple=true 时** val 为 `T[]`(空数组 [] 表已清空)。第二参数 e 是合成事件,业务侧不需要可省略。**泛型用法见 docs/view/select/api.ts 顶部 \"泛型签名\" 注释段**"
48
+ },
49
+ "list": {
50
+ "type": "Item[]",
51
+ "description": "数据源。`Item extends SelectOptionBase`,即 `{ label?: ReactNode; value?: string|number|boolean; disabled?: boolean; children?: SelectOptionBase[] }`。**自定义字段名时(如 cityName/cityCode),interface 必须 extends SelectOptionBase 或加 `label?/value?` 可选字段,否则 TypeScript 报不兼容错误。** 推荐:`interface MyOption extends SelectOptionBase { cityName: string; cityCode: string }` 配合 `showName='cityName' showValue='cityCode'`"
52
+ },
53
+ "renderContent": {
54
+ "type": "function",
55
+ "signature": "(item: Item, type: boolean | 'more') => ReactNode",
56
+ "description": "自定义选项 / 选中态渲染(DEFECT-002)。**第二参数 type 三态**:`type === false` → 渲染选中态(在选择框中回显);`type === true` → 渲染下拉浮层中的每一项;`type === 'more'` → 渲染下拉浮层底部的『更多』占位项。historic 命名 isSelect 实际语义按 type 三态对应"
57
+ },
58
+ "placeholder": {
59
+ "type": "ReactNode",
60
+ "description": "选择框默认文字"
61
+ },
62
+ "disabled": {
63
+ "type": "boolean | any[]",
64
+ "default": false,
65
+ "description": "禁用控制。boolean=整体禁用;any[]=**禁用部分选项的 value 列表**(src 实证 `disabled.indexOf(val)`,传 value 数组而非 option 对象数组或索引)"
66
+ },
67
+ "allowClear": {
68
+ "type": "boolean",
69
+ "default": false,
70
+ "description": "支持清除"
71
+ },
72
+ "search": {
73
+ "type": "boolean",
74
+ "default": false,
75
+ "description": "是否使能搜索(不传 fetchSuggestions 时按 showName 字段做客户端 includes 子串匹配)"
76
+ },
77
+ "multiple": {
78
+ "type": "boolean",
79
+ "default": false,
80
+ "description": "是否多选"
81
+ },
82
+ "size": {
83
+ "type": "enum",
84
+ "values": [
85
+ "small",
86
+ "medium",
87
+ "large"
88
+ ],
89
+ "default": "large"
90
+ },
91
+ "label": {
92
+ "type": "ReactNode",
93
+ "description": "标签文本"
94
+ },
95
+ "labelMode": {
96
+ "type": "enum",
97
+ "values": [
98
+ "outside",
99
+ "inside"
100
+ ],
101
+ "default": "outside"
102
+ },
103
+ "showName": {
104
+ "type": "string",
105
+ "default": "label",
106
+ "required": false,
107
+ "description": "数据源的显示字段名,默认 'label'。⚠️ AI 常见错误:数据源字段名不是 label 时忘记传此 prop,导致下拉无文字或显示 undefined。正确做法:数据格式为 { name, id } 时传 showName='name'"
108
+ },
109
+ "showValue": {
110
+ "type": "string",
111
+ "default": "value",
112
+ "required": false,
113
+ "description": "数据源的取值字段名,默认 'value'。⚠️ AI 常见错误:数据源字段名不是 value 时忘记传此 prop,导致 onChange 返回 undefined 或选中异常。正确做法:数据格式为 { name, id } 时传 showValue='id'"
114
+ },
115
+ "childrenName": {
116
+ "type": "string",
117
+ "default": "children",
118
+ "required": false,
119
+ "description": "数据源的子级字段名,默认 'children',树形 Select 时使用。数据格式为 { name, id, subItems } 时传 childrenName='subItems'"
120
+ },
121
+ "fetchSuggestions": {
122
+ "type": "(inputValue: string, callback: (suggestions: any[]) => void) => void",
123
+ "required": false,
124
+ "description": "异步搜索回调,search=true 时生效。用户输入时触发,通过 callback 返回建议列表。⚠️ 传了 fetchSuggestions 则客户端 includes 过滤失效,建议列表完全由 callback 控制"
125
+ },
126
+ "searchModel": {
127
+ "type": "enum",
128
+ "values": ["outside", "inside"],
129
+ "default": "inside",
130
+ "required": false,
131
+ "description": "搜索框位置,outside=浮层外(触发框变搜索框)/ inside=浮层内(下拉顶部搜索框,默认)"
132
+ },
133
+ "onClear": {
134
+ "type": "() => void",
135
+ "required": false,
136
+ "description": "点击清空按钮时触发,allowClear=true 时有效"
137
+ },
138
+ "onEnterInput": {
139
+ "type": "(val: string) => void",
140
+ "required": false,
141
+ "description": "搜索框回车事件,val 为当前搜索框输入值"
142
+ }
143
+ },
144
+ "commonMisconceptions": [
145
+ "AI 常见错误:数据源字段名不是 label/value 时,忘记传 showName/showValue,导致下拉无数据或显示异常。正确做法:数据格式为 { name, id } 时,应传 showName='name' showValue='id'",
146
+ "AI 常见错误:自定义 interface(如 { cityName, cityCode })直接传给 list,TypeScript 报 '不满足 SelectOptionBase'——正确做法:interface MyOption extends SelectOptionBase { cityName: string; cityCode: string },或在 interface 里加 label?/value? 可选字段",
147
+ "AI 常见错误:onChange 单选清空时误以为 val 为 '' 或 null——实际为 undefined(DEFECT-001)",
148
+ "AI 常见错误:按 renderContent 参数名 isSelect 字面理解——实际按 type 三态(false=选中回显/true=下拉项/'more'=占位)(DEFECT-002)"
149
+ ],
150
+ "do": [
151
+ "选项过多时应当使用 search 开启搜索功能",
152
+ "使用 list 属性传入其数据源以优化性能",
153
+ "**显式收紧 value 泛型**:`<Select<'zh-CN'|'en-US'> value={lang} ... />`,避免 as 强转(DEFECT-003)",
154
+ "renderContent 用 type 取值区分三态:`type === false` 选中态、`type === true` 下拉项、`type === 'more'` 占位项",
155
+ "disabled 数组传 value 列表(不是 option 对象、不是索引)"
156
+ ],
157
+ "dont": [
158
+ "选项少于 5 个时建议优先使用 Radio.Group",
159
+ "直接在 options 中渲染过于复杂的 DOM 结构",
160
+ "不要假设 onChange 单选清空时 val 为 \\'\\\\'\\\\' 或 null——实际为 undefined(DEFECT-001)",
161
+ "不要按 renderContent 参数名 isSelect 字面理解——实际按 type 三态(DEFECT-002)"
162
+ ],
163
+ "events": {
164
+ "onChange": {
165
+ "signature": "(val: T | T[] | undefined, e: React.SyntheticEvent) => void",
166
+ "asyncSupported": false,
167
+ "examples": [
168
+ "单选时接收选中项 value(清空时 val 为 undefined,不是 '' 或 null)",
169
+ "多选时接收当前已选项的 value 数组(清空时 val 为 [])",
170
+ "结合泛型收紧类型:<Select<number> onChange={(val) => setId(val)} />(val 推断为 number | undefined)"
171
+ ],
172
+ "commonMistakes": [
173
+ "假设单选清空时 val 为 ''——实际为 undefined(src/Select/index.tsx:151 `onChange?: (val: T | undefined, e: React.SyntheticEvent) => void`)",
174
+ "忽略第二参数 e(SyntheticEvent),直接写 onChange={handleChange} 时 TypeScript 报签名不匹配——应写 (val, _e) => handle(val)",
175
+ "多选模式下假设 val 不会是数组——multiple=true 时 val 始终是 T[],即使只选了一项也是 [item]",
176
+ "假设 onChange 只在点击选项时触发——清空按钮(allowClear=true)也触发 onChange,此时 val 为 undefined 或 []"
177
+ ]
178
+ },
179
+ "onEnter": {
180
+ "signature": "(val: T | T[]) => void",
181
+ "asyncSupported": false,
182
+ "examples": [
183
+ "单选模式:用户在选中项后按回车,val 为当前选中的单值",
184
+ "多选模式:val 为当前已选的 T[] 数组"
185
+ ],
186
+ "commonMistakes": [
187
+ "与 onEnterInput 混淆——onEnter 是选中回车(在选项上回车),onEnterInput 是搜索框输入回车(val 为搜索字符串)",
188
+ "假设 onEnter 一定触发——仅在 search=true 或 input=true 模式下且搜索框/输入框有焦点时有效"
189
+ ]
190
+ },
191
+ "onClear": {
192
+ "signature": "() => void",
193
+ "asyncSupported": false,
194
+ "examples": [
195
+ "用户点击清空图标时触发(需 allowClear=true),此时 onChange 也会同时触发"
196
+ ],
197
+ "commonMistakes": [
198
+ "只监听 onClear 而不监听 onChange——受控模式下还需在 onChange 中同步清空 state",
199
+ "allowClear=false 时期望 onClear 触发——不会触发,清空按钮不显示"
200
+ ]
201
+ },
202
+ "onEnterInput": {
203
+ "signature": "(val: string) => void",
204
+ "asyncSupported": false,
205
+ "examples": [
206
+ "搜索框回车时触发,val 为当前输入的字符串——适合实现「按回车新建标签」场景"
207
+ ],
208
+ "commonMistakes": [
209
+ "与 onEnter 混淆——onEnterInput 是搜索输入框回车,onEnter 是选项选中回车"
210
+ ]
211
+ }
212
+ },
213
+ "typescriptPitfalls": [
214
+ {
215
+ "issue": "onChange 签名带第二参数 e: React.SyntheticEvent,直接传函数时签名不匹配",
216
+ "wrong": "onChange={setLang} // setLang: (val: string) => void,少了 e 参数",
217
+ "right": "onChange={(val, _e) => setLang(val ?? '')} // 显式声明,保持签名兼容"
218
+ },
219
+ {
220
+ "issue": "自定义数据结构未 extends SelectOptionBase,直接传给 list 报类型错误",
221
+ "wrong": "interface CityOpt { cityName: string; cityCode: string } // 无 label/value,不兼容 SelectOptionBase",
222
+ "right": "interface CityOpt extends SelectOptionBase { cityName: string; cityCode: string } // 配合 showName='cityName' showValue='cityCode'"
223
+ },
224
+ {
225
+ "issue": "disabled 传对象数组而非 value 列表,运行时选项不禁用",
226
+ "wrong": "disabled={[{ label: 'A', value: 'a' }]} // 传了整个 option 对象,indexOf 永远匹配不到",
227
+ "right": "disabled={['a', 'b']} // 传禁用项的 value(取值字段)列表(src 实证 disabled.indexOf(val))"
228
+ },
229
+ {
230
+ "issue": "多选模式 value 传单值而非数组,受控不生效",
231
+ "wrong": "<Select multiple value={'a'} /> // multiple=true 时 value 应为 T[]",
232
+ "right": "<Select multiple value={['a']} /> // 多选 value 始终是数组"
233
+ },
234
+ {
235
+ "issue": "renderContent 用 isSelect 命名的第二参数字面理解为 boolean,忽略 'more' 态",
236
+ "wrong": "renderContent={(item, isSelect) => isSelect ? <Selected /> : <Option />} // 漏掉 isSelect==='more' 分支",
237
+ "right": "renderContent={(item, type) => type === false ? <Selected /> : type === 'more' ? <MoreTag /> : <Option />}"
238
+ }
239
+ ],
240
+ "mapping": {
241
+ "realComponent": "Select",
242
+ "adapter": null
243
+ }
244
+ }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const o=require("../_virtual/jsx-runtime.js"),c=require("react"),wt=require("../Empty/index.js"),$t=require("../Label/index.js"),bt=require("../Dropdown/index.js"),oe=require("@snack-kit/lib"),kt=require("../GlobalContext/index.js"),Qe=require("../node_modules/@para-ui/icons/Close/index.js"),Nt=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),Mt=require("../node_modules/@para-ui/icons/Down/index.js"),Dt=require("../node_modules/@para-ui/icons/Check/index.js"),qt=require("../GlobalContext/useFormatMessage.js"),Tt=require("./lang/index.js"),pe=require("../AutoTips/index.js"),Lt=require("../Loading/index.js"),Ot=require("../Popover/index.js"),Pt=require("../Search/index.js"),Ft=require("../Tooltip/index.js"),It=require("../HelperText/index.js"),Vt=require("../Hooks/useGlobalProps.js"),h=require("../GlobalContext/constant.js");;/* empty css */const g=(D,f)=>D[f],zt=(D,f,N)=>{D[f]=N},_t=(D,f,N)=>{const C=document.createElement("span");C.id="referenceSpan";const R={width:0,height:0};R.width=C.offsetWidth,R.height=C.offsetHeight,C.style.visibility="hidden",C.style.fontSize=D,C.style.fontFamily=f,C.style.display="inline-block";const z=document.getElementById("referenceSpan");return z&&document.body.removeChild(z),document.body.appendChild(C),typeof C.textContent<"u"?C.textContent=N:C.innerText=N,R.width=parseFloat(window.getComputedStyle(C).width)-R.width,R.height=parseFloat(window.getComputedStyle(C).height)-R.height,document.body.removeChild(C),R},Xe=(D,f)=>{const N=c.useRef(!1);c.useEffect(()=>{N.current?D():N.current=!0},f)};function Ht(D){const f=D,{className:N,style:C,showSelect:R=!0,allowClear:z=!1,emptyProps:ne,size:_="large",labelMode:J="outside",labelTooltip:W,placeholder:le="",searchPlaceholder:Ee,label:H="",input:O=!1,disabled:m=!1,disabledTooltip:ye,multiple:p=!1,required:B=!1,labelSign:P,error:Se=!1,hideErrorDom:Ye,helperText:Ze="",list:re,showName:b="label",showValue:k="value",childrenName:Q="children",value:$,onChange:v,overLine:Re=!1,search:F=!1,searchModel:E="inside",selectPopoverClassName:we,morePopoverClassName:$e,fetchSuggestions:be,searchInputProps:j,onEnter:K,onEnterInput:ke,onClear:de,getPopupContainer:et,renderContent:w,selectCheckIcon:me=!0,blurChangeValueBol:ie=!1}=Vt.default(f,"Select"),fe=(e=[])=>{const s=[];for(let t=0,l=e.length;t<l;t++){const n=e[t];if(typeof n=="object"&&n!==null)s.push(n);else{const u={[b]:n,[k]:n};s.push(u)}}return s},tt=()=>{let e=[];return f.defaultValue!==void 0&&(p?e=oe.DeepClone(f.defaultValue||[]):e=f.defaultValue===""?[]:[f.defaultValue]),$!==void 0&&(p?e=oe.DeepClone($||[]):e=$===""?[]:[$]),e},Ne=()=>{const e=fe(re),s={};for(let t=0,l=e.length;t<l;t++){const n=e[t],u=g(n,Q);if(u&&u.length>0){const a=u;for(let S=0,x=a.length;S<x;S++){const T=a[S],L=String(g(T,k));s[L]=T}}else{const a=String(g(n,k));s[a]=n}}return s},A=c.useRef(null),[Me]=c.useState(`${h.$prefixCls}-select-${oe.UUID()}`),[X]=c.useState(`select-popover-${oe.UUID()}`),[I,Y]=c.useState(!1),[Z,xe]=c.useState(!1),[r,M]=c.useState(tt()),[U,st]=c.useState([]),[y,ot]=c.useState(Ne()),[q,he]=c.useState(null),[ve,De]=c.useState(!1),[d,G]=c.useState(""),[V,qe]=c.useState(!1),[ee,ce]=c.useState(!1),[je,nt]=c.useState(!1),te=c.useRef(null),[i]=c.useState({valueCom:[],listCom:[],searchModel:"inside",openMore:!1}),{language:Te,locale:Le}=c.useContext(kt.default),Oe=qt.default("Select",Tt.default);i.valueCom=[...r],i.listCom=U,i.searchModel=E,i.openMore=ve,c.useEffect(()=>()=>{clearTimeout(i.searchTimer),clearTimeout(i.timer),clearTimeout(i.scrollTimer),clearTimeout(i.dropDownTimer)},[]),Xe(()=>{if($===void 0){M([]);return}M(p?oe.DeepClone($||[]):$===""?[]:[$])},[$,p]),c.useEffect(()=>{ae()},[r,$]),c.useEffect(()=>{if(E==="outside"&&p)return qe(!0);qe(Re)},[Re,E,p,O]),Xe(()=>{ot(Ne())},[re]),c.useEffect(()=>(!V&&p?window.addEventListener("resize",ae):window.removeEventListener("resize",ae),()=>{window.removeEventListener("resize",ae)}),[V,p]),c.useEffect(()=>{r&&r.length>0?xe(!0):(xe(!1),E==="outside"&&xe(d!==""))},[F,d,E,r,O]),c.useEffect(()=>{if(I)if(ce(!0),be)be(d,e=>{const s=fe(e);Fe(s,!0),ce(!1)});else{const e=fe(re);Fe(e),ce(!1)}},[F,d,re,I]),c.useEffect(()=>(I?(clearTimeout(i.openTimer),i.openTimer=setTimeout(()=>{Ie(),window.addEventListener("keydown",Ce)})):(G(""),window.removeEventListener("keydown",Ce)),()=>{clearTimeout(i.openTimer),window.removeEventListener("keydown",Ce)}),[I]),c.useEffect(()=>{m!==!0&&p&&E==="outside"&&ft(d)},[d,p,m,E,O]);const Pe=e=>{if(e===null||e===0)return;e===void 0&&(e=i.valueCom.length);const s=document.querySelector(`.${Me} > .select-content > .check-select-content`);if(s)if(s.scrollHeight>s.clientHeight){const t=Number(e)-1;he(t),Pe(t)}else i.valueCom.length<=e&&_e()},ae=()=>{if(i.valueCom.length===0)return he(null);clearTimeout(i.timer),i.timer=setTimeout(()=>{he(i.valueCom.length),Pe()},50)},Fe=(e,s)=>{const t=[],l=[...e];for(let n=0,u=l.length;n<u;n++){const a={...l[n]},S=g(a,Q);if(S&&S.length>0){const x=S,T=[];for(let L=0,se=x.length;L<se;L++){const ge=x[L];(s||ze(ge))&&T.push(ge)}T.length>0&&(zt(a,Q,T),t.push(a))}else(s||ze(a))&&t.push(a)}st(t),ce(!1),nt(t.length===0)},Ie=()=>{const e=te&&te.current;i.searchModel!=="inside"&&e&&e.focus({preventScroll:!0})},Ve=(e,s)=>{let t=e;const l=t&&(t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector);if(!l)return null;for(;t&&!l.call(t,s);)t=t.parentElement;return t},ze=e=>{let s=!0;if(d.trim()==="")return s;const t=g(e,b);return t&&(typeof t=="number"||typeof t=="string")?t.toString().toLowerCase().indexOf(d.trim().toLowerCase())===-1&&(s=!1):s=!1,s},lt=()=>{m!==!0&&Y(!0)},rt=()=>{Y(!1)},it=e=>{De(!0),Y(!1),e.stopPropagation()},_e=()=>{i.openMore&&De(!1)},ue=(e,s)=>t=>{const l=g(e,k);if(!(typeof m=="object"&&m.indexOf(l)!==-1))if(p){const n=i.valueCom.indexOf(l);n!==-1?i.valueCom.splice(n,1):i.valueCom.push(l),f.value===void 0&&M([...i.valueCom]),v&&v([...i.valueCom],t),s&&K&&K([...i.valueCom]),Ie()}else f.value===void 0&&M([l]),v&&v(l,t),s&&K&&K(l),rt(),G("")},He=(e,s)=>t=>{e||(e={[k]:s,children:[]}),ue(e)(t),t.stopPropagation()},ct=()=>{let e=`${h.$prefixCls}-select`;return p&&!V&&(e+=` ${Me}`),N&&(e+=` ${N}`),_&&(e+=` ${h.$prefixCls}-select-${_}`),Se&&(e+=` ${h.$prefixCls}-select-error`),m===!0&&(e+=` ${h.$prefixCls}-select-disabled`),I&&(e+=` ${h.$prefixCls}-select-open`),p&&(e+=` ${h.$prefixCls}-select-multiple`),V&&(e+=` ${h.$prefixCls}-select-over-line`),R&&(e+=` ${h.$prefixCls}-select-show-select`),r.length>0&&(e+=` ${h.$prefixCls}-select-value`),z&&(e+=` ${h.$prefixCls}-select-allow-clear`),e},at=()=>{let e=`${h.$prefixCls}-select-popover ${h.$prefixCls}-scrollbar-small`;return _&&(e+=` ${h.$prefixCls}-select-popover-${_}`),p?e+=` ${h.$prefixCls}-select-popover-multiple`:e+=` ${h.$prefixCls}-select-popover-radio`,we&&(e+=` ${we}`),R||(e+=` ${h.$prefixCls}-select-popover-hide`),e},ut=()=>{let e=`${h.$prefixCls}-select-more-popover ${h.$prefixCls}-scrollbar-small`;return _&&(e+=` ${h.$prefixCls}-select-more-popover-${_}`),$e&&(e+=` ${$e}`),e},pt=e=>{G(e.target.value),j&&j.onChange&&j.onChange(e)},dt=(e,s)=>{G(e),s&&j?.onChange&&j.onChange(s)},Be=e=>{if(e.keyCode===13){ke&&ke(d);const s=document.querySelector(`.${X} .select-popover-list`);if(s){const t=s.querySelector(".select-popover-list-item-hover");if(s.querySelector(".select-popover-list-item-keydown")||t)return}if(f.input&&d.trim()!==""){if(p){const t=[...r,d];f.value===void 0&&M(t),v&&v(t,e)}else f.value===void 0&&M([d]),v&&v(d,e);G("")}}j&&j.onKeyDown&&j.onKeyDown(e)},mt=e=>{if(f.input&&ie&&d.trim()!==""){if(p){const s=[...r,d];f.value===void 0&&M(s),v&&v(s,e)}else f.value===void 0&&M([d]),v&&v(d,e);G("")}i.inputOpen=!1,j&&j.onBlur?.(e)},ft=e=>{const s=te&&te.current;if(!s)return null;const t=window.getComputedStyle(s),l=t.fontFamily,n=t.fontSize;let a=_t(n,l,e).width;a<10&&(a=10),s.style.width=`${a}px`},Ke=e=>{const{selectDom:s,keyCode:t,currentKeydownDom:l}=e;let n=null,u="nextElementSibling",a=".select-popover-list > div",S=".select-popover-list-item";if(t===38&&(u="previousElementSibling",a=".select-popover-list > div:last-child",S=".select-popover-list-item:last-child"),!l)n=s.querySelector(a);else if(n=l[u],n){if(n.className.indexOf("select-popover-list-group-label")!==-1){const x=l.parentElement;x&&(n=x[u],n||(n=s.querySelector(a)))}}else{const x=l.parentElement;x&&x.className&&x.className.indexOf("select-popover-list-group")!==-1?(n=x[u],n||(n=s.querySelector(a))):n=s.querySelector(a)}if(n)if(n.className.indexOf("select-popover-list-group")!==-1){const x=n.querySelector(S);x&&(x.classList.add("select-popover-list-item-keydown"),Ae(x,s))}else n.classList.add("select-popover-list-item-keydown"),Ae(n,s)},Ae=(e,s)=>{clearTimeout(i.scrollTimer);const t=s.clientHeight,n=e.offsetTop+e.clientHeight-t;i.scroll=!0,n>0?s.scrollTop=n:s.scrollTop=0,i.scrollTimer=setTimeout(()=>{i.scroll=!1},100)},Ce=e=>{const s=document.querySelector(`.${X} .select-popover-list`);if(!s)return;const t=s.querySelector(".select-popover-list-item-select"),l=s.querySelector(".select-popover-list-item-hover"),n=s.querySelector(".select-popover-list-item-keydown");let u=t;if(l&&(u=l),e.keyCode===13){const a=n||l;if(a){const S=a.dataset.val;ue(y[S],!0)({target:n})}else K&&$!==void 0&&K($)}n&&(u=n,n.classList.remove("select-popover-list-item-keydown")),e.keyCode===40&&Ke({selectDom:s,keyCode:e.keyCode,currentKeydownDom:u}),e.keyCode===38&&Ke({selectDom:s,keyCode:e.keyCode,currentKeydownDom:u})},Ue=e=>{if(i.scroll)return;const s=Ve(e.target,".select-popover-list-item");if(!s)return;s.classList.add("select-popover-list-item-hover");const t=document.querySelector(`.${X}`);if(!t)return;const l=t.querySelector(".select-popover-list-item-keydown");l&&l.classList.remove("select-popover-list-item-keydown")},Ge=e=>{const s=Ve(e.target,".select-popover-list-item");s&&s.classList.remove("select-popover-list-item-hover")},xt=c.useMemo(()=>{const e=!!(H||B||P),s=()=>{let t="select-label";return W&&W.className&&(t+=` ${W.className}`),t};return o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:J==="outside"&&e&&o.jsxRuntimeExports.jsx($t.default,{label:H,required:B,labelSign:P,...W,className:s()})})},[J,H,P,B,W]),ht=c.useMemo(()=>{const e=()=>J==="outside"?le:o.jsxRuntimeExports.jsxs(o.jsxRuntimeExports.Fragment,{children:[H||le,B&&o.jsxRuntimeExports.jsx("span",{className:"select-required",children:"*"}),P&&o.jsxRuntimeExports.jsx("span",{children:P})]});return o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:!Z&&o.jsxRuntimeExports.jsx("span",{className:"select-label-placeholder",children:e()})})},[Z,J,le,H,P,B]),Je=e=>{if(m===!0)return null;const s=`${e}-search-outside`;return E==="outside"?o.jsxRuntimeExports.jsx("input",{...j,onClick:t=>{i.inputOpen=!0,j&&j.onClick?.(t)},onBlur:mt,className:s,value:d,onChange:pt,onKeyDown:Be,ref:te}):null},vt=c.useMemo(()=>{const e=()=>{if(d!==""&&(E==="outside"||O))return null;const s=String(r[0]),t=y[s]&&g(y[s],b)||r[0],l=w&&w(y[s],!1);return V?l||t:o.jsxRuntimeExports.jsx(pe.default,{placement:"top-start",children:l||t})};return o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:!p&&o.jsxRuntimeExports.jsxs(o.jsxRuntimeExports.Fragment,{children:[o.jsxRuntimeExports.jsx("div",{className:"radio-select-content",children:e()}),Je("radio")]})})},[p,Z,V,y,r,b,F,E,d,m,O,j,w,ie]),jt=c.useMemo(()=>{const e=s=>{const t=String(r[s]),l=y[t]&&g(y[t],b)||r[s];return w&&w(y[t],!1)||l};return o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:p&&o.jsxRuntimeExports.jsxs("div",{className:"check-select-content",children:[r&&r.map((s,t)=>{if(q!==null&&q<=t)return null;let l=!0;(m===!0||typeof m=="object"&&m.indexOf(r[t])!==-1)&&(l=!1);let n="check-select-content-item check-select-content-item-select";return l||(n+=" check-select-content-item-noclose"),o.jsxRuntimeExports.jsxs("div",{className:n,children:[o.jsxRuntimeExports.jsx("span",{children:o.jsxRuntimeExports.jsx(pe.default,{placement:"top-start",children:e(t)})}),l&&o.jsxRuntimeExports.jsx(Qe.Close,{onClick:He(y[String(r[t])],r[t])})]},t)}),(()=>{if(q!==null&&r.length>q)return o.jsxRuntimeExports.jsx("div",{className:"check-select-content-item check-select-content-item-more",onClick:it,children:o.jsxRuntimeExports.jsxs("span",{children:["+",r.length-q]})})})(),Je("check")]})})},[p,Z,r,q,y,m,v,d,F,E,O,j,w,ie]),Ct=e=>{e.stopPropagation();const s=[];let t;if(p&&(t=[],m instanceof Array))for(let l=0,n=r.length;l<n;l++){const u=r[l];m.indexOf(u)!==-1&&(t.push(u),s.push(u))}f.value===void 0&&M(s),v&&v(t,e),Y(!1),de&&de()},gt=()=>{if(r.length>0&&m!==!0&&z)return o.jsxRuntimeExports.jsx("span",{className:"clean-up-icon",onClick:Ct,children:o.jsxRuntimeExports.jsx(Nt.CloseCircleF,{})})},Et=()=>{const e=s=>{const t=String(r[s]),l=y[t]&&g(y[t],b)||r[s];return w&&w(y[t],"more")||l};return o.jsxRuntimeExports.jsxs("div",{className:"select-more",children:[o.jsxRuntimeExports.jsx("div",{className:"select-more-title",children:o.jsxRuntimeExports.jsx("span",{children:Oe({id:"more"})})}),o.jsxRuntimeExports.jsx("div",{className:"select-more-content",children:r&&r.map((s,t)=>{if(q!==null&&q>t)return null;let l=!0;return(m===!0||typeof m=="object"&&m.indexOf(r[t])!==-1)&&(l=!1),o.jsxRuntimeExports.jsxs("div",{className:"select-more-content-item",children:[o.jsxRuntimeExports.jsx("span",{children:o.jsxRuntimeExports.jsx(pe.default,{placement:"top-start",children:e(t)})}),l&&o.jsxRuntimeExports.jsx(Qe.Close,{onClick:He(y[String(r[t])],r[t])})]},t)})})]})},We=c.useMemo(()=>o.jsxRuntimeExports.jsx(Ot.Popover,{placement:"bottom-end",visible:ve,content:Et(),onVisibleChange:_e,overlayClassName:ut(),children:o.jsxRuntimeExports.jsxs("div",{className:"select-content",onClick:lt,ref:A,children:[ht,o.jsxRuntimeExports.jsxs("span",{className:"select-svg",children:[o.jsxRuntimeExports.jsx(Mt.Down,{}),gt()]}),vt,jt]})}),[A,Z,J,le,H,P,B,V,y,r,b,p,q,m,v,d,E,O,R,j,z,de,ve,w,ie]),yt=c.useMemo(()=>{const e=()=>{let t="select-popover-list";return ee&&(t+=" select-popover-list-loading"),t},s=t=>{const l=g(t,b)||g(t,k),n=w&&w(t,!0);return o.jsxRuntimeExports.jsxs(o.jsxRuntimeExports.Fragment,{children:[o.jsxRuntimeExports.jsx("span",{className:"select-popover-list-item-label",children:o.jsxRuntimeExports.jsx(pe.default,{placement:"top-start",children:n||l})}),p&&me&&o.jsxRuntimeExports.jsx("span",{className:"select-popover-list-item-svg",children:o.jsxRuntimeExports.jsx(Dt.Check,{})})]})};return o.jsxRuntimeExports.jsxs("div",{className:e(),style:{outline:"1px solid transparent"},children:[U&&U.length>0?o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:U.map((t,l)=>{const n=g(t,Q);if(n&&n.length>0){const S=n;return o.jsxRuntimeExports.jsxs("div",{className:"select-popover-list-group",children:[o.jsxRuntimeExports.jsx("span",{className:"select-popover-list-group-label",children:g(t,b)||g(t,k)}),S.map((x,T)=>{const L=g(x,k);let se="select-popover-list-item";return r.indexOf(L)!==-1&&(se+=" select-popover-list-item-select"),typeof m=="object"&&m.indexOf(L)!==-1&&(se+=" select-popover-list-item-disabled"),o.jsxRuntimeExports.jsx("div",{onClick:ue(x),className:se,onMouseEnter:Ue,onMouseLeave:Ge,"data-val":L,children:s(x)},T)})]},l)}const u=g(t,k);let a="select-popover-list-item";return r.indexOf(u)!==-1&&(a+=" select-popover-list-item-select"),typeof m=="object"&&m.indexOf(u)!==-1&&(a+=" select-popover-list-item-disabled"),o.jsxRuntimeExports.jsx("div",{onClick:ue(t),className:a,onMouseEnter:Ue,onMouseLeave:Ge,"data-val":u,children:s(t)},l)})}):!ee&&je&&o.jsxRuntimeExports.jsx("div",{className:"select-nodata",children:o.jsxRuntimeExports.jsx(wt.default,{...ne,size:ne?.size||"small"})}),ee&&o.jsxRuntimeExports.jsx(Lt.Loading,{})]})},[U,b,k,r,v,p,ee,Te,Le,ne,je,w,me]),St=c.useMemo(()=>{if(!R)return"";const e=()=>{let s=`select-popover-content ${X}`;return F&&E==="inside"&&(s+=" select-popover-content-search"),s};return o.jsxRuntimeExports.jsxs("div",{style:{width:`${A&&A.current?A.current.offsetWidth:0}px`},className:e(),children:[F&&E==="inside"&&o.jsxRuntimeExports.jsx(Pt.Search,{placeholder:Ee||Oe({id:"searchPlaceholder"}),onKeydown:Be,value:d,onChange:dt,className:"select-popover-search"}),yt]})},[I,A,U,Q,k,b,r,d,F,X,E,p,Ee,R,ee,j,Te,Le,ne,je,w,me]),Rt=()=>o.jsxRuntimeExports.jsx(bt.Dropdown,{visible:I,placement:"bottomLeft",trigger:["click"],overlay:o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:St}),overlayClassName:at(),getPopupContainer:et,onVisibleChange:e=>{e||(clearTimeout(i.dropDownTimer),i.dropDownTimer=setTimeout(()=>{i.inputOpen||Y(!1)},0))},children:ye?o.jsxRuntimeExports.jsx(Ft.Tooltip,{disabled:!0,...ye,children:We}):We});return o.jsxRuntimeExports.jsxs("div",{className:ct(),style:C,children:[xt,Rt(),o.jsxRuntimeExports.jsx(It.default,{className:"select-error-text",error:Se,helperText:Ze,hideErrorDom:Ye})]})}exports.default=Ht;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const o=require("../_virtual/jsx-runtime.js"),c=require("react"),wt=require("../Empty/index.js"),$t=require("../Label/index.js"),bt=require("../Dropdown/index.js"),oe=require("@snack-kit/lib"),kt=require("../GlobalContext/index.js"),Qe=require("../node_modules/@para-ui/icons/Close/index.js"),Nt=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),Mt=require("../node_modules/@para-ui/icons/Down/index.js"),Dt=require("../node_modules/@para-ui/icons/Check/index.js"),qt=require("../GlobalContext/useFormatMessage.js"),Tt=require("./lang/index.js"),pe=require("../AutoTips/index.js"),Lt=require("../Loading/index.js"),Ot=require("../Popover/index.js"),Pt=require("../Search/index.js"),Ft=require("../Tooltip/index.js"),It=require("../HelperText/index.js"),Vt=require("../Hooks/useGlobalProps.js"),h=require("../GlobalContext/constant.js");;/* empty css */const E=(D,f)=>D[f],zt=(D,f,N)=>{D[f]=N},_t=(D,f,N)=>{const g=document.createElement("span");g.id="referenceSpan";const R={width:0,height:0};R.width=g.offsetWidth,R.height=g.offsetHeight,g.style.visibility="hidden",g.style.fontSize=D,g.style.fontFamily=f,g.style.display="inline-block";const z=document.getElementById("referenceSpan");return z&&document.body.removeChild(z),document.body.appendChild(g),typeof g.textContent<"u"?g.textContent=N:g.innerText=N,R.width=parseFloat(window.getComputedStyle(g).width)-R.width,R.height=parseFloat(window.getComputedStyle(g).height)-R.height,document.body.removeChild(g),R},Xe=(D,f)=>{const N=c.useRef(!1);c.useEffect(()=>{N.current?D():N.current=!0},f)};function Ht(D){const f=D,{className:N,style:g,showSelect:R=!0,allowClear:z=!1,emptyProps:ne,size:_="large",labelMode:J="outside",labelTooltip:W,placeholder:le="",searchPlaceholder:Ee,label:H="",input:O=!1,disabled:m=!1,disabledTooltip:ye,multiple:p=!1,required:B=!1,labelSign:P,error:Se=!1,hideErrorDom:Ye,helperText:Ze="",list:re,showName:b="label",showValue:k="value",childrenName:Q="children",value:$,onChange:j,overLine:Re=!1,search:F=!1,searchModel:y="inside",selectPopoverClassName:we,morePopoverClassName:$e,fetchSuggestions:be,searchInputProps:C,onEnter:K,onEnterInput:ke,onClear:de,getPopupContainer:et,renderContent:w,selectCheckIcon:me=!0,blurChangeValueBol:ie=!1}=Vt.default(f,"Select"),fe=(e=[])=>{const s=[];for(let t=0,l=e.length;t<l;t++){const n=e[t];if(typeof n=="object"&&n!==null)s.push(n);else{const u={[b]:n,[k]:n};s.push(u)}}return s},tt=()=>{let e=[];return f.defaultValue!==void 0&&(p?e=oe.DeepClone(f.defaultValue||[]):e=f.defaultValue===""?[]:[f.defaultValue]),$!==void 0&&(p?e=oe.DeepClone($||[]):e=$===""?[]:[$]),e},Ne=()=>{const e=fe(re),s={};for(let t=0,l=e.length;t<l;t++){const n=e[t],u=E(n,Q);if(u&&u.length>0){const a=u;for(let S=0,x=a.length;S<x;S++){const T=a[S],L=String(E(T,k));s[L]=T}}else{const a=String(E(n,k));s[a]=n}}return s},A=c.useRef(null),[Me]=c.useState(`${h.$prefixCls}-select-${oe.UUID()}`),[X]=c.useState(`select-popover-${oe.UUID()}`),[I,Y]=c.useState(!1),[Z,xe]=c.useState(!1),[r,M]=c.useState(tt()),[U,st]=c.useState([]),[v,ot]=c.useState(Ne()),[q,he]=c.useState(null),[ve,De]=c.useState(!1),[d,G]=c.useState(""),[V,qe]=c.useState(!1),[ee,ce]=c.useState(!1),[je,nt]=c.useState(!1),te=c.useRef(null),[i]=c.useState({valueCom:[],listCom:[],searchModel:"inside",openMore:!1}),{language:Te,locale:Le}=c.useContext(kt.default),Oe=qt.default("Select",Tt.default);i.valueCom=[...r],i.listCom=U,i.searchModel=y,i.openMore=ve,c.useEffect(()=>()=>{clearTimeout(i.searchTimer),clearTimeout(i.timer),clearTimeout(i.scrollTimer),clearTimeout(i.dropDownTimer)},[]),Xe(()=>{if($===void 0){M([]);return}M(p?oe.DeepClone($||[]):$===""?[]:[$])},[$,p]),c.useEffect(()=>{ae()},[r,$]),c.useEffect(()=>{if(y==="outside"&&p)return qe(!0);qe(Re)},[Re,y,p,O]),Xe(()=>{ot(Ne())},[re]),c.useEffect(()=>(!V&&p?window.addEventListener("resize",ae):window.removeEventListener("resize",ae),()=>{window.removeEventListener("resize",ae)}),[V,p]),c.useEffect(()=>{r&&r.length>0?xe(!0):(xe(!1),y==="outside"&&xe(d!==""))},[F,d,y,r,O]),c.useEffect(()=>{if(I)if(ce(!0),be)be(d,e=>{const s=fe(e);Fe(s,!0),ce(!1)});else{const e=fe(re);Fe(e),ce(!1)}},[F,d,re,I]),c.useEffect(()=>(I?(clearTimeout(i.openTimer),i.openTimer=setTimeout(()=>{Ie(),window.addEventListener("keydown",Ce)})):(G(""),window.removeEventListener("keydown",Ce)),()=>{clearTimeout(i.openTimer),window.removeEventListener("keydown",Ce)}),[I]),c.useEffect(()=>{m!==!0&&p&&y==="outside"&&ft(d)},[d,p,m,y,O]);const Pe=e=>{if(e===null||e===0)return;e===void 0&&(e=i.valueCom.length);const s=document.querySelector(`.${Me} > .select-content > .check-select-content`);if(s)if(s.scrollHeight>s.clientHeight){const t=Number(e)-1;he(t),Pe(t)}else i.valueCom.length<=e&&_e()},ae=()=>{if(i.valueCom.length===0)return he(null);clearTimeout(i.timer),i.timer=setTimeout(()=>{he(i.valueCom.length),Pe()},50)},Fe=(e,s)=>{const t=[],l=[...e];for(let n=0,u=l.length;n<u;n++){const a={...l[n]},S=E(a,Q);if(S&&S.length>0){const x=S,T=[];for(let L=0,se=x.length;L<se;L++){const ge=x[L];(s||ze(ge))&&T.push(ge)}T.length>0&&(zt(a,Q,T),t.push(a))}else(s||ze(a))&&t.push(a)}st(t),ce(!1),nt(t.length===0)},Ie=()=>{const e=te&&te.current;i.searchModel!=="inside"&&e&&e.focus({preventScroll:!0})},Ve=(e,s)=>{let t=e;const l=t&&(t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector);if(!l)return null;for(;t&&!l.call(t,s);)t=t.parentElement;return t},ze=e=>{let s=!0;if(d.trim()==="")return s;const t=E(e,b);return t&&(typeof t=="number"||typeof t=="string")?t.toString().toLowerCase().indexOf(d.trim().toLowerCase())===-1&&(s=!1):s=!1,s},lt=()=>{m!==!0&&Y(!0)},rt=()=>{Y(!1)},it=e=>{De(!0),Y(!1),e.stopPropagation()},_e=()=>{i.openMore&&De(!1)},ue=(e,s)=>t=>{const l=E(e,k);if(!(typeof m=="object"&&m.indexOf(l)!==-1))if(p){const n=i.valueCom.indexOf(l);n!==-1?i.valueCom.splice(n,1):i.valueCom.push(l),f.value===void 0&&M([...i.valueCom]),j&&j([...i.valueCom],t),s&&K&&K([...i.valueCom]),Ie()}else f.value===void 0&&M([l]),j&&j(l,t),s&&K&&K(l),rt(),G("")},He=(e,s)=>t=>{e||(e={[k]:s,children:[]}),ue(e)(t),t.stopPropagation()},ct=()=>{let e=`${h.$prefixCls}-select`;return p&&!V&&(e+=` ${Me}`),N&&(e+=` ${N}`),_&&(e+=` ${h.$prefixCls}-select-${_}`),Se&&(e+=` ${h.$prefixCls}-select-error`),m===!0&&(e+=` ${h.$prefixCls}-select-disabled`),I&&(e+=` ${h.$prefixCls}-select-open`),p&&(e+=` ${h.$prefixCls}-select-multiple`),V&&(e+=` ${h.$prefixCls}-select-over-line`),R&&(e+=` ${h.$prefixCls}-select-show-select`),r.length>0&&(e+=` ${h.$prefixCls}-select-value`),z&&(e+=` ${h.$prefixCls}-select-allow-clear`),e},at=()=>{let e=`${h.$prefixCls}-select-popover ${h.$prefixCls}-scrollbar-small`;return _&&(e+=` ${h.$prefixCls}-select-popover-${_}`),p?e+=` ${h.$prefixCls}-select-popover-multiple`:e+=` ${h.$prefixCls}-select-popover-radio`,we&&(e+=` ${we}`),R||(e+=` ${h.$prefixCls}-select-popover-hide`),e},ut=()=>{let e=`${h.$prefixCls}-select-more-popover ${h.$prefixCls}-scrollbar-small`;return _&&(e+=` ${h.$prefixCls}-select-more-popover-${_}`),$e&&(e+=` ${$e}`),e},pt=e=>{G(e.target.value),C&&C.onChange&&C.onChange(e)},dt=(e,s)=>{G(e),s&&C?.onChange&&C.onChange(s)},Be=e=>{if(e.keyCode===13){ke&&ke(d);const s=document.querySelector(`.${X} .select-popover-list`);if(s){const t=s.querySelector(".select-popover-list-item-hover");if(s.querySelector(".select-popover-list-item-keydown")||t)return}if(f.input&&d.trim()!==""){if(p){const t=[...r,d];f.value===void 0&&M(t),j&&j(t,e)}else f.value===void 0&&M([d]),j&&j(d,e);G("")}}C&&C.onKeyDown&&C.onKeyDown(e)},mt=e=>{if(f.input&&ie&&d.trim()!==""){if(p){const s=[...r,d];f.value===void 0&&M(s),j&&j(s,e)}else f.value===void 0&&M([d]),j&&j(d,e);G("")}i.inputOpen=!1,C&&C.onBlur?.(e)},ft=e=>{const s=te&&te.current;if(!s)return null;const t=window.getComputedStyle(s),l=t.fontFamily,n=t.fontSize;let a=_t(n,l,e).width;a<10&&(a=10),s.style.width=`${a}px`},Ke=e=>{const{selectDom:s,keyCode:t,currentKeydownDom:l}=e;let n=null,u="nextElementSibling",a=".select-popover-list > div",S=".select-popover-list-item";if(t===38&&(u="previousElementSibling",a=".select-popover-list > div:last-child",S=".select-popover-list-item:last-child"),!l)n=s.querySelector(a);else if(n=l[u],n){if(n.className.indexOf("select-popover-list-group-label")!==-1){const x=l.parentElement;x&&(n=x[u],n||(n=s.querySelector(a)))}}else{const x=l.parentElement;x&&x.className&&x.className.indexOf("select-popover-list-group")!==-1?(n=x[u],n||(n=s.querySelector(a))):n=s.querySelector(a)}if(n)if(n.className.indexOf("select-popover-list-group")!==-1){const x=n.querySelector(S);x&&(x.classList.add("select-popover-list-item-keydown"),Ae(x,s))}else n.classList.add("select-popover-list-item-keydown"),Ae(n,s)},Ae=(e,s)=>{clearTimeout(i.scrollTimer);const t=s.clientHeight,n=e.offsetTop+e.clientHeight-t;i.scroll=!0,n>0?s.scrollTop=n:s.scrollTop=0,i.scrollTimer=setTimeout(()=>{i.scroll=!1},100)},Ce=e=>{const s=document.querySelector(`.${X} .select-popover-list`);if(!s)return;const t=s.querySelector(".select-popover-list-item-select"),l=s.querySelector(".select-popover-list-item-hover"),n=s.querySelector(".select-popover-list-item-keydown");let u=t;if(l&&(u=l),e.keyCode===13){const a=n||l;if(a){const S=a.dataset.val;ue(v[S],!0)({target:n})}else K&&$!==void 0&&K($)}n&&(u=n,n.classList.remove("select-popover-list-item-keydown")),e.keyCode===40&&Ke({selectDom:s,keyCode:e.keyCode,currentKeydownDom:u}),e.keyCode===38&&Ke({selectDom:s,keyCode:e.keyCode,currentKeydownDom:u})},Ue=e=>{if(i.scroll)return;const s=Ve(e.target,".select-popover-list-item");if(!s)return;s.classList.add("select-popover-list-item-hover");const t=document.querySelector(`.${X}`);if(!t)return;const l=t.querySelector(".select-popover-list-item-keydown");l&&l.classList.remove("select-popover-list-item-keydown")},Ge=e=>{const s=Ve(e.target,".select-popover-list-item");s&&s.classList.remove("select-popover-list-item-hover")},xt=c.useMemo(()=>{const e=!!(H||B||P),s=()=>{let t="select-label";return W&&W.className&&(t+=` ${W.className}`),t};return o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:J==="outside"&&e&&o.jsxRuntimeExports.jsx($t.default,{label:H,required:B,labelSign:P,...W,className:s()})})},[J,H,P,B,W]),ht=c.useMemo(()=>{const e=()=>J==="outside"?le:o.jsxRuntimeExports.jsxs(o.jsxRuntimeExports.Fragment,{children:[H||le,B&&o.jsxRuntimeExports.jsx("span",{className:"select-required",children:"*"}),P&&o.jsxRuntimeExports.jsx("span",{children:P})]});return o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:!Z&&o.jsxRuntimeExports.jsx("span",{className:"select-label-placeholder",children:e()})})},[Z,J,le,H,P,B]),Je=e=>{if(m===!0)return null;const s=`${e}-search-outside`;return y==="outside"?o.jsxRuntimeExports.jsx("input",{...C,onClick:t=>{i.inputOpen=!0,C&&C.onClick?.(t)},onBlur:mt,className:s,value:d,onChange:pt,onKeyDown:Be,ref:te}):null},vt=c.useMemo(()=>{const e=()=>{if(d!==""&&(y==="outside"||O))return null;const s=String(r[0]),t=v[s]&&E(v[s],b)||r[0],l=v[s]!==void 0&&w&&w(v[s],!1);return V?l||t:o.jsxRuntimeExports.jsx(pe.default,{placement:"top-start",children:l||t})};return o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:!p&&o.jsxRuntimeExports.jsxs(o.jsxRuntimeExports.Fragment,{children:[o.jsxRuntimeExports.jsx("div",{className:"radio-select-content",children:e()}),Je("radio")]})})},[p,Z,V,v,r,b,F,y,d,m,O,C,w,ie]),jt=c.useMemo(()=>{const e=s=>{const t=String(r[s]),l=v[t]&&E(v[t],b)||r[s];return v[t]!==void 0&&w&&w(v[t],!1)||l};return o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:p&&o.jsxRuntimeExports.jsxs("div",{className:"check-select-content",children:[r&&r.map((s,t)=>{if(q!==null&&q<=t)return null;let l=!0;(m===!0||typeof m=="object"&&m.indexOf(r[t])!==-1)&&(l=!1);let n="check-select-content-item check-select-content-item-select";return l||(n+=" check-select-content-item-noclose"),o.jsxRuntimeExports.jsxs("div",{className:n,children:[o.jsxRuntimeExports.jsx("span",{children:o.jsxRuntimeExports.jsx(pe.default,{placement:"top-start",children:e(t)})}),l&&o.jsxRuntimeExports.jsx(Qe.Close,{onClick:He(v[String(r[t])],r[t])})]},t)}),(()=>{if(q!==null&&r.length>q)return o.jsxRuntimeExports.jsx("div",{className:"check-select-content-item check-select-content-item-more",onClick:it,children:o.jsxRuntimeExports.jsxs("span",{children:["+",r.length-q]})})})(),Je("check")]})})},[p,Z,r,q,v,m,j,d,F,y,O,C,w,ie]),Ct=e=>{e.stopPropagation();const s=[];let t;if(p&&(t=[],m instanceof Array))for(let l=0,n=r.length;l<n;l++){const u=r[l];m.indexOf(u)!==-1&&(t.push(u),s.push(u))}f.value===void 0&&M(s),j&&j(t,e),Y(!1),de&&de()},gt=()=>{if(r.length>0&&m!==!0&&z)return o.jsxRuntimeExports.jsx("span",{className:"clean-up-icon",onClick:Ct,children:o.jsxRuntimeExports.jsx(Nt.CloseCircleF,{})})},Et=()=>{const e=s=>{const t=String(r[s]),l=v[t]&&E(v[t],b)||r[s];return v[t]!==void 0&&w&&w(v[t],"more")||l};return o.jsxRuntimeExports.jsxs("div",{className:"select-more",children:[o.jsxRuntimeExports.jsx("div",{className:"select-more-title",children:o.jsxRuntimeExports.jsx("span",{children:Oe({id:"more"})})}),o.jsxRuntimeExports.jsx("div",{className:"select-more-content",children:r&&r.map((s,t)=>{if(q!==null&&q>t)return null;let l=!0;return(m===!0||typeof m=="object"&&m.indexOf(r[t])!==-1)&&(l=!1),o.jsxRuntimeExports.jsxs("div",{className:"select-more-content-item",children:[o.jsxRuntimeExports.jsx("span",{children:o.jsxRuntimeExports.jsx(pe.default,{placement:"top-start",children:e(t)})}),l&&o.jsxRuntimeExports.jsx(Qe.Close,{onClick:He(v[String(r[t])],r[t])})]},t)})})]})},We=c.useMemo(()=>o.jsxRuntimeExports.jsx(Ot.Popover,{placement:"bottom-end",visible:ve,content:Et(),onVisibleChange:_e,overlayClassName:ut(),children:o.jsxRuntimeExports.jsxs("div",{className:"select-content",onClick:lt,ref:A,children:[ht,o.jsxRuntimeExports.jsxs("span",{className:"select-svg",children:[o.jsxRuntimeExports.jsx(Mt.Down,{}),gt()]}),vt,jt]})}),[A,Z,J,le,H,P,B,V,v,r,b,p,q,m,j,d,y,O,R,C,z,de,ve,w,ie]),yt=c.useMemo(()=>{const e=()=>{let t="select-popover-list";return ee&&(t+=" select-popover-list-loading"),t},s=t=>{const l=E(t,b)||E(t,k),n=w&&w(t,!0);return o.jsxRuntimeExports.jsxs(o.jsxRuntimeExports.Fragment,{children:[o.jsxRuntimeExports.jsx("span",{className:"select-popover-list-item-label",children:o.jsxRuntimeExports.jsx(pe.default,{placement:"top-start",children:n||l})}),p&&me&&o.jsxRuntimeExports.jsx("span",{className:"select-popover-list-item-svg",children:o.jsxRuntimeExports.jsx(Dt.Check,{})})]})};return o.jsxRuntimeExports.jsxs("div",{className:e(),style:{outline:"1px solid transparent"},children:[U&&U.length>0?o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:U.map((t,l)=>{const n=E(t,Q);if(n&&n.length>0){const S=n;return o.jsxRuntimeExports.jsxs("div",{className:"select-popover-list-group",children:[o.jsxRuntimeExports.jsx("span",{className:"select-popover-list-group-label",children:E(t,b)||E(t,k)}),S.map((x,T)=>{const L=E(x,k);let se="select-popover-list-item";return r.indexOf(L)!==-1&&(se+=" select-popover-list-item-select"),typeof m=="object"&&m.indexOf(L)!==-1&&(se+=" select-popover-list-item-disabled"),o.jsxRuntimeExports.jsx("div",{onClick:ue(x),className:se,onMouseEnter:Ue,onMouseLeave:Ge,"data-val":L,children:s(x)},T)})]},l)}const u=E(t,k);let a="select-popover-list-item";return r.indexOf(u)!==-1&&(a+=" select-popover-list-item-select"),typeof m=="object"&&m.indexOf(u)!==-1&&(a+=" select-popover-list-item-disabled"),o.jsxRuntimeExports.jsx("div",{onClick:ue(t),className:a,onMouseEnter:Ue,onMouseLeave:Ge,"data-val":u,children:s(t)},l)})}):!ee&&je&&o.jsxRuntimeExports.jsx("div",{className:"select-nodata",children:o.jsxRuntimeExports.jsx(wt.default,{...ne,size:ne?.size||"small"})}),ee&&o.jsxRuntimeExports.jsx(Lt.Loading,{})]})},[U,b,k,r,j,p,ee,Te,Le,ne,je,w,me]),St=c.useMemo(()=>{if(!R)return"";const e=()=>{let s=`select-popover-content ${X}`;return F&&y==="inside"&&(s+=" select-popover-content-search"),s};return o.jsxRuntimeExports.jsxs("div",{style:{width:`${A&&A.current?A.current.offsetWidth:0}px`},className:e(),children:[F&&y==="inside"&&o.jsxRuntimeExports.jsx(Pt.Search,{placeholder:Ee||Oe({id:"searchPlaceholder"}),onKeydown:Be,value:d,onChange:dt,className:"select-popover-search"}),yt]})},[I,A,U,Q,k,b,r,d,F,X,y,p,Ee,R,ee,C,Te,Le,ne,je,w,me]),Rt=()=>o.jsxRuntimeExports.jsx(bt.Dropdown,{visible:I,placement:"bottomLeft",trigger:["click"],overlay:o.jsxRuntimeExports.jsx(o.jsxRuntimeExports.Fragment,{children:St}),overlayClassName:at(),getPopupContainer:et,onVisibleChange:e=>{e||(clearTimeout(i.dropDownTimer),i.dropDownTimer=setTimeout(()=>{i.inputOpen||Y(!1)},0))},children:ye?o.jsxRuntimeExports.jsx(Ft.Tooltip,{disabled:!0,...ye,children:We}):We});return o.jsxRuntimeExports.jsxs("div",{className:ct(),style:g,children:[xt,Rt(),o.jsxRuntimeExports.jsx(It.default,{className:"select-error-text",error:Se,helperText:Ze,hideErrorDom:Ye})]})}exports.default=Ht;
2
2
  //# sourceMappingURL=index.js.map