hys-ui 0.1.1 → 0.3.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 (337) hide show
  1. package/CHANGELOG.md +149 -0
  2. package/README.md +17 -1
  3. package/dist/components/HysAccordion/HysAccordion.vue.js +1 -1
  4. package/dist/components/HysAccordion/HysAccordion2.vue.js +181 -47
  5. package/dist/components/HysAlert/HysAlert.vue.js +5 -54
  6. package/dist/components/HysAlert/HysAlert2.vue.js +159 -2
  7. package/dist/components/HysAutocomplete/HysAutocomplete.vue.js +7 -0
  8. package/dist/components/HysAutocomplete/HysAutocomplete2.vue.js +639 -0
  9. package/dist/components/HysAvatar/HysAvatar.vue.js +5 -35
  10. package/dist/components/HysAvatar/HysAvatar2.vue.js +221 -2
  11. package/dist/components/HysAvatarGroup/HysAvatarGroup.vue.js +7 -0
  12. package/dist/components/HysAvatarGroup/HysAvatarGroup2.vue.js +256 -0
  13. package/dist/components/HysBadge/HysBadge.vue.js +2 -2
  14. package/dist/components/HysBadge/HysBadge2.vue.js +154 -27
  15. package/dist/components/HysBreadcrumb/HysBreadcrumb.vue.js +5 -38
  16. package/dist/components/HysBreadcrumb/HysBreadcrumb2.vue.js +288 -2
  17. package/dist/components/HysButton/HysButton.vue.js +2 -2
  18. package/dist/components/HysButton/HysButton2.vue.js +29 -28
  19. package/dist/components/HysCalendar/HysCalendar.vue.js +5 -92
  20. package/dist/components/HysCalendar/HysCalendar2.vue.js +815 -2
  21. package/dist/components/HysCard/HysCard.vue.js +2 -2
  22. package/dist/components/HysCard/HysCard2.vue.js +175 -42
  23. package/dist/components/HysCascader/HysCascader.vue.js +5 -194
  24. package/dist/components/HysCascader/HysCascader2.vue.js +773 -2
  25. package/dist/components/HysCascader/HysCascaderColumn.vue.js +7 -0
  26. package/dist/components/HysCascader/HysCascaderColumn2.vue.js +232 -0
  27. package/dist/components/HysCheckbox/HysCheckbox.vue.js +3 -3
  28. package/dist/components/HysCheckbox/HysCheckbox2.vue.js +180 -65
  29. package/dist/components/HysCheckboxGroup/HysCheckboxGroup.vue.js +7 -0
  30. package/dist/components/HysCheckboxGroup/HysCheckboxGroup2.vue.js +237 -0
  31. package/dist/components/HysColorPicker/HysColorPanel.vue.js +7 -0
  32. package/dist/components/HysColorPicker/HysColorPanel2.vue.js +238 -0
  33. package/dist/components/HysColorPicker/HysColorPicker.vue.js +1 -1
  34. package/dist/components/HysColorPicker/HysColorPicker2.vue.js +239 -216
  35. package/dist/components/HysCommandPalette/HysCommandPalette.vue.js +90 -76
  36. package/dist/components/HysContextMenu/HysContextMenu.vue.js +5 -89
  37. package/dist/components/HysContextMenu/HysContextMenu2.vue.js +247 -2
  38. package/dist/components/HysContextMenu/HysMenuPanel.vue.js +7 -0
  39. package/dist/components/HysContextMenu/HysMenuPanel2.vue.js +208 -0
  40. package/dist/components/HysContextMenu/HysMenuSlot.js +10 -0
  41. package/dist/components/HysDataGrid/HysDataGrid.vue.js +1 -1
  42. package/dist/components/HysDataGrid/HysDataGrid2.vue.js +1019 -563
  43. package/dist/components/HysDatePicker/HysDatePicker.vue.js +270 -139
  44. package/dist/components/HysDatePicker/HysDatePickerControl.vue.js +7 -0
  45. package/dist/components/HysDatePicker/HysDatePickerControl2.vue.js +820 -0
  46. package/dist/components/HysDatePicker/HysDatePickerPanel.vue.js +7 -0
  47. package/dist/components/HysDatePicker/HysDatePickerPanel2.vue.js +357 -0
  48. package/dist/components/HysDateRangePicker/HysDateRangePicker.vue.js +270 -158
  49. package/dist/components/HysDivider/HysDivider.vue.js +2 -2
  50. package/dist/components/HysDivider/HysDivider2.vue.js +33 -13
  51. package/dist/components/HysDrawer/HysDrawer.vue.js +1 -1
  52. package/dist/components/HysDrawer/HysDrawer2.vue.js +434 -84
  53. package/dist/components/HysEmpty/HysEmpty.vue.js +5 -41
  54. package/dist/components/HysEmpty/HysEmpty2.vue.js +181 -2
  55. package/dist/components/HysFileManager/HysFileManager.vue.js +3 -3
  56. package/dist/components/HysFileManager/HysFileManager2.vue.js +43 -42
  57. package/dist/components/HysForm/HysForm.vue.js +3 -3
  58. package/dist/components/HysForm/HysForm2.vue.js +578 -92
  59. package/dist/components/HysFormItem/HysFormItem.vue.js +5 -85
  60. package/dist/components/HysFormItem/HysFormItem2.vue.js +528 -2
  61. package/dist/components/HysGantt/HysGantt.vue.js +1 -1
  62. package/dist/components/HysGantt/HysGantt2.vue.js +1380 -268
  63. package/dist/components/HysInput/HysInput.vue.js +2 -2
  64. package/dist/components/HysInput/HysInput2.vue.js +467 -120
  65. package/dist/components/HysMention/HysMention.vue.js +2 -2
  66. package/dist/components/HysMention/HysMention2.vue.js +122 -109
  67. package/dist/components/HysModal/HysModal.vue.js +2 -2
  68. package/dist/components/HysModal/HysModal2.vue.js +490 -85
  69. package/dist/components/HysNumberInput/HysNumberInput.vue.js +2 -2
  70. package/dist/components/HysNumberInput/HysNumberInput2.vue.js +561 -79
  71. package/dist/components/HysOrgTree/HysOrgTree.vue.js +29 -26
  72. package/dist/components/HysPagination/HysPagination.vue.js +1 -1
  73. package/dist/components/HysPagination/HysPagination2.vue.js +2 -0
  74. package/dist/components/HysPermissionMatrix/HysPermissionMatrix.vue.js +2 -2
  75. package/dist/components/HysPermissionMatrix/HysPermissionMatrix2.vue.js +52 -51
  76. package/dist/components/HysPopover/HysPopover.vue.js +5 -91
  77. package/dist/components/HysPopover/HysPopover2.vue.js +120 -2
  78. package/dist/components/HysProgress/HysProgress.vue.js +2 -2
  79. package/dist/components/HysProgress/HysProgress2.vue.js +319 -52
  80. package/dist/components/HysRadio/HysRadio.vue.js +7 -0
  81. package/dist/components/HysRadio/HysRadio2.vue.js +180 -0
  82. package/dist/components/HysRadioGroup/HysRadioGroup.vue.js +2 -2
  83. package/dist/components/HysRadioGroup/HysRadioGroup2.vue.js +190 -65
  84. package/dist/components/HysRating/HysRating.vue.js +1 -1
  85. package/dist/components/HysRating/HysRating2.vue.js +288 -68
  86. package/dist/components/HysRichTextEditor/HysRichTextEditor.vue.js +1 -1
  87. package/dist/components/HysRichTextEditor/HysRichTextEditor2.vue.js +70 -69
  88. package/dist/components/HysSearch/HysSearch.vue.js +37 -36
  89. package/dist/components/HysSegmented/HysSegmented.vue.js +5 -63
  90. package/dist/components/HysSegmented/HysSegmented2.vue.js +273 -2
  91. package/dist/components/HysSelect/HysSelect.vue.js +3 -2
  92. package/dist/components/HysSelect/HysSelect2.vue.js +999 -189
  93. package/dist/components/HysSkeleton/HysSkeleton.vue.js +2 -2
  94. package/dist/components/HysSkeleton/HysSkeleton2.vue.js +126 -29
  95. package/dist/components/HysSlider/HysSlider.vue.js +1 -1
  96. package/dist/components/HysSlider/HysSlider2.vue.js +536 -59
  97. package/dist/components/HysSlider/SliderTooltip.vue.js +7 -0
  98. package/dist/components/HysSlider/SliderTooltip2.vue.js +170 -0
  99. package/dist/components/HysSteps/HysSteps.vue.js +1 -1
  100. package/dist/components/HysSteps/HysSteps2.vue.js +110 -36
  101. package/dist/components/HysSwitch/HysSwitch.vue.js +2 -2
  102. package/dist/components/HysSwitch/HysSwitch2.vue.js +232 -50
  103. package/dist/components/HysTable/HysTable.vue.js +1 -1
  104. package/dist/components/HysTable/HysTable2.vue.js +1494 -88
  105. package/dist/components/HysTable/HysTableFilterOptions.vue.js +7 -0
  106. package/dist/components/HysTable/HysTableFilterOptions2.vue.js +133 -0
  107. package/dist/components/HysTabs/HysTabs.vue.js +2 -2
  108. package/dist/components/HysTabs/HysTabs2.vue.js +262 -68
  109. package/dist/components/HysTagInput/HysTagInput.vue.js +5 -81
  110. package/dist/components/HysTagInput/HysTagInput2.vue.js +396 -2
  111. package/dist/components/HysTextarea/HysTextarea.vue.js +138 -77
  112. package/dist/components/HysTimeline/HysTimeline.vue.js +2 -2
  113. package/dist/components/HysTimeline/HysTimeline2.vue.js +243 -24
  114. package/dist/components/HysTooltip/HysTooltip.vue.js +5 -64
  115. package/dist/components/HysTooltip/HysTooltip2.vue.js +110 -2
  116. package/dist/components/HysTour/HysTour.vue.js +46 -42
  117. package/dist/components/HysTransfer/HysTransfer.vue.js +5 -223
  118. package/dist/components/HysTransfer/HysTransfer2.vue.js +446 -2
  119. package/dist/components/HysTransfer/HysTransferPanel.vue.js +7 -0
  120. package/dist/components/HysTransfer/HysTransferPanel2.vue.js +503 -0
  121. package/dist/components/HysTree/HysTree.vue.js +2 -3
  122. package/dist/components/HysTree/HysTree2.vue.js +651 -301
  123. package/dist/components/HysTreeSelect/HysTreeSelect.vue.js +5 -136
  124. package/dist/components/HysTreeSelect/HysTreeSelect2.vue.js +570 -2
  125. package/dist/components/HysTreeSelect/HysTreeSelectPanel.vue.js +7 -0
  126. package/dist/components/HysTreeSelect/HysTreeSelectPanel2.vue.js +323 -0
  127. package/dist/components/HysUpload/HysUpload.vue.js +2 -2
  128. package/dist/components/HysUpload/HysUpload2.vue.js +459 -124
  129. package/dist/components/HysVirtualTable/HysVirtualTable.vue.js +5 -94
  130. package/dist/components/HysVirtualTable/HysVirtualTable2.vue.js +656 -2
  131. package/dist/composables/autocomplete.js +50 -0
  132. package/dist/composables/avatar.js +57 -0
  133. package/dist/composables/calendar.js +96 -0
  134. package/dist/composables/cascader.js +79 -0
  135. package/dist/composables/choice.js +38 -0
  136. package/dist/composables/choiceModel.js +67 -0
  137. package/dist/composables/color.js +97 -0
  138. package/dist/composables/dataGrid.js +68 -0
  139. package/dist/composables/datePicker.js +227 -0
  140. package/dist/composables/drawer.js +17 -0
  141. package/dist/composables/feedback.js +14 -0
  142. package/dist/composables/formContext.js +92 -7
  143. package/dist/composables/formLayout.js +57 -0
  144. package/dist/composables/formValidation.js +240 -0
  145. package/dist/composables/ganttConflicts.js +143 -0
  146. package/dist/composables/menu.js +96 -0
  147. package/dist/composables/modal.js +14 -0
  148. package/dist/composables/numberInput.js +91 -0
  149. package/dist/composables/overlayManager.js +48 -18
  150. package/dist/composables/progress.js +94 -0
  151. package/dist/composables/rating.js +16 -0
  152. package/dist/composables/selectOptions.js +54 -0
  153. package/dist/composables/table.js +150 -0
  154. package/dist/composables/tagInput.js +16 -0
  155. package/dist/composables/textInput.js +34 -0
  156. package/dist/composables/timeline.js +19 -0
  157. package/dist/composables/transfer.js +65 -0
  158. package/dist/composables/tree.js +118 -0
  159. package/dist/composables/treeSelect.js +71 -0
  160. package/dist/composables/upload.js +55 -0
  161. package/dist/composables/uploadRequest.js +58 -0
  162. package/dist/composables/useAlert.js +124 -0
  163. package/dist/composables/useCascader.js +438 -0
  164. package/dist/composables/useColorPicker.js +402 -0
  165. package/dist/composables/useContextMenu.js +514 -0
  166. package/dist/composables/useDataGridRemote.js +67 -0
  167. package/dist/composables/useDatePicker.js +425 -0
  168. package/dist/composables/useDialog.js +86 -43
  169. package/dist/composables/useDrawerPush.js +33 -0
  170. package/dist/composables/useDrawerResize.js +221 -0
  171. package/dist/composables/useFloating.js +136 -56
  172. package/dist/composables/useGanttDependencies.js +306 -0
  173. package/dist/composables/useGanttHistory.js +157 -0
  174. package/dist/composables/useGanttLabelResize.js +100 -0
  175. package/dist/composables/useHysModal.js +185 -0
  176. package/dist/composables/useModal.js +295 -0
  177. package/dist/composables/useModalInteraction.js +394 -0
  178. package/dist/composables/usePopupSurface.js +458 -0
  179. package/dist/composables/useTable.js +474 -0
  180. package/dist/composables/useTagInput.js +313 -0
  181. package/dist/composables/useTextareaSize.js +72 -0
  182. package/dist/composables/useTransfer.js +257 -0
  183. package/dist/composables/useTransferMotion.js +185 -0
  184. package/dist/composables/useTree.js +439 -0
  185. package/dist/composables/useTreeSelect.js +361 -0
  186. package/dist/composables/useUpload.js +472 -0
  187. package/dist/composables/useUploadModel.js +65 -0
  188. package/dist/composables/useUploadRequests.js +266 -0
  189. package/dist/composables/useVirtualTableLayout.js +277 -0
  190. package/dist/composables/virtualTable.js +43 -0
  191. package/dist/index.js +152 -139
  192. package/dist/internal/PopupReference.js +39 -0
  193. package/dist/internal/PopupSurfacePanel.vue.js +7 -0
  194. package/dist/internal/PopupSurfacePanel2.vue.js +92 -0
  195. package/dist/motion/PopupMotion.js +105 -0
  196. package/dist/motion/popup.js +10 -0
  197. package/dist/style.css +1 -1
  198. package/dist/types/components/HysAccordion/HysAccordion.vue.d.ts +61 -22
  199. package/dist/types/components/HysAlert/HysAlert.vue.d.ts +32 -22
  200. package/dist/types/components/HysAutocomplete/HysAutocomplete.vue.d.ts +201 -0
  201. package/dist/types/components/HysAvatar/HysAvatar.vue.d.ts +28 -15
  202. package/dist/types/components/HysAvatarGroup/HysAvatarGroup.vue.d.ts +104 -0
  203. package/dist/types/components/HysBadge/HysBadge.vue.d.ts +41 -4
  204. package/dist/types/components/HysBreadcrumb/HysBreadcrumb.vue.d.ts +71 -20
  205. package/dist/types/components/HysButton/HysButton.vue.d.ts +0 -1
  206. package/dist/types/components/HysCalendar/HysCalendar.vue.d.ts +120 -31
  207. package/dist/types/components/HysCard/HysCard.vue.d.ts +55 -7
  208. package/dist/types/components/HysCascader/HysCascader.vue.d.ts +129 -41
  209. package/dist/types/components/HysCascader/HysCascaderColumn.vue.d.ts +55 -0
  210. package/dist/types/components/HysCheckbox/HysCheckbox.vue.d.ts +50 -39
  211. package/dist/types/components/HysCheckboxGroup/HysCheckboxGroup.vue.d.ts +73 -0
  212. package/dist/types/components/HysColorPicker/HysColorPanel.vue.d.ts +58 -0
  213. package/dist/types/components/HysColorPicker/HysColorPicker.vue.d.ts +63 -10
  214. package/dist/types/components/HysCommandPalette/HysCommandPalette.vue.d.ts +2 -1
  215. package/dist/types/components/HysContextMenu/HysContextMenu.vue.d.ts +50 -34
  216. package/dist/types/components/HysContextMenu/HysMenuPanel.vue.d.ts +79 -0
  217. package/dist/types/components/HysContextMenu/HysMenuSlot.d.ts +8 -0
  218. package/dist/types/components/HysDataGrid/HysDataGrid.vue.d.ts +65 -118
  219. package/dist/types/components/HysDatePicker/HysDatePicker.vue.d.ts +66 -14
  220. package/dist/types/components/HysDatePicker/HysDatePickerControl.vue.d.ts +90 -0
  221. package/dist/types/components/HysDatePicker/HysDatePickerPanel.vue.d.ts +93 -0
  222. package/dist/types/components/HysDateRangePicker/HysDateRangePicker.vue.d.ts +66 -14
  223. package/dist/types/components/HysDivider/HysDivider.vue.d.ts +8 -3
  224. package/dist/types/components/HysDrawer/HysDrawer.vue.d.ts +92 -35
  225. package/dist/types/components/HysEmpty/HysEmpty.vue.d.ts +24 -20
  226. package/dist/types/components/HysForm/HysForm.vue.d.ts +110 -18
  227. package/dist/types/components/HysFormItem/HysFormItem.vue.d.ts +108 -2
  228. package/dist/types/components/HysGantt/HysGantt.vue.d.ts +84 -5
  229. package/dist/types/components/HysInput/HysInput.vue.d.ts +52 -29
  230. package/dist/types/components/HysMention/HysMention.vue.d.ts +4 -3
  231. package/dist/types/components/HysModal/HysModal.vue.d.ts +111 -34
  232. package/dist/types/components/HysNumberInput/HysNumberInput.vue.d.ts +93 -35
  233. package/dist/types/components/HysOrgTree/HysOrgTree.vue.d.ts +1 -0
  234. package/dist/types/components/HysPagination/HysPagination.vue.d.ts +1 -1
  235. package/dist/types/components/HysPermissionMatrix/HysPermissionMatrix.vue.d.ts +2 -2
  236. package/dist/types/components/HysPopover/HysPopover.vue.d.ts +41 -29
  237. package/dist/types/components/HysProgress/HysProgress.vue.d.ts +18 -24
  238. package/dist/types/components/HysRadio/HysRadio.vue.d.ts +56 -0
  239. package/dist/types/components/HysRadioGroup/HysRadioGroup.vue.d.ts +34 -12
  240. package/dist/types/components/HysRating/HysRating.vue.d.ts +85 -5
  241. package/dist/types/components/HysResizablePanel/HysResizablePanel.vue.d.ts +2 -2
  242. package/dist/types/components/HysRichTextEditor/HysRichTextEditor.vue.d.ts +4 -4
  243. package/dist/types/components/HysSearch/HysSearch.vue.d.ts +2 -2
  244. package/dist/types/components/HysSegmented/HysSegmented.vue.d.ts +64 -32
  245. package/dist/types/components/HysSelect/HysSelect.vue.d.ts +131 -22
  246. package/dist/types/components/HysSkeleton/HysSkeleton.vue.d.ts +30 -2
  247. package/dist/types/components/HysSlider/HysSlider.vue.d.ts +69 -11
  248. package/dist/types/components/HysSlider/SliderTooltip.vue.d.ts +24 -0
  249. package/dist/types/components/HysSplitPane/HysSplitPane.vue.d.ts +3 -3
  250. package/dist/types/components/HysSteps/HysSteps.vue.d.ts +64 -9
  251. package/dist/types/components/HysSwitch/HysSwitch.vue.d.ts +76 -17
  252. package/dist/types/components/HysTable/HysTable.vue.d.ts +206 -32
  253. package/dist/types/components/HysTable/HysTableFilterOptions.vue.d.ts +18 -0
  254. package/dist/types/components/HysTabs/HysTabs.vue.d.ts +76 -23
  255. package/dist/types/components/HysTagInput/HysTagInput.vue.d.ts +50 -28
  256. package/dist/types/components/HysTextarea/HysTextarea.vue.d.ts +44 -27
  257. package/dist/types/components/HysTimeline/HysTimeline.vue.d.ts +19 -32
  258. package/dist/types/components/HysToast/HysToast.vue.d.ts +3 -3
  259. package/dist/types/components/HysTooltip/HysTooltip.vue.d.ts +39 -19
  260. package/dist/types/components/HysTour/HysTour.vue.d.ts +4 -3
  261. package/dist/types/components/HysTransfer/HysTransfer.vue.d.ts +55 -40
  262. package/dist/types/components/HysTransfer/HysTransferPanel.vue.d.ts +107 -0
  263. package/dist/types/components/HysTree/HysTree.vue.d.ts +140 -73
  264. package/dist/types/components/HysTreeSelect/HysTreeSelect.vue.d.ts +102 -23
  265. package/dist/types/components/HysTreeSelect/HysTreeSelectPanel.vue.d.ts +56 -0
  266. package/dist/types/components/HysUpload/HysUpload.vue.d.ts +55 -67
  267. package/dist/types/components/HysVirtualTable/HysVirtualTable.vue.d.ts +71 -40
  268. package/dist/types/composables/autocomplete.d.ts +109 -0
  269. package/dist/types/composables/avatar.d.ts +73 -0
  270. package/dist/types/composables/calendar.d.ts +66 -0
  271. package/dist/types/composables/cascader.d.ts +195 -0
  272. package/dist/types/composables/choice.d.ts +110 -0
  273. package/dist/types/composables/choiceModel.d.ts +11 -0
  274. package/dist/types/composables/color.d.ts +97 -0
  275. package/dist/types/composables/dataGrid.d.ts +100 -0
  276. package/dist/types/composables/datePicker.d.ts +250 -0
  277. package/dist/types/composables/drawer.d.ts +102 -0
  278. package/dist/types/composables/feedback.d.ts +98 -0
  279. package/dist/types/composables/formContext.d.ts +135 -8
  280. package/dist/types/composables/formLayout.d.ts +11 -0
  281. package/dist/types/composables/formValidation.d.ts +13 -0
  282. package/dist/types/composables/gantt.d.ts +68 -0
  283. package/dist/types/composables/ganttConflicts.d.ts +30 -0
  284. package/dist/types/composables/menu.d.ts +183 -0
  285. package/dist/types/composables/modal.d.ts +183 -0
  286. package/dist/types/composables/numberInput.d.ts +45 -0
  287. package/dist/types/composables/overlayManager.d.ts +7 -3
  288. package/dist/types/composables/popupSurface.d.ts +83 -0
  289. package/dist/types/composables/progress.d.ts +92 -0
  290. package/dist/types/composables/rating.d.ts +18 -0
  291. package/dist/types/composables/segmented.d.ts +15 -0
  292. package/dist/types/composables/selectOptions.d.ts +46 -0
  293. package/dist/types/composables/slider.d.ts +21 -0
  294. package/dist/types/composables/table.d.ts +312 -0
  295. package/dist/types/composables/tagInput.d.ts +96 -0
  296. package/dist/types/composables/textInput.d.ts +76 -0
  297. package/dist/types/composables/timeline.d.ts +82 -0
  298. package/dist/types/composables/transfer.d.ts +187 -0
  299. package/dist/types/composables/tree.d.ts +240 -0
  300. package/dist/types/composables/treeSelect.d.ts +170 -0
  301. package/dist/types/composables/upload.d.ts +202 -0
  302. package/dist/types/composables/uploadRequest.d.ts +3 -0
  303. package/dist/types/composables/useAlert.d.ts +21 -0
  304. package/dist/types/composables/useCascader.d.ts +162 -0
  305. package/dist/types/composables/useColorPicker.d.ts +101 -0
  306. package/dist/types/composables/useContextMenu.d.ts +81 -0
  307. package/dist/types/composables/useDataGridRemote.d.ts +15 -0
  308. package/dist/types/composables/useDatePicker.d.ts +79 -0
  309. package/dist/types/composables/useDialog.d.ts +16 -3
  310. package/dist/types/composables/useDrawerPush.d.ts +6 -0
  311. package/dist/types/composables/useDrawerResize.d.ts +27 -0
  312. package/dist/types/composables/useFloating.d.ts +28 -6
  313. package/dist/types/composables/useGanttDependencies.d.ts +83 -0
  314. package/dist/types/composables/useGanttHistory.d.ts +42 -0
  315. package/dist/types/composables/useGanttLabelResize.d.ts +23 -0
  316. package/dist/types/composables/useHysModal.d.ts +44 -0
  317. package/dist/types/composables/useModal.d.ts +62 -0
  318. package/dist/types/composables/useModalInteraction.d.ts +27 -0
  319. package/dist/types/composables/usePopupSurface.d.ts +3341 -0
  320. package/dist/types/composables/useTable.d.ts +60 -0
  321. package/dist/types/composables/useTagInput.d.ts +66 -0
  322. package/dist/types/composables/useTextareaSize.d.ts +3 -0
  323. package/dist/types/composables/useTransfer.d.ts +58 -0
  324. package/dist/types/composables/useTransferMotion.d.ts +36 -0
  325. package/dist/types/composables/useTree.d.ts +77 -0
  326. package/dist/types/composables/useTreeSelect.d.ts +117 -0
  327. package/dist/types/composables/useUpload.d.ts +94 -0
  328. package/dist/types/composables/useUploadModel.d.ts +14 -0
  329. package/dist/types/composables/useUploadRequests.d.ts +38 -0
  330. package/dist/types/composables/useVirtualTableLayout.d.ts +51 -0
  331. package/dist/types/composables/virtualTable.d.ts +126 -0
  332. package/dist/types/index.d.ts +50 -9
  333. package/dist/types/internal/PopupReference.d.ts +18 -0
  334. package/dist/types/internal/PopupSurfacePanel.vue.d.ts +37 -0
  335. package/dist/types/motion/PopupMotion.d.ts +59 -0
  336. package/dist/types/motion/popup.d.ts +12 -0
  337. package/package.json +2 -1
@@ -1,222 +1,1032 @@
1
- import { defineComponent as Q, ref as p, useId as Y, computed as I, watch as m, nextTick as q, openBlock as s, createElementBlock as n, mergeProps as F, unref as i, createElementVNode as L, renderSlot as C, Fragment as D, renderList as K, toDisplayString as z, createBlock as E, withModifiers as Z, createVNode as _, createCommentVNode as V, Teleport as ee, withDirectives as le, vModelText as ae, createTextVNode as H, normalizeClass as te } from "vue";
2
- import { LoaderCircle as ie, ChevronDown as se, X as oe, Check as ue } from "lucide-vue-next";
3
- import { useHysRootAttrs as re } from "../../config.js";
4
- import { useFloating as ne } from "../../composables/useFloating.js";
5
- const de = ["aria-label", "disabled", "aria-expanded", "aria-controls", "aria-activedescendant"], ce = { class: "hys-ui-select-label" }, ve = ["title"], ye = ["aria-controls", "aria-activedescendant"], fe = ["id", "aria-multiselectable"], he = {
1
+ import { defineComponent as Dt, useAttrs as Rt, inject as Pt, ref as L, useId as It, shallowRef as ye, computed as c, watch as X, nextTick as V, onMounted as Nt, onUpdated as Ut, onActivated as Qt, onDeactivated as Yt, onBeforeUnmount as Xt, openBlock as d, createElementBlock as h, mergeProps as Ue, unref as n, createElementVNode as $, withModifiers as Ee, renderSlot as A, Fragment as ue, renderList as Qe, toDisplayString as M, createVNode as me, createCommentVNode as E, createTextVNode as _, normalizeClass as xt, createBlock as Ye, Teleport as Gt, withCtx as Jt, normalizeStyle as be } from "vue";
2
+ import Zt from "../../motion/PopupMotion.js";
3
+ import { X as Tt, LoaderCircle as _t, ChevronDown as el, Plus as tl, Check as ll } from "lucide-vue-next";
4
+ import { fieldKey as al, useHysControlState as il, formValue as ol } from "../../composables/formContext.js";
5
+ import { useHysRootAttrs as ul } from "../../config.js";
6
+ import { useFloating as sl } from "../../composables/useFloating.js";
7
+ import { normalizeSelectOptions as nl, selectKeyFactory as rl } from "../../composables/selectOptions.js";
8
+ const cl = ["disabled"], dl = ["id", "tabindex", "aria-label", "aria-expanded", "aria-disabled", "aria-readonly", "aria-required", "aria-invalid", "aria-describedby", "aria-controls", "aria-activedescendant"], vl = { class: "hys-ui-select-label" }, fl = ["title"], pl = ["disabled", "aria-label", "onClick"], hl = ["title"], yl = ["title"], ml = {
6
9
  key: 0,
7
- class: "hys-ui-floating-empty"
8
- }, be = ["id", "data-active", "aria-selected", "disabled", "onPointerenter", "onClick"], pe = ["title"], me = {
10
+ class: "hys-ui-select-suffix"
11
+ }, bl = ["name", "value", "disabled"], gl = ["data-size", "data-placement"], kl = {
12
+ key: 0,
13
+ class: "hys-ui-select-header"
14
+ }, xl = ["value", "aria-controls", "aria-activedescendant"], Tl = {
15
+ key: 2,
16
+ class: "hys-ui-select-bulk",
17
+ role: "group",
18
+ "aria-label": "批量选择"
19
+ }, Sl = ["title"], Al = ["disabled", "aria-label"], Cl = ["disabled", "aria-label"], wl = ["id", "aria-label", "aria-multiselectable", "aria-busy"], Ml = {
9
20
  key: 0,
21
+ class: "hys-ui-floating-empty",
22
+ role: "status"
23
+ }, Bl = {
24
+ key: 1,
25
+ class: "hys-ui-floating-empty",
26
+ role: "status"
27
+ }, Ol = ["id", "data-active", "aria-label", "aria-description", "aria-selected", "aria-setsize", "aria-posinset", "disabled", "onPointerenter", "onClick"], Ll = ["title"], zl = {
28
+ key: 0,
29
+ class: "hys-ui-select-create-label"
30
+ }, Vl = {
31
+ key: 3,
10
32
  class: "hys-ui-floating-empty"
11
- }, Ve = /* @__PURE__ */ Q({
33
+ }, $l = {
34
+ key: 3,
35
+ class: "hys-ui-select-footer"
36
+ }, St = 'a[href],button:not(:disabled),input:not(:disabled),textarea:not(:disabled),select:not(:disabled),[tabindex]:not([tabindex="-1"])', Dl = /* @__PURE__ */ Dt({
37
+ inheritAttrs: !1,
12
38
  __name: "HysSelect",
13
39
  props: {
40
+ popupTransition: {},
41
+ popupTransitionDuration: {},
14
42
  modelValue: {},
15
- options: {},
43
+ defaultValue: {},
44
+ options: { default: () => [] },
45
+ fieldNames: { default: () => ({}) },
46
+ valueKey: { default: "value" },
16
47
  disabled: { type: Boolean },
48
+ readonly: { type: Boolean },
17
49
  ariaLabel: {},
18
50
  placeholder: { default: "请选择" },
19
51
  multiple: { type: Boolean },
52
+ showSelectAll: { type: Boolean, default: !0 },
53
+ selectAllScope: { default: "filtered" },
54
+ selectAllText: { default: "全选" },
55
+ deselectAllText: { default: "全不选" },
20
56
  filterable: { type: Boolean },
21
57
  clearable: { type: Boolean },
58
+ emptyValues: { default: () => ["", null, void 0] },
59
+ clearValue: { type: [String, Number, Boolean, Object, null], default: "" },
60
+ fallbackOption: { type: [Boolean, Function] },
61
+ multipleLimit: { default: 0 },
62
+ maxTagCount: { default: 3 },
63
+ maxTagTextLength: {},
64
+ removable: { type: Boolean, default: !0 },
65
+ clearSearchAfterSelect: { type: Boolean, default: !1 },
66
+ allowCreate: { type: Boolean },
67
+ createOption: {},
68
+ tokenSeparators: {},
69
+ clearCreatedOnClear: { type: Boolean, default: !0 },
22
70
  loading: { type: Boolean },
23
71
  remote: { type: Boolean },
24
- popupMatchWidth: { type: Boolean },
72
+ remoteMethod: {},
73
+ debounce: { default: 0 },
74
+ searchValue: {},
25
75
  filterMethod: {},
76
+ filterSort: {},
77
+ open: { type: Boolean, default: void 0 },
78
+ defaultOpen: { type: Boolean },
79
+ showOnFocus: { type: Boolean },
80
+ retainSearch: { type: Boolean },
81
+ defaultActiveFirst: { type: Boolean, default: !0 },
82
+ keyboard: { type: Boolean, default: !0 },
83
+ popupMatchWidth: { type: Boolean },
84
+ popupWidth: {},
85
+ placement: { default: "bottom-start" },
86
+ appendTo: { type: [String, Boolean], default: "body" },
87
+ popupClass: {},
88
+ popupStyle: {},
89
+ listHeight: { default: 240 },
90
+ virtual: { type: Boolean, default: !0 },
91
+ itemHeight: {},
92
+ overscan: { default: 4 },
26
93
  emptyText: { default: "暂无选项" },
27
- size: { default: "md" }
94
+ noMatchText: { default: "没有匹配选项" },
95
+ loadingText: { default: "加载中…" },
96
+ size: {},
97
+ status: {},
98
+ showArrow: { type: Boolean, default: !0 },
99
+ showCheckmark: { type: Boolean, default: !0 },
100
+ bordered: { type: Boolean, default: !0 },
101
+ autofocus: { type: Boolean },
102
+ name: {}
28
103
  },
29
- emits: ["update:modelValue", "change", "clear", "search", "visibleChange"],
30
- setup(d, { expose: R, emit: X }) {
31
- const t = d, k = X, N = re(), g = p(), B = p(), P = p(), y = p(""), o = p(0), f = Y(), { open: v, style: j, show: G, close: h, update: J } = ne(g, B, { placement: "bottom-start", matchWidth: () => t.popupMatchWidth ? !0 : "min" }), x = I(() => t.multiple || Array.isArray(t.modelValue)), u = I(() => Array.isArray(t.modelValue) ? t.modelValue : [t.modelValue].filter(Boolean)), T = p(/* @__PURE__ */ new Map());
32
- m(() => [t.options, u.value], () => {
33
- const e = T.value, a = /* @__PURE__ */ new Map();
34
- for (const l of t.options) a.set(l.value, l);
35
- for (const l of u.value) !a.has(l) && e.has(l) && a.set(l, e.get(l));
36
- T.value = a;
37
- }, { immediate: !0, deep: !0 });
38
- const w = I(() => u.value.map((e) => T.value.get(e) ?? { value: e, label: e })), r = I(() => t.remote ? t.options : t.options.filter((e) => !y.value || (t.filterMethod ? t.filterMethod(y.value, e) : e.label.toLocaleLowerCase().includes(y.value.toLocaleLowerCase()))));
39
- function $(e) {
40
- k("update:modelValue", e), k("change", e);
41
- }
42
- function S(e) {
43
- const a = r.value[e];
44
- !a || a.disabled || t.disabled || t.loading || (x.value ? $(u.value.includes(a.value) ? u.value.filter((l) => l !== a.value) : [...u.value, a.value]) : ($(a.value), h(!0)));
45
- }
46
- function O() {
104
+ emits: ["update:modelValue", "change", "clear", "selectAll", "deselectAll", "update:open", "visibleChange", "update:searchValue", "search", "select", "deselect", "removeTag", "create", "reject", "searchError", "focus", "blur", "popupScroll", "reachEnd"],
105
+ setup(r, { expose: At, emit: Ct }) {
106
+ const a = r, p = Ct, wt = Rt(), Xe = ul(), D = Pt(al, void 0), {
107
+ disabled: b,
108
+ size: F,
109
+ label: Ge
110
+ } = il(a), m = L(), C = L(), H = L(), ee = L(), se = It(), Fe = L("");
111
+ function Je() {
112
+ var i;
113
+ const e = (i = m.value) == null ? void 0 : i.closest("label");
114
+ if (!e) {
115
+ Fe.value = "";
116
+ return;
117
+ }
118
+ const t = e.cloneNode(!0);
119
+ t.querySelectorAll(".hys-ui-select-wrap").forEach((o) => o.remove()), Fe.value = (t.textContent ?? "").replace(/\s+/g, " ").trim();
120
+ }
121
+ const Ze = ye(a.defaultValue ?? null), te = c(
122
+ () => a.modelValue !== void 0 ? a.modelValue : Ze.value
123
+ ), z = c(() => a.multiple || Array.isArray(te.value)), s = rl(() => a.valueKey), g = c(() => {
124
+ const e = Array.isArray(te.value) ? te.value.filter((i) => i != null) : te.value == null || a.emptyValues.some((i) => Object.is(i, te.value)) ? [] : [te.value], t = /* @__PURE__ */ new Set();
125
+ return e.filter((i) => {
126
+ const o = s(i);
127
+ return t.has(o) ? !1 : (t.add(o), !0);
128
+ });
129
+ }), j = c(() => new Set(g.value.map(s))), R = ye([]), K = ye(/* @__PURE__ */ new Map()), ge = ye(), ke = L(!1), le = ye(), _e = L(""), xe = L(a.searchValue ?? ""), Te = L(!1), k = c(() => a.searchValue ?? _e.value), ne = c(() => a.filterable || a.allowCreate), et = c(
130
+ () => nl(
131
+ ge.value ?? a.options,
132
+ a.fieldNames,
133
+ s
134
+ )
135
+ ), ae = c(
136
+ () => et.value.flatMap((e) => e.option ? [e.option] : [])
137
+ );
138
+ X(
139
+ [ae, g, R],
140
+ () => {
141
+ const e = K.value, t = /* @__PURE__ */ new Map();
142
+ for (const i of [...R.value, ...ae.value])
143
+ t.set(s(i.value), i);
144
+ for (const i of g.value) {
145
+ const o = s(i);
146
+ !t.has(o) && e.has(o) && t.set(o, e.get(o));
147
+ }
148
+ K.value = t;
149
+ },
150
+ { immediate: !0 }
151
+ );
152
+ function He(e) {
153
+ if (a.fallbackOption !== !1)
154
+ return typeof a.fallbackOption == "function" ? a.fallbackOption(e) : {
155
+ value: e,
156
+ label: String(
157
+ typeof e == "object" ? e.label ?? e.name ?? e[a.valueKey] ?? "未命名选项" : e
158
+ )
159
+ };
160
+ }
161
+ const B = c(
162
+ () => g.value.flatMap((e) => {
163
+ const t = K.value.get(s(e)) ?? He(e);
164
+ return t ? [t] : [];
165
+ })
166
+ ), tt = c(
167
+ () => B.value.slice(
168
+ 0,
169
+ a.maxTagCount === void 0 ? void 0 : Math.max(0, a.maxTagCount)
170
+ )
171
+ ), Se = c(
172
+ () => B.value.slice(tt.value.length)
173
+ ), P = c(() => a.loading || ke.value), Ae = c(
174
+ () => z.value && a.multipleLimit > 0 && g.value.length >= a.multipleLimit
175
+ ), Ce = c(
176
+ () => {
177
+ var e, t;
178
+ return a.status ?? ((e = D == null ? void 0 : D.invalid) != null && e.value ? "error" : (t = D == null ? void 0 : D.status) == null ? void 0 : t.value);
179
+ }
180
+ ), ie = c(
181
+ () => F.value === "sm" ? 14 : F.value === "lg" ? 18 : 16
182
+ ), I = c(
183
+ () => Math.max(
184
+ 24,
185
+ a.itemHeight ?? (F.value === "sm" ? 34 : F.value === "lg" ? 50 : 42)
186
+ )
187
+ ), je = c(() => {
188
+ const e = k.value.trim();
189
+ if (!(!a.allowCreate || !e || [...ae.value, ...R.value].some(
190
+ (t) => t.label === e || s(t.value) === s(e)
191
+ )))
192
+ return { value: e, label: e };
193
+ }), S = c(() => {
194
+ let e = et.value.filter((u) => u.option).concat(
195
+ R.value.filter(
196
+ (u) => !ae.value.some(
197
+ (l) => s(l.value) === s(u.value)
198
+ )
199
+ ).map((u) => ({ key: s(u.value), option: u, index: -1 }))
200
+ );
201
+ !a.remote && !a.remoteMethod && (e = e.filter(
202
+ (u) => !k.value || (a.filterMethod ? a.filterMethod(k.value, u.option) : u.option.label.toLocaleLowerCase().includes(k.value.toLocaleLowerCase()))
203
+ )), a.filterSort && (e = [...e].sort(
204
+ (u, l) => a.filterSort(u.option, l.option)
205
+ )), je.value && (e = [
206
+ {
207
+ key: "create:" + s(je.value.value),
208
+ option: je.value,
209
+ created: !0,
210
+ index: -1
211
+ },
212
+ ...e
213
+ ]);
214
+ const t = [];
215
+ let i, o = 0;
216
+ for (const u of e)
217
+ u.group !== i && (i = u.group, i && t.push({ key: "group:" + i + ":" + o, index: -1, group: i })), t.push({ ...u, index: o++ });
218
+ return t;
219
+ }), we = c(() => z.value && a.showSelectAll), Ke = c(() => {
220
+ const e = a.selectAllScope === "all" ? [...ae.value, ...R.value] : S.value.flatMap(
221
+ (i) => i.option && !i.created ? [i.option] : []
222
+ ), t = /* @__PURE__ */ new Set();
223
+ return e.filter((i) => {
224
+ const o = s(i.value);
225
+ return t.has(o) ? !1 : (t.add(o), !i.disabled);
226
+ });
227
+ }), Me = c(
228
+ () => b.value || a.readonly || P.value || !!le.value
229
+ ), Mt = c(
230
+ () => Ke.value.some(
231
+ (e) => !j.value.has(s(e.value))
232
+ )
233
+ ), lt = c(() => {
234
+ const e = new Set(
235
+ Ke.value.map((t) => s(t.value))
236
+ );
237
+ return g.value.filter((t) => {
238
+ const i = K.value.get(s(t));
239
+ return !(i != null && i.disabled) && (a.selectAllScope === "all" || e.has(s(t)));
240
+ });
241
+ }), Bt = c(
242
+ () => S.value.filter((e) => e.option).length
243
+ ), O = L(), Be = L(0), We = L(0), W = c(
244
+ () => a.virtual && S.value.length > 100
245
+ ), re = c(
246
+ () => Math.min(
247
+ 800,
248
+ Math.max(80, Number.isFinite(a.listHeight) ? a.listHeight : 240)
249
+ )
250
+ ), at = c(() => Math.max(1, Math.min(30, a.overscan))), qe = c(
251
+ () => W.value ? Math.max(
252
+ 0,
253
+ Math.min(
254
+ Math.max(0, S.value.length - 1),
255
+ Math.floor(Be.value / I.value) - at.value
256
+ )
257
+ ) : 0
258
+ ), it = c(
259
+ () => W.value ? S.value.slice(
260
+ qe.value,
261
+ qe.value + Math.ceil(re.value / I.value) + at.value * 2
262
+ ) : S.value
263
+ ), ce = c(
264
+ () => S.value.find((e) => e.key === O.value)
265
+ ), ot = c(
266
+ () => {
267
+ var e;
268
+ return !P.value && ((e = ce.value) != null && e.option) && (!W.value || it.value.some((t) => t.key === O.value)) ? se + "-" + ce.value.index : void 0;
269
+ }
270
+ ), Ot = c(() => {
271
+ var i;
272
+ if (!W.value || a.popupMatchWidth || a.popupWidth !== void 0)
273
+ return a.popupWidth;
274
+ const e = F.value === "sm" ? 12 : F.value === "lg" ? 15 : 14;
275
+ let t = 0;
276
+ for (const o of S.value) {
277
+ const u = ((i = o.option) == null ? void 0 : i.label) ?? o.group ?? "";
278
+ let l = 0;
279
+ for (const v of u) l += v.charCodeAt(0) > 255 ? 1 : 0.58;
280
+ t = Math.max(t, l * e);
281
+ }
282
+ return Math.max(We.value, t + 52);
283
+ });
284
+ let U = !0, de = !1, ve = 0, oe, De, G, Re = 0, Oe, Le = "";
285
+ const {
286
+ open: y,
287
+ style: Lt,
288
+ placement: ut,
289
+ show: zt,
290
+ close: w,
291
+ update: ze,
292
+ restoringFocus: Vt
293
+ } = sl(m, C, {
294
+ get placement() {
295
+ return a.placement;
296
+ },
297
+ get closeOnTab() {
298
+ return !we.value;
299
+ },
300
+ matchWidth: () => a.popupMatchWidth ? !0 : "min",
301
+ width: () => Ot.value,
302
+ requestOpen: (e) => (p("update:open", e), a.open === void 0 ? void 0 : !1)
303
+ }), $t = c(() => ({
304
+ ...a.popupStyle,
305
+ ...Lt.value,
306
+ maxHeight: "min(60dvh, calc(100dvh - 20px))",
307
+ overflowY: "hidden",
308
+ "--hys-ui-select-stride": I.value + "px",
309
+ "--hys-ui-select-list-height": re.value + "px"
310
+ })), Et = () => Object.fromEntries(
311
+ Object.entries(wt).filter(([e]) => !["class", "style"].includes(e))
312
+ ), J = (e) => !!e.disabled || a.readonly || P.value || b.value || Ae.value && !j.value.has(s(e.value));
313
+ function st() {
314
+ return S.value.filter((e) => e.option && !J(e.option));
315
+ }
316
+ function Ve(e = !1) {
317
+ var o;
318
+ const t = st(), i = t.find(
319
+ (u) => j.value.has(s(u.option.value))
320
+ );
321
+ O.value = (o = i ?? (a.defaultActiveFirst ? e ? t.at(-1) : t[0] : void 0)) == null ? void 0 : o.key;
322
+ }
323
+ async function Z() {
324
+ var t, i;
325
+ const e = S.value.findIndex(
326
+ (o) => o.key === O.value
327
+ );
328
+ if (!(e < 0)) {
329
+ if (W.value && H.value) {
330
+ const o = e * I.value, u = o + I.value, l = H.value.clientHeight || re.value;
331
+ o < H.value.scrollTop ? H.value.scrollTop = o : u > H.value.scrollTop + l && (H.value.scrollTop = u - l), Be.value = H.value.scrollTop;
332
+ }
333
+ await V(), W.value || (i = (t = C.value) == null ? void 0 : t.querySelector('[data-active="true"]')) == null || i.scrollIntoView({ block: "nearest" });
334
+ }
335
+ }
336
+ function Q(e) {
337
+ const t = Array.isArray(e) ? e : e == null || a.emptyValues.some((o) => Object.is(o, e)) ? [] : [e];
338
+ if (t.length === g.value.length && t.every((o, u) => s(o) === s(g.value[u])))
339
+ return;
340
+ a.modelValue === void 0 && (Ze.value = e);
341
+ const i = t.flatMap((o) => {
342
+ const u = K.value.get(s(o)) ?? He(o);
343
+ return u ? [u] : [];
344
+ });
345
+ p("update:modelValue", e), p("change", e, z.value ? i : i[0]);
346
+ }
347
+ function nt() {
348
+ const e = document.activeElement;
349
+ V(() => {
350
+ var t, i;
351
+ e && ((t = C.value) != null && t.contains(e)) && e.disabled && ((i = dt()[0] ?? m.value) == null || i.focus());
352
+ });
353
+ }
354
+ function rt() {
355
+ if (!z.value || Me.value) return 0;
356
+ const e = [...g.value], t = [], i = new Set(j.value), o = a.multipleLimit > 0 ? a.multipleLimit : 1 / 0;
357
+ for (const u of Ke.value) {
358
+ const l = s(u.value);
359
+ if (!i.has(l)) {
360
+ if (e.length >= o) break;
361
+ i.add(l), e.push(u.value), t.push(u);
362
+ }
363
+ }
364
+ return t.length ? (Q(e), nt(), p("selectAll", e, t), t.length) : 0;
365
+ }
366
+ function ct() {
367
+ if (!z.value || Me.value) return 0;
368
+ const e = new Set(lt.value.map(s));
369
+ if (!e.size) return 0;
370
+ const t = g.value.filter((o) => !e.has(s(o))), i = g.value.filter((o) => e.has(s(o))).map(
371
+ (o) => K.value.get(s(o)) ?? He(o) ?? { value: o, label: String(o) }
372
+ );
373
+ return Q(t), nt(), p("deselectAll", t, i), e.size;
374
+ }
375
+ function dt() {
47
376
  var e;
48
- t.disabled || ($(x.value ? [] : ""), k("clear"), (e = g.value) == null || e.focus());
377
+ return Array.from(
378
+ ((e = C.value) == null ? void 0 : e.querySelectorAll(St)) ?? []
379
+ ).filter(
380
+ (t) => t.tabIndex >= 0 && t.getClientRects().length && !t.closest("[inert]")
381
+ );
382
+ }
383
+ function Ft(e) {
384
+ var l, v;
385
+ const t = dt(), i = document.activeElement, o = t.indexOf(i), u = i === m.value ? e.shiftKey ? void 0 : t[0] : t[o + (e.shiftKey ? -1 : 1)];
386
+ if (u) {
387
+ e.preventDefault(), u.focus();
388
+ return;
389
+ }
390
+ if ((l = C.value) != null && l.contains(i)) {
391
+ e.preventDefault();
392
+ const f = Array.from(
393
+ document.querySelectorAll(St)
394
+ ).filter(
395
+ (T) => {
396
+ var Y;
397
+ return !((Y = C.value) != null && Y.contains(T)) && T.tabIndex >= 0 && T.getClientRects().length && !T.closest("[inert]");
398
+ }
399
+ ), x = f.indexOf(m.value), q = f.slice(x + 1).find((T) => {
400
+ var Y, he;
401
+ return !((he = (Y = m.value) == null ? void 0 : Y.parentElement) != null && he.contains(T));
402
+ });
403
+ w(), (v = e.shiftKey ? m.value : q ?? m.value) == null || v.focus();
404
+ } else w();
405
+ }
406
+ function fe(e) {
407
+ xe.value = e, a.searchValue === void 0 && (_e.value = e), p("update:searchValue", e);
408
+ }
409
+ function vt(e) {
410
+ K.value.has(s(e.value)) || (R.value = [...R.value, e], K.value = new Map(K.value).set(
411
+ s(e.value),
412
+ e
413
+ ), p("create", e));
414
+ }
415
+ function ft(e) {
416
+ try {
417
+ const t = a.createOption ? a.createOption(e) : { label: e, value: e };
418
+ return t ? { ...t, label: String(t.label) } : void 0;
419
+ } catch {
420
+ p("reject", e, "create");
421
+ return;
422
+ }
423
+ }
424
+ async function pt(e) {
425
+ var u;
426
+ if (!(e != null && e.option) || J(e.option)) return;
427
+ let t = e.option;
428
+ if (e.created) {
429
+ const l = ft(t.label);
430
+ if (!l) return;
431
+ if (t = K.value.get(s(l.value)) ?? l, Ae.value && !j.value.has(s(t.value))) {
432
+ p("reject", t.value, "limit");
433
+ return;
434
+ }
435
+ vt(t);
436
+ }
437
+ const i = s(t.value), o = j.value.has(i);
438
+ if (z.value) {
439
+ if (o)
440
+ Q(g.value.filter((l) => s(l) !== i)), p("deselect", t.value, t);
441
+ else {
442
+ if (Ae.value) {
443
+ p("reject", t.value, "limit");
444
+ return;
445
+ }
446
+ Q([...g.value, t.value]), p("select", t.value, t);
447
+ }
448
+ a.clearSearchAfterSelect && fe(""), await V(), y.value && ne.value && ((u = ee.value) == null || u.focus());
449
+ } else
450
+ Q(t.value), p("select", t.value, t), w(!0);
451
+ }
452
+ function Pe(e) {
453
+ var t;
454
+ b.value || a.readonly || e.disabled || !a.removable || (Q(g.value.filter((i) => s(i) !== s(e.value))), p("removeTag", e.value, e), p("deselect", e.value, e), (t = m.value) == null || t.focus());
455
+ }
456
+ function Ht() {
457
+ var e, t;
458
+ b.value || a.readonly || (pe(), Q(z.value ? [] : a.clearValue), a.clearCreatedOnClear && (R.value = []), fe(""), p("clear"), y.value && ne.value ? (e = ee.value) == null || e.focus() : (t = m.value) == null || t.focus());
459
+ }
460
+ async function N(e = !1, t = !1) {
461
+ var i;
462
+ !U || b.value || (!a.retainSearch && !a.searchValue && fe(""), Ve(e), await zt(t), await V(), y.value && (ne.value && ((i = ee.value) == null || i.focus()), await Z()));
463
+ }
464
+ function ht() {
465
+ y.value ? w() : N();
466
+ }
467
+ function pe() {
468
+ ve++, clearTimeout(De), De = void 0, oe == null || oe.abort(), oe = void 0, ke.value = !1;
469
+ }
470
+ function $e(e, t = !1) {
471
+ if (pe(), !a.remoteMethod || !y.value || !U || b.value)
472
+ return;
473
+ const i = ve, o = new AbortController();
474
+ oe = o, ke.value = !0, le.value = void 0;
475
+ const u = async () => {
476
+ try {
477
+ const l = await a.remoteMethod(e, {
478
+ signal: o.signal
479
+ });
480
+ if (!U || o.signal.aborted || i !== ve || !y.value)
481
+ return;
482
+ Array.isArray(l) && (ge.value = l);
483
+ } catch (l) {
484
+ if (o.signal.aborted || i !== ve || !U) return;
485
+ le.value = l, ge.value = [], p("searchError", l, e);
486
+ } finally {
487
+ i === ve && (ke.value = !1, oe = void 0, await V(), y.value && (Ve(), ze(), Z()));
488
+ }
489
+ };
490
+ t || a.debounce <= 0 ? u() : De = setTimeout(u, a.debounce);
491
+ }
492
+ function Ie() {
493
+ $e(k.value, !0);
494
+ }
495
+ function jt(e) {
496
+ var f;
497
+ if (b.value || a.readonly || P.value || !z.value || !a.allowCreate || !((f = a.tokenSeparators) != null && f.length))
498
+ return !1;
499
+ let t = [e], i = !1;
500
+ for (const x of a.tokenSeparators)
501
+ x && (t.some((q) => q.includes(x)) && (i = !0), t = t.flatMap((q) => q.split(x)));
502
+ if (!i) return !1;
503
+ const o = t.pop() ?? "", u = [...g.value], l = new Set(u.map(s));
504
+ let v = !1;
505
+ for (const x of t.map((q) => q.trim()).filter(Boolean)) {
506
+ const q = [...ae.value, ...R.value].find(
507
+ (he) => he.label === x || s(he.value) === s(x)
508
+ ), T = q ?? ft(x);
509
+ if (!T) continue;
510
+ const Y = s(T.value);
511
+ if (!(l.has(Y) || T.disabled)) {
512
+ if (a.multipleLimit > 0 && u.length >= a.multipleLimit) {
513
+ p("reject", T.value, "limit");
514
+ continue;
515
+ }
516
+ q || vt(T), l.add(Y), u.push(T.value), v = !0, p("select", T.value, T);
517
+ }
518
+ }
519
+ return v && Q(u), fe(o), !0;
520
+ }
521
+ function yt(e) {
522
+ if (b.value) return;
523
+ const t = e.target.value;
524
+ xe.value = t, !Te.value && (jt(t) || fe(t));
49
525
  }
50
- async function M() {
51
- var a;
52
- if (t.disabled) return;
53
- if (v.value) {
54
- h();
526
+ function Kt(e) {
527
+ Te.value = !1, yt(e);
528
+ }
529
+ async function mt(e) {
530
+ var o, u;
531
+ if (b.value || !a.keyboard || e.isComposing || Te.value || e.keyCode === 229)
532
+ return;
533
+ if (e.key === "Tab" && y.value && we.value) {
534
+ Ft(e);
55
535
  return;
56
536
  }
57
- y.value = "";
58
- const e = r.value.findIndex((l) => u.value.includes(l.value) && !l.disabled);
59
- o.value = e >= 0 ? e : r.value.findIndex((l) => !l.disabled), await G(), t.filterable && ((a = P.value) == null || a.focus());
60
- }
61
- async function W(e) {
62
- var a, l, c;
63
- if (!(t.disabled || e.isComposing || e.keyCode === 229))
64
- if (["ArrowDown", "ArrowUp", "Home", "End"].includes(e.key)) {
65
- if (e.preventDefault(), !v.value) await M();
537
+ if (e.target.closest(
538
+ ".hys-ui-select-tag button,.hys-ui-select-clear"
539
+ ))
540
+ return;
541
+ const t = e.target === ee.value, i = e.target;
542
+ if (!(i !== m.value && !t && !i.matches('[role="option"]') && i.closest(
543
+ 'button,input,textarea,select,a,[role="button"],[contenteditable="true"]'
544
+ ))) {
545
+ if (["ArrowDown", "ArrowUp", "Home", "End", "PageDown", "PageUp"].includes(
546
+ e.key
547
+ )) {
548
+ if (e.preventDefault(), !y.value)
549
+ await N(e.key === "ArrowUp" || e.key === "End");
66
550
  else {
67
- const b = e.key === "ArrowUp" ? -1 : 1;
68
- let A = e.key === "Home" ? -1 : e.key === "End" ? r.value.length : o.value;
69
- for (let U = 0; U < r.value.length; U++)
70
- if (A = (A + (e.key === "End" ? -1 : b) + r.value.length) % r.value.length, !r.value[A].disabled) {
71
- o.value = A;
551
+ const l = S.value, v = ["ArrowUp", "End", "PageUp"].includes(e.key) ? -1 : 1;
552
+ let f = e.key === "Home" ? -1 : e.key === "End" ? l.length : l.findIndex((x) => x.key === O.value);
553
+ e.key.startsWith("Page") && (f = Math.max(
554
+ -1,
555
+ Math.min(
556
+ l.length,
557
+ f + v * (Math.max(1, Math.floor(re.value / I.value)) - 1)
558
+ )
559
+ ));
560
+ for (let x = 0; x < l.length; x++)
561
+ if (f = (f + v + l.length) % l.length, l[f].option && !J(l[f].option)) {
562
+ O.value = l[f].key;
72
563
  break;
73
564
  }
74
565
  }
75
- await q(), (l = (a = B.value) == null ? void 0 : a.querySelector('[data-active="true"]')) == null || l.scrollIntoView({ block: "nearest" });
76
- } else e.key === "Enter" || e.key === " " && !t.filterable ? (e.preventDefault(), v.value ? S(o.value) : await M()) : e.key === "Tab" && h(!!((c = B.value) != null && c.contains(document.activeElement)));
77
- }
78
- return m(y, (e) => {
79
- o.value = r.value.findIndex((a) => !a.disabled), k("search", e);
80
- }), m(r, (e) => {
81
- (!e[o.value] || e[o.value].disabled) && (o.value = e.findIndex((a) => !a.disabled)), v.value && q(J);
82
- }, { deep: !0 }), m(() => t.popupMatchWidth, () => {
83
- v.value && (h(), M());
84
- }), m(v, (e) => k("visibleChange", e)), m(() => t.disabled, (e) => {
85
- e && h();
86
- }), R({ focus: () => {
87
- var e;
88
- return (e = g.value) == null ? void 0 : e.focus();
89
- }, blur: () => {
566
+ await Z();
567
+ } else if (e.key === "Enter" || e.key === " " && !t)
568
+ e.preventDefault(), y.value ? await pt(ce.value) : await N();
569
+ else if (e.key === "Tab")
570
+ w(!!((o = C.value) != null && o.contains(document.activeElement)));
571
+ else if (e.key === "Backspace" && z.value && !k.value) {
572
+ const l = [...B.value].reverse().find((v) => !v.disabled);
573
+ l && a.removable && (e.preventDefault(), Pe(l), t && (await V(), (u = ee.value) == null || u.focus()));
574
+ } else if (!ne.value && e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey) {
575
+ Le += e.key.toLocaleLowerCase(), clearTimeout(Oe), Oe = setTimeout(() => {
576
+ Le = "";
577
+ }, 600), y.value || await N();
578
+ const l = st().find(
579
+ (v) => v.option.label.toLocaleLowerCase().startsWith(Le)
580
+ );
581
+ l && (O.value = l.key, await Z());
582
+ }
583
+ }
584
+ }
585
+ function bt(e) {
586
+ de || (de = !0, p("focus", e)), a.showOnFocus && !y.value && !Vt.value && e.target === m.value && N();
587
+ }
588
+ function gt(e) {
589
+ var i, o;
590
+ const t = e.relatedTarget;
591
+ t && ((i = m.value) != null && i.contains(t) || (o = C.value) != null && o.contains(t)) || V(() => {
592
+ var l, v;
593
+ const u = document.activeElement;
594
+ de && !((l = m.value) != null && l.contains(u)) && !((v = C.value) != null && v.contains(u)) && (de = !1, we.value && w(), p("blur", e));
595
+ });
596
+ }
597
+ function Wt(e) {
598
+ const t = e.target;
599
+ Be.value = t.scrollTop, p("popupScroll", e), t.scrollTop + t.clientHeight >= t.scrollHeight - 2 && p("reachEnd");
600
+ }
601
+ function Ne() {
602
+ G == null || G.disconnect(), G = void 0, cancelAnimationFrame(Re);
603
+ }
604
+ function qt() {
605
+ if (Ne(), !y.value || !U) return;
606
+ const e = () => {
607
+ cancelAnimationFrame(Re), Re = requestAnimationFrame(() => {
608
+ var t;
609
+ We.value = ((t = m.value) == null ? void 0 : t.clientWidth) ?? 0, ze();
610
+ });
611
+ };
612
+ typeof ResizeObserver < "u" && (G = new ResizeObserver(e), m.value && G.observe(m.value), C.value && G.observe(C.value));
613
+ }
614
+ X(k, (e) => {
615
+ xe.value = e, O.value = void 0, Be.value = 0, H.value && (H.value.scrollTop = 0), Ve(), p("search", e), $e(e), y.value && V(Z);
616
+ }), X(S, () => {
617
+ var t;
618
+ const e = !((t = ce.value) != null && t.option) || J(ce.value.option);
619
+ e && Ve(), y.value && V(() => {
620
+ ze(), e && Z();
621
+ });
622
+ }), X(
623
+ [
624
+ g,
625
+ F,
626
+ () => a.popupMatchWidth,
627
+ () => a.popupWidth,
628
+ () => a.placement
629
+ ],
630
+ () => {
631
+ y.value && V(ze);
632
+ }
633
+ ), X(y, (e) => {
634
+ var t;
635
+ p("visibleChange", e), e ? (We.value = ((t = m.value) == null ? void 0 : t.clientWidth) ?? 0, V(qt), $e(k.value)) : (Ne(), pe(), clearTimeout(Oe), Le = "");
636
+ }), X(
637
+ () => a.open,
638
+ (e) => {
639
+ U && (e ? N(!1, !0) : e === !1 && w(!1, !0));
640
+ }
641
+ ), X(
642
+ b,
643
+ (e) => {
644
+ e && (w(!1, !0), pe(), p("update:open", !1));
645
+ },
646
+ { flush: "sync" }
647
+ ), X(
648
+ () => a.remoteMethod,
649
+ () => {
650
+ ge.value = void 0, le.value = void 0, y.value && $e(k.value);
651
+ }
652
+ );
653
+ function kt() {
654
+ U = !1, w(!1, !0), Ne(), pe(), clearTimeout(Oe), de = !1;
655
+ }
656
+ return Nt(() => {
90
657
  var e;
91
- return (e = g.value) == null ? void 0 : e.blur();
92
- }, close: () => h() }), (e, a) => (s(), n("div", F(i(N), {
93
- class: ["hys-ui-select-wrap", "hys-ui-select-" + d.size]
94
- }), [
95
- L("button", {
96
- ref_key: "trigger",
97
- ref: g,
98
- type: "button",
99
- class: "hys-ui-select",
100
- "aria-label": d.ariaLabel,
101
- disabled: d.disabled,
102
- role: "combobox",
103
- "aria-haspopup": "listbox",
104
- "aria-expanded": i(v),
105
- "aria-controls": i(v) ? i(f) : void 0,
106
- "aria-activedescendant": i(v) ? i(f) + "-" + o.value : void 0,
107
- onClick: M,
108
- onKeydown: W
109
- }, [
110
- L("span", ce, [
111
- C(e.$slots, "label", { selected: w.value }, () => {
112
- var l, c;
113
- return [
114
- x.value && w.value.length ? (s(!0), n(D, { key: 0 }, K(w.value, (b) => (s(), n("span", {
115
- key: b.value,
116
- class: "hys-ui-select-tag"
117
- }, z(b.label), 1))), 128)) : (s(), n("span", {
658
+ Je(), a.autofocus && !b.value && ((e = m.value) == null || e.focus()), (a.open ?? a.defaultOpen) && N(!1, !0);
659
+ }), Ut(Je), Qt(() => {
660
+ U = !0, a.open && N(!1, !0);
661
+ }), Yt(kt), Xt(kt), At({
662
+ focus: () => {
663
+ var e;
664
+ b.value || (e = m.value) == null || e.focus();
665
+ },
666
+ blur: () => {
667
+ var t, i;
668
+ const e = document.activeElement;
669
+ e && ((t = m.value) != null && t.contains(e) || (i = C.value) != null && i.contains(e)) && e.blur(), w();
670
+ },
671
+ open: () => N(),
672
+ close: () => w(),
673
+ scrollTo: (e) => {
674
+ O.value = s(e), Z();
675
+ },
676
+ retry: Ie,
677
+ selectAll: rt,
678
+ deselectAll: ct,
679
+ selected: B,
680
+ query: k,
681
+ isOpen: y
682
+ }), (e, t) => {
683
+ var i, o, u;
684
+ return d(), h("div", Ue(n(Xe), {
685
+ class: ["hys-ui-select-wrap", [e.$attrs.class, "hys-ui-select-" + n(F)]],
686
+ style: e.$attrs.style
687
+ }), [
688
+ $("button", {
689
+ hidden: "",
690
+ type: "button",
691
+ tabindex: "-1",
692
+ "aria-hidden": "true",
693
+ disabled: n(b),
694
+ onClick: t[0] || (t[0] = Ee((l) => {
695
+ var v;
696
+ (v = m.value) == null || v.focus(), ht();
697
+ }, ["prevent"]))
698
+ }, null, 8, cl),
699
+ $("div", Ue({
700
+ ref_key: "trigger",
701
+ ref: m
702
+ }, Et(), {
703
+ class: ["hys-ui-select", {
704
+ "hys-ui-select-disabled": n(b),
705
+ "hys-ui-select-borderless": !r.bordered,
706
+ "hys-ui-select-error": Ce.value === "error",
707
+ "hys-ui-select-warning": Ce.value === "warning",
708
+ "hys-ui-select-success": Ce.value === "success"
709
+ }],
710
+ id: e.$attrs.id || ((i = n(D)) == null ? void 0 : i.id.value) || void 0,
711
+ "data-hys-ui-field-managed": "",
712
+ role: "combobox",
713
+ tabindex: n(b) ? -1 : 0,
714
+ "aria-label": r.ariaLabel || n(Ge) || Fe.value || B.value.map((l) => l.label).join("、") || r.placeholder,
715
+ "aria-haspopup": "listbox",
716
+ "aria-expanded": n(y),
717
+ "aria-disabled": n(b) || void 0,
718
+ "aria-readonly": r.readonly || void 0,
719
+ "aria-required": ((o = n(D)) == null ? void 0 : o.required.value) || void 0,
720
+ "aria-invalid": Ce.value === "error" || !1,
721
+ "aria-describedby": [e.$attrs["aria-describedby"], (u = n(D)) == null ? void 0 : u.describedBy.value].filter(Boolean).join(" ") || void 0,
722
+ "aria-controls": n(y) ? n(se) : void 0,
723
+ "aria-activedescendant": n(y) ? ot.value : void 0,
724
+ onClick: t[1] || (t[1] = Ee((l) => !l.target.closest("button") && ht(), ["prevent"])),
725
+ onKeydown: mt,
726
+ onFocusin: bt,
727
+ onFocusout: gt
728
+ }), [
729
+ $("span", vl, [
730
+ A(e.$slots, "label", { selected: B.value }, () => {
731
+ var l, v;
732
+ return [
733
+ z.value && B.value.length ? (d(), h(ue, { key: 0 }, [
734
+ (d(!0), h(ue, null, Qe(tt.value, (f) => (d(), h("span", {
735
+ key: n(s)(f.value),
736
+ class: "hys-ui-select-tag"
737
+ }, [
738
+ A(e.$slots, "tag", {
739
+ option: f,
740
+ remove: () => Pe(f),
741
+ disabled: n(b) || r.readonly || f.disabled
742
+ }, () => [
743
+ $("span", {
744
+ class: "hys-ui-select-tag-text",
745
+ title: f.label
746
+ }, M(r.maxTagTextLength && f.label.length > r.maxTagTextLength ? f.label.slice(0, r.maxTagTextLength) + "…" : f.label), 9, fl),
747
+ r.removable && !r.readonly && !f.disabled ? (d(), h("button", {
748
+ key: 0,
749
+ type: "button",
750
+ disabled: n(b),
751
+ "aria-label": "移除 " + f.label,
752
+ onClick: Ee((x) => Pe(f), ["stop"])
753
+ }, [
754
+ A(e.$slots, "remove-icon", {}, () => [
755
+ me(n(Tt), {
756
+ size: ie.value - 3
757
+ }, null, 8, ["size"])
758
+ ], !0)
759
+ ], 8, pl)) : E("", !0)
760
+ ], !0)
761
+ ]))), 128)),
762
+ Se.value.length ? (d(), h("span", {
763
+ key: 0,
764
+ class: "hys-ui-select-tag hys-ui-select-more",
765
+ title: Se.value.map((f) => f.label).join("、")
766
+ }, [
767
+ A(e.$slots, "max-tag", { omitted: Se.value }, () => [
768
+ _("+" + M(Se.value.length), 1)
769
+ ], !0)
770
+ ], 8, hl)) : E("", !0)
771
+ ], 64)) : (d(), h("span", {
772
+ key: 1,
773
+ class: xt(["hys-ui-select-single-label", { "hys-ui-select-placeholder": !B.value.length }]),
774
+ title: (l = B.value[0]) == null ? void 0 : l.label
775
+ }, M(((v = B.value[0]) == null ? void 0 : v.label) ?? r.placeholder), 11, yl))
776
+ ];
777
+ }, !0)
778
+ ]),
779
+ r.showArrow || P.value ? (d(), h("span", ml, [
780
+ A(e.$slots, "suffix", {
781
+ open: n(y),
782
+ loading: P.value
783
+ }, () => [
784
+ P.value ? (d(), Ye(n(_t), {
785
+ key: 0,
786
+ class: "hys-ui-icon-spin",
787
+ size: ie.value
788
+ }, null, 8, ["size"])) : (d(), Ye(n(el), {
118
789
  key: 1,
119
- class: "hys-ui-select-single-label",
120
- title: (l = w.value[0]) == null ? void 0 : l.label
121
- }, z(((c = w.value[0]) == null ? void 0 : c.label) || d.placeholder), 9, ve))
122
- ];
123
- }, !0)
124
- ]),
125
- d.loading ? (s(), E(i(ie), {
790
+ class: "hys-ui-select-chevron",
791
+ size: ie.value,
792
+ "aria-hidden": "true"
793
+ }, null, 8, ["size"]))
794
+ ], !0)
795
+ ])) : E("", !0)
796
+ ], 16, dl),
797
+ r.clearable && g.value.length && !n(b) && !r.readonly ? (d(), h("button", {
126
798
  key: 0,
127
- class: "hys-ui-icon-spin",
128
- size: 16
129
- })) : (s(), E(i(se), {
130
- key: 1,
131
- class: "hys-ui-select-chevron",
132
- size: 16,
133
- "aria-hidden": "true"
134
- }))
135
- ], 40, de),
136
- d.clearable && u.value.length && !d.disabled ? (s(), n("button", {
137
- key: 0,
138
- type: "button",
139
- class: "hys-ui-select-clear",
140
- "aria-label": "清空选择",
141
- onClick: Z(O, ["stop"])
142
- }, [
143
- _(i(oe), { size: 13 })
144
- ])) : V("", !0),
145
- (s(), E(ee, { to: "body" }, [
146
- i(v) ? (s(), n("div", F({
147
- key: 0,
148
- ref_key: "panel",
149
- ref: B
150
- }, i(N), {
151
- class: "hys-ui-select-options hys-ui-floating-surface",
152
- style: i(j),
153
- onKeydown: W
154
- }), [
155
- d.filterable ? le((s(), n("input", {
156
- key: 0,
157
- ref_key: "searchInput",
158
- ref: P,
159
- "onUpdate:modelValue": a[0] || (a[0] = (l) => y.value = l),
160
- class: "hys-ui-select-search",
161
- placeholder: "搜索选项…",
162
- "aria-label": "搜索选项",
163
- "aria-controls": i(f),
164
- "aria-activedescendant": i(f) + "-" + o.value
165
- }, null, 8, ye)), [
166
- [ae, y.value]
167
- ]) : V("", !0),
168
- L("div", {
169
- id: i(f),
170
- role: "listbox",
171
- "aria-multiselectable": x.value || void 0
172
- }, [
173
- d.loading ? (s(), n("p", he, [
174
- C(e.$slots, "loading", {}, () => [
175
- a[1] || (a[1] = H("加载中…", -1))
176
- ], !0)
177
- ])) : (s(), n(D, { key: 1 }, [
178
- (s(!0), n(D, null, K(r.value, (l, c) => (s(), n("button", {
179
- id: i(f) + "-" + c,
180
- key: l.value,
181
- type: "button",
182
- role: "option",
183
- class: te(["hys-ui-select-option", { "hys-ui-selected": u.value.includes(l.value), "hys-ui-active": o.value === c && !l.disabled }]),
184
- "data-active": o.value === c,
185
- "aria-selected": u.value.includes(l.value),
186
- disabled: l.disabled,
187
- onPointerenter: (b) => !l.disabled && (o.value = c),
188
- onClick: (b) => S(c)
189
- }, [
190
- L("span", {
191
- class: "hys-ui-select-option-label",
192
- title: l.label
799
+ type: "button",
800
+ class: "hys-ui-select-clear",
801
+ "aria-label": "清空选择",
802
+ onClick: Ee(Ht, ["stop"])
803
+ }, [
804
+ A(e.$slots, "clear-icon", {}, () => [
805
+ me(n(Tt), {
806
+ size: ie.value - 2
807
+ }, null, 8, ["size"])
808
+ ], !0)
809
+ ])) : E("", !0),
810
+ r.name ? (d(!0), h(ue, { key: 1 }, Qe(g.value, (l, v) => (d(), h("input", {
811
+ key: v,
812
+ type: "hidden",
813
+ name: r.name,
814
+ value: String(typeof l == "object" ? n(ol)(l, r.valueKey) ?? "" : l),
815
+ disabled: n(b)
816
+ }, null, 8, bl))), 128)) : E("", !0),
817
+ (d(), Ye(Gt, {
818
+ to: r.appendTo === !1 ? "body" : r.appendTo,
819
+ disabled: r.appendTo === !1
820
+ }, [
821
+ me(n(Zt), {
822
+ "popup-transition": a.popupTransition,
823
+ "popup-transition-duration": a.popupTransitionDuration,
824
+ placement: n(ut)
825
+ }, {
826
+ default: Jt(() => [
827
+ n(y) ? (d(), h("div", Ue({
828
+ key: 0,
829
+ ref_key: "panel",
830
+ ref: C
831
+ }, n(Xe), {
832
+ class: ["hys-ui-select-options hys-ui-floating-surface", ["hys-ui-select-popup-" + n(F), r.popupClass]],
833
+ "data-size": n(F),
834
+ "data-placement": n(ut),
835
+ style: $t.value,
836
+ onKeydown: mt,
837
+ onFocusin: bt,
838
+ onFocusout: gt
839
+ }), [
840
+ e.$slots.header ? (d(), h("div", kl, [
841
+ A(e.$slots, "header", {
842
+ query: k.value,
843
+ selected: B.value,
844
+ close: () => n(w)()
845
+ }, void 0, !0)
846
+ ])) : E("", !0),
847
+ ne.value ? (d(), h("input", {
848
+ key: 1,
849
+ ref_key: "searchInput",
850
+ ref: ee,
851
+ value: xe.value,
852
+ class: "hys-ui-select-search",
853
+ placeholder: "搜索选项…",
854
+ "aria-label": "搜索选项",
855
+ "aria-controls": n(se),
856
+ "aria-activedescendant": ot.value,
857
+ "aria-autocomplete": "list",
858
+ onInput: yt,
859
+ onCompositionstart: t[2] || (t[2] = (l) => Te.value = !0),
860
+ onCompositionend: Kt
861
+ }, null, 40, xl)) : E("", !0),
862
+ we.value ? (d(), h("div", Tl, [
863
+ $("span", {
864
+ class: "hys-ui-select-bulk-count",
865
+ "aria-live": "polite",
866
+ title: r.selectAllScope === "filtered" ? "批量操作仅作用于当前结果;禁用项保持不变" : "批量操作所有已加载选项;禁用项保持不变"
867
+ }, M(r.selectAllScope === "filtered" && k.value ? "当前结果 · " : "") + "已选 " + M(g.value.length) + M(r.multipleLimit > 0 ? " / " + r.multipleLimit : ""), 9, Sl),
868
+ $("button", {
869
+ type: "button",
870
+ class: "hys-ui-select-bulk-action",
871
+ disabled: Me.value || !Mt.value || Ae.value,
872
+ "aria-label": r.selectAllText + (r.selectAllScope === "filtered" ? "当前结果" : "全部选项"),
873
+ onClick: rt
874
+ }, M(r.selectAllText), 9, Al),
875
+ $("button", {
876
+ type: "button",
877
+ class: "hys-ui-select-bulk-action",
878
+ disabled: Me.value || !lt.value.length,
879
+ "aria-label": r.deselectAllText + (r.selectAllScope === "filtered" ? "当前结果" : "全部选项"),
880
+ onClick: ct
881
+ }, M(r.deselectAllText), 9, Cl)
882
+ ])) : E("", !0),
883
+ $("div", {
884
+ id: n(se),
885
+ ref_key: "viewport",
886
+ ref: H,
887
+ role: "listbox",
888
+ "aria-label": r.ariaLabel || n(Ge) || "可选项",
889
+ "aria-multiselectable": z.value || void 0,
890
+ "aria-busy": P.value || void 0,
891
+ class: "hys-ui-select-list",
892
+ style: be({
893
+ maxHeight: "min(" + re.value + "px, 45dvh)"
894
+ }),
895
+ onScroll: Wt
193
896
  }, [
194
- C(e.$slots, "option", {
195
- option: l,
196
- selected: u.value.includes(l.value)
197
- }, () => [
198
- H(z(l.label), 1)
199
- ], !0)
200
- ], 8, pe),
201
- u.value.includes(l.value) ? (s(), E(i(ue), {
202
- key: 0,
203
- size: 15,
204
- "aria-hidden": "true"
205
- })) : V("", !0)
206
- ], 42, be))), 128)),
207
- r.value.length ? V("", !0) : (s(), n("p", me, [
208
- C(e.$slots, "empty", {}, () => [
209
- H(z(d.emptyText), 1)
210
- ], !0)
211
- ]))
212
- ], 64))
213
- ], 8, fe),
214
- C(e.$slots, "footer", {}, void 0, !0)
215
- ], 16)) : V("", !0)
216
- ]))
217
- ], 16));
897
+ P.value ? (d(), h("p", Ml, [
898
+ A(e.$slots, "loading", {}, () => [
899
+ _(M(r.loadingText), 1)
900
+ ], !0)
901
+ ])) : le.value ? (d(), h("div", Bl, [
902
+ A(e.$slots, "error", {
903
+ error: le.value,
904
+ retry: Ie
905
+ }, () => [
906
+ t[3] || (t[3] = _("加载失败,", -1)),
907
+ $("button", {
908
+ type: "button",
909
+ class: "hys-ui-select-retry",
910
+ onClick: Ie
911
+ }, " 重试 ")
912
+ ], !0)
913
+ ])) : S.value.length ? (d(), h("div", {
914
+ key: 2,
915
+ style: be(
916
+ W.value ? {
917
+ height: S.value.length * I.value + "px",
918
+ position: "relative"
919
+ } : void 0
920
+ ),
921
+ role: "presentation"
922
+ }, [
923
+ $("div", {
924
+ style: be(
925
+ W.value ? {
926
+ position: "absolute",
927
+ top: 0,
928
+ left: 0,
929
+ right: 0,
930
+ transform: "translateY(" + qe.value * I.value + "px)"
931
+ } : void 0
932
+ ),
933
+ role: "presentation"
934
+ }, [
935
+ (d(!0), h(ue, null, Qe(it.value, (l) => (d(), h(ue, {
936
+ key: l.key
937
+ }, [
938
+ l.option ? (d(), h("button", {
939
+ key: 1,
940
+ id: n(se) + "-" + l.index,
941
+ type: "button",
942
+ role: "option",
943
+ tabindex: "-1",
944
+ class: xt(["hys-ui-select-option", {
945
+ "hys-ui-selected": j.value.has(
946
+ n(s)(l.option.value)
947
+ ),
948
+ "hys-ui-active": O.value === l.key && !J(l.option),
949
+ "hys-ui-select-created": l.created
950
+ }]),
951
+ style: be(
952
+ W.value ? {
953
+ height: "calc(var(--hys-ui-select-stride) - var(--hys-ui-select-option-gap))",
954
+ minHeight: 0
955
+ } : void 0
956
+ ),
957
+ "data-active": O.value === l.key,
958
+ "aria-label": l.created ? "创建 " + l.option.label : l.option.label,
959
+ "aria-description": l.group,
960
+ "aria-selected": j.value.has(n(s)(l.option.value)),
961
+ "aria-setsize": Bt.value,
962
+ "aria-posinset": l.index + 1,
963
+ disabled: J(l.option),
964
+ onPointerenter: (v) => !J(l.option) && (O.value = l.key),
965
+ onClick: (v) => pt(l)
966
+ }, [
967
+ $("span", {
968
+ class: "hys-ui-select-option-label",
969
+ title: l.option.label
970
+ }, [
971
+ A(e.$slots, "option", {
972
+ option: l.option,
973
+ selected: j.value.has(n(s)(l.option.value)),
974
+ created: !!l.created
975
+ }, () => [
976
+ l.created ? (d(), h("span", zl, [
977
+ me(n(tl), { size: ie.value }, null, 8, ["size"]),
978
+ _("创建 " + M(l.option.label), 1)
979
+ ])) : (d(), h(ue, { key: 1 }, [
980
+ _(M(l.option.label), 1)
981
+ ], 64))
982
+ ], !0)
983
+ ], 8, Ll),
984
+ r.showCheckmark && j.value.has(n(s)(l.option.value)) ? A(e.$slots, "selected-icon", {
985
+ option: l.option
986
+ }, () => [
987
+ me(n(ll), {
988
+ size: ie.value - 1,
989
+ "aria-hidden": "true"
990
+ }, null, 8, ["size"])
991
+ ], !0, 0) : E("", !0)
992
+ ], 46, Ol)) : (d(), h("div", {
993
+ key: 0,
994
+ class: "hys-ui-select-group",
995
+ style: be(
996
+ W.value ? { height: I.value + "px" } : void 0
997
+ ),
998
+ role: "presentation"
999
+ }, [
1000
+ A(e.$slots, "group", {
1001
+ label: l.group
1002
+ }, () => [
1003
+ _(M(l.group), 1)
1004
+ ], !0)
1005
+ ], 4))
1006
+ ], 64))), 128))
1007
+ ], 4)
1008
+ ], 4)) : (d(), h("p", Vl, [
1009
+ A(e.$slots, "empty", { query: k.value }, () => [
1010
+ _(M(k.value ? r.noMatchText : r.emptyText), 1)
1011
+ ], !0)
1012
+ ]))
1013
+ ], 44, wl),
1014
+ e.$slots.footer ? (d(), h("div", $l, [
1015
+ A(e.$slots, "footer", {
1016
+ query: k.value,
1017
+ selected: B.value,
1018
+ close: () => n(w)()
1019
+ }, void 0, !0)
1020
+ ])) : E("", !0)
1021
+ ], 16, gl)) : E("", !0)
1022
+ ]),
1023
+ _: 3
1024
+ }, 8, ["popup-transition", "popup-transition-duration", "placement"])
1025
+ ], 8, ["to", "disabled"]))
1026
+ ], 16);
1027
+ };
218
1028
  }
219
1029
  });
220
1030
  export {
221
- Ve as default
1031
+ Dl as default
222
1032
  };