@element-plus/nightly 0.0.20260720 → 0.0.20260722

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 (568) hide show
  1. package/es/components/affix/src/affix.vue.d.ts +4 -4
  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 +2 -2
  5. package/es/components/autocomplete/src/autocomplete.d.ts +6 -107
  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/backtop/src/backtop.vue.d.ts +1 -1
  16. package/es/components/badge/src/badge.d.ts +3 -7
  17. package/es/components/badge/src/badge.mjs +9 -1
  18. package/es/components/badge/src/badge.mjs.map +1 -1
  19. package/es/components/badge/src/badge.vue.d.ts +2 -0
  20. package/es/components/badge/src/badge.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  21. package/es/components/badge/src/badge2.mjs.map +1 -1
  22. package/es/components/button/src/button-group.d.ts +1 -1
  23. package/es/components/button/src/button-group.vue.d.ts +1 -1
  24. package/es/components/button/src/button.d.ts +1 -1
  25. package/es/components/button/src/button.vue.d.ts +3 -3
  26. package/es/components/button/src/use-button.d.ts +1 -1
  27. package/es/components/calendar/src/calendar.mjs.map +1 -1
  28. package/es/components/calendar/src/calendar.vue.d.ts +1 -1
  29. package/es/components/calendar/style/css.mjs +1 -1
  30. package/es/components/calendar/style/index.mjs +1 -1
  31. package/es/components/card/src/card.d.ts +8 -7
  32. package/es/components/card/src/card.mjs +27 -3
  33. package/es/components/card/src/card.mjs.map +1 -1
  34. package/es/components/card/src/card.vue.d.ts +5 -1
  35. package/es/components/card/src/card.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  36. package/es/components/card/src/card2.mjs.map +1 -1
  37. package/es/components/carousel/src/carousel.d.ts +2 -2
  38. package/es/components/carousel/src/carousel.vue.d.ts +4 -4
  39. package/es/components/cascader/src/cascader.d.ts +6 -107
  40. package/es/components/cascader/src/cascader.mjs.map +1 -1
  41. package/es/components/cascader/src/cascader.vue.d.ts +20 -18
  42. package/es/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  43. package/es/components/cascader/src/cascader2.mjs.map +1 -1
  44. package/es/components/cascader-panel/src/index.vue.d.ts +3 -3
  45. package/es/components/checkbox/src/checkbox-button.vue.d.ts +5 -5
  46. package/es/components/checkbox/src/checkbox-group.vue.d.ts +4 -4
  47. package/es/components/checkbox/src/checkbox.d.ts +8 -8
  48. package/es/components/checkbox/src/checkbox.vue.d.ts +5 -5
  49. package/es/components/col/src/col.vue.d.ts +1 -1
  50. package/es/components/collapse/src/collapse.d.ts +1 -1
  51. package/es/components/collapse/src/collapse.vue.d.ts +1 -1
  52. package/es/components/color-picker/src/color-picker.d.ts +3 -102
  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 +13 -11
  56. package/es/components/color-picker-panel/src/color-picker-panel.d.ts +3 -9
  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 +4 -1
  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.d.ts +1 -1
  63. package/es/components/date-picker/src/date-picker.d.ts +16 -216
  64. package/es/components/date-picker/src/props.d.ts +4 -104
  65. package/es/components/date-picker-panel/src/composables/use-basic-date-table.d.ts +1 -1
  66. package/es/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue.d.ts +1 -1
  67. package/es/components/date-picker-panel/src/date-picker-com/panel-date-range.vue.d.ts +1 -1
  68. package/es/components/date-picker-panel/src/date-picker-com/panel-month-range.vue.d.ts +1 -1
  69. package/es/components/date-picker-panel/src/date-picker-com/panel-year-range.vue.d.ts +1 -1
  70. package/es/components/date-picker-panel/src/date-picker-panel.d.ts +4 -4
  71. package/es/components/date-picker-panel/src/panel-utils.d.ts +9 -9
  72. package/es/components/date-picker-panel/src/props/basic-date-table.mjs.map +1 -1
  73. package/es/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
  74. package/es/components/descriptions/src/description-item.d.ts +18 -18
  75. package/es/components/descriptions/src/description.vue.d.ts +1 -1
  76. package/es/components/dialog/src/dialog-content.d.ts +10 -6
  77. package/es/components/dialog/src/dialog-content.mjs +32 -5
  78. package/es/components/dialog/src/dialog-content.mjs.map +1 -1
  79. package/es/components/dialog/src/dialog-content.vue.d.ts +4 -0
  80. package/es/components/dialog/src/dialog.d.ts +10 -5
  81. package/es/components/dialog/src/dialog.mjs +11 -14
  82. package/es/components/dialog/src/dialog.mjs.map +1 -1
  83. package/es/components/dialog/src/dialog.vue.d.ts +8 -3
  84. package/es/components/divider/src/divider.d.ts +1 -1
  85. package/es/components/divider/src/divider.vue.d.ts +1 -1
  86. package/es/components/drawer/src/drawer.d.ts +5 -4
  87. package/es/components/drawer/src/drawer.vue.d.ts +8 -3
  88. package/es/components/dropdown/src/dropdown-item-impl.vue.d.ts +1 -1
  89. package/es/components/dropdown/src/dropdown-item.vue.d.ts +3 -3
  90. package/es/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
  91. package/es/components/dropdown/src/dropdown.d.ts +6 -107
  92. package/es/components/dropdown/src/dropdown.vue.d.ts +97 -295
  93. package/es/components/dropdown/style/css.mjs +1 -1
  94. package/es/components/dropdown/style/index.mjs +1 -1
  95. package/es/components/form/src/form-item.d.ts +2 -2
  96. package/es/components/form/src/form-item.vue.d.ts +1 -1
  97. package/es/components/form/src/form.d.ts +2 -2
  98. package/es/components/image/src/image.mjs.map +1 -1
  99. package/es/components/image/src/image.vue.d.ts +3 -3
  100. package/es/components/image-viewer/src/image-viewer.mjs.map +1 -1
  101. package/es/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
  102. package/es/components/input/src/input.d.ts +3 -3
  103. package/es/components/input/src/input.vue.d.ts +16 -16
  104. package/es/components/input-number/src/input-number.d.ts +2 -2
  105. package/es/components/input-number/src/input-number.vue.d.ts +7 -7
  106. package/es/components/input-otp/src/input-otp.vue.d.ts +4 -4
  107. package/es/components/input-tag/src/input-tag.d.ts +1 -1
  108. package/es/components/input-tag/src/input-tag.vue.d.ts +10 -10
  109. package/es/components/link/src/link.d.ts +1 -1
  110. package/es/components/link/src/link.mjs.map +1 -1
  111. package/es/components/link/src/link.vue.d.ts +1 -1
  112. package/es/components/mention/src/mention.d.ts +5 -106
  113. package/es/components/mention/src/mention.vue.d.ts +5 -5
  114. package/es/components/mention/src/mention.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  115. package/es/components/mention/src/mention2.mjs.map +1 -1
  116. package/es/components/menu/src/menu.d.ts +17 -29
  117. package/es/components/menu/src/menu.mjs +18 -2
  118. package/es/components/menu/src/menu.mjs.map +1 -1
  119. package/es/components/menu/src/sub-menu.d.ts +10 -22
  120. package/es/components/menu/src/sub-menu.mjs +18 -2
  121. package/es/components/menu/src/sub-menu.mjs.map +1 -1
  122. package/es/components/message/src/message.d.ts +4 -4
  123. package/es/components/message/src/message.mjs +6 -1
  124. package/es/components/message/src/message.mjs.map +1 -1
  125. package/es/components/message/src/message.vue.d.ts +6 -5
  126. package/es/components/message/src/method.mjs.map +1 -1
  127. package/es/components/message-box/src/index.vue.d.ts +59 -67
  128. package/es/components/notification/src/notification.d.ts +4 -3
  129. package/es/components/notification/src/notification.mjs +6 -1
  130. package/es/components/notification/src/notification.mjs.map +1 -1
  131. package/es/components/notification/src/notification.vue.d.ts +5 -4
  132. package/es/components/overlay/index.d.ts +4 -12
  133. package/es/components/overlay/src/overlay.d.ts +5 -18
  134. package/es/components/overlay/src/overlay.mjs +9 -5
  135. package/es/components/overlay/src/overlay.mjs.map +1 -1
  136. package/es/components/pagination/src/components/sizes.d.ts +4 -13
  137. package/es/components/pagination/src/components/sizes.mjs +18 -2
  138. package/es/components/pagination/src/components/sizes.mjs.map +1 -1
  139. package/es/components/pagination/src/components/sizes.vue.d.ts +7 -24
  140. package/es/components/pagination/src/pagination.d.ts +12 -25
  141. package/es/components/pagination/src/pagination.mjs +15 -2
  142. package/es/components/pagination/src/pagination.mjs.map +1 -1
  143. package/es/components/popconfirm/src/popconfirm.d.ts +2 -2
  144. package/es/components/popconfirm/src/popconfirm.vue.d.ts +5 -5
  145. package/es/components/popover/src/popover.d.ts +5 -105
  146. package/es/components/popover/src/popover.mjs +1 -0
  147. package/es/components/popover/src/popover.mjs.map +1 -1
  148. package/es/components/popover/src/popover.vue.d.ts +13 -12
  149. package/es/components/popper/src/composables/use-content-dom.d.ts +2 -25
  150. package/es/components/popper/src/composables/use-content.d.ts +4 -4
  151. package/es/components/popper/src/content.d.ts +8 -18
  152. package/es/components/popper/src/content.mjs +13 -7
  153. package/es/components/popper/src/content.mjs.map +1 -1
  154. package/es/components/popper/src/content.vue.d.ts +17 -15
  155. package/es/components/popper/src/popper.d.ts +2 -2
  156. package/es/components/popper/src/popper.mjs.map +1 -1
  157. package/es/components/progress/src/progress.d.ts +1 -1
  158. package/es/components/progress/src/progress.vue.d.ts +1 -1
  159. package/es/components/radio/src/radio-button.d.ts +3 -3
  160. package/es/components/radio/src/radio-button.vue.d.ts +2 -2
  161. package/es/components/radio/src/radio-group.vue.d.ts +5 -5
  162. package/es/components/radio/src/radio.d.ts +6 -6
  163. package/es/components/radio/src/radio.vue.d.ts +3 -3
  164. package/es/components/rate/src/rate.vue.d.ts +1 -1
  165. package/es/components/rate/src/rate.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  166. package/es/components/rate/src/rate2.mjs.map +1 -1
  167. package/es/components/result/src/result.d.ts +1 -1
  168. package/es/components/row/src/row.d.ts +1 -1
  169. package/es/components/scrollbar/src/scrollbar.d.ts +5 -4
  170. package/es/components/scrollbar/src/scrollbar.mjs +12 -2
  171. package/es/components/scrollbar/src/scrollbar.mjs.map +1 -1
  172. package/es/components/scrollbar/src/scrollbar.vue.d.ts +4 -3
  173. package/es/components/scrollbar/src/thumb.vue_vue_type_script_setup_true_lang.mjs.map +1 -1
  174. package/es/components/scrollbar/src/thumb2.mjs.map +1 -1
  175. package/es/components/segmented/index.d.ts +3 -3
  176. package/es/components/segmented/src/segmented.d.ts +1 -1
  177. package/es/components/segmented/src/segmented.vue.d.ts +1 -1
  178. package/es/components/select/src/option.d.ts +2 -2
  179. package/es/components/select/src/option.vue.d.ts +5 -5
  180. package/es/components/select/src/select-dropdown.vue.d.ts +2 -1
  181. package/es/components/select/src/select.d.ts +9 -13
  182. package/es/components/select/src/select.mjs +15 -2
  183. package/es/components/select/src/select.mjs.map +1 -1
  184. package/es/components/select/src/select.vue.d.ts +113 -119
  185. package/es/components/select/src/select.vue_vue_type_script_lang.mjs.map +1 -1
  186. package/es/components/select/src/select2.mjs.map +1 -1
  187. package/es/components/select/src/useOption.d.ts +2 -2
  188. package/es/components/select/src/useSelect.d.ts +5 -5
  189. package/es/components/select/src/useSelect.mjs.map +1 -1
  190. package/es/components/select-v2/src/defaults.d.ts +3 -103
  191. package/es/components/select-v2/src/option-item.vue.d.ts +1 -1
  192. package/es/components/select-v2/src/select.vue.d.ts +89 -287
  193. package/es/components/select-v2/src/useSelect.d.ts +1 -1
  194. package/es/components/skeleton/src/skeleton-item.d.ts +1 -1
  195. package/es/components/skeleton/src/skeleton.vue.d.ts +1 -1
  196. package/es/components/slider/src/button.d.ts +2 -1
  197. package/es/components/slider/src/button.mjs +10 -2
  198. package/es/components/slider/src/button.mjs.map +1 -1
  199. package/es/components/slider/src/button.vue.d.ts +5 -3
  200. package/es/components/slider/src/composables/use-marks.mjs.map +1 -1
  201. package/es/components/slider/src/slider.d.ts +2 -2
  202. package/es/components/slider/src/slider.mjs +6 -1
  203. package/es/components/slider/src/slider.mjs.map +1 -1
  204. package/es/components/slider/src/slider.vue.d.ts +8 -8
  205. package/es/components/space/src/space.d.ts +7 -7
  206. package/es/components/space/src/space.mjs +2 -1
  207. package/es/components/space/src/space.mjs.map +1 -1
  208. package/es/components/space/src/use-space.d.ts +2 -3
  209. package/es/components/splitter/src/split-bar.vue.d.ts +1 -1
  210. package/es/components/steps/src/item.d.ts +1 -1
  211. package/es/components/steps/src/item.vue.d.ts +1 -1
  212. package/es/components/steps/src/steps.d.ts +2 -2
  213. package/es/components/steps/src/steps.vue.d.ts +1 -1
  214. package/es/components/switch/src/switch.vue.d.ts +3 -3
  215. package/es/components/table/src/filter-panel.vue.d.ts +89 -86
  216. package/es/components/table/src/table/defaults.d.ts +5 -5
  217. package/es/components/table/src/table/defaults.mjs.map +1 -1
  218. package/es/components/table/src/table/style-helper.d.ts +1 -1
  219. package/es/components/table/src/table-body/events-helper.mjs.map +1 -1
  220. package/es/components/table/src/table-column/defaults.d.ts +4 -4
  221. package/es/components/table/src/table-header/index.d.ts +14 -14
  222. package/es/components/table/src/table.vue.d.ts +4 -4
  223. package/es/components/tabs/src/tab-nav.d.ts +1 -1
  224. package/es/components/tabs/src/tab-pane.vue.d.ts +1 -1
  225. package/es/components/tabs/src/tabs.d.ts +5 -5
  226. package/es/components/tag/src/tag.vue.d.ts +2 -2
  227. package/es/components/text/src/text.vue.d.ts +1 -1
  228. package/es/components/time-picker/src/common/picker-range-trigger.vue.d.ts +6 -6
  229. package/es/components/time-picker/src/common/picker.vue.d.ts +22 -222
  230. package/es/components/time-picker/src/common/props.d.ts +4 -104
  231. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts +2 -2
  232. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue.d.ts +2 -2
  233. package/es/components/time-picker/src/time-picker.d.ts +16 -216
  234. package/es/components/time-select/src/time-select.d.ts +6 -10
  235. package/es/components/time-select/src/time-select.mjs +15 -2
  236. package/es/components/time-select/src/time-select.mjs.map +1 -1
  237. package/es/components/time-select/src/time-select.vue.d.ts +11 -10
  238. package/es/components/timeline/src/timeline-item.vue.d.ts +2 -2
  239. package/es/components/tooltip/src/content.d.ts +4 -199
  240. package/es/components/tooltip/src/content.vue.d.ts +18 -16
  241. package/es/components/tooltip/src/tooltip.d.ts +5 -202
  242. package/es/components/tooltip/src/tooltip.vue.d.ts +19 -18
  243. package/es/components/tooltip/src/trigger.d.ts +1 -1
  244. package/es/components/tour/src/content.d.ts +1 -1
  245. package/es/components/tour/src/content.vue.d.ts +1 -1
  246. package/es/components/tour/src/step.d.ts +1 -1
  247. package/es/components/tour/src/tour.d.ts +1 -1
  248. package/es/components/tour/src/tour.vue.d.ts +3 -3
  249. package/es/components/transfer/src/transfer.vue.d.ts +1 -1
  250. package/es/components/tree/src/tree-node.vue.d.ts +14 -14
  251. package/es/components/tree/src/tree.vue.d.ts +16 -16
  252. package/es/components/tree-select/src/select.mjs +1 -5
  253. package/es/components/tree-select/src/select.mjs.map +1 -1
  254. package/es/components/tree-select/src/tree-select-option.d.ts +5 -5
  255. package/es/components/tree-select/src/tree-select.vue.d.ts +33 -41
  256. package/es/components/tree-v2/src/composables/useTree.d.ts +9 -8
  257. package/es/components/tree-v2/src/tree.vue.d.ts +2 -2
  258. package/es/components/upload/src/upload-content.d.ts +1 -1
  259. package/es/components/upload/src/upload-content.vue.d.ts +2 -2
  260. package/es/components/upload/src/upload-list.d.ts +1 -1
  261. package/es/components/upload/src/upload.d.ts +2 -2
  262. package/es/components/upload/src/upload.mjs.map +1 -1
  263. package/es/components/upload/src/upload.vue.d.ts +3 -3
  264. package/es/components/virtual-list/src/builders/build-grid.d.ts +4 -3
  265. package/es/components/virtual-list/src/builders/build-list.d.ts +5 -4
  266. package/es/components/virtual-list/src/components/dynamic-size-grid.d.ts +4 -3
  267. package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +5 -4
  268. package/es/components/virtual-list/src/components/fixed-size-grid.d.ts +4 -3
  269. package/es/components/virtual-list/src/components/fixed-size-list.d.ts +5 -4
  270. package/es/components/virtual-list/src/components/scrollbar.d.ts +5 -3
  271. package/es/components/virtual-list/src/props.d.ts +5 -4
  272. package/es/components/virtual-list/src/props.mjs +15 -2
  273. package/es/components/virtual-list/src/props.mjs.map +1 -1
  274. package/es/components/watermark/src/watermark.mjs.map +1 -1
  275. package/es/hooks/use-floating/index.d.ts +8 -8
  276. package/es/hooks/use-popper/index.d.ts +4 -4
  277. package/es/hooks/use-throttle-render/index.mjs.map +1 -1
  278. package/es/utils/index.d.ts +2 -2
  279. package/es/utils/typescript.d.ts +2 -1
  280. package/es/utils/typescript.mjs.map +1 -1
  281. package/es/version.d.ts +1 -1
  282. package/es/version.mjs +1 -1
  283. package/es/version.mjs.map +1 -1
  284. package/lib/components/affix/src/affix.vue.d.ts +4 -4
  285. package/lib/components/alert/src/alert.d.ts +1 -1
  286. package/lib/components/alert/src/alert.vue.d.ts +1 -1
  287. package/lib/components/anchor/src/anchor.vue.d.ts +2 -2
  288. package/lib/components/autocomplete/src/autocomplete.d.ts +6 -107
  289. package/lib/components/autocomplete/src/autocomplete.js.map +1 -1
  290. package/lib/components/autocomplete/src/autocomplete.vue.d.ts +5 -5
  291. package/lib/components/autocomplete/src/autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  292. package/lib/components/autocomplete/src/autocomplete2.js.map +1 -1
  293. package/lib/components/avatar/src/avatar-group-props.d.ts +8 -105
  294. package/lib/components/avatar/src/avatar-group-props.js +9 -1
  295. package/lib/components/avatar/src/avatar-group-props.js.map +1 -1
  296. package/lib/components/avatar/src/avatar-group.d.ts +17 -210
  297. package/lib/components/avatar/src/avatar.d.ts +2 -2
  298. package/lib/components/backtop/src/backtop.vue.d.ts +1 -1
  299. package/lib/components/badge/src/badge.d.ts +3 -7
  300. package/lib/components/badge/src/badge.js +9 -1
  301. package/lib/components/badge/src/badge.js.map +1 -1
  302. package/lib/components/badge/src/badge.vue.d.ts +2 -0
  303. package/lib/components/badge/src/badge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  304. package/lib/components/badge/src/badge2.js.map +1 -1
  305. package/lib/components/button/src/button-group.d.ts +1 -1
  306. package/lib/components/button/src/button-group.vue.d.ts +1 -1
  307. package/lib/components/button/src/button.d.ts +1 -1
  308. package/lib/components/button/src/button.vue.d.ts +3 -3
  309. package/lib/components/button/src/use-button.d.ts +1 -1
  310. package/lib/components/calendar/src/calendar.js.map +1 -1
  311. package/lib/components/calendar/src/calendar.vue.d.ts +1 -1
  312. package/lib/components/calendar/style/css.js +1 -1
  313. package/lib/components/calendar/style/index.js +1 -1
  314. package/lib/components/card/src/card.d.ts +8 -7
  315. package/lib/components/card/src/card.js +27 -3
  316. package/lib/components/card/src/card.js.map +1 -1
  317. package/lib/components/card/src/card.vue.d.ts +5 -1
  318. package/lib/components/card/src/card.vue_vue_type_script_setup_true_lang.js.map +1 -1
  319. package/lib/components/card/src/card2.js.map +1 -1
  320. package/lib/components/carousel/src/carousel.d.ts +2 -2
  321. package/lib/components/carousel/src/carousel.vue.d.ts +4 -4
  322. package/lib/components/cascader/src/cascader.d.ts +6 -107
  323. package/lib/components/cascader/src/cascader.js.map +1 -1
  324. package/lib/components/cascader/src/cascader.vue.d.ts +20 -18
  325. package/lib/components/cascader/src/cascader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  326. package/lib/components/cascader/src/cascader2.js.map +1 -1
  327. package/lib/components/cascader-panel/src/index.vue.d.ts +3 -3
  328. package/lib/components/checkbox/src/checkbox-button.vue.d.ts +5 -5
  329. package/lib/components/checkbox/src/checkbox-group.vue.d.ts +4 -4
  330. package/lib/components/checkbox/src/checkbox.d.ts +8 -8
  331. package/lib/components/checkbox/src/checkbox.vue.d.ts +5 -5
  332. package/lib/components/col/src/col.vue.d.ts +1 -1
  333. package/lib/components/collapse/src/collapse.d.ts +1 -1
  334. package/lib/components/collapse/src/collapse.vue.d.ts +1 -1
  335. package/lib/components/color-picker/src/color-picker.d.ts +3 -102
  336. package/lib/components/color-picker/src/color-picker.js +1 -0
  337. package/lib/components/color-picker/src/color-picker.js.map +1 -1
  338. package/lib/components/color-picker/src/color-picker.vue.d.ts +13 -11
  339. package/lib/components/color-picker-panel/src/color-picker-panel.d.ts +3 -9
  340. package/lib/components/color-picker-panel/src/color-picker-panel.js +9 -5
  341. package/lib/components/color-picker-panel/src/color-picker-panel.js.map +1 -1
  342. package/lib/components/color-picker-panel/src/color-picker-panel.vue.d.ts +4 -1
  343. package/lib/components/color-picker-panel/src/color-picker-panel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  344. package/lib/components/color-picker-panel/src/color-picker-panel2.js.map +1 -1
  345. package/lib/components/config-provider/src/config-provider.d.ts +1 -1
  346. package/lib/components/date-picker/src/date-picker.d.ts +16 -216
  347. package/lib/components/date-picker/src/props.d.ts +4 -104
  348. package/lib/components/date-picker-panel/src/composables/use-basic-date-table.d.ts +1 -1
  349. package/lib/components/date-picker-panel/src/date-picker-com/panel-date-pick.vue.d.ts +1 -1
  350. package/lib/components/date-picker-panel/src/date-picker-com/panel-date-range.vue.d.ts +1 -1
  351. package/lib/components/date-picker-panel/src/date-picker-com/panel-month-range.vue.d.ts +1 -1
  352. package/lib/components/date-picker-panel/src/date-picker-com/panel-year-range.vue.d.ts +1 -1
  353. package/lib/components/date-picker-panel/src/date-picker-panel.d.ts +4 -4
  354. package/lib/components/date-picker-panel/src/panel-utils.d.ts +9 -9
  355. package/lib/components/date-picker-panel/src/props/basic-date-table.js.map +1 -1
  356. package/lib/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
  357. package/lib/components/descriptions/src/description-item.d.ts +18 -18
  358. package/lib/components/descriptions/src/description.vue.d.ts +1 -1
  359. package/lib/components/dialog/src/dialog-content.d.ts +10 -6
  360. package/lib/components/dialog/src/dialog-content.js +31 -4
  361. package/lib/components/dialog/src/dialog-content.js.map +1 -1
  362. package/lib/components/dialog/src/dialog-content.vue.d.ts +4 -0
  363. package/lib/components/dialog/src/dialog.d.ts +10 -5
  364. package/lib/components/dialog/src/dialog.js +11 -14
  365. package/lib/components/dialog/src/dialog.js.map +1 -1
  366. package/lib/components/dialog/src/dialog.vue.d.ts +8 -3
  367. package/lib/components/divider/src/divider.d.ts +1 -1
  368. package/lib/components/divider/src/divider.vue.d.ts +1 -1
  369. package/lib/components/drawer/src/drawer.d.ts +5 -4
  370. package/lib/components/drawer/src/drawer.vue.d.ts +8 -3
  371. package/lib/components/dropdown/src/dropdown-item-impl.vue.d.ts +1 -1
  372. package/lib/components/dropdown/src/dropdown-item.vue.d.ts +3 -3
  373. package/lib/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
  374. package/lib/components/dropdown/src/dropdown.d.ts +6 -107
  375. package/lib/components/dropdown/src/dropdown.vue.d.ts +97 -295
  376. package/lib/components/dropdown/style/css.js +1 -1
  377. package/lib/components/dropdown/style/index.js +1 -1
  378. package/lib/components/form/src/form-item.d.ts +2 -2
  379. package/lib/components/form/src/form-item.vue.d.ts +1 -1
  380. package/lib/components/form/src/form.d.ts +2 -2
  381. package/lib/components/image/src/image.js.map +1 -1
  382. package/lib/components/image/src/image.vue.d.ts +3 -3
  383. package/lib/components/image-viewer/src/image-viewer.js.map +1 -1
  384. package/lib/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
  385. package/lib/components/input/src/input.d.ts +3 -3
  386. package/lib/components/input/src/input.vue.d.ts +16 -16
  387. package/lib/components/input-number/src/input-number.d.ts +2 -2
  388. package/lib/components/input-number/src/input-number.vue.d.ts +7 -7
  389. package/lib/components/input-otp/src/input-otp.vue.d.ts +4 -4
  390. package/lib/components/input-tag/src/input-tag.d.ts +1 -1
  391. package/lib/components/input-tag/src/input-tag.vue.d.ts +10 -10
  392. package/lib/components/link/src/link.d.ts +1 -1
  393. package/lib/components/link/src/link.js.map +1 -1
  394. package/lib/components/link/src/link.vue.d.ts +1 -1
  395. package/lib/components/mention/src/mention.d.ts +5 -106
  396. package/lib/components/mention/src/mention.vue.d.ts +5 -5
  397. package/lib/components/mention/src/mention.vue_vue_type_script_setup_true_lang.js.map +1 -1
  398. package/lib/components/mention/src/mention2.js.map +1 -1
  399. package/lib/components/menu/src/menu.d.ts +17 -29
  400. package/lib/components/menu/src/menu.js +18 -2
  401. package/lib/components/menu/src/menu.js.map +1 -1
  402. package/lib/components/menu/src/sub-menu.d.ts +10 -22
  403. package/lib/components/menu/src/sub-menu.js +18 -2
  404. package/lib/components/menu/src/sub-menu.js.map +1 -1
  405. package/lib/components/message/src/message.d.ts +4 -4
  406. package/lib/components/message/src/message.js +6 -1
  407. package/lib/components/message/src/message.js.map +1 -1
  408. package/lib/components/message/src/message.vue.d.ts +6 -5
  409. package/lib/components/message/src/method.js.map +1 -1
  410. package/lib/components/message-box/src/index.vue.d.ts +59 -67
  411. package/lib/components/notification/src/notification.d.ts +4 -3
  412. package/lib/components/notification/src/notification.js +6 -1
  413. package/lib/components/notification/src/notification.js.map +1 -1
  414. package/lib/components/notification/src/notification.vue.d.ts +5 -4
  415. package/lib/components/overlay/index.d.ts +4 -12
  416. package/lib/components/overlay/src/overlay.d.ts +5 -18
  417. package/lib/components/overlay/src/overlay.js +9 -5
  418. package/lib/components/overlay/src/overlay.js.map +1 -1
  419. package/lib/components/pagination/src/components/sizes.d.ts +4 -13
  420. package/lib/components/pagination/src/components/sizes.js +18 -2
  421. package/lib/components/pagination/src/components/sizes.js.map +1 -1
  422. package/lib/components/pagination/src/components/sizes.vue.d.ts +7 -24
  423. package/lib/components/pagination/src/pagination.d.ts +12 -25
  424. package/lib/components/pagination/src/pagination.js +15 -2
  425. package/lib/components/pagination/src/pagination.js.map +1 -1
  426. package/lib/components/popconfirm/src/popconfirm.d.ts +2 -2
  427. package/lib/components/popconfirm/src/popconfirm.vue.d.ts +5 -5
  428. package/lib/components/popover/src/popover.d.ts +5 -105
  429. package/lib/components/popover/src/popover.js +1 -0
  430. package/lib/components/popover/src/popover.js.map +1 -1
  431. package/lib/components/popover/src/popover.vue.d.ts +13 -12
  432. package/lib/components/popper/src/composables/use-content-dom.d.ts +2 -25
  433. package/lib/components/popper/src/composables/use-content.d.ts +4 -4
  434. package/lib/components/popper/src/content.d.ts +8 -18
  435. package/lib/components/popper/src/content.js +13 -7
  436. package/lib/components/popper/src/content.js.map +1 -1
  437. package/lib/components/popper/src/content.vue.d.ts +17 -15
  438. package/lib/components/popper/src/popper.d.ts +2 -2
  439. package/lib/components/popper/src/popper.js.map +1 -1
  440. package/lib/components/progress/src/progress.d.ts +1 -1
  441. package/lib/components/progress/src/progress.vue.d.ts +1 -1
  442. package/lib/components/radio/src/radio-button.d.ts +3 -3
  443. package/lib/components/radio/src/radio-button.vue.d.ts +2 -2
  444. package/lib/components/radio/src/radio-group.vue.d.ts +5 -5
  445. package/lib/components/radio/src/radio.d.ts +6 -6
  446. package/lib/components/radio/src/radio.vue.d.ts +3 -3
  447. package/lib/components/rate/src/rate.vue.d.ts +1 -1
  448. package/lib/components/rate/src/rate.vue_vue_type_script_setup_true_lang.js.map +1 -1
  449. package/lib/components/rate/src/rate2.js.map +1 -1
  450. package/lib/components/result/src/result.d.ts +1 -1
  451. package/lib/components/row/src/row.d.ts +1 -1
  452. package/lib/components/scrollbar/src/scrollbar.d.ts +5 -4
  453. package/lib/components/scrollbar/src/scrollbar.js +12 -2
  454. package/lib/components/scrollbar/src/scrollbar.js.map +1 -1
  455. package/lib/components/scrollbar/src/scrollbar.vue.d.ts +4 -3
  456. package/lib/components/scrollbar/src/thumb.vue_vue_type_script_setup_true_lang.js.map +1 -1
  457. package/lib/components/scrollbar/src/thumb2.js.map +1 -1
  458. package/lib/components/segmented/index.d.ts +3 -3
  459. package/lib/components/segmented/src/segmented.d.ts +1 -1
  460. package/lib/components/segmented/src/segmented.vue.d.ts +1 -1
  461. package/lib/components/select/src/option.d.ts +2 -2
  462. package/lib/components/select/src/option.vue.d.ts +5 -5
  463. package/lib/components/select/src/select-dropdown.vue.d.ts +2 -1
  464. package/lib/components/select/src/select.d.ts +9 -13
  465. package/lib/components/select/src/select.js +15 -2
  466. package/lib/components/select/src/select.js.map +1 -1
  467. package/lib/components/select/src/select.vue.d.ts +113 -119
  468. package/lib/components/select/src/select.vue_vue_type_script_lang.js.map +1 -1
  469. package/lib/components/select/src/select2.js.map +1 -1
  470. package/lib/components/select/src/useOption.d.ts +2 -2
  471. package/lib/components/select/src/useSelect.d.ts +5 -5
  472. package/lib/components/select/src/useSelect.js.map +1 -1
  473. package/lib/components/select-v2/src/defaults.d.ts +3 -103
  474. package/lib/components/select-v2/src/option-item.vue.d.ts +1 -1
  475. package/lib/components/select-v2/src/select.vue.d.ts +89 -287
  476. package/lib/components/select-v2/src/useSelect.d.ts +1 -1
  477. package/lib/components/skeleton/src/skeleton-item.d.ts +1 -1
  478. package/lib/components/skeleton/src/skeleton.vue.d.ts +1 -1
  479. package/lib/components/slider/src/button.d.ts +2 -1
  480. package/lib/components/slider/src/button.js +9 -1
  481. package/lib/components/slider/src/button.js.map +1 -1
  482. package/lib/components/slider/src/button.vue.d.ts +5 -3
  483. package/lib/components/slider/src/composables/use-marks.js.map +1 -1
  484. package/lib/components/slider/src/slider.d.ts +2 -2
  485. package/lib/components/slider/src/slider.js +6 -1
  486. package/lib/components/slider/src/slider.js.map +1 -1
  487. package/lib/components/slider/src/slider.vue.d.ts +8 -8
  488. package/lib/components/space/src/space.d.ts +7 -7
  489. package/lib/components/space/src/space.js +2 -1
  490. package/lib/components/space/src/space.js.map +1 -1
  491. package/lib/components/space/src/use-space.d.ts +2 -3
  492. package/lib/components/splitter/src/split-bar.vue.d.ts +1 -1
  493. package/lib/components/steps/src/item.d.ts +1 -1
  494. package/lib/components/steps/src/item.vue.d.ts +1 -1
  495. package/lib/components/steps/src/steps.d.ts +2 -2
  496. package/lib/components/steps/src/steps.vue.d.ts +1 -1
  497. package/lib/components/switch/src/switch.vue.d.ts +3 -3
  498. package/lib/components/table/src/filter-panel.vue.d.ts +89 -86
  499. package/lib/components/table/src/table/defaults.d.ts +5 -5
  500. package/lib/components/table/src/table/defaults.js.map +1 -1
  501. package/lib/components/table/src/table/style-helper.d.ts +1 -1
  502. package/lib/components/table/src/table-body/events-helper.js.map +1 -1
  503. package/lib/components/table/src/table-column/defaults.d.ts +4 -4
  504. package/lib/components/table/src/table-header/index.d.ts +14 -14
  505. package/lib/components/table/src/table.vue.d.ts +4 -4
  506. package/lib/components/tabs/src/tab-nav.d.ts +1 -1
  507. package/lib/components/tabs/src/tab-pane.vue.d.ts +1 -1
  508. package/lib/components/tabs/src/tabs.d.ts +5 -5
  509. package/lib/components/tag/src/tag.vue.d.ts +2 -2
  510. package/lib/components/text/src/text.vue.d.ts +1 -1
  511. package/lib/components/time-picker/src/common/picker-range-trigger.vue.d.ts +6 -6
  512. package/lib/components/time-picker/src/common/picker.vue.d.ts +22 -222
  513. package/lib/components/time-picker/src/common/props.d.ts +4 -104
  514. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts +2 -2
  515. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue.d.ts +2 -2
  516. package/lib/components/time-picker/src/time-picker.d.ts +16 -216
  517. package/lib/components/time-select/src/time-select.d.ts +6 -10
  518. package/lib/components/time-select/src/time-select.js +15 -2
  519. package/lib/components/time-select/src/time-select.js.map +1 -1
  520. package/lib/components/time-select/src/time-select.vue.d.ts +11 -10
  521. package/lib/components/timeline/src/timeline-item.vue.d.ts +2 -2
  522. package/lib/components/tooltip/src/content.d.ts +4 -199
  523. package/lib/components/tooltip/src/content.vue.d.ts +18 -16
  524. package/lib/components/tooltip/src/tooltip.d.ts +5 -202
  525. package/lib/components/tooltip/src/tooltip.vue.d.ts +19 -18
  526. package/lib/components/tooltip/src/trigger.d.ts +1 -1
  527. package/lib/components/tour/src/content.d.ts +1 -1
  528. package/lib/components/tour/src/content.vue.d.ts +1 -1
  529. package/lib/components/tour/src/step.d.ts +1 -1
  530. package/lib/components/tour/src/tour.d.ts +1 -1
  531. package/lib/components/tour/src/tour.vue.d.ts +3 -3
  532. package/lib/components/transfer/src/transfer.vue.d.ts +1 -1
  533. package/lib/components/tree/src/tree-node.vue.d.ts +14 -14
  534. package/lib/components/tree/src/tree.vue.d.ts +16 -16
  535. package/lib/components/tree-select/src/select.js +1 -5
  536. package/lib/components/tree-select/src/select.js.map +1 -1
  537. package/lib/components/tree-select/src/tree-select-option.d.ts +5 -5
  538. package/lib/components/tree-select/src/tree-select.vue.d.ts +33 -41
  539. package/lib/components/tree-v2/src/composables/useTree.d.ts +9 -8
  540. package/lib/components/tree-v2/src/tree.vue.d.ts +2 -2
  541. package/lib/components/upload/src/upload-content.d.ts +1 -1
  542. package/lib/components/upload/src/upload-content.vue.d.ts +2 -2
  543. package/lib/components/upload/src/upload-list.d.ts +1 -1
  544. package/lib/components/upload/src/upload.d.ts +2 -2
  545. package/lib/components/upload/src/upload.js.map +1 -1
  546. package/lib/components/upload/src/upload.vue.d.ts +3 -3
  547. package/lib/components/virtual-list/src/builders/build-grid.d.ts +4 -3
  548. package/lib/components/virtual-list/src/builders/build-list.d.ts +5 -4
  549. package/lib/components/virtual-list/src/components/dynamic-size-grid.d.ts +4 -3
  550. package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +5 -4
  551. package/lib/components/virtual-list/src/components/fixed-size-grid.d.ts +4 -3
  552. package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +5 -4
  553. package/lib/components/virtual-list/src/components/scrollbar.d.ts +5 -3
  554. package/lib/components/virtual-list/src/props.d.ts +5 -4
  555. package/lib/components/virtual-list/src/props.js +15 -2
  556. package/lib/components/virtual-list/src/props.js.map +1 -1
  557. package/lib/components/watermark/src/watermark.js.map +1 -1
  558. package/lib/hooks/use-floating/index.d.ts +8 -8
  559. package/lib/hooks/use-popper/index.d.ts +4 -4
  560. package/lib/hooks/use-throttle-render/index.js.map +1 -1
  561. package/lib/utils/index.d.ts +2 -2
  562. package/lib/utils/typescript.d.ts +2 -1
  563. package/lib/utils/typescript.js.map +1 -1
  564. package/lib/version.d.ts +1 -1
  565. package/lib/version.js +1 -1
  566. package/lib/version.js.map +1 -1
  567. package/package.json +2 -2
  568. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mention2.mjs","names":[],"sources":["../../../../../../packages/components/mention/src/mention.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\" :class=\"ns.b()\">\n <el-input\n v-bind=\"mergeProps(passInputProps, $attrs)\"\n ref=\"elInputRef\"\n :model-value=\"modelValue\"\n :disabled=\"disabled\"\n :role=\"dropdownVisible ? 'combobox' : undefined\"\n :aria-activedescendant=\"dropdownVisible ? hoveringId || '' : undefined\"\n :aria-controls=\"dropdownVisible ? contentId : undefined\"\n :aria-expanded=\"dropdownVisible || undefined\"\n :aria-label=\"ariaLabel\"\n :aria-autocomplete=\"dropdownVisible ? 'none' : undefined\"\n :aria-haspopup=\"dropdownVisible ? 'listbox' : undefined\"\n @input=\"handleInputChange\"\n @keydown=\"handleInputKeyDown\"\n @mousedown=\"handleInputMouseDown\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </el-input>\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"dropdownVisible\"\n :popper-class=\"[ns.e('popper'), popperClass!]\"\n :popper-style=\"popperStyle\"\n :popper-options=\"popperOptions\"\n :placement=\"computedPlacement\"\n :fallback-placements=\"computedFallbackPlacements\"\n effect=\"light\"\n pure\n :offset=\"offset\"\n :show-arrow=\"showArrow\"\n >\n <template #default>\n <div :style=\"cursorStyle\" />\n </template>\n <template #content>\n <el-mention-dropdown\n ref=\"dropdownRef\"\n :options=\"filteredOptions\"\n :disabled=\"disabled\"\n :loading=\"loading\"\n :content-id=\"contentId\"\n :aria-label=\"ariaLabel\"\n @select=\"handleSelect\"\n @click.stop=\"elInputRef?.focus()\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </el-mention-dropdown>\n </template>\n </el-tooltip>\n </div>\n</template>\n\n<script lang=\"ts\" setup generic=\"T extends MentionOption = MentionOption\">\nimport { computed, mergeProps, nextTick, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport { useFocusController, useId, useNamespace } from '@element-plus/hooks'\nimport ElInput, { inputPropsDefaults } from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n EVENT_CODE,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { useFormDisabled } from '@element-plus/components/form'\nimport { getEventCode, isArray, isFunction } from '@element-plus/utils'\nimport { mentionDefaultProps, mentionEmits } from './mention'\nimport { filterOption, getCursorPosition, getMentionCtx } from './helper'\nimport ElMentionDropdown from './mention-dropdown.vue'\n\nimport type { MentionProps } from './mention'\nimport type { Placement } from '@popperjs/core'\nimport type { CSSProperties } from 'vue'\nimport type { InputInstance } from '@element-plus/components/input'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { MentionCtx, MentionOption } from './types'\n\ndefineOptions({\n name: 'ElMention',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MentionProps<T>>(), {\n ...inputPropsDefaults,\n options: () => [],\n prefix: '@',\n split: ' ',\n filterOption: () => filterOption,\n placement: 'bottom',\n offset: 0,\n popperOptions: () => ({}),\n props: () => mentionDefaultProps,\n})\nconst emit = defineEmits(mentionEmits)\ndefineSlots<\n InputInstance['$slots'] & {\n header?: () => any\n footer?: () => any\n loading?: () => any\n label?: (props: { item: T & MentionOption; index: number }) => any\n }\n>()\n\nconst passInputProps = computed(() => {\n const inputProps = ElInput.props ?? []\n const keys = isArray(inputProps) ? inputProps : Object.keys(inputProps)\n return pick(props, keys)\n})\n\nconst ns = useNamespace('mention')\nconst disabled = useFormDisabled()\nconst contentId = useId()\n\nconst elInputRef = ref<InputInstance>()\nconst tooltipRef = ref<TooltipInstance>()\nconst dropdownRef = ref<InstanceType<typeof ElMentionDropdown>>()\n\nconst visible = ref(false)\nconst cursorStyle = ref<CSSProperties>()\nconst mentionCtx = ref<MentionCtx>()\n\nconst computedPlacement = computed<Placement>(() =>\n props.showArrow ? props.placement : `${props.placement}-start`\n)\n\nconst computedFallbackPlacements = computed<Placement[]>(() =>\n props.showArrow ? ['bottom', 'top'] : ['bottom-start', 'top-start']\n)\n\nconst aliasProps = computed(() => ({\n ...mentionDefaultProps,\n ...props.props,\n}))\n\nconst mapOption = (option: T) => {\n const base = {\n label: option[aliasProps.value.label],\n value: option[aliasProps.value.value],\n disabled: option[aliasProps.value.disabled],\n }\n return { ...option, ...base }\n}\n\nconst options = computed(() => props.options.map(mapOption))\n\nconst filteredOptions = computed(() => {\n const { filterOption } = props\n if (!mentionCtx.value || !filterOption) return options.value\n return options.value.filter((option) =>\n filterOption(mentionCtx.value!.pattern, option)\n )\n})\n\nconst dropdownVisible = computed(() => {\n return visible.value && (!!filteredOptions.value.length || props.loading)\n})\n\nconst hoveringId = computed(() => {\n return `${contentId.value}-${dropdownRef.value?.hoveringIndex}`\n})\n\nconst handleInputChange = (value: string) => {\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n syncAfterCursorMove()\n}\n\nconst handleInputKeyDown = (event: KeyboardEvent | Event) => {\n if (elInputRef.value?.isComposing) return\n const code = getEventCode(event as KeyboardEvent)\n\n switch (code) {\n case EVENT_CODE.left:\n case EVENT_CODE.right:\n syncAfterCursorMove()\n break\n case EVENT_CODE.up:\n case EVENT_CODE.down:\n if (!visible.value) return\n event.preventDefault()\n dropdownRef.value?.navigateOptions(\n code === EVENT_CODE.up ? 'prev' : 'next'\n )\n break\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n if (!visible.value) {\n props.type !== 'textarea' && syncAfterCursorMove()\n return\n }\n event.preventDefault()\n if (dropdownRef.value?.hoverOption) {\n dropdownRef.value?.selectHoverOption()\n } else {\n visible.value = false\n }\n break\n case EVENT_CODE.esc:\n if (!visible.value) return\n event.preventDefault()\n visible.value = false\n break\n case EVENT_CODE.backspace:\n if (props.whole && mentionCtx.value) {\n const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } =\n mentionCtx.value\n const inputEl = getInputEl()\n if (!inputEl) return\n const inputValue = inputEl.value\n const matchOption = options.value.find((item) => item.value === pattern)\n const isWhole = isFunction(props.checkIsWhole)\n ? props.checkIsWhole(pattern, prefix)\n : matchOption\n if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {\n event.preventDefault()\n const newValue =\n inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1)\n emit(UPDATE_MODEL_EVENT, newValue)\n emit(INPUT_EVENT, newValue)\n emit('whole-remove', pattern, prefix)\n\n const newSelectionEnd = prefixIndex\n nextTick(() => {\n // input value is updated\n inputEl.selectionStart = newSelectionEnd\n inputEl.selectionEnd = newSelectionEnd\n syncDropdownVisible()\n })\n }\n }\n }\n}\n\nconst { wrapperRef } = useFocusController(elInputRef, {\n disabled,\n afterFocus() {\n syncAfterCursorMove()\n },\n beforeBlur(event) {\n return tooltipRef.value?.isFocusInsideContent(event)\n },\n afterBlur() {\n visible.value = false\n },\n})\n\nconst handleInputMouseDown = () => {\n syncAfterCursorMove()\n}\n\n// Ensure that the original option passed by users is returned\nconst getOriginalOption = (mentionOption: MentionOption) => {\n return props.options.find((option: MentionOption) => {\n return mentionOption.value === option[aliasProps.value.value]\n })\n}\n\nconst handleSelect = (item: MentionOption) => {\n if (!mentionCtx.value) return\n const inputEl = getInputEl()\n if (!inputEl) return\n const inputValue = inputEl.value\n const { split } = props\n\n const newEndPart = inputValue.slice(mentionCtx.value.end)\n const alreadySeparated = newEndPart.startsWith(split)\n const newMiddlePart = `${item.value}${alreadySeparated ? '' : split}`\n\n const newValue =\n inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart\n\n emit(UPDATE_MODEL_EVENT, newValue)\n emit(INPUT_EVENT, newValue)\n emit('select', getOriginalOption(item)!, mentionCtx.value.prefix)\n\n const newSelectionEnd =\n mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0)\n\n nextTick(() => {\n // input value is updated\n inputEl.selectionStart = newSelectionEnd\n inputEl.selectionEnd = newSelectionEnd\n inputEl.focus()\n syncDropdownVisible()\n })\n}\n\nconst getInputEl = () =>\n props.type === 'textarea'\n ? elInputRef.value?.textarea\n : elInputRef.value?.input\n\nconst syncAfterCursorMove = () => {\n // can't use nextTick(), get cursor position will be wrong\n setTimeout(() => {\n syncCursor()\n syncDropdownVisible()\n nextTick(() => tooltipRef.value?.updatePopper())\n }, 0)\n}\n\nconst syncCursor = () => {\n const inputEl = getInputEl()\n if (!inputEl) return\n\n const caretPosition = getCursorPosition(inputEl)\n const inputRect = inputEl.getBoundingClientRect()\n const wrapperRect = wrapperRef.value!.getBoundingClientRect()\n\n cursorStyle.value = {\n position: 'absolute',\n width: 0,\n height: `${caretPosition.height}px`,\n left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`,\n top: `${caretPosition.top + inputRect.top - wrapperRect.top}px`,\n }\n}\n\nconst syncDropdownVisible = () => {\n const inputEl = getInputEl()\n if (document.activeElement !== inputEl) {\n visible.value = false\n return\n }\n const { prefix, split } = props\n mentionCtx.value = getMentionCtx(inputEl, prefix, split)\n if (mentionCtx.value && mentionCtx.value.splitIndex === -1) {\n visible.value = true\n emit('search', mentionCtx.value.pattern, mentionCtx.value.prefix)\n return\n }\n visible.value = false\n}\n\ndefineExpose({\n input: elInputRef,\n tooltip: tooltipRef,\n dropdownVisible,\n})\n</script>\n"],"mappings":""}
1
+ {"version":3,"file":"mention2.mjs","names":[],"sources":["../../../../../../packages/components/mention/src/mention.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\" :class=\"ns.b()\">\n <el-input\n v-bind=\"mergeProps(passInputProps, $attrs)\"\n ref=\"elInputRef\"\n :model-value=\"modelValue\"\n :disabled=\"disabled\"\n :role=\"dropdownVisible ? 'combobox' : undefined\"\n :aria-activedescendant=\"dropdownVisible ? hoveringId || '' : undefined\"\n :aria-controls=\"dropdownVisible ? contentId : undefined\"\n :aria-expanded=\"dropdownVisible || undefined\"\n :aria-label=\"ariaLabel\"\n :aria-autocomplete=\"dropdownVisible ? 'none' : undefined\"\n :aria-haspopup=\"dropdownVisible ? 'listbox' : undefined\"\n @input=\"handleInputChange\"\n @keydown=\"handleInputKeyDown\"\n @mousedown=\"handleInputMouseDown\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </el-input>\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"dropdownVisible\"\n :popper-class=\"[ns.e('popper'), popperClass!]\"\n :popper-style=\"popperStyle\"\n :popper-options=\"popperOptions\"\n :placement=\"computedPlacement\"\n :fallback-placements=\"computedFallbackPlacements\"\n effect=\"light\"\n pure\n :offset=\"offset\"\n :show-arrow=\"showArrow\"\n >\n <template #default>\n <div :style=\"cursorStyle\" />\n </template>\n <template #content>\n <el-mention-dropdown\n ref=\"dropdownRef\"\n :options=\"filteredOptions\"\n :disabled=\"disabled\"\n :loading=\"loading\"\n :content-id=\"contentId\"\n :aria-label=\"ariaLabel\"\n @select=\"handleSelect\"\n @click.stop=\"elInputRef?.focus()\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </el-mention-dropdown>\n </template>\n </el-tooltip>\n </div>\n</template>\n\n<script lang=\"ts\" setup generic=\"T extends MentionOption = MentionOption\">\nimport { computed, mergeProps, nextTick, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport { useFocusController, useId, useNamespace } from '@element-plus/hooks'\nimport ElInput, { inputPropsDefaults } from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n EVENT_CODE,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { useFormDisabled } from '@element-plus/components/form'\nimport { getEventCode, isArray, isFunction } from '@element-plus/utils'\nimport { mentionDefaultProps, mentionEmits } from './mention'\nimport { filterOption, getCursorPosition, getMentionCtx } from './helper'\nimport ElMentionDropdown from './mention-dropdown.vue'\n\nimport type { MentionProps } from './mention'\nimport type { Placement } from '@popperjs/core'\nimport type { CSSProperties } from 'vue'\nimport type { InputInstance } from '@element-plus/components/input'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { MentionCtx, MentionOption } from './types'\n\ndefineOptions({\n name: 'ElMention',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<MentionProps<T>>(), {\n ...inputPropsDefaults,\n options: () => [],\n prefix: '@',\n split: ' ',\n filterOption: () => filterOption,\n placement: 'bottom',\n offset: 0,\n popperClass: undefined,\n popperStyle: undefined,\n popperOptions: () => ({}),\n props: () => mentionDefaultProps,\n})\nconst emit = defineEmits(mentionEmits)\ndefineSlots<\n InputInstance['$slots'] & {\n header?: () => any\n footer?: () => any\n loading?: () => any\n label?: (props: { item: T & MentionOption; index: number }) => any\n }\n>()\n\nconst passInputProps = computed(() => {\n const inputProps = ElInput.props ?? []\n const keys = isArray(inputProps) ? inputProps : Object.keys(inputProps)\n return pick(props, keys)\n})\n\nconst ns = useNamespace('mention')\nconst disabled = useFormDisabled()\nconst contentId = useId()\n\nconst elInputRef = ref<InputInstance>()\nconst tooltipRef = ref<TooltipInstance>()\nconst dropdownRef = ref<InstanceType<typeof ElMentionDropdown>>()\n\nconst visible = ref(false)\nconst cursorStyle = ref<CSSProperties>()\nconst mentionCtx = ref<MentionCtx>()\n\nconst computedPlacement = computed<Placement>(() =>\n props.showArrow ? props.placement : `${props.placement}-start`\n)\n\nconst computedFallbackPlacements = computed<Placement[]>(() =>\n props.showArrow ? ['bottom', 'top'] : ['bottom-start', 'top-start']\n)\n\nconst aliasProps = computed(() => ({\n ...mentionDefaultProps,\n ...props.props,\n}))\n\nconst mapOption = (option: T) => {\n const base = {\n label: option[aliasProps.value.label],\n value: option[aliasProps.value.value],\n disabled: option[aliasProps.value.disabled],\n }\n return { ...option, ...base }\n}\n\nconst options = computed(() => props.options.map(mapOption))\n\nconst filteredOptions = computed(() => {\n const { filterOption } = props\n if (!mentionCtx.value || !filterOption) return options.value\n return options.value.filter((option) =>\n filterOption(mentionCtx.value!.pattern, option)\n )\n})\n\nconst dropdownVisible = computed(() => {\n return visible.value && (!!filteredOptions.value.length || props.loading)\n})\n\nconst hoveringId = computed(() => {\n return `${contentId.value}-${dropdownRef.value?.hoveringIndex}`\n})\n\nconst handleInputChange = (value: string) => {\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n syncAfterCursorMove()\n}\n\nconst handleInputKeyDown = (event: KeyboardEvent | Event) => {\n if (elInputRef.value?.isComposing) return\n const code = getEventCode(event as KeyboardEvent)\n\n switch (code) {\n case EVENT_CODE.left:\n case EVENT_CODE.right:\n syncAfterCursorMove()\n break\n case EVENT_CODE.up:\n case EVENT_CODE.down:\n if (!visible.value) return\n event.preventDefault()\n dropdownRef.value?.navigateOptions(\n code === EVENT_CODE.up ? 'prev' : 'next'\n )\n break\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n if (!visible.value) {\n props.type !== 'textarea' && syncAfterCursorMove()\n return\n }\n event.preventDefault()\n if (dropdownRef.value?.hoverOption) {\n dropdownRef.value?.selectHoverOption()\n } else {\n visible.value = false\n }\n break\n case EVENT_CODE.esc:\n if (!visible.value) return\n event.preventDefault()\n visible.value = false\n break\n case EVENT_CODE.backspace:\n if (props.whole && mentionCtx.value) {\n const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } =\n mentionCtx.value\n const inputEl = getInputEl()\n if (!inputEl) return\n const inputValue = inputEl.value\n const matchOption = options.value.find((item) => item.value === pattern)\n const isWhole = isFunction(props.checkIsWhole)\n ? props.checkIsWhole(pattern, prefix)\n : matchOption\n if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {\n event.preventDefault()\n const newValue =\n inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1)\n emit(UPDATE_MODEL_EVENT, newValue)\n emit(INPUT_EVENT, newValue)\n emit('whole-remove', pattern, prefix)\n\n const newSelectionEnd = prefixIndex\n nextTick(() => {\n // input value is updated\n inputEl.selectionStart = newSelectionEnd\n inputEl.selectionEnd = newSelectionEnd\n syncDropdownVisible()\n })\n }\n }\n }\n}\n\nconst { wrapperRef } = useFocusController(elInputRef, {\n disabled,\n afterFocus() {\n syncAfterCursorMove()\n },\n beforeBlur(event) {\n return tooltipRef.value?.isFocusInsideContent(event)\n },\n afterBlur() {\n visible.value = false\n },\n})\n\nconst handleInputMouseDown = () => {\n syncAfterCursorMove()\n}\n\n// Ensure that the original option passed by users is returned\nconst getOriginalOption = (mentionOption: MentionOption) => {\n return props.options.find((option: MentionOption) => {\n return mentionOption.value === option[aliasProps.value.value]\n })\n}\n\nconst handleSelect = (item: MentionOption) => {\n if (!mentionCtx.value) return\n const inputEl = getInputEl()\n if (!inputEl) return\n const inputValue = inputEl.value\n const { split } = props\n\n const newEndPart = inputValue.slice(mentionCtx.value.end)\n const alreadySeparated = newEndPart.startsWith(split)\n const newMiddlePart = `${item.value}${alreadySeparated ? '' : split}`\n\n const newValue =\n inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart\n\n emit(UPDATE_MODEL_EVENT, newValue)\n emit(INPUT_EVENT, newValue)\n emit('select', getOriginalOption(item)!, mentionCtx.value.prefix)\n\n const newSelectionEnd =\n mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0)\n\n nextTick(() => {\n // input value is updated\n inputEl.selectionStart = newSelectionEnd\n inputEl.selectionEnd = newSelectionEnd\n inputEl.focus()\n syncDropdownVisible()\n })\n}\n\nconst getInputEl = () =>\n props.type === 'textarea'\n ? elInputRef.value?.textarea\n : elInputRef.value?.input\n\nconst syncAfterCursorMove = () => {\n // can't use nextTick(), get cursor position will be wrong\n setTimeout(() => {\n syncCursor()\n syncDropdownVisible()\n nextTick(() => tooltipRef.value?.updatePopper())\n }, 0)\n}\n\nconst syncCursor = () => {\n const inputEl = getInputEl()\n if (!inputEl) return\n\n const caretPosition = getCursorPosition(inputEl)\n const inputRect = inputEl.getBoundingClientRect()\n const wrapperRect = wrapperRef.value!.getBoundingClientRect()\n\n cursorStyle.value = {\n position: 'absolute',\n width: 0,\n height: `${caretPosition.height}px`,\n left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`,\n top: `${caretPosition.top + inputRect.top - wrapperRect.top}px`,\n }\n}\n\nconst syncDropdownVisible = () => {\n const inputEl = getInputEl()\n if (document.activeElement !== inputEl) {\n visible.value = false\n return\n }\n const { prefix, split } = props\n mentionCtx.value = getMentionCtx(inputEl, prefix, split)\n if (mentionCtx.value && mentionCtx.value.splitIndex === -1) {\n visible.value = true\n emit('search', mentionCtx.value.pattern, mentionCtx.value.prefix)\n return\n }\n visible.value = false\n}\n\ndefineExpose({\n input: elInputRef,\n tooltip: tooltipRef,\n dropdownVisible,\n})\n</script>\n"],"mappings":""}
@@ -1,8 +1,9 @@
1
1
  import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
2
+ import { ClassValue } from "../../../utils/typescript.js";
2
3
  import { PopperEffect } from "../../popper/src/popper.js";
3
4
  import { MenuItemClicked } from "./types.js";
4
5
  import * as _$vue from "vue";
5
- import { CSSProperties, Component, ExtractPropTypes, ExtractPublicPropTypes, VNode } from "vue";
6
+ import { Component, ExtractPropTypes, ExtractPublicPropTypes, StyleValue, VNode } from "vue";
6
7
  import { NavigationFailure } from "vue-router";
7
8
 
8
9
  //#region ../../packages/components/menu/src/menu.d.ts
@@ -12,7 +13,7 @@ declare const menuProps: {
12
13
  readonly defaultOpeneds: EpPropFinalized<(new (...args: any[]) => string[]) | (() => string[]) | (((new (...args: any[]) => string[]) | (() => string[])) | null)[], unknown, unknown, () => [], boolean>;
13
14
  readonly uniqueOpened: BooleanConstructor;
14
15
  readonly router: BooleanConstructor;
15
- readonly menuTrigger: EpPropFinalized<StringConstructor, "click" | "hover", unknown, "hover", boolean>;
16
+ readonly menuTrigger: EpPropFinalized<StringConstructor, "hover" | "click", unknown, "hover", boolean>;
16
17
  readonly collapse: BooleanConstructor;
17
18
  readonly backgroundColor: StringConstructor;
18
19
  readonly textColor: StringConstructor;
@@ -23,13 +24,8 @@ declare const menuProps: {
23
24
  readonly popperOffset: EpPropFinalized<NumberConstructor, unknown, unknown, 6, boolean>;
24
25
  readonly ellipsisIcon: EpPropFinalized<(new (...args: any[]) => (string | Component) & {}) | (() => string | Component) | (((new (...args: any[]) => (string | Component) & {}) | (() => string | Component)) | null)[], unknown, unknown, () => _$vue.DefineComponent<{}, void, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>, boolean>;
25
26
  readonly popperEffect: EpPropFinalized<(new (...args: any[]) => string) | (() => PopperEffect) | (((new (...args: any[]) => string) | (() => PopperEffect)) | null)[], unknown, unknown, "dark", boolean>;
26
- readonly popperClass: StringConstructor;
27
- readonly popperStyle: {
28
- readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties) | (((new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties)) | null)[], unknown, unknown>>;
29
- readonly required: false;
30
- readonly validator: ((val: unknown) => boolean) | undefined;
31
- __epPropKey: true;
32
- };
27
+ readonly popperClass: EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue)) | null)[], unknown, unknown, undefined, boolean>;
28
+ readonly popperStyle: EpPropFinalized<(new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue) | (((new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
33
29
  readonly showTimeout: EpPropFinalized<NumberConstructor, unknown, unknown, 300, boolean>;
34
30
  readonly hideTimeout: EpPropFinalized<NumberConstructor, unknown, unknown, 300, boolean>;
35
31
  readonly persistent: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
@@ -48,7 +44,7 @@ declare const _default: _$vue.DefineComponent<ExtractPropTypes<{
48
44
  readonly defaultOpeneds: EpPropFinalized<(new (...args: any[]) => string[]) | (() => string[]) | (((new (...args: any[]) => string[]) | (() => string[])) | null)[], unknown, unknown, () => [], boolean>;
49
45
  readonly uniqueOpened: BooleanConstructor;
50
46
  readonly router: BooleanConstructor;
51
- readonly menuTrigger: EpPropFinalized<StringConstructor, "click" | "hover", unknown, "hover", boolean>;
47
+ readonly menuTrigger: EpPropFinalized<StringConstructor, "hover" | "click", unknown, "hover", boolean>;
52
48
  readonly collapse: BooleanConstructor;
53
49
  readonly backgroundColor: StringConstructor;
54
50
  readonly textColor: StringConstructor;
@@ -59,13 +55,8 @@ declare const _default: _$vue.DefineComponent<ExtractPropTypes<{
59
55
  readonly popperOffset: EpPropFinalized<NumberConstructor, unknown, unknown, 6, boolean>;
60
56
  readonly ellipsisIcon: EpPropFinalized<(new (...args: any[]) => (string | Component) & {}) | (() => string | Component) | (((new (...args: any[]) => (string | Component) & {}) | (() => string | Component)) | null)[], unknown, unknown, () => _$vue.DefineComponent<{}, void, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>, boolean>;
61
57
  readonly popperEffect: EpPropFinalized<(new (...args: any[]) => string) | (() => PopperEffect) | (((new (...args: any[]) => string) | (() => PopperEffect)) | null)[], unknown, unknown, "dark", boolean>;
62
- readonly popperClass: StringConstructor;
63
- readonly popperStyle: {
64
- readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties) | (((new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties)) | null)[], unknown, unknown>>;
65
- readonly required: false;
66
- readonly validator: ((val: unknown) => boolean) | undefined;
67
- __epPropKey: true;
68
- };
58
+ readonly popperClass: EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue)) | null)[], unknown, unknown, undefined, boolean>;
59
+ readonly popperStyle: EpPropFinalized<(new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue) | (((new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
69
60
  readonly showTimeout: EpPropFinalized<NumberConstructor, unknown, unknown, 300, boolean>;
70
61
  readonly hideTimeout: EpPropFinalized<NumberConstructor, unknown, unknown, 300, boolean>;
71
62
  readonly persistent: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
@@ -81,7 +72,7 @@ declare const _default: _$vue.DefineComponent<ExtractPropTypes<{
81
72
  readonly defaultOpeneds: EpPropFinalized<(new (...args: any[]) => string[]) | (() => string[]) | (((new (...args: any[]) => string[]) | (() => string[])) | null)[], unknown, unknown, () => [], boolean>;
82
73
  readonly uniqueOpened: BooleanConstructor;
83
74
  readonly router: BooleanConstructor;
84
- readonly menuTrigger: EpPropFinalized<StringConstructor, "click" | "hover", unknown, "hover", boolean>;
75
+ readonly menuTrigger: EpPropFinalized<StringConstructor, "hover" | "click", unknown, "hover", boolean>;
85
76
  readonly collapse: BooleanConstructor;
86
77
  readonly backgroundColor: StringConstructor;
87
78
  readonly textColor: StringConstructor;
@@ -92,30 +83,27 @@ declare const _default: _$vue.DefineComponent<ExtractPropTypes<{
92
83
  readonly popperOffset: EpPropFinalized<NumberConstructor, unknown, unknown, 6, boolean>;
93
84
  readonly ellipsisIcon: EpPropFinalized<(new (...args: any[]) => (string | Component) & {}) | (() => string | Component) | (((new (...args: any[]) => (string | Component) & {}) | (() => string | Component)) | null)[], unknown, unknown, () => _$vue.DefineComponent<{}, void, {}, {}, {}, _$vue.ComponentOptionsMixin, _$vue.ComponentOptionsMixin, {}, string, _$vue.PublicProps, Readonly<{}>, {}, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>, boolean>;
94
85
  readonly popperEffect: EpPropFinalized<(new (...args: any[]) => string) | (() => PopperEffect) | (((new (...args: any[]) => string) | (() => PopperEffect)) | null)[], unknown, unknown, "dark", boolean>;
95
- readonly popperClass: StringConstructor;
96
- readonly popperStyle: {
97
- readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties) | (((new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties)) | null)[], unknown, unknown>>;
98
- readonly required: false;
99
- readonly validator: ((val: unknown) => boolean) | undefined;
100
- __epPropKey: true;
101
- };
86
+ readonly popperClass: EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue)) | null)[], unknown, unknown, undefined, boolean>;
87
+ readonly popperStyle: EpPropFinalized<(new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue) | (((new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
102
88
  readonly showTimeout: EpPropFinalized<NumberConstructor, unknown, unknown, 300, boolean>;
103
89
  readonly hideTimeout: EpPropFinalized<NumberConstructor, unknown, unknown, 300, boolean>;
104
90
  readonly persistent: EpPropFinalized<BooleanConstructor, unknown, unknown, true, boolean>;
105
91
  }>> & Readonly<{
106
- onSelect?: ((index: string, indexPath: string[], item: MenuItemClicked, routerResult?: Promise<void | NavigationFailure> | undefined) => any) | undefined;
107
92
  onClose?: ((index: string, indexPath: string[]) => any) | undefined;
93
+ onSelect?: ((index: string, indexPath: string[], item: MenuItemClicked, routerResult?: Promise<void | NavigationFailure> | undefined) => any) | undefined;
108
94
  onOpen?: ((index: string, indexPath: string[]) => any) | undefined;
109
95
  }>, {
110
- readonly persistent: EpPropMergeType<BooleanConstructor, unknown, unknown>;
111
- readonly mode: EpPropMergeType<StringConstructor, "horizontal" | "vertical", unknown>;
112
96
  readonly collapse: boolean;
113
97
  readonly ellipsis: EpPropMergeType<BooleanConstructor, unknown, unknown>;
98
+ readonly popperClass: ClassValue;
99
+ readonly popperStyle: StyleValue;
100
+ readonly persistent: EpPropMergeType<BooleanConstructor, unknown, unknown>;
101
+ readonly mode: EpPropMergeType<StringConstructor, "horizontal" | "vertical", unknown>;
114
102
  readonly showTimeout: number;
115
103
  readonly hideTimeout: number;
116
104
  readonly defaultActive: string;
117
105
  readonly defaultOpeneds: string[];
118
- readonly menuTrigger: EpPropMergeType<StringConstructor, "click" | "hover", unknown>;
106
+ readonly menuTrigger: EpPropMergeType<StringConstructor, "hover" | "click", unknown>;
119
107
  readonly collapseTransition: EpPropMergeType<BooleanConstructor, unknown, unknown>;
120
108
  readonly popperOffset: number;
121
109
  readonly ellipsisIcon: EpPropMergeType<(new (...args: any[]) => (string | Component) & {}) | (() => string | Component) | (((new (...args: any[]) => (string | Component) & {}) | (() => string | Component)) | null)[], unknown, unknown>;
@@ -116,11 +116,27 @@ const menuProps = buildProps({
116
116
  /**
117
117
  * @description custom class name for all popup menus
118
118
  */
119
- popperClass: String,
119
+ popperClass: {
120
+ type: definePropType([
121
+ String,
122
+ Array,
123
+ Object,
124
+ Boolean
125
+ ]),
126
+ default: void 0
127
+ },
120
128
  /**
121
129
  * @description custom style for all popup menus
122
130
  */
123
- popperStyle: { type: definePropType([String, Object]) },
131
+ popperStyle: {
132
+ type: definePropType([
133
+ String,
134
+ Array,
135
+ Object,
136
+ Boolean
137
+ ]),
138
+ default: void 0
139
+ },
124
140
  /**
125
141
  * @description control timeout for all menus before showing
126
142
  */
@@ -1 +1 @@
1
- {"version":3,"file":"menu.mjs","names":["isUndefined","Menubar","ElSubMenu","vClickoutside","ElMenuCollapseTransition"],"sources":["../../../../../../packages/components/menu/src/menu.ts"],"sourcesContent":["import {\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onMounted,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n withDirectives,\n} from 'vue'\nimport { unrefElement, useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport ElIcon from '@element-plus/components/icon'\nimport { More } from '@element-plus/icons-vue'\nimport {\n buildProps,\n definePropType,\n flattedChildren,\n iconPropType,\n isArray,\n isObject,\n isString,\n isUndefined,\n mutable,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ClickOutside as vClickoutside } from '@element-plus/directives'\nimport Menubar from './utils/menu-bar'\nimport ElMenuCollapseTransition from './menu-collapse-transition.vue'\nimport ElSubMenu from './sub-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { PopperEffect } from '@element-plus/components/popper'\nimport type { MenuItemClicked, MenuProvider, SubMenuProvider } from './types'\nimport type { NavigationFailure, Router } from 'vue-router'\nimport type {\n CSSProperties,\n Component,\n DirectiveArguments,\n ExtractPropTypes,\n ExtractPublicPropTypes,\n VNode,\n VNodeArrayChildren,\n} from 'vue'\nimport type { UseResizeObserverReturn } from '@vueuse/core'\n\nexport const menuProps = buildProps({\n /**\n * @description menu display mode\n */\n mode: {\n type: String,\n values: ['horizontal', 'vertical'],\n default: 'vertical',\n },\n /**\n * @description index of active menu on page load\n */\n defaultActive: {\n type: String,\n default: '',\n },\n /**\n * @description array that contains indexes of currently active sub-menus\n */\n defaultOpeneds: {\n type: definePropType<string[]>(Array),\n default: () => mutable([] as const),\n },\n /**\n * @description whether only one sub-menu can be active\n */\n uniqueOpened: Boolean,\n /**\n * @description whether `vue-router` mode is activated. If true, index will be used as 'path' to activate the route action. Use with `default-active` to set the active item on load.\n */\n router: Boolean,\n /**\n * @description how sub-menus are triggered, only works when `mode` is 'horizontal'\n */\n menuTrigger: {\n type: String,\n values: ['hover', 'click'],\n default: 'hover',\n },\n /**\n * @description whether the menu is collapsed (available only in vertical mode)\n */\n collapse: Boolean,\n /**\n * @description background color of Menu (hex format) (deprecated, use `--bg-color` instead)\n * @deprecated use `--bg-color` instead\n */\n backgroundColor: String,\n /**\n * @description text color of Menu (hex format) (deprecated, use `--text-color` instead)\n * @deprecated use `--text-color` instead\n */\n textColor: String,\n /**\n * @description text color of currently active menu item (hex format) (deprecated, use `--active-color` instead)\n * @deprecated use `--active-color` instead\n */\n activeTextColor: String,\n /**\n * @description optional, whether menu is collapsed when clicking outside\n */\n closeOnClickOutside: Boolean,\n /**\n * @description whether to enable the collapse transition\n */\n collapseTransition: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether the menu is ellipsis (available only in horizontal mode)\n */\n ellipsis: {\n type: Boolean,\n default: true,\n },\n /**\n * @description offset of the popper (effective for all submenus)\n */\n popperOffset: {\n type: Number,\n default: 6,\n },\n /**\n * @description custom ellipsis icon (available only in horizontal mode and ellipsis is true)\n */\n ellipsisIcon: {\n type: iconPropType,\n default: () => More,\n },\n /**\n * @description Tooltip theme, built-in theme: `dark` / `light` when menu is collapsed\n */\n popperEffect: {\n type: definePropType<PopperEffect>(String),\n default: 'dark',\n },\n /**\n * @description custom class name for all popup menus\n */\n popperClass: String,\n /**\n * @description custom style for all popup menus\n */\n popperStyle: {\n type: definePropType<string | CSSProperties>([String, Object]),\n },\n /**\n * @description control timeout for all menus before showing\n */\n showTimeout: {\n type: Number,\n default: 300,\n },\n /**\n * @description control timeout for all menus before hiding\n */\n hideTimeout: {\n type: Number,\n default: 300,\n },\n /**\n * @description when menu inactive and `persistent` is `false` , dropdown menu will be destroyed\n */\n persistent: {\n type: Boolean,\n default: true,\n },\n} as const)\nexport type MenuProps = ExtractPropTypes<typeof menuProps>\nexport type MenuPropsPublic = ExtractPublicPropTypes<typeof menuProps>\n\nconst checkIndexPath = (indexPath: unknown): indexPath is string[] =>\n isArray(indexPath) && indexPath.every((path) => isString(path))\n\nexport const menuEmits = {\n close: (index: string, indexPath: string[]) =>\n isString(index) && checkIndexPath(indexPath),\n\n open: (index: string, indexPath: string[]) =>\n isString(index) && checkIndexPath(indexPath),\n\n select: (\n index: string,\n indexPath: string[],\n item: MenuItemClicked,\n routerResult?: Promise<void | NavigationFailure>\n ) =>\n isString(index) &&\n checkIndexPath(indexPath) &&\n isObject(item) &&\n (isUndefined(routerResult) || routerResult instanceof Promise),\n}\nexport type MenuEmits = typeof menuEmits\n\nconst DEFAULT_MORE_ITEM_WIDTH = 64\n\nexport default defineComponent({\n name: 'ElMenu',\n\n props: menuProps,\n emits: menuEmits,\n\n setup(props, { emit, slots, expose }) {\n const instance = getCurrentInstance()!\n const router = instance.appContext.config.globalProperties.$router as Router\n const menu = ref<HTMLUListElement>()\n const subMenu = ref<HTMLElement>()\n const nsMenu = useNamespace('menu')\n const nsSubMenu = useNamespace('sub-menu')\n let moreItemWidth = DEFAULT_MORE_ITEM_WIDTH\n\n // data\n const sliceIndex = ref(-1)\n\n const openedMenus = ref<MenuProvider['openedMenus']>(\n props.defaultOpeneds && !props.collapse\n ? props.defaultOpeneds.slice(0)\n : []\n )\n const activeIndex = ref<MenuProvider['activeIndex']>(props.defaultActive)\n const items = ref<MenuProvider['items']>({})\n const subMenus = ref<MenuProvider['subMenus']>({})\n\n // computed\n const isMenuPopup = computed<MenuProvider['isMenuPopup']>(\n () =>\n props.mode === 'horizontal' ||\n (props.mode === 'vertical' && props.collapse)\n )\n\n // methods\n const initMenu = () => {\n const activeItem = activeIndex.value && items.value[activeIndex.value]\n if (!activeItem || props.mode === 'horizontal' || props.collapse) return\n\n const indexPath = activeItem.indexPath\n\n // 展开该菜单项的路径上所有子菜单\n // expand all subMenus of the menu item\n indexPath.forEach((index) => {\n const subMenu = subMenus.value[index]\n subMenu && openMenu(index, subMenu.indexPath)\n })\n }\n\n const openMenu: MenuProvider['openMenu'] = (index, indexPath) => {\n if (openedMenus.value.includes(index)) return\n // 将不在该菜单路径下的其余菜单收起\n // collapse all menu that are not under current menu item\n if (props.uniqueOpened) {\n openedMenus.value = openedMenus.value.filter((index: string) =>\n indexPath.includes(index)\n )\n }\n openedMenus.value.push(index)\n emit('open', index, indexPath)\n }\n\n const close = (index: string) => {\n const i = openedMenus.value.indexOf(index)\n if (i !== -1) {\n openedMenus.value.splice(i, 1)\n }\n }\n\n const closeMenu: MenuProvider['closeMenu'] = (index, indexPath) => {\n close(index)\n emit('close', index, indexPath)\n }\n\n const handleSubMenuClick: MenuProvider['handleSubMenuClick'] = ({\n index,\n indexPath,\n }) => {\n const isOpened = openedMenus.value.includes(index)\n\n isOpened ? closeMenu(index, indexPath) : openMenu(index, indexPath)\n }\n\n const handleMenuItemClick: MenuProvider['handleMenuItemClick'] = (\n menuItem\n ) => {\n if (props.mode === 'horizontal' || props.collapse) {\n openedMenus.value = []\n }\n const { index, indexPath } = menuItem\n if (isNil(index) || isNil(indexPath)) return\n\n if (props.router && router) {\n const route = menuItem.route || index\n const routerResult = router.push(route).then((res) => {\n if (!res) activeIndex.value = index\n return res\n })\n emit(\n 'select',\n index,\n indexPath,\n { index, indexPath, route },\n routerResult\n )\n } else {\n activeIndex.value = index\n emit('select', index, indexPath, { index, indexPath })\n }\n }\n\n const updateActiveIndex = (val: string) => {\n const itemsInData = items.value\n const item =\n itemsInData[val] ||\n (activeIndex.value && itemsInData[activeIndex.value]) ||\n itemsInData[props.defaultActive]\n\n activeIndex.value = item?.index ?? val\n }\n\n const calcMenuItemWidth = (menuItem: HTMLElement) => {\n const computedStyle = getComputedStyle(menuItem)\n const marginLeft = Number.parseInt(computedStyle.marginLeft, 10)\n const marginRight = Number.parseInt(computedStyle.marginRight, 10)\n return menuItem.offsetWidth + marginLeft + marginRight || 0\n }\n\n const calcSliceIndex = () => {\n if (!menu.value) return -1\n\n const items = Array.from(menu.value.childNodes).filter(\n (item) =>\n item.nodeName !== '#comment' &&\n (item.nodeName !== '#text' || item.nodeValue)\n ) as HTMLElement[]\n\n const computedMenuStyle = getComputedStyle(menu.value)\n const paddingLeft = Number.parseInt(computedMenuStyle.paddingLeft, 10)\n const paddingRight = Number.parseInt(computedMenuStyle.paddingRight, 10)\n const menuWidth = menu.value.clientWidth - paddingLeft - paddingRight\n\n let calcWidth = 0\n let sliceIndex = 0\n items.forEach((item, index) => {\n calcWidth += calcMenuItemWidth(item)\n if (calcWidth <= menuWidth - moreItemWidth) {\n sliceIndex = index + 1\n }\n })\n return sliceIndex === items.length ? -1 : sliceIndex\n }\n\n const getIndexPath = (index: string) => subMenus.value[index].indexPath\n\n // Common computer monitor FPS is 60Hz, which means 60 redraws per second. Calculation formula: 1000ms/60 ≈ 16.67ms, In order to avoid a certain chance of repeated triggering when `resize`, set wait to 16.67 * 2 = 33.34\n const debounce = (fn: () => void, wait = 33.34) => {\n let timer: ReturnType<typeof setTimeout> | null\n return () => {\n timer && clearTimeout(timer)\n timer = setTimeout(() => {\n fn()\n }, wait)\n }\n }\n\n let isFirstTimeRender = true\n const handleResize = () => {\n const el = unrefElement(subMenu)\n if (el) moreItemWidth = calcMenuItemWidth(el) || DEFAULT_MORE_ITEM_WIDTH\n if (sliceIndex.value === calcSliceIndex()) return\n const callback = () => {\n sliceIndex.value = -1\n nextTick(() => {\n sliceIndex.value = calcSliceIndex()\n })\n }\n // execute callback directly when first time resize to avoid shaking\n isFirstTimeRender ? callback() : debounce(callback)()\n isFirstTimeRender = false\n }\n\n watch(\n () => props.defaultActive,\n (currentActive) => {\n if (!items.value[currentActive]) {\n activeIndex.value = ''\n }\n updateActiveIndex(currentActive)\n }\n )\n\n watch(\n () => props.collapse,\n (value) => {\n if (value) openedMenus.value = []\n }\n )\n\n watch(items.value, initMenu)\n\n let resizeStopper: UseResizeObserverReturn['stop']\n watchEffect(() => {\n if (props.mode === 'horizontal' && props.ellipsis)\n resizeStopper = useResizeObserver(menu, handleResize).stop\n else resizeStopper?.()\n })\n\n const mouseInChild = ref(false)\n\n // provide\n {\n const addSubMenu: MenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item\n }\n\n const removeSubMenu: MenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index]\n }\n\n const addMenuItem: MenuProvider['addMenuItem'] = (item) => {\n items.value[item.index] = item\n }\n\n const removeMenuItem: MenuProvider['removeMenuItem'] = (item) => {\n delete items.value[item.index]\n }\n\n provide<MenuProvider>(\n MENU_INJECTION_KEY,\n reactive({\n props,\n openedMenus,\n items,\n subMenus,\n activeIndex,\n isMenuPopup,\n\n addMenuItem,\n removeMenuItem,\n addSubMenu,\n removeSubMenu,\n openMenu,\n closeMenu,\n handleMenuItemClick,\n handleSubMenuClick,\n })\n )\n\n provide<SubMenuProvider>(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n mouseInChild,\n level: 0,\n })\n }\n\n // lifecycle\n onMounted(() => {\n if (props.mode === 'horizontal') {\n new Menubar(instance.vnode.el!, nsMenu.namespace.value)\n }\n })\n\n {\n const open = (index: string) => {\n const { indexPath } = subMenus.value[index]\n indexPath.forEach((i) => openMenu(i, indexPath))\n }\n\n expose({\n open,\n close,\n updateActiveIndex,\n handleResize,\n })\n }\n\n const ulStyle = useMenuCssVar(props, 0)\n\n return () => {\n let slot: VNodeArrayChildren = slots.default?.() ?? []\n const vShowMore: VNode[] = []\n\n if (props.mode === 'horizontal' && menu.value) {\n const originalSlot = (\n flattedChildren(slot) as VNodeArrayChildren\n ).filter((vnode) => {\n // Filter text and comment nodes (https://github.com/vuejs/core/blob/c875019d49b4c36a88d929ccadc31ad414747c7b/packages/shared/src/shapeFlags.ts#L5)\n return (vnode as VNode)?.shapeFlag !== 8\n })\n const slotDefault =\n sliceIndex.value === -1\n ? originalSlot\n : originalSlot.slice(0, sliceIndex.value)\n\n const slotMore =\n sliceIndex.value === -1 ? [] : originalSlot.slice(sliceIndex.value)\n\n if (slotMore?.length && props.ellipsis) {\n slot = slotDefault\n vShowMore.push(\n h(\n ElSubMenu,\n {\n ref: subMenu,\n index: 'sub-menu-more',\n class: nsSubMenu.e('hide-arrow'),\n popperOffset: props.popperOffset,\n },\n {\n title: () =>\n h(\n ElIcon,\n {\n class: nsSubMenu.e('icon-more'),\n },\n {\n default: () => h(props.ellipsisIcon as Component),\n }\n ),\n default: () => slotMore,\n }\n )\n )\n }\n }\n\n const directives: DirectiveArguments = props.closeOnClickOutside\n ? [\n [\n vClickoutside,\n () => {\n if (!openedMenus.value.length) return\n\n if (!mouseInChild.value) {\n openedMenus.value.forEach((openedMenu) =>\n emit('close', openedMenu, getIndexPath(openedMenu))\n )\n\n openedMenus.value = []\n }\n },\n ],\n ]\n : []\n\n const vMenu = withDirectives(\n h(\n 'ul',\n {\n key: String(props.collapse),\n role: 'menubar',\n ref: menu,\n style: ulStyle.value,\n class: {\n [nsMenu.b()]: true,\n [nsMenu.m(props.mode)]: true,\n [nsMenu.m('collapse')]: props.collapse,\n },\n },\n [...slot, ...vShowMore]\n ),\n directives\n )\n\n if (props.collapseTransition && props.mode === 'vertical') {\n return h(ElMenuCollapseTransition, () => vMenu)\n }\n\n return vMenu\n }\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"menu.mjs","names":["isUndefined","Menubar","ElSubMenu","vClickoutside","ElMenuCollapseTransition"],"sources":["../../../../../../packages/components/menu/src/menu.ts"],"sourcesContent":["import {\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onMounted,\n provide,\n reactive,\n ref,\n watch,\n watchEffect,\n withDirectives,\n} from 'vue'\nimport { unrefElement, useResizeObserver } from '@vueuse/core'\nimport { isNil } from 'lodash-unified'\nimport ElIcon from '@element-plus/components/icon'\nimport { More } from '@element-plus/icons-vue'\nimport {\n buildProps,\n definePropType,\n flattedChildren,\n iconPropType,\n isArray,\n isObject,\n isString,\n isUndefined,\n mutable,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ClickOutside as vClickoutside } from '@element-plus/directives'\nimport Menubar from './utils/menu-bar'\nimport ElMenuCollapseTransition from './menu-collapse-transition.vue'\nimport ElSubMenu from './sub-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { ClassValue } from '@element-plus/utils'\nimport type { PopperEffect } from '@element-plus/components/popper'\nimport type { MenuItemClicked, MenuProvider, SubMenuProvider } from './types'\nimport type { NavigationFailure, Router } from 'vue-router'\nimport type {\n Component,\n DirectiveArguments,\n ExtractPropTypes,\n ExtractPublicPropTypes,\n StyleValue,\n VNode,\n VNodeArrayChildren,\n} from 'vue'\nimport type { UseResizeObserverReturn } from '@vueuse/core'\n\nexport const menuProps = buildProps({\n /**\n * @description menu display mode\n */\n mode: {\n type: String,\n values: ['horizontal', 'vertical'],\n default: 'vertical',\n },\n /**\n * @description index of active menu on page load\n */\n defaultActive: {\n type: String,\n default: '',\n },\n /**\n * @description array that contains indexes of currently active sub-menus\n */\n defaultOpeneds: {\n type: definePropType<string[]>(Array),\n default: () => mutable([] as const),\n },\n /**\n * @description whether only one sub-menu can be active\n */\n uniqueOpened: Boolean,\n /**\n * @description whether `vue-router` mode is activated. If true, index will be used as 'path' to activate the route action. Use with `default-active` to set the active item on load.\n */\n router: Boolean,\n /**\n * @description how sub-menus are triggered, only works when `mode` is 'horizontal'\n */\n menuTrigger: {\n type: String,\n values: ['hover', 'click'],\n default: 'hover',\n },\n /**\n * @description whether the menu is collapsed (available only in vertical mode)\n */\n collapse: Boolean,\n /**\n * @description background color of Menu (hex format) (deprecated, use `--bg-color` instead)\n * @deprecated use `--bg-color` instead\n */\n backgroundColor: String,\n /**\n * @description text color of Menu (hex format) (deprecated, use `--text-color` instead)\n * @deprecated use `--text-color` instead\n */\n textColor: String,\n /**\n * @description text color of currently active menu item (hex format) (deprecated, use `--active-color` instead)\n * @deprecated use `--active-color` instead\n */\n activeTextColor: String,\n /**\n * @description optional, whether menu is collapsed when clicking outside\n */\n closeOnClickOutside: Boolean,\n /**\n * @description whether to enable the collapse transition\n */\n collapseTransition: {\n type: Boolean,\n default: true,\n },\n /**\n * @description whether the menu is ellipsis (available only in horizontal mode)\n */\n ellipsis: {\n type: Boolean,\n default: true,\n },\n /**\n * @description offset of the popper (effective for all submenus)\n */\n popperOffset: {\n type: Number,\n default: 6,\n },\n /**\n * @description custom ellipsis icon (available only in horizontal mode and ellipsis is true)\n */\n ellipsisIcon: {\n type: iconPropType,\n default: () => More,\n },\n /**\n * @description Tooltip theme, built-in theme: `dark` / `light` when menu is collapsed\n */\n popperEffect: {\n type: definePropType<PopperEffect>(String),\n default: 'dark',\n },\n /**\n * @description custom class name for all popup menus\n */\n popperClass: {\n type: definePropType<ClassValue>([String, Array, Object, Boolean]),\n default: undefined,\n },\n /**\n * @description custom style for all popup menus\n */\n popperStyle: {\n type: definePropType<StyleValue>([String, Array, Object, Boolean]),\n default: undefined,\n },\n /**\n * @description control timeout for all menus before showing\n */\n showTimeout: {\n type: Number,\n default: 300,\n },\n /**\n * @description control timeout for all menus before hiding\n */\n hideTimeout: {\n type: Number,\n default: 300,\n },\n /**\n * @description when menu inactive and `persistent` is `false` , dropdown menu will be destroyed\n */\n persistent: {\n type: Boolean,\n default: true,\n },\n} as const)\nexport type MenuProps = ExtractPropTypes<typeof menuProps>\nexport type MenuPropsPublic = ExtractPublicPropTypes<typeof menuProps>\n\nconst checkIndexPath = (indexPath: unknown): indexPath is string[] =>\n isArray(indexPath) && indexPath.every((path) => isString(path))\n\nexport const menuEmits = {\n close: (index: string, indexPath: string[]) =>\n isString(index) && checkIndexPath(indexPath),\n\n open: (index: string, indexPath: string[]) =>\n isString(index) && checkIndexPath(indexPath),\n\n select: (\n index: string,\n indexPath: string[],\n item: MenuItemClicked,\n routerResult?: Promise<void | NavigationFailure>\n ) =>\n isString(index) &&\n checkIndexPath(indexPath) &&\n isObject(item) &&\n (isUndefined(routerResult) || routerResult instanceof Promise),\n}\nexport type MenuEmits = typeof menuEmits\n\nconst DEFAULT_MORE_ITEM_WIDTH = 64\n\nexport default defineComponent({\n name: 'ElMenu',\n\n props: menuProps,\n emits: menuEmits,\n\n setup(props, { emit, slots, expose }) {\n const instance = getCurrentInstance()!\n const router = instance.appContext.config.globalProperties.$router as Router\n const menu = ref<HTMLUListElement>()\n const subMenu = ref<HTMLElement>()\n const nsMenu = useNamespace('menu')\n const nsSubMenu = useNamespace('sub-menu')\n let moreItemWidth = DEFAULT_MORE_ITEM_WIDTH\n\n // data\n const sliceIndex = ref(-1)\n\n const openedMenus = ref<MenuProvider['openedMenus']>(\n props.defaultOpeneds && !props.collapse\n ? props.defaultOpeneds.slice(0)\n : []\n )\n const activeIndex = ref<MenuProvider['activeIndex']>(props.defaultActive)\n const items = ref<MenuProvider['items']>({})\n const subMenus = ref<MenuProvider['subMenus']>({})\n\n // computed\n const isMenuPopup = computed<MenuProvider['isMenuPopup']>(\n () =>\n props.mode === 'horizontal' ||\n (props.mode === 'vertical' && props.collapse)\n )\n\n // methods\n const initMenu = () => {\n const activeItem = activeIndex.value && items.value[activeIndex.value]\n if (!activeItem || props.mode === 'horizontal' || props.collapse) return\n\n const indexPath = activeItem.indexPath\n\n // 展开该菜单项的路径上所有子菜单\n // expand all subMenus of the menu item\n indexPath.forEach((index) => {\n const subMenu = subMenus.value[index]\n subMenu && openMenu(index, subMenu.indexPath)\n })\n }\n\n const openMenu: MenuProvider['openMenu'] = (index, indexPath) => {\n if (openedMenus.value.includes(index)) return\n // 将不在该菜单路径下的其余菜单收起\n // collapse all menu that are not under current menu item\n if (props.uniqueOpened) {\n openedMenus.value = openedMenus.value.filter((index: string) =>\n indexPath.includes(index)\n )\n }\n openedMenus.value.push(index)\n emit('open', index, indexPath)\n }\n\n const close = (index: string) => {\n const i = openedMenus.value.indexOf(index)\n if (i !== -1) {\n openedMenus.value.splice(i, 1)\n }\n }\n\n const closeMenu: MenuProvider['closeMenu'] = (index, indexPath) => {\n close(index)\n emit('close', index, indexPath)\n }\n\n const handleSubMenuClick: MenuProvider['handleSubMenuClick'] = ({\n index,\n indexPath,\n }) => {\n const isOpened = openedMenus.value.includes(index)\n\n isOpened ? closeMenu(index, indexPath) : openMenu(index, indexPath)\n }\n\n const handleMenuItemClick: MenuProvider['handleMenuItemClick'] = (\n menuItem\n ) => {\n if (props.mode === 'horizontal' || props.collapse) {\n openedMenus.value = []\n }\n const { index, indexPath } = menuItem\n if (isNil(index) || isNil(indexPath)) return\n\n if (props.router && router) {\n const route = menuItem.route || index\n const routerResult = router.push(route).then((res) => {\n if (!res) activeIndex.value = index\n return res\n })\n emit(\n 'select',\n index,\n indexPath,\n { index, indexPath, route },\n routerResult\n )\n } else {\n activeIndex.value = index\n emit('select', index, indexPath, { index, indexPath })\n }\n }\n\n const updateActiveIndex = (val: string) => {\n const itemsInData = items.value\n const item =\n itemsInData[val] ||\n (activeIndex.value && itemsInData[activeIndex.value]) ||\n itemsInData[props.defaultActive]\n\n activeIndex.value = item?.index ?? val\n }\n\n const calcMenuItemWidth = (menuItem: HTMLElement) => {\n const computedStyle = getComputedStyle(menuItem)\n const marginLeft = Number.parseInt(computedStyle.marginLeft, 10)\n const marginRight = Number.parseInt(computedStyle.marginRight, 10)\n return menuItem.offsetWidth + marginLeft + marginRight || 0\n }\n\n const calcSliceIndex = () => {\n if (!menu.value) return -1\n\n const items = Array.from(menu.value.childNodes).filter(\n (item) =>\n item.nodeName !== '#comment' &&\n (item.nodeName !== '#text' || item.nodeValue)\n ) as HTMLElement[]\n\n const computedMenuStyle = getComputedStyle(menu.value)\n const paddingLeft = Number.parseInt(computedMenuStyle.paddingLeft, 10)\n const paddingRight = Number.parseInt(computedMenuStyle.paddingRight, 10)\n const menuWidth = menu.value.clientWidth - paddingLeft - paddingRight\n\n let calcWidth = 0\n let sliceIndex = 0\n items.forEach((item, index) => {\n calcWidth += calcMenuItemWidth(item)\n if (calcWidth <= menuWidth - moreItemWidth) {\n sliceIndex = index + 1\n }\n })\n return sliceIndex === items.length ? -1 : sliceIndex\n }\n\n const getIndexPath = (index: string) => subMenus.value[index].indexPath\n\n // Common computer monitor FPS is 60Hz, which means 60 redraws per second. Calculation formula: 1000ms/60 ≈ 16.67ms, In order to avoid a certain chance of repeated triggering when `resize`, set wait to 16.67 * 2 = 33.34\n const debounce = (fn: () => void, wait = 33.34) => {\n let timer: ReturnType<typeof setTimeout> | null\n return () => {\n timer && clearTimeout(timer)\n timer = setTimeout(() => {\n fn()\n }, wait)\n }\n }\n\n let isFirstTimeRender = true\n const handleResize = () => {\n const el = unrefElement(subMenu)\n if (el) moreItemWidth = calcMenuItemWidth(el) || DEFAULT_MORE_ITEM_WIDTH\n if (sliceIndex.value === calcSliceIndex()) return\n const callback = () => {\n sliceIndex.value = -1\n nextTick(() => {\n sliceIndex.value = calcSliceIndex()\n })\n }\n // execute callback directly when first time resize to avoid shaking\n isFirstTimeRender ? callback() : debounce(callback)()\n isFirstTimeRender = false\n }\n\n watch(\n () => props.defaultActive,\n (currentActive) => {\n if (!items.value[currentActive]) {\n activeIndex.value = ''\n }\n updateActiveIndex(currentActive)\n }\n )\n\n watch(\n () => props.collapse,\n (value) => {\n if (value) openedMenus.value = []\n }\n )\n\n watch(items.value, initMenu)\n\n let resizeStopper: UseResizeObserverReturn['stop']\n watchEffect(() => {\n if (props.mode === 'horizontal' && props.ellipsis)\n resizeStopper = useResizeObserver(menu, handleResize).stop\n else resizeStopper?.()\n })\n\n const mouseInChild = ref(false)\n\n // provide\n {\n const addSubMenu: MenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item\n }\n\n const removeSubMenu: MenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index]\n }\n\n const addMenuItem: MenuProvider['addMenuItem'] = (item) => {\n items.value[item.index] = item\n }\n\n const removeMenuItem: MenuProvider['removeMenuItem'] = (item) => {\n delete items.value[item.index]\n }\n\n provide<MenuProvider>(\n MENU_INJECTION_KEY,\n reactive({\n props,\n openedMenus,\n items,\n subMenus,\n activeIndex,\n isMenuPopup,\n\n addMenuItem,\n removeMenuItem,\n addSubMenu,\n removeSubMenu,\n openMenu,\n closeMenu,\n handleMenuItemClick,\n handleSubMenuClick,\n }) as unknown as MenuProvider // Avoid TS2589\n )\n\n provide<SubMenuProvider>(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n mouseInChild,\n level: 0,\n })\n }\n\n // lifecycle\n onMounted(() => {\n if (props.mode === 'horizontal') {\n new Menubar(instance.vnode.el!, nsMenu.namespace.value)\n }\n })\n\n {\n const open = (index: string) => {\n const { indexPath } = subMenus.value[index]\n indexPath.forEach((i) => openMenu(i, indexPath))\n }\n\n expose({\n open,\n close,\n updateActiveIndex,\n handleResize,\n })\n }\n\n const ulStyle = useMenuCssVar(props, 0)\n\n return () => {\n let slot: VNodeArrayChildren = slots.default?.() ?? []\n const vShowMore: VNode[] = []\n\n if (props.mode === 'horizontal' && menu.value) {\n const originalSlot = (\n flattedChildren(slot) as VNodeArrayChildren\n ).filter((vnode) => {\n // Filter text and comment nodes (https://github.com/vuejs/core/blob/c875019d49b4c36a88d929ccadc31ad414747c7b/packages/shared/src/shapeFlags.ts#L5)\n return (vnode as VNode)?.shapeFlag !== 8\n })\n const slotDefault =\n sliceIndex.value === -1\n ? originalSlot\n : originalSlot.slice(0, sliceIndex.value)\n\n const slotMore =\n sliceIndex.value === -1 ? [] : originalSlot.slice(sliceIndex.value)\n\n if (slotMore?.length && props.ellipsis) {\n slot = slotDefault\n vShowMore.push(\n h(\n ElSubMenu,\n {\n ref: subMenu,\n index: 'sub-menu-more',\n class: nsSubMenu.e('hide-arrow'),\n popperOffset: props.popperOffset,\n },\n {\n title: () =>\n h(\n ElIcon,\n {\n class: nsSubMenu.e('icon-more'),\n },\n {\n default: () => h(props.ellipsisIcon as Component),\n }\n ),\n default: () => slotMore,\n }\n )\n )\n }\n }\n\n const directives: DirectiveArguments = props.closeOnClickOutside\n ? [\n [\n vClickoutside,\n () => {\n if (!openedMenus.value.length) return\n\n if (!mouseInChild.value) {\n openedMenus.value.forEach((openedMenu) =>\n emit('close', openedMenu, getIndexPath(openedMenu))\n )\n\n openedMenus.value = []\n }\n },\n ],\n ]\n : []\n\n const vMenu = withDirectives(\n h(\n 'ul',\n {\n key: String(props.collapse),\n role: 'menubar',\n ref: menu,\n style: ulStyle.value,\n class: {\n [nsMenu.b()]: true,\n [nsMenu.m(props.mode)]: true,\n [nsMenu.m('collapse')]: props.collapse,\n },\n },\n [...slot, ...vShowMore]\n ),\n directives\n )\n\n if (props.collapseTransition && props.mode === 'vertical') {\n return h(ElMenuCollapseTransition, () => vMenu)\n }\n\n return vMenu\n }\n },\n})\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { EpPropFinalized, EpPropMergeType } from "../../../utils/vue/props/types.js";
2
+ import { ClassValue } from "../../../utils/typescript.js";
2
3
  import * as _$vue from "vue";
3
- import { CSSProperties, ExtractPropTypes, ExtractPublicPropTypes } from "vue";
4
+ import { ExtractPropTypes, ExtractPublicPropTypes, StyleValue } from "vue";
4
5
 
5
6
  //#region ../../packages/components/menu/src/sub-menu.d.ts
6
7
  declare const subMenuProps: {
@@ -12,13 +13,8 @@ declare const subMenuProps: {
12
13
  };
13
14
  readonly showTimeout: NumberConstructor;
14
15
  readonly hideTimeout: NumberConstructor;
15
- readonly popperClass: StringConstructor;
16
- readonly popperStyle: {
17
- readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties) | (((new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties)) | null)[], unknown, unknown>>;
18
- readonly required: false;
19
- readonly validator: ((val: unknown) => boolean) | undefined;
20
- __epPropKey: true;
21
- };
16
+ readonly popperClass: EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue)) | null)[], unknown, unknown, undefined, boolean>;
17
+ readonly popperStyle: EpPropFinalized<(new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue) | (((new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
22
18
  readonly disabled: BooleanConstructor;
23
19
  readonly teleported: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
24
20
  readonly popperOffset: NumberConstructor;
@@ -58,13 +54,8 @@ declare const _default: _$vue.DefineComponent<ExtractPropTypes<{
58
54
  };
59
55
  readonly showTimeout: NumberConstructor;
60
56
  readonly hideTimeout: NumberConstructor;
61
- readonly popperClass: StringConstructor;
62
- readonly popperStyle: {
63
- readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties) | (((new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties)) | null)[], unknown, unknown>>;
64
- readonly required: false;
65
- readonly validator: ((val: unknown) => boolean) | undefined;
66
- __epPropKey: true;
67
- };
57
+ readonly popperClass: EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue)) | null)[], unknown, unknown, undefined, boolean>;
58
+ readonly popperStyle: EpPropFinalized<(new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue) | (((new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
68
59
  readonly disabled: BooleanConstructor;
69
60
  readonly teleported: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
70
61
  readonly popperOffset: NumberConstructor;
@@ -103,13 +94,8 @@ declare const _default: _$vue.DefineComponent<ExtractPropTypes<{
103
94
  };
104
95
  readonly showTimeout: NumberConstructor;
105
96
  readonly hideTimeout: NumberConstructor;
106
- readonly popperClass: StringConstructor;
107
- readonly popperStyle: {
108
- readonly type: _$vue.PropType<EpPropMergeType<(new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties) | (((new (...args: any[]) => string | CSSProperties) | (() => string | CSSProperties)) | null)[], unknown, unknown>>;
109
- readonly required: false;
110
- readonly validator: ((val: unknown) => boolean) | undefined;
111
- __epPropKey: true;
112
- };
97
+ readonly popperClass: EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue)) | null)[], unknown, unknown, undefined, boolean>;
98
+ readonly popperStyle: EpPropFinalized<(new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue) | (((new (...args: any[]) => string | false | _$vue.CSSProperties | StyleValue[]) | (() => StyleValue)) | null)[], unknown, unknown, undefined, boolean>;
113
99
  readonly disabled: BooleanConstructor;
114
100
  readonly teleported: EpPropFinalized<BooleanConstructor, unknown, unknown, undefined, boolean>;
115
101
  readonly popperOffset: NumberConstructor;
@@ -140,6 +126,8 @@ declare const _default: _$vue.DefineComponent<ExtractPropTypes<{
140
126
  }>> & Readonly<{}>, {
141
127
  readonly teleported: EpPropMergeType<BooleanConstructor, unknown, unknown>;
142
128
  readonly disabled: boolean;
129
+ readonly popperClass: ClassValue;
130
+ readonly popperStyle: StyleValue;
143
131
  }, {}, {}, {}, string, _$vue.ComponentProvideOptions, true, {}, any>;
144
132
  //#endregion
145
133
  export { SubMenuProps, SubMenuPropsPublic, _default as default, subMenuProps };
@@ -33,11 +33,27 @@ const subMenuProps = buildProps({
33
33
  /**
34
34
  * @description custom class name for the popup menu
35
35
  */
36
- popperClass: String,
36
+ popperClass: {
37
+ type: definePropType([
38
+ String,
39
+ Array,
40
+ Object,
41
+ Boolean
42
+ ]),
43
+ default: void 0
44
+ },
37
45
  /**
38
46
  * @description custom style for the popup menu
39
47
  */
40
- popperStyle: { type: definePropType([String, Object]) },
48
+ popperStyle: {
49
+ type: definePropType([
50
+ String,
51
+ Array,
52
+ Object,
53
+ Boolean
54
+ ]),
55
+ default: void 0
56
+ },
41
57
  /**
42
58
  * @description whether the sub-menu is disabled
43
59
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sub-menu.mjs","names":[],"sources":["../../../../../../packages/components/menu/src/sub-menu.ts"],"sourcesContent":["import {\n Fragment,\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n inject,\n nextTick,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n ref,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport ElCollapseTransition from '@element-plus/components/collapse-transition'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n buildProps,\n definePropType,\n focusElement,\n iconPropType,\n isString,\n isUndefined,\n throwError,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ArrowDown, ArrowRight } from '@element-plus/icons-vue'\nimport { ElIcon } from '@element-plus/components/icon'\nimport useMenu from './use-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { Placement } from '@element-plus/components/popper'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type {\n CSSProperties,\n ExtractPropTypes,\n ExtractPublicPropTypes,\n VNodeArrayChildren,\n} from 'vue'\nimport type { MenuProvider, SubMenuProvider } from './types'\n\nexport const subMenuProps = buildProps({\n /**\n * @description unique identification\n */\n index: {\n type: String,\n required: true,\n },\n /**\n * @description timeout before showing a sub-menu(inherit `show-timeout` of the menu by default.)\n */\n showTimeout: Number,\n /**\n * @description timeout before hiding a sub-menu(inherit `hide-timeout` of the menu by default.)\n */\n hideTimeout: Number,\n /**\n * @description custom class name for the popup menu\n */\n popperClass: String,\n /**\n * @description custom style for the popup menu\n */\n popperStyle: {\n type: definePropType<string | CSSProperties>([String, Object]),\n },\n /**\n * @description whether the sub-menu is disabled\n */\n disabled: Boolean,\n /**\n * @description whether popup menu is teleported to the body\n */\n teleported: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description offset of the popper (overrides the `popper` of menu)\n */\n popperOffset: Number,\n /**\n * @description Icon when menu are expanded and submenu are closed, `expand-close-icon` and `expand-open-icon` need to be passed together to take effect\n */\n expandCloseIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are expanded and submenu are opened, `expand-open-icon` and `expand-close-icon` need to be passed together to take effect\n */\n expandOpenIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are collapsed and submenu are closed, `collapse-close-icon` and `collapse-open-icon` need to be passed together to take effect\n */\n collapseCloseIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are collapsed and submenu are opened, `collapse-open-icon` and `collapse-close-icon` need to be passed together to take effect\n */\n collapseOpenIcon: {\n type: iconPropType,\n },\n} as const)\nexport type SubMenuProps = ExtractPropTypes<typeof subMenuProps>\nexport type SubMenuPropsPublic = ExtractPublicPropTypes<typeof subMenuProps>\n\nconst COMPONENT_NAME = 'ElSubMenu'\nexport default defineComponent({\n name: COMPONENT_NAME,\n props: subMenuProps,\n\n setup(props, { slots, expose }) {\n const instance = getCurrentInstance()!\n const { indexPath, parentMenu } = useMenu(\n instance,\n computed(() => props.index)\n )\n const nsMenu = useNamespace('menu')\n const nsSubMenu = useNamespace('sub-menu')\n\n // inject\n const rootMenu = inject<MenuProvider>(MENU_INJECTION_KEY)\n if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\n const subMenu = inject<SubMenuProvider>(\n `${SUB_MENU_INJECTION_KEY}${parentMenu.value!.uid}`\n )\n if (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\n const items = ref<MenuProvider['items']>({})\n const subMenus = ref<MenuProvider['subMenus']>({})\n\n let timeout: (() => void) | undefined\n const mouseInChild = ref(false)\n const verticalTitleRef = ref<HTMLDivElement>()\n const vPopper = ref<TooltipInstance>()\n\n // computed\n const isFirstLevel = computed(() => subMenu.level === 0)\n const currentPlacement = computed<Placement>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? 'bottom-start'\n : 'right-start'\n )\n const subMenuTitleIcon = computed(() => {\n const isExpandedMode =\n (mode.value === 'horizontal' && isFirstLevel.value) ||\n (mode.value === 'vertical' && !rootMenu.props.collapse)\n\n if (isExpandedMode) {\n if (props.expandCloseIcon && props.expandOpenIcon) {\n return opened.value ? props.expandOpenIcon : props.expandCloseIcon\n }\n return ArrowDown\n } else {\n if (props.collapseCloseIcon && props.collapseOpenIcon) {\n return opened.value ? props.collapseOpenIcon : props.collapseCloseIcon\n }\n return ArrowRight\n }\n })\n\n const appendToBody = computed(() => {\n const value = props.teleported\n return isUndefined(value) ? isFirstLevel.value : value\n })\n const menuTransitionName = computed(() =>\n rootMenu.props.collapse\n ? `${nsMenu.namespace.value}-zoom-in-left`\n : `${nsMenu.namespace.value}-zoom-in-top`\n )\n const fallbackPlacements = computed<Placement[]>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? [\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end',\n 'right-start',\n 'left-start',\n ]\n : [\n 'right-start',\n 'right',\n 'right-end',\n 'left-start',\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end',\n ]\n )\n const opened = computed(() => rootMenu.openedMenus.includes(props.index))\n const active = computed(() =>\n [...Object.values(items.value), ...Object.values(subMenus.value)].some(\n ({ active }) => active\n )\n )\n\n const mode = computed(() => rootMenu.props.mode)\n const persistent = computed(() => rootMenu.props.persistent)\n const item = reactive({\n index: props.index,\n indexPath,\n active,\n })\n\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1)\n\n const subMenuPopperOffset = computed(\n () => props.popperOffset ?? rootMenu.props.popperOffset\n )\n\n const subMenuPopperClass = computed(\n () => props.popperClass ?? rootMenu.props.popperClass\n )\n\n const subMenuPopperStyle = computed(\n () => props.popperStyle ?? rootMenu.props.popperStyle\n )\n\n const subMenuShowTimeout = computed(\n () => props.showTimeout ?? rootMenu.props.showTimeout\n )\n\n const subMenuHideTimeout = computed(\n () => props.hideTimeout ?? rootMenu.props.hideTimeout\n )\n\n // methods\n const doDestroy = () =>\n vPopper.value?.popperRef?.popperInstanceRef?.destroy()\n\n const handleCollapseToggle = (value: boolean) => {\n if (!value) {\n doDestroy()\n }\n }\n\n const handleClick = () => {\n if (\n (rootMenu.props.menuTrigger === 'hover' &&\n rootMenu.props.mode === 'horizontal') ||\n (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n props.disabled\n )\n return\n\n rootMenu.handleSubMenuClick({\n index: props.index,\n indexPath: indexPath.value,\n active: active.value,\n })\n }\n\n const handleMouseenter = (\n event: MouseEvent | FocusEvent,\n showTimeout = subMenuShowTimeout.value\n ) => {\n if (event.type === 'focus') return\n\n if (\n (rootMenu.props.menuTrigger === 'click' &&\n rootMenu.props.mode === 'horizontal') ||\n (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n props.disabled\n ) {\n subMenu.mouseInChild.value = true\n return\n }\n subMenu.mouseInChild.value = true\n\n timeout?.()\n ;({ stop: timeout } = useTimeoutFn(() => {\n rootMenu.openMenu(props.index, indexPath.value)\n }, showTimeout))\n\n if (appendToBody.value) {\n parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'))\n }\n\n if (event.type === 'mouseenter' && event.target) {\n nextTick(() => {\n focusElement(event.target as HTMLElement, { preventScroll: true })\n })\n }\n }\n\n const handleMouseleave = (deepDispatch = false) => {\n if (\n (rootMenu.props.menuTrigger === 'click' &&\n rootMenu.props.mode === 'horizontal') ||\n (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')\n ) {\n subMenu.mouseInChild.value = false\n return\n }\n timeout?.()\n subMenu.mouseInChild.value = false\n ;({ stop: timeout } = useTimeoutFn(\n () =>\n !mouseInChild.value &&\n rootMenu.closeMenu(props.index, indexPath.value),\n subMenuHideTimeout.value\n ))\n\n if (appendToBody.value && deepDispatch) {\n subMenu.handleMouseleave?.(true)\n }\n }\n\n watch(\n () => rootMenu.props.collapse,\n (value) => handleCollapseToggle(Boolean(value))\n )\n\n // provide\n {\n const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item\n }\n const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index]\n }\n provide<SubMenuProvider>(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n handleMouseleave,\n mouseInChild,\n level: subMenu.level + 1,\n })\n }\n\n // expose\n expose({\n opened,\n })\n\n // lifecycle\n onMounted(() => {\n rootMenu.addSubMenu(item)\n subMenu.addSubMenu(item)\n })\n\n onBeforeUnmount(() => {\n subMenu.removeSubMenu(item)\n rootMenu.removeSubMenu(item)\n })\n\n return () => {\n const titleTag: VNodeArrayChildren = [\n slots.title?.(),\n h(\n ElIcon,\n {\n class: nsSubMenu.e('icon-arrow'),\n style: {\n transform: opened.value\n ? (props.expandCloseIcon && props.expandOpenIcon) ||\n (props.collapseCloseIcon &&\n props.collapseOpenIcon &&\n rootMenu.props.collapse)\n ? 'none'\n : 'rotateZ(180deg)'\n : 'none',\n },\n },\n {\n default: () =>\n isString(subMenuTitleIcon.value)\n ? h(instance.appContext.components[subMenuTitleIcon.value])\n : h(subMenuTitleIcon.value),\n }\n ),\n ]\n\n // this render function is only used for bypass `Vue`'s compiler caused patching issue.\n const child = rootMenu.isMenuPopup\n ? h(\n ElTooltip,\n {\n ref: vPopper,\n visible: opened.value,\n effect: 'light',\n pure: true,\n offset: subMenuPopperOffset.value,\n showArrow: false,\n persistent: persistent.value,\n popperClass: subMenuPopperClass.value,\n popperStyle: subMenuPopperStyle.value,\n placement: currentPlacement.value,\n teleported: appendToBody.value,\n fallbackPlacements: fallbackPlacements.value,\n transition: menuTransitionName.value,\n gpuAcceleration: false,\n },\n {\n content: () =>\n h(\n 'div',\n {\n class: [\n nsMenu.m(mode.value),\n nsMenu.m('popup-container'),\n subMenuPopperClass.value,\n ],\n onMouseenter: (evt: MouseEvent) =>\n handleMouseenter(evt, 100),\n onMouseleave: () => handleMouseleave(true),\n onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100),\n },\n [\n h(\n 'ul',\n {\n class: [\n nsMenu.b(),\n nsMenu.m('popup'),\n nsMenu.m(`popup-${currentPlacement.value}`),\n ],\n style: ulStyle.value,\n },\n [slots.default?.()]\n ),\n ]\n ),\n default: () =>\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n onClick: handleClick,\n },\n titleTag\n ),\n }\n )\n : h(Fragment, {}, [\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n ref: verticalTitleRef,\n onClick: handleClick,\n },\n titleTag\n ),\n h(\n ElCollapseTransition,\n {},\n {\n default: () =>\n withDirectives(\n h(\n 'ul',\n {\n role: 'menu',\n class: [nsMenu.b(), nsMenu.m('inline')],\n style: ulStyle.value,\n },\n [slots.default?.()]\n ),\n [[vShow, opened.value]]\n ),\n }\n ),\n ])\n\n return h(\n 'li',\n {\n class: [\n nsSubMenu.b(),\n nsSubMenu.is('active', active.value),\n nsSubMenu.is('opened', opened.value),\n nsSubMenu.is('disabled', props.disabled),\n ],\n role: 'menuitem',\n ariaHaspopup: true,\n ariaExpanded: opened.value,\n onMouseenter: handleMouseenter,\n onMouseleave: () => handleMouseleave(),\n onFocus: handleMouseenter,\n },\n [child]\n )\n }\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"sub-menu.mjs","names":[],"sources":["../../../../../../packages/components/menu/src/sub-menu.ts"],"sourcesContent":["import {\n Fragment,\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n inject,\n nextTick,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n ref,\n vShow,\n watch,\n withDirectives,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport ElCollapseTransition from '@element-plus/components/collapse-transition'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n buildProps,\n definePropType,\n focusElement,\n iconPropType,\n isString,\n isUndefined,\n throwError,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { ArrowDown, ArrowRight } from '@element-plus/icons-vue'\nimport { ElIcon } from '@element-plus/components/icon'\nimport useMenu from './use-menu'\nimport { useMenuCssVar } from './use-menu-css-var'\nimport { MENU_INJECTION_KEY, SUB_MENU_INJECTION_KEY } from './tokens'\n\nimport type { ClassValue } from '@element-plus/utils'\nimport type { Placement } from '@element-plus/components/popper'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type {\n ExtractPropTypes,\n ExtractPublicPropTypes,\n StyleValue,\n VNodeArrayChildren,\n} from 'vue'\nimport type { MenuProvider, SubMenuProvider } from './types'\n\nexport const subMenuProps = buildProps({\n /**\n * @description unique identification\n */\n index: {\n type: String,\n required: true,\n },\n /**\n * @description timeout before showing a sub-menu(inherit `show-timeout` of the menu by default.)\n */\n showTimeout: Number,\n /**\n * @description timeout before hiding a sub-menu(inherit `hide-timeout` of the menu by default.)\n */\n hideTimeout: Number,\n /**\n * @description custom class name for the popup menu\n */\n popperClass: {\n type: definePropType<ClassValue>([String, Array, Object, Boolean]),\n default: undefined,\n },\n /**\n * @description custom style for the popup menu\n */\n popperStyle: {\n type: definePropType<StyleValue>([String, Array, Object, Boolean]),\n default: undefined,\n },\n /**\n * @description whether the sub-menu is disabled\n */\n disabled: Boolean,\n /**\n * @description whether popup menu is teleported to the body\n */\n teleported: {\n type: Boolean,\n default: undefined,\n },\n /**\n * @description offset of the popper (overrides the `popper` of menu)\n */\n popperOffset: Number,\n /**\n * @description Icon when menu are expanded and submenu are closed, `expand-close-icon` and `expand-open-icon` need to be passed together to take effect\n */\n expandCloseIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are expanded and submenu are opened, `expand-open-icon` and `expand-close-icon` need to be passed together to take effect\n */\n expandOpenIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are collapsed and submenu are closed, `collapse-close-icon` and `collapse-open-icon` need to be passed together to take effect\n */\n collapseCloseIcon: {\n type: iconPropType,\n },\n /**\n * @description Icon when menu are collapsed and submenu are opened, `collapse-open-icon` and `collapse-close-icon` need to be passed together to take effect\n */\n collapseOpenIcon: {\n type: iconPropType,\n },\n} as const)\nexport type SubMenuProps = ExtractPropTypes<typeof subMenuProps>\nexport type SubMenuPropsPublic = ExtractPublicPropTypes<typeof subMenuProps>\n\nconst COMPONENT_NAME = 'ElSubMenu'\nexport default defineComponent({\n name: COMPONENT_NAME,\n props: subMenuProps,\n\n setup(props, { slots, expose }) {\n const instance = getCurrentInstance()!\n const { indexPath, parentMenu } = useMenu(\n instance,\n computed(() => props.index)\n )\n const nsMenu = useNamespace('menu')\n const nsSubMenu = useNamespace('sub-menu')\n\n // inject\n const rootMenu = inject<MenuProvider>(MENU_INJECTION_KEY)\n if (!rootMenu) throwError(COMPONENT_NAME, 'can not inject root menu')\n\n const subMenu = inject<SubMenuProvider>(\n `${SUB_MENU_INJECTION_KEY}${parentMenu.value!.uid}`\n )\n if (!subMenu) throwError(COMPONENT_NAME, 'can not inject sub menu')\n\n const items = ref<MenuProvider['items']>({})\n const subMenus = ref<MenuProvider['subMenus']>({})\n\n let timeout: (() => void) | undefined\n const mouseInChild = ref(false)\n const verticalTitleRef = ref<HTMLDivElement>()\n const vPopper = ref<TooltipInstance>()\n\n // computed\n const isFirstLevel = computed(() => subMenu.level === 0)\n const currentPlacement = computed<Placement>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? 'bottom-start'\n : 'right-start'\n )\n const subMenuTitleIcon = computed(() => {\n const isExpandedMode =\n (mode.value === 'horizontal' && isFirstLevel.value) ||\n (mode.value === 'vertical' && !rootMenu.props.collapse)\n\n if (isExpandedMode) {\n if (props.expandCloseIcon && props.expandOpenIcon) {\n return opened.value ? props.expandOpenIcon : props.expandCloseIcon\n }\n return ArrowDown\n } else {\n if (props.collapseCloseIcon && props.collapseOpenIcon) {\n return opened.value ? props.collapseOpenIcon : props.collapseCloseIcon\n }\n return ArrowRight\n }\n })\n\n const appendToBody = computed(() => {\n const value = props.teleported\n return isUndefined(value) ? isFirstLevel.value : value\n })\n const menuTransitionName = computed(() =>\n rootMenu.props.collapse\n ? `${nsMenu.namespace.value}-zoom-in-left`\n : `${nsMenu.namespace.value}-zoom-in-top`\n )\n const fallbackPlacements = computed<Placement[]>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? [\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end',\n 'right-start',\n 'left-start',\n ]\n : [\n 'right-start',\n 'right',\n 'right-end',\n 'left-start',\n 'bottom-start',\n 'bottom-end',\n 'top-start',\n 'top-end',\n ]\n )\n const opened = computed(() => rootMenu.openedMenus.includes(props.index))\n const active = computed(() =>\n [...Object.values(items.value), ...Object.values(subMenus.value)].some(\n ({ active }) => active\n )\n )\n\n const mode = computed(() => rootMenu.props.mode)\n const persistent = computed(() => rootMenu.props.persistent)\n const item = reactive({\n index: props.index,\n indexPath,\n active,\n })\n\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1)\n\n const subMenuPopperOffset = computed(\n () => props.popperOffset ?? rootMenu.props.popperOffset\n )\n\n const subMenuPopperClass = computed(\n () => props.popperClass ?? rootMenu.props.popperClass\n )\n\n const subMenuPopperStyle = computed(\n () => props.popperStyle ?? rootMenu.props.popperStyle\n )\n\n const subMenuShowTimeout = computed(\n () => props.showTimeout ?? rootMenu.props.showTimeout\n )\n\n const subMenuHideTimeout = computed(\n () => props.hideTimeout ?? rootMenu.props.hideTimeout\n )\n\n // methods\n const doDestroy = () =>\n vPopper.value?.popperRef?.popperInstanceRef?.destroy()\n\n const handleCollapseToggle = (value: boolean) => {\n if (!value) {\n doDestroy()\n }\n }\n\n const handleClick = () => {\n if (\n (rootMenu.props.menuTrigger === 'hover' &&\n rootMenu.props.mode === 'horizontal') ||\n (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n props.disabled\n )\n return\n\n rootMenu.handleSubMenuClick({\n index: props.index,\n indexPath: indexPath.value,\n active: active.value,\n })\n }\n\n const handleMouseenter = (\n event: MouseEvent | FocusEvent,\n showTimeout = subMenuShowTimeout.value\n ) => {\n if (event.type === 'focus') return\n\n if (\n (rootMenu.props.menuTrigger === 'click' &&\n rootMenu.props.mode === 'horizontal') ||\n (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') ||\n props.disabled\n ) {\n subMenu.mouseInChild.value = true\n return\n }\n subMenu.mouseInChild.value = true\n\n timeout?.()\n ;({ stop: timeout } = useTimeoutFn(() => {\n rootMenu.openMenu(props.index, indexPath.value)\n }, showTimeout))\n\n if (appendToBody.value) {\n parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'))\n }\n\n if (event.type === 'mouseenter' && event.target) {\n nextTick(() => {\n focusElement(event.target as HTMLElement, { preventScroll: true })\n })\n }\n }\n\n const handleMouseleave = (deepDispatch = false) => {\n if (\n (rootMenu.props.menuTrigger === 'click' &&\n rootMenu.props.mode === 'horizontal') ||\n (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')\n ) {\n subMenu.mouseInChild.value = false\n return\n }\n timeout?.()\n subMenu.mouseInChild.value = false\n ;({ stop: timeout } = useTimeoutFn(\n () =>\n !mouseInChild.value &&\n rootMenu.closeMenu(props.index, indexPath.value),\n subMenuHideTimeout.value\n ))\n\n if (appendToBody.value && deepDispatch) {\n subMenu.handleMouseleave?.(true)\n }\n }\n\n watch(\n () => rootMenu.props.collapse,\n (value) => handleCollapseToggle(Boolean(value))\n )\n\n // provide\n {\n const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item\n }\n const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index]\n }\n provide<SubMenuProvider>(`${SUB_MENU_INJECTION_KEY}${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n handleMouseleave,\n mouseInChild,\n level: subMenu.level + 1,\n })\n }\n\n // expose\n expose({\n opened,\n })\n\n // lifecycle\n onMounted(() => {\n rootMenu.addSubMenu(item)\n subMenu.addSubMenu(item)\n })\n\n onBeforeUnmount(() => {\n subMenu.removeSubMenu(item)\n rootMenu.removeSubMenu(item)\n })\n\n return () => {\n const titleTag: VNodeArrayChildren = [\n slots.title?.(),\n h(\n ElIcon,\n {\n class: nsSubMenu.e('icon-arrow'),\n style: {\n transform: opened.value\n ? (props.expandCloseIcon && props.expandOpenIcon) ||\n (props.collapseCloseIcon &&\n props.collapseOpenIcon &&\n rootMenu.props.collapse)\n ? 'none'\n : 'rotateZ(180deg)'\n : 'none',\n },\n },\n {\n default: () =>\n isString(subMenuTitleIcon.value)\n ? h(instance.appContext.components[subMenuTitleIcon.value])\n : h(subMenuTitleIcon.value),\n }\n ),\n ]\n\n // this render function is only used for bypass `Vue`'s compiler caused patching issue.\n const child = rootMenu.isMenuPopup\n ? h(\n ElTooltip,\n {\n ref: vPopper,\n visible: opened.value,\n effect: 'light',\n pure: true,\n offset: subMenuPopperOffset.value,\n showArrow: false,\n persistent: persistent.value,\n popperClass: subMenuPopperClass.value,\n popperStyle: subMenuPopperStyle.value,\n placement: currentPlacement.value,\n teleported: appendToBody.value,\n fallbackPlacements: fallbackPlacements.value,\n transition: menuTransitionName.value,\n gpuAcceleration: false,\n },\n {\n content: () =>\n h(\n 'div',\n {\n class: [\n nsMenu.m(mode.value),\n nsMenu.m('popup-container'),\n subMenuPopperClass.value,\n ],\n onMouseenter: (evt: MouseEvent) =>\n handleMouseenter(evt, 100),\n onMouseleave: () => handleMouseleave(true),\n onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100),\n },\n [\n h(\n 'ul',\n {\n class: [\n nsMenu.b(),\n nsMenu.m('popup'),\n nsMenu.m(`popup-${currentPlacement.value}`),\n ],\n style: ulStyle.value,\n },\n [slots.default?.()]\n ),\n ]\n ),\n default: () =>\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n onClick: handleClick,\n },\n titleTag\n ),\n }\n )\n : h(Fragment, {}, [\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n ref: verticalTitleRef,\n onClick: handleClick,\n },\n titleTag\n ),\n h(\n ElCollapseTransition,\n {},\n {\n default: () =>\n withDirectives(\n h(\n 'ul',\n {\n role: 'menu',\n class: [nsMenu.b(), nsMenu.m('inline')],\n style: ulStyle.value,\n },\n [slots.default?.()]\n ),\n [[vShow, opened.value]]\n ),\n }\n ),\n ])\n\n return h(\n 'li',\n {\n class: [\n nsSubMenu.b(),\n nsSubMenu.is('active', active.value),\n nsSubMenu.is('opened', opened.value),\n nsSubMenu.is('disabled', props.disabled),\n ],\n role: 'menuitem',\n ariaHaspopup: true,\n ariaExpanded: opened.value,\n onMouseenter: handleMouseenter,\n onMouseleave: () => handleMouseleave(),\n onFocus: handleMouseenter,\n },\n [child]\n )\n }\n },\n})\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { IconPropType } from "../../../utils/vue/icon.js";
2
2
  import { EpPropFinalized } from "../../../utils/vue/props/types.js";
3
- import { Mutable } from "../../../utils/typescript.js";
3
+ import { ClassValue, Mutable } from "../../../utils/typescript.js";
4
4
  import _default from "./message.vue.js";
5
5
  import * as _$vue from "vue";
6
6
  import { AppContext, ExtractPublicPropTypes, VNode } from "vue";
@@ -10,7 +10,7 @@ interface MessageProps {
10
10
  /**
11
11
  * @description custom class name for Message
12
12
  */
13
- customClass?: string;
13
+ customClass?: ClassValue;
14
14
  /**
15
15
  * @description whether `message` is treated as HTML string
16
16
  */
@@ -106,7 +106,7 @@ declare const messageDefaults: Mutable<{
106
106
  * @deprecated Removed after 3.0.0, Use `MessageProps` instead.
107
107
  */
108
108
  declare const messageProps: {
109
- readonly customClass: EpPropFinalized<StringConstructor, unknown, unknown, "", boolean>;
109
+ readonly customClass: EpPropFinalized<(new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue) | (((new (...args: any[]) => string | false | Record<string, any> | ClassValue[]) | (() => ClassValue)) | null)[], unknown, unknown, "", boolean>;
110
110
  readonly dangerouslyUseHTMLString: EpPropFinalized<BooleanConstructor, unknown, unknown, false, boolean>;
111
111
  readonly duration: EpPropFinalized<NumberConstructor, unknown, unknown, 3000, boolean>;
112
112
  readonly icon: EpPropFinalized<(new (...args: any[]) => (string | _$vue.Component) & {}) | (() => string | _$vue.Component) | (((new (...args: any[]) => (string | _$vue.Component) & {}) | (() => string | _$vue.Component)) | null)[], unknown, unknown, undefined, boolean>;
@@ -130,7 +130,7 @@ declare const messageProps: {
130
130
  readonly prototype: any;
131
131
  }) | null)[], unknown, unknown, undefined, boolean>;
132
132
  readonly showClose: EpPropFinalized<BooleanConstructor, unknown, unknown, false, boolean>;
133
- readonly type: EpPropFinalized<StringConstructor, "error" | "info" | "primary" | "success" | "warning", unknown, "info", boolean>;
133
+ readonly type: EpPropFinalized<StringConstructor, "info" | "primary" | "success" | "warning" | "error", unknown, "info", boolean>;
134
134
  readonly plain: EpPropFinalized<BooleanConstructor, unknown, unknown, false, boolean>;
135
135
  readonly offset: EpPropFinalized<NumberConstructor, unknown, unknown, 16, boolean>;
136
136
  readonly placement: EpPropFinalized<StringConstructor, "top" | "bottom" | "top-left" | "top-right" | "bottom-left" | "bottom-right", unknown, undefined, boolean>;
@@ -45,7 +45,12 @@ const messageProps = buildProps({
45
45
  * @description custom class name for Message
46
46
  */
47
47
  customClass: {
48
- type: String,
48
+ type: definePropType([
49
+ String,
50
+ Array,
51
+ Object,
52
+ Boolean
53
+ ]),
49
54
  default: messageDefaults.customClass
50
55
  },
51
56
  /**