@element-plus/nightly 0.0.20260719 → 0.0.20260721

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 (592) hide show
  1. package/es/components/affix/src/affix.vue.d.ts +3 -3
  2. package/es/components/alert/src/alert.d.ts +1 -1
  3. package/es/components/alert/src/alert.vue.d.ts +1 -1
  4. package/es/components/anchor/src/anchor.vue.d.ts +1 -1
  5. package/es/components/autocomplete/src/autocomplete.d.ts +5 -106
  6. package/es/components/autocomplete/src/autocomplete.mjs.map +1 -1
  7. package/es/components/autocomplete/src/autocomplete.vue.d.ts +5 -5
  8. package/es/components/autocomplete/src/autocomplete.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  9. package/es/components/autocomplete/src/autocomplete2.mjs.map +1 -1
  10. package/es/components/avatar/src/avatar-group-props.d.ts +8 -105
  11. package/es/components/avatar/src/avatar-group-props.mjs +9 -1
  12. package/es/components/avatar/src/avatar-group-props.mjs.map +1 -1
  13. package/es/components/avatar/src/avatar-group.d.ts +17 -210
  14. package/es/components/avatar/src/avatar.d.ts +2 -2
  15. package/es/components/badge/src/badge.d.ts +4 -8
  16. package/es/components/badge/src/badge.mjs +9 -1
  17. package/es/components/badge/src/badge.mjs.map +1 -1
  18. package/es/components/badge/src/badge.vue.d.ts +3 -1
  19. package/es/components/badge/src/badge.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  20. package/es/components/badge/src/badge2.mjs.map +1 -1
  21. package/es/components/button/src/button-group.d.ts +2 -2
  22. package/es/components/button/src/button-group.vue.d.ts +1 -1
  23. package/es/components/button/src/button.d.ts +2 -2
  24. package/es/components/button/src/button.vue.d.ts +4 -4
  25. package/es/components/button/src/use-button.d.ts +2 -2
  26. package/es/components/calendar/src/calendar.mjs.map +1 -1
  27. package/es/components/card/src/card.d.ts +7 -6
  28. package/es/components/card/src/card.mjs +27 -3
  29. package/es/components/card/src/card.mjs.map +1 -1
  30. package/es/components/card/src/card.vue.d.ts +4 -0
  31. package/es/components/card/src/card.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  32. package/es/components/card/src/card2.mjs.map +1 -1
  33. package/es/components/carousel/src/carousel-item.vue.d.ts +1 -1
  34. package/es/components/carousel/src/carousel.vue.d.ts +1 -1
  35. package/es/components/cascader/src/cascader.d.ts +5 -106
  36. package/es/components/cascader/src/cascader.mjs.map +1 -1
  37. package/es/components/cascader/src/cascader.vue.d.ts +18 -16
  38. package/es/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  39. package/es/components/cascader/src/cascader2.mjs.map +1 -1
  40. package/es/components/cascader-panel/src/index.vue.d.ts +5 -5
  41. package/es/components/cascader-panel/src/menu.vue.d.ts +1 -1
  42. package/es/components/check-tag/src/check-tag.d.ts +1 -1
  43. package/es/components/checkbox/src/checkbox-button.vue.d.ts +5 -5
  44. package/es/components/checkbox/src/checkbox-group.d.ts +1 -1
  45. package/es/components/checkbox/src/checkbox-group.vue.d.ts +5 -5
  46. package/es/components/checkbox/src/checkbox.d.ts +3 -3
  47. package/es/components/checkbox/src/checkbox.vue.d.ts +5 -5
  48. package/es/components/checkbox/src/composables/use-checkbox-status.d.ts +2 -2
  49. package/es/components/checkbox/src/composables/use-checkbox.d.ts +2 -2
  50. package/es/components/col/src/col.vue.d.ts +2 -2
  51. package/es/components/collapse/src/collapse.vue.d.ts +2 -2
  52. package/es/components/color-picker/src/color-picker.d.ts +5 -104
  53. package/es/components/color-picker/src/color-picker.mjs +1 -0
  54. package/es/components/color-picker/src/color-picker.mjs.map +1 -1
  55. package/es/components/color-picker/src/color-picker.vue.d.ts +12 -10
  56. package/es/components/color-picker-panel/src/color-picker-panel.d.ts +4 -10
  57. package/es/components/color-picker-panel/src/color-picker-panel.mjs +9 -5
  58. package/es/components/color-picker-panel/src/color-picker-panel.mjs.map +1 -1
  59. package/es/components/color-picker-panel/src/color-picker-panel.vue.d.ts +5 -2
  60. package/es/components/color-picker-panel/src/color-picker-panel.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  61. package/es/components/color-picker-panel/src/color-picker-panel2.mjs.map +1 -1
  62. package/es/components/config-provider/src/config-provider-props.d.ts +1 -1
  63. package/es/components/config-provider/src/config-provider.d.ts +3 -3
  64. package/es/components/config-provider/src/hooks/use-global-config.d.ts +1 -1
  65. package/es/components/countdown/src/countdown.vue.d.ts +1 -1
  66. package/es/components/date-picker/src/date-picker.d.ts +12 -212
  67. package/es/components/date-picker/src/props.d.ts +4 -104
  68. package/es/components/date-picker-panel/src/composables/use-basic-date-table.d.ts +1 -1
  69. package/es/components/date-picker-panel/src/date-picker-com/basic-month-table.vue.d.ts +2 -2
  70. package/es/components/date-picker-panel/src/date-picker-com/basic-year-table.vue.d.ts +2 -2
  71. package/es/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue.d.ts +5 -5
  72. package/es/components/date-picker-panel/src/date-picker-com/panel-date-range.vue.d.ts +6 -6
  73. package/es/components/date-picker-panel/src/date-picker-com/panel-month-range.vue.d.ts +2 -2
  74. package/es/components/date-picker-panel/src/date-picker-com/panel-year-range.vue.d.ts +2 -2
  75. package/es/components/date-picker-panel/src/date-picker-panel.d.ts +7 -7
  76. package/es/components/date-picker-panel/src/panel-utils.d.ts +36 -36
  77. package/es/components/date-picker-panel/src/props/basic-date-table.mjs.map +1 -1
  78. package/es/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
  79. package/es/components/descriptions/src/description-item.d.ts +2 -2
  80. package/es/components/descriptions/src/description.d.ts +1 -1
  81. package/es/components/descriptions/src/description.vue.d.ts +1 -1
  82. package/es/components/dialog/src/dialog-content.d.ts +10 -6
  83. package/es/components/dialog/src/dialog-content.mjs +32 -5
  84. package/es/components/dialog/src/dialog-content.mjs.map +1 -1
  85. package/es/components/dialog/src/dialog-content.vue.d.ts +5 -1
  86. package/es/components/dialog/src/dialog.d.ts +10 -5
  87. package/es/components/dialog/src/dialog.mjs +11 -14
  88. package/es/components/dialog/src/dialog.mjs.map +1 -1
  89. package/es/components/dialog/src/dialog.vue.d.ts +11 -6
  90. package/es/components/divider/src/divider.vue.d.ts +1 -1
  91. package/es/components/drawer/src/drawer.d.ts +5 -4
  92. package/es/components/drawer/src/drawer.vue.d.ts +12 -7
  93. package/es/components/dropdown/src/dropdown-item-impl.vue.d.ts +2 -2
  94. package/es/components/dropdown/src/dropdown-item.vue.d.ts +5 -5
  95. package/es/components/dropdown/src/dropdown.d.ts +4 -105
  96. package/es/components/dropdown/src/dropdown.vue.d.ts +67 -265
  97. package/es/components/focus-trap/src/focus-trap.vue.d.ts +1 -1
  98. package/es/components/form/src/form-item.d.ts +2 -2
  99. package/es/components/form/src/form-item.vue.d.ts +2 -2
  100. package/es/components/form/src/form.d.ts +2 -2
  101. package/es/components/form/src/hooks/use-form-common-props.d.ts +2 -2
  102. package/es/components/image/src/image.d.ts +1 -1
  103. package/es/components/image/src/image.mjs.map +1 -1
  104. package/es/components/image/src/image.vue.d.ts +4 -4
  105. package/es/components/image-viewer/src/image-viewer.mjs.map +1 -1
  106. package/es/components/image-viewer/src/image-viewer.vue.d.ts +3 -3
  107. package/es/components/input/src/input.d.ts +3 -3
  108. package/es/components/input/src/input.vue.d.ts +16 -16
  109. package/es/components/input-number/src/input-number.d.ts +3 -3
  110. package/es/components/input-number/src/input-number.vue.d.ts +9 -9
  111. package/es/components/input-otp/src/input-otp.vue.d.ts +7 -7
  112. package/es/components/input-tag/src/composables/use-input-tag.d.ts +1 -1
  113. package/es/components/input-tag/src/input-tag.d.ts +2 -2
  114. package/es/components/input-tag/src/input-tag.vue.d.ts +10 -10
  115. package/es/components/link/src/link.d.ts +1 -1
  116. package/es/components/link/src/link.mjs.map +1 -1
  117. package/es/components/mention/src/mention.d.ts +5 -106
  118. package/es/components/mention/src/mention.vue.d.ts +4 -4
  119. package/es/components/mention/src/mention.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  120. package/es/components/mention/src/mention2.mjs.map +1 -1
  121. package/es/components/menu/src/menu.d.ts +11 -23
  122. package/es/components/menu/src/menu.mjs +18 -2
  123. package/es/components/menu/src/menu.mjs.map +1 -1
  124. package/es/components/menu/src/sub-menu.d.ts +10 -22
  125. package/es/components/menu/src/sub-menu.mjs +18 -2
  126. package/es/components/menu/src/sub-menu.mjs.map +1 -1
  127. package/es/components/message/src/message.d.ts +4 -4
  128. package/es/components/message/src/message.mjs +6 -1
  129. package/es/components/message/src/message.mjs.map +1 -1
  130. package/es/components/message/src/message.vue.d.ts +6 -5
  131. package/es/components/message/src/method.mjs.map +1 -1
  132. package/es/components/message-box/src/index.vue.d.ts +66 -74
  133. package/es/components/notification/src/notification.d.ts +4 -3
  134. package/es/components/notification/src/notification.mjs +6 -1
  135. package/es/components/notification/src/notification.mjs.map +1 -1
  136. package/es/components/notification/src/notification.vue.d.ts +6 -5
  137. package/es/components/overlay/index.d.ts +4 -12
  138. package/es/components/overlay/src/overlay.d.ts +5 -18
  139. package/es/components/overlay/src/overlay.mjs +9 -5
  140. package/es/components/overlay/src/overlay.mjs.map +1 -1
  141. package/es/components/pagination/src/components/jumper.d.ts +1 -1
  142. package/es/components/pagination/src/components/jumper.vue.d.ts +2 -2
  143. package/es/components/pagination/src/components/sizes.d.ts +5 -14
  144. package/es/components/pagination/src/components/sizes.mjs +18 -2
  145. package/es/components/pagination/src/components/sizes.mjs.map +1 -1
  146. package/es/components/pagination/src/components/sizes.vue.d.ts +9 -26
  147. package/es/components/pagination/src/pagination.d.ts +15 -28
  148. package/es/components/pagination/src/pagination.mjs +15 -2
  149. package/es/components/pagination/src/pagination.mjs.map +1 -1
  150. package/es/components/popconfirm/src/popconfirm.d.ts +2 -2
  151. package/es/components/popconfirm/src/popconfirm.vue.d.ts +3 -3
  152. package/es/components/popover/src/popover.d.ts +4 -104
  153. package/es/components/popover/src/popover.mjs +1 -0
  154. package/es/components/popover/src/popover.mjs.map +1 -1
  155. package/es/components/popover/src/popover.vue.d.ts +8 -7
  156. package/es/components/popper/src/composables/use-content-dom.d.ts +2 -25
  157. package/es/components/popper/src/composables/use-focus-trap.d.ts +1 -1
  158. package/es/components/popper/src/content.d.ts +12 -22
  159. package/es/components/popper/src/content.mjs +13 -7
  160. package/es/components/popper/src/content.mjs.map +1 -1
  161. package/es/components/popper/src/content.vue.d.ts +11 -9
  162. package/es/components/popper/src/popper.mjs.map +1 -1
  163. package/es/components/progress/src/progress.d.ts +1 -1
  164. package/es/components/progress/src/progress.vue.d.ts +1 -1
  165. package/es/components/radio/src/radio-button.d.ts +1 -1
  166. package/es/components/radio/src/radio-button.vue.d.ts +2 -2
  167. package/es/components/radio/src/radio-group.d.ts +1 -1
  168. package/es/components/radio/src/radio-group.vue.d.ts +7 -7
  169. package/es/components/radio/src/radio.d.ts +2 -2
  170. package/es/components/radio/src/radio.vue.d.ts +5 -5
  171. package/es/components/radio/src/use-radio.d.ts +1 -1
  172. package/es/components/rate/src/rate.d.ts +1 -1
  173. package/es/components/rate/src/rate.vue.d.ts +4 -4
  174. package/es/components/rate/src/rate.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  175. package/es/components/rate/src/rate2.mjs.map +1 -1
  176. package/es/components/result/src/result.d.ts +1 -1
  177. package/es/components/scrollbar/src/scrollbar.d.ts +5 -4
  178. package/es/components/scrollbar/src/scrollbar.mjs +12 -2
  179. package/es/components/scrollbar/src/scrollbar.mjs.map +1 -1
  180. package/es/components/scrollbar/src/scrollbar.vue.d.ts +5 -4
  181. package/es/components/scrollbar/src/thumb.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  182. package/es/components/scrollbar/src/thumb2.mjs.map +1 -1
  183. package/es/components/segmented/index.d.ts +4 -4
  184. package/es/components/segmented/src/segmented.d.ts +1 -1
  185. package/es/components/segmented/src/segmented.vue.d.ts +2 -2
  186. package/es/components/select/src/option.d.ts +1 -1
  187. package/es/components/select/src/option.vue.d.ts +2 -2
  188. package/es/components/select/src/select-dropdown.vue.d.ts +2 -1
  189. package/es/components/select/src/select.d.ts +9 -13
  190. package/es/components/select/src/select.mjs +15 -2
  191. package/es/components/select/src/select.mjs.map +1 -1
  192. package/es/components/select/src/select.vue.d.ts +77 -83
  193. package/es/components/select/src/select.vue_vue_type_script_lang.mjs.map +1 -1
  194. package/es/components/select/src/select2.mjs.map +1 -1
  195. package/es/components/select/src/useSelect.d.ts +7 -7
  196. package/es/components/select/src/useSelect.mjs.map +1 -1
  197. package/es/components/select-v2/src/defaults.d.ts +4 -104
  198. package/es/components/select-v2/src/select.vue.d.ts +54 -252
  199. package/es/components/select-v2/src/useSelect.d.ts +2 -2
  200. package/es/components/skeleton/src/skeleton-item.d.ts +1 -1
  201. package/es/components/skeleton/src/skeleton.vue.d.ts +1 -1
  202. package/es/components/slider/src/button.d.ts +2 -1
  203. package/es/components/slider/src/button.mjs +10 -2
  204. package/es/components/slider/src/button.mjs.map +1 -1
  205. package/es/components/slider/src/button.vue.d.ts +5 -3
  206. package/es/components/slider/src/composables/use-marks.mjs.map +1 -1
  207. package/es/components/slider/src/slider.d.ts +4 -4
  208. package/es/components/slider/src/slider.mjs +6 -1
  209. package/es/components/slider/src/slider.mjs.map +1 -1
  210. package/es/components/slider/src/slider.vue.d.ts +16 -16
  211. package/es/components/space/src/space.d.ts +9 -9
  212. package/es/components/space/src/space.mjs +2 -1
  213. package/es/components/space/src/space.mjs.map +1 -1
  214. package/es/components/space/src/use-space.d.ts +2 -3
  215. package/es/components/splitter/src/split-bar.vue.d.ts +1 -1
  216. package/es/components/splitter/src/splitter.vue.d.ts +2 -2
  217. package/es/components/statistic/src/statistic.vue.d.ts +2 -2
  218. package/es/components/steps/src/item.d.ts +1 -1
  219. package/es/components/steps/src/steps.d.ts +2 -2
  220. package/es/components/steps/src/steps.vue.d.ts +1 -1
  221. package/es/components/switch/src/switch.d.ts +1 -1
  222. package/es/components/switch/src/switch.vue.d.ts +5 -5
  223. package/es/components/table/src/filter-panel.vue.d.ts +63 -60
  224. package/es/components/table/src/table/defaults.d.ts +1 -1
  225. package/es/components/table/src/table/defaults.mjs.map +1 -1
  226. package/es/components/table/src/table/style-helper.d.ts +2 -2
  227. package/es/components/table/src/table-body/events-helper.mjs.map +1 -1
  228. package/es/components/table/src/table-footer/index.d.ts +1 -1
  229. package/es/components/table/src/table-header/index.d.ts +16 -16
  230. package/es/components/table/src/table.vue.d.ts +4 -4
  231. package/es/components/table-v2/src/components/row.d.ts +1 -1
  232. package/es/components/table-v2/src/table-grid.d.ts +2 -2
  233. package/es/components/table-v2/src/table-v2.d.ts +4 -4
  234. package/es/components/tabs/src/tab-nav.d.ts +1 -1
  235. package/es/components/tabs/src/tabs.d.ts +2 -2
  236. package/es/components/tag/src/tag.d.ts +2 -2
  237. package/es/components/tag/src/tag.vue.d.ts +2 -2
  238. package/es/components/text/src/text.d.ts +2 -2
  239. package/es/components/text/src/text.vue.d.ts +1 -1
  240. package/es/components/time-picker/src/common/picker-range-trigger.vue.d.ts +6 -6
  241. package/es/components/time-picker/src/common/picker.vue.d.ts +18 -218
  242. package/es/components/time-picker/src/common/props.d.ts +4 -104
  243. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue.d.ts +1 -1
  244. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts +2 -2
  245. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue.d.ts +2 -2
  246. package/es/components/time-picker/src/time-picker.d.ts +12 -212
  247. package/es/components/time-picker/src/utils.d.ts +1 -1
  248. package/es/components/time-select/src/time-select.d.ts +7 -11
  249. package/es/components/time-select/src/time-select.mjs +15 -2
  250. package/es/components/time-select/src/time-select.mjs.map +1 -1
  251. package/es/components/time-select/src/time-select.vue.d.ts +13 -12
  252. package/es/components/timeline/src/timeline-item.d.ts +2 -2
  253. package/es/components/timeline/src/timeline-item.vue.d.ts +2 -2
  254. package/es/components/tooltip/src/content.d.ts +5 -200
  255. package/es/components/tooltip/src/content.vue.d.ts +6 -4
  256. package/es/components/tooltip/src/tooltip.d.ts +5 -202
  257. package/es/components/tooltip/src/tooltip.vue.d.ts +8 -7
  258. package/es/components/tooltip/src/trigger.d.ts +1 -1
  259. package/es/components/tour/src/content.d.ts +1 -1
  260. package/es/components/tour/src/step.vue.d.ts +1 -1
  261. package/es/components/tour/src/tour.vue.d.ts +6 -6
  262. package/es/components/transfer/src/transfer.vue.d.ts +2 -2
  263. package/es/components/tree/src/tree-node.vue.d.ts +16 -16
  264. package/es/components/tree/src/tree.vue.d.ts +22 -22
  265. package/es/components/tree-select/src/select.mjs +1 -5
  266. package/es/components/tree-select/src/select.mjs.map +1 -1
  267. package/es/components/tree-select/src/tree-select-option.d.ts +2 -2
  268. package/es/components/tree-select/src/tree-select.vue.d.ts +32 -40
  269. package/es/components/tree-v2/src/composables/useTree.d.ts +15 -14
  270. package/es/components/tree-v2/src/tree-node.vue.d.ts +2 -2
  271. package/es/components/tree-v2/src/tree.vue.d.ts +5 -5
  272. package/es/components/upload/src/upload-content.vue.d.ts +2 -2
  273. package/es/components/upload/src/upload.mjs.map +1 -1
  274. package/es/components/upload/src/upload.vue.d.ts +3 -3
  275. package/es/components/virtual-list/src/builders/build-grid.d.ts +9 -8
  276. package/es/components/virtual-list/src/builders/build-list.d.ts +8 -7
  277. package/es/components/virtual-list/src/components/dynamic-size-grid.d.ts +9 -8
  278. package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +8 -7
  279. package/es/components/virtual-list/src/components/fixed-size-grid.d.ts +9 -8
  280. package/es/components/virtual-list/src/components/fixed-size-list.d.ts +8 -7
  281. package/es/components/virtual-list/src/components/scrollbar.d.ts +5 -3
  282. package/es/components/virtual-list/src/props.d.ts +5 -4
  283. package/es/components/virtual-list/src/props.mjs +15 -2
  284. package/es/components/virtual-list/src/props.mjs.map +1 -1
  285. package/es/components/watermark/src/watermark.mjs.map +1 -1
  286. package/es/hooks/use-size/index.d.ts +3 -3
  287. package/es/hooks/use-throttle-render/index.mjs.map +1 -1
  288. package/es/utils/index.d.ts +2 -2
  289. package/es/utils/typescript.d.ts +2 -1
  290. package/es/utils/typescript.mjs.map +1 -1
  291. package/es/utils/vue/size.d.ts +1 -1
  292. package/es/utils/vue/vnode.d.ts +4 -4
  293. package/es/version.d.ts +1 -1
  294. package/es/version.mjs +1 -1
  295. package/es/version.mjs.map +1 -1
  296. package/lib/components/affix/src/affix.vue.d.ts +3 -3
  297. package/lib/components/alert/src/alert.d.ts +1 -1
  298. package/lib/components/alert/src/alert.vue.d.ts +1 -1
  299. package/lib/components/anchor/src/anchor.vue.d.ts +1 -1
  300. package/lib/components/autocomplete/src/autocomplete.d.ts +5 -106
  301. package/lib/components/autocomplete/src/autocomplete.js.map +1 -1
  302. package/lib/components/autocomplete/src/autocomplete.vue.d.ts +5 -5
  303. package/lib/components/autocomplete/src/autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  304. package/lib/components/autocomplete/src/autocomplete2.js.map +1 -1
  305. package/lib/components/avatar/src/avatar-group-props.d.ts +8 -105
  306. package/lib/components/avatar/src/avatar-group-props.js +9 -1
  307. package/lib/components/avatar/src/avatar-group-props.js.map +1 -1
  308. package/lib/components/avatar/src/avatar-group.d.ts +17 -210
  309. package/lib/components/avatar/src/avatar.d.ts +2 -2
  310. package/lib/components/badge/src/badge.d.ts +4 -8
  311. package/lib/components/badge/src/badge.js +9 -1
  312. package/lib/components/badge/src/badge.js.map +1 -1
  313. package/lib/components/badge/src/badge.vue.d.ts +3 -1
  314. package/lib/components/badge/src/badge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  315. package/lib/components/badge/src/badge2.js.map +1 -1
  316. package/lib/components/button/src/button-group.d.ts +2 -2
  317. package/lib/components/button/src/button-group.vue.d.ts +1 -1
  318. package/lib/components/button/src/button.d.ts +2 -2
  319. package/lib/components/button/src/button.vue.d.ts +4 -4
  320. package/lib/components/button/src/use-button.d.ts +2 -2
  321. package/lib/components/calendar/src/calendar.js.map +1 -1
  322. package/lib/components/card/src/card.d.ts +7 -6
  323. package/lib/components/card/src/card.js +27 -3
  324. package/lib/components/card/src/card.js.map +1 -1
  325. package/lib/components/card/src/card.vue.d.ts +4 -0
  326. package/lib/components/card/src/card.vue_vue_type_script_setup_true_lang.js.map +1 -1
  327. package/lib/components/card/src/card2.js.map +1 -1
  328. package/lib/components/carousel/src/carousel-item.vue.d.ts +1 -1
  329. package/lib/components/carousel/src/carousel.vue.d.ts +1 -1
  330. package/lib/components/cascader/src/cascader.d.ts +5 -106
  331. package/lib/components/cascader/src/cascader.js.map +1 -1
  332. package/lib/components/cascader/src/cascader.vue.d.ts +18 -16
  333. package/lib/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  334. package/lib/components/cascader/src/cascader2.js.map +1 -1
  335. package/lib/components/cascader-panel/src/index.vue.d.ts +5 -5
  336. package/lib/components/cascader-panel/src/menu.vue.d.ts +1 -1
  337. package/lib/components/check-tag/src/check-tag.d.ts +1 -1
  338. package/lib/components/checkbox/src/checkbox-button.vue.d.ts +5 -5
  339. package/lib/components/checkbox/src/checkbox-group.d.ts +1 -1
  340. package/lib/components/checkbox/src/checkbox-group.vue.d.ts +5 -5
  341. package/lib/components/checkbox/src/checkbox.d.ts +3 -3
  342. package/lib/components/checkbox/src/checkbox.vue.d.ts +5 -5
  343. package/lib/components/checkbox/src/composables/use-checkbox-status.d.ts +2 -2
  344. package/lib/components/checkbox/src/composables/use-checkbox.d.ts +2 -2
  345. package/lib/components/col/src/col.vue.d.ts +2 -2
  346. package/lib/components/collapse/src/collapse.vue.d.ts +2 -2
  347. package/lib/components/color-picker/src/color-picker.d.ts +5 -104
  348. package/lib/components/color-picker/src/color-picker.js +1 -0
  349. package/lib/components/color-picker/src/color-picker.js.map +1 -1
  350. package/lib/components/color-picker/src/color-picker.vue.d.ts +12 -10
  351. package/lib/components/color-picker-panel/src/color-picker-panel.d.ts +4 -10
  352. package/lib/components/color-picker-panel/src/color-picker-panel.js +9 -5
  353. package/lib/components/color-picker-panel/src/color-picker-panel.js.map +1 -1
  354. package/lib/components/color-picker-panel/src/color-picker-panel.vue.d.ts +5 -2
  355. package/lib/components/color-picker-panel/src/color-picker-panel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  356. package/lib/components/color-picker-panel/src/color-picker-panel2.js.map +1 -1
  357. package/lib/components/config-provider/src/config-provider-props.d.ts +1 -1
  358. package/lib/components/config-provider/src/config-provider.d.ts +3 -3
  359. package/lib/components/config-provider/src/hooks/use-global-config.d.ts +1 -1
  360. package/lib/components/countdown/src/countdown.vue.d.ts +1 -1
  361. package/lib/components/date-picker/src/date-picker.d.ts +12 -212
  362. package/lib/components/date-picker/src/props.d.ts +4 -104
  363. package/lib/components/date-picker-panel/src/composables/use-basic-date-table.d.ts +1 -1
  364. package/lib/components/date-picker-panel/src/date-picker-com/basic-month-table.vue.d.ts +2 -2
  365. package/lib/components/date-picker-panel/src/date-picker-com/basic-year-table.vue.d.ts +2 -2
  366. package/lib/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue.d.ts +5 -5
  367. package/lib/components/date-picker-panel/src/date-picker-com/panel-date-range.vue.d.ts +6 -6
  368. package/lib/components/date-picker-panel/src/date-picker-com/panel-month-range.vue.d.ts +2 -2
  369. package/lib/components/date-picker-panel/src/date-picker-com/panel-year-range.vue.d.ts +2 -2
  370. package/lib/components/date-picker-panel/src/date-picker-panel.d.ts +7 -7
  371. package/lib/components/date-picker-panel/src/panel-utils.d.ts +36 -36
  372. package/lib/components/date-picker-panel/src/props/basic-date-table.js.map +1 -1
  373. package/lib/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
  374. package/lib/components/descriptions/src/description-item.d.ts +2 -2
  375. package/lib/components/descriptions/src/description.d.ts +1 -1
  376. package/lib/components/descriptions/src/description.vue.d.ts +1 -1
  377. package/lib/components/dialog/src/dialog-content.d.ts +10 -6
  378. package/lib/components/dialog/src/dialog-content.js +31 -4
  379. package/lib/components/dialog/src/dialog-content.js.map +1 -1
  380. package/lib/components/dialog/src/dialog-content.vue.d.ts +5 -1
  381. package/lib/components/dialog/src/dialog.d.ts +10 -5
  382. package/lib/components/dialog/src/dialog.js +11 -14
  383. package/lib/components/dialog/src/dialog.js.map +1 -1
  384. package/lib/components/dialog/src/dialog.vue.d.ts +11 -6
  385. package/lib/components/divider/src/divider.vue.d.ts +1 -1
  386. package/lib/components/drawer/src/drawer.d.ts +5 -4
  387. package/lib/components/drawer/src/drawer.vue.d.ts +12 -7
  388. package/lib/components/dropdown/src/dropdown-item-impl.vue.d.ts +2 -2
  389. package/lib/components/dropdown/src/dropdown-item.vue.d.ts +5 -5
  390. package/lib/components/dropdown/src/dropdown.d.ts +4 -105
  391. package/lib/components/dropdown/src/dropdown.vue.d.ts +67 -265
  392. package/lib/components/focus-trap/src/focus-trap.vue.d.ts +1 -1
  393. package/lib/components/form/src/form-item.d.ts +2 -2
  394. package/lib/components/form/src/form-item.vue.d.ts +2 -2
  395. package/lib/components/form/src/form.d.ts +2 -2
  396. package/lib/components/form/src/hooks/use-form-common-props.d.ts +2 -2
  397. package/lib/components/image/src/image.d.ts +1 -1
  398. package/lib/components/image/src/image.js.map +1 -1
  399. package/lib/components/image/src/image.vue.d.ts +4 -4
  400. package/lib/components/image-viewer/src/image-viewer.js.map +1 -1
  401. package/lib/components/image-viewer/src/image-viewer.vue.d.ts +3 -3
  402. package/lib/components/input/src/input.d.ts +3 -3
  403. package/lib/components/input/src/input.vue.d.ts +16 -16
  404. package/lib/components/input-number/src/input-number.d.ts +3 -3
  405. package/lib/components/input-number/src/input-number.vue.d.ts +9 -9
  406. package/lib/components/input-otp/src/input-otp.vue.d.ts +7 -7
  407. package/lib/components/input-tag/src/composables/use-input-tag.d.ts +1 -1
  408. package/lib/components/input-tag/src/input-tag.d.ts +2 -2
  409. package/lib/components/input-tag/src/input-tag.vue.d.ts +10 -10
  410. package/lib/components/link/src/link.d.ts +1 -1
  411. package/lib/components/link/src/link.js.map +1 -1
  412. package/lib/components/mention/src/mention.d.ts +5 -106
  413. package/lib/components/mention/src/mention.vue.d.ts +4 -4
  414. package/lib/components/mention/src/mention.vue_vue_type_script_setup_true_lang.js.map +1 -1
  415. package/lib/components/mention/src/mention2.js.map +1 -1
  416. package/lib/components/menu/src/menu.d.ts +11 -23
  417. package/lib/components/menu/src/menu.js +18 -2
  418. package/lib/components/menu/src/menu.js.map +1 -1
  419. package/lib/components/menu/src/sub-menu.d.ts +10 -22
  420. package/lib/components/menu/src/sub-menu.js +18 -2
  421. package/lib/components/menu/src/sub-menu.js.map +1 -1
  422. package/lib/components/message/src/message.d.ts +4 -4
  423. package/lib/components/message/src/message.js +6 -1
  424. package/lib/components/message/src/message.js.map +1 -1
  425. package/lib/components/message/src/message.vue.d.ts +6 -5
  426. package/lib/components/message/src/method.js.map +1 -1
  427. package/lib/components/message-box/src/index.vue.d.ts +66 -74
  428. package/lib/components/notification/src/notification.d.ts +4 -3
  429. package/lib/components/notification/src/notification.js +6 -1
  430. package/lib/components/notification/src/notification.js.map +1 -1
  431. package/lib/components/notification/src/notification.vue.d.ts +6 -5
  432. package/lib/components/overlay/index.d.ts +4 -12
  433. package/lib/components/overlay/src/overlay.d.ts +5 -18
  434. package/lib/components/overlay/src/overlay.js +9 -5
  435. package/lib/components/overlay/src/overlay.js.map +1 -1
  436. package/lib/components/pagination/src/components/jumper.d.ts +1 -1
  437. package/lib/components/pagination/src/components/jumper.vue.d.ts +2 -2
  438. package/lib/components/pagination/src/components/sizes.d.ts +5 -14
  439. package/lib/components/pagination/src/components/sizes.js +18 -2
  440. package/lib/components/pagination/src/components/sizes.js.map +1 -1
  441. package/lib/components/pagination/src/components/sizes.vue.d.ts +9 -26
  442. package/lib/components/pagination/src/pagination.d.ts +15 -28
  443. package/lib/components/pagination/src/pagination.js +15 -2
  444. package/lib/components/pagination/src/pagination.js.map +1 -1
  445. package/lib/components/popconfirm/src/popconfirm.d.ts +2 -2
  446. package/lib/components/popconfirm/src/popconfirm.vue.d.ts +3 -3
  447. package/lib/components/popover/src/popover.d.ts +4 -104
  448. package/lib/components/popover/src/popover.js +1 -0
  449. package/lib/components/popover/src/popover.js.map +1 -1
  450. package/lib/components/popover/src/popover.vue.d.ts +8 -7
  451. package/lib/components/popper/src/composables/use-content-dom.d.ts +2 -25
  452. package/lib/components/popper/src/composables/use-focus-trap.d.ts +1 -1
  453. package/lib/components/popper/src/content.d.ts +12 -22
  454. package/lib/components/popper/src/content.js +13 -7
  455. package/lib/components/popper/src/content.js.map +1 -1
  456. package/lib/components/popper/src/content.vue.d.ts +11 -9
  457. package/lib/components/popper/src/popper.js.map +1 -1
  458. package/lib/components/progress/src/progress.d.ts +1 -1
  459. package/lib/components/progress/src/progress.vue.d.ts +1 -1
  460. package/lib/components/radio/src/radio-button.d.ts +1 -1
  461. package/lib/components/radio/src/radio-button.vue.d.ts +2 -2
  462. package/lib/components/radio/src/radio-group.d.ts +1 -1
  463. package/lib/components/radio/src/radio-group.vue.d.ts +7 -7
  464. package/lib/components/radio/src/radio.d.ts +2 -2
  465. package/lib/components/radio/src/radio.vue.d.ts +5 -5
  466. package/lib/components/radio/src/use-radio.d.ts +1 -1
  467. package/lib/components/rate/src/rate.d.ts +1 -1
  468. package/lib/components/rate/src/rate.vue.d.ts +4 -4
  469. package/lib/components/rate/src/rate.vue_vue_type_script_setup_true_lang.js.map +1 -1
  470. package/lib/components/rate/src/rate2.js.map +1 -1
  471. package/lib/components/result/src/result.d.ts +1 -1
  472. package/lib/components/scrollbar/src/scrollbar.d.ts +5 -4
  473. package/lib/components/scrollbar/src/scrollbar.js +12 -2
  474. package/lib/components/scrollbar/src/scrollbar.js.map +1 -1
  475. package/lib/components/scrollbar/src/scrollbar.vue.d.ts +5 -4
  476. package/lib/components/scrollbar/src/thumb.vue_vue_type_script_setup_true_lang.js.map +1 -1
  477. package/lib/components/scrollbar/src/thumb2.js.map +1 -1
  478. package/lib/components/segmented/index.d.ts +4 -4
  479. package/lib/components/segmented/src/segmented.d.ts +1 -1
  480. package/lib/components/segmented/src/segmented.vue.d.ts +2 -2
  481. package/lib/components/select/src/option.d.ts +1 -1
  482. package/lib/components/select/src/option.vue.d.ts +2 -2
  483. package/lib/components/select/src/select-dropdown.vue.d.ts +2 -1
  484. package/lib/components/select/src/select.d.ts +9 -13
  485. package/lib/components/select/src/select.js +15 -2
  486. package/lib/components/select/src/select.js.map +1 -1
  487. package/lib/components/select/src/select.vue.d.ts +77 -83
  488. package/lib/components/select/src/select.vue_vue_type_script_lang.js.map +1 -1
  489. package/lib/components/select/src/select2.js.map +1 -1
  490. package/lib/components/select/src/useSelect.d.ts +7 -7
  491. package/lib/components/select/src/useSelect.js.map +1 -1
  492. package/lib/components/select-v2/src/defaults.d.ts +4 -104
  493. package/lib/components/select-v2/src/select.vue.d.ts +54 -252
  494. package/lib/components/select-v2/src/useSelect.d.ts +2 -2
  495. package/lib/components/skeleton/src/skeleton-item.d.ts +1 -1
  496. package/lib/components/skeleton/src/skeleton.vue.d.ts +1 -1
  497. package/lib/components/slider/src/button.d.ts +2 -1
  498. package/lib/components/slider/src/button.js +9 -1
  499. package/lib/components/slider/src/button.js.map +1 -1
  500. package/lib/components/slider/src/button.vue.d.ts +5 -3
  501. package/lib/components/slider/src/composables/use-marks.js.map +1 -1
  502. package/lib/components/slider/src/slider.d.ts +4 -4
  503. package/lib/components/slider/src/slider.js +6 -1
  504. package/lib/components/slider/src/slider.js.map +1 -1
  505. package/lib/components/slider/src/slider.vue.d.ts +16 -16
  506. package/lib/components/space/src/space.d.ts +9 -9
  507. package/lib/components/space/src/space.js +2 -1
  508. package/lib/components/space/src/space.js.map +1 -1
  509. package/lib/components/space/src/use-space.d.ts +2 -3
  510. package/lib/components/splitter/src/split-bar.vue.d.ts +1 -1
  511. package/lib/components/splitter/src/splitter.vue.d.ts +2 -2
  512. package/lib/components/statistic/src/statistic.vue.d.ts +2 -2
  513. package/lib/components/steps/src/item.d.ts +1 -1
  514. package/lib/components/steps/src/steps.d.ts +2 -2
  515. package/lib/components/steps/src/steps.vue.d.ts +1 -1
  516. package/lib/components/switch/src/switch.d.ts +1 -1
  517. package/lib/components/switch/src/switch.vue.d.ts +5 -5
  518. package/lib/components/table/src/filter-panel.vue.d.ts +63 -60
  519. package/lib/components/table/src/table/defaults.d.ts +1 -1
  520. package/lib/components/table/src/table/defaults.js.map +1 -1
  521. package/lib/components/table/src/table/style-helper.d.ts +2 -2
  522. package/lib/components/table/src/table-body/events-helper.js.map +1 -1
  523. package/lib/components/table/src/table-footer/index.d.ts +1 -1
  524. package/lib/components/table/src/table-header/index.d.ts +16 -16
  525. package/lib/components/table/src/table.vue.d.ts +4 -4
  526. package/lib/components/table-v2/src/components/row.d.ts +1 -1
  527. package/lib/components/table-v2/src/table-grid.d.ts +2 -2
  528. package/lib/components/table-v2/src/table-v2.d.ts +4 -4
  529. package/lib/components/tabs/src/tab-nav.d.ts +1 -1
  530. package/lib/components/tabs/src/tabs.d.ts +2 -2
  531. package/lib/components/tag/src/tag.d.ts +2 -2
  532. package/lib/components/tag/src/tag.vue.d.ts +2 -2
  533. package/lib/components/text/src/text.d.ts +2 -2
  534. package/lib/components/text/src/text.vue.d.ts +1 -1
  535. package/lib/components/time-picker/src/common/picker-range-trigger.vue.d.ts +6 -6
  536. package/lib/components/time-picker/src/common/picker.vue.d.ts +18 -218
  537. package/lib/components/time-picker/src/common/props.d.ts +4 -104
  538. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue.d.ts +1 -1
  539. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts +2 -2
  540. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue.d.ts +2 -2
  541. package/lib/components/time-picker/src/time-picker.d.ts +12 -212
  542. package/lib/components/time-picker/src/utils.d.ts +1 -1
  543. package/lib/components/time-select/src/time-select.d.ts +7 -11
  544. package/lib/components/time-select/src/time-select.js +15 -2
  545. package/lib/components/time-select/src/time-select.js.map +1 -1
  546. package/lib/components/time-select/src/time-select.vue.d.ts +13 -12
  547. package/lib/components/timeline/src/timeline-item.d.ts +2 -2
  548. package/lib/components/timeline/src/timeline-item.vue.d.ts +2 -2
  549. package/lib/components/tooltip/src/content.d.ts +5 -200
  550. package/lib/components/tooltip/src/content.vue.d.ts +6 -4
  551. package/lib/components/tooltip/src/tooltip.d.ts +5 -202
  552. package/lib/components/tooltip/src/tooltip.vue.d.ts +8 -7
  553. package/lib/components/tooltip/src/trigger.d.ts +1 -1
  554. package/lib/components/tour/src/content.d.ts +1 -1
  555. package/lib/components/tour/src/step.vue.d.ts +1 -1
  556. package/lib/components/tour/src/tour.vue.d.ts +6 -6
  557. package/lib/components/transfer/src/transfer.vue.d.ts +2 -2
  558. package/lib/components/tree/src/tree-node.vue.d.ts +16 -16
  559. package/lib/components/tree/src/tree.vue.d.ts +22 -22
  560. package/lib/components/tree-select/src/select.js +1 -5
  561. package/lib/components/tree-select/src/select.js.map +1 -1
  562. package/lib/components/tree-select/src/tree-select-option.d.ts +2 -2
  563. package/lib/components/tree-select/src/tree-select.vue.d.ts +32 -40
  564. package/lib/components/tree-v2/src/composables/useTree.d.ts +15 -14
  565. package/lib/components/tree-v2/src/tree-node.vue.d.ts +2 -2
  566. package/lib/components/tree-v2/src/tree.vue.d.ts +5 -5
  567. package/lib/components/upload/src/upload-content.vue.d.ts +2 -2
  568. package/lib/components/upload/src/upload.js.map +1 -1
  569. package/lib/components/upload/src/upload.vue.d.ts +3 -3
  570. package/lib/components/virtual-list/src/builders/build-grid.d.ts +9 -8
  571. package/lib/components/virtual-list/src/builders/build-list.d.ts +8 -7
  572. package/lib/components/virtual-list/src/components/dynamic-size-grid.d.ts +9 -8
  573. package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +8 -7
  574. package/lib/components/virtual-list/src/components/fixed-size-grid.d.ts +9 -8
  575. package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +8 -7
  576. package/lib/components/virtual-list/src/components/scrollbar.d.ts +5 -3
  577. package/lib/components/virtual-list/src/props.d.ts +5 -4
  578. package/lib/components/virtual-list/src/props.js +15 -2
  579. package/lib/components/virtual-list/src/props.js.map +1 -1
  580. package/lib/components/watermark/src/watermark.js.map +1 -1
  581. package/lib/hooks/use-size/index.d.ts +3 -3
  582. package/lib/hooks/use-throttle-render/index.js.map +1 -1
  583. package/lib/utils/index.d.ts +2 -2
  584. package/lib/utils/typescript.d.ts +2 -1
  585. package/lib/utils/typescript.js.map +1 -1
  586. package/lib/utils/vue/size.d.ts +1 -1
  587. package/lib/utils/vue/vnode.d.ts +4 -4
  588. package/lib/version.d.ts +1 -1
  589. package/lib/version.js +1 -1
  590. package/lib/version.js.map +1 -1
  591. package/package.json +2 -2
  592. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"select.vue_vue_type_script_lang.js","names":[],"sources":["../../../../../../packages/components/select/src/select.vue"],"sourcesContent":["<template>\n <div\n ref=\"selectRef\"\n v-click-outside:[popperRef]=\"handleClickOutside\"\n :class=\"[nsSelect.b(), nsSelect.m(selectSize)]\"\n @[mouseEnterEventName]=\"states.inputHovering = true\"\n @mouseleave=\"states.inputHovering = false\"\n >\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"dropdownMenuVisible\"\n :placement=\"placement\"\n :teleported=\"teleported\"\n :popper-class=\"[nsSelect.e('popper'), popperClass]\"\n :popper-style=\"popperStyle\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"fallbackPlacements\"\n :effect=\"effect\"\n pure\n trigger=\"click\"\n :transition=\"`${nsSelect.namespace.value}-zoom-in-top`\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n :persistent=\"persistent\"\n :append-to=\"appendTo\"\n :show-arrow=\"showArrow\"\n :offset=\"offset\"\n @before-show=\"handleMenuEnter\"\n @hide=\"states.isBeforeHide = false\"\n >\n <template #default>\n <div\n ref=\"wrapperRef\"\n :class=\"[\n nsSelect.e('wrapper'),\n nsSelect.is('focused', isFocused),\n nsSelect.is('hovering', states.inputHovering),\n nsSelect.is('filterable', filterable),\n nsSelect.is('disabled', selectDisabled),\n ]\"\n @click.prevent=\"toggleMenu\"\n >\n <div\n v-if=\"$slots.prefix\"\n ref=\"prefixRef\"\n :class=\"nsSelect.e('prefix')\"\n >\n <slot name=\"prefix\" />\n </div>\n <div\n ref=\"selectionRef\"\n :class=\"[\n nsSelect.e('selection'),\n nsSelect.is(\n 'near',\n multiple && !$slots.prefix && !!states.selected.length\n ),\n ]\"\n >\n <slot\n v-if=\"multiple\"\n name=\"tag\"\n :data=\"states.selected\"\n :delete-tag=\"deleteTag\"\n :select-disabled=\"selectDisabled\"\n >\n <div\n v-for=\"item in showTagList\"\n :key=\"getValueKey(item)\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n :closable=\"!selectDisabled && !item.isDisabled\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n :style=\"tagStyle\"\n @close=\"deleteTag($event, item)\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n <slot\n name=\"label\"\n :index=\"item.index\"\n :label=\"item.currentLabel\"\n :value=\"item.value\"\n >\n {{ item.currentLabel }}\n </slot>\n </span>\n </el-tag>\n </div>\n\n <el-tooltip\n v-if=\"collapseTags && states.selected.length > maxCollapseTags\"\n ref=\"tagTooltipRef\"\n :disabled=\"dropdownMenuVisible || !collapseTagsTooltip\"\n :fallback-placements=\"\n tagTooltip?.fallbackPlacements ?? [\n 'bottom',\n 'top',\n 'right',\n 'left',\n ]\n \"\n :effect=\"tagTooltip?.effect ?? effect\"\n :placement=\"tagTooltip?.placement ?? 'bottom'\"\n :popper-class=\"tagTooltip?.popperClass ?? popperClass\"\n :popper-style=\"tagTooltip?.popperStyle ?? popperStyle\"\n :teleported=\"tagTooltip?.teleported ?? teleported\"\n :append-to=\"tagTooltip?.appendTo ?? appendTo\"\n :popper-options=\"tagTooltip?.popperOptions ?? popperOptions\"\n :transition=\"tagTooltip?.transition\"\n :show-after=\"tagTooltip?.showAfter\"\n :hide-after=\"tagTooltip?.hideAfter\"\n :auto-close=\"tagTooltip?.autoClose\"\n :offset=\"tagTooltip?.offset\"\n >\n <template #default>\n <div\n ref=\"collapseItemRef\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n :closable=\"false\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n :style=\"collapseTagStyle\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n + {{ states.selected.length - maxCollapseTags }}\n </span>\n </el-tag>\n </div>\n </template>\n <template #content>\n <div ref=\"tagMenuRef\" :class=\"nsSelect.e('selection')\">\n <div\n v-for=\"item in collapseTagList\"\n :key=\"getValueKey(item)\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n class=\"in-tooltip\"\n :closable=\"!selectDisabled && !item.isDisabled\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n @close=\"deleteTag($event, item)\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n <slot\n name=\"label\"\n :index=\"item.index\"\n :label=\"item.currentLabel\"\n :value=\"item.value\"\n >\n {{ item.currentLabel }}\n </slot>\n </span>\n </el-tag>\n </div>\n </div>\n </template>\n </el-tooltip>\n </slot>\n <div\n :class=\"[\n nsSelect.e('selected-item'),\n nsSelect.e('input-wrapper'),\n nsSelect.is(\n 'hidden',\n !filterable ||\n selectDisabled ||\n (multiple && !states.inputValue && !isFocused)\n ),\n ]\"\n >\n <input\n :id=\"inputId\"\n ref=\"inputRef\"\n :value=\"states.inputValue\"\n type=\"text\"\n :name=\"name\"\n :class=\"[nsSelect.e('input'), nsSelect.is(selectSize)]\"\n :disabled=\"selectDisabled\"\n :autocomplete=\"autocomplete\"\n :style=\"inputStyle\"\n :tabindex=\"tabindex\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n :aria-activedescendant=\"hoverOption?.id || ''\"\n :aria-controls=\"contentId\"\n :aria-expanded=\"dropdownMenuVisible\"\n :aria-label=\"ariaLabel\"\n aria-autocomplete=\"none\"\n aria-haspopup=\"listbox\"\n @keydown=\"handleKeydown\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"onInput\"\n @change.stop\n @click.stop=\"toggleMenu\"\n />\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n :class=\"nsSelect.e('input-calculator')\"\n v-text=\"states.inputValue\"\n />\n </div>\n <div\n v-if=\"shouldShowPlaceholder\"\n :class=\"[\n nsSelect.e('selected-item'),\n nsSelect.e('placeholder'),\n nsSelect.is(\n 'transparent',\n !hasModelValue || (expanded && !states.inputValue)\n ),\n ]\"\n >\n <slot\n v-if=\"hasModelValue\"\n name=\"label\"\n :index=\"getOption(modelValue!).index\"\n :label=\"currentPlaceholder\"\n :value=\"modelValue\"\n >\n <span>{{ currentPlaceholder }}</span>\n </slot>\n <span v-else>{{ currentPlaceholder }}</span>\n </div>\n </div>\n <div ref=\"suffixRef\" :class=\"nsSelect.e('suffix')\">\n <el-icon\n v-if=\"iconComponent && !showClearBtn\"\n :class=\"[nsSelect.e('caret'), nsSelect.e('icon'), iconReverse]\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <el-icon\n v-if=\"showClearBtn && clearIcon\"\n :class=\"[\n nsSelect.e('caret'),\n nsSelect.e('icon'),\n nsSelect.e('clear'),\n ]\"\n @click=\"handleClearClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </div>\n </div>\n </template>\n <template #content>\n <el-select-menu ref=\"menuRef\">\n <div\n v-if=\"$slots.header\"\n :class=\"nsSelect.be('dropdown', 'header')\"\n @click.stop\n >\n <slot name=\"header\" />\n </div>\n <el-scrollbar\n v-show=\"states.options.size > 0 && !loading\"\n :id=\"contentId\"\n ref=\"scrollbarRef\"\n tag=\"ul\"\n :wrap-class=\"nsSelect.be('dropdown', 'wrap')\"\n :view-class=\"nsSelect.be('dropdown', 'list')\"\n :class=\"[nsSelect.is('empty', filteredOptionsCount === 0)]\"\n role=\"listbox\"\n :aria-label=\"ariaLabel\"\n aria-orientation=\"vertical\"\n @scroll=\"popupScroll\"\n @end-reached=\"endReached\"\n >\n <el-option\n v-if=\"showNewOption\"\n :value=\"states.inputValue\"\n :created=\"true\"\n />\n <el-options>\n <slot>\n <template v-for=\"(option, index) in options\" :key=\"index\">\n <el-option-group\n v-if=\"getOptions(option)?.length\"\n :label=\"getLabel(option)\"\n :disabled=\"getDisabled(option)\"\n >\n <el-option\n v-for=\"item in getOptions(option)\"\n :key=\"getValue(item)\"\n v-bind=\"getOptionProps(item)\"\n />\n </el-option-group>\n <el-option v-else v-bind=\"getOptionProps(option)\" />\n </template>\n </slot>\n </el-options>\n </el-scrollbar>\n <div\n v-if=\"$slots.loading && loading\"\n :class=\"nsSelect.be('dropdown', 'loading')\"\n >\n <slot name=\"loading\" />\n </div>\n <div\n v-else-if=\"loading || filteredOptionsCount === 0\"\n :class=\"nsSelect.be('dropdown', 'empty')\"\n >\n <slot name=\"empty\">\n <span>{{ emptyText }}</span>\n </slot>\n </div>\n <div\n v-if=\"$slots.footer\"\n :class=\"nsSelect.be('dropdown', 'footer')\"\n @click.stop\n >\n <slot name=\"footer\" />\n </div>\n </el-select-menu>\n </template>\n </el-tooltip>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n onBeforeUnmount,\n provide,\n reactive,\n toRefs,\n watch,\n} from 'vue'\nimport { ClickOutside } from '@element-plus/directives'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElTag from '@element-plus/components/tag'\nimport ElIcon from '@element-plus/components/icon'\nimport { flattedChildren, isArray, isObject } from '@element-plus/utils'\nimport { useCalcInputWidth } from '@element-plus/hooks'\nimport { useProps } from '@element-plus/components/select-v2/src/useProps'\nimport ElOption from './option.vue'\nimport ElSelectMenu from './select-dropdown.vue'\nimport { useSelect } from './useSelect'\nimport { selectKey } from './token'\nimport ElOptions from './options'\nimport { selectEmits, selectProps } from './select'\nimport ElOptionGroup from './option-group.vue'\n\nimport type { AppConfig, AppContext, VNode } from 'vue'\nimport type { SelectContext } from './type'\n\nconst COMPONENT_NAME = 'ElSelect'\n\ntype WarnHandler = AppConfig['warnHandler']\n\ninterface WarnHandlerRecord {\n originalWarnHandler: WarnHandler\n handler: WarnHandler\n count: number\n}\n\nconst warnHandlerMap = new WeakMap<AppContext, WarnHandlerRecord>()\n\nconst createSelectWarnHandler = (appContext: AppContext): WarnHandler => {\n return (...args) => {\n // Overrides warnings about slots not being executable outside of a render function.\n // We call slot below just to simulate data when persist is false, this warning message should be ignored\n const message = args[0]\n if (\n !message ||\n (message.includes(\n 'Slot \"default\" invoked outside of the render function'\n ) &&\n args[2]?.includes('ElTreeSelect'))\n )\n return\n const original = warnHandlerMap.get(appContext)?.originalWarnHandler\n if (original) {\n original(...args)\n return\n }\n // eslint-disable-next-line no-console\n console.warn(...args)\n }\n}\n\nconst getWarnHandlerRecord = (appContext: AppContext): WarnHandlerRecord => {\n let record = warnHandlerMap.get(appContext)\n if (!record) {\n record = {\n originalWarnHandler: appContext.config.warnHandler,\n handler: createSelectWarnHandler(appContext),\n count: 0,\n }\n warnHandlerMap.set(appContext, record)\n }\n return record\n}\nexport default defineComponent({\n name: COMPONENT_NAME,\n componentName: COMPONENT_NAME,\n components: {\n ElSelectMenu,\n ElOption,\n ElOptions,\n ElOptionGroup,\n ElTag,\n ElScrollbar,\n ElTooltip,\n ElIcon,\n },\n directives: { ClickOutside },\n props: selectProps,\n emits: selectEmits,\n\n setup(props, { emit, slots }) {\n const instance = getCurrentInstance()!\n const warnRecord = getWarnHandlerRecord(instance.appContext)\n warnRecord.count += 1\n instance.appContext.config.warnHandler = warnRecord.handler\n const modelValue = computed(() => {\n const { modelValue: rawModelValue, multiple } = props\n const fallback = multiple ? [] : undefined\n // When it is array, we check if this is multi-select.\n // Based on the result we get\n if (isArray(rawModelValue)) {\n return multiple ? rawModelValue : fallback\n }\n\n return multiple ? fallback : rawModelValue\n })\n\n const _props = reactive({\n ...toRefs(props),\n modelValue,\n })\n\n const API = useSelect(_props, emit)\n const { calculatorRef, inputStyle } = useCalcInputWidth()\n const { getLabel, getValue, getOptions, getDisabled } = useProps(props)\n\n const getOptionProps = (option: Record<string, any>) => ({\n label: getLabel(option),\n value: getValue(option),\n disabled: getDisabled(option),\n })\n\n const flatTreeSelectData = (data: any[]) => {\n return data.reduce((acc, item) => {\n acc.push(item)\n if (item.children && item.children.length > 0) {\n acc.push(...flatTreeSelectData(item.children))\n }\n return acc\n }, [])\n }\n\n const manuallyRenderSlots = (vnodes: VNode[] | undefined) => {\n // After option rendering is completed, the useSelect internal state can collect the value of each option.\n // If the persistent value is false, option will not be rendered by default, so in this case,\n // manually render and load option data here.\n const children = flattedChildren(vnodes || []) as VNode[]\n children.forEach((item) => {\n if (\n isObject(item) &&\n // @ts-expect-error\n (item.type.name === 'ElOption' || item.type.name === 'ElTree')\n ) {\n // @ts-expect-error\n const _name = item.type.name\n if (_name === 'ElTree') {\n // tree-select component is a special case.\n // So we need to handle it separately.\n const treeData = item.props?.data || []\n const flatData = flatTreeSelectData(treeData)\n flatData.forEach((treeItem: any) => {\n treeItem.currentLabel =\n treeItem.label ??\n (isObject(treeItem.value) ? '' : treeItem.value)\n API.onOptionCreate(treeItem)\n })\n } else if (_name === 'ElOption') {\n const obj = { ...item.props } as any\n obj.currentLabel =\n obj.label ?? (isObject(obj.value) ? '' : obj.value)\n API.onOptionCreate(obj)\n }\n }\n })\n }\n watch(\n () => [\n props.persistent || API.expanded.value || !slots.default\n ? undefined\n : slots.default?.(),\n modelValue.value,\n ],\n () => {\n // When persistent is false and the dropdown is closed, the menu is unmounted.\n // We should always re-hydrate option data from slots so labels stay in sync\n // with dynamic option list updates. Skip only when persistent is true or\n // when the dropdown is currently expanded (mounted options will manage themselves).\n if (props.persistent || API.expanded.value) {\n // If persistent is true, we don't need to manually render slots.\n return\n }\n // When using :options prop (no slot content), el-option components register\n // and unregister themselves via onOptionCreate/onOptionDestroy lifecycle hooks.\n // Calling options.clear() here would prematurely wipe options that are still\n // mounted, causing a \"No Data\" flash during rapid open/close toggling.\n if (!slots.default) {\n return\n }\n // Reset current options snapshot before re-collecting from slots.\n API.states.options.clear()\n manuallyRenderSlots(slots.default?.())\n },\n {\n immediate: true,\n }\n )\n\n provide(\n selectKey,\n reactive({\n props: _props,\n states: API.states,\n selectRef: API.selectRef,\n optionsArray: API.optionsArray,\n setSelected: API.setSelected,\n handleOptionSelect: API.handleOptionSelect,\n onOptionCreate: API.onOptionCreate,\n onOptionDestroy: API.onOptionDestroy,\n }) satisfies SelectContext\n )\n\n const selectedLabel = computed(() => {\n if (!props.multiple) {\n return API.states.selectedLabel\n }\n return API.states.selected.map((i) => i.currentLabel as string)\n })\n\n onBeforeUnmount(() => {\n // https://github.com/element-plus/element-plus/issues/21279\n const record = warnHandlerMap.get(instance.appContext)\n if (!record) return\n record.count -= 1\n if (record.count <= 0) {\n instance.appContext.config.warnHandler = record.originalWarnHandler\n warnHandlerMap.delete(instance.appContext)\n }\n })\n\n return {\n ...API,\n modelValue,\n selectedLabel,\n calculatorRef,\n inputStyle,\n getLabel,\n getValue,\n getOptions,\n getDisabled,\n getOptionProps,\n }\n },\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"select.vue_vue_type_script_lang.js","names":[],"sources":["../../../../../../packages/components/select/src/select.vue"],"sourcesContent":["<template>\n <div\n ref=\"selectRef\"\n v-click-outside:[popperRef]=\"handleClickOutside\"\n :class=\"[nsSelect.b(), nsSelect.m(selectSize)]\"\n @[mouseEnterEventName]=\"states.inputHovering = true\"\n @mouseleave=\"states.inputHovering = false\"\n >\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"dropdownMenuVisible\"\n :placement=\"placement\"\n :teleported=\"teleported\"\n :popper-class=\"[nsSelect.e('popper'), popperClass]\"\n :popper-style=\"popperStyle\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"fallbackPlacements\"\n :effect=\"effect\"\n pure\n trigger=\"click\"\n :transition=\"`${nsSelect.namespace.value}-zoom-in-top`\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n :persistent=\"persistent\"\n :append-to=\"appendTo\"\n :show-arrow=\"showArrow\"\n :offset=\"offset\"\n @before-show=\"handleMenuEnter\"\n @hide=\"states.isBeforeHide = false\"\n >\n <template #default>\n <div\n ref=\"wrapperRef\"\n :class=\"[\n nsSelect.e('wrapper'),\n nsSelect.is('focused', isFocused),\n nsSelect.is('hovering', states.inputHovering),\n nsSelect.is('filterable', filterable),\n nsSelect.is('disabled', selectDisabled),\n ]\"\n @click.prevent=\"toggleMenu\"\n >\n <div\n v-if=\"$slots.prefix\"\n ref=\"prefixRef\"\n :class=\"nsSelect.e('prefix')\"\n >\n <slot name=\"prefix\" />\n </div>\n <div\n ref=\"selectionRef\"\n :class=\"[\n nsSelect.e('selection'),\n nsSelect.is(\n 'near',\n multiple && !$slots.prefix && !!states.selected.length\n ),\n ]\"\n >\n <slot\n v-if=\"multiple\"\n name=\"tag\"\n :data=\"states.selected\"\n :delete-tag=\"deleteTag\"\n :select-disabled=\"selectDisabled\"\n >\n <div\n v-for=\"item in showTagList\"\n :key=\"getValueKey(item)\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n :closable=\"!selectDisabled && !item.isDisabled\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n :style=\"tagStyle\"\n @close=\"deleteTag($event, item)\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n <slot\n name=\"label\"\n :index=\"item.index\"\n :label=\"item.currentLabel\"\n :value=\"item.value\"\n >\n {{ item.currentLabel }}\n </slot>\n </span>\n </el-tag>\n </div>\n\n <el-tooltip\n v-if=\"collapseTags && states.selected.length > maxCollapseTags\"\n ref=\"tagTooltipRef\"\n :disabled=\"dropdownMenuVisible || !collapseTagsTooltip\"\n :fallback-placements=\"\n tagTooltip?.fallbackPlacements ?? [\n 'bottom',\n 'top',\n 'right',\n 'left',\n ]\n \"\n :effect=\"tagTooltip?.effect ?? effect\"\n :placement=\"tagTooltip?.placement ?? 'bottom'\"\n :popper-class=\"tagTooltip?.popperClass ?? popperClass\"\n :popper-style=\"tagTooltip?.popperStyle ?? popperStyle\"\n :teleported=\"tagTooltip?.teleported ?? teleported\"\n :append-to=\"tagTooltip?.appendTo ?? appendTo\"\n :popper-options=\"tagTooltip?.popperOptions ?? popperOptions\"\n :transition=\"tagTooltip?.transition\"\n :show-after=\"tagTooltip?.showAfter\"\n :hide-after=\"tagTooltip?.hideAfter\"\n :auto-close=\"tagTooltip?.autoClose\"\n :offset=\"tagTooltip?.offset\"\n >\n <template #default>\n <div\n ref=\"collapseItemRef\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n :closable=\"false\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n :style=\"collapseTagStyle\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n + {{ states.selected.length - maxCollapseTags }}\n </span>\n </el-tag>\n </div>\n </template>\n <template #content>\n <div ref=\"tagMenuRef\" :class=\"nsSelect.e('selection')\">\n <div\n v-for=\"item in collapseTagList\"\n :key=\"getValueKey(item)\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n class=\"in-tooltip\"\n :closable=\"!selectDisabled && !item.isDisabled\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n @close=\"deleteTag($event, item)\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n <slot\n name=\"label\"\n :index=\"item.index\"\n :label=\"item.currentLabel\"\n :value=\"item.value\"\n >\n {{ item.currentLabel }}\n </slot>\n </span>\n </el-tag>\n </div>\n </div>\n </template>\n </el-tooltip>\n </slot>\n <div\n :class=\"[\n nsSelect.e('selected-item'),\n nsSelect.e('input-wrapper'),\n nsSelect.is(\n 'hidden',\n !filterable ||\n selectDisabled ||\n (multiple && !states.inputValue && !isFocused)\n ),\n ]\"\n >\n <input\n :id=\"inputId\"\n ref=\"inputRef\"\n :value=\"states.inputValue\"\n type=\"text\"\n :name=\"name\"\n :class=\"[nsSelect.e('input'), nsSelect.is(selectSize)]\"\n :disabled=\"selectDisabled\"\n :autocomplete=\"autocomplete\"\n :style=\"inputStyle\"\n :tabindex=\"tabindex\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n :aria-activedescendant=\"hoverOption?.id || ''\"\n :aria-controls=\"contentId\"\n :aria-expanded=\"dropdownMenuVisible\"\n :aria-label=\"ariaLabel\"\n aria-autocomplete=\"none\"\n aria-haspopup=\"listbox\"\n @keydown=\"handleKeydown\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"onInput\"\n @change.stop\n @click.stop=\"toggleMenu\"\n />\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n :class=\"nsSelect.e('input-calculator')\"\n v-text=\"states.inputValue\"\n />\n </div>\n <div\n v-if=\"shouldShowPlaceholder\"\n :class=\"[\n nsSelect.e('selected-item'),\n nsSelect.e('placeholder'),\n nsSelect.is(\n 'transparent',\n !hasModelValue || (expanded && !states.inputValue)\n ),\n ]\"\n >\n <slot\n v-if=\"hasModelValue\"\n name=\"label\"\n :index=\"getOption(modelValue!).index\"\n :label=\"currentPlaceholder\"\n :value=\"modelValue\"\n >\n <span>{{ currentPlaceholder }}</span>\n </slot>\n <span v-else>{{ currentPlaceholder }}</span>\n </div>\n </div>\n <div ref=\"suffixRef\" :class=\"nsSelect.e('suffix')\">\n <el-icon\n v-if=\"iconComponent && !showClearBtn\"\n :class=\"[nsSelect.e('caret'), nsSelect.e('icon'), iconReverse]\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <el-icon\n v-if=\"showClearBtn && clearIcon\"\n :class=\"[\n nsSelect.e('caret'),\n nsSelect.e('icon'),\n nsSelect.e('clear'),\n ]\"\n @click=\"handleClearClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </div>\n </div>\n </template>\n <template #content>\n <el-select-menu ref=\"menuRef\">\n <div\n v-if=\"$slots.header\"\n :class=\"nsSelect.be('dropdown', 'header')\"\n @click.stop\n >\n <slot name=\"header\" />\n </div>\n <el-scrollbar\n v-show=\"states.options.size > 0 && !loading\"\n :id=\"contentId\"\n ref=\"scrollbarRef\"\n tag=\"ul\"\n :wrap-class=\"nsSelect.be('dropdown', 'wrap')\"\n :view-class=\"nsSelect.be('dropdown', 'list')\"\n :class=\"[nsSelect.is('empty', filteredOptionsCount === 0)]\"\n role=\"listbox\"\n :aria-label=\"ariaLabel\"\n aria-orientation=\"vertical\"\n @scroll=\"popupScroll\"\n @end-reached=\"endReached\"\n >\n <el-option\n v-if=\"showNewOption\"\n :value=\"states.inputValue\"\n :created=\"true\"\n />\n <el-options>\n <slot>\n <template v-for=\"(option, index) in options\" :key=\"index\">\n <el-option-group\n v-if=\"getOptions(option)?.length\"\n :label=\"getLabel(option)\"\n :disabled=\"getDisabled(option)\"\n >\n <el-option\n v-for=\"item in getOptions(option)\"\n :key=\"getValue(item)\"\n v-bind=\"getOptionProps(item)\"\n />\n </el-option-group>\n <el-option v-else v-bind=\"getOptionProps(option)\" />\n </template>\n </slot>\n </el-options>\n </el-scrollbar>\n <div\n v-if=\"$slots.loading && loading\"\n :class=\"nsSelect.be('dropdown', 'loading')\"\n >\n <slot name=\"loading\" />\n </div>\n <div\n v-else-if=\"loading || filteredOptionsCount === 0\"\n :class=\"nsSelect.be('dropdown', 'empty')\"\n >\n <slot name=\"empty\">\n <span>{{ emptyText }}</span>\n </slot>\n </div>\n <div\n v-if=\"$slots.footer\"\n :class=\"nsSelect.be('dropdown', 'footer')\"\n @click.stop\n >\n <slot name=\"footer\" />\n </div>\n </el-select-menu>\n </template>\n </el-tooltip>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n onBeforeUnmount,\n provide,\n reactive,\n toRefs,\n watch,\n} from 'vue'\nimport { ClickOutside } from '@element-plus/directives'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElTag from '@element-plus/components/tag'\nimport ElIcon from '@element-plus/components/icon'\nimport { flattedChildren, isArray, isObject } from '@element-plus/utils'\nimport { useCalcInputWidth } from '@element-plus/hooks'\nimport { useProps } from '@element-plus/components/select-v2/src/useProps'\nimport ElOption from './option.vue'\nimport ElSelectMenu from './select-dropdown.vue'\nimport { useSelect } from './useSelect'\nimport { selectKey } from './token'\nimport ElOptions from './options'\nimport { selectEmits, selectProps } from './select'\nimport ElOptionGroup from './option-group.vue'\n\nimport type { AppConfig, AppContext, VNode } from 'vue'\nimport type { SelectContext } from './type'\n\nconst COMPONENT_NAME = 'ElSelect'\n\ntype WarnHandler = AppConfig['warnHandler']\n\ninterface WarnHandlerRecord {\n originalWarnHandler: WarnHandler\n handler: WarnHandler\n count: number\n}\n\nconst warnHandlerMap = new WeakMap<AppContext, WarnHandlerRecord>()\n\nconst createSelectWarnHandler = (appContext: AppContext): WarnHandler => {\n return (...args) => {\n // Overrides warnings about slots not being executable outside of a render function.\n // We call slot below just to simulate data when persist is false, this warning message should be ignored\n const message = args[0]\n if (\n !message ||\n (message.includes(\n 'Slot \"default\" invoked outside of the render function'\n ) &&\n args[2]?.includes('ElTreeSelect'))\n )\n return\n const original = warnHandlerMap.get(appContext)?.originalWarnHandler\n if (original) {\n original(...args)\n return\n }\n // eslint-disable-next-line no-console\n console.warn(...args)\n }\n}\n\nconst getWarnHandlerRecord = (appContext: AppContext): WarnHandlerRecord => {\n let record = warnHandlerMap.get(appContext)\n if (!record) {\n record = {\n originalWarnHandler: appContext.config.warnHandler,\n handler: createSelectWarnHandler(appContext),\n count: 0,\n }\n warnHandlerMap.set(appContext, record)\n }\n return record\n}\nexport default defineComponent({\n name: COMPONENT_NAME,\n componentName: COMPONENT_NAME,\n components: {\n ElSelectMenu,\n ElOption,\n ElOptions,\n ElOptionGroup,\n ElTag,\n ElScrollbar,\n ElTooltip,\n ElIcon,\n },\n directives: { ClickOutside },\n props: selectProps,\n emits: selectEmits,\n\n setup(props, { emit, slots }) {\n const instance = getCurrentInstance()!\n const warnRecord = getWarnHandlerRecord(instance.appContext)\n warnRecord.count += 1\n instance.appContext.config.warnHandler = warnRecord.handler\n const modelValue = computed(() => {\n const { modelValue: rawModelValue, multiple } = props\n const fallback = multiple ? [] : undefined\n // When it is array, we check if this is multi-select.\n // Based on the result we get\n if (isArray(rawModelValue)) {\n return multiple ? rawModelValue : fallback\n }\n\n return multiple ? fallback : rawModelValue\n })\n\n const _props = reactive({\n ...toRefs(props),\n modelValue,\n })\n\n const API = useSelect(_props, emit)\n const { calculatorRef, inputStyle } = useCalcInputWidth()\n const { getLabel, getValue, getOptions, getDisabled } = useProps(props)\n\n const getOptionProps = (option: Record<string, any>) => ({\n label: getLabel(option),\n value: getValue(option),\n disabled: getDisabled(option),\n })\n\n const flatTreeSelectData = (data: any[]) => {\n return data.reduce((acc, item) => {\n acc.push(item)\n if (item.children && item.children.length > 0) {\n acc.push(...flatTreeSelectData(item.children))\n }\n return acc\n }, [])\n }\n\n const manuallyRenderSlots = (vnodes: VNode[] | undefined) => {\n // After option rendering is completed, the useSelect internal state can collect the value of each option.\n // If the persistent value is false, option will not be rendered by default, so in this case,\n // manually render and load option data here.\n const children = flattedChildren(vnodes || []) as VNode[]\n children.forEach((item) => {\n if (\n isObject(item) &&\n // @ts-expect-error\n (item.type.name === 'ElOption' || item.type.name === 'ElTree')\n ) {\n // @ts-expect-error\n const _name = item.type.name\n if (_name === 'ElTree') {\n // tree-select component is a special case.\n // So we need to handle it separately.\n const treeData = item.props?.data || []\n const flatData = flatTreeSelectData(treeData)\n flatData.forEach((treeItem: any) => {\n treeItem.currentLabel =\n treeItem.label ??\n (isObject(treeItem.value) ? '' : treeItem.value)\n API.onOptionCreate(treeItem)\n })\n } else if (_name === 'ElOption') {\n const obj = { ...item.props } as any\n obj.currentLabel =\n obj.label ?? (isObject(obj.value) ? '' : obj.value)\n API.onOptionCreate(obj)\n }\n }\n })\n }\n watch(\n () => [\n props.persistent || API.expanded.value || !slots.default\n ? undefined\n : slots.default?.(),\n modelValue.value,\n ],\n () => {\n // When persistent is false and the dropdown is closed, the menu is unmounted.\n // We should always re-hydrate option data from slots so labels stay in sync\n // with dynamic option list updates. Skip only when persistent is true or\n // when the dropdown is currently expanded (mounted options will manage themselves).\n if (props.persistent || API.expanded.value) {\n // If persistent is true, we don't need to manually render slots.\n return\n }\n // When using :options prop (no slot content), el-option components register\n // and unregister themselves via onOptionCreate/onOptionDestroy lifecycle hooks.\n // Calling options.clear() here would prematurely wipe options that are still\n // mounted, causing a \"No Data\" flash during rapid open/close toggling.\n if (!slots.default) {\n return\n }\n // Reset current options snapshot before re-collecting from slots.\n API.states.options.clear()\n manuallyRenderSlots(slots.default?.())\n },\n {\n immediate: true,\n }\n )\n\n provide(\n selectKey,\n reactive({\n props: _props,\n states: API.states,\n selectRef: API.selectRef,\n optionsArray: API.optionsArray,\n setSelected: API.setSelected,\n handleOptionSelect: API.handleOptionSelect,\n onOptionCreate: API.onOptionCreate,\n onOptionDestroy: API.onOptionDestroy,\n }) as unknown as SelectContext // Avoid TS2589\n )\n\n const selectedLabel = computed(() => {\n if (!props.multiple) {\n return API.states.selectedLabel\n }\n return API.states.selected.map((i) => i.currentLabel as string)\n })\n\n onBeforeUnmount(() => {\n // https://github.com/element-plus/element-plus/issues/21279\n const record = warnHandlerMap.get(instance.appContext)\n if (!record) return\n record.count -= 1\n if (record.count <= 0) {\n instance.appContext.config.warnHandler = record.originalWarnHandler\n warnHandlerMap.delete(instance.appContext)\n }\n })\n\n return {\n ...API,\n modelValue,\n selectedLabel,\n calculatorRef,\n inputStyle,\n getLabel,\n getValue,\n getOptions,\n getDisabled,\n getOptionProps,\n }\n },\n})\n</script>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"select2.js","names":[],"sources":["../../../../../../packages/components/select/src/select.vue"],"sourcesContent":["<template>\n <div\n ref=\"selectRef\"\n v-click-outside:[popperRef]=\"handleClickOutside\"\n :class=\"[nsSelect.b(), nsSelect.m(selectSize)]\"\n @[mouseEnterEventName]=\"states.inputHovering = true\"\n @mouseleave=\"states.inputHovering = false\"\n >\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"dropdownMenuVisible\"\n :placement=\"placement\"\n :teleported=\"teleported\"\n :popper-class=\"[nsSelect.e('popper'), popperClass]\"\n :popper-style=\"popperStyle\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"fallbackPlacements\"\n :effect=\"effect\"\n pure\n trigger=\"click\"\n :transition=\"`${nsSelect.namespace.value}-zoom-in-top`\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n :persistent=\"persistent\"\n :append-to=\"appendTo\"\n :show-arrow=\"showArrow\"\n :offset=\"offset\"\n @before-show=\"handleMenuEnter\"\n @hide=\"states.isBeforeHide = false\"\n >\n <template #default>\n <div\n ref=\"wrapperRef\"\n :class=\"[\n nsSelect.e('wrapper'),\n nsSelect.is('focused', isFocused),\n nsSelect.is('hovering', states.inputHovering),\n nsSelect.is('filterable', filterable),\n nsSelect.is('disabled', selectDisabled),\n ]\"\n @click.prevent=\"toggleMenu\"\n >\n <div\n v-if=\"$slots.prefix\"\n ref=\"prefixRef\"\n :class=\"nsSelect.e('prefix')\"\n >\n <slot name=\"prefix\" />\n </div>\n <div\n ref=\"selectionRef\"\n :class=\"[\n nsSelect.e('selection'),\n nsSelect.is(\n 'near',\n multiple && !$slots.prefix && !!states.selected.length\n ),\n ]\"\n >\n <slot\n v-if=\"multiple\"\n name=\"tag\"\n :data=\"states.selected\"\n :delete-tag=\"deleteTag\"\n :select-disabled=\"selectDisabled\"\n >\n <div\n v-for=\"item in showTagList\"\n :key=\"getValueKey(item)\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n :closable=\"!selectDisabled && !item.isDisabled\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n :style=\"tagStyle\"\n @close=\"deleteTag($event, item)\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n <slot\n name=\"label\"\n :index=\"item.index\"\n :label=\"item.currentLabel\"\n :value=\"item.value\"\n >\n {{ item.currentLabel }}\n </slot>\n </span>\n </el-tag>\n </div>\n\n <el-tooltip\n v-if=\"collapseTags && states.selected.length > maxCollapseTags\"\n ref=\"tagTooltipRef\"\n :disabled=\"dropdownMenuVisible || !collapseTagsTooltip\"\n :fallback-placements=\"\n tagTooltip?.fallbackPlacements ?? [\n 'bottom',\n 'top',\n 'right',\n 'left',\n ]\n \"\n :effect=\"tagTooltip?.effect ?? effect\"\n :placement=\"tagTooltip?.placement ?? 'bottom'\"\n :popper-class=\"tagTooltip?.popperClass ?? popperClass\"\n :popper-style=\"tagTooltip?.popperStyle ?? popperStyle\"\n :teleported=\"tagTooltip?.teleported ?? teleported\"\n :append-to=\"tagTooltip?.appendTo ?? appendTo\"\n :popper-options=\"tagTooltip?.popperOptions ?? popperOptions\"\n :transition=\"tagTooltip?.transition\"\n :show-after=\"tagTooltip?.showAfter\"\n :hide-after=\"tagTooltip?.hideAfter\"\n :auto-close=\"tagTooltip?.autoClose\"\n :offset=\"tagTooltip?.offset\"\n >\n <template #default>\n <div\n ref=\"collapseItemRef\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n :closable=\"false\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n :style=\"collapseTagStyle\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n + {{ states.selected.length - maxCollapseTags }}\n </span>\n </el-tag>\n </div>\n </template>\n <template #content>\n <div ref=\"tagMenuRef\" :class=\"nsSelect.e('selection')\">\n <div\n v-for=\"item in collapseTagList\"\n :key=\"getValueKey(item)\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n class=\"in-tooltip\"\n :closable=\"!selectDisabled && !item.isDisabled\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n @close=\"deleteTag($event, item)\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n <slot\n name=\"label\"\n :index=\"item.index\"\n :label=\"item.currentLabel\"\n :value=\"item.value\"\n >\n {{ item.currentLabel }}\n </slot>\n </span>\n </el-tag>\n </div>\n </div>\n </template>\n </el-tooltip>\n </slot>\n <div\n :class=\"[\n nsSelect.e('selected-item'),\n nsSelect.e('input-wrapper'),\n nsSelect.is(\n 'hidden',\n !filterable ||\n selectDisabled ||\n (multiple && !states.inputValue && !isFocused)\n ),\n ]\"\n >\n <input\n :id=\"inputId\"\n ref=\"inputRef\"\n :value=\"states.inputValue\"\n type=\"text\"\n :name=\"name\"\n :class=\"[nsSelect.e('input'), nsSelect.is(selectSize)]\"\n :disabled=\"selectDisabled\"\n :autocomplete=\"autocomplete\"\n :style=\"inputStyle\"\n :tabindex=\"tabindex\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n :aria-activedescendant=\"hoverOption?.id || ''\"\n :aria-controls=\"contentId\"\n :aria-expanded=\"dropdownMenuVisible\"\n :aria-label=\"ariaLabel\"\n aria-autocomplete=\"none\"\n aria-haspopup=\"listbox\"\n @keydown=\"handleKeydown\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"onInput\"\n @change.stop\n @click.stop=\"toggleMenu\"\n />\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n :class=\"nsSelect.e('input-calculator')\"\n v-text=\"states.inputValue\"\n />\n </div>\n <div\n v-if=\"shouldShowPlaceholder\"\n :class=\"[\n nsSelect.e('selected-item'),\n nsSelect.e('placeholder'),\n nsSelect.is(\n 'transparent',\n !hasModelValue || (expanded && !states.inputValue)\n ),\n ]\"\n >\n <slot\n v-if=\"hasModelValue\"\n name=\"label\"\n :index=\"getOption(modelValue!).index\"\n :label=\"currentPlaceholder\"\n :value=\"modelValue\"\n >\n <span>{{ currentPlaceholder }}</span>\n </slot>\n <span v-else>{{ currentPlaceholder }}</span>\n </div>\n </div>\n <div ref=\"suffixRef\" :class=\"nsSelect.e('suffix')\">\n <el-icon\n v-if=\"iconComponent && !showClearBtn\"\n :class=\"[nsSelect.e('caret'), nsSelect.e('icon'), iconReverse]\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <el-icon\n v-if=\"showClearBtn && clearIcon\"\n :class=\"[\n nsSelect.e('caret'),\n nsSelect.e('icon'),\n nsSelect.e('clear'),\n ]\"\n @click=\"handleClearClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </div>\n </div>\n </template>\n <template #content>\n <el-select-menu ref=\"menuRef\">\n <div\n v-if=\"$slots.header\"\n :class=\"nsSelect.be('dropdown', 'header')\"\n @click.stop\n >\n <slot name=\"header\" />\n </div>\n <el-scrollbar\n v-show=\"states.options.size > 0 && !loading\"\n :id=\"contentId\"\n ref=\"scrollbarRef\"\n tag=\"ul\"\n :wrap-class=\"nsSelect.be('dropdown', 'wrap')\"\n :view-class=\"nsSelect.be('dropdown', 'list')\"\n :class=\"[nsSelect.is('empty', filteredOptionsCount === 0)]\"\n role=\"listbox\"\n :aria-label=\"ariaLabel\"\n aria-orientation=\"vertical\"\n @scroll=\"popupScroll\"\n @end-reached=\"endReached\"\n >\n <el-option\n v-if=\"showNewOption\"\n :value=\"states.inputValue\"\n :created=\"true\"\n />\n <el-options>\n <slot>\n <template v-for=\"(option, index) in options\" :key=\"index\">\n <el-option-group\n v-if=\"getOptions(option)?.length\"\n :label=\"getLabel(option)\"\n :disabled=\"getDisabled(option)\"\n >\n <el-option\n v-for=\"item in getOptions(option)\"\n :key=\"getValue(item)\"\n v-bind=\"getOptionProps(item)\"\n />\n </el-option-group>\n <el-option v-else v-bind=\"getOptionProps(option)\" />\n </template>\n </slot>\n </el-options>\n </el-scrollbar>\n <div\n v-if=\"$slots.loading && loading\"\n :class=\"nsSelect.be('dropdown', 'loading')\"\n >\n <slot name=\"loading\" />\n </div>\n <div\n v-else-if=\"loading || filteredOptionsCount === 0\"\n :class=\"nsSelect.be('dropdown', 'empty')\"\n >\n <slot name=\"empty\">\n <span>{{ emptyText }}</span>\n </slot>\n </div>\n <div\n v-if=\"$slots.footer\"\n :class=\"nsSelect.be('dropdown', 'footer')\"\n @click.stop\n >\n <slot name=\"footer\" />\n </div>\n </el-select-menu>\n </template>\n </el-tooltip>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n onBeforeUnmount,\n provide,\n reactive,\n toRefs,\n watch,\n} from 'vue'\nimport { ClickOutside } from '@element-plus/directives'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElTag from '@element-plus/components/tag'\nimport ElIcon from '@element-plus/components/icon'\nimport { flattedChildren, isArray, isObject } from '@element-plus/utils'\nimport { useCalcInputWidth } from '@element-plus/hooks'\nimport { useProps } from '@element-plus/components/select-v2/src/useProps'\nimport ElOption from './option.vue'\nimport ElSelectMenu from './select-dropdown.vue'\nimport { useSelect } from './useSelect'\nimport { selectKey } from './token'\nimport ElOptions from './options'\nimport { selectEmits, selectProps } from './select'\nimport ElOptionGroup from './option-group.vue'\n\nimport type { AppConfig, AppContext, VNode } from 'vue'\nimport type { SelectContext } from './type'\n\nconst COMPONENT_NAME = 'ElSelect'\n\ntype WarnHandler = AppConfig['warnHandler']\n\ninterface WarnHandlerRecord {\n originalWarnHandler: WarnHandler\n handler: WarnHandler\n count: number\n}\n\nconst warnHandlerMap = new WeakMap<AppContext, WarnHandlerRecord>()\n\nconst createSelectWarnHandler = (appContext: AppContext): WarnHandler => {\n return (...args) => {\n // Overrides warnings about slots not being executable outside of a render function.\n // We call slot below just to simulate data when persist is false, this warning message should be ignored\n const message = args[0]\n if (\n !message ||\n (message.includes(\n 'Slot \"default\" invoked outside of the render function'\n ) &&\n args[2]?.includes('ElTreeSelect'))\n )\n return\n const original = warnHandlerMap.get(appContext)?.originalWarnHandler\n if (original) {\n original(...args)\n return\n }\n // eslint-disable-next-line no-console\n console.warn(...args)\n }\n}\n\nconst getWarnHandlerRecord = (appContext: AppContext): WarnHandlerRecord => {\n let record = warnHandlerMap.get(appContext)\n if (!record) {\n record = {\n originalWarnHandler: appContext.config.warnHandler,\n handler: createSelectWarnHandler(appContext),\n count: 0,\n }\n warnHandlerMap.set(appContext, record)\n }\n return record\n}\nexport default defineComponent({\n name: COMPONENT_NAME,\n componentName: COMPONENT_NAME,\n components: {\n ElSelectMenu,\n ElOption,\n ElOptions,\n ElOptionGroup,\n ElTag,\n ElScrollbar,\n ElTooltip,\n ElIcon,\n },\n directives: { ClickOutside },\n props: selectProps,\n emits: selectEmits,\n\n setup(props, { emit, slots }) {\n const instance = getCurrentInstance()!\n const warnRecord = getWarnHandlerRecord(instance.appContext)\n warnRecord.count += 1\n instance.appContext.config.warnHandler = warnRecord.handler\n const modelValue = computed(() => {\n const { modelValue: rawModelValue, multiple } = props\n const fallback = multiple ? [] : undefined\n // When it is array, we check if this is multi-select.\n // Based on the result we get\n if (isArray(rawModelValue)) {\n return multiple ? rawModelValue : fallback\n }\n\n return multiple ? fallback : rawModelValue\n })\n\n const _props = reactive({\n ...toRefs(props),\n modelValue,\n })\n\n const API = useSelect(_props, emit)\n const { calculatorRef, inputStyle } = useCalcInputWidth()\n const { getLabel, getValue, getOptions, getDisabled } = useProps(props)\n\n const getOptionProps = (option: Record<string, any>) => ({\n label: getLabel(option),\n value: getValue(option),\n disabled: getDisabled(option),\n })\n\n const flatTreeSelectData = (data: any[]) => {\n return data.reduce((acc, item) => {\n acc.push(item)\n if (item.children && item.children.length > 0) {\n acc.push(...flatTreeSelectData(item.children))\n }\n return acc\n }, [])\n }\n\n const manuallyRenderSlots = (vnodes: VNode[] | undefined) => {\n // After option rendering is completed, the useSelect internal state can collect the value of each option.\n // If the persistent value is false, option will not be rendered by default, so in this case,\n // manually render and load option data here.\n const children = flattedChildren(vnodes || []) as VNode[]\n children.forEach((item) => {\n if (\n isObject(item) &&\n // @ts-expect-error\n (item.type.name === 'ElOption' || item.type.name === 'ElTree')\n ) {\n // @ts-expect-error\n const _name = item.type.name\n if (_name === 'ElTree') {\n // tree-select component is a special case.\n // So we need to handle it separately.\n const treeData = item.props?.data || []\n const flatData = flatTreeSelectData(treeData)\n flatData.forEach((treeItem: any) => {\n treeItem.currentLabel =\n treeItem.label ??\n (isObject(treeItem.value) ? '' : treeItem.value)\n API.onOptionCreate(treeItem)\n })\n } else if (_name === 'ElOption') {\n const obj = { ...item.props } as any\n obj.currentLabel =\n obj.label ?? (isObject(obj.value) ? '' : obj.value)\n API.onOptionCreate(obj)\n }\n }\n })\n }\n watch(\n () => [\n props.persistent || API.expanded.value || !slots.default\n ? undefined\n : slots.default?.(),\n modelValue.value,\n ],\n () => {\n // When persistent is false and the dropdown is closed, the menu is unmounted.\n // We should always re-hydrate option data from slots so labels stay in sync\n // with dynamic option list updates. Skip only when persistent is true or\n // when the dropdown is currently expanded (mounted options will manage themselves).\n if (props.persistent || API.expanded.value) {\n // If persistent is true, we don't need to manually render slots.\n return\n }\n // When using :options prop (no slot content), el-option components register\n // and unregister themselves via onOptionCreate/onOptionDestroy lifecycle hooks.\n // Calling options.clear() here would prematurely wipe options that are still\n // mounted, causing a \"No Data\" flash during rapid open/close toggling.\n if (!slots.default) {\n return\n }\n // Reset current options snapshot before re-collecting from slots.\n API.states.options.clear()\n manuallyRenderSlots(slots.default?.())\n },\n {\n immediate: true,\n }\n )\n\n provide(\n selectKey,\n reactive({\n props: _props,\n states: API.states,\n selectRef: API.selectRef,\n optionsArray: API.optionsArray,\n setSelected: API.setSelected,\n handleOptionSelect: API.handleOptionSelect,\n onOptionCreate: API.onOptionCreate,\n onOptionDestroy: API.onOptionDestroy,\n }) satisfies SelectContext\n )\n\n const selectedLabel = computed(() => {\n if (!props.multiple) {\n return API.states.selectedLabel\n }\n return API.states.selected.map((i) => i.currentLabel as string)\n })\n\n onBeforeUnmount(() => {\n // https://github.com/element-plus/element-plus/issues/21279\n const record = warnHandlerMap.get(instance.appContext)\n if (!record) return\n record.count -= 1\n if (record.count <= 0) {\n instance.appContext.config.warnHandler = record.originalWarnHandler\n warnHandlerMap.delete(instance.appContext)\n }\n })\n\n return {\n ...API,\n modelValue,\n selectedLabel,\n calculatorRef,\n inputStyle,\n getLabel,\n getValue,\n getOptions,\n getDisabled,\n getOptionProps,\n }\n },\n})\n</script>\n"],"mappings":"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"}
1
+ {"version":3,"file":"select2.js","names":[],"sources":["../../../../../../packages/components/select/src/select.vue"],"sourcesContent":["<template>\n <div\n ref=\"selectRef\"\n v-click-outside:[popperRef]=\"handleClickOutside\"\n :class=\"[nsSelect.b(), nsSelect.m(selectSize)]\"\n @[mouseEnterEventName]=\"states.inputHovering = true\"\n @mouseleave=\"states.inputHovering = false\"\n >\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"dropdownMenuVisible\"\n :placement=\"placement\"\n :teleported=\"teleported\"\n :popper-class=\"[nsSelect.e('popper'), popperClass]\"\n :popper-style=\"popperStyle\"\n :popper-options=\"popperOptions\"\n :fallback-placements=\"fallbackPlacements\"\n :effect=\"effect\"\n pure\n trigger=\"click\"\n :transition=\"`${nsSelect.namespace.value}-zoom-in-top`\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n :persistent=\"persistent\"\n :append-to=\"appendTo\"\n :show-arrow=\"showArrow\"\n :offset=\"offset\"\n @before-show=\"handleMenuEnter\"\n @hide=\"states.isBeforeHide = false\"\n >\n <template #default>\n <div\n ref=\"wrapperRef\"\n :class=\"[\n nsSelect.e('wrapper'),\n nsSelect.is('focused', isFocused),\n nsSelect.is('hovering', states.inputHovering),\n nsSelect.is('filterable', filterable),\n nsSelect.is('disabled', selectDisabled),\n ]\"\n @click.prevent=\"toggleMenu\"\n >\n <div\n v-if=\"$slots.prefix\"\n ref=\"prefixRef\"\n :class=\"nsSelect.e('prefix')\"\n >\n <slot name=\"prefix\" />\n </div>\n <div\n ref=\"selectionRef\"\n :class=\"[\n nsSelect.e('selection'),\n nsSelect.is(\n 'near',\n multiple && !$slots.prefix && !!states.selected.length\n ),\n ]\"\n >\n <slot\n v-if=\"multiple\"\n name=\"tag\"\n :data=\"states.selected\"\n :delete-tag=\"deleteTag\"\n :select-disabled=\"selectDisabled\"\n >\n <div\n v-for=\"item in showTagList\"\n :key=\"getValueKey(item)\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n :closable=\"!selectDisabled && !item.isDisabled\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n :style=\"tagStyle\"\n @close=\"deleteTag($event, item)\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n <slot\n name=\"label\"\n :index=\"item.index\"\n :label=\"item.currentLabel\"\n :value=\"item.value\"\n >\n {{ item.currentLabel }}\n </slot>\n </span>\n </el-tag>\n </div>\n\n <el-tooltip\n v-if=\"collapseTags && states.selected.length > maxCollapseTags\"\n ref=\"tagTooltipRef\"\n :disabled=\"dropdownMenuVisible || !collapseTagsTooltip\"\n :fallback-placements=\"\n tagTooltip?.fallbackPlacements ?? [\n 'bottom',\n 'top',\n 'right',\n 'left',\n ]\n \"\n :effect=\"tagTooltip?.effect ?? effect\"\n :placement=\"tagTooltip?.placement ?? 'bottom'\"\n :popper-class=\"tagTooltip?.popperClass ?? popperClass\"\n :popper-style=\"tagTooltip?.popperStyle ?? popperStyle\"\n :teleported=\"tagTooltip?.teleported ?? teleported\"\n :append-to=\"tagTooltip?.appendTo ?? appendTo\"\n :popper-options=\"tagTooltip?.popperOptions ?? popperOptions\"\n :transition=\"tagTooltip?.transition\"\n :show-after=\"tagTooltip?.showAfter\"\n :hide-after=\"tagTooltip?.hideAfter\"\n :auto-close=\"tagTooltip?.autoClose\"\n :offset=\"tagTooltip?.offset\"\n >\n <template #default>\n <div\n ref=\"collapseItemRef\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n :closable=\"false\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n :style=\"collapseTagStyle\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n + {{ states.selected.length - maxCollapseTags }}\n </span>\n </el-tag>\n </div>\n </template>\n <template #content>\n <div ref=\"tagMenuRef\" :class=\"nsSelect.e('selection')\">\n <div\n v-for=\"item in collapseTagList\"\n :key=\"getValueKey(item)\"\n :class=\"nsSelect.e('selected-item')\"\n >\n <el-tag\n class=\"in-tooltip\"\n :closable=\"!selectDisabled && !item.isDisabled\"\n :size=\"collapseTagSize\"\n :type=\"tagType\"\n :effect=\"tagEffect\"\n disable-transitions\n @close=\"deleteTag($event, item)\"\n >\n <span :class=\"nsSelect.e('tags-text')\">\n <slot\n name=\"label\"\n :index=\"item.index\"\n :label=\"item.currentLabel\"\n :value=\"item.value\"\n >\n {{ item.currentLabel }}\n </slot>\n </span>\n </el-tag>\n </div>\n </div>\n </template>\n </el-tooltip>\n </slot>\n <div\n :class=\"[\n nsSelect.e('selected-item'),\n nsSelect.e('input-wrapper'),\n nsSelect.is(\n 'hidden',\n !filterable ||\n selectDisabled ||\n (multiple && !states.inputValue && !isFocused)\n ),\n ]\"\n >\n <input\n :id=\"inputId\"\n ref=\"inputRef\"\n :value=\"states.inputValue\"\n type=\"text\"\n :name=\"name\"\n :class=\"[nsSelect.e('input'), nsSelect.is(selectSize)]\"\n :disabled=\"selectDisabled\"\n :autocomplete=\"autocomplete\"\n :style=\"inputStyle\"\n :tabindex=\"tabindex\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n :aria-activedescendant=\"hoverOption?.id || ''\"\n :aria-controls=\"contentId\"\n :aria-expanded=\"dropdownMenuVisible\"\n :aria-label=\"ariaLabel\"\n aria-autocomplete=\"none\"\n aria-haspopup=\"listbox\"\n @keydown=\"handleKeydown\"\n @compositionstart=\"handleCompositionStart\"\n @compositionupdate=\"handleCompositionUpdate\"\n @compositionend=\"handleCompositionEnd\"\n @input=\"onInput\"\n @change.stop\n @click.stop=\"toggleMenu\"\n />\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n :class=\"nsSelect.e('input-calculator')\"\n v-text=\"states.inputValue\"\n />\n </div>\n <div\n v-if=\"shouldShowPlaceholder\"\n :class=\"[\n nsSelect.e('selected-item'),\n nsSelect.e('placeholder'),\n nsSelect.is(\n 'transparent',\n !hasModelValue || (expanded && !states.inputValue)\n ),\n ]\"\n >\n <slot\n v-if=\"hasModelValue\"\n name=\"label\"\n :index=\"getOption(modelValue!).index\"\n :label=\"currentPlaceholder\"\n :value=\"modelValue\"\n >\n <span>{{ currentPlaceholder }}</span>\n </slot>\n <span v-else>{{ currentPlaceholder }}</span>\n </div>\n </div>\n <div ref=\"suffixRef\" :class=\"nsSelect.e('suffix')\">\n <el-icon\n v-if=\"iconComponent && !showClearBtn\"\n :class=\"[nsSelect.e('caret'), nsSelect.e('icon'), iconReverse]\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <el-icon\n v-if=\"showClearBtn && clearIcon\"\n :class=\"[\n nsSelect.e('caret'),\n nsSelect.e('icon'),\n nsSelect.e('clear'),\n ]\"\n @click=\"handleClearClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n <el-icon\n v-if=\"validateState && validateIcon && needStatusIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsInput.e('validateIcon'),\n nsInput.is('loading', validateState === 'validating'),\n ]\"\n >\n <component :is=\"validateIcon\" />\n </el-icon>\n </div>\n </div>\n </template>\n <template #content>\n <el-select-menu ref=\"menuRef\">\n <div\n v-if=\"$slots.header\"\n :class=\"nsSelect.be('dropdown', 'header')\"\n @click.stop\n >\n <slot name=\"header\" />\n </div>\n <el-scrollbar\n v-show=\"states.options.size > 0 && !loading\"\n :id=\"contentId\"\n ref=\"scrollbarRef\"\n tag=\"ul\"\n :wrap-class=\"nsSelect.be('dropdown', 'wrap')\"\n :view-class=\"nsSelect.be('dropdown', 'list')\"\n :class=\"[nsSelect.is('empty', filteredOptionsCount === 0)]\"\n role=\"listbox\"\n :aria-label=\"ariaLabel\"\n aria-orientation=\"vertical\"\n @scroll=\"popupScroll\"\n @end-reached=\"endReached\"\n >\n <el-option\n v-if=\"showNewOption\"\n :value=\"states.inputValue\"\n :created=\"true\"\n />\n <el-options>\n <slot>\n <template v-for=\"(option, index) in options\" :key=\"index\">\n <el-option-group\n v-if=\"getOptions(option)?.length\"\n :label=\"getLabel(option)\"\n :disabled=\"getDisabled(option)\"\n >\n <el-option\n v-for=\"item in getOptions(option)\"\n :key=\"getValue(item)\"\n v-bind=\"getOptionProps(item)\"\n />\n </el-option-group>\n <el-option v-else v-bind=\"getOptionProps(option)\" />\n </template>\n </slot>\n </el-options>\n </el-scrollbar>\n <div\n v-if=\"$slots.loading && loading\"\n :class=\"nsSelect.be('dropdown', 'loading')\"\n >\n <slot name=\"loading\" />\n </div>\n <div\n v-else-if=\"loading || filteredOptionsCount === 0\"\n :class=\"nsSelect.be('dropdown', 'empty')\"\n >\n <slot name=\"empty\">\n <span>{{ emptyText }}</span>\n </slot>\n </div>\n <div\n v-if=\"$slots.footer\"\n :class=\"nsSelect.be('dropdown', 'footer')\"\n @click.stop\n >\n <slot name=\"footer\" />\n </div>\n </el-select-menu>\n </template>\n </el-tooltip>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n onBeforeUnmount,\n provide,\n reactive,\n toRefs,\n watch,\n} from 'vue'\nimport { ClickOutside } from '@element-plus/directives'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElTag from '@element-plus/components/tag'\nimport ElIcon from '@element-plus/components/icon'\nimport { flattedChildren, isArray, isObject } from '@element-plus/utils'\nimport { useCalcInputWidth } from '@element-plus/hooks'\nimport { useProps } from '@element-plus/components/select-v2/src/useProps'\nimport ElOption from './option.vue'\nimport ElSelectMenu from './select-dropdown.vue'\nimport { useSelect } from './useSelect'\nimport { selectKey } from './token'\nimport ElOptions from './options'\nimport { selectEmits, selectProps } from './select'\nimport ElOptionGroup from './option-group.vue'\n\nimport type { AppConfig, AppContext, VNode } from 'vue'\nimport type { SelectContext } from './type'\n\nconst COMPONENT_NAME = 'ElSelect'\n\ntype WarnHandler = AppConfig['warnHandler']\n\ninterface WarnHandlerRecord {\n originalWarnHandler: WarnHandler\n handler: WarnHandler\n count: number\n}\n\nconst warnHandlerMap = new WeakMap<AppContext, WarnHandlerRecord>()\n\nconst createSelectWarnHandler = (appContext: AppContext): WarnHandler => {\n return (...args) => {\n // Overrides warnings about slots not being executable outside of a render function.\n // We call slot below just to simulate data when persist is false, this warning message should be ignored\n const message = args[0]\n if (\n !message ||\n (message.includes(\n 'Slot \"default\" invoked outside of the render function'\n ) &&\n args[2]?.includes('ElTreeSelect'))\n )\n return\n const original = warnHandlerMap.get(appContext)?.originalWarnHandler\n if (original) {\n original(...args)\n return\n }\n // eslint-disable-next-line no-console\n console.warn(...args)\n }\n}\n\nconst getWarnHandlerRecord = (appContext: AppContext): WarnHandlerRecord => {\n let record = warnHandlerMap.get(appContext)\n if (!record) {\n record = {\n originalWarnHandler: appContext.config.warnHandler,\n handler: createSelectWarnHandler(appContext),\n count: 0,\n }\n warnHandlerMap.set(appContext, record)\n }\n return record\n}\nexport default defineComponent({\n name: COMPONENT_NAME,\n componentName: COMPONENT_NAME,\n components: {\n ElSelectMenu,\n ElOption,\n ElOptions,\n ElOptionGroup,\n ElTag,\n ElScrollbar,\n ElTooltip,\n ElIcon,\n },\n directives: { ClickOutside },\n props: selectProps,\n emits: selectEmits,\n\n setup(props, { emit, slots }) {\n const instance = getCurrentInstance()!\n const warnRecord = getWarnHandlerRecord(instance.appContext)\n warnRecord.count += 1\n instance.appContext.config.warnHandler = warnRecord.handler\n const modelValue = computed(() => {\n const { modelValue: rawModelValue, multiple } = props\n const fallback = multiple ? [] : undefined\n // When it is array, we check if this is multi-select.\n // Based on the result we get\n if (isArray(rawModelValue)) {\n return multiple ? rawModelValue : fallback\n }\n\n return multiple ? fallback : rawModelValue\n })\n\n const _props = reactive({\n ...toRefs(props),\n modelValue,\n })\n\n const API = useSelect(_props, emit)\n const { calculatorRef, inputStyle } = useCalcInputWidth()\n const { getLabel, getValue, getOptions, getDisabled } = useProps(props)\n\n const getOptionProps = (option: Record<string, any>) => ({\n label: getLabel(option),\n value: getValue(option),\n disabled: getDisabled(option),\n })\n\n const flatTreeSelectData = (data: any[]) => {\n return data.reduce((acc, item) => {\n acc.push(item)\n if (item.children && item.children.length > 0) {\n acc.push(...flatTreeSelectData(item.children))\n }\n return acc\n }, [])\n }\n\n const manuallyRenderSlots = (vnodes: VNode[] | undefined) => {\n // After option rendering is completed, the useSelect internal state can collect the value of each option.\n // If the persistent value is false, option will not be rendered by default, so in this case,\n // manually render and load option data here.\n const children = flattedChildren(vnodes || []) as VNode[]\n children.forEach((item) => {\n if (\n isObject(item) &&\n // @ts-expect-error\n (item.type.name === 'ElOption' || item.type.name === 'ElTree')\n ) {\n // @ts-expect-error\n const _name = item.type.name\n if (_name === 'ElTree') {\n // tree-select component is a special case.\n // So we need to handle it separately.\n const treeData = item.props?.data || []\n const flatData = flatTreeSelectData(treeData)\n flatData.forEach((treeItem: any) => {\n treeItem.currentLabel =\n treeItem.label ??\n (isObject(treeItem.value) ? '' : treeItem.value)\n API.onOptionCreate(treeItem)\n })\n } else if (_name === 'ElOption') {\n const obj = { ...item.props } as any\n obj.currentLabel =\n obj.label ?? (isObject(obj.value) ? '' : obj.value)\n API.onOptionCreate(obj)\n }\n }\n })\n }\n watch(\n () => [\n props.persistent || API.expanded.value || !slots.default\n ? undefined\n : slots.default?.(),\n modelValue.value,\n ],\n () => {\n // When persistent is false and the dropdown is closed, the menu is unmounted.\n // We should always re-hydrate option data from slots so labels stay in sync\n // with dynamic option list updates. Skip only when persistent is true or\n // when the dropdown is currently expanded (mounted options will manage themselves).\n if (props.persistent || API.expanded.value) {\n // If persistent is true, we don't need to manually render slots.\n return\n }\n // When using :options prop (no slot content), el-option components register\n // and unregister themselves via onOptionCreate/onOptionDestroy lifecycle hooks.\n // Calling options.clear() here would prematurely wipe options that are still\n // mounted, causing a \"No Data\" flash during rapid open/close toggling.\n if (!slots.default) {\n return\n }\n // Reset current options snapshot before re-collecting from slots.\n API.states.options.clear()\n manuallyRenderSlots(slots.default?.())\n },\n {\n immediate: true,\n }\n )\n\n provide(\n selectKey,\n reactive({\n props: _props,\n states: API.states,\n selectRef: API.selectRef,\n optionsArray: API.optionsArray,\n setSelected: API.setSelected,\n handleOptionSelect: API.handleOptionSelect,\n onOptionCreate: API.onOptionCreate,\n onOptionDestroy: API.onOptionDestroy,\n }) as unknown as SelectContext // Avoid TS2589\n )\n\n const selectedLabel = computed(() => {\n if (!props.multiple) {\n return API.states.selectedLabel\n }\n return API.states.selected.map((i) => i.currentLabel as string)\n })\n\n onBeforeUnmount(() => {\n // https://github.com/element-plus/element-plus/issues/21279\n const record = warnHandlerMap.get(instance.appContext)\n if (!record) return\n record.count -= 1\n if (record.count <= 0) {\n instance.appContext.config.warnHandler = record.originalWarnHandler\n warnHandlerMap.delete(instance.appContext)\n }\n })\n\n return {\n ...API,\n modelValue,\n selectedLabel,\n calculatorRef,\n inputStyle,\n getLabel,\n getValue,\n getOptions,\n getDisabled,\n getOptionProps,\n }\n },\n})\n</script>\n"],"mappings":"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"}
@@ -49,8 +49,8 @@ declare const useSelect: (props: SelectProps, emit: SelectEmits) => {
49
49
  };
50
50
  states: {
51
51
  inputValue: string;
52
- options: Map<EpPropMergeType<(BooleanConstructor | StringConstructor | ObjectConstructor | NumberConstructor)[], unknown, unknown>, OptionPublicInstance> & Omit<Map<EpPropMergeType<(BooleanConstructor | StringConstructor | ObjectConstructor | NumberConstructor)[], unknown, unknown>, OptionPublicInstance>, keyof Map<any, any>>;
53
- cachedOptions: Map<EpPropMergeType<(BooleanConstructor | StringConstructor | ObjectConstructor | NumberConstructor)[], unknown, unknown>, OptionPublicInstance> & Omit<Map<EpPropMergeType<(BooleanConstructor | StringConstructor | ObjectConstructor | NumberConstructor)[], unknown, unknown>, OptionPublicInstance>, keyof Map<any, any>>;
52
+ options: Map<EpPropMergeType<(BooleanConstructor | ObjectConstructor | StringConstructor | NumberConstructor)[], unknown, unknown>, OptionPublicInstance> & Omit<Map<EpPropMergeType<(BooleanConstructor | ObjectConstructor | StringConstructor | NumberConstructor)[], unknown, unknown>, OptionPublicInstance>, keyof Map<any, any>>;
53
+ cachedOptions: Map<EpPropMergeType<(BooleanConstructor | ObjectConstructor | StringConstructor | NumberConstructor)[], unknown, unknown>, OptionPublicInstance> & Omit<Map<EpPropMergeType<(BooleanConstructor | ObjectConstructor | StringConstructor | NumberConstructor)[], unknown, unknown>, OptionPublicInstance>, keyof Map<any, any>>;
54
54
  optionValues: OptionValue[];
55
55
  selected: {
56
56
  index: number;
@@ -71,7 +71,7 @@ declare const useSelect: (props: SelectProps, emit: SelectEmits) => {
71
71
  expanded: _$vue.Ref<boolean, boolean>;
72
72
  optionsArray: _$vue.ComputedRef<OptionPublicInstance[]>;
73
73
  hoverOption: _$vue.Ref<any, any>;
74
- selectSize: _$vue.ComputedRef<"" | "default" | "large" | "small">;
74
+ selectSize: _$vue.ComputedRef<"" | "small" | "default" | "large">;
75
75
  filteredOptionsCount: _$vue.ComputedRef<number>;
76
76
  updateTooltip: () => void;
77
77
  updateTagTooltip: () => void;
@@ -90,8 +90,8 @@ declare const useSelect: (props: SelectProps, emit: SelectEmits) => {
90
90
  showClearBtn: _$vue.ComputedRef<boolean>;
91
91
  iconComponent: _$vue.ComputedRef<EpPropMergeType<(new (...args: any[]) => (string | Component) & {}) | (() => string | Component) | (((new (...args: any[]) => (string | Component) & {}) | (() => string | Component)) | null)[], unknown, unknown>>;
92
92
  iconReverse: _$vue.ComputedRef<string>;
93
- validateState: _$vue.ComputedRef<"" | "error" | "success" | "validating">;
94
- validateIcon: _$vue.ComputedRef<"" | Component>;
93
+ validateState: _$vue.ComputedRef<"" | "success" | "error" | "validating">;
94
+ validateIcon: _$vue.ComputedRef<Component | "">;
95
95
  showNewOption: _$vue.ComputedRef<boolean>;
96
96
  updateOptions: () => void;
97
97
  collapseTagSize: _$vue.ComputedRef<"default" | "small">;
@@ -133,11 +133,11 @@ declare const useSelect: (props: SelectProps, emit: SelectEmits) => {
133
133
  }) => void;
134
134
  getOption: (value: OptionValue) => {
135
135
  index: number;
136
- value: EpPropMergeType<(BooleanConstructor | StringConstructor | ObjectConstructor | NumberConstructor)[], unknown, unknown>;
136
+ value: EpPropMergeType<(BooleanConstructor | ObjectConstructor | StringConstructor | NumberConstructor)[], unknown, unknown>;
137
137
  currentLabel: any;
138
138
  } | {
139
139
  index: number;
140
- value: EpPropMergeType<(BooleanConstructor | StringConstructor | ObjectConstructor | NumberConstructor)[], unknown, unknown>;
140
+ value: EpPropMergeType<(BooleanConstructor | ObjectConstructor | StringConstructor | NumberConstructor)[], unknown, unknown>;
141
141
  currentLabel: string | number | boolean;
142
142
  readonly isDisabled: boolean;
143
143
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useSelect.js","names":["useLocale","useId","useNamespace","useFormItem","useFormItemInputId","useEmptyValues","useComposition","useFormDisabled","useFocusController","NOOP","ValidateComponentsMap","useFormSize","isEmpty","isUndefined","isIOS","isClient","isNumber","CHANGE_EVENT","getEventCode","EVENT_CODE","UPDATE_MODEL_EVENT"],"sources":["../../../../../../packages/components/select/src/useSelect.ts"],"sourcesContent":["import {\n computed,\n nextTick,\n onMounted,\n reactive,\n ref,\n useSlots,\n watch,\n watchEffect,\n} from 'vue'\nimport { clamp, findLastIndex, get, isEqual, isNil } from 'lodash-unified'\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n NOOP,\n ValidateComponentsMap,\n ensureArray,\n getEventCode,\n isArray,\n isClient,\n isEmpty,\n isFunction,\n isIOS,\n isNumber,\n isObject,\n isPlainObject,\n isUndefined,\n scrollIntoView,\n} from '@element-plus/utils'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n MINIMUM_INPUT_WIDTH,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useId,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\n\nimport type { Component } from 'vue'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type {\n ScrollbarDirection,\n ScrollbarInstance,\n} from '@element-plus/components/scrollbar'\nimport type { SelectEmits, SelectProps } from './select'\nimport type {\n OptionBasic,\n OptionPublicInstance,\n OptionValue,\n SelectStates,\n} from './type'\n\nexport const useSelect = (props: SelectProps, emit: SelectEmits) => {\n const { t } = useLocale()\n const slots = useSlots()\n const contentId = useId()\n const nsSelect = useNamespace('select')\n const nsInput = useNamespace('input')\n\n const states = reactive<SelectStates>({\n inputValue: '',\n options: new Map(),\n cachedOptions: new Map(),\n optionValues: [], // sorted value of options\n selected: [],\n selectionWidth: 0,\n collapseItemWidth: 0,\n selectedLabel: '',\n hoveringIndex: -1,\n previousQuery: null,\n inputHovering: false,\n menuVisibleOnFocus: false,\n isBeforeHide: false,\n })\n\n // template refs\n const selectRef = ref<HTMLElement>()\n const selectionRef = ref<HTMLElement>()\n const tooltipRef = ref<TooltipInstance>()\n const tagTooltipRef = ref<TooltipInstance>()\n const inputRef = ref<HTMLInputElement>()\n const prefixRef = ref<HTMLElement>()\n const suffixRef = ref<HTMLElement>()\n const menuRef = ref<HTMLElement>()\n const tagMenuRef = ref<HTMLElement>()\n const collapseItemRef = ref<HTMLElement>()\n const scrollbarRef = ref<ScrollbarInstance>()\n // the controller of the expanded popup\n const expanded = ref(false)\n const hoverOption = ref()\n const debouncing = ref(false)\n\n const { form, formItem } = useFormItem()\n const { inputId } = useFormItemInputId(props, {\n formItemContext: formItem,\n })\n const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n } = useComposition({\n afterComposition: (e) => onInput(e),\n })\n\n const selectDisabled = useFormDisabled()\n\n const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n disabled: selectDisabled,\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true\n states.menuVisibleOnFocus = true\n }\n },\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n expanded.value = false\n states.menuVisibleOnFocus = false\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch(NOOP)\n }\n },\n })\n\n const hasModelValue = computed(() => {\n return isArray(props.modelValue)\n ? props.modelValue.length > 0\n : !isEmptyValue(props.modelValue)\n })\n\n const needStatusIcon = computed(() => form?.statusIcon ?? false)\n\n const showClearBtn = computed(() => {\n return (\n props.clearable &&\n !selectDisabled.value &&\n hasModelValue.value &&\n (isFocused.value || states.inputHovering)\n )\n })\n const iconComponent = computed(() =>\n props.remote && props.filterable && !props.remoteShowSuffix\n ? ''\n : props.suffixIcon\n )\n const iconReverse = computed(() =>\n nsSelect.is('reverse', !!(iconComponent.value && expanded.value))\n )\n\n const validateState = computed(() => formItem?.validateState || '')\n const validateIcon = computed(\n () =>\n validateState.value &&\n (ValidateComponentsMap[validateState.value] as Component)\n )\n\n const debounce = computed(() => (props.remote ? props.debounce : 0))\n\n const isRemoteSearchEmpty = computed(\n () => props.remote && !states.inputValue && states.options.size === 0\n )\n\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t('el.select.loading')\n } else {\n if (\n props.filterable &&\n states.inputValue &&\n states.options.size > 0 &&\n filteredOptionsCount.value === 0\n ) {\n return props.noMatchText || t('el.select.noMatch')\n }\n if (states.options.size === 0) {\n return props.noDataText || t('el.select.noData')\n }\n }\n return null\n })\n\n const filteredOptionsCount = computed(\n () => optionsArray.value.filter((option) => option.visible).length\n )\n\n const optionsArray = computed(() => {\n const list = Array.from(states.options.values())\n const newList: OptionPublicInstance[] = []\n states.optionValues.forEach((item) => {\n const index = list.findIndex((i) => i.value === item)\n if (index > -1) {\n newList.push(list[index])\n }\n })\n return newList.length >= list.length ? newList : list\n })\n\n const cachedOptionsArray = computed(() =>\n Array.from(states.cachedOptions.values())\n )\n\n const showNewOption = computed(() => {\n const hasExistingOption = optionsArray.value\n .filter((option) => {\n return !option.created\n })\n .some((option) => {\n return option.currentLabel === states.inputValue\n })\n return (\n props.filterable &&\n props.allowCreate &&\n states.inputValue !== '' &&\n !hasExistingOption\n )\n })\n\n const updateOptions = () => {\n if (props.filterable && isFunction(props.filterMethod)) return\n if (props.filterable && props.remote && isFunction(props.remoteMethod))\n return\n optionsArray.value.forEach((option) => {\n option.updateOption?.(states.inputValue)\n })\n }\n\n const selectSize = useFormSize()\n\n const collapseTagSize = computed(() =>\n ['small'].includes(selectSize.value) ? 'small' : 'default'\n )\n\n const dropdownMenuVisible = computed({\n get() {\n return (\n expanded.value &&\n (props.loading ||\n !isRemoteSearchEmpty.value ||\n (props.remote && !!slots.empty)) &&\n (!debouncing.value ||\n !isEmpty(states.previousQuery) ||\n states.options.size > 0)\n )\n },\n set(val: boolean) {\n expanded.value = val\n },\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (props.multiple && !isUndefined(props.modelValue)) {\n return ensureArray(props.modelValue).length === 0 && !states.inputValue\n }\n const value = isArray(props.modelValue)\n ? props.modelValue[0]\n : props.modelValue\n return props.filterable || isUndefined(value) ? !states.inputValue : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder ?? t('el.select.placeholder')\n return props.multiple || !hasModelValue.value\n ? _placeholder\n : states.selectedLabel\n })\n\n // iOS Safari does not handle click events when a mouseenter event is registered and a DOM-change happens in a child\n // We use a Vue custom event binding to only register the event on non-iOS devices\n // ref.: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n // Github Issue: https://github.com/vuejs/vue/issues/9859\n const mouseEnterEventName = isIOS ? null : 'mouseenter'\n\n watch(\n () => props.modelValue,\n (val, oldVal) => {\n if (props.multiple) {\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = ''\n handleQueryChange('')\n }\n }\n setSelected()\n if (!isEqual(val, oldVal) && props.validateEvent) {\n formItem?.validate('change').catch(NOOP)\n }\n },\n {\n flush: 'post',\n deep: true,\n }\n )\n\n watch(\n () => expanded.value,\n (val) => {\n if (val) {\n handleQueryChange(states.inputValue)\n } else {\n states.inputValue = ''\n states.previousQuery = null\n states.isBeforeHide = true\n states.menuVisibleOnFocus = false\n }\n }\n )\n\n watch(\n // fix `Array.prototype.push/splice/..` cannot trigger non-deep watcher\n // https://github.com/vuejs/vue-next/issues/2116\n () => states.options.entries(),\n () => {\n if (!isClient) return\n // tooltipRef.value?.updatePopper?.()\n setSelected()\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptionsCount.value\n ) {\n checkDefaultFirstOption()\n }\n },\n {\n flush: 'post',\n }\n )\n\n watch([() => states.hoveringIndex, optionsArray], ([val]) => {\n if (isNumber(val) && val > -1) {\n hoverOption.value = optionsArray.value[val] || {}\n } else {\n hoverOption.value = {}\n }\n optionsArray.value.forEach((option) => {\n option.hover = hoverOption.value === option\n })\n })\n\n watchEffect(() => {\n // Anything could cause options changed, then update options\n // If you want to control it by condition, write here\n if (states.isBeforeHide) return\n updateOptions()\n })\n\n const handleQueryChange = (val: string) => {\n if (states.previousQuery === val || isComposing.value) {\n return\n }\n states.previousQuery = val\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val)\n } else if (\n props.filterable &&\n props.remote &&\n isFunction(props.remoteMethod)\n ) {\n props.remoteMethod(val)\n }\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptionsCount.value\n ) {\n nextTick(checkDefaultFirstOption)\n } else {\n nextTick(updateHoveringIndex)\n }\n }\n\n /**\n * find and highlight first option as default selected\n * @remark\n * - if the first option in dropdown list is user-created,\n * it would be at the end of the optionsArray\n * so find it and set hover.\n * (NOTE: there must be only one user-created option in dropdown list with query)\n * - if there's no user-created option in list, just find the first one as usual\n * (NOTE: exclude options that are disabled or in disabled-group)\n */\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = optionsArray.value.filter(\n (n) => n.visible && !n.disabled && !n.states.groupDisabled\n )\n const userCreatedOption = optionsInDropdown.find((n) => n.created)\n const firstOriginOption = optionsInDropdown[0]\n const valueList = optionsArray.value.map((item) => item.value)\n states.hoveringIndex = getValueIndex(\n valueList,\n userCreatedOption || firstOriginOption\n )\n }\n\n const setSelected = () => {\n if (!props.multiple) {\n const value = isArray(props.modelValue)\n ? props.modelValue[0]\n : props.modelValue\n const option = getOption(value)\n states.selectedLabel = option.currentLabel\n states.selected = [option]\n return\n } else {\n states.selectedLabel = ''\n }\n const result: SelectStates['selected'] = []\n if (!isUndefined(props.modelValue)) {\n ensureArray(props.modelValue).forEach((value) => {\n result.push(getOption(value))\n })\n }\n states.selected = result\n }\n\n const getOption = (value: OptionValue) => {\n let option\n const isObjectValue = isPlainObject(value)\n\n for (let i = states.cachedOptions.size - 1; i >= 0; i--) {\n const cachedOption = cachedOptionsArray.value[i]\n const isEqualValue = isObjectValue\n ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey)\n : cachedOption.value === value\n if (isEqualValue) {\n option = {\n index: optionsArray.value\n .filter((opt) => !opt.created)\n .indexOf(cachedOption),\n value,\n currentLabel: cachedOption.currentLabel,\n get isDisabled() {\n return cachedOption.isDisabled\n },\n }\n break\n }\n }\n if (option) return option\n\n const existingSelected = states.selected.find((item) =>\n isObjectValue\n ? get(item.value, props.valueKey) === get(value, props.valueKey)\n : item.value === value\n )\n const label = isObjectValue\n ? value.label\n : existingSelected\n ? existingSelected.currentLabel\n : (value ?? '')\n const newOption = {\n index: -1,\n value,\n currentLabel: label,\n }\n return newOption\n }\n\n const updateHoveringIndex = () => {\n const length = states.selected.length\n if (length > 0) {\n const lastOption = states.selected[length - 1]\n states.hoveringIndex = optionsArray.value.findIndex(\n (item) => getValueKey(lastOption) === getValueKey(item)\n )\n } else {\n states.hoveringIndex = -1\n }\n }\n\n const resetSelectionWidth = () => {\n states.selectionWidth = Number.parseFloat(\n window.getComputedStyle(selectionRef.value!).width\n )\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value!.getBoundingClientRect().width\n }\n\n const updateTooltip = () => {\n tooltipRef.value?.updatePopper?.()\n }\n\n const updateTagTooltip = () => {\n tagTooltipRef.value?.updatePopper?.()\n }\n\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true\n }\n handleQueryChange(states.inputValue)\n }\n\n const onInput = (event: Event) => {\n states.inputValue = (event.target as HTMLInputElement).value\n if (props.remote) {\n debouncing.value = true\n debouncedOnInputChange()\n } else {\n return onInputChange()\n }\n }\n\n const debouncedOnInputChange = useDebounceFn(() => {\n onInputChange()\n debouncing.value = false\n }, debounce)\n\n const emitChange = (val: OptionValue | OptionValue[]) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val)\n }\n }\n\n const getLastNotDisabledIndex = (value: OptionValue[]) =>\n findLastIndex(value, (it) => {\n const option = states.cachedOptions.get(it)\n return !option?.disabled && !option?.states.groupDisabled\n })\n\n const deletePrevTag = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n if (!props.multiple) return\n if (code === EVENT_CODE.delete) return\n if ((e.target as HTMLInputElement).value.length <= 0) {\n const value = ensureArray(props.modelValue).slice()\n const lastNotDisabledIndex = getLastNotDisabledIndex(value)\n if (lastNotDisabledIndex < 0) return\n const removeTagValue = value[lastNotDisabledIndex]\n value.splice(lastNotDisabledIndex, 1)\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n emit('remove-tag', removeTagValue)\n }\n }\n\n const deleteTag = (event: MouseEvent, tag: OptionBasic) => {\n const index = states.selected.indexOf(tag)\n if (index > -1 && !selectDisabled.value) {\n const value = ensureArray(props.modelValue).slice()\n value.splice(index, 1)\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n emit('remove-tag', tag.value)\n }\n event.stopPropagation()\n focus()\n }\n\n const deleteSelected = (event: Event) => {\n event.stopPropagation()\n const value = props.multiple ? [] : valueOnClear.value\n if (props.multiple) {\n for (const item of states.selected) {\n if (item.isDisabled) value.push(item.value)\n }\n }\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n states.hoveringIndex = -1\n expanded.value = false\n emit('clear')\n focus()\n }\n\n const handleOptionSelect = (option: OptionPublicInstance) => {\n if (props.multiple) {\n const value = ensureArray(props.modelValue ?? []).slice()\n const optionIndex = getValueIndex(value, option)\n if (optionIndex > -1) {\n value.splice(optionIndex, 1)\n } else if (\n props.multipleLimit <= 0 ||\n value.length < props.multipleLimit\n ) {\n value.push(option.value)\n }\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n if (option.created) {\n handleQueryChange('')\n }\n if (props.filterable && (option.created || !props.reserveKeyword)) {\n states.inputValue = ''\n }\n } else {\n !isEqual(props.modelValue, option.value) &&\n emit(UPDATE_MODEL_EVENT, option.value)\n emitChange(option.value)\n expanded.value = false\n }\n focus()\n if (expanded.value) return\n nextTick(() => {\n scrollToOption(option)\n })\n }\n\n const getValueIndex = (arr: OptionValue[], option: OptionPublicInstance) => {\n if (isUndefined(option)) return -1\n if (!isObject(option.value)) return arr.indexOf(option.value)\n\n return arr.findIndex((item) => {\n return isEqual(get(item, props.valueKey), getValueKey(option))\n })\n }\n\n const scrollToOption = (\n option:\n | OptionPublicInstance\n | OptionPublicInstance[]\n | SelectStates['selected']\n ) => {\n const targetOption = isArray(option) ? option[option.length - 1] : option\n let target = null\n\n if (!isNil(targetOption?.value)) {\n const options = optionsArray.value.filter(\n (item) => item.value === targetOption.value\n )\n if (options.length > 0) {\n target = options[0].$el\n }\n }\n\n if (tooltipRef.value && target) {\n const menu = tooltipRef.value?.popperRef?.contentRef?.querySelector?.(\n `.${nsSelect.be('dropdown', 'wrap')}`\n )\n if (menu) {\n scrollIntoView(menu as HTMLElement, target)\n }\n }\n scrollbarRef.value?.handleScroll()\n }\n\n const onOptionCreate = (vm: OptionPublicInstance) => {\n states.options.set(vm.value, vm)\n states.cachedOptions.set(vm.value, vm)\n }\n\n const onOptionDestroy = (key: OptionValue, vm: OptionPublicInstance) => {\n if (states.options.get(key) === vm) {\n states.options.delete(key)\n }\n }\n\n const popperRef = computed(() => {\n return tooltipRef.value?.popperRef?.contentRef\n })\n\n const handleMenuEnter = () => {\n states.isBeforeHide = false\n nextTick(() => {\n scrollbarRef.value?.update()\n scrollToOption(states.selected)\n })\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n if (expanded.value) {\n expanded.value = false\n nextTick(() => inputRef.value?.blur())\n return\n }\n inputRef.value?.blur()\n }\n\n const handleClearClick = (event: Event) => {\n deleteSelected(event)\n }\n\n const handleClickOutside = (event: Event) => {\n expanded.value = false\n\n if (isFocused.value) {\n const _event = new FocusEvent('blur', event)\n nextTick(() => handleBlur(_event))\n }\n }\n\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = ''\n } else {\n expanded.value = false\n }\n }\n\n const toggleMenu = (event?: Event) => {\n if (\n selectDisabled.value ||\n (props.filterable &&\n expanded.value &&\n event &&\n !suffixRef.value?.contains(event.target as Node))\n )\n return\n\n // We only set the inputHovering state to true on mouseenter event on iOS devices\n // To keep the state updated we set it here to true\n if (isIOS) states.inputHovering = true\n\n if (states.menuVisibleOnFocus) {\n // controlled by automaticDropdown\n states.menuVisibleOnFocus = false\n } else {\n expanded.value = !expanded.value\n }\n }\n\n const selectOption = () => {\n if (!expanded.value) {\n toggleMenu()\n } else {\n const option = optionsArray.value[states.hoveringIndex]\n if (option && !option.isDisabled) {\n handleOptionSelect(option)\n }\n }\n }\n\n const getValueKey = (\n item: OptionPublicInstance | SelectStates['selected'][0]\n ) => {\n return isObject(item.value) ? get(item.value, props.valueKey) : item.value\n }\n\n const optionsAllDisabled = computed(() =>\n optionsArray.value\n .filter((option) => option.visible)\n .every((option) => option.isDisabled)\n )\n\n const showTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.selected.slice(0, props.maxCollapseTags)\n : states.selected\n })\n\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.selected.slice(props.maxCollapseTags)\n : []\n })\n\n const navigateOptions = (direction: 'prev' | 'next') => {\n if (!expanded.value) {\n expanded.value = true\n return\n }\n if (\n states.options.size === 0 ||\n filteredOptionsCount.value === 0 ||\n isComposing.value\n )\n return\n\n if (!optionsAllDisabled.value) {\n if (direction === 'next') {\n states.hoveringIndex++\n if (states.hoveringIndex === states.options.size) {\n states.hoveringIndex = 0\n }\n } else if (direction === 'prev') {\n states.hoveringIndex--\n if (states.hoveringIndex < 0) {\n states.hoveringIndex = states.options.size - 1\n }\n }\n const option = optionsArray.value[states.hoveringIndex]\n if (option.isDisabled || !option.visible) {\n navigateOptions(direction)\n }\n nextTick(() => scrollToOption(hoverOption.value))\n }\n }\n\n const findFocusableIndex = (\n arr: any[],\n start: number,\n step: number,\n len: number\n ) => {\n for (let i = start; i >= 0 && i < len; i += step) {\n const obj = arr[i]\n if (!obj?.isDisabled && obj?.visible) {\n return i\n }\n }\n return null\n }\n\n const focusOption = (targetIndex: number, mode: 'up' | 'down') => {\n const len = states.options.size\n if (len === 0) return\n const start = clamp(targetIndex, 0, len - 1)\n const options = optionsArray.value\n const direction = mode === 'up' ? -1 : 1\n const newIndex =\n findFocusableIndex(options, start, direction, len) ??\n findFocusableIndex(options, start - direction, -direction, len)\n\n if (newIndex != null) {\n states.hoveringIndex = newIndex\n nextTick(() => scrollToOption(hoverOption.value))\n }\n }\n\n const handleKeydown = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n let isPreventDefault = true\n switch (code) {\n case EVENT_CODE.up:\n navigateOptions('prev')\n break\n case EVENT_CODE.down:\n navigateOptions('next')\n break\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n if (!isComposing.value) {\n selectOption()\n }\n break\n case EVENT_CODE.esc:\n handleEsc()\n break\n case EVENT_CODE.backspace:\n isPreventDefault = false\n deletePrevTag(e)\n return\n case EVENT_CODE.home:\n if (!expanded.value) return\n focusOption(0, 'down')\n break\n case EVENT_CODE.end:\n if (!expanded.value) return\n focusOption(states.options.size - 1, 'up')\n break\n case EVENT_CODE.pageUp:\n if (!expanded.value) return\n focusOption(states.hoveringIndex - 10, 'up')\n break\n case EVENT_CODE.pageDown:\n if (!expanded.value) return\n focusOption(states.hoveringIndex + 10, 'down')\n break\n default:\n isPreventDefault = false\n break\n }\n if (isPreventDefault) {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n\n const getGapWidth = () => {\n if (!selectionRef.value) return 0\n const style = window.getComputedStyle(selectionRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n // computed style\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth()\n const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.selectionWidth -\n states.collapseItemWidth -\n gapWidth -\n inputSlotWidth\n : states.selectionWidth - inputSlotWidth\n return { maxWidth: `${maxWidth}px` }\n })\n\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` }\n })\n\n const popupScroll = (data: { scrollTop: number; scrollLeft: number }) => {\n emit('popup-scroll', data)\n }\n\n const endReached = (direction: ScrollbarDirection) => {\n emit('end-reached', direction)\n }\n\n useResizeObserver(selectionRef, resetSelectionWidth)\n useResizeObserver(wrapperRef, updateTooltip)\n useResizeObserver(tagMenuRef, updateTagTooltip)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n // #21498\n let stop: (() => void) | undefined\n watch(\n () => dropdownMenuVisible.value,\n (newVal) => {\n if (newVal) {\n stop = useResizeObserver(menuRef, updateTooltip).stop\n } else {\n stop?.()\n stop = undefined\n }\n emit('visible-change', newVal)\n }\n )\n\n onMounted(() => {\n setSelected()\n })\n\n return {\n inputId,\n contentId,\n nsSelect,\n nsInput,\n states,\n isFocused,\n expanded,\n optionsArray,\n hoverOption,\n selectSize,\n filteredOptionsCount,\n updateTooltip,\n updateTagTooltip,\n debouncedOnInputChange,\n onInput,\n deletePrevTag,\n deleteTag,\n deleteSelected,\n handleOptionSelect,\n scrollToOption,\n hasModelValue,\n shouldShowPlaceholder,\n currentPlaceholder,\n mouseEnterEventName,\n needStatusIcon,\n showClearBtn,\n iconComponent,\n iconReverse,\n validateState,\n validateIcon,\n showNewOption,\n updateOptions,\n collapseTagSize,\n setSelected,\n selectDisabled,\n emptyText,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n handleKeydown,\n onOptionCreate,\n onOptionDestroy,\n handleMenuEnter,\n focus,\n blur,\n handleClearClick,\n handleClickOutside,\n handleEsc,\n toggleMenu,\n selectOption,\n getValueKey,\n navigateOptions,\n dropdownMenuVisible,\n showTagList,\n collapseTagList,\n popupScroll,\n getOption,\n endReached,\n\n // computed style\n tagStyle,\n collapseTagStyle,\n\n // DOM ref\n popperRef,\n inputRef,\n tooltipRef,\n tagTooltipRef,\n prefixRef,\n suffixRef,\n selectRef,\n wrapperRef,\n selectionRef,\n scrollbarRef,\n menuRef,\n tagMenuRef,\n collapseItemRef,\n }\n}\n"],"mappings":"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OAAO,iBAAiB,eACC,KAAK;GACpC;CAEF,MAAM,oBAAA,GAAA,IAAA,gBAAkC;EACtC,OAAO,EAAE,UAAU,GAAG,OAAO,eAAe,KAAK;GACjD;CAEF,MAAM,eAAe,SAAoD;EACvE,KAAK,gBAAgB,KAAK;;CAG5B,MAAM,cAAc,cAAkC;EACpD,KAAK,eAAe,UAAU;;CAGhC,CAAA,GAAA,aAAA,mBAAkB,cAAc,oBAAoB;CACpD,CAAA,GAAA,aAAA,mBAAkB,YAAY,cAAc;CAC5C,CAAA,GAAA,aAAA,mBAAkB,YAAY,iBAAiB;CAC/C,CAAA,GAAA,aAAA,mBAAkB,iBAAiB,uBAAuB;CAG1D,IAAI;CACJ,CAAA,GAAA,IAAA,aACQ,oBAAoB,QACzB,WAAW;EACV,IAAI,QACF,QAAA,GAAA,aAAA,mBAAyB,SAAS,cAAc,CAAC;OAC5C;GACL,QAAQ;GACR,OAAO,KAAA;;EAET,KAAK,kBAAkB,OAAO;GAEjC;CAED,CAAA,GAAA,IAAA,iBAAgB;EACd,aAAa;GACb;CAEF,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
1
+ {"version":3,"file":"useSelect.js","names":["useLocale","useId","useNamespace","useFormItem","useFormItemInputId","useEmptyValues","useComposition","useFormDisabled","useFocusController","NOOP","ValidateComponentsMap","useFormSize","isEmpty","isUndefined","isIOS","isClient","isNumber","CHANGE_EVENT","getEventCode","EVENT_CODE","UPDATE_MODEL_EVENT"],"sources":["../../../../../../packages/components/select/src/useSelect.ts"],"sourcesContent":["import {\n computed,\n nextTick,\n onMounted,\n reactive,\n ref,\n useSlots,\n watch,\n watchEffect,\n} from 'vue'\nimport { clamp, findLastIndex, get, isEqual, isNil } from 'lodash-unified'\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n NOOP,\n ValidateComponentsMap,\n ensureArray,\n getEventCode,\n isArray,\n isClient,\n isEmpty,\n isFunction,\n isIOS,\n isNumber,\n isObject,\n isPlainObject,\n isUndefined,\n scrollIntoView,\n} from '@element-plus/utils'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n MINIMUM_INPUT_WIDTH,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useId,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\n\nimport type { Component } from 'vue'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type {\n ScrollbarDirection,\n ScrollbarInstance,\n} from '@element-plus/components/scrollbar'\nimport type { SelectEmits, SelectProps } from './select'\nimport type {\n OptionBasic,\n OptionPublicInstance,\n OptionValue,\n SelectStates,\n} from './type'\n\nexport const useSelect = (props: SelectProps, emit: SelectEmits) => {\n const { t } = useLocale()\n const slots = useSlots()\n const contentId = useId()\n const nsSelect = useNamespace('select')\n const nsInput = useNamespace('input')\n\n const states = reactive<SelectStates>({\n inputValue: '',\n options: new Map(),\n cachedOptions: new Map(),\n optionValues: [], // sorted value of options\n selected: [],\n selectionWidth: 0,\n collapseItemWidth: 0,\n selectedLabel: '',\n hoveringIndex: -1,\n previousQuery: null,\n inputHovering: false,\n menuVisibleOnFocus: false,\n isBeforeHide: false,\n })\n\n // template refs\n const selectRef = ref<HTMLElement>()\n const selectionRef = ref<HTMLElement>()\n const tooltipRef = ref<TooltipInstance>()\n const tagTooltipRef = ref<TooltipInstance>()\n const inputRef = ref<HTMLInputElement>()\n const prefixRef = ref<HTMLElement>()\n const suffixRef = ref<HTMLElement>()\n const menuRef = ref<HTMLElement>()\n const tagMenuRef = ref<HTMLElement>()\n const collapseItemRef = ref<HTMLElement>()\n const scrollbarRef = ref<ScrollbarInstance>()\n // the controller of the expanded popup\n const expanded = ref(false)\n const hoverOption = ref()\n const debouncing = ref(false)\n\n const { form, formItem } = useFormItem()\n const { inputId } = useFormItemInputId(props, {\n formItemContext: formItem,\n })\n const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n } = useComposition({\n afterComposition: (e) => onInput(e),\n })\n\n const selectDisabled = useFormDisabled()\n\n const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n disabled: selectDisabled,\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true\n states.menuVisibleOnFocus = true\n }\n },\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n expanded.value = false\n states.menuVisibleOnFocus = false\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch(NOOP)\n }\n },\n })\n\n const hasModelValue = computed(() => {\n return isArray(props.modelValue)\n ? props.modelValue.length > 0\n : !isEmptyValue(props.modelValue)\n })\n\n const needStatusIcon = computed(() => form?.statusIcon ?? false)\n\n const showClearBtn = computed(() => {\n return (\n props.clearable &&\n !selectDisabled.value &&\n hasModelValue.value &&\n (isFocused.value || states.inputHovering)\n )\n })\n const iconComponent = computed(() =>\n props.remote && props.filterable && !props.remoteShowSuffix\n ? ''\n : props.suffixIcon\n )\n const iconReverse = computed(() =>\n nsSelect.is('reverse', !!(iconComponent.value && expanded.value))\n )\n\n const validateState = computed(() => formItem?.validateState || '')\n const validateIcon = computed(\n () =>\n validateState.value &&\n (ValidateComponentsMap[validateState.value] as Component)\n )\n\n const debounce = computed(() => (props.remote ? props.debounce : 0))\n\n const isRemoteSearchEmpty = computed(\n () => props.remote && !states.inputValue && states.options.size === 0\n )\n\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t('el.select.loading')\n } else {\n if (\n props.filterable &&\n states.inputValue &&\n states.options.size > 0 &&\n filteredOptionsCount.value === 0\n ) {\n return props.noMatchText || t('el.select.noMatch')\n }\n if (states.options.size === 0) {\n return props.noDataText || t('el.select.noData')\n }\n }\n return null\n })\n\n const filteredOptionsCount = computed(\n () => optionsArray.value.filter((option) => option.visible).length\n )\n\n const optionsArray = computed(() => {\n const list = Array.from(states.options.values())\n const newList: OptionPublicInstance[] = []\n states.optionValues.forEach((item) => {\n const index = list.findIndex((i) => i.value === item)\n if (index > -1) {\n newList.push(list[index])\n }\n })\n return newList.length >= list.length ? newList : list\n })\n\n const cachedOptionsArray = computed(() =>\n Array.from(states.cachedOptions.values())\n )\n\n const showNewOption = computed(() => {\n const hasExistingOption = optionsArray.value\n .filter((option) => {\n return !option.created\n })\n .some((option) => {\n return option.currentLabel === states.inputValue\n })\n return (\n props.filterable &&\n props.allowCreate &&\n states.inputValue !== '' &&\n !hasExistingOption\n )\n })\n\n const updateOptions = () => {\n if (props.filterable && isFunction(props.filterMethod)) return\n if (props.filterable && props.remote && isFunction(props.remoteMethod))\n return\n optionsArray.value.forEach((option) => {\n option.updateOption?.(states.inputValue)\n })\n }\n\n const selectSize = useFormSize()\n\n const collapseTagSize = computed(() =>\n ['small'].includes(selectSize.value) ? 'small' : 'default'\n )\n\n const dropdownMenuVisible = computed({\n get() {\n return (\n expanded.value &&\n (props.loading ||\n !isRemoteSearchEmpty.value ||\n (props.remote && !!slots.empty)) &&\n (!debouncing.value ||\n !isEmpty(states.previousQuery) ||\n states.options.size > 0)\n )\n },\n set(val: boolean) {\n expanded.value = val\n },\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (props.multiple && !isUndefined(props.modelValue)) {\n return ensureArray(props.modelValue).length === 0 && !states.inputValue\n }\n const value = isArray(props.modelValue)\n ? props.modelValue[0]\n : props.modelValue\n return props.filterable || isUndefined(value) ? !states.inputValue : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder ?? t('el.select.placeholder')\n return props.multiple || !hasModelValue.value\n ? _placeholder\n : states.selectedLabel\n })\n\n // iOS Safari does not handle click events when a mouseenter event is registered and a DOM-change happens in a child\n // We use a Vue custom event binding to only register the event on non-iOS devices\n // ref.: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n // Github Issue: https://github.com/vuejs/vue/issues/9859\n const mouseEnterEventName = isIOS ? null : 'mouseenter'\n\n watch(\n () => props.modelValue,\n (val, oldVal) => {\n if (props.multiple) {\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = ''\n handleQueryChange('')\n }\n }\n setSelected()\n if (!isEqual(val, oldVal) && props.validateEvent) {\n formItem?.validate('change').catch(NOOP)\n }\n },\n {\n flush: 'post',\n deep: true,\n }\n )\n\n watch(\n () => expanded.value,\n (val) => {\n if (val) {\n handleQueryChange(states.inputValue)\n } else {\n states.inputValue = ''\n states.previousQuery = null\n states.isBeforeHide = true\n states.menuVisibleOnFocus = false\n }\n }\n )\n\n watch(\n // fix `Array.prototype.push/splice/..` cannot trigger non-deep watcher\n // https://github.com/vuejs/vue-next/issues/2116\n () => states.options.entries(),\n () => {\n if (!isClient) return\n // tooltipRef.value?.updatePopper?.()\n setSelected()\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptionsCount.value\n ) {\n checkDefaultFirstOption()\n }\n },\n {\n flush: 'post',\n }\n )\n\n watch([() => states.hoveringIndex, optionsArray], ([val]) => {\n if (isNumber(val) && val > -1) {\n hoverOption.value = optionsArray.value[val] || {}\n } else {\n hoverOption.value = {}\n }\n optionsArray.value.forEach((option) => {\n option.hover = hoverOption.value === option\n })\n })\n\n watchEffect(() => {\n // Anything could cause options changed, then update options\n // If you want to control it by condition, write here\n if (states.isBeforeHide) return\n updateOptions()\n })\n\n const handleQueryChange = (val: string) => {\n if (states.previousQuery === val || isComposing.value) {\n return\n }\n states.previousQuery = val\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val)\n } else if (\n props.filterable &&\n props.remote &&\n isFunction(props.remoteMethod)\n ) {\n props.remoteMethod(val)\n }\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptionsCount.value\n ) {\n nextTick(checkDefaultFirstOption)\n } else {\n nextTick(updateHoveringIndex)\n }\n }\n\n /**\n * find and highlight first option as default selected\n * @remark\n * - if the first option in dropdown list is user-created,\n * it would be at the end of the optionsArray\n * so find it and set hover.\n * (NOTE: there must be only one user-created option in dropdown list with query)\n * - if there's no user-created option in list, just find the first one as usual\n * (NOTE: exclude options that are disabled or in disabled-group)\n */\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = optionsArray.value.filter(\n (n) => n.visible && !n.disabled && !n.states.groupDisabled\n )\n const userCreatedOption = optionsInDropdown.find((n) => n.created)\n const firstOriginOption = optionsInDropdown[0]\n const valueList = optionsArray.value.map((item) => item.value)\n states.hoveringIndex = getValueIndex(\n valueList,\n userCreatedOption || firstOriginOption\n )\n }\n\n const setSelected = () => {\n if (!props.multiple) {\n const value = isArray(props.modelValue)\n ? props.modelValue[0]\n : props.modelValue\n const option = getOption(value)\n states.selectedLabel = option.currentLabel\n states.selected = [option]\n return\n } else {\n states.selectedLabel = ''\n }\n const result: SelectStates['selected'] = []\n if (!isUndefined(props.modelValue)) {\n ensureArray(props.modelValue).forEach((value) => {\n result.push(getOption(value))\n })\n }\n states.selected = result\n }\n\n const getOption = (value: OptionValue) => {\n let option\n const isObjectValue = isPlainObject(value)\n\n for (let i = states.cachedOptions.size - 1; i >= 0; i--) {\n const cachedOption = cachedOptionsArray.value[i]\n const isEqualValue = isObjectValue\n ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey)\n : cachedOption.value === value\n if (isEqualValue) {\n option = {\n index: optionsArray.value\n .filter((opt) => !opt.created)\n .indexOf(cachedOption),\n value,\n currentLabel: cachedOption.currentLabel,\n get isDisabled() {\n return cachedOption.isDisabled\n },\n }\n break\n }\n }\n if (option) return option\n\n const existingSelected = states.selected.find((item) =>\n isObjectValue\n ? get(item.value, props.valueKey) === get(value, props.valueKey)\n : item.value === value\n )\n const label = isObjectValue\n ? value.label\n : existingSelected\n ? existingSelected.currentLabel\n : (value ?? '')\n const newOption = {\n index: -1,\n value,\n currentLabel: label,\n }\n return newOption\n }\n\n const updateHoveringIndex = () => {\n const length = states.selected.length\n if (length > 0) {\n const lastOption = states.selected[length - 1]\n states.hoveringIndex = optionsArray.value.findIndex(\n (item) => getValueKey(lastOption) === getValueKey(item)\n )\n } else {\n states.hoveringIndex = -1\n }\n }\n\n const resetSelectionWidth = () => {\n states.selectionWidth = Number.parseFloat(\n window.getComputedStyle(selectionRef.value!).width\n )\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value!.getBoundingClientRect().width\n }\n\n const updateTooltip = () => {\n tooltipRef.value?.updatePopper?.()\n }\n\n const updateTagTooltip = () => {\n tagTooltipRef.value?.updatePopper?.()\n }\n\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true\n }\n handleQueryChange(states.inputValue)\n }\n\n const onInput = (event: Event) => {\n states.inputValue = (event.target as HTMLInputElement).value\n if (props.remote) {\n debouncing.value = true\n debouncedOnInputChange()\n } else {\n return onInputChange()\n }\n }\n\n const debouncedOnInputChange = useDebounceFn(() => {\n onInputChange()\n debouncing.value = false\n }, debounce)\n\n const emitChange = (val: OptionValue | OptionValue[]) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val)\n }\n }\n\n const getLastNotDisabledIndex = (value: OptionValue[]) =>\n findLastIndex(value, (it) => {\n const option = states.cachedOptions.get(it)\n return !option?.disabled && !option?.states.groupDisabled\n })\n\n const deletePrevTag = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n if (!props.multiple) return\n if (code === EVENT_CODE.delete) return\n if ((e.target as HTMLInputElement).value.length <= 0) {\n const value = ensureArray(props.modelValue).slice()\n const lastNotDisabledIndex = getLastNotDisabledIndex(value)\n if (lastNotDisabledIndex < 0) return\n const removeTagValue = value[lastNotDisabledIndex]\n value.splice(lastNotDisabledIndex, 1)\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n emit('remove-tag', removeTagValue)\n }\n }\n\n const deleteTag = (event: MouseEvent, tag: OptionBasic) => {\n const index = states.selected.indexOf(tag)\n if (index > -1 && !selectDisabled.value) {\n const value = ensureArray(props.modelValue).slice()\n value.splice(index, 1)\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n emit('remove-tag', tag.value)\n }\n event.stopPropagation()\n focus()\n }\n\n const deleteSelected = (event: Event) => {\n event.stopPropagation()\n const value = props.multiple ? [] : valueOnClear.value\n if (props.multiple) {\n for (const item of states.selected) {\n if (item.isDisabled) value.push(item.value)\n }\n }\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n states.hoveringIndex = -1\n expanded.value = false\n emit('clear')\n focus()\n }\n\n const handleOptionSelect = (option: OptionPublicInstance) => {\n if (props.multiple) {\n const value = ensureArray(props.modelValue ?? []).slice()\n const optionIndex = getValueIndex(value, option)\n if (optionIndex > -1) {\n value.splice(optionIndex, 1)\n } else if (\n props.multipleLimit <= 0 ||\n value.length < props.multipleLimit\n ) {\n value.push(option.value)\n }\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n if (option.created) {\n handleQueryChange('')\n }\n if (props.filterable && (option.created || !props.reserveKeyword)) {\n states.inputValue = ''\n }\n } else {\n !isEqual(props.modelValue, option.value) &&\n emit(UPDATE_MODEL_EVENT, option.value)\n emitChange(option.value)\n expanded.value = false\n }\n focus()\n if (expanded.value) return\n nextTick(() => {\n scrollToOption(option)\n })\n }\n\n const getValueIndex = (arr: OptionValue[], option: OptionPublicInstance) => {\n if (isUndefined(option)) return -1\n if (!isObject(option.value)) return arr.indexOf(option.value)\n\n return arr.findIndex((item) => {\n return isEqual(get(item, props.valueKey), getValueKey(option))\n })\n }\n\n const scrollToOption = (\n option:\n OptionPublicInstance | OptionPublicInstance[] | SelectStates['selected']\n ) => {\n const targetOption = isArray(option) ? option[option.length - 1] : option\n let target = null\n\n if (!isNil(targetOption?.value)) {\n const options = optionsArray.value.filter(\n (item) => item.value === targetOption.value\n )\n if (options.length > 0) {\n target = options[0].$el\n }\n }\n\n if (tooltipRef.value && target) {\n const menu = tooltipRef.value?.popperRef?.contentRef?.querySelector?.(\n `.${nsSelect.be('dropdown', 'wrap')}`\n )\n if (menu) {\n scrollIntoView(menu as HTMLElement, target)\n }\n }\n scrollbarRef.value?.handleScroll()\n }\n\n const onOptionCreate = (vm: OptionPublicInstance) => {\n states.options.set(vm.value, vm)\n states.cachedOptions.set(vm.value, vm)\n }\n\n const onOptionDestroy = (key: OptionValue, vm: OptionPublicInstance) => {\n if (states.options.get(key) === vm) {\n states.options.delete(key)\n }\n }\n\n const popperRef = computed(() => {\n return tooltipRef.value?.popperRef?.contentRef\n })\n\n const handleMenuEnter = () => {\n states.isBeforeHide = false\n nextTick(() => {\n scrollbarRef.value?.update()\n scrollToOption(states.selected)\n })\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n if (expanded.value) {\n expanded.value = false\n nextTick(() => inputRef.value?.blur())\n return\n }\n inputRef.value?.blur()\n }\n\n const handleClearClick = (event: Event) => {\n deleteSelected(event)\n }\n\n const handleClickOutside = (event: Event) => {\n expanded.value = false\n\n if (isFocused.value) {\n const _event = new FocusEvent('blur', event)\n nextTick(() => handleBlur(_event))\n }\n }\n\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = ''\n } else {\n expanded.value = false\n }\n }\n\n const toggleMenu = (event?: Event) => {\n if (\n selectDisabled.value ||\n (props.filterable &&\n expanded.value &&\n event &&\n !suffixRef.value?.contains(event.target as Node))\n )\n return\n\n // We only set the inputHovering state to true on mouseenter event on iOS devices\n // To keep the state updated we set it here to true\n if (isIOS) states.inputHovering = true\n\n if (states.menuVisibleOnFocus) {\n // controlled by automaticDropdown\n states.menuVisibleOnFocus = false\n } else {\n expanded.value = !expanded.value\n }\n }\n\n const selectOption = () => {\n if (!expanded.value) {\n toggleMenu()\n } else {\n const option = optionsArray.value[states.hoveringIndex]\n if (option && !option.isDisabled) {\n handleOptionSelect(option)\n }\n }\n }\n\n const getValueKey = (\n item: OptionPublicInstance | SelectStates['selected'][0]\n ) => {\n return isObject(item.value) ? get(item.value, props.valueKey) : item.value\n }\n\n const optionsAllDisabled = computed(() =>\n optionsArray.value\n .filter((option) => option.visible)\n .every((option) => option.isDisabled)\n )\n\n const showTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.selected.slice(0, props.maxCollapseTags)\n : states.selected\n })\n\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.selected.slice(props.maxCollapseTags)\n : []\n })\n\n const navigateOptions = (direction: 'prev' | 'next') => {\n if (!expanded.value) {\n expanded.value = true\n return\n }\n if (\n states.options.size === 0 ||\n filteredOptionsCount.value === 0 ||\n isComposing.value\n )\n return\n\n if (!optionsAllDisabled.value) {\n if (direction === 'next') {\n states.hoveringIndex++\n if (states.hoveringIndex === states.options.size) {\n states.hoveringIndex = 0\n }\n } else if (direction === 'prev') {\n states.hoveringIndex--\n if (states.hoveringIndex < 0) {\n states.hoveringIndex = states.options.size - 1\n }\n }\n const option = optionsArray.value[states.hoveringIndex]\n if (option.isDisabled || !option.visible) {\n navigateOptions(direction)\n }\n nextTick(() => scrollToOption(hoverOption.value))\n }\n }\n\n const findFocusableIndex = (\n arr: any[],\n start: number,\n step: number,\n len: number\n ) => {\n for (let i = start; i >= 0 && i < len; i += step) {\n const obj = arr[i]\n if (!obj?.isDisabled && obj?.visible) {\n return i\n }\n }\n return null\n }\n\n const focusOption = (targetIndex: number, mode: 'up' | 'down') => {\n const len = states.options.size\n if (len === 0) return\n const start = clamp(targetIndex, 0, len - 1)\n const options = optionsArray.value\n const direction = mode === 'up' ? -1 : 1\n const newIndex =\n findFocusableIndex(options, start, direction, len) ??\n findFocusableIndex(options, start - direction, -direction, len)\n\n if (newIndex != null) {\n states.hoveringIndex = newIndex\n nextTick(() => scrollToOption(hoverOption.value))\n }\n }\n\n const handleKeydown = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n let isPreventDefault = true\n switch (code) {\n case EVENT_CODE.up:\n navigateOptions('prev')\n break\n case EVENT_CODE.down:\n navigateOptions('next')\n break\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n if (!isComposing.value) {\n selectOption()\n }\n break\n case EVENT_CODE.esc:\n handleEsc()\n break\n case EVENT_CODE.backspace:\n isPreventDefault = false\n deletePrevTag(e)\n return\n case EVENT_CODE.home:\n if (!expanded.value) return\n focusOption(0, 'down')\n break\n case EVENT_CODE.end:\n if (!expanded.value) return\n focusOption(states.options.size - 1, 'up')\n break\n case EVENT_CODE.pageUp:\n if (!expanded.value) return\n focusOption(states.hoveringIndex - 10, 'up')\n break\n case EVENT_CODE.pageDown:\n if (!expanded.value) return\n focusOption(states.hoveringIndex + 10, 'down')\n break\n default:\n isPreventDefault = false\n break\n }\n if (isPreventDefault) {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n\n const getGapWidth = () => {\n if (!selectionRef.value) return 0\n const style = window.getComputedStyle(selectionRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n // computed style\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth()\n const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.selectionWidth -\n states.collapseItemWidth -\n gapWidth -\n inputSlotWidth\n : states.selectionWidth - inputSlotWidth\n return { maxWidth: `${maxWidth}px` }\n })\n\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` }\n })\n\n const popupScroll = (data: { scrollTop: number; scrollLeft: number }) => {\n emit('popup-scroll', data)\n }\n\n const endReached = (direction: ScrollbarDirection) => {\n emit('end-reached', direction)\n }\n\n useResizeObserver(selectionRef, resetSelectionWidth)\n useResizeObserver(wrapperRef, updateTooltip)\n useResizeObserver(tagMenuRef, updateTagTooltip)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n // #21498\n let stop: (() => void) | undefined\n watch(\n () => dropdownMenuVisible.value,\n (newVal) => {\n if (newVal) {\n stop = useResizeObserver(menuRef, updateTooltip).stop\n } else {\n stop?.()\n stop = undefined\n }\n emit('visible-change', newVal)\n }\n )\n\n onMounted(() => {\n setSelected()\n })\n\n return {\n inputId,\n contentId,\n nsSelect,\n nsInput,\n states,\n isFocused,\n expanded,\n optionsArray,\n hoverOption,\n selectSize,\n filteredOptionsCount,\n updateTooltip,\n updateTagTooltip,\n debouncedOnInputChange,\n onInput,\n deletePrevTag,\n deleteTag,\n deleteSelected,\n handleOptionSelect,\n scrollToOption,\n hasModelValue,\n shouldShowPlaceholder,\n currentPlaceholder,\n mouseEnterEventName,\n needStatusIcon,\n showClearBtn,\n iconComponent,\n iconReverse,\n validateState,\n validateIcon,\n showNewOption,\n updateOptions,\n collapseTagSize,\n setSelected,\n selectDisabled,\n emptyText,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n handleKeydown,\n onOptionCreate,\n onOptionDestroy,\n handleMenuEnter,\n focus,\n blur,\n handleClearClick,\n handleClickOutside,\n handleEsc,\n toggleMenu,\n selectOption,\n getValueKey,\n navigateOptions,\n dropdownMenuVisible,\n showTagList,\n collapseTagList,\n popupScroll,\n getOption,\n endReached,\n\n // computed style\n tagStyle,\n collapseTagStyle,\n\n // DOM ref\n popperRef,\n inputRef,\n tooltipRef,\n tagTooltipRef,\n prefixRef,\n suffixRef,\n selectRef,\n wrapperRef,\n selectionRef,\n scrollbarRef,\n menuRef,\n tagMenuRef,\n collapseItemRef,\n }\n}\n"],"mappings":"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OAAO,iBAAiB,eACC,KAAK;GACpC;CAEF,MAAM,oBAAA,GAAA,IAAA,gBAAkC;EACtC,OAAO,EAAE,UAAU,GAAG,OAAO,eAAe,KAAK;GACjD;CAEF,MAAM,eAAe,SAAoD;EACvE,KAAK,gBAAgB,KAAK;;CAG5B,MAAM,cAAc,cAAkC;EACpD,KAAK,eAAe,UAAU;;CAGhC,CAAA,GAAA,aAAA,mBAAkB,cAAc,oBAAoB;CACpD,CAAA,GAAA,aAAA,mBAAkB,YAAY,cAAc;CAC5C,CAAA,GAAA,aAAA,mBAAkB,YAAY,iBAAiB;CAC/C,CAAA,GAAA,aAAA,mBAAkB,iBAAiB,uBAAuB;CAG1D,IAAI;CACJ,CAAA,GAAA,IAAA,aACQ,oBAAoB,QACzB,WAAW;EACV,IAAI,QACF,QAAA,GAAA,aAAA,mBAAyB,SAAS,cAAc,CAAC;OAC5C;GACL,QAAQ;GACR,OAAO,KAAA;;EAET,KAAK,kBAAkB,OAAO;GAEjC;CAED,CAAA,GAAA,IAAA,iBAAgB;EACd,aAAa;GACb;CAEF,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}