element-plus 1.2.0-beta.4 → 1.2.0-beta.5

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 (491) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.full.js +1149 -988
  3. package/dist/index.full.min.js +9 -9
  4. package/dist/index.full.min.js.map +1 -1
  5. package/dist/index.full.min.mjs +9 -9
  6. package/dist/index.full.min.mjs.map +1 -1
  7. package/dist/index.full.mjs +1145 -982
  8. package/es/components/autocomplete/src/index.vue_vue_type_script_lang.mjs +1 -1
  9. package/es/components/calendar/index.d.ts +2 -2
  10. package/es/components/calendar/src/date-table.vue_vue_type_script_lang.mjs +2 -2
  11. package/es/components/calendar/src/date-table.vue_vue_type_script_lang.mjs.map +1 -1
  12. package/es/components/calendar/src/date-table.vue_vue_type_template_id_297fdb36_lang.mjs.map +1 -1
  13. package/es/components/calendar/src/index.vue.d.ts +1 -1
  14. package/es/components/calendar/src/index.vue_vue_type_script_lang.mjs +2 -2
  15. package/es/components/calendar/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  16. package/es/components/calendar/src/index.vue_vue_type_template_id_819aa44a_lang.mjs.map +1 -1
  17. package/es/components/carousel/src/item.vue_vue_type_script_lang.mjs +0 -1
  18. package/es/components/carousel/src/item.vue_vue_type_script_lang.mjs.map +1 -1
  19. package/es/components/carousel/src/item.vue_vue_type_template_id_3d2e4fb8_lang.mjs.map +1 -1
  20. package/es/components/cascader/src/index.vue_vue_type_script_lang.mjs +2 -2
  21. package/es/components/cascader/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  22. package/es/components/cascader/src/index.vue_vue_type_template_id_0429c2db_lang.mjs.map +1 -1
  23. package/es/components/cascader-panel/src/index.vue_vue_type_script_lang.mjs +13 -18
  24. package/es/components/cascader-panel/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  25. package/es/components/cascader-panel/src/index.vue_vue_type_template_id_97c48f5c_lang.mjs.map +1 -1
  26. package/es/components/cascader-panel/src/menu.vue.d.ts +1 -1
  27. package/es/components/cascader-panel/src/menu.vue_vue_type_script_lang.mjs +2 -2
  28. package/es/components/cascader-panel/src/menu.vue_vue_type_script_lang.mjs.map +1 -1
  29. package/es/components/cascader-panel/src/menu.vue_vue_type_template_id_9c79e4e2_lang.mjs.map +1 -1
  30. package/es/components/color-picker/index.d.ts +2 -2
  31. package/es/components/color-picker/src/index.vue.d.ts +1 -1
  32. package/es/components/color-picker/src/index.vue_vue_type_script_lang.mjs +2 -2
  33. package/es/components/color-picker/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  34. package/es/components/color-picker/src/index.vue_vue_type_template_id_46a474d5_lang.mjs.map +1 -1
  35. package/es/components/config-provider/index.d.ts +2 -1
  36. package/es/components/config-provider/index.mjs +1 -0
  37. package/es/components/config-provider/index.mjs.map +1 -1
  38. package/es/components/config-provider/src/config-provider.d.ts +1 -1
  39. package/es/components/config-provider/src/index.d.ts +1 -1
  40. package/es/components/config-provider/src/index.mjs +2 -2
  41. package/es/components/config-provider/src/index.mjs.map +1 -1
  42. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue.d.ts +1 -1
  43. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_script_lang.mjs +2 -2
  44. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_script_lang.mjs.map +1 -1
  45. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_template_id_0572814e_lang.mjs.map +1 -1
  46. package/es/components/date-picker/src/date-picker-com/basic-month-table.vue.d.ts +1 -1
  47. package/es/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_script_lang.mjs +2 -2
  48. package/es/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_script_lang.mjs.map +1 -1
  49. package/es/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_template_id_2f6fcbf2_lang.mjs.map +1 -1
  50. package/es/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_script_lang.mjs +2 -2
  51. package/es/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_script_lang.mjs.map +1 -1
  52. package/es/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_template_id_441df31d_lang.mjs.map +1 -1
  53. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue.d.ts +1 -1
  54. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs +2 -2
  55. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs.map +1 -1
  56. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.mjs.map +1 -1
  57. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue.d.ts +1 -1
  58. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.mjs +2 -2
  59. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.mjs.map +1 -1
  60. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_template_id_62b45ab2_lang.mjs.map +1 -1
  61. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue.d.ts +1 -1
  62. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_script_lang.mjs +2 -2
  63. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_script_lang.mjs.map +1 -1
  64. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_template_id_2e377892_lang.mjs.map +1 -1
  65. package/es/components/dialog/src/use-dialog.mjs +4 -4
  66. package/es/components/dialog/src/use-dialog.mjs.map +1 -1
  67. package/es/components/dropdown/index.d.ts +1 -1
  68. package/es/components/dropdown/src/dropdown.vue.d.ts +1 -1
  69. package/es/components/empty/src/empty.vue_vue_type_script_lang.mjs +2 -2
  70. package/es/components/empty/src/empty.vue_vue_type_script_lang.mjs.map +1 -1
  71. package/es/components/empty/src/empty.vue_vue_type_template_id_10d211eb_lang.mjs.map +1 -1
  72. package/es/components/image/index.d.ts +1 -1
  73. package/es/components/image/src/image.vue.d.ts +1 -1
  74. package/es/components/image/src/image.vue_vue_type_script_lang.mjs +3 -3
  75. package/es/components/image/src/image.vue_vue_type_script_lang.mjs.map +1 -1
  76. package/es/components/image/src/image.vue_vue_type_template_id_34467287_lang.mjs.map +1 -1
  77. package/es/components/image-viewer/src/image-viewer.vue_vue_type_script_lang.mjs +2 -2
  78. package/es/components/image-viewer/src/image-viewer.vue_vue_type_script_lang.mjs.map +1 -1
  79. package/es/components/image-viewer/src/image-viewer.vue_vue_type_template_id_4b22ad85_lang.mjs.map +1 -1
  80. package/es/components/index.mjs +1 -0
  81. package/es/components/index.mjs.map +1 -1
  82. package/es/components/input/src/input.vue_vue_type_script_lang.mjs +1 -1
  83. package/es/components/menu/src/menu-collapse-transition.vue_vue_type_script_lang.mjs +1 -2
  84. package/es/components/menu/src/menu-collapse-transition.vue_vue_type_script_lang.mjs.map +1 -1
  85. package/es/components/menu/src/menu-collapse-transition.vue_vue_type_template_id_db8e3ce6_lang.mjs.map +1 -1
  86. package/es/components/message-box/src/index.vue_vue_type_script_lang.mjs +8 -8
  87. package/es/components/message-box/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  88. package/es/components/message-box/src/index.vue_vue_type_template_id_7035e868_lang.mjs +2 -0
  89. package/es/components/message-box/src/index.vue_vue_type_template_id_7035e868_lang.mjs.map +1 -1
  90. package/es/components/page-header/index.d.ts +1 -1
  91. package/es/components/page-header/src/page-header.vue.d.ts +1 -1
  92. package/es/components/page-header/src/page-header.vue_vue_type_script_lang.mjs +2 -2
  93. package/es/components/page-header/src/page-header.vue_vue_type_script_lang.mjs.map +1 -1
  94. package/es/components/page-header/src/page-header.vue_vue_type_template_id_d12fb4b2_lang.mjs.map +1 -1
  95. package/es/components/pagination/src/components/jumper.vue.d.ts +1 -1
  96. package/es/components/pagination/src/components/jumper.vue_vue_type_script_lang.mjs +2 -2
  97. package/es/components/pagination/src/components/jumper.vue_vue_type_script_lang.mjs.map +1 -1
  98. package/es/components/pagination/src/components/jumper.vue_vue_type_template_id_772239ce_lang.mjs.map +1 -1
  99. package/es/components/pagination/src/components/sizes.vue.d.ts +1 -1
  100. package/es/components/pagination/src/components/sizes.vue_vue_type_script_lang.mjs +2 -2
  101. package/es/components/pagination/src/components/sizes.vue_vue_type_script_lang.mjs.map +1 -1
  102. package/es/components/pagination/src/components/sizes.vue_vue_type_template_id_3a063678_lang.mjs.map +1 -1
  103. package/es/components/pagination/src/components/total.vue.d.ts +1 -1
  104. package/es/components/pagination/src/components/total.vue_vue_type_script_lang.mjs +2 -2
  105. package/es/components/pagination/src/components/total.vue_vue_type_script_lang.mjs.map +1 -1
  106. package/es/components/pagination/src/components/total.vue_vue_type_template_id_bc261314_lang.mjs.map +1 -1
  107. package/es/components/pagination/src/pagination.mjs +2 -2
  108. package/es/components/pagination/src/pagination.mjs.map +1 -1
  109. package/es/components/popconfirm/src/popconfirm.vue_vue_type_script_lang.mjs +2 -2
  110. package/es/components/popconfirm/src/popconfirm.vue_vue_type_script_lang.mjs.map +1 -1
  111. package/es/components/popconfirm/src/popconfirm.vue_vue_type_template_id_16409d25_lang.mjs.map +1 -1
  112. package/es/components/popper/src/use-popper/defaults.mjs +1 -1
  113. package/es/components/popper/src/use-popper/index.d.ts +1 -1538
  114. package/es/components/scrollbar/src/scrollbar.vue_vue_type_script_lang.mjs +1 -1
  115. package/es/components/scrollbar/src/scrollbar.vue_vue_type_script_lang.mjs.map +1 -1
  116. package/es/components/scrollbar/src/scrollbar.vue_vue_type_template_id_303f965d_lang.mjs.map +1 -1
  117. package/es/components/select/src/select.vue_vue_type_script_lang.mjs +3 -3
  118. package/es/components/select/src/select.vue_vue_type_script_lang.mjs.map +1 -1
  119. package/es/components/select/src/select.vue_vue_type_template_id_33774f85_lang.mjs.map +1 -1
  120. package/es/components/select/src/useSelect.mjs +3 -3
  121. package/es/components/select/src/useSelect.mjs.map +1 -1
  122. package/es/components/select-v2/index.d.ts +2 -2
  123. package/es/components/select-v2/src/select.vue.d.ts +1 -1
  124. package/es/components/select-v2/src/useSelect.mjs +2 -2
  125. package/es/components/select-v2/src/useSelect.mjs.map +1 -1
  126. package/es/components/skeleton/src/skeleton.vue_vue_type_script_lang.mjs +1 -1
  127. package/es/components/table/index.d.ts +1 -1
  128. package/es/components/table/src/filter-panel.vue.d.ts +2 -2
  129. package/es/components/table/src/filter-panel.vue_vue_type_script_lang.mjs +2 -2
  130. package/es/components/table/src/filter-panel.vue_vue_type_script_lang.mjs.map +1 -1
  131. package/es/components/table/src/filter-panel.vue_vue_type_template_id_fde1c940_lang.mjs.map +1 -1
  132. package/es/components/table/src/table-body/index.d.ts +1 -1
  133. package/es/components/table/src/table-footer/index.d.ts +1 -1
  134. package/es/components/table/src/table-header/index.d.ts +1 -1
  135. package/es/components/table/src/table.vue.d.ts +5 -13
  136. package/es/components/table/src/table.vue_vue_type_script_lang.mjs +2 -2
  137. package/es/components/table/src/table.vue_vue_type_script_lang.mjs.map +1 -1
  138. package/es/components/table/src/table.vue_vue_type_template_id_4a1660ad_lang.mjs.map +1 -1
  139. package/es/components/time-picker/src/common/picker.vue_vue_type_script_lang.mjs +2 -2
  140. package/es/components/time-picker/src/common/picker.vue_vue_type_script_lang.mjs.map +1 -1
  141. package/es/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.mjs.map +1 -1
  142. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts +1 -1
  143. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_lang.mjs +2 -2
  144. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_lang.mjs.map +1 -1
  145. package/es/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_template_id_3b3cfa6a_lang.mjs.map +1 -1
  146. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue.d.ts +1 -1
  147. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_lang.mjs +2 -2
  148. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_lang.mjs.map +1 -1
  149. package/es/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_template_id_57d94b44_lang.mjs.map +1 -1
  150. package/es/components/transfer/src/index.vue_vue_type_script_lang.mjs +2 -2
  151. package/es/components/transfer/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  152. package/es/components/transfer/src/index.vue_vue_type_template_id_6c8b9070_lang.mjs.map +1 -1
  153. package/es/components/transfer/src/transfer-panel.vue.d.ts +1 -1
  154. package/es/components/transfer/src/transfer-panel.vue_vue_type_script_lang.mjs +2 -2
  155. package/es/components/transfer/src/transfer-panel.vue_vue_type_script_lang.mjs.map +1 -1
  156. package/es/components/transfer/src/transfer-panel.vue_vue_type_template_id_1a7d1f9c_lang.mjs.map +1 -1
  157. package/es/components/tree/index.d.ts +2 -2
  158. package/es/components/tree/src/tree.vue.d.ts +1 -1
  159. package/es/components/tree/src/tree.vue_vue_type_script_lang.mjs +2 -2
  160. package/es/components/tree/src/tree.vue_vue_type_script_lang.mjs.map +1 -1
  161. package/es/components/tree/src/tree.vue_vue_type_template_id_7539bec5_lang.mjs.map +1 -1
  162. package/es/components/tree-v2/index.d.ts +1 -1
  163. package/es/components/tree-v2/src/tree.vue.d.ts +1 -1
  164. package/es/components/tree-v2/src/tree.vue_vue_type_script_lang.mjs +2 -2
  165. package/es/components/tree-v2/src/tree.vue_vue_type_script_lang.mjs.map +1 -1
  166. package/es/components/tree-v2/src/tree.vue_vue_type_template_id_5b45a1b2_lang.mjs.map +1 -1
  167. package/es/components/tree-v2/src/virtual-tree.mjs +4 -4
  168. package/es/components/upload/src/upload-list.vue.d.ts +1 -1
  169. package/es/components/upload/src/upload-list.vue_vue_type_script_lang.mjs +2 -2
  170. package/es/components/upload/src/upload-list.vue_vue_type_script_lang.mjs.map +1 -1
  171. package/es/components/upload/src/upload-list.vue_vue_type_template_id_192277b6_lang.mjs.map +1 -1
  172. package/es/hooks/index.d.ts +12 -15
  173. package/es/hooks/index.mjs +12 -15
  174. package/es/hooks/index.mjs.map +1 -1
  175. package/es/hooks/use-attrs/index.d.ts +2 -2
  176. package/es/hooks/use-attrs/index.mjs +2 -2
  177. package/es/hooks/use-attrs/index.mjs.map +1 -1
  178. package/es/hooks/use-focus/index.d.ts +1 -2
  179. package/es/hooks/use-focus/index.mjs +2 -2
  180. package/es/hooks/use-focus/index.mjs.map +1 -1
  181. package/es/hooks/use-form-item/index.d.ts +1 -1
  182. package/es/hooks/use-form-item/index.mjs +3 -3
  183. package/es/hooks/use-form-item/index.mjs.map +1 -1
  184. package/es/hooks/use-global-config/index.d.ts +1 -1
  185. package/es/hooks/use-global-config/index.mjs +1 -3
  186. package/es/hooks/use-global-config/index.mjs.map +1 -1
  187. package/es/hooks/use-locale/index.d.ts +9 -7
  188. package/es/hooks/use-locale/index.mjs +18 -51
  189. package/es/hooks/use-locale/index.mjs.map +1 -1
  190. package/es/hooks/use-lockscreen/index.d.ts +1 -2
  191. package/es/hooks/use-lockscreen/index.mjs +19 -21
  192. package/es/hooks/use-lockscreen/index.mjs.map +1 -1
  193. package/es/hooks/use-modal/index.d.ts +3 -3
  194. package/es/hooks/use-modal/index.mjs +6 -8
  195. package/es/hooks/use-modal/index.mjs.map +1 -1
  196. package/es/hooks/use-model-toggle/index.d.ts +3 -5
  197. package/es/hooks/use-model-toggle/index.mjs +9 -6
  198. package/es/hooks/use-model-toggle/index.mjs.map +1 -1
  199. package/es/hooks/use-popper/index.mjs +2 -2
  200. package/es/hooks/use-popper/index.mjs.map +1 -1
  201. package/es/hooks/use-prevent-global/index.d.ts +1 -2
  202. package/es/hooks/use-prevent-global/index.mjs +7 -7
  203. package/es/hooks/use-prevent-global/index.mjs.map +1 -1
  204. package/es/hooks/use-restore-active/index.d.ts +1 -2
  205. package/es/hooks/use-restore-active/index.mjs +2 -2
  206. package/es/hooks/use-restore-active/index.mjs.map +1 -1
  207. package/es/hooks/use-teleport/index.d.ts +1 -2
  208. package/es/hooks/use-teleport/index.mjs +4 -4
  209. package/es/hooks/use-teleport/index.mjs.map +1 -1
  210. package/es/hooks/use-throttle-render/index.d.ts +1 -1
  211. package/es/hooks/use-throttle-render/index.mjs +3 -3
  212. package/es/hooks/use-throttle-render/index.mjs.map +1 -1
  213. package/es/hooks/use-timeout/index.d.ts +2 -2
  214. package/es/hooks/use-timeout/index.mjs +10 -12
  215. package/es/hooks/use-timeout/index.mjs.map +1 -1
  216. package/es/hooks/use-transition-fallthrough/index.d.ts +1 -1
  217. package/es/hooks/use-transition-fallthrough/index.mjs.map +1 -1
  218. package/es/index.mjs +13 -15
  219. package/es/index.mjs.map +1 -1
  220. package/es/make-installer.mjs +2 -2
  221. package/es/make-installer.mjs.map +1 -1
  222. package/es/tokens/config-provider.d.ts +3 -3
  223. package/es/tokens/config-provider.mjs.map +1 -1
  224. package/es/utils/types.d.ts +25 -0
  225. package/es/version.d.ts +1 -1
  226. package/es/version.mjs +1 -1
  227. package/es/version.mjs.map +1 -1
  228. package/lib/components/autocomplete/src/index.vue_vue_type_script_lang.js +1 -1
  229. package/lib/components/calendar/index.d.ts +2 -2
  230. package/lib/components/calendar/src/date-table.vue_vue_type_script_lang.js +1 -1
  231. package/lib/components/calendar/src/date-table.vue_vue_type_script_lang.js.map +1 -1
  232. package/lib/components/calendar/src/date-table.vue_vue_type_template_id_297fdb36_lang.js.map +1 -1
  233. package/lib/components/calendar/src/index.vue.d.ts +1 -1
  234. package/lib/components/calendar/src/index.vue_vue_type_script_lang.js +1 -1
  235. package/lib/components/calendar/src/index.vue_vue_type_script_lang.js.map +1 -1
  236. package/lib/components/calendar/src/index.vue_vue_type_template_id_819aa44a_lang.js.map +1 -1
  237. package/lib/components/carousel/src/item.vue_vue_type_script_lang.js +0 -1
  238. package/lib/components/carousel/src/item.vue_vue_type_script_lang.js.map +1 -1
  239. package/lib/components/carousel/src/item.vue_vue_type_template_id_3d2e4fb8_lang.js.map +1 -1
  240. package/lib/components/cascader/src/index.vue_vue_type_script_lang.js +1 -1
  241. package/lib/components/cascader/src/index.vue_vue_type_script_lang.js.map +1 -1
  242. package/lib/components/cascader/src/index.vue_vue_type_template_id_0429c2db_lang.js.map +1 -1
  243. package/lib/components/cascader-panel/src/index.vue_vue_type_script_lang.js +13 -18
  244. package/lib/components/cascader-panel/src/index.vue_vue_type_script_lang.js.map +1 -1
  245. package/lib/components/cascader-panel/src/index.vue_vue_type_template_id_97c48f5c_lang.js.map +1 -1
  246. package/lib/components/cascader-panel/src/menu.vue.d.ts +1 -1
  247. package/lib/components/cascader-panel/src/menu.vue_vue_type_script_lang.js +1 -1
  248. package/lib/components/cascader-panel/src/menu.vue_vue_type_script_lang.js.map +1 -1
  249. package/lib/components/cascader-panel/src/menu.vue_vue_type_template_id_9c79e4e2_lang.js.map +1 -1
  250. package/lib/components/color-picker/index.d.ts +2 -2
  251. package/lib/components/color-picker/src/index.vue.d.ts +1 -1
  252. package/lib/components/color-picker/src/index.vue_vue_type_script_lang.js +1 -1
  253. package/lib/components/color-picker/src/index.vue_vue_type_script_lang.js.map +1 -1
  254. package/lib/components/color-picker/src/index.vue_vue_type_template_id_46a474d5_lang.js.map +1 -1
  255. package/lib/components/config-provider/index.d.ts +2 -1
  256. package/lib/components/config-provider/index.js +2 -0
  257. package/lib/components/config-provider/index.js.map +1 -1
  258. package/lib/components/config-provider/src/config-provider.d.ts +1 -1
  259. package/lib/components/config-provider/src/index.d.ts +1 -1
  260. package/lib/components/config-provider/src/index.js +1 -1
  261. package/lib/components/config-provider/src/index.js.map +1 -1
  262. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue.d.ts +1 -1
  263. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_script_lang.js +1 -1
  264. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_script_lang.js.map +1 -1
  265. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue_vue_type_template_id_0572814e_lang.js.map +1 -1
  266. package/lib/components/date-picker/src/date-picker-com/basic-month-table.vue.d.ts +1 -1
  267. package/lib/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_script_lang.js +1 -1
  268. package/lib/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_script_lang.js.map +1 -1
  269. package/lib/components/date-picker/src/date-picker-com/basic-month-table.vue_vue_type_template_id_2f6fcbf2_lang.js.map +1 -1
  270. package/lib/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_script_lang.js +1 -1
  271. package/lib/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_script_lang.js.map +1 -1
  272. package/lib/components/date-picker/src/date-picker-com/basic-year-table.vue_vue_type_template_id_441df31d_lang.js.map +1 -1
  273. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue.d.ts +1 -1
  274. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js +1 -1
  275. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js.map +1 -1
  276. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.js.map +1 -1
  277. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue.d.ts +1 -1
  278. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.js +1 -1
  279. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_script_lang.js.map +1 -1
  280. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue_type_template_id_62b45ab2_lang.js.map +1 -1
  281. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue.d.ts +1 -1
  282. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_script_lang.js +1 -1
  283. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_script_lang.js.map +1 -1
  284. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue_vue_type_template_id_2e377892_lang.js.map +1 -1
  285. package/lib/components/dialog/src/use-dialog.js +3 -3
  286. package/lib/components/dialog/src/use-dialog.js.map +1 -1
  287. package/lib/components/dropdown/index.d.ts +1 -1
  288. package/lib/components/dropdown/src/dropdown.vue.d.ts +1 -1
  289. package/lib/components/empty/src/empty.vue_vue_type_script_lang.js +1 -1
  290. package/lib/components/empty/src/empty.vue_vue_type_script_lang.js.map +1 -1
  291. package/lib/components/empty/src/empty.vue_vue_type_template_id_10d211eb_lang.js.map +1 -1
  292. package/lib/components/image/index.d.ts +1 -1
  293. package/lib/components/image/src/image.vue.d.ts +1 -1
  294. package/lib/components/image/src/image.vue_vue_type_script_lang.js +2 -2
  295. package/lib/components/image/src/image.vue_vue_type_script_lang.js.map +1 -1
  296. package/lib/components/image/src/image.vue_vue_type_template_id_34467287_lang.js.map +1 -1
  297. package/lib/components/image-viewer/src/image-viewer.vue_vue_type_script_lang.js +1 -1
  298. package/lib/components/image-viewer/src/image-viewer.vue_vue_type_script_lang.js.map +1 -1
  299. package/lib/components/image-viewer/src/image-viewer.vue_vue_type_template_id_4b22ad85_lang.js.map +1 -1
  300. package/lib/components/index.js +2 -0
  301. package/lib/components/index.js.map +1 -1
  302. package/lib/components/input/src/input.vue_vue_type_script_lang.js +1 -1
  303. package/lib/components/menu/src/menu-collapse-transition.vue_vue_type_script_lang.js +1 -2
  304. package/lib/components/menu/src/menu-collapse-transition.vue_vue_type_script_lang.js.map +1 -1
  305. package/lib/components/menu/src/menu-collapse-transition.vue_vue_type_template_id_db8e3ce6_lang.js.map +1 -1
  306. package/lib/components/message-box/src/index.vue_vue_type_script_lang.js +6 -6
  307. package/lib/components/message-box/src/index.vue_vue_type_script_lang.js.map +1 -1
  308. package/lib/components/message-box/src/index.vue_vue_type_template_id_7035e868_lang.js +2 -0
  309. package/lib/components/message-box/src/index.vue_vue_type_template_id_7035e868_lang.js.map +1 -1
  310. package/lib/components/page-header/index.d.ts +1 -1
  311. package/lib/components/page-header/src/page-header.vue.d.ts +1 -1
  312. package/lib/components/page-header/src/page-header.vue_vue_type_script_lang.js +1 -1
  313. package/lib/components/page-header/src/page-header.vue_vue_type_script_lang.js.map +1 -1
  314. package/lib/components/page-header/src/page-header.vue_vue_type_template_id_d12fb4b2_lang.js.map +1 -1
  315. package/lib/components/pagination/src/components/jumper.vue.d.ts +1 -1
  316. package/lib/components/pagination/src/components/jumper.vue_vue_type_script_lang.js +1 -1
  317. package/lib/components/pagination/src/components/jumper.vue_vue_type_script_lang.js.map +1 -1
  318. package/lib/components/pagination/src/components/jumper.vue_vue_type_template_id_772239ce_lang.js.map +1 -1
  319. package/lib/components/pagination/src/components/sizes.vue.d.ts +1 -1
  320. package/lib/components/pagination/src/components/sizes.vue_vue_type_script_lang.js +1 -1
  321. package/lib/components/pagination/src/components/sizes.vue_vue_type_script_lang.js.map +1 -1
  322. package/lib/components/pagination/src/components/sizes.vue_vue_type_template_id_3a063678_lang.js.map +1 -1
  323. package/lib/components/pagination/src/components/total.vue.d.ts +1 -1
  324. package/lib/components/pagination/src/components/total.vue_vue_type_script_lang.js +1 -1
  325. package/lib/components/pagination/src/components/total.vue_vue_type_script_lang.js.map +1 -1
  326. package/lib/components/pagination/src/components/total.vue_vue_type_template_id_bc261314_lang.js.map +1 -1
  327. package/lib/components/pagination/src/pagination.js +1 -1
  328. package/lib/components/pagination/src/pagination.js.map +1 -1
  329. package/lib/components/popconfirm/src/popconfirm.vue_vue_type_script_lang.js +1 -1
  330. package/lib/components/popconfirm/src/popconfirm.vue_vue_type_script_lang.js.map +1 -1
  331. package/lib/components/popconfirm/src/popconfirm.vue_vue_type_template_id_16409d25_lang.js.map +1 -1
  332. package/lib/components/popper/src/use-popper/defaults.js +1 -1
  333. package/lib/components/popper/src/use-popper/index.d.ts +1 -1538
  334. package/lib/components/scrollbar/src/scrollbar.vue_vue_type_script_lang.js +1 -1
  335. package/lib/components/scrollbar/src/scrollbar.vue_vue_type_script_lang.js.map +1 -1
  336. package/lib/components/scrollbar/src/scrollbar.vue_vue_type_template_id_303f965d_lang.js.map +1 -1
  337. package/lib/components/select/src/select.vue_vue_type_script_lang.js +2 -2
  338. package/lib/components/select/src/select.vue_vue_type_script_lang.js.map +1 -1
  339. package/lib/components/select/src/select.vue_vue_type_template_id_33774f85_lang.js.map +1 -1
  340. package/lib/components/select/src/useSelect.js +2 -2
  341. package/lib/components/select/src/useSelect.js.map +1 -1
  342. package/lib/components/select-v2/index.d.ts +2 -2
  343. package/lib/components/select-v2/src/select.vue.d.ts +1 -1
  344. package/lib/components/select-v2/src/useSelect.js +1 -1
  345. package/lib/components/select-v2/src/useSelect.js.map +1 -1
  346. package/lib/components/skeleton/src/skeleton.vue_vue_type_script_lang.js +1 -1
  347. package/lib/components/skeleton/src/skeleton.vue_vue_type_script_lang.js.map +1 -1
  348. package/lib/components/table/index.d.ts +1 -1
  349. package/lib/components/table/src/filter-panel.vue.d.ts +2 -2
  350. package/lib/components/table/src/filter-panel.vue_vue_type_script_lang.js +1 -1
  351. package/lib/components/table/src/filter-panel.vue_vue_type_script_lang.js.map +1 -1
  352. package/lib/components/table/src/filter-panel.vue_vue_type_template_id_fde1c940_lang.js.map +1 -1
  353. package/lib/components/table/src/table-body/index.d.ts +1 -1
  354. package/lib/components/table/src/table-footer/index.d.ts +1 -1
  355. package/lib/components/table/src/table-header/index.d.ts +1 -1
  356. package/lib/components/table/src/table.vue.d.ts +5 -13
  357. package/lib/components/table/src/table.vue_vue_type_script_lang.js +1 -1
  358. package/lib/components/table/src/table.vue_vue_type_script_lang.js.map +1 -1
  359. package/lib/components/table/src/table.vue_vue_type_template_id_4a1660ad_lang.js.map +1 -1
  360. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_lang.js +1 -1
  361. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_lang.js.map +1 -1
  362. package/lib/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.js.map +1 -1
  363. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue.d.ts +1 -1
  364. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_lang.js +1 -1
  365. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_script_lang.js.map +1 -1
  366. package/lib/components/time-picker/src/time-picker-com/panel-time-pick.vue_vue_type_template_id_3b3cfa6a_lang.js.map +1 -1
  367. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue.d.ts +1 -1
  368. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_lang.js +1 -1
  369. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_script_lang.js.map +1 -1
  370. package/lib/components/time-picker/src/time-picker-com/panel-time-range.vue_vue_type_template_id_57d94b44_lang.js.map +1 -1
  371. package/lib/components/transfer/src/index.vue_vue_type_script_lang.js +1 -1
  372. package/lib/components/transfer/src/index.vue_vue_type_script_lang.js.map +1 -1
  373. package/lib/components/transfer/src/index.vue_vue_type_template_id_6c8b9070_lang.js.map +1 -1
  374. package/lib/components/transfer/src/transfer-panel.vue.d.ts +1 -1
  375. package/lib/components/transfer/src/transfer-panel.vue_vue_type_script_lang.js +1 -1
  376. package/lib/components/transfer/src/transfer-panel.vue_vue_type_script_lang.js.map +1 -1
  377. package/lib/components/transfer/src/transfer-panel.vue_vue_type_template_id_1a7d1f9c_lang.js.map +1 -1
  378. package/lib/components/tree/index.d.ts +2 -2
  379. package/lib/components/tree/src/tree.vue.d.ts +1 -1
  380. package/lib/components/tree/src/tree.vue_vue_type_script_lang.js +1 -1
  381. package/lib/components/tree/src/tree.vue_vue_type_script_lang.js.map +1 -1
  382. package/lib/components/tree/src/tree.vue_vue_type_template_id_7539bec5_lang.js.map +1 -1
  383. package/lib/components/tree-v2/index.d.ts +1 -1
  384. package/lib/components/tree-v2/src/tree.vue.d.ts +1 -1
  385. package/lib/components/tree-v2/src/tree.vue_vue_type_script_lang.js +1 -1
  386. package/lib/components/tree-v2/src/tree.vue_vue_type_script_lang.js.map +1 -1
  387. package/lib/components/tree-v2/src/tree.vue_vue_type_template_id_5b45a1b2_lang.js.map +1 -1
  388. package/lib/components/tree-v2/src/virtual-tree.js +4 -4
  389. package/lib/components/upload/src/upload-list.vue.d.ts +1 -1
  390. package/lib/components/upload/src/upload-list.vue_vue_type_script_lang.js +1 -1
  391. package/lib/components/upload/src/upload-list.vue_vue_type_script_lang.js.map +1 -1
  392. package/lib/components/upload/src/upload-list.vue_vue_type_template_id_192277b6_lang.js.map +1 -1
  393. package/lib/hooks/index.d.ts +12 -15
  394. package/lib/hooks/index.js +42 -48
  395. package/lib/hooks/index.js.map +1 -1
  396. package/lib/hooks/use-attrs/index.d.ts +2 -2
  397. package/lib/hooks/use-attrs/index.js +2 -2
  398. package/lib/hooks/use-attrs/index.js.map +1 -1
  399. package/lib/hooks/use-focus/index.d.ts +1 -2
  400. package/lib/hooks/use-focus/index.js +2 -2
  401. package/lib/hooks/use-focus/index.js.map +1 -1
  402. package/lib/hooks/use-form-item/index.d.ts +1 -1
  403. package/lib/hooks/use-form-item/index.js +2 -2
  404. package/lib/hooks/use-form-item/index.js.map +1 -1
  405. package/lib/hooks/use-global-config/index.d.ts +1 -1
  406. package/lib/hooks/use-global-config/index.js +1 -3
  407. package/lib/hooks/use-global-config/index.js.map +1 -1
  408. package/lib/hooks/use-locale/index.d.ts +9 -7
  409. package/lib/hooks/use-locale/index.js +23 -50
  410. package/lib/hooks/use-locale/index.js.map +1 -1
  411. package/lib/hooks/use-lockscreen/index.d.ts +1 -2
  412. package/lib/hooks/use-lockscreen/index.js +18 -20
  413. package/lib/hooks/use-lockscreen/index.js.map +1 -1
  414. package/lib/hooks/use-modal/index.d.ts +3 -3
  415. package/lib/hooks/use-modal/index.js +6 -8
  416. package/lib/hooks/use-modal/index.js.map +1 -1
  417. package/lib/hooks/use-model-toggle/index.d.ts +3 -5
  418. package/lib/hooks/use-model-toggle/index.js +9 -6
  419. package/lib/hooks/use-model-toggle/index.js.map +1 -1
  420. package/lib/hooks/use-popper/index.js +2 -2
  421. package/lib/hooks/use-popper/index.js.map +1 -1
  422. package/lib/hooks/use-prevent-global/index.d.ts +1 -2
  423. package/lib/hooks/use-prevent-global/index.js +7 -7
  424. package/lib/hooks/use-prevent-global/index.js.map +1 -1
  425. package/lib/hooks/use-restore-active/index.d.ts +1 -2
  426. package/lib/hooks/use-restore-active/index.js +2 -2
  427. package/lib/hooks/use-restore-active/index.js.map +1 -1
  428. package/lib/hooks/use-teleport/index.d.ts +1 -2
  429. package/lib/hooks/use-teleport/index.js +4 -4
  430. package/lib/hooks/use-teleport/index.js.map +1 -1
  431. package/lib/hooks/use-throttle-render/index.d.ts +1 -1
  432. package/lib/hooks/use-throttle-render/index.js +3 -3
  433. package/lib/hooks/use-throttle-render/index.js.map +1 -1
  434. package/lib/hooks/use-timeout/index.d.ts +2 -2
  435. package/lib/hooks/use-timeout/index.js +10 -12
  436. package/lib/hooks/use-timeout/index.js.map +1 -1
  437. package/lib/hooks/use-transition-fallthrough/index.d.ts +1 -1
  438. package/lib/hooks/use-transition-fallthrough/index.js.map +1 -1
  439. package/lib/index.js +46 -50
  440. package/lib/index.js.map +1 -1
  441. package/lib/make-installer.js +1 -1
  442. package/lib/make-installer.js.map +1 -1
  443. package/lib/tokens/config-provider.d.ts +3 -3
  444. package/lib/tokens/config-provider.js.map +1 -1
  445. package/lib/utils/types.d.ts +25 -0
  446. package/lib/version.d.ts +1 -1
  447. package/lib/version.js +1 -1
  448. package/lib/version.js.map +1 -1
  449. package/package.json +2 -2
  450. package/theme-chalk/el-dropdown.css +1 -1
  451. package/theme-chalk/el-input.css +1 -1
  452. package/theme-chalk/el-tag.css +1 -1
  453. package/theme-chalk/index.css +1 -1
  454. package/theme-chalk/src/dropdown.scss +2 -0
  455. package/theme-chalk/src/input.scss +4 -0
  456. package/theme-chalk/src/tag.scss +4 -1
  457. package/web-types.json +1 -1
  458. package/es/components/cascader/index.d.ts +0 -8748
  459. package/es/components/cascader/src/index.vue.d.ts +0 -4380
  460. package/es/components/message-box/src/index.vue.d.ts +0 -1838
  461. package/es/components/popper/index.d.ts +0 -3476
  462. package/es/components/popper/src/index.vue.d.ts +0 -1735
  463. package/es/hooks/use-css-var/index.d.ts +0 -36
  464. package/es/hooks/use-css-var/index.mjs +0 -45
  465. package/es/hooks/use-css-var/index.mjs.map +0 -1
  466. package/es/hooks/use-events/index.d.ts +0 -7
  467. package/es/hooks/use-events/index.mjs +0 -19
  468. package/es/hooks/use-events/index.mjs.map +0 -1
  469. package/es/hooks/use-migrating/index.d.ts +0 -7
  470. package/es/hooks/use-migrating/index.mjs +0 -35
  471. package/es/hooks/use-migrating/index.mjs.map +0 -1
  472. package/es/hooks/use-transition/index.d.ts +0 -13
  473. package/es/hooks/use-transition/index.mjs +0 -25
  474. package/es/hooks/use-transition/index.mjs.map +0 -1
  475. package/lib/components/cascader/index.d.ts +0 -8748
  476. package/lib/components/cascader/src/index.vue.d.ts +0 -4380
  477. package/lib/components/message-box/src/index.vue.d.ts +0 -1838
  478. package/lib/components/popper/index.d.ts +0 -3476
  479. package/lib/components/popper/src/index.vue.d.ts +0 -1735
  480. package/lib/hooks/use-css-var/index.d.ts +0 -36
  481. package/lib/hooks/use-css-var/index.js +0 -51
  482. package/lib/hooks/use-css-var/index.js.map +0 -1
  483. package/lib/hooks/use-events/index.d.ts +0 -7
  484. package/lib/hooks/use-events/index.js +0 -23
  485. package/lib/hooks/use-events/index.js.map +0 -1
  486. package/lib/hooks/use-migrating/index.d.ts +0 -7
  487. package/lib/hooks/use-migrating/index.js +0 -39
  488. package/lib/hooks/use-migrating/index.js.map +0 -1
  489. package/lib/hooks/use-transition/index.d.ts +0 -13
  490. package/lib/hooks/use-transition/index.js +0 -30
  491. package/lib/hooks/use-transition/index.js.map +0 -1
@@ -21,7 +21,7 @@ export declare const ElImage: import("../../utils/types").SFCWithInstall<import(
21
21
  clickHandler: () => void;
22
22
  closeViewer: () => void;
23
23
  switchViewer: (val: number) => void;
24
- t: (...args: any[]) => string;
24
+ t: import("../..").Translator;
25
25
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
26
26
  error: (evt: Event) => boolean;
27
27
  switch: (val: number) => boolean;
@@ -22,7 +22,7 @@ declare const _default: import("vue").DefineComponent<{
22
22
  clickHandler: () => void;
23
23
  closeViewer: () => void;
24
24
  switchViewer: (val: number) => void;
25
- t: (...args: any[]) => string;
25
+ t: import("element-plus/es/hooks").Translator;
26
26
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
27
27
  error: (evt: Event) => boolean;
28
28
  switch: (val: number) => boolean;
@@ -24,8 +24,8 @@ var script = vue.defineComponent({
24
24
  props: image.imageProps,
25
25
  emits: image.imageEmits,
26
26
  setup(props, { emit, attrs: rawAttrs }) {
27
- const { t } = index$1.useLocaleInject();
28
- const attrs = index$2["default"]();
27
+ const { t } = index$1.useLocale();
28
+ const attrs = index$2.useAttrs();
29
29
  const hasLoadError = vue.ref(false);
30
30
  const loading = vue.ref(true);
31
31
  const imgWidth = vue.ref(0);
@@ -1 +1 @@
1
- {"version":3,"file":"image.vue_vue_type_script_lang.js","sources":["../../../../../../packages/components/image/src/image.vue"],"sourcesContent":["<template>\n <div\n ref=\"container\"\n :class=\"['el-image', $attrs.class]\"\n :style=\"containerStyle\"\n >\n <slot v-if=\"loading\" name=\"placeholder\">\n <div class=\"el-image__placeholder\"></div>\n </slot>\n <slot v-else-if=\"hasLoadError\" name=\"error\">\n <div class=\"el-image__error\">{{ t('el.image.error') }}</div>\n </slot>\n <img\n v-else\n class=\"el-image__inner\"\n v-bind=\"attrs\"\n :src=\"src\"\n :style=\"imageStyle\"\n :class=\"{\n 'el-image__preview': preview,\n }\"\n @click=\"clickHandler\"\n />\n <teleport to=\"body\" :disabled=\"!appendToBody\">\n <template v-if=\"preview\">\n <image-viewer\n v-if=\"showViewer\"\n :z-index=\"zIndex\"\n :initial-index=\"imageIndex\"\n :url-list=\"previewSrcList\"\n :hide-on-click-modal=\"hideOnClickModal\"\n @close=\"closeViewer\"\n @switch=\"switchViewer\"\n >\n <div v-if=\"$slots.viewer\">\n <slot name=\"viewer\" />\n </div>\n </image-viewer>\n </template>\n </teleport>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, onMounted, watch, nextTick } from 'vue'\nimport { isString } from '@vue/shared'\nimport { useEventListener, useThrottleFn } from '@vueuse/core'\nimport { useAttrs, useLocaleInject } from '@element-plus/hooks'\nimport ImageViewer from '@element-plus/components/image-viewer'\nimport isServer from '@element-plus/utils/isServer'\nimport { getScrollContainer, isInContainer } from '@element-plus/utils/dom'\nimport { imageEmits, imageProps } from './image'\n\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst isHtmlElement = (e: any): e is Element =>\n e && e.nodeType === Node.ELEMENT_NODE\n\nlet prevOverflow = ''\n\nexport default defineComponent({\n name: 'ElImage',\n components: {\n ImageViewer,\n },\n inheritAttrs: false,\n\n props: imageProps,\n emits: imageEmits,\n\n setup(props, { emit, attrs: rawAttrs }) {\n const { t } = useLocaleInject()\n\n const attrs = useAttrs()\n const hasLoadError = ref(false)\n const loading = ref(true)\n const imgWidth = ref(0)\n const imgHeight = ref(0)\n const showViewer = ref(false)\n const container = ref<HTMLElement>()\n\n const _scrollContainer = ref<HTMLElement | Window>()\n let stopScrollListener: () => void\n let stopWheelListener: () => void\n\n const containerStyle = computed(() => rawAttrs.style as StyleValue)\n\n const imageStyle = computed<CSSProperties>(() => {\n const { fit } = props\n if (!isServer && fit) {\n return { objectFit: fit }\n }\n return {}\n })\n\n const preview = computed(() => {\n const { previewSrcList } = props\n return Array.isArray(previewSrcList) && previewSrcList.length > 0\n })\n\n const imageIndex = computed(() => {\n const { src, previewSrcList, initialIndex } = props\n let previewIndex = initialIndex\n const srcIndex = previewSrcList.indexOf(src)\n if (srcIndex >= 0) {\n previewIndex = srcIndex\n }\n return previewIndex\n })\n\n const loadImage = () => {\n if (isServer) return\n\n // reset status\n loading.value = true\n hasLoadError.value = false\n\n const img = new Image()\n img.addEventListener('load', (e) => handleLoad(e, img))\n img.addEventListener('error', handleError)\n\n // bind html attrs\n // so it can behave consistently\n Object.entries(attrs.value).forEach(([key, value]) => {\n // avoid onload to be overwritten\n if (key.toLowerCase() === 'onload') return\n img.setAttribute(key, value as string)\n })\n img.src = props.src\n }\n\n function handleLoad(e: Event, img: HTMLImageElement) {\n imgWidth.value = img.width\n imgHeight.value = img.height\n loading.value = false\n hasLoadError.value = false\n }\n\n function handleError(event: Event) {\n loading.value = false\n hasLoadError.value = true\n emit('error', event)\n }\n\n function handleLazyLoad() {\n if (isInContainer(container.value, _scrollContainer.value)) {\n loadImage()\n removeLazyLoadListener()\n }\n }\n const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200)\n\n async function addLazyLoadListener() {\n if (isServer) return\n\n await nextTick()\n\n const { scrollContainer } = props\n if (isHtmlElement(scrollContainer)) {\n _scrollContainer.value = scrollContainer\n } else if (isString(scrollContainer) && scrollContainer !== '') {\n _scrollContainer.value =\n document.querySelector<HTMLElement>(scrollContainer) ?? undefined\n } else if (container.value) {\n _scrollContainer.value = getScrollContainer(container.value)\n }\n\n if (_scrollContainer.value) {\n stopScrollListener = useEventListener(\n _scrollContainer,\n 'scroll',\n lazyLoadHandler\n )\n setTimeout(() => handleLazyLoad(), 100)\n }\n }\n\n function removeLazyLoadListener() {\n if (isServer || !_scrollContainer.value || !lazyLoadHandler) return\n\n stopScrollListener()\n _scrollContainer.value = undefined\n }\n\n function wheelHandler(e: WheelEvent) {\n if (!e.ctrlKey) return\n\n if (e.deltaY < 0) {\n e.preventDefault()\n return false\n } else if (e.deltaY > 0) {\n e.preventDefault()\n return false\n }\n }\n\n function clickHandler() {\n // don't show viewer when preview is false\n if (!preview.value) return\n\n stopWheelListener = useEventListener('wheel', wheelHandler, {\n passive: false,\n })\n\n // prevent body scroll\n prevOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n showViewer.value = true\n }\n\n function closeViewer() {\n stopWheelListener?.()\n document.body.style.overflow = prevOverflow\n showViewer.value = false\n emit('close')\n }\n\n function switchViewer(val: number) {\n emit('switch', val)\n }\n\n watch(\n () => props.src,\n () => {\n if (props.lazy) {\n // reset status\n loading.value = true\n hasLoadError.value = false\n removeLazyLoadListener()\n addLazyLoadListener()\n } else {\n loadImage()\n }\n }\n )\n\n onMounted(() => {\n if (props.lazy) {\n addLazyLoadListener()\n } else {\n loadImage()\n }\n })\n\n return {\n attrs,\n loading,\n hasLoadError,\n showViewer,\n containerStyle,\n imageStyle,\n preview,\n imageIndex,\n container,\n\n clickHandler,\n closeViewer,\n switchViewer,\n t,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ImageViewer","imageProps","imageEmits","useLocaleInject","useAttrs","ref","computed","isServer","isInContainer","useThrottleFn","nextTick","isString","getScrollContainer","useEventListener"],"mappings":"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"}
1
+ {"version":3,"file":"image.vue_vue_type_script_lang.js","sources":["../../../../../../packages/components/image/src/image.vue"],"sourcesContent":["<template>\n <div\n ref=\"container\"\n :class=\"['el-image', $attrs.class]\"\n :style=\"containerStyle\"\n >\n <slot v-if=\"loading\" name=\"placeholder\">\n <div class=\"el-image__placeholder\"></div>\n </slot>\n <slot v-else-if=\"hasLoadError\" name=\"error\">\n <div class=\"el-image__error\">{{ t('el.image.error') }}</div>\n </slot>\n <img\n v-else\n class=\"el-image__inner\"\n v-bind=\"attrs\"\n :src=\"src\"\n :style=\"imageStyle\"\n :class=\"{\n 'el-image__preview': preview,\n }\"\n @click=\"clickHandler\"\n />\n <teleport to=\"body\" :disabled=\"!appendToBody\">\n <template v-if=\"preview\">\n <image-viewer\n v-if=\"showViewer\"\n :z-index=\"zIndex\"\n :initial-index=\"imageIndex\"\n :url-list=\"previewSrcList\"\n :hide-on-click-modal=\"hideOnClickModal\"\n @close=\"closeViewer\"\n @switch=\"switchViewer\"\n >\n <div v-if=\"$slots.viewer\">\n <slot name=\"viewer\" />\n </div>\n </image-viewer>\n </template>\n </teleport>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, onMounted, watch, nextTick } from 'vue'\nimport { isString } from '@vue/shared'\nimport { useEventListener, useThrottleFn } from '@vueuse/core'\nimport { useAttrs, useLocale } from '@element-plus/hooks'\nimport ImageViewer from '@element-plus/components/image-viewer'\nimport isServer from '@element-plus/utils/isServer'\nimport { getScrollContainer, isInContainer } from '@element-plus/utils/dom'\nimport { imageEmits, imageProps } from './image'\n\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst isHtmlElement = (e: any): e is Element =>\n e && e.nodeType === Node.ELEMENT_NODE\n\nlet prevOverflow = ''\n\nexport default defineComponent({\n name: 'ElImage',\n components: {\n ImageViewer,\n },\n inheritAttrs: false,\n\n props: imageProps,\n emits: imageEmits,\n\n setup(props, { emit, attrs: rawAttrs }) {\n const { t } = useLocale()\n\n const attrs = useAttrs()\n const hasLoadError = ref(false)\n const loading = ref(true)\n const imgWidth = ref(0)\n const imgHeight = ref(0)\n const showViewer = ref(false)\n const container = ref<HTMLElement>()\n\n const _scrollContainer = ref<HTMLElement | Window>()\n let stopScrollListener: () => void\n let stopWheelListener: () => void\n\n const containerStyle = computed(() => rawAttrs.style as StyleValue)\n\n const imageStyle = computed<CSSProperties>(() => {\n const { fit } = props\n if (!isServer && fit) {\n return { objectFit: fit }\n }\n return {}\n })\n\n const preview = computed(() => {\n const { previewSrcList } = props\n return Array.isArray(previewSrcList) && previewSrcList.length > 0\n })\n\n const imageIndex = computed(() => {\n const { src, previewSrcList, initialIndex } = props\n let previewIndex = initialIndex\n const srcIndex = previewSrcList.indexOf(src)\n if (srcIndex >= 0) {\n previewIndex = srcIndex\n }\n return previewIndex\n })\n\n const loadImage = () => {\n if (isServer) return\n\n // reset status\n loading.value = true\n hasLoadError.value = false\n\n const img = new Image()\n img.addEventListener('load', (e) => handleLoad(e, img))\n img.addEventListener('error', handleError)\n\n // bind html attrs\n // so it can behave consistently\n Object.entries(attrs.value).forEach(([key, value]) => {\n // avoid onload to be overwritten\n if (key.toLowerCase() === 'onload') return\n img.setAttribute(key, value as string)\n })\n img.src = props.src\n }\n\n function handleLoad(e: Event, img: HTMLImageElement) {\n imgWidth.value = img.width\n imgHeight.value = img.height\n loading.value = false\n hasLoadError.value = false\n }\n\n function handleError(event: Event) {\n loading.value = false\n hasLoadError.value = true\n emit('error', event)\n }\n\n function handleLazyLoad() {\n if (isInContainer(container.value, _scrollContainer.value)) {\n loadImage()\n removeLazyLoadListener()\n }\n }\n const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200)\n\n async function addLazyLoadListener() {\n if (isServer) return\n\n await nextTick()\n\n const { scrollContainer } = props\n if (isHtmlElement(scrollContainer)) {\n _scrollContainer.value = scrollContainer\n } else if (isString(scrollContainer) && scrollContainer !== '') {\n _scrollContainer.value =\n document.querySelector<HTMLElement>(scrollContainer) ?? undefined\n } else if (container.value) {\n _scrollContainer.value = getScrollContainer(container.value)\n }\n\n if (_scrollContainer.value) {\n stopScrollListener = useEventListener(\n _scrollContainer,\n 'scroll',\n lazyLoadHandler\n )\n setTimeout(() => handleLazyLoad(), 100)\n }\n }\n\n function removeLazyLoadListener() {\n if (isServer || !_scrollContainer.value || !lazyLoadHandler) return\n\n stopScrollListener()\n _scrollContainer.value = undefined\n }\n\n function wheelHandler(e: WheelEvent) {\n if (!e.ctrlKey) return\n\n if (e.deltaY < 0) {\n e.preventDefault()\n return false\n } else if (e.deltaY > 0) {\n e.preventDefault()\n return false\n }\n }\n\n function clickHandler() {\n // don't show viewer when preview is false\n if (!preview.value) return\n\n stopWheelListener = useEventListener('wheel', wheelHandler, {\n passive: false,\n })\n\n // prevent body scroll\n prevOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n showViewer.value = true\n }\n\n function closeViewer() {\n stopWheelListener?.()\n document.body.style.overflow = prevOverflow\n showViewer.value = false\n emit('close')\n }\n\n function switchViewer(val: number) {\n emit('switch', val)\n }\n\n watch(\n () => props.src,\n () => {\n if (props.lazy) {\n // reset status\n loading.value = true\n hasLoadError.value = false\n removeLazyLoadListener()\n addLazyLoadListener()\n } else {\n loadImage()\n }\n }\n )\n\n onMounted(() => {\n if (props.lazy) {\n addLazyLoadListener()\n } else {\n loadImage()\n }\n })\n\n return {\n attrs,\n loading,\n hasLoadError,\n showViewer,\n containerStyle,\n imageStyle,\n preview,\n imageIndex,\n container,\n\n clickHandler,\n closeViewer,\n switchViewer,\n t,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ImageViewer","imageProps","imageEmits","useLocale","useAttrs","ref","computed","isServer","isInContainer","useThrottleFn","nextTick","isString","getScrollContainer","useEventListener"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"image.vue_vue_type_template_id_34467287_lang.js","sources":["../../../../../../packages/components/image/src/image.vue?vue&type=template&id=34467287&lang.js"],"sourcesContent":["<template>\n <div\n ref=\"container\"\n :class=\"['el-image', $attrs.class]\"\n :style=\"containerStyle\"\n >\n <slot v-if=\"loading\" name=\"placeholder\">\n <div class=\"el-image__placeholder\"></div>\n </slot>\n <slot v-else-if=\"hasLoadError\" name=\"error\">\n <div class=\"el-image__error\">{{ t('el.image.error') }}</div>\n </slot>\n <img\n v-else\n class=\"el-image__inner\"\n v-bind=\"attrs\"\n :src=\"src\"\n :style=\"imageStyle\"\n :class=\"{\n 'el-image__preview': preview,\n }\"\n @click=\"clickHandler\"\n />\n <teleport to=\"body\" :disabled=\"!appendToBody\">\n <template v-if=\"preview\">\n <image-viewer\n v-if=\"showViewer\"\n :z-index=\"zIndex\"\n :initial-index=\"imageIndex\"\n :url-list=\"previewSrcList\"\n :hide-on-click-modal=\"hideOnClickModal\"\n @close=\"closeViewer\"\n @switch=\"switchViewer\"\n >\n <div v-if=\"$slots.viewer\">\n <slot name=\"viewer\" />\n </div>\n </image-viewer>\n </template>\n </teleport>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, onMounted, watch, nextTick } from 'vue'\nimport { isString } from '@vue/shared'\nimport { useEventListener, useThrottleFn } from '@vueuse/core'\nimport { useAttrs, useLocaleInject } from '@element-plus/hooks'\nimport ImageViewer from '@element-plus/components/image-viewer'\nimport isServer from '@element-plus/utils/isServer'\nimport { getScrollContainer, isInContainer } from '@element-plus/utils/dom'\nimport { imageEmits, imageProps } from './image'\n\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst isHtmlElement = (e: any): e is Element =>\n e && e.nodeType === Node.ELEMENT_NODE\n\nlet prevOverflow = ''\n\nexport default defineComponent({\n name: 'ElImage',\n components: {\n ImageViewer,\n },\n inheritAttrs: false,\n\n props: imageProps,\n emits: imageEmits,\n\n setup(props, { emit, attrs: rawAttrs }) {\n const { t } = useLocaleInject()\n\n const attrs = useAttrs()\n const hasLoadError = ref(false)\n const loading = ref(true)\n const imgWidth = ref(0)\n const imgHeight = ref(0)\n const showViewer = ref(false)\n const container = ref<HTMLElement>()\n\n const _scrollContainer = ref<HTMLElement | Window>()\n let stopScrollListener: () => void\n let stopWheelListener: () => void\n\n const containerStyle = computed(() => rawAttrs.style as StyleValue)\n\n const imageStyle = computed<CSSProperties>(() => {\n const { fit } = props\n if (!isServer && fit) {\n return { objectFit: fit }\n }\n return {}\n })\n\n const preview = computed(() => {\n const { previewSrcList } = props\n return Array.isArray(previewSrcList) && previewSrcList.length > 0\n })\n\n const imageIndex = computed(() => {\n const { src, previewSrcList, initialIndex } = props\n let previewIndex = initialIndex\n const srcIndex = previewSrcList.indexOf(src)\n if (srcIndex >= 0) {\n previewIndex = srcIndex\n }\n return previewIndex\n })\n\n const loadImage = () => {\n if (isServer) return\n\n // reset status\n loading.value = true\n hasLoadError.value = false\n\n const img = new Image()\n img.addEventListener('load', (e) => handleLoad(e, img))\n img.addEventListener('error', handleError)\n\n // bind html attrs\n // so it can behave consistently\n Object.entries(attrs.value).forEach(([key, value]) => {\n // avoid onload to be overwritten\n if (key.toLowerCase() === 'onload') return\n img.setAttribute(key, value as string)\n })\n img.src = props.src\n }\n\n function handleLoad(e: Event, img: HTMLImageElement) {\n imgWidth.value = img.width\n imgHeight.value = img.height\n loading.value = false\n hasLoadError.value = false\n }\n\n function handleError(event: Event) {\n loading.value = false\n hasLoadError.value = true\n emit('error', event)\n }\n\n function handleLazyLoad() {\n if (isInContainer(container.value, _scrollContainer.value)) {\n loadImage()\n removeLazyLoadListener()\n }\n }\n const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200)\n\n async function addLazyLoadListener() {\n if (isServer) return\n\n await nextTick()\n\n const { scrollContainer } = props\n if (isHtmlElement(scrollContainer)) {\n _scrollContainer.value = scrollContainer\n } else if (isString(scrollContainer) && scrollContainer !== '') {\n _scrollContainer.value =\n document.querySelector<HTMLElement>(scrollContainer) ?? undefined\n } else if (container.value) {\n _scrollContainer.value = getScrollContainer(container.value)\n }\n\n if (_scrollContainer.value) {\n stopScrollListener = useEventListener(\n _scrollContainer,\n 'scroll',\n lazyLoadHandler\n )\n setTimeout(() => handleLazyLoad(), 100)\n }\n }\n\n function removeLazyLoadListener() {\n if (isServer || !_scrollContainer.value || !lazyLoadHandler) return\n\n stopScrollListener()\n _scrollContainer.value = undefined\n }\n\n function wheelHandler(e: WheelEvent) {\n if (!e.ctrlKey) return\n\n if (e.deltaY < 0) {\n e.preventDefault()\n return false\n } else if (e.deltaY > 0) {\n e.preventDefault()\n return false\n }\n }\n\n function clickHandler() {\n // don't show viewer when preview is false\n if (!preview.value) return\n\n stopWheelListener = useEventListener('wheel', wheelHandler, {\n passive: false,\n })\n\n // prevent body scroll\n prevOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n showViewer.value = true\n }\n\n function closeViewer() {\n stopWheelListener?.()\n document.body.style.overflow = prevOverflow\n showViewer.value = false\n emit('close')\n }\n\n function switchViewer(val: number) {\n emit('switch', val)\n }\n\n watch(\n () => props.src,\n () => {\n if (props.lazy) {\n // reset status\n loading.value = true\n hasLoadError.value = false\n removeLazyLoadListener()\n addLazyLoadListener()\n } else {\n loadImage()\n }\n }\n )\n\n onMounted(() => {\n if (props.lazy) {\n addLazyLoadListener()\n } else {\n loadImage()\n }\n })\n\n return {\n attrs,\n loading,\n hasLoadError,\n showViewer,\n containerStyle,\n imageStyle,\n preview,\n imageIndex,\n container,\n\n clickHandler,\n closeViewer,\n switchViewer,\n t,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_renderSlot","_createElementVNode","_mergeProps","_createBlock"],"mappings":";;;;;;mEAOW,OAAM;qBAGN,OAAM;;;;;0BATfA;IACE,KAAI;AAAA,IACH,uCAAoB,YAAO;AAAA,IAC3B,0BAAO;;IAEI,eAAZC,uDAAA;MACE;AAAA,SAEe,oBAAjBA,iDAAA;MACEC,8BAAA,gCAAgC;2BAElCF,8BAAAG;;MAEE,OAAM;AAAA,OACE;MACP,KAAK;MACL,OAAO;MACP;;;MAGA,gDAAO;;sBAEVC;MAAU,IAAG;AAAA,MAAQ,WAAW;;MACd,iCAAhBJ;QAEU,oCADRI;;UAEG,WAAS;UACT,iBAAe;UACf,YAAU;UACV,uBAAqB;UACrB,SAAO;UACP,UAAQ;;+BAET;YAAW,YAAO,2BAAlBJ;cACEC;;;;;;;;;;;;"}
1
+ {"version":3,"file":"image.vue_vue_type_template_id_34467287_lang.js","sources":["../../../../../../packages/components/image/src/image.vue?vue&type=template&id=34467287&lang.js"],"sourcesContent":["<template>\n <div\n ref=\"container\"\n :class=\"['el-image', $attrs.class]\"\n :style=\"containerStyle\"\n >\n <slot v-if=\"loading\" name=\"placeholder\">\n <div class=\"el-image__placeholder\"></div>\n </slot>\n <slot v-else-if=\"hasLoadError\" name=\"error\">\n <div class=\"el-image__error\">{{ t('el.image.error') }}</div>\n </slot>\n <img\n v-else\n class=\"el-image__inner\"\n v-bind=\"attrs\"\n :src=\"src\"\n :style=\"imageStyle\"\n :class=\"{\n 'el-image__preview': preview,\n }\"\n @click=\"clickHandler\"\n />\n <teleport to=\"body\" :disabled=\"!appendToBody\">\n <template v-if=\"preview\">\n <image-viewer\n v-if=\"showViewer\"\n :z-index=\"zIndex\"\n :initial-index=\"imageIndex\"\n :url-list=\"previewSrcList\"\n :hide-on-click-modal=\"hideOnClickModal\"\n @close=\"closeViewer\"\n @switch=\"switchViewer\"\n >\n <div v-if=\"$slots.viewer\">\n <slot name=\"viewer\" />\n </div>\n </image-viewer>\n </template>\n </teleport>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, onMounted, watch, nextTick } from 'vue'\nimport { isString } from '@vue/shared'\nimport { useEventListener, useThrottleFn } from '@vueuse/core'\nimport { useAttrs, useLocale } from '@element-plus/hooks'\nimport ImageViewer from '@element-plus/components/image-viewer'\nimport isServer from '@element-plus/utils/isServer'\nimport { getScrollContainer, isInContainer } from '@element-plus/utils/dom'\nimport { imageEmits, imageProps } from './image'\n\nimport type { CSSProperties, StyleValue } from 'vue'\n\nconst isHtmlElement = (e: any): e is Element =>\n e && e.nodeType === Node.ELEMENT_NODE\n\nlet prevOverflow = ''\n\nexport default defineComponent({\n name: 'ElImage',\n components: {\n ImageViewer,\n },\n inheritAttrs: false,\n\n props: imageProps,\n emits: imageEmits,\n\n setup(props, { emit, attrs: rawAttrs }) {\n const { t } = useLocale()\n\n const attrs = useAttrs()\n const hasLoadError = ref(false)\n const loading = ref(true)\n const imgWidth = ref(0)\n const imgHeight = ref(0)\n const showViewer = ref(false)\n const container = ref<HTMLElement>()\n\n const _scrollContainer = ref<HTMLElement | Window>()\n let stopScrollListener: () => void\n let stopWheelListener: () => void\n\n const containerStyle = computed(() => rawAttrs.style as StyleValue)\n\n const imageStyle = computed<CSSProperties>(() => {\n const { fit } = props\n if (!isServer && fit) {\n return { objectFit: fit }\n }\n return {}\n })\n\n const preview = computed(() => {\n const { previewSrcList } = props\n return Array.isArray(previewSrcList) && previewSrcList.length > 0\n })\n\n const imageIndex = computed(() => {\n const { src, previewSrcList, initialIndex } = props\n let previewIndex = initialIndex\n const srcIndex = previewSrcList.indexOf(src)\n if (srcIndex >= 0) {\n previewIndex = srcIndex\n }\n return previewIndex\n })\n\n const loadImage = () => {\n if (isServer) return\n\n // reset status\n loading.value = true\n hasLoadError.value = false\n\n const img = new Image()\n img.addEventListener('load', (e) => handleLoad(e, img))\n img.addEventListener('error', handleError)\n\n // bind html attrs\n // so it can behave consistently\n Object.entries(attrs.value).forEach(([key, value]) => {\n // avoid onload to be overwritten\n if (key.toLowerCase() === 'onload') return\n img.setAttribute(key, value as string)\n })\n img.src = props.src\n }\n\n function handleLoad(e: Event, img: HTMLImageElement) {\n imgWidth.value = img.width\n imgHeight.value = img.height\n loading.value = false\n hasLoadError.value = false\n }\n\n function handleError(event: Event) {\n loading.value = false\n hasLoadError.value = true\n emit('error', event)\n }\n\n function handleLazyLoad() {\n if (isInContainer(container.value, _scrollContainer.value)) {\n loadImage()\n removeLazyLoadListener()\n }\n }\n const lazyLoadHandler = useThrottleFn(handleLazyLoad, 200)\n\n async function addLazyLoadListener() {\n if (isServer) return\n\n await nextTick()\n\n const { scrollContainer } = props\n if (isHtmlElement(scrollContainer)) {\n _scrollContainer.value = scrollContainer\n } else if (isString(scrollContainer) && scrollContainer !== '') {\n _scrollContainer.value =\n document.querySelector<HTMLElement>(scrollContainer) ?? undefined\n } else if (container.value) {\n _scrollContainer.value = getScrollContainer(container.value)\n }\n\n if (_scrollContainer.value) {\n stopScrollListener = useEventListener(\n _scrollContainer,\n 'scroll',\n lazyLoadHandler\n )\n setTimeout(() => handleLazyLoad(), 100)\n }\n }\n\n function removeLazyLoadListener() {\n if (isServer || !_scrollContainer.value || !lazyLoadHandler) return\n\n stopScrollListener()\n _scrollContainer.value = undefined\n }\n\n function wheelHandler(e: WheelEvent) {\n if (!e.ctrlKey) return\n\n if (e.deltaY < 0) {\n e.preventDefault()\n return false\n } else if (e.deltaY > 0) {\n e.preventDefault()\n return false\n }\n }\n\n function clickHandler() {\n // don't show viewer when preview is false\n if (!preview.value) return\n\n stopWheelListener = useEventListener('wheel', wheelHandler, {\n passive: false,\n })\n\n // prevent body scroll\n prevOverflow = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n showViewer.value = true\n }\n\n function closeViewer() {\n stopWheelListener?.()\n document.body.style.overflow = prevOverflow\n showViewer.value = false\n emit('close')\n }\n\n function switchViewer(val: number) {\n emit('switch', val)\n }\n\n watch(\n () => props.src,\n () => {\n if (props.lazy) {\n // reset status\n loading.value = true\n hasLoadError.value = false\n removeLazyLoadListener()\n addLazyLoadListener()\n } else {\n loadImage()\n }\n }\n )\n\n onMounted(() => {\n if (props.lazy) {\n addLazyLoadListener()\n } else {\n loadImage()\n }\n })\n\n return {\n attrs,\n loading,\n hasLoadError,\n showViewer,\n containerStyle,\n imageStyle,\n preview,\n imageIndex,\n container,\n\n clickHandler,\n closeViewer,\n switchViewer,\n t,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_renderSlot","_createElementVNode","_mergeProps","_createBlock"],"mappings":";;;;;;mEAOW,OAAM;qBAGN,OAAM;;;;;0BATfA;IACE,KAAI;AAAA,IACH,uCAAoB,YAAO;AAAA,IAC3B,0BAAO;;IAEI,eAAZC,uDAAA;MACE;AAAA,SAEe,oBAAjBA,iDAAA;MACEC,8BAAA,gCAAgC;2BAElCF,8BAAAG;;MAEE,OAAM;AAAA,OACE;MACP,KAAK;MACL,OAAO;MACP;;;MAGA,gDAAO;;sBAEVC;MAAU,IAAG;AAAA,MAAQ,WAAW;;MACd,iCAAhBJ;QAEU,oCADRI;;UAEG,WAAS;UACT,iBAAe;UACf,YAAU;UACV,uBAAqB;UACrB,SAAO;UACP,UAAQ;;+BAET;YAAW,YAAO,2BAAlBJ;cACEC;;;;;;;;;;;;"}
@@ -38,7 +38,7 @@ var script = vue.defineComponent({
38
38
  props: imageViewer.imageViewerProps,
39
39
  emits: imageViewer.imageViewerEmits,
40
40
  setup(props, { emit }) {
41
- const { t } = index$1.useLocaleInject();
41
+ const { t } = index$1.useLocale();
42
42
  const wrapper = vue.ref();
43
43
  const img = vue.ref();
44
44
  const scopeEventListener = vue.effectScope();
@@ -1 +1 @@
1
- {"version":3,"file":"image-viewer.vue_vue_type_script_lang.js","sources":["../../../../../../packages/components/image-viewer/src/image-viewer.vue"],"sourcesContent":["<template>\n <transition name=\"viewer-fade\">\n <div\n ref=\"wrapper\"\n :tabindex=\"-1\"\n class=\"el-image-viewer__wrapper\"\n :style=\"{ zIndex }\"\n >\n <div\n class=\"el-image-viewer__mask\"\n @click.self=\"hideOnClickModal && hide()\"\n />\n\n <!-- CLOSE -->\n <span class=\"el-image-viewer__btn el-image-viewer__close\" @click=\"hide\">\n <el-icon><close /></el-icon>\n </span>\n\n <!-- ARROW -->\n <template v-if=\"!isSingle\">\n <span\n class=\"el-image-viewer__btn el-image-viewer__prev\"\n :class=\"{ 'is-disabled': !infinite && isFirst }\"\n @click=\"prev\"\n >\n <el-icon><arrow-left /></el-icon>\n </span>\n <span\n class=\"el-image-viewer__btn el-image-viewer__next\"\n :class=\"{ 'is-disabled': !infinite && isLast }\"\n @click=\"next\"\n >\n <el-icon><arrow-right /></el-icon>\n </span>\n </template>\n <!-- ACTIONS -->\n <div class=\"el-image-viewer__btn el-image-viewer__actions\">\n <div class=\"el-image-viewer__actions__inner\">\n <el-icon @click=\"handleActions('zoomOut')\">\n <zoom-out />\n </el-icon>\n <el-icon @click=\"handleActions('zoomIn')\">\n <zoom-in />\n </el-icon>\n <i class=\"el-image-viewer__actions__divider\"></i>\n <el-icon @click=\"toggleMode\">\n <component :is=\"mode.icon\" />\n </el-icon>\n <i class=\"el-image-viewer__actions__divider\"></i>\n <el-icon @click=\"handleActions('anticlockwise')\">\n <refresh-left />\n </el-icon>\n <el-icon @click=\"handleActions('clockwise')\">\n <refresh-right />\n </el-icon>\n </div>\n </div>\n <!-- CANVAS -->\n <div class=\"el-image-viewer__canvas\">\n <img\n v-for=\"(url, i) in urlList\"\n v-show=\"i === index\"\n ref=\"img\"\n :key=\"url\"\n :src=\"url\"\n :style=\"imgStyle\"\n class=\"el-image-viewer__img\"\n @load=\"handleImgLoad\"\n @error=\"handleImgError\"\n @mousedown=\"handleMouseDown\"\n />\n </div>\n <slot />\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n onMounted,\n watch,\n nextTick,\n effectScope,\n markRaw,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport ElIcon from '@element-plus/components/icon'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { rafThrottle, isFirefox } from '@element-plus/utils/util'\nimport {\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n FullScreen,\n ScaleToOriginal,\n} from '@element-plus/icons'\nimport { imageViewerProps, imageViewerEmits } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\n\nconst Mode = {\n CONTAIN: {\n name: 'contain',\n icon: markRaw(FullScreen),\n },\n ORIGINAL: {\n name: 'original',\n icon: markRaw(ScaleToOriginal),\n },\n}\n\nconst mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'\nexport type ImageViewerAction =\n | 'zoomIn'\n | 'zoomOut'\n | 'clockwise'\n | 'anticlockwise'\n\nexport default defineComponent({\n name: 'ElImageViewer',\n components: {\n ElIcon,\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n },\n props: imageViewerProps,\n emits: imageViewerEmits,\n\n setup(props, { emit }) {\n const { t } = useLocaleInject()\n const wrapper = ref<HTMLDivElement>()\n const img = ref<HTMLImageElement>()\n\n const scopeEventListener = effectScope()\n\n const loading = ref(true)\n const index = ref(props.initialIndex)\n const mode = ref(Mode.CONTAIN)\n const transform = ref({\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n })\n\n const isSingle = computed(() => {\n const { urlList } = props\n return urlList.length <= 1\n })\n\n const isFirst = computed(() => {\n return index.value === 0\n })\n\n const isLast = computed(() => {\n return index.value === props.urlList.length - 1\n })\n\n const currentImg = computed(() => {\n return props.urlList[index.value]\n })\n\n const imgStyle = computed(() => {\n const { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n const style: CSSProperties = {\n transform: `scale(${scale}) rotate(${deg}deg)`,\n transition: enableTransition ? 'transform .3s' : '',\n marginLeft: `${offsetX}px`,\n marginTop: `${offsetY}px`,\n }\n if (mode.value.name === Mode.CONTAIN.name) {\n style.maxWidth = style.maxHeight = '100%'\n }\n return style\n })\n\n function hide() {\n unregisterEventListener()\n emit('close')\n }\n\n function registerEventListener() {\n const keydownHandler = rafThrottle((e: KeyboardEvent) => {\n switch (e.code) {\n // ESC\n case EVENT_CODE.esc:\n hide()\n break\n // SPACE\n case EVENT_CODE.space:\n toggleMode()\n break\n // LEFT_ARROW\n case EVENT_CODE.left:\n prev()\n break\n // UP_ARROW\n case EVENT_CODE.up:\n handleActions('zoomIn')\n break\n // RIGHT_ARROW\n case EVENT_CODE.right:\n next()\n break\n // DOWN_ARROW\n case EVENT_CODE.down:\n handleActions('zoomOut')\n break\n }\n })\n const mousewheelHandler = rafThrottle(\n (e: WheelEvent | any /* TODO: wheelDelta is deprecated */) => {\n const delta = e.wheelDelta ? e.wheelDelta : -e.detail\n if (delta > 0) {\n handleActions('zoomIn', {\n zoomRate: 0.015,\n enableTransition: false,\n })\n } else {\n handleActions('zoomOut', {\n zoomRate: 0.015,\n enableTransition: false,\n })\n }\n }\n )\n\n scopeEventListener.run(() => {\n useEventListener(document, 'keydown', keydownHandler)\n useEventListener(document, mousewheelEventName, mousewheelHandler)\n })\n }\n\n function unregisterEventListener() {\n scopeEventListener.stop()\n }\n\n function handleImgLoad() {\n loading.value = false\n }\n\n function handleImgError(e: Event) {\n loading.value = false\n ;(e.target as HTMLImageElement).alt = t('el.image.error')\n }\n\n function handleMouseDown(e: MouseEvent) {\n if (loading.value || e.button !== 0 || !wrapper.value) return\n\n const { offsetX, offsetY } = transform.value\n const startX = e.pageX\n const startY = e.pageY\n\n const divLeft = wrapper.value.clientLeft\n const divRight = wrapper.value.clientLeft + wrapper.value.clientWidth\n const divTop = wrapper.value.clientTop\n const divBottom = wrapper.value.clientTop + wrapper.value.clientHeight\n\n const dragHandler = rafThrottle((ev: MouseEvent) => {\n transform.value = {\n ...transform.value,\n offsetX: offsetX + ev.pageX - startX,\n offsetY: offsetY + ev.pageY - startY,\n }\n })\n const removeMousemove = useEventListener(\n document,\n 'mousemove',\n dragHandler\n )\n useEventListener(document, 'mouseup', (evt) => {\n const mouseX = evt.pageX\n const mouseY = evt.pageY\n if (\n mouseX < divLeft ||\n mouseX > divRight ||\n mouseY < divTop ||\n mouseY > divBottom\n ) {\n reset()\n }\n removeMousemove()\n })\n\n e.preventDefault()\n }\n\n function reset() {\n transform.value = {\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n }\n }\n\n function toggleMode() {\n if (loading.value) return\n\n const modeNames = Object.keys(Mode)\n const modeValues = Object.values(Mode)\n const currentMode = mode.value.name\n const index = modeValues.findIndex((i) => i.name === currentMode)\n const nextIndex = (index + 1) % modeNames.length\n mode.value = Mode[modeNames[nextIndex]]\n reset()\n }\n\n function prev() {\n if (isFirst.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value - 1 + len) % len\n }\n\n function next() {\n if (isLast.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value + 1) % len\n }\n\n function handleActions(action: ImageViewerAction, options = {}) {\n if (loading.value) return\n const { zoomRate, rotateDeg, enableTransition } = {\n zoomRate: 0.2,\n rotateDeg: 90,\n enableTransition: true,\n ...options,\n }\n switch (action) {\n case 'zoomOut':\n if (transform.value.scale > 0.2) {\n transform.value.scale = parseFloat(\n (transform.value.scale - zoomRate).toFixed(3)\n )\n }\n break\n case 'zoomIn':\n transform.value.scale = parseFloat(\n (transform.value.scale + zoomRate).toFixed(3)\n )\n break\n case 'clockwise':\n transform.value.deg += rotateDeg\n break\n case 'anticlockwise':\n transform.value.deg -= rotateDeg\n break\n }\n transform.value.enableTransition = enableTransition\n }\n\n watch(currentImg, () => {\n nextTick(() => {\n const $img = img.value\n if (!$img?.complete) {\n loading.value = true\n }\n })\n })\n\n watch(index, (val) => {\n reset()\n emit('switch', val)\n })\n\n onMounted(() => {\n registerEventListener()\n // add tabindex then wrapper can be focusable via Javascript\n // focus wrapper so arrow key can't cause inner scroll behavior underneath\n wrapper.value?.focus?.()\n })\n\n return {\n index,\n wrapper,\n img,\n isSingle,\n isFirst,\n isLast,\n currentImg,\n imgStyle,\n mode,\n handleActions,\n prev,\n next,\n hide,\n toggleMode,\n handleImgLoad,\n handleImgError,\n handleMouseDown,\n }\n },\n})\n</script>\n"],"names":["markRaw","FullScreen","ScaleToOriginal","isFirefox","defineComponent","ElIcon","Close","ArrowLeft","ArrowRight","ZoomOut","ZoomIn","RefreshLeft","RefreshRight","imageViewerProps","imageViewerEmits","useLocaleInject","ref","effectScope","computed","rafThrottle","EVENT_CODE","useEventListener"],"mappings":"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"}
1
+ {"version":3,"file":"image-viewer.vue_vue_type_script_lang.js","sources":["../../../../../../packages/components/image-viewer/src/image-viewer.vue"],"sourcesContent":["<template>\n <transition name=\"viewer-fade\">\n <div\n ref=\"wrapper\"\n :tabindex=\"-1\"\n class=\"el-image-viewer__wrapper\"\n :style=\"{ zIndex }\"\n >\n <div\n class=\"el-image-viewer__mask\"\n @click.self=\"hideOnClickModal && hide()\"\n />\n\n <!-- CLOSE -->\n <span class=\"el-image-viewer__btn el-image-viewer__close\" @click=\"hide\">\n <el-icon><close /></el-icon>\n </span>\n\n <!-- ARROW -->\n <template v-if=\"!isSingle\">\n <span\n class=\"el-image-viewer__btn el-image-viewer__prev\"\n :class=\"{ 'is-disabled': !infinite && isFirst }\"\n @click=\"prev\"\n >\n <el-icon><arrow-left /></el-icon>\n </span>\n <span\n class=\"el-image-viewer__btn el-image-viewer__next\"\n :class=\"{ 'is-disabled': !infinite && isLast }\"\n @click=\"next\"\n >\n <el-icon><arrow-right /></el-icon>\n </span>\n </template>\n <!-- ACTIONS -->\n <div class=\"el-image-viewer__btn el-image-viewer__actions\">\n <div class=\"el-image-viewer__actions__inner\">\n <el-icon @click=\"handleActions('zoomOut')\">\n <zoom-out />\n </el-icon>\n <el-icon @click=\"handleActions('zoomIn')\">\n <zoom-in />\n </el-icon>\n <i class=\"el-image-viewer__actions__divider\"></i>\n <el-icon @click=\"toggleMode\">\n <component :is=\"mode.icon\" />\n </el-icon>\n <i class=\"el-image-viewer__actions__divider\"></i>\n <el-icon @click=\"handleActions('anticlockwise')\">\n <refresh-left />\n </el-icon>\n <el-icon @click=\"handleActions('clockwise')\">\n <refresh-right />\n </el-icon>\n </div>\n </div>\n <!-- CANVAS -->\n <div class=\"el-image-viewer__canvas\">\n <img\n v-for=\"(url, i) in urlList\"\n v-show=\"i === index\"\n ref=\"img\"\n :key=\"url\"\n :src=\"url\"\n :style=\"imgStyle\"\n class=\"el-image-viewer__img\"\n @load=\"handleImgLoad\"\n @error=\"handleImgError\"\n @mousedown=\"handleMouseDown\"\n />\n </div>\n <slot />\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n onMounted,\n watch,\n nextTick,\n effectScope,\n markRaw,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport ElIcon from '@element-plus/components/icon'\nimport { useLocale } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { rafThrottle, isFirefox } from '@element-plus/utils/util'\nimport {\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n FullScreen,\n ScaleToOriginal,\n} from '@element-plus/icons'\nimport { imageViewerProps, imageViewerEmits } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\n\nconst Mode = {\n CONTAIN: {\n name: 'contain',\n icon: markRaw(FullScreen),\n },\n ORIGINAL: {\n name: 'original',\n icon: markRaw(ScaleToOriginal),\n },\n}\n\nconst mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'\nexport type ImageViewerAction =\n | 'zoomIn'\n | 'zoomOut'\n | 'clockwise'\n | 'anticlockwise'\n\nexport default defineComponent({\n name: 'ElImageViewer',\n components: {\n ElIcon,\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n },\n props: imageViewerProps,\n emits: imageViewerEmits,\n\n setup(props, { emit }) {\n const { t } = useLocale()\n const wrapper = ref<HTMLDivElement>()\n const img = ref<HTMLImageElement>()\n\n const scopeEventListener = effectScope()\n\n const loading = ref(true)\n const index = ref(props.initialIndex)\n const mode = ref(Mode.CONTAIN)\n const transform = ref({\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n })\n\n const isSingle = computed(() => {\n const { urlList } = props\n return urlList.length <= 1\n })\n\n const isFirst = computed(() => {\n return index.value === 0\n })\n\n const isLast = computed(() => {\n return index.value === props.urlList.length - 1\n })\n\n const currentImg = computed(() => {\n return props.urlList[index.value]\n })\n\n const imgStyle = computed(() => {\n const { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n const style: CSSProperties = {\n transform: `scale(${scale}) rotate(${deg}deg)`,\n transition: enableTransition ? 'transform .3s' : '',\n marginLeft: `${offsetX}px`,\n marginTop: `${offsetY}px`,\n }\n if (mode.value.name === Mode.CONTAIN.name) {\n style.maxWidth = style.maxHeight = '100%'\n }\n return style\n })\n\n function hide() {\n unregisterEventListener()\n emit('close')\n }\n\n function registerEventListener() {\n const keydownHandler = rafThrottle((e: KeyboardEvent) => {\n switch (e.code) {\n // ESC\n case EVENT_CODE.esc:\n hide()\n break\n // SPACE\n case EVENT_CODE.space:\n toggleMode()\n break\n // LEFT_ARROW\n case EVENT_CODE.left:\n prev()\n break\n // UP_ARROW\n case EVENT_CODE.up:\n handleActions('zoomIn')\n break\n // RIGHT_ARROW\n case EVENT_CODE.right:\n next()\n break\n // DOWN_ARROW\n case EVENT_CODE.down:\n handleActions('zoomOut')\n break\n }\n })\n const mousewheelHandler = rafThrottle(\n (e: WheelEvent | any /* TODO: wheelDelta is deprecated */) => {\n const delta = e.wheelDelta ? e.wheelDelta : -e.detail\n if (delta > 0) {\n handleActions('zoomIn', {\n zoomRate: 0.015,\n enableTransition: false,\n })\n } else {\n handleActions('zoomOut', {\n zoomRate: 0.015,\n enableTransition: false,\n })\n }\n }\n )\n\n scopeEventListener.run(() => {\n useEventListener(document, 'keydown', keydownHandler)\n useEventListener(document, mousewheelEventName, mousewheelHandler)\n })\n }\n\n function unregisterEventListener() {\n scopeEventListener.stop()\n }\n\n function handleImgLoad() {\n loading.value = false\n }\n\n function handleImgError(e: Event) {\n loading.value = false\n ;(e.target as HTMLImageElement).alt = t('el.image.error')\n }\n\n function handleMouseDown(e: MouseEvent) {\n if (loading.value || e.button !== 0 || !wrapper.value) return\n\n const { offsetX, offsetY } = transform.value\n const startX = e.pageX\n const startY = e.pageY\n\n const divLeft = wrapper.value.clientLeft\n const divRight = wrapper.value.clientLeft + wrapper.value.clientWidth\n const divTop = wrapper.value.clientTop\n const divBottom = wrapper.value.clientTop + wrapper.value.clientHeight\n\n const dragHandler = rafThrottle((ev: MouseEvent) => {\n transform.value = {\n ...transform.value,\n offsetX: offsetX + ev.pageX - startX,\n offsetY: offsetY + ev.pageY - startY,\n }\n })\n const removeMousemove = useEventListener(\n document,\n 'mousemove',\n dragHandler\n )\n useEventListener(document, 'mouseup', (evt) => {\n const mouseX = evt.pageX\n const mouseY = evt.pageY\n if (\n mouseX < divLeft ||\n mouseX > divRight ||\n mouseY < divTop ||\n mouseY > divBottom\n ) {\n reset()\n }\n removeMousemove()\n })\n\n e.preventDefault()\n }\n\n function reset() {\n transform.value = {\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n }\n }\n\n function toggleMode() {\n if (loading.value) return\n\n const modeNames = Object.keys(Mode)\n const modeValues = Object.values(Mode)\n const currentMode = mode.value.name\n const index = modeValues.findIndex((i) => i.name === currentMode)\n const nextIndex = (index + 1) % modeNames.length\n mode.value = Mode[modeNames[nextIndex]]\n reset()\n }\n\n function prev() {\n if (isFirst.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value - 1 + len) % len\n }\n\n function next() {\n if (isLast.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value + 1) % len\n }\n\n function handleActions(action: ImageViewerAction, options = {}) {\n if (loading.value) return\n const { zoomRate, rotateDeg, enableTransition } = {\n zoomRate: 0.2,\n rotateDeg: 90,\n enableTransition: true,\n ...options,\n }\n switch (action) {\n case 'zoomOut':\n if (transform.value.scale > 0.2) {\n transform.value.scale = parseFloat(\n (transform.value.scale - zoomRate).toFixed(3)\n )\n }\n break\n case 'zoomIn':\n transform.value.scale = parseFloat(\n (transform.value.scale + zoomRate).toFixed(3)\n )\n break\n case 'clockwise':\n transform.value.deg += rotateDeg\n break\n case 'anticlockwise':\n transform.value.deg -= rotateDeg\n break\n }\n transform.value.enableTransition = enableTransition\n }\n\n watch(currentImg, () => {\n nextTick(() => {\n const $img = img.value\n if (!$img?.complete) {\n loading.value = true\n }\n })\n })\n\n watch(index, (val) => {\n reset()\n emit('switch', val)\n })\n\n onMounted(() => {\n registerEventListener()\n // add tabindex then wrapper can be focusable via Javascript\n // focus wrapper so arrow key can't cause inner scroll behavior underneath\n wrapper.value?.focus?.()\n })\n\n return {\n index,\n wrapper,\n img,\n isSingle,\n isFirst,\n isLast,\n currentImg,\n imgStyle,\n mode,\n handleActions,\n prev,\n next,\n hide,\n toggleMode,\n handleImgLoad,\n handleImgError,\n handleMouseDown,\n }\n },\n})\n</script>\n"],"names":["markRaw","FullScreen","ScaleToOriginal","isFirefox","defineComponent","ElIcon","Close","ArrowLeft","ArrowRight","ZoomOut","ZoomIn","RefreshLeft","RefreshRight","imageViewerProps","imageViewerEmits","useLocale","ref","effectScope","computed","rafThrottle","EVENT_CODE","useEventListener"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-viewer.vue_vue_type_template_id_4b22ad85_lang.js","sources":["../../../../../../packages/components/image-viewer/src/image-viewer.vue?vue&type=template&id=4b22ad85&lang.js"],"sourcesContent":["<template>\n <transition name=\"viewer-fade\">\n <div\n ref=\"wrapper\"\n :tabindex=\"-1\"\n class=\"el-image-viewer__wrapper\"\n :style=\"{ zIndex }\"\n >\n <div\n class=\"el-image-viewer__mask\"\n @click.self=\"hideOnClickModal && hide()\"\n />\n\n <!-- CLOSE -->\n <span class=\"el-image-viewer__btn el-image-viewer__close\" @click=\"hide\">\n <el-icon><close /></el-icon>\n </span>\n\n <!-- ARROW -->\n <template v-if=\"!isSingle\">\n <span\n class=\"el-image-viewer__btn el-image-viewer__prev\"\n :class=\"{ 'is-disabled': !infinite && isFirst }\"\n @click=\"prev\"\n >\n <el-icon><arrow-left /></el-icon>\n </span>\n <span\n class=\"el-image-viewer__btn el-image-viewer__next\"\n :class=\"{ 'is-disabled': !infinite && isLast }\"\n @click=\"next\"\n >\n <el-icon><arrow-right /></el-icon>\n </span>\n </template>\n <!-- ACTIONS -->\n <div class=\"el-image-viewer__btn el-image-viewer__actions\">\n <div class=\"el-image-viewer__actions__inner\">\n <el-icon @click=\"handleActions('zoomOut')\">\n <zoom-out />\n </el-icon>\n <el-icon @click=\"handleActions('zoomIn')\">\n <zoom-in />\n </el-icon>\n <i class=\"el-image-viewer__actions__divider\"></i>\n <el-icon @click=\"toggleMode\">\n <component :is=\"mode.icon\" />\n </el-icon>\n <i class=\"el-image-viewer__actions__divider\"></i>\n <el-icon @click=\"handleActions('anticlockwise')\">\n <refresh-left />\n </el-icon>\n <el-icon @click=\"handleActions('clockwise')\">\n <refresh-right />\n </el-icon>\n </div>\n </div>\n <!-- CANVAS -->\n <div class=\"el-image-viewer__canvas\">\n <img\n v-for=\"(url, i) in urlList\"\n v-show=\"i === index\"\n ref=\"img\"\n :key=\"url\"\n :src=\"url\"\n :style=\"imgStyle\"\n class=\"el-image-viewer__img\"\n @load=\"handleImgLoad\"\n @error=\"handleImgError\"\n @mousedown=\"handleMouseDown\"\n />\n </div>\n <slot />\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n onMounted,\n watch,\n nextTick,\n effectScope,\n markRaw,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport ElIcon from '@element-plus/components/icon'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { rafThrottle, isFirefox } from '@element-plus/utils/util'\nimport {\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n FullScreen,\n ScaleToOriginal,\n} from '@element-plus/icons'\nimport { imageViewerProps, imageViewerEmits } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\n\nconst Mode = {\n CONTAIN: {\n name: 'contain',\n icon: markRaw(FullScreen),\n },\n ORIGINAL: {\n name: 'original',\n icon: markRaw(ScaleToOriginal),\n },\n}\n\nconst mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'\nexport type ImageViewerAction =\n | 'zoomIn'\n | 'zoomOut'\n | 'clockwise'\n | 'anticlockwise'\n\nexport default defineComponent({\n name: 'ElImageViewer',\n components: {\n ElIcon,\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n },\n props: imageViewerProps,\n emits: imageViewerEmits,\n\n setup(props, { emit }) {\n const { t } = useLocaleInject()\n const wrapper = ref<HTMLDivElement>()\n const img = ref<HTMLImageElement>()\n\n const scopeEventListener = effectScope()\n\n const loading = ref(true)\n const index = ref(props.initialIndex)\n const mode = ref(Mode.CONTAIN)\n const transform = ref({\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n })\n\n const isSingle = computed(() => {\n const { urlList } = props\n return urlList.length <= 1\n })\n\n const isFirst = computed(() => {\n return index.value === 0\n })\n\n const isLast = computed(() => {\n return index.value === props.urlList.length - 1\n })\n\n const currentImg = computed(() => {\n return props.urlList[index.value]\n })\n\n const imgStyle = computed(() => {\n const { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n const style: CSSProperties = {\n transform: `scale(${scale}) rotate(${deg}deg)`,\n transition: enableTransition ? 'transform .3s' : '',\n marginLeft: `${offsetX}px`,\n marginTop: `${offsetY}px`,\n }\n if (mode.value.name === Mode.CONTAIN.name) {\n style.maxWidth = style.maxHeight = '100%'\n }\n return style\n })\n\n function hide() {\n unregisterEventListener()\n emit('close')\n }\n\n function registerEventListener() {\n const keydownHandler = rafThrottle((e: KeyboardEvent) => {\n switch (e.code) {\n // ESC\n case EVENT_CODE.esc:\n hide()\n break\n // SPACE\n case EVENT_CODE.space:\n toggleMode()\n break\n // LEFT_ARROW\n case EVENT_CODE.left:\n prev()\n break\n // UP_ARROW\n case EVENT_CODE.up:\n handleActions('zoomIn')\n break\n // RIGHT_ARROW\n case EVENT_CODE.right:\n next()\n break\n // DOWN_ARROW\n case EVENT_CODE.down:\n handleActions('zoomOut')\n break\n }\n })\n const mousewheelHandler = rafThrottle(\n (e: WheelEvent | any /* TODO: wheelDelta is deprecated */) => {\n const delta = e.wheelDelta ? e.wheelDelta : -e.detail\n if (delta > 0) {\n handleActions('zoomIn', {\n zoomRate: 0.015,\n enableTransition: false,\n })\n } else {\n handleActions('zoomOut', {\n zoomRate: 0.015,\n enableTransition: false,\n })\n }\n }\n )\n\n scopeEventListener.run(() => {\n useEventListener(document, 'keydown', keydownHandler)\n useEventListener(document, mousewheelEventName, mousewheelHandler)\n })\n }\n\n function unregisterEventListener() {\n scopeEventListener.stop()\n }\n\n function handleImgLoad() {\n loading.value = false\n }\n\n function handleImgError(e: Event) {\n loading.value = false\n ;(e.target as HTMLImageElement).alt = t('el.image.error')\n }\n\n function handleMouseDown(e: MouseEvent) {\n if (loading.value || e.button !== 0 || !wrapper.value) return\n\n const { offsetX, offsetY } = transform.value\n const startX = e.pageX\n const startY = e.pageY\n\n const divLeft = wrapper.value.clientLeft\n const divRight = wrapper.value.clientLeft + wrapper.value.clientWidth\n const divTop = wrapper.value.clientTop\n const divBottom = wrapper.value.clientTop + wrapper.value.clientHeight\n\n const dragHandler = rafThrottle((ev: MouseEvent) => {\n transform.value = {\n ...transform.value,\n offsetX: offsetX + ev.pageX - startX,\n offsetY: offsetY + ev.pageY - startY,\n }\n })\n const removeMousemove = useEventListener(\n document,\n 'mousemove',\n dragHandler\n )\n useEventListener(document, 'mouseup', (evt) => {\n const mouseX = evt.pageX\n const mouseY = evt.pageY\n if (\n mouseX < divLeft ||\n mouseX > divRight ||\n mouseY < divTop ||\n mouseY > divBottom\n ) {\n reset()\n }\n removeMousemove()\n })\n\n e.preventDefault()\n }\n\n function reset() {\n transform.value = {\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n }\n }\n\n function toggleMode() {\n if (loading.value) return\n\n const modeNames = Object.keys(Mode)\n const modeValues = Object.values(Mode)\n const currentMode = mode.value.name\n const index = modeValues.findIndex((i) => i.name === currentMode)\n const nextIndex = (index + 1) % modeNames.length\n mode.value = Mode[modeNames[nextIndex]]\n reset()\n }\n\n function prev() {\n if (isFirst.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value - 1 + len) % len\n }\n\n function next() {\n if (isLast.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value + 1) % len\n }\n\n function handleActions(action: ImageViewerAction, options = {}) {\n if (loading.value) return\n const { zoomRate, rotateDeg, enableTransition } = {\n zoomRate: 0.2,\n rotateDeg: 90,\n enableTransition: true,\n ...options,\n }\n switch (action) {\n case 'zoomOut':\n if (transform.value.scale > 0.2) {\n transform.value.scale = parseFloat(\n (transform.value.scale - zoomRate).toFixed(3)\n )\n }\n break\n case 'zoomIn':\n transform.value.scale = parseFloat(\n (transform.value.scale + zoomRate).toFixed(3)\n )\n break\n case 'clockwise':\n transform.value.deg += rotateDeg\n break\n case 'anticlockwise':\n transform.value.deg -= rotateDeg\n break\n }\n transform.value.enableTransition = enableTransition\n }\n\n watch(currentImg, () => {\n nextTick(() => {\n const $img = img.value\n if (!$img?.complete) {\n loading.value = true\n }\n })\n })\n\n watch(index, (val) => {\n reset()\n emit('switch', val)\n })\n\n onMounted(() => {\n registerEventListener()\n // add tabindex then wrapper can be focusable via Javascript\n // focus wrapper so arrow key can't cause inner scroll behavior underneath\n wrapper.value?.focus?.()\n })\n\n return {\n index,\n wrapper,\n img,\n isSingle,\n isFirst,\n isLast,\n currentImg,\n imgStyle,\n mode,\n handleActions,\n prev,\n next,\n hide,\n toggleMode,\n handleImgLoad,\n handleImgError,\n handleMouseDown,\n }\n },\n})\n</script>\n"],"names":["_createBlock","_createElementVNode","_createCommentVNode","_createVNode","_createElementBlock","_renderSlot"],"mappings":";;;;;;qBAoCW,OAAM;qBACJ,OAAM;iEAON,OAAM;iEAIN,OAAM;qBAUR,OAAM;;;;;;;;;;;0BAzDfA,kCAAY,MAAK;yBACf;MAAAC;QACE,KAAI;AAAA,QACH,UAAU;AAAA,QACX,OAAM;AAAA,QACL,oCAAS;;QAEVA;UACE,OAAM;AAAA,UACL,iEAAY,yBAAoB;;QAGnCC;QACAD;UAAM,OAAM;AAAA,UAA+C,gDAAO;;UAChEE;iCAAS;cAAAA,gBAAS;AAAA;AAAA;;;QAGpBD;SACiB,kCAAjBE;UACEH;YACE,2BAAM,gEACoB,iBAAY;YACrC,gDAAO;;YAERE;mCAAS;gBAAAA,gBAAc;AAAA;AAAA;;;UAEzBF;YACE,2BAAM,gEACoB,iBAAY;YACrC,gDAAO;;YAERE;mCAAS;gBAAAA,gBAAe;AAAA;AAAA;;;;QAG5BD;QACAD,8BAAA;UACEA,8BAAA;YACEE;cAAU,+CAAO;;mCACf;gBAAAA;;;;YAEFA;cAAU,+CAAO;;mCACf;gBAAAA;;;;YAEF;AAAA,YACAA,sCAAU,SAAO;mCACf;kCAAAH,4CAAgB,UAAK;AAAA;AAAA;;YAEvB;AAAA,YACAG;cAAU,+CAAO;;mCACf;gBAAAA;;;;YAEFA;cAAU,+CAAO;;mCACf;gBAAAA;;;;;;QAIND;QACAD,8BAAA;gCACEG,0DACqB,eAAX,KAAK;wDADfA;cAGE,KAAI;AAAA,cACH,KAAK;AAAA,cACL,KAAK;AAAA,cACL,0BAAO;cACR,OAAM;AAAA,cACL,+CAAM;cACN,gDAAO;cACP,sDAAW;;0BARJ,MAAM;;;;QAWlBC;;;;;;;;;"}
1
+ {"version":3,"file":"image-viewer.vue_vue_type_template_id_4b22ad85_lang.js","sources":["../../../../../../packages/components/image-viewer/src/image-viewer.vue?vue&type=template&id=4b22ad85&lang.js"],"sourcesContent":["<template>\n <transition name=\"viewer-fade\">\n <div\n ref=\"wrapper\"\n :tabindex=\"-1\"\n class=\"el-image-viewer__wrapper\"\n :style=\"{ zIndex }\"\n >\n <div\n class=\"el-image-viewer__mask\"\n @click.self=\"hideOnClickModal && hide()\"\n />\n\n <!-- CLOSE -->\n <span class=\"el-image-viewer__btn el-image-viewer__close\" @click=\"hide\">\n <el-icon><close /></el-icon>\n </span>\n\n <!-- ARROW -->\n <template v-if=\"!isSingle\">\n <span\n class=\"el-image-viewer__btn el-image-viewer__prev\"\n :class=\"{ 'is-disabled': !infinite && isFirst }\"\n @click=\"prev\"\n >\n <el-icon><arrow-left /></el-icon>\n </span>\n <span\n class=\"el-image-viewer__btn el-image-viewer__next\"\n :class=\"{ 'is-disabled': !infinite && isLast }\"\n @click=\"next\"\n >\n <el-icon><arrow-right /></el-icon>\n </span>\n </template>\n <!-- ACTIONS -->\n <div class=\"el-image-viewer__btn el-image-viewer__actions\">\n <div class=\"el-image-viewer__actions__inner\">\n <el-icon @click=\"handleActions('zoomOut')\">\n <zoom-out />\n </el-icon>\n <el-icon @click=\"handleActions('zoomIn')\">\n <zoom-in />\n </el-icon>\n <i class=\"el-image-viewer__actions__divider\"></i>\n <el-icon @click=\"toggleMode\">\n <component :is=\"mode.icon\" />\n </el-icon>\n <i class=\"el-image-viewer__actions__divider\"></i>\n <el-icon @click=\"handleActions('anticlockwise')\">\n <refresh-left />\n </el-icon>\n <el-icon @click=\"handleActions('clockwise')\">\n <refresh-right />\n </el-icon>\n </div>\n </div>\n <!-- CANVAS -->\n <div class=\"el-image-viewer__canvas\">\n <img\n v-for=\"(url, i) in urlList\"\n v-show=\"i === index\"\n ref=\"img\"\n :key=\"url\"\n :src=\"url\"\n :style=\"imgStyle\"\n class=\"el-image-viewer__img\"\n @load=\"handleImgLoad\"\n @error=\"handleImgError\"\n @mousedown=\"handleMouseDown\"\n />\n </div>\n <slot />\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n onMounted,\n watch,\n nextTick,\n effectScope,\n markRaw,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport ElIcon from '@element-plus/components/icon'\nimport { useLocale } from '@element-plus/hooks'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { rafThrottle, isFirefox } from '@element-plus/utils/util'\nimport {\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n FullScreen,\n ScaleToOriginal,\n} from '@element-plus/icons'\nimport { imageViewerProps, imageViewerEmits } from './image-viewer'\n\nimport type { CSSProperties } from 'vue'\n\nconst Mode = {\n CONTAIN: {\n name: 'contain',\n icon: markRaw(FullScreen),\n },\n ORIGINAL: {\n name: 'original',\n icon: markRaw(ScaleToOriginal),\n },\n}\n\nconst mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'\nexport type ImageViewerAction =\n | 'zoomIn'\n | 'zoomOut'\n | 'clockwise'\n | 'anticlockwise'\n\nexport default defineComponent({\n name: 'ElImageViewer',\n components: {\n ElIcon,\n Close,\n ArrowLeft,\n ArrowRight,\n ZoomOut,\n ZoomIn,\n RefreshLeft,\n RefreshRight,\n },\n props: imageViewerProps,\n emits: imageViewerEmits,\n\n setup(props, { emit }) {\n const { t } = useLocale()\n const wrapper = ref<HTMLDivElement>()\n const img = ref<HTMLImageElement>()\n\n const scopeEventListener = effectScope()\n\n const loading = ref(true)\n const index = ref(props.initialIndex)\n const mode = ref(Mode.CONTAIN)\n const transform = ref({\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n })\n\n const isSingle = computed(() => {\n const { urlList } = props\n return urlList.length <= 1\n })\n\n const isFirst = computed(() => {\n return index.value === 0\n })\n\n const isLast = computed(() => {\n return index.value === props.urlList.length - 1\n })\n\n const currentImg = computed(() => {\n return props.urlList[index.value]\n })\n\n const imgStyle = computed(() => {\n const { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n const style: CSSProperties = {\n transform: `scale(${scale}) rotate(${deg}deg)`,\n transition: enableTransition ? 'transform .3s' : '',\n marginLeft: `${offsetX}px`,\n marginTop: `${offsetY}px`,\n }\n if (mode.value.name === Mode.CONTAIN.name) {\n style.maxWidth = style.maxHeight = '100%'\n }\n return style\n })\n\n function hide() {\n unregisterEventListener()\n emit('close')\n }\n\n function registerEventListener() {\n const keydownHandler = rafThrottle((e: KeyboardEvent) => {\n switch (e.code) {\n // ESC\n case EVENT_CODE.esc:\n hide()\n break\n // SPACE\n case EVENT_CODE.space:\n toggleMode()\n break\n // LEFT_ARROW\n case EVENT_CODE.left:\n prev()\n break\n // UP_ARROW\n case EVENT_CODE.up:\n handleActions('zoomIn')\n break\n // RIGHT_ARROW\n case EVENT_CODE.right:\n next()\n break\n // DOWN_ARROW\n case EVENT_CODE.down:\n handleActions('zoomOut')\n break\n }\n })\n const mousewheelHandler = rafThrottle(\n (e: WheelEvent | any /* TODO: wheelDelta is deprecated */) => {\n const delta = e.wheelDelta ? e.wheelDelta : -e.detail\n if (delta > 0) {\n handleActions('zoomIn', {\n zoomRate: 0.015,\n enableTransition: false,\n })\n } else {\n handleActions('zoomOut', {\n zoomRate: 0.015,\n enableTransition: false,\n })\n }\n }\n )\n\n scopeEventListener.run(() => {\n useEventListener(document, 'keydown', keydownHandler)\n useEventListener(document, mousewheelEventName, mousewheelHandler)\n })\n }\n\n function unregisterEventListener() {\n scopeEventListener.stop()\n }\n\n function handleImgLoad() {\n loading.value = false\n }\n\n function handleImgError(e: Event) {\n loading.value = false\n ;(e.target as HTMLImageElement).alt = t('el.image.error')\n }\n\n function handleMouseDown(e: MouseEvent) {\n if (loading.value || e.button !== 0 || !wrapper.value) return\n\n const { offsetX, offsetY } = transform.value\n const startX = e.pageX\n const startY = e.pageY\n\n const divLeft = wrapper.value.clientLeft\n const divRight = wrapper.value.clientLeft + wrapper.value.clientWidth\n const divTop = wrapper.value.clientTop\n const divBottom = wrapper.value.clientTop + wrapper.value.clientHeight\n\n const dragHandler = rafThrottle((ev: MouseEvent) => {\n transform.value = {\n ...transform.value,\n offsetX: offsetX + ev.pageX - startX,\n offsetY: offsetY + ev.pageY - startY,\n }\n })\n const removeMousemove = useEventListener(\n document,\n 'mousemove',\n dragHandler\n )\n useEventListener(document, 'mouseup', (evt) => {\n const mouseX = evt.pageX\n const mouseY = evt.pageY\n if (\n mouseX < divLeft ||\n mouseX > divRight ||\n mouseY < divTop ||\n mouseY > divBottom\n ) {\n reset()\n }\n removeMousemove()\n })\n\n e.preventDefault()\n }\n\n function reset() {\n transform.value = {\n scale: 1,\n deg: 0,\n offsetX: 0,\n offsetY: 0,\n enableTransition: false,\n }\n }\n\n function toggleMode() {\n if (loading.value) return\n\n const modeNames = Object.keys(Mode)\n const modeValues = Object.values(Mode)\n const currentMode = mode.value.name\n const index = modeValues.findIndex((i) => i.name === currentMode)\n const nextIndex = (index + 1) % modeNames.length\n mode.value = Mode[modeNames[nextIndex]]\n reset()\n }\n\n function prev() {\n if (isFirst.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value - 1 + len) % len\n }\n\n function next() {\n if (isLast.value && !props.infinite) return\n const len = props.urlList.length\n index.value = (index.value + 1) % len\n }\n\n function handleActions(action: ImageViewerAction, options = {}) {\n if (loading.value) return\n const { zoomRate, rotateDeg, enableTransition } = {\n zoomRate: 0.2,\n rotateDeg: 90,\n enableTransition: true,\n ...options,\n }\n switch (action) {\n case 'zoomOut':\n if (transform.value.scale > 0.2) {\n transform.value.scale = parseFloat(\n (transform.value.scale - zoomRate).toFixed(3)\n )\n }\n break\n case 'zoomIn':\n transform.value.scale = parseFloat(\n (transform.value.scale + zoomRate).toFixed(3)\n )\n break\n case 'clockwise':\n transform.value.deg += rotateDeg\n break\n case 'anticlockwise':\n transform.value.deg -= rotateDeg\n break\n }\n transform.value.enableTransition = enableTransition\n }\n\n watch(currentImg, () => {\n nextTick(() => {\n const $img = img.value\n if (!$img?.complete) {\n loading.value = true\n }\n })\n })\n\n watch(index, (val) => {\n reset()\n emit('switch', val)\n })\n\n onMounted(() => {\n registerEventListener()\n // add tabindex then wrapper can be focusable via Javascript\n // focus wrapper so arrow key can't cause inner scroll behavior underneath\n wrapper.value?.focus?.()\n })\n\n return {\n index,\n wrapper,\n img,\n isSingle,\n isFirst,\n isLast,\n currentImg,\n imgStyle,\n mode,\n handleActions,\n prev,\n next,\n hide,\n toggleMode,\n handleImgLoad,\n handleImgError,\n handleMouseDown,\n }\n },\n})\n</script>\n"],"names":["_createBlock","_createElementVNode","_createCommentVNode","_createVNode","_createElementBlock","_renderSlot"],"mappings":";;;;;;qBAoCW,OAAM;qBACJ,OAAM;iEAON,OAAM;iEAIN,OAAM;qBAUR,OAAM;;;;;;;;;;;0BAzDfA,kCAAY,MAAK;yBACf;MAAAC;QACE,KAAI;AAAA,QACH,UAAU;AAAA,QACX,OAAM;AAAA,QACL,oCAAS;;QAEVA;UACE,OAAM;AAAA,UACL,iEAAY,yBAAoB;;QAGnCC;QACAD;UAAM,OAAM;AAAA,UAA+C,gDAAO;;UAChEE;iCAAS;cAAAA,gBAAS;AAAA;AAAA;;;QAGpBD;SACiB,kCAAjBE;UACEH;YACE,2BAAM,gEACoB,iBAAY;YACrC,gDAAO;;YAERE;mCAAS;gBAAAA,gBAAc;AAAA;AAAA;;;UAEzBF;YACE,2BAAM,gEACoB,iBAAY;YACrC,gDAAO;;YAERE;mCAAS;gBAAAA,gBAAe;AAAA;AAAA;;;;QAG5BD;QACAD,8BAAA;UACEA,8BAAA;YACEE;cAAU,+CAAO;;mCACf;gBAAAA;;;;YAEFA;cAAU,+CAAO;;mCACf;gBAAAA;;;;YAEF;AAAA,YACAA,sCAAU,SAAO;mCACf;kCAAAH,4CAAgB,UAAK;AAAA;AAAA;;YAEvB;AAAA,YACAG;cAAU,+CAAO;;mCACf;gBAAAA;;;;YAEFA;cAAU,+CAAO;;mCACf;gBAAAA;;;;;;QAIND;QACAD,8BAAA;gCACEG,0DACqB,eAAX,KAAK;wDADfA;cAGE,KAAI;AAAA,cACH,KAAK;AAAA,cACL,KAAK;AAAA,cACL,0BAAO;cACR,OAAM;AAAA,cACL,+CAAM;cACN,gDAAO;cACP,sDAAW;;0BARJ,MAAM;;;;QAWlBC;;;;;;;;;"}
@@ -86,6 +86,7 @@ var card = require('./card/src/card.js');
86
86
  var types = require('./cascader-panel/src/types.js');
87
87
  var config = require('./cascader-panel/src/config.js');
88
88
  var col = require('./col/src/col.js');
89
+ var configProvider = require('./config-provider/src/config-provider.js');
89
90
  var useDialog = require('./dialog/src/use-dialog.js');
90
91
  var dialog = require('./dialog/src/dialog.js');
91
92
  var divider = require('./divider/src/divider.js');
@@ -268,6 +269,7 @@ exports.CommonProps = config.CommonProps;
268
269
  exports.DefaultProps = config.DefaultProps;
269
270
  exports.useCascaderConfig = config.useCascaderConfig;
270
271
  exports.colProps = col.colProps;
272
+ exports.configProviderProps = configProvider.configProviderProps;
271
273
  exports.useDialog = useDialog.useDialog;
272
274
  exports.dialogEmits = dialog.dialogEmits;
273
275
  exports.dialogProps = dialog.dialogProps;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -31,7 +31,7 @@ var script = vue.defineComponent({
31
31
  emits: input.inputEmits,
32
32
  setup(props, { slots, emit, attrs: rawAttrs }) {
33
33
  const instance = vue.getCurrentInstance();
34
- const attrs = index$1["default"]();
34
+ const attrs = index$1.useAttrs();
35
35
  const elForm = vue.inject(form.elFormKey, void 0);
36
36
  const elFormItem = vue.inject(form.elFormItemKey, void 0);
37
37
  const { size: inputSize, disabled: inputDisabled } = index$2.useFormItem({});
@@ -38,10 +38,9 @@ var script = vue.defineComponent({
38
38
  el.style.width = `${el.scrollWidth}px`;
39
39
  el.style.overflow = "hidden";
40
40
  },
41
- onLeave(el, done) {
41
+ onLeave(el) {
42
42
  dom.addClass(el, "horizontal-collapse-transition");
43
43
  el.style.width = `${el.dataset.scrollWidth}px`;
44
- done();
45
44
  }
46
45
  };
47
46
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"menu-collapse-transition.vue_vue_type_script_lang.js","sources":["../../../../../../packages/components/menu/src/menu-collapse-transition.vue"],"sourcesContent":["<template>\n <transition mode=\"out-in\" v-bind=\"listeners\">\n <slot />\n </transition>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { addClass, removeClass, hasClass } from '@element-plus/utils/dom'\n\nimport type { TransitionProps, BaseTransitionProps } from 'vue'\n\nexport default defineComponent({\n name: 'ElMenuCollapseTransition',\n setup() {\n const listeners = {\n onBeforeEnter: (el) => (el.style.opacity = '0.2'),\n onEnter(el, done) {\n addClass(el, 'el-opacity-transition')\n el.style.opacity = '1'\n done()\n },\n\n onAfterEnter(el) {\n removeClass(el, 'el-opacity-transition')\n el.style.opacity = ''\n },\n\n onBeforeLeave(el) {\n if (!el.dataset) {\n ;(el as any).dataset = {}\n }\n\n if (hasClass(el, 'el-menu--collapse')) {\n removeClass(el, 'el-menu--collapse')\n el.dataset.oldOverflow = el.style.overflow\n el.dataset.scrollWidth = el.clientWidth.toString()\n addClass(el, 'el-menu--collapse')\n } else {\n addClass(el, 'el-menu--collapse')\n el.dataset.oldOverflow = el.style.overflow\n el.dataset.scrollWidth = el.clientWidth.toString()\n removeClass(el, 'el-menu--collapse')\n }\n\n el.style.width = `${el.scrollWidth}px`\n el.style.overflow = 'hidden'\n },\n\n onLeave(el: HTMLElement, done) {\n addClass(el, 'horizontal-collapse-transition')\n el.style.width = `${el.dataset.scrollWidth}px`\n done()\n },\n } as BaseTransitionProps<HTMLElement> as TransitionProps\n\n return {\n listeners,\n }\n },\n})\n</script>\n"],"names":["defineComponent","hasClass"],"mappings":";;;;;;;AAWA,aAAeA,oBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,QAAQ;AACN,UAAM,YAAY;AAAA,MAChB,eAAe,CAAC,OAAQ,GAAG,MAAM,UAAU;AAAA,MAC3C,QAAQ,IAAI,MAAM;AAChB,qBAAS,IAAI;AACb,WAAG,MAAM,UAAU;AACnB;AAAA;AAAA,MAGF,aAAa,IAAI;AACf,wBAAY,IAAI;AAChB,WAAG,MAAM,UAAU;AAAA;AAAA,MAGrB,cAAc,IAAI;AAChB,YAAI,CAAC,GAAG,SAAS;AACf;AAAC,UAAC,GAAW,UAAU;AAAA;AAGzB,YAAIC,aAAS,IAAI,sBAAsB;AACrC,0BAAY,IAAI;AAChB,aAAG,QAAQ,cAAc,GAAG,MAAM;AAClC,aAAG,QAAQ,cAAc,GAAG,YAAY;AACxC,uBAAS,IAAI;AAAA,eACR;AACL,uBAAS,IAAI;AACb,aAAG,QAAQ,cAAc,GAAG,MAAM;AAClC,aAAG,QAAQ,cAAc,GAAG,YAAY;AACxC,0BAAY,IAAI;AAAA;AAGlB,WAAG,MAAM,QAAQ,GAAG,GAAG;AACvB,WAAG,MAAM,WAAW;AAAA;AAAA,MAGtB,QAAQ,IAAiB,MAAM;AAC7B,qBAAS,IAAI;AACb,WAAG,MAAM,QAAQ,GAAG,GAAG,QAAQ;AAC/B;AAAA;AAAA;AAIJ,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;;;;"}
1
+ {"version":3,"file":"menu-collapse-transition.vue_vue_type_script_lang.js","sources":["../../../../../../packages/components/menu/src/menu-collapse-transition.vue"],"sourcesContent":["<template>\n <transition mode=\"out-in\" v-bind=\"listeners\">\n <slot />\n </transition>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { addClass, removeClass, hasClass } from '@element-plus/utils/dom'\n\nimport type { TransitionProps, BaseTransitionProps } from 'vue'\n\nexport default defineComponent({\n name: 'ElMenuCollapseTransition',\n setup() {\n const listeners = {\n onBeforeEnter: (el) => (el.style.opacity = '0.2'),\n onEnter(el, done) {\n addClass(el, 'el-opacity-transition')\n el.style.opacity = '1'\n done()\n },\n\n onAfterEnter(el) {\n removeClass(el, 'el-opacity-transition')\n el.style.opacity = ''\n },\n\n onBeforeLeave(el) {\n if (!el.dataset) {\n ;(el as any).dataset = {}\n }\n\n if (hasClass(el, 'el-menu--collapse')) {\n removeClass(el, 'el-menu--collapse')\n el.dataset.oldOverflow = el.style.overflow\n el.dataset.scrollWidth = el.clientWidth.toString()\n addClass(el, 'el-menu--collapse')\n } else {\n addClass(el, 'el-menu--collapse')\n el.dataset.oldOverflow = el.style.overflow\n el.dataset.scrollWidth = el.clientWidth.toString()\n removeClass(el, 'el-menu--collapse')\n }\n\n el.style.width = `${el.scrollWidth}px`\n el.style.overflow = 'hidden'\n },\n\n onLeave(el: HTMLElement) {\n addClass(el, 'horizontal-collapse-transition')\n el.style.width = `${el.dataset.scrollWidth}px`\n },\n } as BaseTransitionProps<HTMLElement> as TransitionProps\n\n return {\n listeners,\n }\n },\n})\n</script>\n"],"names":["defineComponent","hasClass"],"mappings":";;;;;;;AAWA,aAAeA,oBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,QAAQ;AACN,UAAM,YAAY;AAAA,MAChB,eAAe,CAAC,OAAQ,GAAG,MAAM,UAAU;AAAA,MAC3C,QAAQ,IAAI,MAAM;AAChB,qBAAS,IAAI;AACb,WAAG,MAAM,UAAU;AACnB;AAAA;AAAA,MAGF,aAAa,IAAI;AACf,wBAAY,IAAI;AAChB,WAAG,MAAM,UAAU;AAAA;AAAA,MAGrB,cAAc,IAAI;AAChB,YAAI,CAAC,GAAG,SAAS;AACf;AAAC,UAAC,GAAW,UAAU;AAAA;AAGzB,YAAIC,aAAS,IAAI,sBAAsB;AACrC,0BAAY,IAAI;AAChB,aAAG,QAAQ,cAAc,GAAG,MAAM;AAClC,aAAG,QAAQ,cAAc,GAAG,YAAY;AACxC,uBAAS,IAAI;AAAA,eACR;AACL,uBAAS,IAAI;AACb,aAAG,QAAQ,cAAc,GAAG,MAAM;AAClC,aAAG,QAAQ,cAAc,GAAG,YAAY;AACxC,0BAAY,IAAI;AAAA;AAGlB,WAAG,MAAM,QAAQ,GAAG,GAAG;AACvB,WAAG,MAAM,WAAW;AAAA;AAAA,MAGtB,QAAQ,IAAiB;AACvB,qBAAS,IAAI;AACb,WAAG,MAAM,QAAQ,GAAG,GAAG,QAAQ;AAAA;AAAA;AAInC,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"menu-collapse-transition.vue_vue_type_template_id_db8e3ce6_lang.js","sources":["../../../../../../packages/components/menu/src/menu-collapse-transition.vue?vue&type=template&id=db8e3ce6&lang.js"],"sourcesContent":["<template>\n <transition mode=\"out-in\" v-bind=\"listeners\">\n <slot />\n </transition>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { addClass, removeClass, hasClass } from '@element-plus/utils/dom'\n\nimport type { TransitionProps, BaseTransitionProps } from 'vue'\n\nexport default defineComponent({\n name: 'ElMenuCollapseTransition',\n setup() {\n const listeners = {\n onBeforeEnter: (el) => (el.style.opacity = '0.2'),\n onEnter(el, done) {\n addClass(el, 'el-opacity-transition')\n el.style.opacity = '1'\n done()\n },\n\n onAfterEnter(el) {\n removeClass(el, 'el-opacity-transition')\n el.style.opacity = ''\n },\n\n onBeforeLeave(el) {\n if (!el.dataset) {\n ;(el as any).dataset = {}\n }\n\n if (hasClass(el, 'el-menu--collapse')) {\n removeClass(el, 'el-menu--collapse')\n el.dataset.oldOverflow = el.style.overflow\n el.dataset.scrollWidth = el.clientWidth.toString()\n addClass(el, 'el-menu--collapse')\n } else {\n addClass(el, 'el-menu--collapse')\n el.dataset.oldOverflow = el.style.overflow\n el.dataset.scrollWidth = el.clientWidth.toString()\n removeClass(el, 'el-menu--collapse')\n }\n\n el.style.width = `${el.scrollWidth}px`\n el.style.overflow = 'hidden'\n },\n\n onLeave(el: HTMLElement, done) {\n addClass(el, 'horizontal-collapse-transition')\n el.style.width = `${el.dataset.scrollWidth}px`\n done()\n },\n } as BaseTransitionProps<HTMLElement> as TransitionProps\n\n return {\n listeners,\n }\n },\n})\n</script>\n"],"names":["_createBlock","_mergeProps","_renderSlot"],"mappings":";;;;;;;0BACEA,gCAAAC,iBAAY,MAAK,YAAiB;yBAChC;MAAAC;;;;;;;;"}
1
+ {"version":3,"file":"menu-collapse-transition.vue_vue_type_template_id_db8e3ce6_lang.js","sources":["../../../../../../packages/components/menu/src/menu-collapse-transition.vue?vue&type=template&id=db8e3ce6&lang.js"],"sourcesContent":["<template>\n <transition mode=\"out-in\" v-bind=\"listeners\">\n <slot />\n </transition>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { addClass, removeClass, hasClass } from '@element-plus/utils/dom'\n\nimport type { TransitionProps, BaseTransitionProps } from 'vue'\n\nexport default defineComponent({\n name: 'ElMenuCollapseTransition',\n setup() {\n const listeners = {\n onBeforeEnter: (el) => (el.style.opacity = '0.2'),\n onEnter(el, done) {\n addClass(el, 'el-opacity-transition')\n el.style.opacity = '1'\n done()\n },\n\n onAfterEnter(el) {\n removeClass(el, 'el-opacity-transition')\n el.style.opacity = ''\n },\n\n onBeforeLeave(el) {\n if (!el.dataset) {\n ;(el as any).dataset = {}\n }\n\n if (hasClass(el, 'el-menu--collapse')) {\n removeClass(el, 'el-menu--collapse')\n el.dataset.oldOverflow = el.style.overflow\n el.dataset.scrollWidth = el.clientWidth.toString()\n addClass(el, 'el-menu--collapse')\n } else {\n addClass(el, 'el-menu--collapse')\n el.dataset.oldOverflow = el.style.overflow\n el.dataset.scrollWidth = el.clientWidth.toString()\n removeClass(el, 'el-menu--collapse')\n }\n\n el.style.width = `${el.scrollWidth}px`\n el.style.overflow = 'hidden'\n },\n\n onLeave(el: HTMLElement) {\n addClass(el, 'horizontal-collapse-transition')\n el.style.width = `${el.dataset.scrollWidth}px`\n },\n } as BaseTransitionProps<HTMLElement> as TransitionProps\n\n return {\n listeners,\n }\n },\n})\n</script>\n"],"names":["_createBlock","_mergeProps","_renderSlot"],"mappings":";;;;;;;0BACEA,gCAAAC,iBAAY,MAAK,YAAiB;yBAChC;MAAAC;;;;;;;;"}
@@ -79,7 +79,7 @@ var script = vue.defineComponent({
79
79
  },
80
80
  emits: ["vanish", "action"],
81
81
  setup(props, { emit }) {
82
- const { t } = index$5.useLocaleInject();
82
+ const { t } = index$5.useLocale();
83
83
  const visible = vue.ref(false);
84
84
  const state = vue.reactive({
85
85
  beforeClose: null,
@@ -123,7 +123,7 @@ var script = vue.defineComponent({
123
123
  const hasMessage = vue.computed(() => !!state.message);
124
124
  const inputRef = vue.ref(null);
125
125
  const confirmRef = vue.ref(null);
126
- const confirmButtonClasses = vue.computed(() => `el-button--primary ${state.confirmButtonClass}`);
126
+ const confirmButtonClasses = vue.computed(() => state.confirmButtonClass);
127
127
  vue.watch(() => state.inputValue, async (val) => {
128
128
  await vue.nextTick();
129
129
  if (props.boxType === "prompt" && val !== null) {
@@ -230,16 +230,16 @@ var script = vue.defineComponent({
230
230
  handleAction("close");
231
231
  };
232
232
  if (props.closeOnPressEscape) {
233
- index$6["default"]({
233
+ index$6.useModal({
234
234
  handleClose
235
235
  }, visible);
236
236
  } else {
237
- index$7["default"](visible, "keydown", (e) => e.code === aria.EVENT_CODE.esc);
237
+ index$7.usePreventGlobal(visible, "keydown", (e) => e.code === aria.EVENT_CODE.esc);
238
238
  }
239
239
  if (props.lockScroll) {
240
- index$8["default"](visible);
240
+ index$8.useLockscreen(visible);
241
241
  }
242
- index$9["default"](visible);
242
+ index$9.useRestoreActive(visible);
243
243
  return {
244
244
  ...vue.toRefs(state),
245
245
  visible,
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue_vue_type_script_lang.js","sources":["../../../../../../packages/components/message-box/src/index.vue"],"sourcesContent":["<template>\n <transition name=\"fade-in-linear\" @after-leave=\"$emit('vanish')\">\n <el-overlay\n v-show=\"visible\"\n :z-index=\"zIndex\"\n :overlay-class=\"['is-message-box', modalClass]\"\n :mask=\"modal\"\n @click.self=\"handleWrapperClick\"\n >\n <div\n ref=\"root\"\n v-trap-focus\n :aria-label=\"title || 'dialog'\"\n aria-modal=\"true\"\n :class=\"[\n 'el-message-box',\n customClass,\n { 'el-message-box--center': center },\n ]\"\n :style=\"customStyle\"\n >\n <div\n v-if=\"title !== null && title !== undefined\"\n class=\"el-message-box__header\"\n >\n <div class=\"el-message-box__title\">\n <el-icon\n v-if=\"iconComponent && center\"\n class=\"el-message-box__status\"\n :class=\"typeClass\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <span>{{ title }}</span>\n </div>\n <button\n v-if=\"showClose\"\n type=\"button\"\n class=\"el-message-box__headerbtn\"\n aria-label=\"Close\"\n @click=\"\n handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n \"\n @keydown.prevent.enter=\"\n handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n \"\n >\n <el-icon class=\"el-message-box__close\"><close /></el-icon>\n </button>\n </div>\n <div class=\"el-message-box__content\">\n <div class=\"el-message-box__container\">\n <el-icon\n v-if=\"iconComponent && !center && hasMessage\"\n class=\"el-message-box__status\"\n :class=\"typeClass\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <div v-if=\"hasMessage\" class=\"el-message-box__message\">\n <slot>\n <p v-if=\"!dangerouslyUseHTMLString\">{{ message }}</p>\n <p v-else v-html=\"message\"></p>\n </slot>\n </div>\n </div>\n <div v-show=\"showInput\" class=\"el-message-box__input\">\n <el-input\n ref=\"inputRef\"\n v-model=\"inputValue\"\n :type=\"inputType\"\n :placeholder=\"inputPlaceholder\"\n :class=\"{ invalid: validateError }\"\n @keydown.prevent.enter=\"handleInputEnter\"\n />\n <div\n class=\"el-message-box__errormsg\"\n :style=\"{\n visibility: !!editorErrorMessage ? 'visible' : 'hidden',\n }\"\n >\n {{ editorErrorMessage }}\n </div>\n </div>\n </div>\n <div class=\"el-message-box__btns\">\n <el-button\n v-if=\"showCancelButton\"\n :loading=\"cancelButtonLoading\"\n :class=\"[cancelButtonClass]\"\n :round=\"roundButton\"\n :size=\"buttonSize || 'small'\"\n @click=\"handleAction('cancel')\"\n @keydown.prevent.enter=\"handleAction('cancel')\"\n >\n {{ cancelButtonText || t('el.messagebox.cancel') }}\n </el-button>\n <el-button\n v-show=\"showConfirmButton\"\n ref=\"confirmRef\"\n :loading=\"confirmButtonLoading\"\n :class=\"[confirmButtonClasses]\"\n :round=\"roundButton\"\n :disabled=\"confirmButtonDisabled\"\n :size=\"buttonSize || 'small'\"\n @click=\"handleAction('confirm')\"\n @keydown.prevent.enter=\"handleAction('confirm')\"\n >\n {{ confirmButtonText || t('el.messagebox.confirm') }}\n </el-button>\n </div>\n </div>\n </el-overlay>\n </transition>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n nextTick,\n onMounted,\n onBeforeUnmount,\n computed,\n watch,\n reactive,\n ref,\n toRefs,\n} from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport { TrapFocus } from '@element-plus/directives'\nimport {\n useModal,\n useLockScreen,\n useLocaleInject,\n useRestoreActive,\n usePreventGlobal,\n} from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport { ElOverlay } from '@element-plus/components/overlay'\nimport PopupManager from '@element-plus/utils/popup-manager'\nimport { on, off } from '@element-plus/utils/dom'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isValidComponentSize } from '@element-plus/utils/validators'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { TypeComponents, TypeComponentsMap } from '@element-plus/utils/icon'\n\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { ComponentSize } from '@element-plus/utils/types'\nimport type {\n Action,\n MessageBoxState,\n MessageBoxType,\n} from './message-box.type'\n\nexport default defineComponent({\n name: 'ElMessageBox',\n directives: {\n TrapFocus,\n },\n components: {\n ElButton,\n ElInput,\n ElOverlay,\n ElIcon,\n ...TypeComponents,\n },\n inheritAttrs: false,\n props: {\n buttonSize: {\n type: String as PropType<ComponentSize>,\n validator: isValidComponentSize,\n },\n modal: {\n type: Boolean,\n default: true,\n },\n lockScroll: {\n type: Boolean,\n default: true,\n },\n showClose: {\n type: Boolean,\n default: true,\n },\n closeOnClickModal: {\n type: Boolean,\n default: true,\n },\n closeOnPressEscape: {\n type: Boolean,\n default: true,\n },\n closeOnHashChange: {\n type: Boolean,\n default: true,\n },\n center: Boolean,\n roundButton: {\n default: false,\n type: Boolean,\n },\n container: {\n type: String, // default append to body\n default: 'body',\n },\n boxType: {\n type: String as PropType<MessageBoxType>,\n default: '',\n },\n },\n emits: ['vanish', 'action'],\n setup(props, { emit }) {\n // const popup = usePopup(props, doClose)\n const { t } = useLocaleInject()\n const visible = ref(false)\n // s represents state\n const state = reactive<MessageBoxState>({\n beforeClose: null,\n callback: null,\n cancelButtonText: '',\n cancelButtonClass: '',\n confirmButtonText: '',\n confirmButtonClass: '',\n customClass: '',\n customStyle: {},\n dangerouslyUseHTMLString: false,\n distinguishCancelAndClose: false,\n icon: '',\n inputPattern: null,\n inputPlaceholder: '',\n inputType: 'text',\n inputValue: null,\n inputValidator: null,\n inputErrorMessage: '',\n message: null,\n modalFade: true,\n modalClass: '',\n showCancelButton: false,\n showConfirmButton: true,\n type: '',\n title: undefined,\n showInput: false,\n action: '' as Action,\n confirmButtonLoading: false,\n cancelButtonLoading: false,\n confirmButtonDisabled: false,\n editorErrorMessage: '',\n // refer to: https://github.com/ElemeFE/element/commit/2999279ae34ef10c373ca795c87b020ed6753eed\n // seemed ok for now without this state.\n // isOnComposition: false, // temporary remove\n validateError: false,\n zIndex: PopupManager.nextZIndex(),\n })\n\n const typeClass = computed(() => {\n const type = state.type\n return type && TypeComponentsMap[type]\n ? `el-message-box-icon--${type}`\n : ''\n })\n\n const iconComponent = computed(\n () => state.icon || TypeComponentsMap[state.type] || ''\n )\n const hasMessage = computed(() => !!state.message)\n const inputRef = ref<ComponentPublicInstance>(null)\n const confirmRef = ref<ComponentPublicInstance>(null)\n\n const confirmButtonClasses = computed(\n () => `el-button--primary ${state.confirmButtonClass}`\n )\n\n watch(\n () => state.inputValue,\n async (val) => {\n await nextTick()\n if (props.boxType === 'prompt' && val !== null) {\n validate()\n }\n },\n { immediate: true }\n )\n\n watch(\n () => visible.value,\n (val) => {\n if (val) {\n if (props.boxType === 'alert' || props.boxType === 'confirm') {\n nextTick().then(() => {\n confirmRef.value?.$el?.focus?.()\n })\n }\n state.zIndex = PopupManager.nextZIndex()\n }\n if (props.boxType !== 'prompt') return\n if (val) {\n nextTick().then(() => {\n if (inputRef.value && inputRef.value.$el) {\n getInputElement().focus()\n }\n })\n } else {\n state.editorErrorMessage = ''\n state.validateError = false\n }\n }\n )\n\n onMounted(async () => {\n await nextTick()\n if (props.closeOnHashChange) {\n on(window, 'hashchange', doClose)\n }\n })\n\n onBeforeUnmount(() => {\n if (props.closeOnHashChange) {\n off(window, 'hashchange', doClose)\n }\n })\n\n function doClose() {\n if (!visible.value) return\n visible.value = false\n nextTick(() => {\n if (state.action) emit('action', state.action)\n })\n }\n\n const handleWrapperClick = () => {\n if (props.closeOnClickModal) {\n handleAction(state.distinguishCancelAndClose ? 'close' : 'cancel')\n }\n }\n\n const handleInputEnter = () => {\n if (state.inputType !== 'textarea') {\n return handleAction('confirm')\n }\n }\n\n const handleAction = (action: Action) => {\n if (props.boxType === 'prompt' && action === 'confirm' && !validate()) {\n return\n }\n\n state.action = action\n\n if (state.beforeClose) {\n state.beforeClose?.(action, state, doClose)\n } else {\n doClose()\n }\n }\n\n const validate = () => {\n if (props.boxType === 'prompt') {\n const inputPattern = state.inputPattern\n if (inputPattern && !inputPattern.test(state.inputValue || '')) {\n state.editorErrorMessage =\n state.inputErrorMessage || t('el.messagebox.error')\n state.validateError = true\n return false\n }\n const inputValidator = state.inputValidator\n if (typeof inputValidator === 'function') {\n const validateResult = inputValidator(state.inputValue)\n if (validateResult === false) {\n state.editorErrorMessage =\n state.inputErrorMessage || t('el.messagebox.error')\n state.validateError = true\n return false\n }\n if (typeof validateResult === 'string') {\n state.editorErrorMessage = validateResult\n state.validateError = true\n return false\n }\n }\n }\n state.editorErrorMessage = ''\n state.validateError = false\n return true\n }\n\n const getInputElement = () => {\n const inputRefs = inputRef.value.$refs\n return (inputRefs.input || inputRefs.textarea) as HTMLElement\n }\n\n const handleClose = () => {\n handleAction('close')\n }\n\n // when close on press escape is disabled, pressing esc should not callout\n // any other message box and close any other dialog-ish elements\n // e.g. Dialog has a close on press esc feature, and when it closes, it calls\n // props.beforeClose method to make a intermediate state by callout a message box\n // for some verification or alerting. then if we allow global event liek this\n // to dispatch, it could callout another message box.\n if (props.closeOnPressEscape) {\n useModal(\n {\n handleClose,\n },\n visible\n )\n } else {\n usePreventGlobal(\n visible,\n 'keydown',\n (e: KeyboardEvent) => e.code === EVENT_CODE.esc\n )\n }\n\n // locks the screen to prevent scroll\n if (props.lockScroll) {\n useLockScreen(visible)\n }\n\n // restore to prev active element.\n useRestoreActive(visible)\n\n return {\n ...toRefs(state),\n visible,\n hasMessage,\n typeClass,\n iconComponent,\n confirmButtonClasses,\n inputRef,\n confirmRef,\n doClose, // for outside usage\n handleClose, // for out side usage\n handleWrapperClick,\n handleInputEnter,\n handleAction,\n t,\n }\n },\n})\n</script>\n"],"names":["defineComponent","TrapFocus","ElButton","ElInput","ElOverlay","ElIcon","TypeComponents","isValidComponentSize","useLocaleInject","ref","reactive","PopupManager","computed","TypeComponentsMap","nextTick","EVENT_CODE","toRefs"],"mappings":"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"}
1
+ {"version":3,"file":"index.vue_vue_type_script_lang.js","sources":["../../../../../../packages/components/message-box/src/index.vue"],"sourcesContent":["<template>\n <transition name=\"fade-in-linear\" @after-leave=\"$emit('vanish')\">\n <el-overlay\n v-show=\"visible\"\n :z-index=\"zIndex\"\n :overlay-class=\"['is-message-box', modalClass]\"\n :mask=\"modal\"\n @click.self=\"handleWrapperClick\"\n >\n <div\n ref=\"root\"\n v-trap-focus\n :aria-label=\"title || 'dialog'\"\n aria-modal=\"true\"\n :class=\"[\n 'el-message-box',\n customClass,\n { 'el-message-box--center': center },\n ]\"\n :style=\"customStyle\"\n >\n <div\n v-if=\"title !== null && title !== undefined\"\n class=\"el-message-box__header\"\n >\n <div class=\"el-message-box__title\">\n <el-icon\n v-if=\"iconComponent && center\"\n class=\"el-message-box__status\"\n :class=\"typeClass\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <span>{{ title }}</span>\n </div>\n <button\n v-if=\"showClose\"\n type=\"button\"\n class=\"el-message-box__headerbtn\"\n aria-label=\"Close\"\n @click=\"\n handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n \"\n @keydown.prevent.enter=\"\n handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n \"\n >\n <el-icon class=\"el-message-box__close\"><close /></el-icon>\n </button>\n </div>\n <div class=\"el-message-box__content\">\n <div class=\"el-message-box__container\">\n <el-icon\n v-if=\"iconComponent && !center && hasMessage\"\n class=\"el-message-box__status\"\n :class=\"typeClass\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <div v-if=\"hasMessage\" class=\"el-message-box__message\">\n <slot>\n <p v-if=\"!dangerouslyUseHTMLString\">{{ message }}</p>\n <p v-else v-html=\"message\"></p>\n </slot>\n </div>\n </div>\n <div v-show=\"showInput\" class=\"el-message-box__input\">\n <el-input\n ref=\"inputRef\"\n v-model=\"inputValue\"\n :type=\"inputType\"\n :placeholder=\"inputPlaceholder\"\n :class=\"{ invalid: validateError }\"\n @keydown.prevent.enter=\"handleInputEnter\"\n />\n <div\n class=\"el-message-box__errormsg\"\n :style=\"{\n visibility: !!editorErrorMessage ? 'visible' : 'hidden',\n }\"\n >\n {{ editorErrorMessage }}\n </div>\n </div>\n </div>\n <div class=\"el-message-box__btns\">\n <el-button\n v-if=\"showCancelButton\"\n :loading=\"cancelButtonLoading\"\n :class=\"[cancelButtonClass]\"\n :round=\"roundButton\"\n :size=\"buttonSize || 'small'\"\n @click=\"handleAction('cancel')\"\n @keydown.prevent.enter=\"handleAction('cancel')\"\n >\n {{ cancelButtonText || t('el.messagebox.cancel') }}\n </el-button>\n <el-button\n v-show=\"showConfirmButton\"\n ref=\"confirmRef\"\n type=\"primary\"\n plain\n :loading=\"confirmButtonLoading\"\n :class=\"[confirmButtonClasses]\"\n :round=\"roundButton\"\n :disabled=\"confirmButtonDisabled\"\n :size=\"buttonSize || 'small'\"\n @click=\"handleAction('confirm')\"\n @keydown.prevent.enter=\"handleAction('confirm')\"\n >\n {{ confirmButtonText || t('el.messagebox.confirm') }}\n </el-button>\n </div>\n </div>\n </el-overlay>\n </transition>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n nextTick,\n onMounted,\n onBeforeUnmount,\n computed,\n watch,\n reactive,\n ref,\n toRefs,\n} from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport { TrapFocus } from '@element-plus/directives'\nimport {\n useModal,\n useLockscreen,\n useLocale,\n useRestoreActive,\n usePreventGlobal,\n} from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport { ElOverlay } from '@element-plus/components/overlay'\nimport PopupManager from '@element-plus/utils/popup-manager'\nimport { on, off } from '@element-plus/utils/dom'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isValidComponentSize } from '@element-plus/utils/validators'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { TypeComponents, TypeComponentsMap } from '@element-plus/utils/icon'\n\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { ComponentSize } from '@element-plus/utils/types'\nimport type {\n Action,\n MessageBoxState,\n MessageBoxType,\n} from './message-box.type'\n\nexport default defineComponent({\n name: 'ElMessageBox',\n directives: {\n TrapFocus,\n },\n components: {\n ElButton,\n ElInput,\n ElOverlay,\n ElIcon,\n ...TypeComponents,\n },\n inheritAttrs: false,\n props: {\n buttonSize: {\n type: String as PropType<ComponentSize>,\n validator: isValidComponentSize,\n },\n modal: {\n type: Boolean,\n default: true,\n },\n lockScroll: {\n type: Boolean,\n default: true,\n },\n showClose: {\n type: Boolean,\n default: true,\n },\n closeOnClickModal: {\n type: Boolean,\n default: true,\n },\n closeOnPressEscape: {\n type: Boolean,\n default: true,\n },\n closeOnHashChange: {\n type: Boolean,\n default: true,\n },\n center: Boolean,\n roundButton: {\n default: false,\n type: Boolean,\n },\n container: {\n type: String, // default append to body\n default: 'body',\n },\n boxType: {\n type: String as PropType<MessageBoxType>,\n default: '',\n },\n },\n emits: ['vanish', 'action'],\n setup(props, { emit }) {\n // const popup = usePopup(props, doClose)\n const { t } = useLocale()\n const visible = ref(false)\n // s represents state\n const state = reactive<MessageBoxState>({\n beforeClose: null,\n callback: null,\n cancelButtonText: '',\n cancelButtonClass: '',\n confirmButtonText: '',\n confirmButtonClass: '',\n customClass: '',\n customStyle: {},\n dangerouslyUseHTMLString: false,\n distinguishCancelAndClose: false,\n icon: '',\n inputPattern: null,\n inputPlaceholder: '',\n inputType: 'text',\n inputValue: null,\n inputValidator: null,\n inputErrorMessage: '',\n message: null,\n modalFade: true,\n modalClass: '',\n showCancelButton: false,\n showConfirmButton: true,\n type: '',\n title: undefined,\n showInput: false,\n action: '' as Action,\n confirmButtonLoading: false,\n cancelButtonLoading: false,\n confirmButtonDisabled: false,\n editorErrorMessage: '',\n // refer to: https://github.com/ElemeFE/element/commit/2999279ae34ef10c373ca795c87b020ed6753eed\n // seemed ok for now without this state.\n // isOnComposition: false, // temporary remove\n validateError: false,\n zIndex: PopupManager.nextZIndex(),\n })\n\n const typeClass = computed(() => {\n const type = state.type\n return type && TypeComponentsMap[type]\n ? `el-message-box-icon--${type}`\n : ''\n })\n\n const iconComponent = computed(\n () => state.icon || TypeComponentsMap[state.type] || ''\n )\n const hasMessage = computed(() => !!state.message)\n const inputRef = ref<ComponentPublicInstance>(null)\n const confirmRef = ref<ComponentPublicInstance>(null)\n\n const confirmButtonClasses = computed(() => state.confirmButtonClass)\n\n watch(\n () => state.inputValue,\n async (val) => {\n await nextTick()\n if (props.boxType === 'prompt' && val !== null) {\n validate()\n }\n },\n { immediate: true }\n )\n\n watch(\n () => visible.value,\n (val) => {\n if (val) {\n if (props.boxType === 'alert' || props.boxType === 'confirm') {\n nextTick().then(() => {\n confirmRef.value?.$el?.focus?.()\n })\n }\n state.zIndex = PopupManager.nextZIndex()\n }\n if (props.boxType !== 'prompt') return\n if (val) {\n nextTick().then(() => {\n if (inputRef.value && inputRef.value.$el) {\n getInputElement().focus()\n }\n })\n } else {\n state.editorErrorMessage = ''\n state.validateError = false\n }\n }\n )\n\n onMounted(async () => {\n await nextTick()\n if (props.closeOnHashChange) {\n on(window, 'hashchange', doClose)\n }\n })\n\n onBeforeUnmount(() => {\n if (props.closeOnHashChange) {\n off(window, 'hashchange', doClose)\n }\n })\n\n function doClose() {\n if (!visible.value) return\n visible.value = false\n nextTick(() => {\n if (state.action) emit('action', state.action)\n })\n }\n\n const handleWrapperClick = () => {\n if (props.closeOnClickModal) {\n handleAction(state.distinguishCancelAndClose ? 'close' : 'cancel')\n }\n }\n\n const handleInputEnter = () => {\n if (state.inputType !== 'textarea') {\n return handleAction('confirm')\n }\n }\n\n const handleAction = (action: Action) => {\n if (props.boxType === 'prompt' && action === 'confirm' && !validate()) {\n return\n }\n\n state.action = action\n\n if (state.beforeClose) {\n state.beforeClose?.(action, state, doClose)\n } else {\n doClose()\n }\n }\n\n const validate = () => {\n if (props.boxType === 'prompt') {\n const inputPattern = state.inputPattern\n if (inputPattern && !inputPattern.test(state.inputValue || '')) {\n state.editorErrorMessage =\n state.inputErrorMessage || t('el.messagebox.error')\n state.validateError = true\n return false\n }\n const inputValidator = state.inputValidator\n if (typeof inputValidator === 'function') {\n const validateResult = inputValidator(state.inputValue)\n if (validateResult === false) {\n state.editorErrorMessage =\n state.inputErrorMessage || t('el.messagebox.error')\n state.validateError = true\n return false\n }\n if (typeof validateResult === 'string') {\n state.editorErrorMessage = validateResult\n state.validateError = true\n return false\n }\n }\n }\n state.editorErrorMessage = ''\n state.validateError = false\n return true\n }\n\n const getInputElement = () => {\n const inputRefs = inputRef.value.$refs\n return (inputRefs.input || inputRefs.textarea) as HTMLElement\n }\n\n const handleClose = () => {\n handleAction('close')\n }\n\n // when close on press escape is disabled, pressing esc should not callout\n // any other message box and close any other dialog-ish elements\n // e.g. Dialog has a close on press esc feature, and when it closes, it calls\n // props.beforeClose method to make a intermediate state by callout a message box\n // for some verification or alerting. then if we allow global event liek this\n // to dispatch, it could callout another message box.\n if (props.closeOnPressEscape) {\n useModal(\n {\n handleClose,\n },\n visible\n )\n } else {\n usePreventGlobal(\n visible,\n 'keydown',\n (e: KeyboardEvent) => e.code === EVENT_CODE.esc\n )\n }\n\n // locks the screen to prevent scroll\n if (props.lockScroll) {\n useLockscreen(visible)\n }\n\n // restore to prev active element.\n useRestoreActive(visible)\n\n return {\n ...toRefs(state),\n visible,\n hasMessage,\n typeClass,\n iconComponent,\n confirmButtonClasses,\n inputRef,\n confirmRef,\n doClose, // for outside usage\n handleClose, // for out side usage\n handleWrapperClick,\n handleInputEnter,\n handleAction,\n t,\n }\n },\n})\n</script>\n"],"names":["defineComponent","TrapFocus","ElButton","ElInput","ElOverlay","ElIcon","TypeComponents","isValidComponentSize","useLocale","ref","reactive","PopupManager","computed","TypeComponentsMap","nextTick","EVENT_CODE","toRefs"],"mappings":"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"}
@@ -136,6 +136,8 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
136
136
  }, 8, ["loading", "class", "round", "size"])) : vue.createCommentVNode("v-if", true),
137
137
  vue.withDirectives(vue.createVNode(_component_el_button, {
138
138
  ref: "confirmRef",
139
+ type: "primary",
140
+ plain: "",
139
141
  loading: _ctx.confirmButtonLoading,
140
142
  class: vue.normalizeClass([_ctx.confirmButtonClasses]),
141
143
  round: _ctx.roundButton,
@@ -1 +1 @@
1
- {"version":3,"file":"index.vue_vue_type_template_id_7035e868_lang.js","sources":["../../../../../../packages/components/message-box/src/index.vue?vue&type=template&id=7035e868&lang.js"],"sourcesContent":["<template>\n <transition name=\"fade-in-linear\" @after-leave=\"$emit('vanish')\">\n <el-overlay\n v-show=\"visible\"\n :z-index=\"zIndex\"\n :overlay-class=\"['is-message-box', modalClass]\"\n :mask=\"modal\"\n @click.self=\"handleWrapperClick\"\n >\n <div\n ref=\"root\"\n v-trap-focus\n :aria-label=\"title || 'dialog'\"\n aria-modal=\"true\"\n :class=\"[\n 'el-message-box',\n customClass,\n { 'el-message-box--center': center },\n ]\"\n :style=\"customStyle\"\n >\n <div\n v-if=\"title !== null && title !== undefined\"\n class=\"el-message-box__header\"\n >\n <div class=\"el-message-box__title\">\n <el-icon\n v-if=\"iconComponent && center\"\n class=\"el-message-box__status\"\n :class=\"typeClass\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <span>{{ title }}</span>\n </div>\n <button\n v-if=\"showClose\"\n type=\"button\"\n class=\"el-message-box__headerbtn\"\n aria-label=\"Close\"\n @click=\"\n handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n \"\n @keydown.prevent.enter=\"\n handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n \"\n >\n <el-icon class=\"el-message-box__close\"><close /></el-icon>\n </button>\n </div>\n <div class=\"el-message-box__content\">\n <div class=\"el-message-box__container\">\n <el-icon\n v-if=\"iconComponent && !center && hasMessage\"\n class=\"el-message-box__status\"\n :class=\"typeClass\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <div v-if=\"hasMessage\" class=\"el-message-box__message\">\n <slot>\n <p v-if=\"!dangerouslyUseHTMLString\">{{ message }}</p>\n <p v-else v-html=\"message\"></p>\n </slot>\n </div>\n </div>\n <div v-show=\"showInput\" class=\"el-message-box__input\">\n <el-input\n ref=\"inputRef\"\n v-model=\"inputValue\"\n :type=\"inputType\"\n :placeholder=\"inputPlaceholder\"\n :class=\"{ invalid: validateError }\"\n @keydown.prevent.enter=\"handleInputEnter\"\n />\n <div\n class=\"el-message-box__errormsg\"\n :style=\"{\n visibility: !!editorErrorMessage ? 'visible' : 'hidden',\n }\"\n >\n {{ editorErrorMessage }}\n </div>\n </div>\n </div>\n <div class=\"el-message-box__btns\">\n <el-button\n v-if=\"showCancelButton\"\n :loading=\"cancelButtonLoading\"\n :class=\"[cancelButtonClass]\"\n :round=\"roundButton\"\n :size=\"buttonSize || 'small'\"\n @click=\"handleAction('cancel')\"\n @keydown.prevent.enter=\"handleAction('cancel')\"\n >\n {{ cancelButtonText || t('el.messagebox.cancel') }}\n </el-button>\n <el-button\n v-show=\"showConfirmButton\"\n ref=\"confirmRef\"\n :loading=\"confirmButtonLoading\"\n :class=\"[confirmButtonClasses]\"\n :round=\"roundButton\"\n :disabled=\"confirmButtonDisabled\"\n :size=\"buttonSize || 'small'\"\n @click=\"handleAction('confirm')\"\n @keydown.prevent.enter=\"handleAction('confirm')\"\n >\n {{ confirmButtonText || t('el.messagebox.confirm') }}\n </el-button>\n </div>\n </div>\n </el-overlay>\n </transition>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n nextTick,\n onMounted,\n onBeforeUnmount,\n computed,\n watch,\n reactive,\n ref,\n toRefs,\n} from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport { TrapFocus } from '@element-plus/directives'\nimport {\n useModal,\n useLockScreen,\n useLocaleInject,\n useRestoreActive,\n usePreventGlobal,\n} from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport { ElOverlay } from '@element-plus/components/overlay'\nimport PopupManager from '@element-plus/utils/popup-manager'\nimport { on, off } from '@element-plus/utils/dom'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isValidComponentSize } from '@element-plus/utils/validators'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { TypeComponents, TypeComponentsMap } from '@element-plus/utils/icon'\n\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { ComponentSize } from '@element-plus/utils/types'\nimport type {\n Action,\n MessageBoxState,\n MessageBoxType,\n} from './message-box.type'\n\nexport default defineComponent({\n name: 'ElMessageBox',\n directives: {\n TrapFocus,\n },\n components: {\n ElButton,\n ElInput,\n ElOverlay,\n ElIcon,\n ...TypeComponents,\n },\n inheritAttrs: false,\n props: {\n buttonSize: {\n type: String as PropType<ComponentSize>,\n validator: isValidComponentSize,\n },\n modal: {\n type: Boolean,\n default: true,\n },\n lockScroll: {\n type: Boolean,\n default: true,\n },\n showClose: {\n type: Boolean,\n default: true,\n },\n closeOnClickModal: {\n type: Boolean,\n default: true,\n },\n closeOnPressEscape: {\n type: Boolean,\n default: true,\n },\n closeOnHashChange: {\n type: Boolean,\n default: true,\n },\n center: Boolean,\n roundButton: {\n default: false,\n type: Boolean,\n },\n container: {\n type: String, // default append to body\n default: 'body',\n },\n boxType: {\n type: String as PropType<MessageBoxType>,\n default: '',\n },\n },\n emits: ['vanish', 'action'],\n setup(props, { emit }) {\n // const popup = usePopup(props, doClose)\n const { t } = useLocaleInject()\n const visible = ref(false)\n // s represents state\n const state = reactive<MessageBoxState>({\n beforeClose: null,\n callback: null,\n cancelButtonText: '',\n cancelButtonClass: '',\n confirmButtonText: '',\n confirmButtonClass: '',\n customClass: '',\n customStyle: {},\n dangerouslyUseHTMLString: false,\n distinguishCancelAndClose: false,\n icon: '',\n inputPattern: null,\n inputPlaceholder: '',\n inputType: 'text',\n inputValue: null,\n inputValidator: null,\n inputErrorMessage: '',\n message: null,\n modalFade: true,\n modalClass: '',\n showCancelButton: false,\n showConfirmButton: true,\n type: '',\n title: undefined,\n showInput: false,\n action: '' as Action,\n confirmButtonLoading: false,\n cancelButtonLoading: false,\n confirmButtonDisabled: false,\n editorErrorMessage: '',\n // refer to: https://github.com/ElemeFE/element/commit/2999279ae34ef10c373ca795c87b020ed6753eed\n // seemed ok for now without this state.\n // isOnComposition: false, // temporary remove\n validateError: false,\n zIndex: PopupManager.nextZIndex(),\n })\n\n const typeClass = computed(() => {\n const type = state.type\n return type && TypeComponentsMap[type]\n ? `el-message-box-icon--${type}`\n : ''\n })\n\n const iconComponent = computed(\n () => state.icon || TypeComponentsMap[state.type] || ''\n )\n const hasMessage = computed(() => !!state.message)\n const inputRef = ref<ComponentPublicInstance>(null)\n const confirmRef = ref<ComponentPublicInstance>(null)\n\n const confirmButtonClasses = computed(\n () => `el-button--primary ${state.confirmButtonClass}`\n )\n\n watch(\n () => state.inputValue,\n async (val) => {\n await nextTick()\n if (props.boxType === 'prompt' && val !== null) {\n validate()\n }\n },\n { immediate: true }\n )\n\n watch(\n () => visible.value,\n (val) => {\n if (val) {\n if (props.boxType === 'alert' || props.boxType === 'confirm') {\n nextTick().then(() => {\n confirmRef.value?.$el?.focus?.()\n })\n }\n state.zIndex = PopupManager.nextZIndex()\n }\n if (props.boxType !== 'prompt') return\n if (val) {\n nextTick().then(() => {\n if (inputRef.value && inputRef.value.$el) {\n getInputElement().focus()\n }\n })\n } else {\n state.editorErrorMessage = ''\n state.validateError = false\n }\n }\n )\n\n onMounted(async () => {\n await nextTick()\n if (props.closeOnHashChange) {\n on(window, 'hashchange', doClose)\n }\n })\n\n onBeforeUnmount(() => {\n if (props.closeOnHashChange) {\n off(window, 'hashchange', doClose)\n }\n })\n\n function doClose() {\n if (!visible.value) return\n visible.value = false\n nextTick(() => {\n if (state.action) emit('action', state.action)\n })\n }\n\n const handleWrapperClick = () => {\n if (props.closeOnClickModal) {\n handleAction(state.distinguishCancelAndClose ? 'close' : 'cancel')\n }\n }\n\n const handleInputEnter = () => {\n if (state.inputType !== 'textarea') {\n return handleAction('confirm')\n }\n }\n\n const handleAction = (action: Action) => {\n if (props.boxType === 'prompt' && action === 'confirm' && !validate()) {\n return\n }\n\n state.action = action\n\n if (state.beforeClose) {\n state.beforeClose?.(action, state, doClose)\n } else {\n doClose()\n }\n }\n\n const validate = () => {\n if (props.boxType === 'prompt') {\n const inputPattern = state.inputPattern\n if (inputPattern && !inputPattern.test(state.inputValue || '')) {\n state.editorErrorMessage =\n state.inputErrorMessage || t('el.messagebox.error')\n state.validateError = true\n return false\n }\n const inputValidator = state.inputValidator\n if (typeof inputValidator === 'function') {\n const validateResult = inputValidator(state.inputValue)\n if (validateResult === false) {\n state.editorErrorMessage =\n state.inputErrorMessage || t('el.messagebox.error')\n state.validateError = true\n return false\n }\n if (typeof validateResult === 'string') {\n state.editorErrorMessage = validateResult\n state.validateError = true\n return false\n }\n }\n }\n state.editorErrorMessage = ''\n state.validateError = false\n return true\n }\n\n const getInputElement = () => {\n const inputRefs = inputRef.value.$refs\n return (inputRefs.input || inputRefs.textarea) as HTMLElement\n }\n\n const handleClose = () => {\n handleAction('close')\n }\n\n // when close on press escape is disabled, pressing esc should not callout\n // any other message box and close any other dialog-ish elements\n // e.g. Dialog has a close on press esc feature, and when it closes, it calls\n // props.beforeClose method to make a intermediate state by callout a message box\n // for some verification or alerting. then if we allow global event liek this\n // to dispatch, it could callout another message box.\n if (props.closeOnPressEscape) {\n useModal(\n {\n handleClose,\n },\n visible\n )\n } else {\n usePreventGlobal(\n visible,\n 'keydown',\n (e: KeyboardEvent) => e.code === EVENT_CODE.esc\n )\n }\n\n // locks the screen to prevent scroll\n if (props.lockScroll) {\n useLockScreen(visible)\n }\n\n // restore to prev active element.\n useRestoreActive(visible)\n\n return {\n ...toRefs(state),\n visible,\n hasMessage,\n typeClass,\n iconComponent,\n confirmButtonClasses,\n inputRef,\n confirmRef,\n doClose, // for outside usage\n handleClose, // for out side usage\n handleWrapperClick,\n handleInputEnter,\n handleAction,\n t,\n }\n },\n})\n</script>\n"],"names":["_createBlock","_createVNode","_createElementVNode","_createElementBlock","_renderSlot"],"mappings":";;;;;;;;;EAuBU,OAAM;AAAA;qBAED,OAAM;qBAyBR,OAAM;qBACJ,OAAM;;;EAQc,OAAM;AAAA;;;qBAOP,OAAM;sBAmB3B,OAAM;;;;;;;;0BApFjBA;IAAY,MAAK;AAAA,IAAkB,oDAAa;;yBAC9C;yBAAAC;QAEG,WAAS;QACT,oCAAkC;QAClC,MAAM;QACN,2BAAY;;6BAEb;6BAAAC;YACE,KAAI;AAAA,YAEH,cAAY;YACb,cAAW;AAAA,YACV;;;;;YAKA,0BAAO;;YAGA,uBAAkB,eAAU,2BADpCC,8BAAA;cAIED,8BAAA;gBAEU,sBAAiB,gCADzBF;;kBAEE,2BAAM,0BACE;;uCAER;sCAAAA,4CAAgB;;;;gBAElBE,yDAAS;;cAGH,mCADRC;;gBAEE,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,cAAW;AAAA,gBACV;gBAGA;;gBAIDF,sCAAS,OAAM;uCAAwB;oBAAAA,gBAAS;AAAA;AAAA;;;;YAGpDC,8BAAA;cACEA,8BAAA;gBAEU,uBAAkB,eAAU,oCADpCF;;kBAEE,2BAAM,0BACE;;uCAER;sCAAAA,4CAAgB;;;;gBAEP,oCAAXG,8BAAA;kBACEC,2CAAA;qBACY,kDAAVD,4DAAuC,uCACvCA;;sBAAU,WAAQ;;;;;iCAIxBD,8BAAA;gBACED;kBACE,KAAI;AAAA,8BACK;+EAAA;kBACR,MAAM;kBACN,aAAa;kBACb,qCAAkB;kBAClB,0CAAuB;;gBAE1BC;kBACE,OAAM;AAAA,kBACL;;;uCAIE;;4BAfM;;;YAmBfA,8BAAA;cAEU,0CADRF;;gBAEG,SAAS;gBACT,2BAAQ;gBACR,OAAO;gBACP,MAAM;gBACN,+CAAO;gBACP,gFAAuB;;qCAExB;0DAAG,yBAAoB;;;;iCAEzBC;gBAEE,KAAI;AAAA,gBACH,SAAS;gBACT,2BAAQ;gBACR,OAAO;gBACP,UAAU;gBACV,MAAM;gBACN,+CAAO;gBACP,gFAAuB;;qCAExB;0DAAG,0BAAqB;;;;4BAVhB;;;;;;;;;oBA/FN;;;;;;;;;"}
1
+ {"version":3,"file":"index.vue_vue_type_template_id_7035e868_lang.js","sources":["../../../../../../packages/components/message-box/src/index.vue?vue&type=template&id=7035e868&lang.js"],"sourcesContent":["<template>\n <transition name=\"fade-in-linear\" @after-leave=\"$emit('vanish')\">\n <el-overlay\n v-show=\"visible\"\n :z-index=\"zIndex\"\n :overlay-class=\"['is-message-box', modalClass]\"\n :mask=\"modal\"\n @click.self=\"handleWrapperClick\"\n >\n <div\n ref=\"root\"\n v-trap-focus\n :aria-label=\"title || 'dialog'\"\n aria-modal=\"true\"\n :class=\"[\n 'el-message-box',\n customClass,\n { 'el-message-box--center': center },\n ]\"\n :style=\"customStyle\"\n >\n <div\n v-if=\"title !== null && title !== undefined\"\n class=\"el-message-box__header\"\n >\n <div class=\"el-message-box__title\">\n <el-icon\n v-if=\"iconComponent && center\"\n class=\"el-message-box__status\"\n :class=\"typeClass\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <span>{{ title }}</span>\n </div>\n <button\n v-if=\"showClose\"\n type=\"button\"\n class=\"el-message-box__headerbtn\"\n aria-label=\"Close\"\n @click=\"\n handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n \"\n @keydown.prevent.enter=\"\n handleAction(distinguishCancelAndClose ? 'close' : 'cancel')\n \"\n >\n <el-icon class=\"el-message-box__close\"><close /></el-icon>\n </button>\n </div>\n <div class=\"el-message-box__content\">\n <div class=\"el-message-box__container\">\n <el-icon\n v-if=\"iconComponent && !center && hasMessage\"\n class=\"el-message-box__status\"\n :class=\"typeClass\"\n >\n <component :is=\"iconComponent\" />\n </el-icon>\n <div v-if=\"hasMessage\" class=\"el-message-box__message\">\n <slot>\n <p v-if=\"!dangerouslyUseHTMLString\">{{ message }}</p>\n <p v-else v-html=\"message\"></p>\n </slot>\n </div>\n </div>\n <div v-show=\"showInput\" class=\"el-message-box__input\">\n <el-input\n ref=\"inputRef\"\n v-model=\"inputValue\"\n :type=\"inputType\"\n :placeholder=\"inputPlaceholder\"\n :class=\"{ invalid: validateError }\"\n @keydown.prevent.enter=\"handleInputEnter\"\n />\n <div\n class=\"el-message-box__errormsg\"\n :style=\"{\n visibility: !!editorErrorMessage ? 'visible' : 'hidden',\n }\"\n >\n {{ editorErrorMessage }}\n </div>\n </div>\n </div>\n <div class=\"el-message-box__btns\">\n <el-button\n v-if=\"showCancelButton\"\n :loading=\"cancelButtonLoading\"\n :class=\"[cancelButtonClass]\"\n :round=\"roundButton\"\n :size=\"buttonSize || 'small'\"\n @click=\"handleAction('cancel')\"\n @keydown.prevent.enter=\"handleAction('cancel')\"\n >\n {{ cancelButtonText || t('el.messagebox.cancel') }}\n </el-button>\n <el-button\n v-show=\"showConfirmButton\"\n ref=\"confirmRef\"\n type=\"primary\"\n plain\n :loading=\"confirmButtonLoading\"\n :class=\"[confirmButtonClasses]\"\n :round=\"roundButton\"\n :disabled=\"confirmButtonDisabled\"\n :size=\"buttonSize || 'small'\"\n @click=\"handleAction('confirm')\"\n @keydown.prevent.enter=\"handleAction('confirm')\"\n >\n {{ confirmButtonText || t('el.messagebox.confirm') }}\n </el-button>\n </div>\n </div>\n </el-overlay>\n </transition>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n nextTick,\n onMounted,\n onBeforeUnmount,\n computed,\n watch,\n reactive,\n ref,\n toRefs,\n} from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport { TrapFocus } from '@element-plus/directives'\nimport {\n useModal,\n useLockscreen,\n useLocale,\n useRestoreActive,\n usePreventGlobal,\n} from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport { ElOverlay } from '@element-plus/components/overlay'\nimport PopupManager from '@element-plus/utils/popup-manager'\nimport { on, off } from '@element-plus/utils/dom'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isValidComponentSize } from '@element-plus/utils/validators'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { TypeComponents, TypeComponentsMap } from '@element-plus/utils/icon'\n\nimport type { ComponentPublicInstance, PropType } from 'vue'\nimport type { ComponentSize } from '@element-plus/utils/types'\nimport type {\n Action,\n MessageBoxState,\n MessageBoxType,\n} from './message-box.type'\n\nexport default defineComponent({\n name: 'ElMessageBox',\n directives: {\n TrapFocus,\n },\n components: {\n ElButton,\n ElInput,\n ElOverlay,\n ElIcon,\n ...TypeComponents,\n },\n inheritAttrs: false,\n props: {\n buttonSize: {\n type: String as PropType<ComponentSize>,\n validator: isValidComponentSize,\n },\n modal: {\n type: Boolean,\n default: true,\n },\n lockScroll: {\n type: Boolean,\n default: true,\n },\n showClose: {\n type: Boolean,\n default: true,\n },\n closeOnClickModal: {\n type: Boolean,\n default: true,\n },\n closeOnPressEscape: {\n type: Boolean,\n default: true,\n },\n closeOnHashChange: {\n type: Boolean,\n default: true,\n },\n center: Boolean,\n roundButton: {\n default: false,\n type: Boolean,\n },\n container: {\n type: String, // default append to body\n default: 'body',\n },\n boxType: {\n type: String as PropType<MessageBoxType>,\n default: '',\n },\n },\n emits: ['vanish', 'action'],\n setup(props, { emit }) {\n // const popup = usePopup(props, doClose)\n const { t } = useLocale()\n const visible = ref(false)\n // s represents state\n const state = reactive<MessageBoxState>({\n beforeClose: null,\n callback: null,\n cancelButtonText: '',\n cancelButtonClass: '',\n confirmButtonText: '',\n confirmButtonClass: '',\n customClass: '',\n customStyle: {},\n dangerouslyUseHTMLString: false,\n distinguishCancelAndClose: false,\n icon: '',\n inputPattern: null,\n inputPlaceholder: '',\n inputType: 'text',\n inputValue: null,\n inputValidator: null,\n inputErrorMessage: '',\n message: null,\n modalFade: true,\n modalClass: '',\n showCancelButton: false,\n showConfirmButton: true,\n type: '',\n title: undefined,\n showInput: false,\n action: '' as Action,\n confirmButtonLoading: false,\n cancelButtonLoading: false,\n confirmButtonDisabled: false,\n editorErrorMessage: '',\n // refer to: https://github.com/ElemeFE/element/commit/2999279ae34ef10c373ca795c87b020ed6753eed\n // seemed ok for now without this state.\n // isOnComposition: false, // temporary remove\n validateError: false,\n zIndex: PopupManager.nextZIndex(),\n })\n\n const typeClass = computed(() => {\n const type = state.type\n return type && TypeComponentsMap[type]\n ? `el-message-box-icon--${type}`\n : ''\n })\n\n const iconComponent = computed(\n () => state.icon || TypeComponentsMap[state.type] || ''\n )\n const hasMessage = computed(() => !!state.message)\n const inputRef = ref<ComponentPublicInstance>(null)\n const confirmRef = ref<ComponentPublicInstance>(null)\n\n const confirmButtonClasses = computed(() => state.confirmButtonClass)\n\n watch(\n () => state.inputValue,\n async (val) => {\n await nextTick()\n if (props.boxType === 'prompt' && val !== null) {\n validate()\n }\n },\n { immediate: true }\n )\n\n watch(\n () => visible.value,\n (val) => {\n if (val) {\n if (props.boxType === 'alert' || props.boxType === 'confirm') {\n nextTick().then(() => {\n confirmRef.value?.$el?.focus?.()\n })\n }\n state.zIndex = PopupManager.nextZIndex()\n }\n if (props.boxType !== 'prompt') return\n if (val) {\n nextTick().then(() => {\n if (inputRef.value && inputRef.value.$el) {\n getInputElement().focus()\n }\n })\n } else {\n state.editorErrorMessage = ''\n state.validateError = false\n }\n }\n )\n\n onMounted(async () => {\n await nextTick()\n if (props.closeOnHashChange) {\n on(window, 'hashchange', doClose)\n }\n })\n\n onBeforeUnmount(() => {\n if (props.closeOnHashChange) {\n off(window, 'hashchange', doClose)\n }\n })\n\n function doClose() {\n if (!visible.value) return\n visible.value = false\n nextTick(() => {\n if (state.action) emit('action', state.action)\n })\n }\n\n const handleWrapperClick = () => {\n if (props.closeOnClickModal) {\n handleAction(state.distinguishCancelAndClose ? 'close' : 'cancel')\n }\n }\n\n const handleInputEnter = () => {\n if (state.inputType !== 'textarea') {\n return handleAction('confirm')\n }\n }\n\n const handleAction = (action: Action) => {\n if (props.boxType === 'prompt' && action === 'confirm' && !validate()) {\n return\n }\n\n state.action = action\n\n if (state.beforeClose) {\n state.beforeClose?.(action, state, doClose)\n } else {\n doClose()\n }\n }\n\n const validate = () => {\n if (props.boxType === 'prompt') {\n const inputPattern = state.inputPattern\n if (inputPattern && !inputPattern.test(state.inputValue || '')) {\n state.editorErrorMessage =\n state.inputErrorMessage || t('el.messagebox.error')\n state.validateError = true\n return false\n }\n const inputValidator = state.inputValidator\n if (typeof inputValidator === 'function') {\n const validateResult = inputValidator(state.inputValue)\n if (validateResult === false) {\n state.editorErrorMessage =\n state.inputErrorMessage || t('el.messagebox.error')\n state.validateError = true\n return false\n }\n if (typeof validateResult === 'string') {\n state.editorErrorMessage = validateResult\n state.validateError = true\n return false\n }\n }\n }\n state.editorErrorMessage = ''\n state.validateError = false\n return true\n }\n\n const getInputElement = () => {\n const inputRefs = inputRef.value.$refs\n return (inputRefs.input || inputRefs.textarea) as HTMLElement\n }\n\n const handleClose = () => {\n handleAction('close')\n }\n\n // when close on press escape is disabled, pressing esc should not callout\n // any other message box and close any other dialog-ish elements\n // e.g. Dialog has a close on press esc feature, and when it closes, it calls\n // props.beforeClose method to make a intermediate state by callout a message box\n // for some verification or alerting. then if we allow global event liek this\n // to dispatch, it could callout another message box.\n if (props.closeOnPressEscape) {\n useModal(\n {\n handleClose,\n },\n visible\n )\n } else {\n usePreventGlobal(\n visible,\n 'keydown',\n (e: KeyboardEvent) => e.code === EVENT_CODE.esc\n )\n }\n\n // locks the screen to prevent scroll\n if (props.lockScroll) {\n useLockscreen(visible)\n }\n\n // restore to prev active element.\n useRestoreActive(visible)\n\n return {\n ...toRefs(state),\n visible,\n hasMessage,\n typeClass,\n iconComponent,\n confirmButtonClasses,\n inputRef,\n confirmRef,\n doClose, // for outside usage\n handleClose, // for out side usage\n handleWrapperClick,\n handleInputEnter,\n handleAction,\n t,\n }\n },\n})\n</script>\n"],"names":["_createBlock","_createVNode","_createElementVNode","_createElementBlock","_renderSlot"],"mappings":";;;;;;;;;EAuBU,OAAM;AAAA;qBAED,OAAM;qBAyBR,OAAM;qBACJ,OAAM;;;EAQc,OAAM;AAAA;;;qBAOP,OAAM;sBAmB3B,OAAM;;;;;;;;0BApFjBA;IAAY,MAAK;AAAA,IAAkB,oDAAa;;yBAC9C;yBAAAC;QAEG,WAAS;QACT,oCAAkC;QAClC,MAAM;QACN,2BAAY;;6BAEb;6BAAAC;YACE,KAAI;AAAA,YAEH,cAAY;YACb,cAAW;AAAA,YACV;;;;;YAKA,0BAAO;;YAGA,uBAAkB,eAAU,2BADpCC,8BAAA;cAIED,8BAAA;gBAEU,sBAAiB,gCADzBF;;kBAEE,2BAAM,0BACE;;uCAER;sCAAAA,4CAAgB;;;;gBAElBE,yDAAS;;cAGH,mCADRC;;gBAEE,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,cAAW;AAAA,gBACV;gBAGA;;gBAIDF,sCAAS,OAAM;uCAAwB;oBAAAA,gBAAS;AAAA;AAAA;;;;YAGpDC,8BAAA;cACEA,8BAAA;gBAEU,uBAAkB,eAAU,oCADpCF;;kBAEE,2BAAM,0BACE;;uCAER;sCAAAA,4CAAgB;;;;gBAEP,oCAAXG,8BAAA;kBACEC,2CAAA;qBACY,kDAAVD,4DAAuC,uCACvCA;;sBAAU,WAAQ;;;;;iCAIxBD,8BAAA;gBACED;kBACE,KAAI;AAAA,8BACK;+EAAA;kBACR,MAAM;kBACN,aAAa;kBACb,qCAAkB;kBAClB,0CAAuB;;gBAE1BC;kBACE,OAAM;AAAA,kBACL;;;uCAIE;;4BAfM;;;YAmBfA,8BAAA;cAEU,0CADRF;;gBAEG,SAAS;gBACT,2BAAQ;gBACR,OAAO;gBACP,MAAM;gBACN,+CAAO;gBACP,gFAAuB;;qCAExB;0DAAG,yBAAoB;;;;iCAEzBC;gBAEE,KAAI;AAAA,gBACJ,MAAK;AAAA,gBACL,OAAA;AAAA,gBACC,SAAS;gBACT,2BAAQ;gBACR,OAAO;gBACP,UAAU;gBACV,MAAM;gBACN,+CAAO;gBACP,gFAAuB;;qCAExB;0DAAG,0BAAqB;;;;4BAZhB;;;;;;;;;oBA/FN;;;;;;;;;"}