element-plus 1.2.0-beta.1 → 1.2.0-beta.2

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 (524) hide show
  1. package/README.md +5 -0
  2. package/attributes.json +1 -1
  3. package/dist/index.css +1 -1
  4. package/dist/index.full.js +930 -690
  5. package/dist/index.full.min.js +11 -11
  6. package/dist/index.full.min.js.map +1 -1
  7. package/dist/index.full.min.mjs +11 -11
  8. package/dist/index.full.min.mjs.map +1 -1
  9. package/dist/index.full.mjs +937 -699
  10. package/es/components/affix/src/affix.vue_vue&type=script&lang.mjs +1 -0
  11. package/es/components/affix/src/affix.vue_vue&type=script&lang.mjs.map +1 -1
  12. package/es/components/affix/src/affix.vue_vue&type=template&id=0745df9e&lang.mjs.map +1 -1
  13. package/es/components/alert/src/alert.vue_vue&type=script&lang.mjs.map +1 -1
  14. package/es/components/alert/src/alert.vue_vue&type=template&id=1755b449&lang.mjs +1 -1
  15. package/es/components/alert/src/alert.vue_vue&type=template&id=1755b449&lang.mjs.map +1 -1
  16. package/es/components/breadcrumb/src/breadcrumb-item.vue_vue&type=script&lang.mjs +4 -0
  17. package/es/components/breadcrumb/src/breadcrumb-item.vue_vue&type=script&lang.mjs.map +1 -1
  18. package/es/components/breadcrumb/src/breadcrumb-item.vue_vue&type=template&id=2f37792a&lang.mjs.map +1 -1
  19. package/es/components/button/index.d.ts +6 -1
  20. package/es/components/button/src/button.d.ts +4 -0
  21. package/es/components/button/src/button.mjs +4 -1
  22. package/es/components/button/src/button.mjs.map +1 -1
  23. package/es/components/button/src/button.vue.d.ts +6 -1
  24. package/es/components/button/src/button.vue_vue&type=script&lang.mjs +7 -1
  25. package/es/components/button/src/button.vue_vue&type=script&lang.mjs.map +1 -1
  26. package/es/components/button/src/button.vue_vue&type=template&id=802c5c76&lang.mjs.map +1 -1
  27. package/es/components/cascader/index.d.ts +8430 -12
  28. package/es/components/cascader/src/index.vue.d.ts +4216 -6
  29. package/es/components/cascader/src/index.vue_vue&type=script&lang.mjs +25 -16
  30. package/es/components/cascader/src/index.vue_vue&type=script&lang.mjs.map +1 -1
  31. package/es/components/cascader/src/index.vue_vue&type=template&id=0429c2db&lang.mjs.map +1 -1
  32. package/es/components/cascader-panel/index.d.ts +238 -10
  33. package/es/components/cascader-panel/src/index.vue.d.ts +122 -8
  34. package/es/components/cascader-panel/src/index.vue_vue&type=script&lang.mjs +31 -12
  35. package/es/components/cascader-panel/src/index.vue_vue&type=script&lang.mjs.map +1 -1
  36. package/es/components/cascader-panel/src/index.vue_vue&type=template&id=97c48f5c&lang.mjs.map +1 -1
  37. package/es/components/cascader-panel/src/menu.vue.d.ts +2 -2
  38. package/es/components/cascader-panel/src/menu.vue_vue&type=script&lang.mjs.map +1 -1
  39. package/es/components/cascader-panel/src/menu.vue_vue&type=template&id=9c79e4e2&lang.mjs +14 -11
  40. package/es/components/cascader-panel/src/menu.vue_vue&type=template&id=9c79e4e2&lang.mjs.map +1 -1
  41. package/es/components/cascader-panel/src/node.vue.d.ts +1 -1
  42. package/es/components/cascader-panel/src/node.vue_vue&type=script&lang.mjs.map +1 -1
  43. package/es/components/cascader-panel/src/node.vue_vue&type=template&id=18b09cb2&lang.mjs +1 -1
  44. package/es/components/cascader-panel/src/node.vue_vue&type=template&id=18b09cb2&lang.mjs.map +1 -1
  45. package/es/components/color-picker/src/color.mjs +20 -13
  46. package/es/components/color-picker/src/color.mjs.map +1 -1
  47. package/es/components/config-provider/index.d.ts +12 -5
  48. package/es/components/config-provider/index.mjs +1 -1
  49. package/es/components/config-provider/index.mjs.map +1 -1
  50. package/es/components/config-provider/src/config-provider.d.ts +7 -0
  51. package/es/components/config-provider/src/config-provider.mjs +18 -0
  52. package/es/components/config-provider/src/config-provider.mjs.map +1 -0
  53. package/es/components/config-provider/src/index.d.ts +18 -0
  54. package/es/components/config-provider/src/index.mjs +22 -0
  55. package/es/components/config-provider/src/index.mjs.map +1 -0
  56. package/es/components/date-picker/src/date-picker-com/basic-cell-render.mjs +1 -1
  57. package/es/components/date-picker/src/date-picker-com/basic-cell-render.mjs.map +1 -1
  58. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue_vue&type=script&lang.mjs +1 -1
  59. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue_vue&type=script&lang.mjs.map +1 -1
  60. package/es/components/date-picker/src/date-picker-com/basic-date-table.vue_vue&type=template&id=0572814e&lang.mjs.map +1 -1
  61. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue&type=script&lang.mjs +23 -16
  62. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue&type=script&lang.mjs.map +1 -1
  63. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue&type=template&id=78e07aa7&lang.mjs.map +1 -1
  64. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue&type=script&lang.mjs +2 -0
  65. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue&type=script&lang.mjs.map +1 -1
  66. package/es/components/date-picker/src/date-picker-com/panel-date-range.vue_vue&type=template&id=62b45ab2&lang.mjs.map +1 -1
  67. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue_vue&type=script&lang.mjs +2 -1
  68. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue_vue&type=script&lang.mjs.map +1 -1
  69. package/es/components/date-picker/src/date-picker-com/panel-month-range.vue_vue&type=template&id=2e377892&lang.mjs.map +1 -1
  70. package/es/components/dropdown/src/dropdown-item.vue_vue&type=script&lang.mjs +2 -0
  71. package/es/components/dropdown/src/dropdown-item.vue_vue&type=script&lang.mjs.map +1 -1
  72. package/es/components/dropdown/src/dropdown-item.vue_vue&type=template&id=396ed16b&lang.mjs.map +1 -1
  73. package/es/components/dropdown/src/dropdown.vue_vue&type=script&lang.mjs.map +1 -1
  74. package/es/components/dropdown/src/dropdown.vue_vue&type=template&id=3ed790a5&lang.mjs +68 -68
  75. package/es/components/dropdown/src/dropdown.vue_vue&type=template&id=3ed790a5&lang.mjs.map +1 -1
  76. package/es/components/form/index.d.ts +2 -2
  77. package/es/components/form/src/form-item.vue_vue&type=script&lang.mjs +4 -3
  78. package/es/components/form/src/form-item.vue_vue&type=script&lang.mjs.map +1 -1
  79. package/es/components/form/src/form-item.vue_vue&type=template&id=24eda48b&lang.mjs.map +1 -1
  80. package/es/components/form/src/form.type.d.ts +1 -3
  81. package/es/components/form/src/form.vue.d.ts +2 -3
  82. package/es/components/image/index.d.ts +4 -0
  83. package/es/components/image/src/image.d.ts +1 -0
  84. package/es/components/image/src/image.mjs +4 -0
  85. package/es/components/image/src/image.mjs.map +1 -1
  86. package/es/components/image/src/image.vue.d.ts +4 -0
  87. package/es/components/image/src/image.vue_vue&type=script&lang.mjs +2 -2
  88. package/es/components/image/src/image.vue_vue&type=script&lang.mjs.map +1 -1
  89. package/es/components/image/src/image.vue_vue&type=template&id=34467287&lang.mjs.map +1 -1
  90. package/es/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
  91. package/es/components/image-viewer/src/image-viewer.vue_vue&type=script&lang.mjs +2 -2
  92. package/es/components/image-viewer/src/image-viewer.vue_vue&type=script&lang.mjs.map +1 -1
  93. package/es/components/image-viewer/src/image-viewer.vue_vue&type=template&id=4b22ad85&lang.mjs +2 -2
  94. package/es/components/image-viewer/src/image-viewer.vue_vue&type=template&id=4b22ad85&lang.mjs.map +1 -1
  95. package/es/components/input/src/input.vue_vue&type=script&lang.mjs +2 -2
  96. package/es/components/input/src/input.vue_vue&type=script&lang.mjs.map +1 -1
  97. package/es/components/input/src/input.vue_vue&type=template&id=3290dcb6&lang.mjs +18 -16
  98. package/es/components/input/src/input.vue_vue&type=template&id=3290dcb6&lang.mjs.map +1 -1
  99. package/es/components/loading/src/createLoadingComponent.mjs +3 -7
  100. package/es/components/loading/src/createLoadingComponent.mjs.map +1 -1
  101. package/es/components/menu/src/menu.mjs +1 -1
  102. package/es/components/menu/src/menu.mjs.map +1 -1
  103. package/es/components/menu/src/sub-menu.mjs +1 -1
  104. package/es/components/menu/src/sub-menu.mjs.map +1 -1
  105. package/es/components/message/src/message-method.mjs +13 -0
  106. package/es/components/message/src/message-method.mjs.map +1 -1
  107. package/es/components/message/src/message.d.ts +2 -0
  108. package/es/components/message/src/message.mjs +8 -0
  109. package/es/components/message/src/message.mjs.map +1 -1
  110. package/es/components/message/src/message.vue.d.ts +8 -0
  111. package/es/components/message/src/message.vue_vue&type=script&lang.mjs +7 -1
  112. package/es/components/message/src/message.vue_vue&type=script&lang.mjs.map +1 -1
  113. package/es/components/message/src/message.vue_vue&type=template&id=031967c2&lang.mjs +56 -46
  114. package/es/components/message/src/message.vue_vue&type=template&id=031967c2&lang.mjs.map +1 -1
  115. package/es/components/page-header/src/page-header.vue_vue&type=script&lang.mjs.map +1 -1
  116. package/es/components/page-header/src/page-header.vue_vue&type=template&id=d12fb4b2&lang.mjs +3 -3
  117. package/es/components/page-header/src/page-header.vue_vue&type=template&id=d12fb4b2&lang.mjs.map +1 -1
  118. package/es/components/popconfirm/src/popconfirm.vue_vue&type=script&lang.mjs.map +1 -1
  119. package/es/components/popconfirm/src/popconfirm.vue_vue&type=template&id=16409d25&lang.mjs +1 -1
  120. package/es/components/popconfirm/src/popconfirm.vue_vue&type=template&id=16409d25&lang.mjs.map +1 -1
  121. package/es/components/result/src/index.vue_vue&type=script&lang.mjs.map +1 -1
  122. package/es/components/result/src/index.vue_vue&type=template&id=4e01dfba&lang.mjs +4 -3
  123. package/es/components/result/src/index.vue_vue&type=template&id=4e01dfba&lang.mjs.map +1 -1
  124. package/es/components/select/index.d.ts +5 -1
  125. package/es/components/select/src/select.vue.d.ts +5 -1
  126. package/es/components/select/src/select.vue_vue&type=script&lang.mjs +4 -1
  127. package/es/components/select/src/select.vue_vue&type=script&lang.mjs.map +1 -1
  128. package/es/components/select/src/select.vue_vue&type=template&id=33774f85&lang.mjs +6 -5
  129. package/es/components/select/src/select.vue_vue&type=template&id=33774f85&lang.mjs.map +1 -1
  130. package/es/components/select/src/useSelect.mjs +1 -1
  131. package/es/components/select/src/useSelect.mjs.map +1 -1
  132. package/es/components/select-v2/index.d.ts +14 -0
  133. package/es/components/select-v2/src/defaults.d.ts +4 -0
  134. package/es/components/select-v2/src/defaults.mjs +4 -0
  135. package/es/components/select-v2/src/defaults.mjs.map +1 -1
  136. package/es/components/select-v2/src/select-dropdown.vue_vue&type=script&lang.mjs +1 -0
  137. package/es/components/select-v2/src/select-dropdown.vue_vue&type=script&lang.mjs.map +1 -1
  138. package/es/components/select-v2/src/select.vue.d.ts +7 -0
  139. package/es/components/select-v2/src/select.vue_vue&type=script&lang.mjs.map +1 -1
  140. package/es/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.mjs +9 -7
  141. package/es/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.mjs.map +1 -1
  142. package/es/components/table/src/config.mjs +22 -2
  143. package/es/components/table/src/config.mjs.map +1 -1
  144. package/es/components/table/src/store/watcher.mjs +15 -7
  145. package/es/components/table/src/store/watcher.mjs.map +1 -1
  146. package/es/components/table/src/table/style-helper.mjs +2 -2
  147. package/es/components/table/src/table/style-helper.mjs.map +1 -1
  148. package/es/components/table/src/table-body/render-helper.mjs +2 -3
  149. package/es/components/table/src/table-body/render-helper.mjs.map +1 -1
  150. package/es/components/table/src/table-header/event-helper.mjs +3 -1
  151. package/es/components/table/src/table-header/event-helper.mjs.map +1 -1
  152. package/es/components/tabs/src/tab-nav.vue_vue&type=script&lang.mjs +3 -3
  153. package/es/components/tabs/src/tab-nav.vue_vue&type=script&lang.mjs.map +1 -1
  154. package/es/components/tabs/src/tabs.mjs +1 -1
  155. package/es/components/tabs/src/tabs.mjs.map +1 -1
  156. package/es/components/teleport/index.d.ts +23 -0
  157. package/es/components/teleport/index.mjs +9 -0
  158. package/es/components/teleport/index.mjs.map +1 -0
  159. package/es/components/teleport/src/teleport.d.ts +7 -0
  160. package/es/components/teleport/src/teleport.mjs +18 -0
  161. package/es/components/teleport/src/teleport.mjs.map +1 -0
  162. package/es/components/teleport/src/teleport.vue.d.ts +22 -0
  163. package/es/components/teleport/src/teleport.vue_vue&type=script&lang.mjs +28 -0
  164. package/es/components/teleport/src/teleport.vue_vue&type=script&lang.mjs.map +1 -0
  165. package/es/components/teleport/src/teleport.vue_vue&type=template&id=787c6a36&lang.mjs +19 -0
  166. package/es/components/teleport/src/teleport.vue_vue&type=template&id=787c6a36&lang.mjs.map +1 -0
  167. package/es/components/teleport/src/teleport2.mjs +7 -0
  168. package/es/components/teleport/src/teleport2.mjs.map +1 -0
  169. package/es/components/teleport/style/css.d.ts +0 -0
  170. package/es/components/teleport/style/css.mjs +2 -0
  171. package/es/components/teleport/style/css.mjs.map +1 -0
  172. package/es/components/teleport/style/index.d.ts +0 -0
  173. package/es/components/teleport/style/index.mjs +2 -0
  174. package/es/components/teleport/style/index.mjs.map +1 -0
  175. package/es/components/time-picker/src/common/picker.vue_vue&type=script&lang.mjs.map +1 -1
  176. package/es/components/time-picker/src/common/picker.vue_vue&type=template&id=1d54be91&lang.mjs +11 -8
  177. package/es/components/time-picker/src/common/picker.vue_vue&type=template&id=1d54be91&lang.mjs.map +1 -1
  178. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue&type=script&lang.mjs.map +1 -1
  179. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue&type=template&id=4fb3c576&lang.mjs +9 -1
  180. package/es/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue&type=template&id=4fb3c576&lang.mjs.map +1 -1
  181. package/es/components/time-select/src/time-select.vue_vue&type=script&lang.mjs.map +1 -1
  182. package/es/components/time-select/src/time-select.vue_vue&type=template&id=5beb6389&lang.mjs +6 -3
  183. package/es/components/time-select/src/time-select.vue_vue&type=template&id=5beb6389&lang.mjs.map +1 -1
  184. package/es/components/transfer/src/transfer-panel.vue_vue&type=script&lang.mjs +2 -0
  185. package/es/components/transfer/src/transfer-panel.vue_vue&type=script&lang.mjs.map +1 -1
  186. package/es/components/transfer/src/transfer-panel.vue_vue&type=template&id=1a7d1f9c&lang.mjs +3 -2
  187. package/es/components/transfer/src/transfer-panel.vue_vue&type=template&id=1a7d1f9c&lang.mjs.map +1 -1
  188. package/es/components/transfer/src/useMove.mjs +3 -0
  189. package/es/components/transfer/src/useMove.mjs.map +1 -1
  190. package/es/components/tree/index.d.ts +6 -0
  191. package/es/components/tree/src/tree-node.vue.d.ts +1 -0
  192. package/es/components/tree/src/tree-node.vue_vue&type=script&lang.mjs +20 -0
  193. package/es/components/tree/src/tree-node.vue_vue&type=script&lang.mjs.map +1 -1
  194. package/es/components/tree/src/tree-node.vue_vue&type=template&id=62959aba&lang.mjs +10 -7
  195. package/es/components/tree/src/tree-node.vue_vue&type=template&id=62959aba&lang.mjs.map +1 -1
  196. package/es/components/tree/src/tree.type.d.ts +3 -0
  197. package/es/components/tree/src/tree.vue.d.ts +3 -0
  198. package/es/components/tree/src/tree.vue_vue&type=script&lang.mjs.map +1 -1
  199. package/es/components/tree/src/tree.vue_vue&type=template&id=7539bec5&lang.mjs +2 -1
  200. package/es/components/tree/src/tree.vue_vue&type=template&id=7539bec5&lang.mjs.map +1 -1
  201. package/es/components/tree-v2/src/tree-node.vue_vue&type=script&lang.mjs +4 -2
  202. package/es/components/tree-v2/src/tree-node.vue_vue&type=script&lang.mjs.map +1 -1
  203. package/es/components/tree-v2/src/tree-node.vue_vue&type=template&id=71d8f826&lang.mjs +5 -4
  204. package/es/components/tree-v2/src/tree-node.vue_vue&type=template&id=71d8f826&lang.mjs.map +1 -1
  205. package/es/components/tree-v2/src/tree.vue_vue&type=script&lang.mjs.map +1 -1
  206. package/es/components/tree-v2/src/tree.vue_vue&type=template&id=5b45a1b2&lang.mjs +2 -1
  207. package/es/components/tree-v2/src/tree.vue_vue&type=template&id=5b45a1b2&lang.mjs.map +1 -1
  208. package/es/components/virtual-list/src/builders/build-grid.d.ts +7 -2
  209. package/es/components/virtual-list/src/builders/build-list.d.ts +9 -3
  210. package/es/components/virtual-list/src/builders/build-list.mjs +7 -4
  211. package/es/components/virtual-list/src/builders/build-list.mjs.map +1 -1
  212. package/es/components/virtual-list/src/components/dynamic-size-grid.d.ts +7 -2
  213. package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +9 -3
  214. package/es/components/virtual-list/src/components/fixed-size-grid.d.ts +7 -2
  215. package/es/components/virtual-list/src/components/fixed-size-list.d.ts +9 -3
  216. package/es/components/virtual-list/src/components/scrollbar.mjs +1 -2
  217. package/es/components/virtual-list/src/components/scrollbar.mjs.map +1 -1
  218. package/es/components/virtual-list/src/props.d.ts +6 -3
  219. package/es/components/virtual-list/src/props.mjs +5 -1
  220. package/es/components/virtual-list/src/props.mjs.map +1 -1
  221. package/es/hooks/index.d.ts +1 -0
  222. package/es/hooks/index.mjs +1 -0
  223. package/es/hooks/index.mjs.map +1 -1
  224. package/es/hooks/use-global-config/index.d.ts +1 -0
  225. package/es/hooks/use-global-config/index.mjs +15 -0
  226. package/es/hooks/use-global-config/index.mjs.map +1 -0
  227. package/es/hooks/use-locale/index.d.ts +2 -4
  228. package/es/hooks/use-locale/index.mjs +4 -3
  229. package/es/hooks/use-locale/index.mjs.map +1 -1
  230. package/es/hooks/use-popper/index.mjs +6 -5
  231. package/es/hooks/use-popper/index.mjs.map +1 -1
  232. package/es/index.mjs +2 -0
  233. package/es/index.mjs.map +1 -1
  234. package/es/tokens/config-provider.d.ts +4 -0
  235. package/es/tokens/config-provider.mjs +4 -0
  236. package/es/tokens/config-provider.mjs.map +1 -0
  237. package/es/tokens/index.d.ts +1 -0
  238. package/es/tokens/index.mjs +1 -0
  239. package/es/tokens/index.mjs.map +1 -1
  240. package/es/version.d.ts +1 -1
  241. package/es/version.mjs +1 -1
  242. package/es/version.mjs.map +1 -1
  243. package/lib/components/affix/src/affix.vue_vue&type=script&lang.js +1 -0
  244. package/lib/components/affix/src/affix.vue_vue&type=script&lang.js.map +1 -1
  245. package/lib/components/affix/src/affix.vue_vue&type=template&id=0745df9e&lang.js.map +1 -1
  246. package/lib/components/alert/src/alert.vue_vue&type=script&lang.js.map +1 -1
  247. package/lib/components/alert/src/alert.vue_vue&type=template&id=1755b449&lang.js +1 -1
  248. package/lib/components/alert/src/alert.vue_vue&type=template&id=1755b449&lang.js.map +1 -1
  249. package/lib/components/breadcrumb/src/breadcrumb-item.vue_vue&type=script&lang.js +4 -0
  250. package/lib/components/breadcrumb/src/breadcrumb-item.vue_vue&type=script&lang.js.map +1 -1
  251. package/lib/components/breadcrumb/src/breadcrumb-item.vue_vue&type=template&id=2f37792a&lang.js.map +1 -1
  252. package/lib/components/button/index.d.ts +6 -1
  253. package/lib/components/button/src/button.d.ts +4 -0
  254. package/lib/components/button/src/button.js +4 -1
  255. package/lib/components/button/src/button.js.map +1 -1
  256. package/lib/components/button/src/button.vue.d.ts +6 -1
  257. package/lib/components/button/src/button.vue_vue&type=script&lang.js +9 -3
  258. package/lib/components/button/src/button.vue_vue&type=script&lang.js.map +1 -1
  259. package/lib/components/button/src/button.vue_vue&type=template&id=802c5c76&lang.js.map +1 -1
  260. package/lib/components/cascader/index.d.ts +8430 -12
  261. package/lib/components/cascader/src/index.vue.d.ts +4216 -6
  262. package/lib/components/cascader/src/index.vue_vue&type=script&lang.js +25 -16
  263. package/lib/components/cascader/src/index.vue_vue&type=script&lang.js.map +1 -1
  264. package/lib/components/cascader/src/index.vue_vue&type=template&id=0429c2db&lang.js.map +1 -1
  265. package/lib/components/cascader-panel/index.d.ts +238 -10
  266. package/lib/components/cascader-panel/src/index.vue.d.ts +122 -8
  267. package/lib/components/cascader-panel/src/index.vue_vue&type=script&lang.js +31 -12
  268. package/lib/components/cascader-panel/src/index.vue_vue&type=script&lang.js.map +1 -1
  269. package/lib/components/cascader-panel/src/index.vue_vue&type=template&id=97c48f5c&lang.js.map +1 -1
  270. package/lib/components/cascader-panel/src/menu.vue.d.ts +2 -2
  271. package/lib/components/cascader-panel/src/menu.vue_vue&type=script&lang.js.map +1 -1
  272. package/lib/components/cascader-panel/src/menu.vue_vue&type=template&id=9c79e4e2&lang.js +14 -11
  273. package/lib/components/cascader-panel/src/menu.vue_vue&type=template&id=9c79e4e2&lang.js.map +1 -1
  274. package/lib/components/cascader-panel/src/node.vue.d.ts +1 -1
  275. package/lib/components/cascader-panel/src/node.vue_vue&type=script&lang.js.map +1 -1
  276. package/lib/components/cascader-panel/src/node.vue_vue&type=template&id=18b09cb2&lang.js +1 -1
  277. package/lib/components/cascader-panel/src/node.vue_vue&type=template&id=18b09cb2&lang.js.map +1 -1
  278. package/lib/components/color-picker/src/color.js +20 -13
  279. package/lib/components/color-picker/src/color.js.map +1 -1
  280. package/lib/components/config-provider/index.d.ts +12 -5
  281. package/lib/components/config-provider/index.js +2 -2
  282. package/lib/components/config-provider/index.js.map +1 -1
  283. package/lib/components/config-provider/src/config-provider.d.ts +7 -0
  284. package/lib/components/config-provider/src/config-provider.js +22 -0
  285. package/lib/components/config-provider/src/config-provider.js.map +1 -0
  286. package/lib/components/config-provider/src/index.d.ts +18 -0
  287. package/lib/components/config-provider/src/index.js +26 -0
  288. package/lib/components/config-provider/src/index.js.map +1 -0
  289. package/lib/components/date-picker/src/date-picker-com/basic-cell-render.js +1 -1
  290. package/lib/components/date-picker/src/date-picker-com/basic-cell-render.js.map +1 -1
  291. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue_vue&type=script&lang.js +1 -1
  292. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue_vue&type=script&lang.js.map +1 -1
  293. package/lib/components/date-picker/src/date-picker-com/basic-date-table.vue_vue&type=template&id=0572814e&lang.js.map +1 -1
  294. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue&type=script&lang.js +22 -15
  295. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue&type=script&lang.js.map +1 -1
  296. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue&type=template&id=78e07aa7&lang.js.map +1 -1
  297. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue&type=script&lang.js +4 -2
  298. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue&type=script&lang.js.map +1 -1
  299. package/lib/components/date-picker/src/date-picker-com/panel-date-range.vue_vue&type=template&id=62b45ab2&lang.js.map +1 -1
  300. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue_vue&type=script&lang.js +4 -3
  301. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue_vue&type=script&lang.js.map +1 -1
  302. package/lib/components/date-picker/src/date-picker-com/panel-month-range.vue_vue&type=template&id=2e377892&lang.js.map +1 -1
  303. package/lib/components/dropdown/src/dropdown-item.vue_vue&type=script&lang.js +2 -0
  304. package/lib/components/dropdown/src/dropdown-item.vue_vue&type=script&lang.js.map +1 -1
  305. package/lib/components/dropdown/src/dropdown-item.vue_vue&type=template&id=396ed16b&lang.js.map +1 -1
  306. package/lib/components/dropdown/src/dropdown.vue_vue&type=script&lang.js.map +1 -1
  307. package/lib/components/dropdown/src/dropdown.vue_vue&type=template&id=3ed790a5&lang.js +67 -67
  308. package/lib/components/dropdown/src/dropdown.vue_vue&type=template&id=3ed790a5&lang.js.map +1 -1
  309. package/lib/components/form/index.d.ts +2 -2
  310. package/lib/components/form/src/form-item.vue_vue&type=script&lang.js +3 -2
  311. package/lib/components/form/src/form-item.vue_vue&type=script&lang.js.map +1 -1
  312. package/lib/components/form/src/form-item.vue_vue&type=template&id=24eda48b&lang.js.map +1 -1
  313. package/lib/components/form/src/form.type.d.ts +1 -3
  314. package/lib/components/form/src/form.vue.d.ts +2 -3
  315. package/lib/components/image/index.d.ts +4 -0
  316. package/lib/components/image/src/image.d.ts +1 -0
  317. package/lib/components/image/src/image.js +4 -0
  318. package/lib/components/image/src/image.js.map +1 -1
  319. package/lib/components/image/src/image.vue.d.ts +4 -0
  320. package/lib/components/image/src/image.vue_vue&type=script&lang.js +2 -2
  321. package/lib/components/image/src/image.vue_vue&type=script&lang.js.map +1 -1
  322. package/lib/components/image/src/image.vue_vue&type=template&id=34467287&lang.js.map +1 -1
  323. package/lib/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
  324. package/lib/components/image-viewer/src/image-viewer.vue_vue&type=script&lang.js +2 -2
  325. package/lib/components/image-viewer/src/image-viewer.vue_vue&type=script&lang.js.map +1 -1
  326. package/lib/components/image-viewer/src/image-viewer.vue_vue&type=template&id=4b22ad85&lang.js +2 -2
  327. package/lib/components/image-viewer/src/image-viewer.vue_vue&type=template&id=4b22ad85&lang.js.map +1 -1
  328. package/lib/components/input/src/input.vue_vue&type=script&lang.js +1 -1
  329. package/lib/components/input/src/input.vue_vue&type=script&lang.js.map +1 -1
  330. package/lib/components/input/src/input.vue_vue&type=template&id=3290dcb6&lang.js +17 -15
  331. package/lib/components/input/src/input.vue_vue&type=template&id=3290dcb6&lang.js.map +1 -1
  332. package/lib/components/loading/src/createLoadingComponent.js +3 -7
  333. package/lib/components/loading/src/createLoadingComponent.js.map +1 -1
  334. package/lib/components/menu/src/menu.js +1 -1
  335. package/lib/components/menu/src/menu.js.map +1 -1
  336. package/lib/components/menu/src/sub-menu.js +1 -1
  337. package/lib/components/menu/src/sub-menu.js.map +1 -1
  338. package/lib/components/message/src/message-method.js +13 -0
  339. package/lib/components/message/src/message-method.js.map +1 -1
  340. package/lib/components/message/src/message.d.ts +2 -0
  341. package/lib/components/message/src/message.js +8 -0
  342. package/lib/components/message/src/message.js.map +1 -1
  343. package/lib/components/message/src/message.vue.d.ts +8 -0
  344. package/lib/components/message/src/message.vue_vue&type=script&lang.js +8 -2
  345. package/lib/components/message/src/message.vue_vue&type=script&lang.js.map +1 -1
  346. package/lib/components/message/src/message.vue_vue&type=template&id=031967c2&lang.js +55 -45
  347. package/lib/components/message/src/message.vue_vue&type=template&id=031967c2&lang.js.map +1 -1
  348. package/lib/components/page-header/src/page-header.vue_vue&type=script&lang.js.map +1 -1
  349. package/lib/components/page-header/src/page-header.vue_vue&type=template&id=d12fb4b2&lang.js +2 -2
  350. package/lib/components/page-header/src/page-header.vue_vue&type=template&id=d12fb4b2&lang.js.map +1 -1
  351. package/lib/components/popconfirm/src/popconfirm.vue_vue&type=script&lang.js.map +1 -1
  352. package/lib/components/popconfirm/src/popconfirm.vue_vue&type=template&id=16409d25&lang.js +1 -1
  353. package/lib/components/popconfirm/src/popconfirm.vue_vue&type=template&id=16409d25&lang.js.map +1 -1
  354. package/lib/components/result/src/index.vue_vue&type=script&lang.js.map +1 -1
  355. package/lib/components/result/src/index.vue_vue&type=template&id=4e01dfba&lang.js +3 -2
  356. package/lib/components/result/src/index.vue_vue&type=template&id=4e01dfba&lang.js.map +1 -1
  357. package/lib/components/select/index.d.ts +5 -1
  358. package/lib/components/select/src/select.vue.d.ts +5 -1
  359. package/lib/components/select/src/select.vue_vue&type=script&lang.js +4 -1
  360. package/lib/components/select/src/select.vue_vue&type=script&lang.js.map +1 -1
  361. package/lib/components/select/src/select.vue_vue&type=template&id=33774f85&lang.js +6 -5
  362. package/lib/components/select/src/select.vue_vue&type=template&id=33774f85&lang.js.map +1 -1
  363. package/lib/components/select/src/useSelect.js +1 -1
  364. package/lib/components/select/src/useSelect.js.map +1 -1
  365. package/lib/components/select-v2/index.d.ts +14 -0
  366. package/lib/components/select-v2/src/defaults.d.ts +4 -0
  367. package/lib/components/select-v2/src/defaults.js +4 -0
  368. package/lib/components/select-v2/src/defaults.js.map +1 -1
  369. package/lib/components/select-v2/src/select-dropdown.vue_vue&type=script&lang.js +1 -0
  370. package/lib/components/select-v2/src/select-dropdown.vue_vue&type=script&lang.js.map +1 -1
  371. package/lib/components/select-v2/src/select.vue.d.ts +7 -0
  372. package/lib/components/select-v2/src/select.vue_vue&type=script&lang.js.map +1 -1
  373. package/lib/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.js +9 -7
  374. package/lib/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.js.map +1 -1
  375. package/lib/components/table/src/config.js +22 -2
  376. package/lib/components/table/src/config.js.map +1 -1
  377. package/lib/components/table/src/store/watcher.js +14 -6
  378. package/lib/components/table/src/store/watcher.js.map +1 -1
  379. package/lib/components/table/src/table/style-helper.js +2 -2
  380. package/lib/components/table/src/table/style-helper.js.map +1 -1
  381. package/lib/components/table/src/table-body/render-helper.js +2 -3
  382. package/lib/components/table/src/table-body/render-helper.js.map +1 -1
  383. package/lib/components/table/src/table-header/event-helper.js +3 -1
  384. package/lib/components/table/src/table-header/event-helper.js.map +1 -1
  385. package/lib/components/tabs/src/tab-nav.vue_vue&type=script&lang.js +3 -3
  386. package/lib/components/tabs/src/tab-nav.vue_vue&type=script&lang.js.map +1 -1
  387. package/lib/components/tabs/src/tabs.js +1 -1
  388. package/lib/components/tabs/src/tabs.js.map +1 -1
  389. package/lib/components/teleport/index.d.ts +23 -0
  390. package/lib/components/teleport/index.js +15 -0
  391. package/lib/components/teleport/index.js.map +1 -0
  392. package/lib/components/teleport/src/teleport.d.ts +7 -0
  393. package/lib/components/teleport/src/teleport.js +22 -0
  394. package/lib/components/teleport/src/teleport.js.map +1 -0
  395. package/lib/components/teleport/src/teleport.vue.d.ts +22 -0
  396. package/lib/components/teleport/src/teleport.vue_vue&type=script&lang.js +32 -0
  397. package/lib/components/teleport/src/teleport.vue_vue&type=script&lang.js.map +1 -0
  398. package/lib/components/teleport/src/teleport.vue_vue&type=template&id=787c6a36&lang.js +23 -0
  399. package/lib/components/teleport/src/teleport.vue_vue&type=template&id=787c6a36&lang.js.map +1 -0
  400. package/lib/components/teleport/src/teleport2.js +12 -0
  401. package/lib/components/teleport/src/teleport2.js.map +1 -0
  402. package/lib/components/teleport/style/css.d.ts +0 -0
  403. package/lib/components/teleport/style/css.js +3 -0
  404. package/lib/components/teleport/style/css.js.map +1 -0
  405. package/lib/components/teleport/style/index.d.ts +0 -0
  406. package/lib/components/teleport/style/index.js +3 -0
  407. package/lib/components/teleport/style/index.js.map +1 -0
  408. package/lib/components/time-picker/src/common/picker.vue_vue&type=script&lang.js.map +1 -1
  409. package/lib/components/time-picker/src/common/picker.vue_vue&type=template&id=1d54be91&lang.js +10 -7
  410. package/lib/components/time-picker/src/common/picker.vue_vue&type=template&id=1d54be91&lang.js.map +1 -1
  411. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue&type=script&lang.js.map +1 -1
  412. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue&type=template&id=4fb3c576&lang.js +9 -1
  413. package/lib/components/time-picker/src/time-picker-com/basic-time-spinner.vue_vue&type=template&id=4fb3c576&lang.js.map +1 -1
  414. package/lib/components/time-select/src/time-select.vue_vue&type=script&lang.js.map +1 -1
  415. package/lib/components/time-select/src/time-select.vue_vue&type=template&id=5beb6389&lang.js +5 -2
  416. package/lib/components/time-select/src/time-select.vue_vue&type=template&id=5beb6389&lang.js.map +1 -1
  417. package/lib/components/transfer/src/transfer-panel.vue_vue&type=script&lang.js +4 -2
  418. package/lib/components/transfer/src/transfer-panel.vue_vue&type=script&lang.js.map +1 -1
  419. package/lib/components/transfer/src/transfer-panel.vue_vue&type=template&id=1a7d1f9c&lang.js +3 -2
  420. package/lib/components/transfer/src/transfer-panel.vue_vue&type=template&id=1a7d1f9c&lang.js.map +1 -1
  421. package/lib/components/transfer/src/useMove.js +3 -0
  422. package/lib/components/transfer/src/useMove.js.map +1 -1
  423. package/lib/components/tree/index.d.ts +6 -0
  424. package/lib/components/tree/src/tree-node.vue.d.ts +1 -0
  425. package/lib/components/tree/src/tree-node.vue_vue&type=script&lang.js +20 -0
  426. package/lib/components/tree/src/tree-node.vue_vue&type=script&lang.js.map +1 -1
  427. package/lib/components/tree/src/tree-node.vue_vue&type=template&id=62959aba&lang.js +9 -6
  428. package/lib/components/tree/src/tree-node.vue_vue&type=template&id=62959aba&lang.js.map +1 -1
  429. package/lib/components/tree/src/tree.type.d.ts +3 -0
  430. package/lib/components/tree/src/tree.vue.d.ts +3 -0
  431. package/lib/components/tree/src/tree.vue_vue&type=script&lang.js.map +1 -1
  432. package/lib/components/tree/src/tree.vue_vue&type=template&id=7539bec5&lang.js +2 -1
  433. package/lib/components/tree/src/tree.vue_vue&type=template&id=7539bec5&lang.js.map +1 -1
  434. package/lib/components/tree-v2/src/tree-node.vue_vue&type=script&lang.js +4 -2
  435. package/lib/components/tree-v2/src/tree-node.vue_vue&type=script&lang.js.map +1 -1
  436. package/lib/components/tree-v2/src/tree-node.vue_vue&type=template&id=71d8f826&lang.js +4 -3
  437. package/lib/components/tree-v2/src/tree-node.vue_vue&type=template&id=71d8f826&lang.js.map +1 -1
  438. package/lib/components/tree-v2/src/tree.vue_vue&type=script&lang.js.map +1 -1
  439. package/lib/components/tree-v2/src/tree.vue_vue&type=template&id=5b45a1b2&lang.js +2 -1
  440. package/lib/components/tree-v2/src/tree.vue_vue&type=template&id=5b45a1b2&lang.js.map +1 -1
  441. package/lib/components/virtual-list/src/builders/build-grid.d.ts +7 -2
  442. package/lib/components/virtual-list/src/builders/build-list.d.ts +9 -3
  443. package/lib/components/virtual-list/src/builders/build-list.js +7 -4
  444. package/lib/components/virtual-list/src/builders/build-list.js.map +1 -1
  445. package/lib/components/virtual-list/src/components/dynamic-size-grid.d.ts +7 -2
  446. package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +9 -3
  447. package/lib/components/virtual-list/src/components/fixed-size-grid.d.ts +7 -2
  448. package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +9 -3
  449. package/lib/components/virtual-list/src/components/scrollbar.js +1 -2
  450. package/lib/components/virtual-list/src/components/scrollbar.js.map +1 -1
  451. package/lib/components/virtual-list/src/props.d.ts +6 -3
  452. package/lib/components/virtual-list/src/props.js +5 -1
  453. package/lib/components/virtual-list/src/props.js.map +1 -1
  454. package/lib/hooks/index.d.ts +1 -0
  455. package/lib/hooks/index.js +2 -0
  456. package/lib/hooks/index.js.map +1 -1
  457. package/lib/hooks/use-global-config/index.d.ts +1 -0
  458. package/lib/hooks/use-global-config/index.js +19 -0
  459. package/lib/hooks/use-global-config/index.js.map +1 -0
  460. package/lib/hooks/use-locale/index.d.ts +2 -4
  461. package/lib/hooks/use-locale/index.js +4 -3
  462. package/lib/hooks/use-locale/index.js.map +1 -1
  463. package/lib/hooks/use-popper/index.js +6 -5
  464. package/lib/hooks/use-popper/index.js.map +1 -1
  465. package/lib/index.js +4 -0
  466. package/lib/index.js.map +1 -1
  467. package/lib/tokens/config-provider.d.ts +4 -0
  468. package/lib/tokens/config-provider.js +8 -0
  469. package/lib/tokens/config-provider.js.map +1 -0
  470. package/lib/tokens/index.d.ts +1 -0
  471. package/lib/tokens/index.js +2 -0
  472. package/lib/tokens/index.js.map +1 -1
  473. package/lib/version.d.ts +1 -1
  474. package/lib/version.js +1 -1
  475. package/lib/version.js.map +1 -1
  476. package/package.json +2 -2
  477. package/tags.json +1 -1
  478. package/theme-chalk/el-checkbox.css +1 -1
  479. package/theme-chalk/el-date-picker.css +1 -1
  480. package/theme-chalk/el-form.css +1 -1
  481. package/theme-chalk/el-input-number.css +1 -1
  482. package/theme-chalk/el-input.css +1 -1
  483. package/theme-chalk/el-menu.css +1 -1
  484. package/theme-chalk/el-message.css +1 -1
  485. package/theme-chalk/el-select.css +1 -1
  486. package/theme-chalk/el-tabs.css +1 -1
  487. package/theme-chalk/el-time-picker.css +1 -1
  488. package/theme-chalk/el-time-select.css +1 -1
  489. package/theme-chalk/el-virtual-list.css +1 -1
  490. package/theme-chalk/index.css +1 -1
  491. package/theme-chalk/src/checkbox.scss +1 -1
  492. package/theme-chalk/src/common/var.scss +0 -2
  493. package/theme-chalk/src/date-picker/picker.scss +0 -1
  494. package/theme-chalk/src/form.scss +1 -1
  495. package/theme-chalk/src/input-number.scss +1 -0
  496. package/theme-chalk/src/input.scss +14 -15
  497. package/theme-chalk/src/menu.scss +16 -14
  498. package/theme-chalk/src/message.scss +6 -1
  499. package/theme-chalk/src/select.scss +2 -3
  500. package/theme-chalk/src/tabs.scss +6 -0
  501. package/theme-chalk/src/virtual-list.scss +16 -0
  502. package/web-types.json +1 -1
  503. package/es/components/affix/index.d.ts +0 -48
  504. package/es/components/affix/src/affix.vue.d.ts +0 -48
  505. package/es/components/color-picker/src/components/alpha-slider.vue.d.ts +0 -30
  506. package/es/components/config-provider/config-provider.d.ts +0 -11
  507. package/es/components/config-provider/config-provider.mjs +0 -20
  508. package/es/components/config-provider/config-provider.mjs.map +0 -1
  509. package/es/components/select/src/useSelect.d.ts +0 -76
  510. package/es/components/slider/index.d.ts +0 -307
  511. package/es/components/slider/src/index.vue.d.ts +0 -155
  512. package/es/components/slider/src/useSlide.d.ts +0 -21
  513. package/es/components/tree-v2/src/composables/useTree.d.ts +0 -29
  514. package/lib/components/affix/index.d.ts +0 -48
  515. package/lib/components/affix/src/affix.vue.d.ts +0 -48
  516. package/lib/components/color-picker/src/components/alpha-slider.vue.d.ts +0 -30
  517. package/lib/components/config-provider/config-provider.d.ts +0 -11
  518. package/lib/components/config-provider/config-provider.js +0 -24
  519. package/lib/components/config-provider/config-provider.js.map +0 -1
  520. package/lib/components/select/src/useSelect.d.ts +0 -76
  521. package/lib/components/slider/index.d.ts +0 -307
  522. package/lib/components/slider/src/index.vue.d.ts +0 -155
  523. package/lib/components/slider/src/useSlide.d.ts +0 -21
  524. package/lib/components/tree-v2/src/composables/useTree.d.ts +0 -29
@@ -1 +1 @@
1
- {"version":3,"file":"panel-date-range.vue_vue&type=template&id=62b45ab2&lang.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/panel-date-range.vue?vue&type=template&id=62b45ab2&lang.js"],"sourcesContent":["<template>\n <div\n class=\"el-picker-panel el-date-range-picker\"\n :class=\"[\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n 'has-time': showTime,\n },\n ]\"\n >\n <div class=\"el-picker-panel__body-wrapper\">\n <slot name=\"sidebar\" class=\"el-picker-panel__sidebar\"></slot>\n <div v-if=\"hasShortcuts\" class=\"el-picker-panel__sidebar\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n class=\"el-picker-panel__shortcut\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div class=\"el-picker-panel__body\">\n <div v-if=\"showTime\" class=\"el-date-range-picker__time-header\">\n <span class=\"el-date-range-picker__editors-wrap\">\n <span class=\"el-date-range-picker__time-picker-wrap\">\n <el-input\n size=\"small\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.startDate')\"\n class=\"el-date-range-picker__editor\"\n :model-value=\"minVisibleDate\"\n @input=\"(val) => handleDateInput(val, 'min')\"\n @change=\"(val) => handleDateChange(val, 'min')\"\n />\n </span>\n <span\n v-clickoutside=\"handleMinTimeClose\"\n class=\"el-date-range-picker__time-picker-wrap\"\n >\n <el-input\n size=\"small\"\n class=\"el-date-range-picker__editor\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.startTime')\"\n :model-value=\"minVisibleTime\"\n @focus=\"minTimePickerVisible = true\"\n @input=\"(val) => handleTimeInput(val, 'min')\"\n @change=\"(val) => handleTimeChange(val, 'min')\"\n />\n <time-pick-panel\n :visible=\"minTimePickerVisible\"\n :format=\"timeFormat\"\n datetime-role=\"start\"\n :time-arrow-control=\"arrowControl\"\n :parsed-value=\"leftDate\"\n @pick=\"handleMinTimePick\"\n />\n </span>\n </span>\n <span>\n <el-icon><arrow-right /></el-icon>\n </span>\n <span class=\"el-date-range-picker__editors-wrap is-right\">\n <span class=\"el-date-range-picker__time-picker-wrap\">\n <el-input\n size=\"small\"\n class=\"el-date-range-picker__editor\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.endDate')\"\n :model-value=\"maxVisibleDate\"\n :readonly=\"!minDate\"\n @input=\"(val) => handleDateInput(val, 'max')\"\n @change=\"(val) => handleDateChange(val, 'max')\"\n />\n </span>\n <span\n v-clickoutside=\"handleMaxTimeClose\"\n class=\"el-date-range-picker__time-picker-wrap\"\n >\n <el-input\n size=\"small\"\n class=\"el-date-range-picker__editor\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.endTime')\"\n :model-value=\"maxVisibleTime\"\n :readonly=\"!minDate\"\n @focus=\"minDate && (maxTimePickerVisible = true)\"\n @input=\"(val) => handleTimeInput(val, 'max')\"\n @change=\"(val) => handleTimeChange(val, 'max')\"\n />\n <time-pick-panel\n datetime-role=\"end\"\n :visible=\"maxTimePickerVisible\"\n :format=\"timeFormat\"\n :time-arrow-control=\"arrowControl\"\n :parsed-value=\"rightDate\"\n @pick=\"handleMaxTimePick\"\n />\n </span>\n </span>\n </div>\n <div\n class=\"el-picker-panel__content el-date-range-picker__content is-left\"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"leftPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn arrow-left\"\n @click=\"leftPrevMonth\"\n >\n <el-icon><arrow-left /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"leftNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableMonthArrow\"\n :class=\"{ 'is-disabled': !enableMonthArrow }\"\n class=\"el-picker-panel__icon-btn arrow-right\"\n @click=\"leftNextMonth\"\n >\n <el-icon><arrow-right /></el-icon>\n </button>\n <div>{{ leftLabel }}</div>\n </div>\n <date-table\n selection-mode=\"range\"\n :date=\"leftDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n :cell-class-name=\"cellClassName\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n <div\n class=\"\n el-picker-panel__content\n el-date-range-picker__content\n is-right\n \"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"rightPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableMonthArrow\"\n :class=\"{ 'is-disabled': !enableMonthArrow }\"\n class=\"el-picker-panel__icon-btn arrow-left\"\n @click=\"rightPrevMonth\"\n >\n <el-icon><arrow-left /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"rightNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn arrow-right\"\n @click=\"rightNextMonth\"\n >\n <el-icon><arrow-right /></el-icon>\n </button>\n <div>{{ rightLabel }}</div>\n </div>\n <date-table\n selection-mode=\"range\"\n :date=\"rightDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n :cell-class-name=\"cellClassName\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n </div>\n </div>\n <div v-if=\"showTime\" class=\"el-picker-panel__footer\">\n <el-button\n v-if=\"clearable\"\n size=\"mini\"\n type=\"text\"\n class=\"el-picker-panel__link-btn\"\n @click=\"handleClear\"\n >\n {{ t('el.datepicker.clear') }}\n </el-button>\n <el-button\n plain\n size=\"mini\"\n class=\"el-picker-panel__link-btn\"\n :disabled=\"btnDisabled\"\n @click=\"handleConfirm(false)\"\n >\n {{ t('el.datepicker.confirm') }}\n </el-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@element-plus/components/button'\nimport { ClickOutside } from '@element-plus/directives'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport {\n extractDateFormat,\n extractTimeFormat,\n TimePickPanel,\n} from '@element-plus/components/time-picker'\nimport { isValidDatePickType } from '@element-plus/utils/validators'\nimport {\n DArrowLeft,\n ArrowLeft,\n DArrowRight,\n ArrowRight,\n} from '@element-plus/icons'\nimport DateTable from './basic-date-table.vue'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { IDatePickerType } from '../date-picker.type'\n\nexport default defineComponent({\n directives: { clickoutside: ClickOutside },\n\n components: {\n TimePickPanel,\n DateTable,\n ElInput,\n ElButton,\n DArrowLeft,\n ArrowLeft,\n DArrowRight,\n ArrowRight,\n },\n\n props: {\n unlinkPanels: Boolean,\n parsedValue: {\n type: Array as PropType<Dayjs[]>,\n },\n type: {\n type: String as PropType<IDatePickerType>,\n required: true,\n validator: isValidDatePickType,\n },\n },\n\n emits: ['pick', 'set-picker-option', 'calendar-change'],\n\n setup(props, ctx) {\n const { t, lang } = useLocaleInject()\n const leftDate = ref(dayjs().locale(lang.value))\n const rightDate = ref(dayjs().locale(lang.value).add(1, 'month'))\n const minDate = ref(null)\n const maxDate = ref(null)\n const dateUserInput = ref({\n min: null,\n max: null,\n })\n\n const timeUserInput = ref({\n min: null,\n max: null,\n })\n\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t('el.datepicker.year')} ${t(\n `el.datepicker.month${leftDate.value.month() + 1}`\n )}`\n })\n\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t('el.datepicker.year')} ${t(\n `el.datepicker.month${rightDate.value.month() + 1}`\n )}`\n })\n\n const leftYear = computed(() => {\n return leftDate.value.year()\n })\n\n const leftMonth = computed(() => {\n return leftDate.value.month()\n })\n\n const rightYear = computed(() => {\n return rightDate.value.year()\n })\n\n const rightMonth = computed(() => {\n return rightDate.value.month()\n })\n\n const hasShortcuts = computed(() => !!shortcuts.length)\n\n const minVisibleDate = computed(() => {\n if (dateUserInput.value.min !== null) return dateUserInput.value.min\n if (minDate.value) return minDate.value.format(dateFormat.value)\n return ''\n })\n\n const maxVisibleDate = computed(() => {\n if (dateUserInput.value.max !== null) return dateUserInput.value.max\n if (maxDate.value || minDate.value)\n return (maxDate.value || minDate.value).format(dateFormat.value)\n return ''\n })\n\n const minVisibleTime = computed(() => {\n if (timeUserInput.value.min !== null) return timeUserInput.value.min\n if (minDate.value) return minDate.value.format(timeFormat.value)\n return ''\n })\n\n const maxVisibleTime = computed(() => {\n if (timeUserInput.value.max !== null) return timeUserInput.value.max\n if (maxDate.value || minDate.value)\n return (maxDate.value || minDate.value).format(timeFormat.value)\n return ''\n })\n\n const timeFormat = computed(() => {\n return extractTimeFormat(format)\n })\n\n const dateFormat = computed(() => {\n return extractDateFormat(format)\n })\n\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, 'year')\n if (!props.unlinkPanels) {\n rightDate.value = leftDate.value.add(1, 'month')\n }\n }\n\n const leftPrevMonth = () => {\n leftDate.value = leftDate.value.subtract(1, 'month')\n if (!props.unlinkPanels) {\n rightDate.value = leftDate.value.add(1, 'month')\n }\n }\n\n const rightNextYear = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, 'year')\n rightDate.value = leftDate.value.add(1, 'month')\n } else {\n rightDate.value = rightDate.value.add(1, 'year')\n }\n }\n\n const rightNextMonth = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, 'month')\n rightDate.value = leftDate.value.add(1, 'month')\n } else {\n rightDate.value = rightDate.value.add(1, 'month')\n }\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n\n const leftNextMonth = () => {\n leftDate.value = leftDate.value.add(1, 'month')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n\n const rightPrevMonth = () => {\n rightDate.value = rightDate.value.subtract(1, 'month')\n }\n\n const enableMonthArrow = computed(() => {\n const nextMonth = (leftMonth.value + 1) % 12\n const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0\n return (\n props.unlinkPanels &&\n new Date(leftYear.value + yearOffset, nextMonth) <\n new Date(rightYear.value, rightMonth.value)\n )\n })\n\n const enableYearArrow = computed(() => {\n return (\n props.unlinkPanels &&\n rightYear.value * 12 +\n rightMonth.value -\n (leftYear.value * 12 + leftMonth.value + 1) >=\n 12\n )\n })\n\n const isValidValue = (value) => {\n return (\n Array.isArray(value) &&\n value[0] &&\n value[1] &&\n value[0].valueOf() <= value[1].valueOf()\n )\n }\n\n const rangeState = ref({\n endDate: null,\n selecting: false,\n })\n\n const btnDisabled = computed(() => {\n return !(\n minDate.value &&\n maxDate.value &&\n !rangeState.value.selecting &&\n isValidValue([minDate.value, maxDate.value])\n )\n })\n\n const handleChangeRange = (val) => {\n rangeState.value = val\n }\n\n const onSelect = (selecting) => {\n rangeState.value.selecting = selecting\n if (!selecting) {\n rangeState.value.endDate = null\n }\n }\n\n const showTime = computed(\n () => props.type === 'datetime' || props.type === 'datetimerange'\n )\n\n const handleConfirm = (visible = false) => {\n if (isValidValue([minDate.value, maxDate.value])) {\n ctx.emit('pick', [minDate.value, maxDate.value], visible)\n }\n }\n\n const formatEmit = (emitDayjs: Dayjs, index?) => {\n if (!emitDayjs) return\n if (defaultTime) {\n const defaultTimeD = dayjs(defaultTime[index] || defaultTime).locale(\n lang.value\n )\n return defaultTimeD\n .year(emitDayjs.year())\n .month(emitDayjs.month())\n .date(emitDayjs.date())\n }\n return emitDayjs\n }\n\n const handleRangePick = (val, close = true) => {\n const min_ = val.minDate\n const max_ = val.maxDate\n const minDate_ = formatEmit(min_, 0)\n const maxDate_ = formatEmit(max_, 1)\n\n if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n return\n }\n ctx.emit('calendar-change', [min_.toDate(), max_ && max_.toDate()])\n maxDate.value = maxDate_\n minDate.value = minDate_\n\n if (!close || showTime.value) return\n handleConfirm()\n }\n\n const handleShortcutClick = (shortcut) => {\n const shortcutValues =\n typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value\n if (shortcutValues) {\n ctx.emit('pick', [\n dayjs(shortcutValues[0]).locale(lang.value),\n dayjs(shortcutValues[1]).locale(lang.value),\n ])\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick(ctx)\n }\n }\n\n const minTimePickerVisible = ref(false)\n const maxTimePickerVisible = ref(false)\n\n const handleMinTimeClose = () => {\n minTimePickerVisible.value = false\n }\n\n const handleMaxTimeClose = () => {\n maxTimePickerVisible.value = false\n }\n\n const handleDateInput = (value, type) => {\n dateUserInput.value[type] = value\n const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value)\n\n if (parsedValueD.isValid()) {\n if (disabledDate && disabledDate(parsedValueD.toDate())) {\n return\n }\n if (type === 'min') {\n leftDate.value = parsedValueD\n minDate.value = (minDate.value || leftDate.value)\n .year(parsedValueD.year())\n .month(parsedValueD.month())\n .date(parsedValueD.date())\n if (!props.unlinkPanels) {\n rightDate.value = parsedValueD.add(1, 'month')\n maxDate.value = minDate.value.add(1, 'month')\n }\n } else {\n rightDate.value = parsedValueD\n maxDate.value = (maxDate.value || rightDate.value)\n .year(parsedValueD.year())\n .month(parsedValueD.month())\n .date(parsedValueD.date())\n if (!props.unlinkPanels) {\n leftDate.value = parsedValueD.subtract(1, 'month')\n minDate.value = maxDate.value.subtract(1, 'month')\n }\n }\n }\n }\n\n const handleDateChange = (_, type) => {\n dateUserInput.value[type] = null\n }\n\n const handleTimeInput = (value, type) => {\n timeUserInput.value[type] = value\n const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value)\n\n if (parsedValueD.isValid()) {\n if (type === 'min') {\n minTimePickerVisible.value = true\n minDate.value = (minDate.value || leftDate.value)\n .hour(parsedValueD.hour())\n .minute(parsedValueD.minute())\n .second(parsedValueD.second())\n if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n maxDate.value = minDate.value\n }\n } else {\n maxTimePickerVisible.value = true\n maxDate.value = (maxDate.value || rightDate.value)\n .hour(parsedValueD.hour())\n .minute(parsedValueD.minute())\n .second(parsedValueD.second())\n rightDate.value = maxDate.value\n if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n minDate.value = maxDate.value\n }\n }\n }\n }\n\n const handleTimeChange = (value, type) => {\n timeUserInput.value[type] = null\n if (type === 'min') {\n leftDate.value = minDate.value\n minTimePickerVisible.value = false\n } else {\n rightDate.value = maxDate.value\n maxTimePickerVisible.value = false\n }\n }\n\n const handleMinTimePick = (value, visible, first) => {\n if (timeUserInput.value.min) return\n if (value) {\n leftDate.value = value\n minDate.value = (minDate.value || leftDate.value)\n .hour(value.hour())\n .minute(value.minute())\n .second(value.second())\n }\n\n if (!first) {\n minTimePickerVisible.value = visible\n }\n\n if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n maxDate.value = minDate.value\n rightDate.value = value\n }\n }\n\n const handleMaxTimePick = (value, visible, first) => {\n if (timeUserInput.value.max) return\n if (value) {\n rightDate.value = value\n maxDate.value = (maxDate.value || rightDate.value)\n .hour(value.hour())\n .minute(value.minute())\n .second(value.second())\n }\n\n if (!first) {\n maxTimePickerVisible.value = visible\n }\n\n if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n minDate.value = maxDate.value\n }\n }\n\n const handleClear = () => {\n leftDate.value = getDefaultValue()[0]\n rightDate.value = leftDate.value.add(1, 'month')\n ctx.emit('pick', null)\n }\n\n const formatToString = (value: Dayjs | Dayjs[]) => {\n return Array.isArray(value)\n ? value.map((_) => _.format(format))\n : value.format(format)\n }\n\n const parseUserInput = (value: Dayjs | Dayjs[]) => {\n return Array.isArray(value)\n ? value.map((_) => dayjs(_, format).locale(lang.value))\n : dayjs(value, format).locale(lang.value)\n }\n\n const getDefaultValue = () => {\n let start: Dayjs\n if (Array.isArray(defaultValue)) {\n const left = dayjs(defaultValue[0])\n let right = dayjs(defaultValue[1])\n if (!props.unlinkPanels) {\n right = left.add(1, 'month')\n }\n return [left, right]\n } else if (defaultValue) {\n start = dayjs(defaultValue)\n } else {\n start = dayjs()\n }\n\n start = start.locale(lang.value)\n return [start, start.add(1, 'month')]\n }\n\n ctx.emit('set-picker-option', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n ctx.emit('set-picker-option', ['handleClear', handleClear])\n\n const pickerBase = inject('EP_PICKER_BASE') as any\n const {\n shortcuts,\n disabledDate,\n cellClassName,\n format,\n defaultTime,\n defaultValue,\n arrowControl,\n clearable,\n } = pickerBase.props\n\n watch(\n () => props.parsedValue,\n (newVal) => {\n if (newVal && newVal.length === 2) {\n minDate.value = newVal[0]\n maxDate.value = newVal[1]\n leftDate.value = minDate.value\n if (props.unlinkPanels && maxDate.value) {\n const minDateYear = minDate.value.year()\n const minDateMonth = minDate.value.month()\n const maxDateYear = maxDate.value.year()\n const maxDateMonth = maxDate.value.month()\n rightDate.value =\n minDateYear === maxDateYear && minDateMonth === maxDateMonth\n ? maxDate.value.add(1, 'month')\n : maxDate.value\n } else {\n rightDate.value = leftDate.value.add(1, 'month')\n if (maxDate.value) {\n rightDate.value = rightDate.value\n .hour(maxDate.value.hour())\n .minute(maxDate.value.minute())\n .second(maxDate.value.second())\n }\n }\n } else {\n const defaultArr = getDefaultValue()\n minDate.value = null\n maxDate.value = null\n leftDate.value = defaultArr[0]\n rightDate.value = defaultArr[1]\n }\n },\n { immediate: true }\n )\n\n return {\n shortcuts,\n disabledDate,\n cellClassName,\n minTimePickerVisible,\n maxTimePickerVisible,\n handleMinTimeClose,\n handleMaxTimeClose,\n handleShortcutClick,\n rangeState,\n minDate,\n maxDate,\n handleRangePick,\n onSelect,\n handleChangeRange,\n btnDisabled,\n enableYearArrow,\n enableMonthArrow,\n rightPrevMonth,\n rightPrevYear,\n rightNextMonth,\n rightNextYear,\n leftPrevMonth,\n leftPrevYear,\n leftNextMonth,\n leftNextYear,\n hasShortcuts,\n leftLabel,\n rightLabel,\n leftDate,\n rightDate,\n showTime,\n t,\n minVisibleDate,\n maxVisibleDate,\n minVisibleTime,\n maxVisibleTime,\n arrowControl,\n handleDateInput,\n handleDateChange,\n handleTimeInput,\n handleTimeChange,\n handleMinTimePick,\n handleMaxTimePick,\n handleClear,\n handleConfirm,\n timeFormat,\n clearable,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot","_createVNode","_createBlock"],"mappings":"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"}
1
+ {"version":3,"file":"panel-date-range.vue_vue&type=template&id=62b45ab2&lang.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/panel-date-range.vue?vue&type=template&id=62b45ab2&lang.js"],"sourcesContent":["<template>\n <div\n class=\"el-picker-panel el-date-range-picker\"\n :class=\"[\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n 'has-time': showTime,\n },\n ]\"\n >\n <div class=\"el-picker-panel__body-wrapper\">\n <slot name=\"sidebar\" class=\"el-picker-panel__sidebar\"></slot>\n <div v-if=\"hasShortcuts\" class=\"el-picker-panel__sidebar\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n class=\"el-picker-panel__shortcut\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div class=\"el-picker-panel__body\">\n <div v-if=\"showTime\" class=\"el-date-range-picker__time-header\">\n <span class=\"el-date-range-picker__editors-wrap\">\n <span class=\"el-date-range-picker__time-picker-wrap\">\n <el-input\n size=\"small\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.startDate')\"\n class=\"el-date-range-picker__editor\"\n :model-value=\"minVisibleDate\"\n @input=\"(val) => handleDateInput(val, 'min')\"\n @change=\"(val) => handleDateChange(val, 'min')\"\n />\n </span>\n <span\n v-clickoutside=\"handleMinTimeClose\"\n class=\"el-date-range-picker__time-picker-wrap\"\n >\n <el-input\n size=\"small\"\n class=\"el-date-range-picker__editor\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.startTime')\"\n :model-value=\"minVisibleTime\"\n @focus=\"minTimePickerVisible = true\"\n @input=\"(val) => handleTimeInput(val, 'min')\"\n @change=\"(val) => handleTimeChange(val, 'min')\"\n />\n <time-pick-panel\n :visible=\"minTimePickerVisible\"\n :format=\"timeFormat\"\n datetime-role=\"start\"\n :time-arrow-control=\"arrowControl\"\n :parsed-value=\"leftDate\"\n @pick=\"handleMinTimePick\"\n />\n </span>\n </span>\n <span>\n <el-icon><arrow-right /></el-icon>\n </span>\n <span class=\"el-date-range-picker__editors-wrap is-right\">\n <span class=\"el-date-range-picker__time-picker-wrap\">\n <el-input\n size=\"small\"\n class=\"el-date-range-picker__editor\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.endDate')\"\n :model-value=\"maxVisibleDate\"\n :readonly=\"!minDate\"\n @input=\"(val) => handleDateInput(val, 'max')\"\n @change=\"(val) => handleDateChange(val, 'max')\"\n />\n </span>\n <span\n v-clickoutside=\"handleMaxTimeClose\"\n class=\"el-date-range-picker__time-picker-wrap\"\n >\n <el-input\n size=\"small\"\n class=\"el-date-range-picker__editor\"\n :disabled=\"rangeState.selecting\"\n :placeholder=\"t('el.datepicker.endTime')\"\n :model-value=\"maxVisibleTime\"\n :readonly=\"!minDate\"\n @focus=\"minDate && (maxTimePickerVisible = true)\"\n @input=\"(val) => handleTimeInput(val, 'max')\"\n @change=\"(val) => handleTimeChange(val, 'max')\"\n />\n <time-pick-panel\n datetime-role=\"end\"\n :visible=\"maxTimePickerVisible\"\n :format=\"timeFormat\"\n :time-arrow-control=\"arrowControl\"\n :parsed-value=\"rightDate\"\n @pick=\"handleMaxTimePick\"\n />\n </span>\n </span>\n </div>\n <div\n class=\"el-picker-panel__content el-date-range-picker__content is-left\"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"leftPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn arrow-left\"\n @click=\"leftPrevMonth\"\n >\n <el-icon><arrow-left /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"leftNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableMonthArrow\"\n :class=\"{ 'is-disabled': !enableMonthArrow }\"\n class=\"el-picker-panel__icon-btn arrow-right\"\n @click=\"leftNextMonth\"\n >\n <el-icon><arrow-right /></el-icon>\n </button>\n <div>{{ leftLabel }}</div>\n </div>\n <date-table\n selection-mode=\"range\"\n :date=\"leftDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n :cell-class-name=\"cellClassName\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n <div\n class=\"\n el-picker-panel__content\n el-date-range-picker__content\n is-right\n \"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"rightPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableMonthArrow\"\n :class=\"{ 'is-disabled': !enableMonthArrow }\"\n class=\"el-picker-panel__icon-btn arrow-left\"\n @click=\"rightPrevMonth\"\n >\n <el-icon><arrow-left /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"rightNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn arrow-right\"\n @click=\"rightNextMonth\"\n >\n <el-icon><arrow-right /></el-icon>\n </button>\n <div>{{ rightLabel }}</div>\n </div>\n <date-table\n selection-mode=\"range\"\n :date=\"rightDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n :cell-class-name=\"cellClassName\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n </div>\n </div>\n <div v-if=\"showTime\" class=\"el-picker-panel__footer\">\n <el-button\n v-if=\"clearable\"\n size=\"mini\"\n type=\"text\"\n class=\"el-picker-panel__link-btn\"\n @click=\"handleClear\"\n >\n {{ t('el.datepicker.clear') }}\n </el-button>\n <el-button\n plain\n size=\"mini\"\n class=\"el-picker-panel__link-btn\"\n :disabled=\"btnDisabled\"\n @click=\"handleConfirm(false)\"\n >\n {{ t('el.datepicker.confirm') }}\n </el-button>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport ElButton from '@element-plus/components/button'\nimport { ClickOutside } from '@element-plus/directives'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport {\n extractDateFormat,\n extractTimeFormat,\n TimePickPanel,\n} from '@element-plus/components/time-picker'\nimport ElIcon from '@element-plus/components/icon'\nimport { isValidDatePickType } from '@element-plus/utils/validators'\nimport {\n DArrowLeft,\n ArrowLeft,\n DArrowRight,\n ArrowRight,\n} from '@element-plus/icons'\nimport DateTable from './basic-date-table.vue'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\nimport type { IDatePickerType } from '../date-picker.type'\n\nexport default defineComponent({\n directives: { clickoutside: ClickOutside },\n\n components: {\n TimePickPanel,\n DateTable,\n ElInput,\n ElButton,\n ElIcon,\n DArrowLeft,\n ArrowLeft,\n DArrowRight,\n ArrowRight,\n },\n\n props: {\n unlinkPanels: Boolean,\n parsedValue: {\n type: Array as PropType<Dayjs[]>,\n },\n type: {\n type: String as PropType<IDatePickerType>,\n required: true,\n validator: isValidDatePickType,\n },\n },\n\n emits: ['pick', 'set-picker-option', 'calendar-change'],\n\n setup(props, ctx) {\n const { t, lang } = useLocaleInject()\n const leftDate = ref(dayjs().locale(lang.value))\n const rightDate = ref(dayjs().locale(lang.value).add(1, 'month'))\n const minDate = ref(null)\n const maxDate = ref(null)\n const dateUserInput = ref({\n min: null,\n max: null,\n })\n\n const timeUserInput = ref({\n min: null,\n max: null,\n })\n\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t('el.datepicker.year')} ${t(\n `el.datepicker.month${leftDate.value.month() + 1}`\n )}`\n })\n\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t('el.datepicker.year')} ${t(\n `el.datepicker.month${rightDate.value.month() + 1}`\n )}`\n })\n\n const leftYear = computed(() => {\n return leftDate.value.year()\n })\n\n const leftMonth = computed(() => {\n return leftDate.value.month()\n })\n\n const rightYear = computed(() => {\n return rightDate.value.year()\n })\n\n const rightMonth = computed(() => {\n return rightDate.value.month()\n })\n\n const hasShortcuts = computed(() => !!shortcuts.length)\n\n const minVisibleDate = computed(() => {\n if (dateUserInput.value.min !== null) return dateUserInput.value.min\n if (minDate.value) return minDate.value.format(dateFormat.value)\n return ''\n })\n\n const maxVisibleDate = computed(() => {\n if (dateUserInput.value.max !== null) return dateUserInput.value.max\n if (maxDate.value || minDate.value)\n return (maxDate.value || minDate.value).format(dateFormat.value)\n return ''\n })\n\n const minVisibleTime = computed(() => {\n if (timeUserInput.value.min !== null) return timeUserInput.value.min\n if (minDate.value) return minDate.value.format(timeFormat.value)\n return ''\n })\n\n const maxVisibleTime = computed(() => {\n if (timeUserInput.value.max !== null) return timeUserInput.value.max\n if (maxDate.value || minDate.value)\n return (maxDate.value || minDate.value).format(timeFormat.value)\n return ''\n })\n\n const timeFormat = computed(() => {\n return extractTimeFormat(format)\n })\n\n const dateFormat = computed(() => {\n return extractDateFormat(format)\n })\n\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, 'year')\n if (!props.unlinkPanels) {\n rightDate.value = leftDate.value.add(1, 'month')\n }\n }\n\n const leftPrevMonth = () => {\n leftDate.value = leftDate.value.subtract(1, 'month')\n if (!props.unlinkPanels) {\n rightDate.value = leftDate.value.add(1, 'month')\n }\n }\n\n const rightNextYear = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, 'year')\n rightDate.value = leftDate.value.add(1, 'month')\n } else {\n rightDate.value = rightDate.value.add(1, 'year')\n }\n }\n\n const rightNextMonth = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, 'month')\n rightDate.value = leftDate.value.add(1, 'month')\n } else {\n rightDate.value = rightDate.value.add(1, 'month')\n }\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n\n const leftNextMonth = () => {\n leftDate.value = leftDate.value.add(1, 'month')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n\n const rightPrevMonth = () => {\n rightDate.value = rightDate.value.subtract(1, 'month')\n }\n\n const enableMonthArrow = computed(() => {\n const nextMonth = (leftMonth.value + 1) % 12\n const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0\n return (\n props.unlinkPanels &&\n new Date(leftYear.value + yearOffset, nextMonth) <\n new Date(rightYear.value, rightMonth.value)\n )\n })\n\n const enableYearArrow = computed(() => {\n return (\n props.unlinkPanels &&\n rightYear.value * 12 +\n rightMonth.value -\n (leftYear.value * 12 + leftMonth.value + 1) >=\n 12\n )\n })\n\n const isValidValue = (value) => {\n return (\n Array.isArray(value) &&\n value[0] &&\n value[1] &&\n value[0].valueOf() <= value[1].valueOf()\n )\n }\n\n const rangeState = ref({\n endDate: null,\n selecting: false,\n })\n\n const btnDisabled = computed(() => {\n return !(\n minDate.value &&\n maxDate.value &&\n !rangeState.value.selecting &&\n isValidValue([minDate.value, maxDate.value])\n )\n })\n\n const handleChangeRange = (val) => {\n rangeState.value = val\n }\n\n const onSelect = (selecting) => {\n rangeState.value.selecting = selecting\n if (!selecting) {\n rangeState.value.endDate = null\n }\n }\n\n const showTime = computed(\n () => props.type === 'datetime' || props.type === 'datetimerange'\n )\n\n const handleConfirm = (visible = false) => {\n if (isValidValue([minDate.value, maxDate.value])) {\n ctx.emit('pick', [minDate.value, maxDate.value], visible)\n }\n }\n\n const formatEmit = (emitDayjs: Dayjs, index?) => {\n if (!emitDayjs) return\n if (defaultTime) {\n const defaultTimeD = dayjs(defaultTime[index] || defaultTime).locale(\n lang.value\n )\n return defaultTimeD\n .year(emitDayjs.year())\n .month(emitDayjs.month())\n .date(emitDayjs.date())\n }\n return emitDayjs\n }\n\n const handleRangePick = (val, close = true) => {\n const min_ = val.minDate\n const max_ = val.maxDate\n const minDate_ = formatEmit(min_, 0)\n const maxDate_ = formatEmit(max_, 1)\n\n if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n return\n }\n ctx.emit('calendar-change', [min_.toDate(), max_ && max_.toDate()])\n maxDate.value = maxDate_\n minDate.value = minDate_\n\n if (!close || showTime.value) return\n handleConfirm()\n }\n\n const handleShortcutClick = (shortcut) => {\n const shortcutValues =\n typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value\n if (shortcutValues) {\n ctx.emit('pick', [\n dayjs(shortcutValues[0]).locale(lang.value),\n dayjs(shortcutValues[1]).locale(lang.value),\n ])\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick(ctx)\n }\n }\n\n const minTimePickerVisible = ref(false)\n const maxTimePickerVisible = ref(false)\n\n const handleMinTimeClose = () => {\n minTimePickerVisible.value = false\n }\n\n const handleMaxTimeClose = () => {\n maxTimePickerVisible.value = false\n }\n\n const handleDateInput = (value, type) => {\n dateUserInput.value[type] = value\n const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value)\n\n if (parsedValueD.isValid()) {\n if (disabledDate && disabledDate(parsedValueD.toDate())) {\n return\n }\n if (type === 'min') {\n leftDate.value = parsedValueD\n minDate.value = (minDate.value || leftDate.value)\n .year(parsedValueD.year())\n .month(parsedValueD.month())\n .date(parsedValueD.date())\n if (!props.unlinkPanels) {\n rightDate.value = parsedValueD.add(1, 'month')\n maxDate.value = minDate.value.add(1, 'month')\n }\n } else {\n rightDate.value = parsedValueD\n maxDate.value = (maxDate.value || rightDate.value)\n .year(parsedValueD.year())\n .month(parsedValueD.month())\n .date(parsedValueD.date())\n if (!props.unlinkPanels) {\n leftDate.value = parsedValueD.subtract(1, 'month')\n minDate.value = maxDate.value.subtract(1, 'month')\n }\n }\n }\n }\n\n const handleDateChange = (_, type) => {\n dateUserInput.value[type] = null\n }\n\n const handleTimeInput = (value, type) => {\n timeUserInput.value[type] = value\n const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value)\n\n if (parsedValueD.isValid()) {\n if (type === 'min') {\n minTimePickerVisible.value = true\n minDate.value = (minDate.value || leftDate.value)\n .hour(parsedValueD.hour())\n .minute(parsedValueD.minute())\n .second(parsedValueD.second())\n if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n maxDate.value = minDate.value\n }\n } else {\n maxTimePickerVisible.value = true\n maxDate.value = (maxDate.value || rightDate.value)\n .hour(parsedValueD.hour())\n .minute(parsedValueD.minute())\n .second(parsedValueD.second())\n rightDate.value = maxDate.value\n if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n minDate.value = maxDate.value\n }\n }\n }\n }\n\n const handleTimeChange = (value, type) => {\n timeUserInput.value[type] = null\n if (type === 'min') {\n leftDate.value = minDate.value\n minTimePickerVisible.value = false\n } else {\n rightDate.value = maxDate.value\n maxTimePickerVisible.value = false\n }\n }\n\n const handleMinTimePick = (value, visible, first) => {\n if (timeUserInput.value.min) return\n if (value) {\n leftDate.value = value\n minDate.value = (minDate.value || leftDate.value)\n .hour(value.hour())\n .minute(value.minute())\n .second(value.second())\n }\n\n if (!first) {\n minTimePickerVisible.value = visible\n }\n\n if (!maxDate.value || maxDate.value.isBefore(minDate.value)) {\n maxDate.value = minDate.value\n rightDate.value = value\n }\n }\n\n const handleMaxTimePick = (value, visible, first) => {\n if (timeUserInput.value.max) return\n if (value) {\n rightDate.value = value\n maxDate.value = (maxDate.value || rightDate.value)\n .hour(value.hour())\n .minute(value.minute())\n .second(value.second())\n }\n\n if (!first) {\n maxTimePickerVisible.value = visible\n }\n\n if (maxDate.value && maxDate.value.isBefore(minDate.value)) {\n minDate.value = maxDate.value\n }\n }\n\n const handleClear = () => {\n leftDate.value = getDefaultValue()[0]\n rightDate.value = leftDate.value.add(1, 'month')\n ctx.emit('pick', null)\n }\n\n const formatToString = (value: Dayjs | Dayjs[]) => {\n return Array.isArray(value)\n ? value.map((_) => _.format(format))\n : value.format(format)\n }\n\n const parseUserInput = (value: Dayjs | Dayjs[]) => {\n return Array.isArray(value)\n ? value.map((_) => dayjs(_, format).locale(lang.value))\n : dayjs(value, format).locale(lang.value)\n }\n\n const getDefaultValue = () => {\n let start: Dayjs\n if (Array.isArray(defaultValue)) {\n const left = dayjs(defaultValue[0])\n let right = dayjs(defaultValue[1])\n if (!props.unlinkPanels) {\n right = left.add(1, 'month')\n }\n return [left, right]\n } else if (defaultValue) {\n start = dayjs(defaultValue)\n } else {\n start = dayjs()\n }\n\n start = start.locale(lang.value)\n return [start, start.add(1, 'month')]\n }\n\n ctx.emit('set-picker-option', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['parseUserInput', parseUserInput])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n ctx.emit('set-picker-option', ['handleClear', handleClear])\n\n const pickerBase = inject('EP_PICKER_BASE') as any\n const {\n shortcuts,\n disabledDate,\n cellClassName,\n format,\n defaultTime,\n defaultValue,\n arrowControl,\n clearable,\n } = pickerBase.props\n\n watch(\n () => props.parsedValue,\n (newVal) => {\n if (newVal && newVal.length === 2) {\n minDate.value = newVal[0]\n maxDate.value = newVal[1]\n leftDate.value = minDate.value\n if (props.unlinkPanels && maxDate.value) {\n const minDateYear = minDate.value.year()\n const minDateMonth = minDate.value.month()\n const maxDateYear = maxDate.value.year()\n const maxDateMonth = maxDate.value.month()\n rightDate.value =\n minDateYear === maxDateYear && minDateMonth === maxDateMonth\n ? maxDate.value.add(1, 'month')\n : maxDate.value\n } else {\n rightDate.value = leftDate.value.add(1, 'month')\n if (maxDate.value) {\n rightDate.value = rightDate.value\n .hour(maxDate.value.hour())\n .minute(maxDate.value.minute())\n .second(maxDate.value.second())\n }\n }\n } else {\n const defaultArr = getDefaultValue()\n minDate.value = null\n maxDate.value = null\n leftDate.value = defaultArr[0]\n rightDate.value = defaultArr[1]\n }\n },\n { immediate: true }\n )\n\n return {\n shortcuts,\n disabledDate,\n cellClassName,\n minTimePickerVisible,\n maxTimePickerVisible,\n handleMinTimeClose,\n handleMaxTimeClose,\n handleShortcutClick,\n rangeState,\n minDate,\n maxDate,\n handleRangePick,\n onSelect,\n handleChangeRange,\n btnDisabled,\n enableYearArrow,\n enableMonthArrow,\n rightPrevMonth,\n rightPrevYear,\n rightNextMonth,\n rightNextYear,\n leftPrevMonth,\n leftPrevYear,\n leftNextMonth,\n leftNextYear,\n hasShortcuts,\n leftLabel,\n rightLabel,\n leftDate,\n rightDate,\n showTime,\n t,\n minVisibleDate,\n maxVisibleDate,\n minVisibleTime,\n maxVisibleTime,\n arrowControl,\n handleDateInput,\n handleDateChange,\n handleTimeInput,\n handleTimeChange,\n handleMinTimePick,\n handleMaxTimePick,\n handleClear,\n handleConfirm,\n timeFormat,\n clearable,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot","_createVNode","_createBlock"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { defineComponent, ref, computed, inject, watch } from 'vue';
2
2
  import dayjs from 'dayjs';
3
+ import { ElIcon } from '../../../icon/index.mjs';
3
4
  import '../../../../hooks/index.mjs';
4
5
  import { DArrowLeft, DArrowRight } from '@element-plus/icons';
5
6
  import './basic-month-table.mjs';
@@ -7,7 +8,7 @@ import script$1 from './basic-month-table.vue_vue&type=script&lang.mjs';
7
8
  import { useLocaleInject } from '../../../../hooks/use-locale/index.mjs';
8
9
 
9
10
  var script = defineComponent({
10
- components: { MonthTable: script$1, DArrowLeft, DArrowRight },
11
+ components: { MonthTable: script$1, ElIcon, DArrowLeft, DArrowRight },
11
12
  props: {
12
13
  unlinkPanels: Boolean,
13
14
  parsedValue: {
@@ -1 +1 @@
1
- {"version":3,"file":"panel-month-range.vue_vue&type=script&lang.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/panel-month-range.vue"],"sourcesContent":["<template>\n <div\n class=\"el-picker-panel el-date-range-picker\"\n :class=\"[\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n },\n ]\"\n >\n <div class=\"el-picker-panel__body-wrapper\">\n <slot name=\"sidebar\" class=\"el-picker-panel__sidebar\"></slot>\n <div v-if=\"hasShortcuts\" class=\"el-picker-panel__sidebar\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n class=\"el-picker-panel__shortcut\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div class=\"el-picker-panel__body\">\n <div\n class=\"el-picker-panel__content el-date-range-picker__content is-left\"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"leftPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"leftNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <div>{{ leftLabel }}</div>\n </div>\n <month-table\n selection-mode=\"range\"\n :date=\"leftDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n <div\n class=\"\n el-picker-panel__content\n el-date-range-picker__content\n is-right\n \"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"rightPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"rightNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <div>{{ rightLabel }}</div>\n </div>\n <month-table\n selection-mode=\"range\"\n :date=\"rightDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, watch, inject } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport { DArrowLeft, DArrowRight } from '@element-plus/icons'\nimport MonthTable from './basic-month-table.vue'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport default defineComponent({\n components: { MonthTable, DArrowLeft, DArrowRight },\n\n props: {\n unlinkPanels: Boolean,\n parsedValue: {\n type: Array as PropType<Dayjs[]>,\n },\n },\n\n emits: ['pick', 'set-picker-option'],\n\n setup(props, ctx) {\n const { t, lang } = useLocaleInject()\n const leftDate = ref(dayjs().locale(lang.value))\n const rightDate = ref(dayjs().locale(lang.value).add(1, 'year'))\n\n const hasShortcuts = computed(() => !!shortcuts.length)\n\n const handleShortcutClick = (shortcut) => {\n const shortcutValues =\n typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value\n if (shortcutValues) {\n ctx.emit('pick', [\n dayjs(shortcutValues[0]).locale(lang.value),\n dayjs(shortcutValues[1]).locale(lang.value),\n ])\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick(ctx)\n }\n }\n\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, 'year')\n if (!props.unlinkPanels) {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n }\n\n const rightNextYear = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n rightDate.value = rightDate.value.add(1, 'year')\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const leftYear = computed(() => {\n return leftDate.value.year()\n })\n\n const rightYear = computed(() => {\n return rightDate.value.year() === leftDate.value.year()\n ? leftDate.value.year() + 1\n : rightDate.value.year()\n })\n\n const enableYearArrow = computed(() => {\n return props.unlinkPanels && rightYear.value > leftYear.value + 1\n })\n\n const minDate = ref(null)\n const maxDate = ref(null)\n\n const rangeState = ref({\n endDate: null,\n selecting: false,\n })\n\n const handleChangeRange = (val) => {\n rangeState.value = val\n }\n\n const handleRangePick = (val, close = true) => {\n // const defaultTime = props.defaultTime || []\n // const minDate_ = modifyWithTimeString(val.minDate, defaultTime[0])\n // const maxDate_ = modifyWithTimeString(val.maxDate, defaultTime[1])\n // todo\n const minDate_ = val.minDate\n const maxDate_ = val.maxDate\n if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n return\n }\n maxDate.value = maxDate_\n minDate.value = minDate_\n\n if (!close) return\n handleConfirm()\n }\n\n const isValidValue = (value) => {\n return (\n Array.isArray(value) &&\n value &&\n value[0] &&\n value[1] &&\n value[0].valueOf() <= value[1].valueOf()\n )\n }\n\n const handleConfirm = (visible = false) => {\n if (isValidValue([minDate.value, maxDate.value])) {\n ctx.emit('pick', [minDate.value, maxDate.value], visible)\n }\n }\n\n const onSelect = (selecting) => {\n rangeState.value.selecting = selecting\n if (!selecting) {\n rangeState.value.endDate = null\n }\n }\n\n const formatToString = (value) => {\n return value.map((_) => _.format(format))\n }\n\n const getDefaultValue = () => {\n let start: Dayjs\n if (Array.isArray(defaultValue)) {\n const left = dayjs(defaultValue[0])\n let right = dayjs(defaultValue[1])\n if (!props.unlinkPanels) {\n right = left.add(1, 'year')\n }\n return [left, right]\n } else if (defaultValue) {\n start = dayjs(defaultValue)\n } else {\n start = dayjs()\n }\n start = start.locale(lang.value)\n return [start, start.add(1, 'year')]\n }\n\n // pickerBase.hub.emit('SetPickerOption', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n const pickerBase = inject('EP_PICKER_BASE') as any\n const { shortcuts, disabledDate, format, defaultValue } = pickerBase.props\n\n watch(\n () => props.parsedValue,\n (newVal) => {\n if (newVal && newVal.length === 2) {\n minDate.value = newVal[0]\n maxDate.value = newVal[1]\n leftDate.value = minDate.value\n if (props.unlinkPanels && maxDate.value) {\n const minDateYear = minDate.value.year()\n const maxDateYear = maxDate.value.year()\n rightDate.value =\n minDateYear === maxDateYear\n ? maxDate.value.add(1, 'year')\n : maxDate.value\n } else {\n rightDate.value = leftDate.value.add(1, 'year')\n }\n } else {\n const defaultArr = getDefaultValue()\n leftDate.value = defaultArr[0]\n rightDate.value = defaultArr[1]\n }\n },\n { immediate: true }\n )\n\n return {\n shortcuts,\n disabledDate,\n onSelect,\n handleRangePick,\n rangeState,\n handleChangeRange,\n minDate,\n maxDate,\n enableYearArrow,\n leftLabel,\n rightLabel,\n leftNextYear,\n leftPrevYear,\n rightNextYear,\n rightPrevYear,\n t,\n leftDate,\n rightDate,\n hasShortcuts,\n handleShortcutClick,\n }\n },\n})\n</script>\n"],"names":["MonthTable"],"mappings":"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"}
1
+ {"version":3,"file":"panel-month-range.vue_vue&type=script&lang.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/panel-month-range.vue"],"sourcesContent":["<template>\n <div\n class=\"el-picker-panel el-date-range-picker\"\n :class=\"[\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n },\n ]\"\n >\n <div class=\"el-picker-panel__body-wrapper\">\n <slot name=\"sidebar\" class=\"el-picker-panel__sidebar\"></slot>\n <div v-if=\"hasShortcuts\" class=\"el-picker-panel__sidebar\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n class=\"el-picker-panel__shortcut\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div class=\"el-picker-panel__body\">\n <div\n class=\"el-picker-panel__content el-date-range-picker__content is-left\"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"leftPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"leftNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <div>{{ leftLabel }}</div>\n </div>\n <month-table\n selection-mode=\"range\"\n :date=\"leftDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n <div\n class=\"\n el-picker-panel__content\n el-date-range-picker__content\n is-right\n \"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"rightPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"rightNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <div>{{ rightLabel }}</div>\n </div>\n <month-table\n selection-mode=\"range\"\n :date=\"rightDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, watch, inject } from 'vue'\nimport dayjs from 'dayjs'\nimport ElIcon from '@element-plus/components/icon'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport { DArrowLeft, DArrowRight } from '@element-plus/icons'\nimport MonthTable from './basic-month-table.vue'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport default defineComponent({\n components: { MonthTable, ElIcon, DArrowLeft, DArrowRight },\n\n props: {\n unlinkPanels: Boolean,\n parsedValue: {\n type: Array as PropType<Dayjs[]>,\n },\n },\n\n emits: ['pick', 'set-picker-option'],\n\n setup(props, ctx) {\n const { t, lang } = useLocaleInject()\n const leftDate = ref(dayjs().locale(lang.value))\n const rightDate = ref(dayjs().locale(lang.value).add(1, 'year'))\n\n const hasShortcuts = computed(() => !!shortcuts.length)\n\n const handleShortcutClick = (shortcut) => {\n const shortcutValues =\n typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value\n if (shortcutValues) {\n ctx.emit('pick', [\n dayjs(shortcutValues[0]).locale(lang.value),\n dayjs(shortcutValues[1]).locale(lang.value),\n ])\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick(ctx)\n }\n }\n\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, 'year')\n if (!props.unlinkPanels) {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n }\n\n const rightNextYear = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n rightDate.value = rightDate.value.add(1, 'year')\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const leftYear = computed(() => {\n return leftDate.value.year()\n })\n\n const rightYear = computed(() => {\n return rightDate.value.year() === leftDate.value.year()\n ? leftDate.value.year() + 1\n : rightDate.value.year()\n })\n\n const enableYearArrow = computed(() => {\n return props.unlinkPanels && rightYear.value > leftYear.value + 1\n })\n\n const minDate = ref(null)\n const maxDate = ref(null)\n\n const rangeState = ref({\n endDate: null,\n selecting: false,\n })\n\n const handleChangeRange = (val) => {\n rangeState.value = val\n }\n\n const handleRangePick = (val, close = true) => {\n // const defaultTime = props.defaultTime || []\n // const minDate_ = modifyWithTimeString(val.minDate, defaultTime[0])\n // const maxDate_ = modifyWithTimeString(val.maxDate, defaultTime[1])\n // todo\n const minDate_ = val.minDate\n const maxDate_ = val.maxDate\n if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n return\n }\n maxDate.value = maxDate_\n minDate.value = minDate_\n\n if (!close) return\n handleConfirm()\n }\n\n const isValidValue = (value) => {\n return (\n Array.isArray(value) &&\n value &&\n value[0] &&\n value[1] &&\n value[0].valueOf() <= value[1].valueOf()\n )\n }\n\n const handleConfirm = (visible = false) => {\n if (isValidValue([minDate.value, maxDate.value])) {\n ctx.emit('pick', [minDate.value, maxDate.value], visible)\n }\n }\n\n const onSelect = (selecting) => {\n rangeState.value.selecting = selecting\n if (!selecting) {\n rangeState.value.endDate = null\n }\n }\n\n const formatToString = (value) => {\n return value.map((_) => _.format(format))\n }\n\n const getDefaultValue = () => {\n let start: Dayjs\n if (Array.isArray(defaultValue)) {\n const left = dayjs(defaultValue[0])\n let right = dayjs(defaultValue[1])\n if (!props.unlinkPanels) {\n right = left.add(1, 'year')\n }\n return [left, right]\n } else if (defaultValue) {\n start = dayjs(defaultValue)\n } else {\n start = dayjs()\n }\n start = start.locale(lang.value)\n return [start, start.add(1, 'year')]\n }\n\n // pickerBase.hub.emit('SetPickerOption', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n const pickerBase = inject('EP_PICKER_BASE') as any\n const { shortcuts, disabledDate, format, defaultValue } = pickerBase.props\n\n watch(\n () => props.parsedValue,\n (newVal) => {\n if (newVal && newVal.length === 2) {\n minDate.value = newVal[0]\n maxDate.value = newVal[1]\n leftDate.value = minDate.value\n if (props.unlinkPanels && maxDate.value) {\n const minDateYear = minDate.value.year()\n const maxDateYear = maxDate.value.year()\n rightDate.value =\n minDateYear === maxDateYear\n ? maxDate.value.add(1, 'year')\n : maxDate.value\n } else {\n rightDate.value = leftDate.value.add(1, 'year')\n }\n } else {\n const defaultArr = getDefaultValue()\n leftDate.value = defaultArr[0]\n rightDate.value = defaultArr[1]\n }\n },\n { immediate: true }\n )\n\n return {\n shortcuts,\n disabledDate,\n onSelect,\n handleRangePick,\n rangeState,\n handleChangeRange,\n minDate,\n maxDate,\n enableYearArrow,\n leftLabel,\n rightLabel,\n leftNextYear,\n leftPrevYear,\n rightNextYear,\n rightPrevYear,\n t,\n leftDate,\n rightDate,\n hasShortcuts,\n handleShortcutClick,\n }\n },\n})\n</script>\n"],"names":["MonthTable"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"panel-month-range.vue_vue&type=template&id=2e377892&lang.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/panel-month-range.vue?vue&type=template&id=2e377892&lang.js"],"sourcesContent":["<template>\n <div\n class=\"el-picker-panel el-date-range-picker\"\n :class=\"[\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n },\n ]\"\n >\n <div class=\"el-picker-panel__body-wrapper\">\n <slot name=\"sidebar\" class=\"el-picker-panel__sidebar\"></slot>\n <div v-if=\"hasShortcuts\" class=\"el-picker-panel__sidebar\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n class=\"el-picker-panel__shortcut\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div class=\"el-picker-panel__body\">\n <div\n class=\"el-picker-panel__content el-date-range-picker__content is-left\"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"leftPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"leftNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <div>{{ leftLabel }}</div>\n </div>\n <month-table\n selection-mode=\"range\"\n :date=\"leftDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n <div\n class=\"\n el-picker-panel__content\n el-date-range-picker__content\n is-right\n \"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"rightPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"rightNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <div>{{ rightLabel }}</div>\n </div>\n <month-table\n selection-mode=\"range\"\n :date=\"rightDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, watch, inject } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport { DArrowLeft, DArrowRight } from '@element-plus/icons'\nimport MonthTable from './basic-month-table.vue'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport default defineComponent({\n components: { MonthTable, DArrowLeft, DArrowRight },\n\n props: {\n unlinkPanels: Boolean,\n parsedValue: {\n type: Array as PropType<Dayjs[]>,\n },\n },\n\n emits: ['pick', 'set-picker-option'],\n\n setup(props, ctx) {\n const { t, lang } = useLocaleInject()\n const leftDate = ref(dayjs().locale(lang.value))\n const rightDate = ref(dayjs().locale(lang.value).add(1, 'year'))\n\n const hasShortcuts = computed(() => !!shortcuts.length)\n\n const handleShortcutClick = (shortcut) => {\n const shortcutValues =\n typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value\n if (shortcutValues) {\n ctx.emit('pick', [\n dayjs(shortcutValues[0]).locale(lang.value),\n dayjs(shortcutValues[1]).locale(lang.value),\n ])\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick(ctx)\n }\n }\n\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, 'year')\n if (!props.unlinkPanels) {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n }\n\n const rightNextYear = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n rightDate.value = rightDate.value.add(1, 'year')\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const leftYear = computed(() => {\n return leftDate.value.year()\n })\n\n const rightYear = computed(() => {\n return rightDate.value.year() === leftDate.value.year()\n ? leftDate.value.year() + 1\n : rightDate.value.year()\n })\n\n const enableYearArrow = computed(() => {\n return props.unlinkPanels && rightYear.value > leftYear.value + 1\n })\n\n const minDate = ref(null)\n const maxDate = ref(null)\n\n const rangeState = ref({\n endDate: null,\n selecting: false,\n })\n\n const handleChangeRange = (val) => {\n rangeState.value = val\n }\n\n const handleRangePick = (val, close = true) => {\n // const defaultTime = props.defaultTime || []\n // const minDate_ = modifyWithTimeString(val.minDate, defaultTime[0])\n // const maxDate_ = modifyWithTimeString(val.maxDate, defaultTime[1])\n // todo\n const minDate_ = val.minDate\n const maxDate_ = val.maxDate\n if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n return\n }\n maxDate.value = maxDate_\n minDate.value = minDate_\n\n if (!close) return\n handleConfirm()\n }\n\n const isValidValue = (value) => {\n return (\n Array.isArray(value) &&\n value &&\n value[0] &&\n value[1] &&\n value[0].valueOf() <= value[1].valueOf()\n )\n }\n\n const handleConfirm = (visible = false) => {\n if (isValidValue([minDate.value, maxDate.value])) {\n ctx.emit('pick', [minDate.value, maxDate.value], visible)\n }\n }\n\n const onSelect = (selecting) => {\n rangeState.value.selecting = selecting\n if (!selecting) {\n rangeState.value.endDate = null\n }\n }\n\n const formatToString = (value) => {\n return value.map((_) => _.format(format))\n }\n\n const getDefaultValue = () => {\n let start: Dayjs\n if (Array.isArray(defaultValue)) {\n const left = dayjs(defaultValue[0])\n let right = dayjs(defaultValue[1])\n if (!props.unlinkPanels) {\n right = left.add(1, 'year')\n }\n return [left, right]\n } else if (defaultValue) {\n start = dayjs(defaultValue)\n } else {\n start = dayjs()\n }\n start = start.locale(lang.value)\n return [start, start.add(1, 'year')]\n }\n\n // pickerBase.hub.emit('SetPickerOption', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n const pickerBase = inject('EP_PICKER_BASE') as any\n const { shortcuts, disabledDate, format, defaultValue } = pickerBase.props\n\n watch(\n () => props.parsedValue,\n (newVal) => {\n if (newVal && newVal.length === 2) {\n minDate.value = newVal[0]\n maxDate.value = newVal[1]\n leftDate.value = minDate.value\n if (props.unlinkPanels && maxDate.value) {\n const minDateYear = minDate.value.year()\n const maxDateYear = maxDate.value.year()\n rightDate.value =\n minDateYear === maxDateYear\n ? maxDate.value.add(1, 'year')\n : maxDate.value\n } else {\n rightDate.value = leftDate.value.add(1, 'year')\n }\n } else {\n const defaultArr = getDefaultValue()\n leftDate.value = defaultArr[0]\n rightDate.value = defaultArr[1]\n }\n },\n { immediate: true }\n )\n\n return {\n shortcuts,\n disabledDate,\n onSelect,\n handleRangePick,\n rangeState,\n handleChangeRange,\n minDate,\n maxDate,\n enableYearArrow,\n leftLabel,\n rightLabel,\n leftNextYear,\n leftPrevYear,\n rightNextYear,\n rightPrevYear,\n t,\n leftDate,\n rightDate,\n hasShortcuts,\n handleShortcutClick,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot","_createVNode"],"mappings":";;qBASS,OAAM;;;EAEgB,OAAM;AAAA;;qBAW1B,OAAM;qBAEP,OAAM;qBAED,OAAM;;qBAiCX,OAAM;qBAMD,OAAM;;;;;;;sBAhEnBA;IACE,uBAAM;;;;;;IAONC,0BAAA;MACEC,qCAAqB,OAAM;AAAA,MAChB,kCAAXF,0BAAA;0BACEA,8CAC4B,iBAAlB,UAAU;8BADpBA;YAEG;AAAA,YACD,MAAK;AAAA,YACL,OAAM;AAAA,YACL,qBAAO,yBAAoB;AAAA,6BAEzB,SAAS;;;MAGhBC,0BAAA;QACEA,0BAAA;UAGEA,0BAAA;YACEA;cACE,MAAK;AAAA,cACL,OAAM;AAAA,cACL,gDAAO;;cAERE;iCAAS;kBAAAA,YAAgB;AAAA;AAAA;;;YAGnB,kCADRH;;cAEE,MAAK;AAAA,cACJ,WAAW;cACX,yCAAyB,wBACpB;AAAA,cACL,gDAAO;;cAERG;iCAAS;kBAAAA,YAAiB;AAAA;AAAA;;;YAE5BF,gDAAQ;;UAEVE;YACE,kBAAe;AAAA,YACd,MAAM;YACN,YAAU;YACV,YAAU;YACV,eAAa;YACb,iBAAe;YACf,eAAa;YACb,QAAM;YACN,UAAQ;;;QAGbF,0BAAA;UAOEA,0BAAA;YAEU,kCADRD;;cAEE,MAAK;AAAA,cACJ,WAAW;cACX,yCAAyB,wBACpB;AAAA,cACL,gDAAO;;cAERG;iCAAS;kBAAAA,YAAgB;AAAA;AAAA;;;YAE3BF;cACE,MAAK;AAAA,cACL,OAAM;AAAA,cACL,gDAAO;;cAERE;iCAAS;kBAAAA,YAAiB;AAAA;AAAA;;;YAE5BF,gDAAQ;;UAEVE;YACE,kBAAe;AAAA,YACd,MAAM;YACN,YAAU;YACV,YAAU;YACV,eAAa;YACb,iBAAe;YACf,eAAa;YACb,QAAM;YACN,UAAQ;;;;;;;;;;"}
1
+ {"version":3,"file":"panel-month-range.vue_vue&type=template&id=2e377892&lang.mjs","sources":["../../../../../../../packages/components/date-picker/src/date-picker-com/panel-month-range.vue?vue&type=template&id=2e377892&lang.js"],"sourcesContent":["<template>\n <div\n class=\"el-picker-panel el-date-range-picker\"\n :class=\"[\n {\n 'has-sidebar': $slots.sidebar || hasShortcuts,\n },\n ]\"\n >\n <div class=\"el-picker-panel__body-wrapper\">\n <slot name=\"sidebar\" class=\"el-picker-panel__sidebar\"></slot>\n <div v-if=\"hasShortcuts\" class=\"el-picker-panel__sidebar\">\n <button\n v-for=\"(shortcut, key) in shortcuts\"\n :key=\"key\"\n type=\"button\"\n class=\"el-picker-panel__shortcut\"\n @click=\"handleShortcutClick(shortcut)\"\n >\n {{ shortcut.text }}\n </button>\n </div>\n <div class=\"el-picker-panel__body\">\n <div\n class=\"el-picker-panel__content el-date-range-picker__content is-left\"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"leftPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"leftNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <div>{{ leftLabel }}</div>\n </div>\n <month-table\n selection-mode=\"range\"\n :date=\"leftDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n <div\n class=\"\n el-picker-panel__content\n el-date-range-picker__content\n is-right\n \"\n >\n <div class=\"el-date-range-picker__header\">\n <button\n v-if=\"unlinkPanels\"\n type=\"button\"\n :disabled=\"!enableYearArrow\"\n :class=\"{ 'is-disabled': !enableYearArrow }\"\n class=\"el-picker-panel__icon-btn d-arrow-left\"\n @click=\"rightPrevYear\"\n >\n <el-icon><d-arrow-left /></el-icon>\n </button>\n <button\n type=\"button\"\n class=\"el-picker-panel__icon-btn d-arrow-right\"\n @click=\"rightNextYear\"\n >\n <el-icon><d-arrow-right /></el-icon>\n </button>\n <div>{{ rightLabel }}</div>\n </div>\n <month-table\n selection-mode=\"range\"\n :date=\"rightDate\"\n :min-date=\"minDate\"\n :max-date=\"maxDate\"\n :range-state=\"rangeState\"\n :disabled-date=\"disabledDate\"\n @changerange=\"handleChangeRange\"\n @pick=\"handleRangePick\"\n @select=\"onSelect\"\n />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, watch, inject } from 'vue'\nimport dayjs from 'dayjs'\nimport ElIcon from '@element-plus/components/icon'\nimport { useLocaleInject } from '@element-plus/hooks'\nimport { DArrowLeft, DArrowRight } from '@element-plus/icons'\nimport MonthTable from './basic-month-table.vue'\n\nimport type { PropType } from 'vue'\nimport type { Dayjs } from 'dayjs'\n\nexport default defineComponent({\n components: { MonthTable, ElIcon, DArrowLeft, DArrowRight },\n\n props: {\n unlinkPanels: Boolean,\n parsedValue: {\n type: Array as PropType<Dayjs[]>,\n },\n },\n\n emits: ['pick', 'set-picker-option'],\n\n setup(props, ctx) {\n const { t, lang } = useLocaleInject()\n const leftDate = ref(dayjs().locale(lang.value))\n const rightDate = ref(dayjs().locale(lang.value).add(1, 'year'))\n\n const hasShortcuts = computed(() => !!shortcuts.length)\n\n const handleShortcutClick = (shortcut) => {\n const shortcutValues =\n typeof shortcut.value === 'function' ? shortcut.value() : shortcut.value\n if (shortcutValues) {\n ctx.emit('pick', [\n dayjs(shortcutValues[0]).locale(lang.value),\n dayjs(shortcutValues[1]).locale(lang.value),\n ])\n return\n }\n if (shortcut.onClick) {\n shortcut.onClick(ctx)\n }\n }\n\n const leftPrevYear = () => {\n leftDate.value = leftDate.value.subtract(1, 'year')\n if (!props.unlinkPanels) {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n }\n\n const rightNextYear = () => {\n if (!props.unlinkPanels) {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n rightDate.value = rightDate.value.add(1, 'year')\n }\n\n const leftNextYear = () => {\n leftDate.value = leftDate.value.add(1, 'year')\n }\n\n const rightPrevYear = () => {\n rightDate.value = rightDate.value.subtract(1, 'year')\n }\n const leftLabel = computed(() => {\n return `${leftDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const rightLabel = computed(() => {\n return `${rightDate.value.year()} ${t('el.datepicker.year')}`\n })\n\n const leftYear = computed(() => {\n return leftDate.value.year()\n })\n\n const rightYear = computed(() => {\n return rightDate.value.year() === leftDate.value.year()\n ? leftDate.value.year() + 1\n : rightDate.value.year()\n })\n\n const enableYearArrow = computed(() => {\n return props.unlinkPanels && rightYear.value > leftYear.value + 1\n })\n\n const minDate = ref(null)\n const maxDate = ref(null)\n\n const rangeState = ref({\n endDate: null,\n selecting: false,\n })\n\n const handleChangeRange = (val) => {\n rangeState.value = val\n }\n\n const handleRangePick = (val, close = true) => {\n // const defaultTime = props.defaultTime || []\n // const minDate_ = modifyWithTimeString(val.minDate, defaultTime[0])\n // const maxDate_ = modifyWithTimeString(val.maxDate, defaultTime[1])\n // todo\n const minDate_ = val.minDate\n const maxDate_ = val.maxDate\n if (maxDate.value === maxDate_ && minDate.value === minDate_) {\n return\n }\n maxDate.value = maxDate_\n minDate.value = minDate_\n\n if (!close) return\n handleConfirm()\n }\n\n const isValidValue = (value) => {\n return (\n Array.isArray(value) &&\n value &&\n value[0] &&\n value[1] &&\n value[0].valueOf() <= value[1].valueOf()\n )\n }\n\n const handleConfirm = (visible = false) => {\n if (isValidValue([minDate.value, maxDate.value])) {\n ctx.emit('pick', [minDate.value, maxDate.value], visible)\n }\n }\n\n const onSelect = (selecting) => {\n rangeState.value.selecting = selecting\n if (!selecting) {\n rangeState.value.endDate = null\n }\n }\n\n const formatToString = (value) => {\n return value.map((_) => _.format(format))\n }\n\n const getDefaultValue = () => {\n let start: Dayjs\n if (Array.isArray(defaultValue)) {\n const left = dayjs(defaultValue[0])\n let right = dayjs(defaultValue[1])\n if (!props.unlinkPanels) {\n right = left.add(1, 'year')\n }\n return [left, right]\n } else if (defaultValue) {\n start = dayjs(defaultValue)\n } else {\n start = dayjs()\n }\n start = start.locale(lang.value)\n return [start, start.add(1, 'year')]\n }\n\n // pickerBase.hub.emit('SetPickerOption', ['isValidValue', isValidValue])\n ctx.emit('set-picker-option', ['formatToString', formatToString])\n const pickerBase = inject('EP_PICKER_BASE') as any\n const { shortcuts, disabledDate, format, defaultValue } = pickerBase.props\n\n watch(\n () => props.parsedValue,\n (newVal) => {\n if (newVal && newVal.length === 2) {\n minDate.value = newVal[0]\n maxDate.value = newVal[1]\n leftDate.value = minDate.value\n if (props.unlinkPanels && maxDate.value) {\n const minDateYear = minDate.value.year()\n const maxDateYear = maxDate.value.year()\n rightDate.value =\n minDateYear === maxDateYear\n ? maxDate.value.add(1, 'year')\n : maxDate.value\n } else {\n rightDate.value = leftDate.value.add(1, 'year')\n }\n } else {\n const defaultArr = getDefaultValue()\n leftDate.value = defaultArr[0]\n rightDate.value = defaultArr[1]\n }\n },\n { immediate: true }\n )\n\n return {\n shortcuts,\n disabledDate,\n onSelect,\n handleRangePick,\n rangeState,\n handleChangeRange,\n minDate,\n maxDate,\n enableYearArrow,\n leftLabel,\n rightLabel,\n leftNextYear,\n leftPrevYear,\n rightNextYear,\n rightPrevYear,\n t,\n leftDate,\n rightDate,\n hasShortcuts,\n handleShortcutClick,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot","_createVNode"],"mappings":";;qBASS,OAAM;;;EAEgB,OAAM;AAAA;;qBAW1B,OAAM;qBAEP,OAAM;qBAED,OAAM;;qBAiCX,OAAM;qBAMD,OAAM;;;;;;;sBAhEnBA;IACE,uBAAM;;;;;;IAONC,0BAAA;MACEC,qCAAqB,OAAM;AAAA,MAChB,kCAAXF,0BAAA;0BACEA,8CAC4B,iBAAlB,UAAU;8BADpBA;YAEG;AAAA,YACD,MAAK;AAAA,YACL,OAAM;AAAA,YACL,qBAAO,yBAAoB;AAAA,6BAEzB,SAAS;;;MAGhBC,0BAAA;QACEA,0BAAA;UAGEA,0BAAA;YACEA;cACE,MAAK;AAAA,cACL,OAAM;AAAA,cACL,gDAAO;;cAERE;iCAAS;kBAAAA,YAAgB;AAAA;AAAA;;;YAGnB,kCADRH;;cAEE,MAAK;AAAA,cACJ,WAAW;cACX,yCAAyB,wBACpB;AAAA,cACL,gDAAO;;cAERG;iCAAS;kBAAAA,YAAiB;AAAA;AAAA;;;YAE5BF,gDAAQ;;UAEVE;YACE,kBAAe;AAAA,YACd,MAAM;YACN,YAAU;YACV,YAAU;YACV,eAAa;YACb,iBAAe;YACf,eAAa;YACb,QAAM;YACN,UAAQ;;;QAGbF,0BAAA;UAOEA,0BAAA;YAEU,kCADRD;;cAEE,MAAK;AAAA,cACJ,WAAW;cACX,yCAAyB,wBACpB;AAAA,cACL,gDAAO;;cAERG;iCAAS;kBAAAA,YAAgB;AAAA;AAAA;;;YAE3BF;cACE,MAAK;AAAA,cACL,OAAM;AAAA,cACL,gDAAO;;cAERE;iCAAS;kBAAAA,YAAiB;AAAA;AAAA;;;YAE5BF,gDAAQ;;UAEVE;YACE,kBAAe;AAAA,YACd,MAAM;YACN,YAAU;YACV,YAAU;YACV,eAAa;YACb,iBAAe;YACf,eAAa;YACb,QAAM;YACN,UAAQ;;;;;;;;;;"}
@@ -1,9 +1,11 @@
1
1
  import { defineComponent, getCurrentInstance } from 'vue';
2
+ import { ElIcon } from '../../icon/index.mjs';
2
3
  import { buildProps, definePropType } from '../../../utils/props.mjs';
3
4
  import { useDropdown } from './useDropdown.mjs';
4
5
 
5
6
  var script = defineComponent({
6
7
  name: "ElDropdownItem",
8
+ components: { ElIcon },
7
9
  props: buildProps({
8
10
  command: {
9
11
  type: [Object, String, Number],
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-item.vue_vue&type=script&lang.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown-item.vue"],"sourcesContent":["<template>\n <li\n class=\"el-dropdown-menu__item\"\n :class=\"{\n 'is-disabled': disabled,\n 'el-dropdown-menu__item--divided': divided,\n }\"\n :aria-disabled=\"disabled\"\n :tabindex=\"disabled ? null : -1\"\n @click=\"handleClick\"\n >\n <el-icon v-if=\"icon\"><component :is=\"icon\" /></el-icon>\n <slot></slot>\n </li>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, getCurrentInstance } from 'vue'\nimport { buildProps, definePropType } from '@element-plus/utils/props'\nimport { useDropdown } from './useDropdown'\nimport type { Component } from 'vue'\n\nexport default defineComponent({\n name: 'ElDropdownItem',\n props: buildProps({\n command: {\n type: [Object, String, Number],\n default: () => ({}),\n },\n disabled: Boolean,\n divided: Boolean,\n icon: {\n type: definePropType<string | Component>([String, Object]),\n },\n } as const),\n setup(props) {\n const { elDropdown } = useDropdown()\n const _instance = getCurrentInstance()\n\n function handleClick(e: UIEvent) {\n // if disabled don't collapse the drop-down list\n if (props.disabled) {\n e.stopImmediatePropagation()\n return\n }\n if (elDropdown.hideOnClick.value) {\n elDropdown.handleClick?.()\n }\n elDropdown.commandHandler?.(props.command, _instance, e)\n }\n\n return {\n handleClick,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;AAqBA,aAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO,WAAW;AAAA,IAChB,SAAS;AAAA,MACP,MAAM,CAAC,QAAQ,QAAQ;AAAA,MACvB,SAAS;AAAO;AAAA,IAElB,UAAU;AAAA,IACV,SAAS;AAAA,IACT,MAAM;AAAA,MACJ,MAAM,eAAmC,CAAC,QAAQ;AAAA;AAAA;AAAA,EAGtD,MAAM,OAAO;AACX,UAAM,EAAE,eAAe;AACvB,UAAM,YAAY;AAElB,yBAAqB,GAAY;;AAE/B,UAAI,MAAM,UAAU;AAClB,UAAE;AACF;AAAA;AAEF,UAAI,WAAW,YAAY,OAAO;AAChC,yBAAW,gBAAX;AAAA;AAEF,uBAAW,mBAAX,oCAA4B,MAAM,SAAS,WAAW;AAAA;AAGxD,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;;;;"}
1
+ {"version":3,"file":"dropdown-item.vue_vue&type=script&lang.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown-item.vue"],"sourcesContent":["<template>\n <li\n class=\"el-dropdown-menu__item\"\n :class=\"{\n 'is-disabled': disabled,\n 'el-dropdown-menu__item--divided': divided,\n }\"\n :aria-disabled=\"disabled\"\n :tabindex=\"disabled ? null : -1\"\n @click=\"handleClick\"\n >\n <el-icon v-if=\"icon\"><component :is=\"icon\" /></el-icon>\n <slot></slot>\n </li>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, getCurrentInstance } from 'vue'\nimport ElIcon from '@element-plus/components/icon'\nimport { buildProps, definePropType } from '@element-plus/utils/props'\nimport { useDropdown } from './useDropdown'\nimport type { Component } from 'vue'\n\nexport default defineComponent({\n name: 'ElDropdownItem',\n components: { ElIcon },\n props: buildProps({\n command: {\n type: [Object, String, Number],\n default: () => ({}),\n },\n disabled: Boolean,\n divided: Boolean,\n icon: {\n type: definePropType<string | Component>([String, Object]),\n },\n } as const),\n setup(props) {\n const { elDropdown } = useDropdown()\n const _instance = getCurrentInstance()\n\n function handleClick(e: UIEvent) {\n // if disabled don't collapse the drop-down list\n if (props.disabled) {\n e.stopImmediatePropagation()\n return\n }\n if (elDropdown.hideOnClick.value) {\n elDropdown.handleClick?.()\n }\n elDropdown.commandHandler?.(props.command, _instance, e)\n }\n\n return {\n handleClick,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;AAsBA,aAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY,EAAE;AAAA,EACd,OAAO,WAAW;AAAA,IAChB,SAAS;AAAA,MACP,MAAM,CAAC,QAAQ,QAAQ;AAAA,MACvB,SAAS;AAAO;AAAA,IAElB,UAAU;AAAA,IACV,SAAS;AAAA,IACT,MAAM;AAAA,MACJ,MAAM,eAAmC,CAAC,QAAQ;AAAA;AAAA;AAAA,EAGtD,MAAM,OAAO;AACX,UAAM,EAAE,eAAe;AACvB,UAAM,YAAY;AAElB,yBAAqB,GAAY;;AAE/B,UAAI,MAAM,UAAU;AAClB,UAAE;AACF;AAAA;AAEF,UAAI,WAAW,YAAY,OAAO;AAChC,yBAAW,gBAAX;AAAA;AAEF,uBAAW,mBAAX,oCAA4B,MAAM,SAAS,WAAW;AAAA;AAGxD,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown-item.vue_vue&type=template&id=396ed16b&lang.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown-item.vue?vue&type=template&id=396ed16b&lang.js"],"sourcesContent":["<template>\n <li\n class=\"el-dropdown-menu__item\"\n :class=\"{\n 'is-disabled': disabled,\n 'el-dropdown-menu__item--divided': divided,\n }\"\n :aria-disabled=\"disabled\"\n :tabindex=\"disabled ? null : -1\"\n @click=\"handleClick\"\n >\n <el-icon v-if=\"icon\"><component :is=\"icon\" /></el-icon>\n <slot></slot>\n </li>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, getCurrentInstance } from 'vue'\nimport { buildProps, definePropType } from '@element-plus/utils/props'\nimport { useDropdown } from './useDropdown'\nimport type { Component } from 'vue'\n\nexport default defineComponent({\n name: 'ElDropdownItem',\n props: buildProps({\n command: {\n type: [Object, String, Number],\n default: () => ({}),\n },\n disabled: Boolean,\n divided: Boolean,\n icon: {\n type: definePropType<string | Component>([String, Object]),\n },\n } as const),\n setup(props) {\n const { elDropdown } = useDropdown()\n const _instance = getCurrentInstance()\n\n function handleClick(e: UIEvent) {\n // if disabled don't collapse the drop-down list\n if (props.disabled) {\n e.stopImmediatePropagation()\n return\n }\n if (elDropdown.hideOnClick.value) {\n elDropdown.handleClick?.()\n }\n elDropdown.commandHandler?.(props.command, _instance, e)\n }\n\n return {\n handleClick,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createBlock","_resolveDynamicComponent","_renderSlot"],"mappings":";;;;;sBACEA;IACE,uBAAM;;;;IAKL,iBAAe;IACf,UAAU;IACV,gDAAO;;IAEO,0BAAfC;uBAAqB;sBAAAA,YAAwBC,wBAAR;;;;IACrCC;;;;;;"}
1
+ {"version":3,"file":"dropdown-item.vue_vue&type=template&id=396ed16b&lang.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown-item.vue?vue&type=template&id=396ed16b&lang.js"],"sourcesContent":["<template>\n <li\n class=\"el-dropdown-menu__item\"\n :class=\"{\n 'is-disabled': disabled,\n 'el-dropdown-menu__item--divided': divided,\n }\"\n :aria-disabled=\"disabled\"\n :tabindex=\"disabled ? null : -1\"\n @click=\"handleClick\"\n >\n <el-icon v-if=\"icon\"><component :is=\"icon\" /></el-icon>\n <slot></slot>\n </li>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, getCurrentInstance } from 'vue'\nimport ElIcon from '@element-plus/components/icon'\nimport { buildProps, definePropType } from '@element-plus/utils/props'\nimport { useDropdown } from './useDropdown'\nimport type { Component } from 'vue'\n\nexport default defineComponent({\n name: 'ElDropdownItem',\n components: { ElIcon },\n props: buildProps({\n command: {\n type: [Object, String, Number],\n default: () => ({}),\n },\n disabled: Boolean,\n divided: Boolean,\n icon: {\n type: definePropType<string | Component>([String, Object]),\n },\n } as const),\n setup(props) {\n const { elDropdown } = useDropdown()\n const _instance = getCurrentInstance()\n\n function handleClick(e: UIEvent) {\n // if disabled don't collapse the drop-down list\n if (props.disabled) {\n e.stopImmediatePropagation()\n return\n }\n if (elDropdown.hideOnClick.value) {\n elDropdown.handleClick?.()\n }\n elDropdown.commandHandler?.(props.command, _instance, e)\n }\n\n return {\n handleClick,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createBlock","_resolveDynamicComponent","_renderSlot"],"mappings":";;;;;sBACEA;IACE,uBAAM;;;;IAKL,iBAAe;IACf,UAAU;IACV,gDAAO;;IAEO,0BAAfC;uBAAqB;sBAAAA,YAAwBC,wBAAR;;;;IACrCC;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.vue_vue&type=script&lang.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown.vue"],"sourcesContent":["<template>\n <el-popper\n ref=\"triggerVnode\"\n v-model:visible=\"visible\"\n :placement=\"placement\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :effect=\"effect\"\n pure\n :manual-mode=\"true\"\n :trigger=\"[trigger]\"\n popper-class=\"el-dropdown__popper\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n >\n <template #default>\n <el-scrollbar\n ref=\"scrollbar\"\n tag=\"ul\"\n :wrap-style=\"wrapStyle\"\n view-class=\"el-dropdown__list\"\n >\n <slot name=\"dropdown\"></slot>\n </el-scrollbar>\n </template>\n <template #trigger>\n <div\n :class=\"[\n 'el-dropdown',\n dropdownSize ? 'el-dropdown--' + dropdownSize : '',\n ]\"\n >\n <slot v-if=\"!splitButton\" name=\"default\"></slot>\n <template v-else>\n <el-button-group>\n <el-button\n :size=\"dropdownSize\"\n :type=\"type\"\n @click=\"handlerMainButtonClick\"\n >\n <slot name=\"default\"></slot>\n </el-button>\n <el-button\n :size=\"dropdownSize\"\n :type=\"type\"\n class=\"el-dropdown__caret-button\"\n >\n <el-icon class=\"el-dropdown__icon\"><arrow-down /></el-icon>\n </el-button>\n </el-button-group>\n </template>\n </div>\n </template>\n </el-popper>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n provide,\n getCurrentInstance,\n ref,\n computed,\n watch,\n onMounted,\n} from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport ElPopper, { Effect } from '@element-plus/components/popper'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElIcon from '@element-plus/components/icon'\nimport { on, addClass, removeClass } from '@element-plus/utils/dom'\nimport { addUnit } from '@element-plus/utils/util'\nimport { ArrowDown } from '@element-plus/icons'\nimport { useDropdown } from './useDropdown'\n\nimport type { Placement } from '@element-plus/components/popper'\nimport type { PropType, ComponentPublicInstance } from 'vue'\nimport type { TriggerType } from '@element-plus/hooks/use-popper/use-target-events'\nimport type { ButtonType } from '@element-plus/components/button/src/types'\n\ntype Nullable<T> = null | T\nconst { ButtonGroup: ElButtonGroup } = ElButton\n\nexport default defineComponent({\n name: 'ElDropdown',\n components: {\n ElButton,\n ElButtonGroup,\n ElScrollbar,\n ElPopper,\n ElIcon,\n ArrowDown,\n },\n props: {\n trigger: {\n type: String as PropType<TriggerType | 'contextmenu'>,\n default: 'hover',\n },\n type: String as PropType<ButtonType>,\n size: {\n type: String,\n default: '',\n },\n splitButton: Boolean,\n hideOnClick: {\n type: Boolean,\n default: true,\n },\n placement: {\n type: String as PropType<Placement>,\n default: 'bottom',\n },\n showTimeout: {\n type: Number,\n default: 150,\n },\n hideTimeout: {\n type: Number,\n default: 150,\n },\n tabindex: {\n type: [Number, String],\n default: 0,\n },\n effect: {\n type: String as PropType<Effect>,\n default: Effect.LIGHT,\n },\n maxHeight: {\n type: [Number, String],\n default: '',\n },\n },\n emits: ['visible-change', 'click', 'command'],\n setup(props, { emit }) {\n const _instance = getCurrentInstance()\n const { ELEMENT } = useDropdown()\n\n const timeout = ref<Nullable<number>>(null)\n\n const visible = ref(false)\n const scrollbar = ref(null)\n const wrapStyle = computed(() => `max-height: ${addUnit(props.maxHeight)}`)\n\n watch(\n () => visible.value,\n (val) => {\n if (val) triggerElmFocus()\n if (!val) triggerElmBlur()\n emit('visible-change', val)\n }\n )\n\n const focusing = ref(false)\n watch(\n () => focusing.value,\n (val) => {\n const selfDefine = triggerElm.value\n if (selfDefine) {\n if (val) {\n addClass(selfDefine, 'focusing')\n } else {\n removeClass(selfDefine, 'focusing')\n }\n }\n }\n )\n\n const triggerVnode = ref<Nullable<ComponentPublicInstance>>(null)\n const triggerElm = computed<Nullable<HTMLButtonElement>>(() => {\n const _: any = (triggerVnode.value?.$refs.triggerRef as HTMLElement)\n ?.children[0]\n return !props.splitButton ? _ : _?.children?.[1]\n })\n\n function handleClick() {\n if (triggerElm.value?.disabled) return\n if (visible.value) {\n hide()\n } else {\n show()\n }\n }\n\n function show() {\n if (triggerElm.value?.disabled) return\n timeout.value && clearTimeout(timeout.value)\n timeout.value = window.setTimeout(\n () => {\n visible.value = true\n },\n ['click', 'contextmenu'].includes(props.trigger) ? 0 : props.showTimeout\n )\n }\n\n function hide() {\n if (triggerElm.value?.disabled) return\n removeTabindex()\n if (props.tabindex >= 0) {\n resetTabindex(triggerElm.value)\n }\n clearTimeout(timeout.value)\n timeout.value = window.setTimeout(\n () => {\n visible.value = false\n },\n ['click', 'contextmenu'].includes(props.trigger) ? 0 : props.hideTimeout\n )\n }\n\n function removeTabindex() {\n triggerElm.value?.setAttribute('tabindex', '-1')\n }\n\n function resetTabindex(ele) {\n removeTabindex()\n ele?.setAttribute('tabindex', '0')\n }\n\n function triggerElmFocus() {\n triggerElm.value?.focus?.()\n }\n\n function triggerElmBlur() {\n triggerElm.value?.blur?.()\n }\n\n const dropdownSize = computed(() => props.size || ELEMENT.size)\n\n function commandHandler(...args) {\n emit('command', ...args)\n }\n\n provide('elDropdown', {\n instance: _instance,\n dropdownSize,\n visible,\n handleClick,\n commandHandler,\n show,\n hide,\n trigger: computed(() => props.trigger),\n hideOnClick: computed(() => props.hideOnClick),\n triggerElm,\n })\n\n onMounted(() => {\n if (!props.splitButton) {\n on(triggerElm.value, 'focus', () => {\n focusing.value = true\n })\n on(triggerElm.value, 'blur', () => {\n focusing.value = false\n })\n on(triggerElm.value, 'click', () => {\n focusing.value = false\n })\n }\n if (props.trigger === 'hover') {\n on(triggerElm.value, 'mouseenter', show)\n on(triggerElm.value, 'mouseleave', hide)\n } else if (props.trigger === 'click') {\n on(triggerElm.value, 'click', handleClick)\n } else if (props.trigger === 'contextmenu') {\n on(triggerElm.value, 'contextmenu', (e) => {\n e.preventDefault()\n handleClick()\n })\n }\n\n Object.assign(_instance, {\n handleClick,\n hide,\n resetTabindex,\n })\n })\n\n const handlerMainButtonClick = (event) => {\n emit('click', event)\n hide()\n }\n\n return {\n visible,\n scrollbar,\n wrapStyle,\n dropdownSize,\n handlerMainButtonClick,\n triggerVnode,\n }\n },\n})\n</script>\n"],"names":["ElScrollbar","ElPopper"],"mappings":"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"}
1
+ {"version":3,"file":"dropdown.vue_vue&type=script&lang.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown.vue"],"sourcesContent":["<template>\n <div class=\"el-dropdown\">\n <el-popper\n ref=\"triggerVnode\"\n v-model:visible=\"visible\"\n :placement=\"placement\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :effect=\"effect\"\n pure\n :manual-mode=\"true\"\n :trigger=\"[trigger]\"\n popper-class=\"el-dropdown__popper\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n >\n <template #default>\n <el-scrollbar\n ref=\"scrollbar\"\n tag=\"ul\"\n :wrap-style=\"wrapStyle\"\n view-class=\"el-dropdown__list\"\n >\n <slot name=\"dropdown\"></slot>\n </el-scrollbar>\n </template>\n <template #trigger>\n <div :class=\"[dropdownSize ? 'el-dropdown--' + dropdownSize : '']\">\n <slot v-if=\"!splitButton\" name=\"default\"></slot>\n <template v-else>\n <el-button-group>\n <el-button\n :size=\"dropdownSize\"\n :type=\"type\"\n @click=\"handlerMainButtonClick\"\n >\n <slot name=\"default\"></slot>\n </el-button>\n <el-button\n :size=\"dropdownSize\"\n :type=\"type\"\n class=\"el-dropdown__caret-button\"\n >\n <el-icon class=\"el-dropdown__icon\"><arrow-down /></el-icon>\n </el-button>\n </el-button-group>\n </template>\n </div>\n </template>\n </el-popper>\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n provide,\n getCurrentInstance,\n ref,\n computed,\n watch,\n onMounted,\n} from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport ElPopper, { Effect } from '@element-plus/components/popper'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElIcon from '@element-plus/components/icon'\nimport { on, addClass, removeClass } from '@element-plus/utils/dom'\nimport { addUnit } from '@element-plus/utils/util'\nimport { ArrowDown } from '@element-plus/icons'\nimport { useDropdown } from './useDropdown'\n\nimport type { Placement } from '@element-plus/components/popper'\nimport type { PropType, ComponentPublicInstance } from 'vue'\nimport type { TriggerType } from '@element-plus/hooks/use-popper/use-target-events'\nimport type { ButtonType } from '@element-plus/components/button/src/types'\n\ntype Nullable<T> = null | T\nconst { ButtonGroup: ElButtonGroup } = ElButton\n\nexport default defineComponent({\n name: 'ElDropdown',\n components: {\n ElButton,\n ElButtonGroup,\n ElScrollbar,\n ElPopper,\n ElIcon,\n ArrowDown,\n },\n props: {\n trigger: {\n type: String as PropType<TriggerType | 'contextmenu'>,\n default: 'hover',\n },\n type: String as PropType<ButtonType>,\n size: {\n type: String,\n default: '',\n },\n splitButton: Boolean,\n hideOnClick: {\n type: Boolean,\n default: true,\n },\n placement: {\n type: String as PropType<Placement>,\n default: 'bottom',\n },\n showTimeout: {\n type: Number,\n default: 150,\n },\n hideTimeout: {\n type: Number,\n default: 150,\n },\n tabindex: {\n type: [Number, String],\n default: 0,\n },\n effect: {\n type: String as PropType<Effect>,\n default: Effect.LIGHT,\n },\n maxHeight: {\n type: [Number, String],\n default: '',\n },\n },\n emits: ['visible-change', 'click', 'command'],\n setup(props, { emit }) {\n const _instance = getCurrentInstance()\n const { ELEMENT } = useDropdown()\n\n const timeout = ref<Nullable<number>>(null)\n\n const visible = ref(false)\n const scrollbar = ref(null)\n const wrapStyle = computed(() => `max-height: ${addUnit(props.maxHeight)}`)\n\n watch(\n () => visible.value,\n (val) => {\n if (val) triggerElmFocus()\n if (!val) triggerElmBlur()\n emit('visible-change', val)\n }\n )\n\n const focusing = ref(false)\n watch(\n () => focusing.value,\n (val) => {\n const selfDefine = triggerElm.value\n if (selfDefine) {\n if (val) {\n addClass(selfDefine, 'focusing')\n } else {\n removeClass(selfDefine, 'focusing')\n }\n }\n }\n )\n\n const triggerVnode = ref<Nullable<ComponentPublicInstance>>(null)\n const triggerElm = computed<Nullable<HTMLButtonElement>>(() => {\n const _: any = (triggerVnode.value?.$refs.triggerRef as HTMLElement)\n ?.children[0]\n return !props.splitButton ? _ : _?.children?.[1]\n })\n\n function handleClick() {\n if (triggerElm.value?.disabled) return\n if (visible.value) {\n hide()\n } else {\n show()\n }\n }\n\n function show() {\n if (triggerElm.value?.disabled) return\n timeout.value && clearTimeout(timeout.value)\n timeout.value = window.setTimeout(\n () => {\n visible.value = true\n },\n ['click', 'contextmenu'].includes(props.trigger) ? 0 : props.showTimeout\n )\n }\n\n function hide() {\n if (triggerElm.value?.disabled) return\n removeTabindex()\n if (props.tabindex >= 0) {\n resetTabindex(triggerElm.value)\n }\n clearTimeout(timeout.value)\n timeout.value = window.setTimeout(\n () => {\n visible.value = false\n },\n ['click', 'contextmenu'].includes(props.trigger) ? 0 : props.hideTimeout\n )\n }\n\n function removeTabindex() {\n triggerElm.value?.setAttribute('tabindex', '-1')\n }\n\n function resetTabindex(ele) {\n removeTabindex()\n ele?.setAttribute('tabindex', '0')\n }\n\n function triggerElmFocus() {\n triggerElm.value?.focus?.()\n }\n\n function triggerElmBlur() {\n triggerElm.value?.blur?.()\n }\n\n const dropdownSize = computed(() => props.size || ELEMENT.size)\n\n function commandHandler(...args) {\n emit('command', ...args)\n }\n\n provide('elDropdown', {\n instance: _instance,\n dropdownSize,\n visible,\n handleClick,\n commandHandler,\n show,\n hide,\n trigger: computed(() => props.trigger),\n hideOnClick: computed(() => props.hideOnClick),\n triggerElm,\n })\n\n onMounted(() => {\n if (!props.splitButton) {\n on(triggerElm.value, 'focus', () => {\n focusing.value = true\n })\n on(triggerElm.value, 'blur', () => {\n focusing.value = false\n })\n on(triggerElm.value, 'click', () => {\n focusing.value = false\n })\n }\n if (props.trigger === 'hover') {\n on(triggerElm.value, 'mouseenter', show)\n on(triggerElm.value, 'mouseleave', hide)\n } else if (props.trigger === 'click') {\n on(triggerElm.value, 'click', handleClick)\n } else if (props.trigger === 'contextmenu') {\n on(triggerElm.value, 'contextmenu', (e) => {\n e.preventDefault()\n handleClick()\n })\n }\n\n Object.assign(_instance, {\n handleClick,\n hide,\n resetTabindex,\n })\n })\n\n const handlerMainButtonClick = (event) => {\n emit('click', event)\n hide()\n }\n\n return {\n visible,\n scrollbar,\n wrapStyle,\n dropdownSize,\n handlerMainButtonClick,\n triggerVnode,\n }\n },\n})\n</script>\n"],"names":["ElScrollbar","ElPopper"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { resolveComponent, openBlock, createBlock, withCtx, createVNode, renderSlot, createElementVNode, normalizeClass } from 'vue';
1
+ import { resolveComponent, openBlock, createElementBlock, createVNode, withCtx, renderSlot, createElementVNode, normalizeClass, createBlock } from 'vue';
2
2
 
3
+ const _hoisted_1 = { class: "el-dropdown" };
3
4
  function render(_ctx, _cache, $props, $setup, $data, $options) {
4
5
  const _component_el_scrollbar = resolveComponent("el-scrollbar");
5
6
  const _component_el_button = resolveComponent("el-button");
@@ -7,76 +8,75 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
7
8
  const _component_el_icon = resolveComponent("el-icon");
8
9
  const _component_el_button_group = resolveComponent("el-button-group");
9
10
  const _component_el_popper = resolveComponent("el-popper");
10
- return openBlock(), createBlock(_component_el_popper, {
11
- ref: "triggerVnode",
12
- visible: _ctx.visible,
13
- "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => _ctx.visible = $event),
14
- placement: _ctx.placement,
15
- "fallback-placements": ["bottom", "top", "right", "left"],
16
- effect: _ctx.effect,
17
- pure: "",
18
- "manual-mode": true,
19
- trigger: [_ctx.trigger],
20
- "popper-class": "el-dropdown__popper",
21
- "append-to-body": "",
22
- transition: "el-zoom-in-top",
23
- "stop-popper-mouse-event": false,
24
- "gpu-acceleration": false
25
- }, {
26
- default: withCtx(() => [
27
- createVNode(_component_el_scrollbar, {
28
- ref: "scrollbar",
29
- tag: "ul",
30
- "wrap-style": _ctx.wrapStyle,
31
- "view-class": "el-dropdown__list"
32
- }, {
33
- default: withCtx(() => [
34
- renderSlot(_ctx.$slots, "dropdown")
35
- ]),
36
- _: 3
37
- }, 8, ["wrap-style"])
38
- ]),
39
- trigger: withCtx(() => [
40
- createElementVNode("div", {
41
- class: normalizeClass([
42
- "el-dropdown",
43
- _ctx.dropdownSize ? "el-dropdown--" + _ctx.dropdownSize : ""
44
- ])
45
- }, [
46
- !_ctx.splitButton ? renderSlot(_ctx.$slots, "default", { key: 0 }) : (openBlock(), createBlock(_component_el_button_group, { key: 1 }, {
11
+ return openBlock(), createElementBlock("div", _hoisted_1, [
12
+ createVNode(_component_el_popper, {
13
+ ref: "triggerVnode",
14
+ visible: _ctx.visible,
15
+ "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => _ctx.visible = $event),
16
+ placement: _ctx.placement,
17
+ "fallback-placements": ["bottom", "top", "right", "left"],
18
+ effect: _ctx.effect,
19
+ pure: "",
20
+ "manual-mode": true,
21
+ trigger: [_ctx.trigger],
22
+ "popper-class": "el-dropdown__popper",
23
+ "append-to-body": "",
24
+ transition: "el-zoom-in-top",
25
+ "stop-popper-mouse-event": false,
26
+ "gpu-acceleration": false
27
+ }, {
28
+ default: withCtx(() => [
29
+ createVNode(_component_el_scrollbar, {
30
+ ref: "scrollbar",
31
+ tag: "ul",
32
+ "wrap-style": _ctx.wrapStyle,
33
+ "view-class": "el-dropdown__list"
34
+ }, {
47
35
  default: withCtx(() => [
48
- createVNode(_component_el_button, {
49
- size: _ctx.dropdownSize,
50
- type: _ctx.type,
51
- onClick: _ctx.handlerMainButtonClick
52
- }, {
53
- default: withCtx(() => [
54
- renderSlot(_ctx.$slots, "default")
55
- ]),
56
- _: 3
57
- }, 8, ["size", "type", "onClick"]),
58
- createVNode(_component_el_button, {
59
- size: _ctx.dropdownSize,
60
- type: _ctx.type,
61
- class: "el-dropdown__caret-button"
62
- }, {
63
- default: withCtx(() => [
64
- createVNode(_component_el_icon, { class: "el-dropdown__icon" }, {
65
- default: withCtx(() => [
66
- createVNode(_component_arrow_down)
67
- ]),
68
- _: 1
69
- })
70
- ]),
71
- _: 1
72
- }, 8, ["size", "type"])
36
+ renderSlot(_ctx.$slots, "dropdown")
73
37
  ]),
74
38
  _: 3
75
- }))
76
- ], 2)
77
- ]),
78
- _: 3
79
- }, 8, ["visible", "placement", "effect", "trigger"]);
39
+ }, 8, ["wrap-style"])
40
+ ]),
41
+ trigger: withCtx(() => [
42
+ createElementVNode("div", {
43
+ class: normalizeClass([_ctx.dropdownSize ? "el-dropdown--" + _ctx.dropdownSize : ""])
44
+ }, [
45
+ !_ctx.splitButton ? renderSlot(_ctx.$slots, "default", { key: 0 }) : (openBlock(), createBlock(_component_el_button_group, { key: 1 }, {
46
+ default: withCtx(() => [
47
+ createVNode(_component_el_button, {
48
+ size: _ctx.dropdownSize,
49
+ type: _ctx.type,
50
+ onClick: _ctx.handlerMainButtonClick
51
+ }, {
52
+ default: withCtx(() => [
53
+ renderSlot(_ctx.$slots, "default")
54
+ ]),
55
+ _: 3
56
+ }, 8, ["size", "type", "onClick"]),
57
+ createVNode(_component_el_button, {
58
+ size: _ctx.dropdownSize,
59
+ type: _ctx.type,
60
+ class: "el-dropdown__caret-button"
61
+ }, {
62
+ default: withCtx(() => [
63
+ createVNode(_component_el_icon, { class: "el-dropdown__icon" }, {
64
+ default: withCtx(() => [
65
+ createVNode(_component_arrow_down)
66
+ ]),
67
+ _: 1
68
+ })
69
+ ]),
70
+ _: 1
71
+ }, 8, ["size", "type"])
72
+ ]),
73
+ _: 3
74
+ }))
75
+ ], 2)
76
+ ]),
77
+ _: 3
78
+ }, 8, ["visible", "placement", "effect", "trigger"])
79
+ ]);
80
80
  }
81
81
 
82
82
  export { render };
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.vue_vue&type=template&id=3ed790a5&lang.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown.vue?vue&type=template&id=3ed790a5&lang.js"],"sourcesContent":["<template>\n <el-popper\n ref=\"triggerVnode\"\n v-model:visible=\"visible\"\n :placement=\"placement\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :effect=\"effect\"\n pure\n :manual-mode=\"true\"\n :trigger=\"[trigger]\"\n popper-class=\"el-dropdown__popper\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n >\n <template #default>\n <el-scrollbar\n ref=\"scrollbar\"\n tag=\"ul\"\n :wrap-style=\"wrapStyle\"\n view-class=\"el-dropdown__list\"\n >\n <slot name=\"dropdown\"></slot>\n </el-scrollbar>\n </template>\n <template #trigger>\n <div\n :class=\"[\n 'el-dropdown',\n dropdownSize ? 'el-dropdown--' + dropdownSize : '',\n ]\"\n >\n <slot v-if=\"!splitButton\" name=\"default\"></slot>\n <template v-else>\n <el-button-group>\n <el-button\n :size=\"dropdownSize\"\n :type=\"type\"\n @click=\"handlerMainButtonClick\"\n >\n <slot name=\"default\"></slot>\n </el-button>\n <el-button\n :size=\"dropdownSize\"\n :type=\"type\"\n class=\"el-dropdown__caret-button\"\n >\n <el-icon class=\"el-dropdown__icon\"><arrow-down /></el-icon>\n </el-button>\n </el-button-group>\n </template>\n </div>\n </template>\n </el-popper>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n provide,\n getCurrentInstance,\n ref,\n computed,\n watch,\n onMounted,\n} from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport ElPopper, { Effect } from '@element-plus/components/popper'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElIcon from '@element-plus/components/icon'\nimport { on, addClass, removeClass } from '@element-plus/utils/dom'\nimport { addUnit } from '@element-plus/utils/util'\nimport { ArrowDown } from '@element-plus/icons'\nimport { useDropdown } from './useDropdown'\n\nimport type { Placement } from '@element-plus/components/popper'\nimport type { PropType, ComponentPublicInstance } from 'vue'\nimport type { TriggerType } from '@element-plus/hooks/use-popper/use-target-events'\nimport type { ButtonType } from '@element-plus/components/button/src/types'\n\ntype Nullable<T> = null | T\nconst { ButtonGroup: ElButtonGroup } = ElButton\n\nexport default defineComponent({\n name: 'ElDropdown',\n components: {\n ElButton,\n ElButtonGroup,\n ElScrollbar,\n ElPopper,\n ElIcon,\n ArrowDown,\n },\n props: {\n trigger: {\n type: String as PropType<TriggerType | 'contextmenu'>,\n default: 'hover',\n },\n type: String as PropType<ButtonType>,\n size: {\n type: String,\n default: '',\n },\n splitButton: Boolean,\n hideOnClick: {\n type: Boolean,\n default: true,\n },\n placement: {\n type: String as PropType<Placement>,\n default: 'bottom',\n },\n showTimeout: {\n type: Number,\n default: 150,\n },\n hideTimeout: {\n type: Number,\n default: 150,\n },\n tabindex: {\n type: [Number, String],\n default: 0,\n },\n effect: {\n type: String as PropType<Effect>,\n default: Effect.LIGHT,\n },\n maxHeight: {\n type: [Number, String],\n default: '',\n },\n },\n emits: ['visible-change', 'click', 'command'],\n setup(props, { emit }) {\n const _instance = getCurrentInstance()\n const { ELEMENT } = useDropdown()\n\n const timeout = ref<Nullable<number>>(null)\n\n const visible = ref(false)\n const scrollbar = ref(null)\n const wrapStyle = computed(() => `max-height: ${addUnit(props.maxHeight)}`)\n\n watch(\n () => visible.value,\n (val) => {\n if (val) triggerElmFocus()\n if (!val) triggerElmBlur()\n emit('visible-change', val)\n }\n )\n\n const focusing = ref(false)\n watch(\n () => focusing.value,\n (val) => {\n const selfDefine = triggerElm.value\n if (selfDefine) {\n if (val) {\n addClass(selfDefine, 'focusing')\n } else {\n removeClass(selfDefine, 'focusing')\n }\n }\n }\n )\n\n const triggerVnode = ref<Nullable<ComponentPublicInstance>>(null)\n const triggerElm = computed<Nullable<HTMLButtonElement>>(() => {\n const _: any = (triggerVnode.value?.$refs.triggerRef as HTMLElement)\n ?.children[0]\n return !props.splitButton ? _ : _?.children?.[1]\n })\n\n function handleClick() {\n if (triggerElm.value?.disabled) return\n if (visible.value) {\n hide()\n } else {\n show()\n }\n }\n\n function show() {\n if (triggerElm.value?.disabled) return\n timeout.value && clearTimeout(timeout.value)\n timeout.value = window.setTimeout(\n () => {\n visible.value = true\n },\n ['click', 'contextmenu'].includes(props.trigger) ? 0 : props.showTimeout\n )\n }\n\n function hide() {\n if (triggerElm.value?.disabled) return\n removeTabindex()\n if (props.tabindex >= 0) {\n resetTabindex(triggerElm.value)\n }\n clearTimeout(timeout.value)\n timeout.value = window.setTimeout(\n () => {\n visible.value = false\n },\n ['click', 'contextmenu'].includes(props.trigger) ? 0 : props.hideTimeout\n )\n }\n\n function removeTabindex() {\n triggerElm.value?.setAttribute('tabindex', '-1')\n }\n\n function resetTabindex(ele) {\n removeTabindex()\n ele?.setAttribute('tabindex', '0')\n }\n\n function triggerElmFocus() {\n triggerElm.value?.focus?.()\n }\n\n function triggerElmBlur() {\n triggerElm.value?.blur?.()\n }\n\n const dropdownSize = computed(() => props.size || ELEMENT.size)\n\n function commandHandler(...args) {\n emit('command', ...args)\n }\n\n provide('elDropdown', {\n instance: _instance,\n dropdownSize,\n visible,\n handleClick,\n commandHandler,\n show,\n hide,\n trigger: computed(() => props.trigger),\n hideOnClick: computed(() => props.hideOnClick),\n triggerElm,\n })\n\n onMounted(() => {\n if (!props.splitButton) {\n on(triggerElm.value, 'focus', () => {\n focusing.value = true\n })\n on(triggerElm.value, 'blur', () => {\n focusing.value = false\n })\n on(triggerElm.value, 'click', () => {\n focusing.value = false\n })\n }\n if (props.trigger === 'hover') {\n on(triggerElm.value, 'mouseenter', show)\n on(triggerElm.value, 'mouseleave', hide)\n } else if (props.trigger === 'click') {\n on(triggerElm.value, 'click', handleClick)\n } else if (props.trigger === 'contextmenu') {\n on(triggerElm.value, 'contextmenu', (e) => {\n e.preventDefault()\n handleClick()\n })\n }\n\n Object.assign(_instance, {\n handleClick,\n hide,\n resetTabindex,\n })\n })\n\n const handlerMainButtonClick = (event) => {\n emit('click', event)\n hide()\n }\n\n return {\n visible,\n scrollbar,\n wrapStyle,\n dropdownSize,\n handlerMainButtonClick,\n triggerVnode,\n }\n },\n})\n</script>\n"],"names":["_createBlock","_createVNode","_renderSlot","_createElementVNode"],"mappings":";;;;;;;;;sBACEA;IACE,KAAI;AAAA,IACI,SAAS;8DAAA;IAChB,WAAW;IACX,uBAAqB;IACrB,QAAQ;IACT,MAAA;AAAA,IACC,eAAa;AAAA,IACb,UAAU;IACX,gBAAa;AAAA,IACb,kBAAA;AAAA,IACA,YAAW;AAAA,IACV,2BAAyB;AAAA,IACzB,oBAAkB;AAAA;IAER,iBACT;MAAAC;QACE,KAAI;AAAA,QACJ,KAAI;AAAA,QACH,cAAY;QACb,cAAW;AAAA;yBAEX;UAAAC;;;;;IAGO,iBACT;MAAAC;QACG;;;;;SAKY,mBAAbD,+DAEEF;2BACE;YAAAC;cACG,MAAM;cACN,MAAM;cACN,SAAO;;+BAER;gBAAAC;;;;YAEFD;cACG,MAAM;cACN,MAAM;cACP,OAAM;AAAA;+BAEN;gBAAAA,kCAAS,OAAM;mCAAoB;oBAAAA,YAAc;AAAA;AAAA;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"dropdown.vue_vue&type=template&id=3ed790a5&lang.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown.vue?vue&type=template&id=3ed790a5&lang.js"],"sourcesContent":["<template>\n <div class=\"el-dropdown\">\n <el-popper\n ref=\"triggerVnode\"\n v-model:visible=\"visible\"\n :placement=\"placement\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :effect=\"effect\"\n pure\n :manual-mode=\"true\"\n :trigger=\"[trigger]\"\n popper-class=\"el-dropdown__popper\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :stop-popper-mouse-event=\"false\"\n :gpu-acceleration=\"false\"\n >\n <template #default>\n <el-scrollbar\n ref=\"scrollbar\"\n tag=\"ul\"\n :wrap-style=\"wrapStyle\"\n view-class=\"el-dropdown__list\"\n >\n <slot name=\"dropdown\"></slot>\n </el-scrollbar>\n </template>\n <template #trigger>\n <div :class=\"[dropdownSize ? 'el-dropdown--' + dropdownSize : '']\">\n <slot v-if=\"!splitButton\" name=\"default\"></slot>\n <template v-else>\n <el-button-group>\n <el-button\n :size=\"dropdownSize\"\n :type=\"type\"\n @click=\"handlerMainButtonClick\"\n >\n <slot name=\"default\"></slot>\n </el-button>\n <el-button\n :size=\"dropdownSize\"\n :type=\"type\"\n class=\"el-dropdown__caret-button\"\n >\n <el-icon class=\"el-dropdown__icon\"><arrow-down /></el-icon>\n </el-button>\n </el-button-group>\n </template>\n </div>\n </template>\n </el-popper>\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n provide,\n getCurrentInstance,\n ref,\n computed,\n watch,\n onMounted,\n} from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport ElPopper, { Effect } from '@element-plus/components/popper'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElIcon from '@element-plus/components/icon'\nimport { on, addClass, removeClass } from '@element-plus/utils/dom'\nimport { addUnit } from '@element-plus/utils/util'\nimport { ArrowDown } from '@element-plus/icons'\nimport { useDropdown } from './useDropdown'\n\nimport type { Placement } from '@element-plus/components/popper'\nimport type { PropType, ComponentPublicInstance } from 'vue'\nimport type { TriggerType } from '@element-plus/hooks/use-popper/use-target-events'\nimport type { ButtonType } from '@element-plus/components/button/src/types'\n\ntype Nullable<T> = null | T\nconst { ButtonGroup: ElButtonGroup } = ElButton\n\nexport default defineComponent({\n name: 'ElDropdown',\n components: {\n ElButton,\n ElButtonGroup,\n ElScrollbar,\n ElPopper,\n ElIcon,\n ArrowDown,\n },\n props: {\n trigger: {\n type: String as PropType<TriggerType | 'contextmenu'>,\n default: 'hover',\n },\n type: String as PropType<ButtonType>,\n size: {\n type: String,\n default: '',\n },\n splitButton: Boolean,\n hideOnClick: {\n type: Boolean,\n default: true,\n },\n placement: {\n type: String as PropType<Placement>,\n default: 'bottom',\n },\n showTimeout: {\n type: Number,\n default: 150,\n },\n hideTimeout: {\n type: Number,\n default: 150,\n },\n tabindex: {\n type: [Number, String],\n default: 0,\n },\n effect: {\n type: String as PropType<Effect>,\n default: Effect.LIGHT,\n },\n maxHeight: {\n type: [Number, String],\n default: '',\n },\n },\n emits: ['visible-change', 'click', 'command'],\n setup(props, { emit }) {\n const _instance = getCurrentInstance()\n const { ELEMENT } = useDropdown()\n\n const timeout = ref<Nullable<number>>(null)\n\n const visible = ref(false)\n const scrollbar = ref(null)\n const wrapStyle = computed(() => `max-height: ${addUnit(props.maxHeight)}`)\n\n watch(\n () => visible.value,\n (val) => {\n if (val) triggerElmFocus()\n if (!val) triggerElmBlur()\n emit('visible-change', val)\n }\n )\n\n const focusing = ref(false)\n watch(\n () => focusing.value,\n (val) => {\n const selfDefine = triggerElm.value\n if (selfDefine) {\n if (val) {\n addClass(selfDefine, 'focusing')\n } else {\n removeClass(selfDefine, 'focusing')\n }\n }\n }\n )\n\n const triggerVnode = ref<Nullable<ComponentPublicInstance>>(null)\n const triggerElm = computed<Nullable<HTMLButtonElement>>(() => {\n const _: any = (triggerVnode.value?.$refs.triggerRef as HTMLElement)\n ?.children[0]\n return !props.splitButton ? _ : _?.children?.[1]\n })\n\n function handleClick() {\n if (triggerElm.value?.disabled) return\n if (visible.value) {\n hide()\n } else {\n show()\n }\n }\n\n function show() {\n if (triggerElm.value?.disabled) return\n timeout.value && clearTimeout(timeout.value)\n timeout.value = window.setTimeout(\n () => {\n visible.value = true\n },\n ['click', 'contextmenu'].includes(props.trigger) ? 0 : props.showTimeout\n )\n }\n\n function hide() {\n if (triggerElm.value?.disabled) return\n removeTabindex()\n if (props.tabindex >= 0) {\n resetTabindex(triggerElm.value)\n }\n clearTimeout(timeout.value)\n timeout.value = window.setTimeout(\n () => {\n visible.value = false\n },\n ['click', 'contextmenu'].includes(props.trigger) ? 0 : props.hideTimeout\n )\n }\n\n function removeTabindex() {\n triggerElm.value?.setAttribute('tabindex', '-1')\n }\n\n function resetTabindex(ele) {\n removeTabindex()\n ele?.setAttribute('tabindex', '0')\n }\n\n function triggerElmFocus() {\n triggerElm.value?.focus?.()\n }\n\n function triggerElmBlur() {\n triggerElm.value?.blur?.()\n }\n\n const dropdownSize = computed(() => props.size || ELEMENT.size)\n\n function commandHandler(...args) {\n emit('command', ...args)\n }\n\n provide('elDropdown', {\n instance: _instance,\n dropdownSize,\n visible,\n handleClick,\n commandHandler,\n show,\n hide,\n trigger: computed(() => props.trigger),\n hideOnClick: computed(() => props.hideOnClick),\n triggerElm,\n })\n\n onMounted(() => {\n if (!props.splitButton) {\n on(triggerElm.value, 'focus', () => {\n focusing.value = true\n })\n on(triggerElm.value, 'blur', () => {\n focusing.value = false\n })\n on(triggerElm.value, 'click', () => {\n focusing.value = false\n })\n }\n if (props.trigger === 'hover') {\n on(triggerElm.value, 'mouseenter', show)\n on(triggerElm.value, 'mouseleave', hide)\n } else if (props.trigger === 'click') {\n on(triggerElm.value, 'click', handleClick)\n } else if (props.trigger === 'contextmenu') {\n on(triggerElm.value, 'contextmenu', (e) => {\n e.preventDefault()\n handleClick()\n })\n }\n\n Object.assign(_instance, {\n handleClick,\n hide,\n resetTabindex,\n })\n })\n\n const handlerMainButtonClick = (event) => {\n emit('click', event)\n hide()\n }\n\n return {\n visible,\n scrollbar,\n wrapStyle,\n dropdownSize,\n handlerMainButtonClick,\n triggerVnode,\n }\n },\n})\n</script>\n"],"names":["_createElementBlock","_createVNode","_renderSlot","_createElementVNode","_createBlock"],"mappings":";;qBACO,OAAM;;;;;;;;sBAAXA,0BAAA;IACEC;MACE,KAAI;AAAA,MACI,SAAS;gEAAA;MAChB,WAAW;MACX,uBAAqB;MACrB,QAAQ;MACT,MAAA;AAAA,MACC,eAAa;AAAA,MACb,UAAU;MACX,gBAAa;AAAA,MACb,kBAAA;AAAA,MACA,YAAW;AAAA,MACV,2BAAyB;AAAA,MACzB,oBAAkB;AAAA;MAER,iBACT;QAAAA;UACE,KAAI;AAAA,UACJ,KAAI;AAAA,UACH,cAAY;UACb,cAAW;AAAA;2BAEX;YAAAC;;;;;MAGO,iBACT;QAAAC;UAAM,uBAAQ,sCAAiC;;WAChC,mBAAbD,+DAEEE;6BACE;cAAAH;gBACG,MAAM;gBACN,MAAM;gBACN,SAAO;;iCAER;kBAAAC;;;;cAEFD;gBACG,MAAM;gBACN,MAAM;gBACP,OAAM;AAAA;iCAEN;kBAAAA,kCAAS,OAAM;qCAAoB;sBAAAA,YAAc;AAAA;AAAA;;;;;;;;;;;;;;;;;"}