@element-plus/nightly 0.0.20220110 → 0.0.20220111

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 (236) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.css +1 -1
  3. package/dist/index.full.js +361 -425
  4. package/dist/index.full.min.js +8 -8
  5. package/dist/index.full.min.js.map +1 -1
  6. package/dist/index.full.min.mjs +8 -8
  7. package/dist/index.full.min.mjs.map +1 -1
  8. package/dist/index.full.mjs +365 -430
  9. package/es/components/calendar/src/calendar.vue_vue_type_script_lang.mjs +4 -4
  10. package/es/components/calendar/src/calendar.vue_vue_type_script_lang.mjs.map +1 -1
  11. package/es/components/calendar/src/calendar.vue_vue_type_template_id_76705c76_lang.mjs.map +1 -1
  12. package/es/components/cascader/index.d.ts +18 -2
  13. package/es/components/cascader/src/index.vue.d.ts +9 -1
  14. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs +6 -0
  15. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs.map +1 -1
  16. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.mjs.map +1 -1
  17. package/es/components/dropdown/index.d.ts +11 -1
  18. package/es/components/dropdown/src/dropdown-item-impl.vue_vue_type_script_lang.mjs.map +1 -1
  19. package/es/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.mjs +32 -26
  20. package/es/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.mjs.map +1 -1
  21. package/es/components/dropdown/src/dropdown-menu.vue.d.ts +1 -0
  22. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.mjs +5 -7
  23. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.mjs.map +1 -1
  24. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.mjs +1 -1
  25. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.mjs.map +1 -1
  26. package/es/components/dropdown/src/dropdown.vue.d.ts +9 -1
  27. package/es/components/index.mjs +1 -0
  28. package/es/components/index.mjs.map +1 -1
  29. package/es/components/popover/index.d.ts +18 -2
  30. package/es/components/popover/src/index.vue.d.ts +9 -1
  31. package/es/components/popper/src/content.vue_vue_type_script_lang.mjs +2 -1
  32. package/es/components/popper/src/content.vue_vue_type_script_lang.mjs.map +1 -1
  33. package/es/components/popper/src/content.vue_vue_type_template_id_611b76f0_lang.mjs.map +1 -1
  34. package/es/components/popper/src/trigger.vue.d.ts +3 -3
  35. package/es/components/popper/src/trigger.vue_vue_type_script_lang.mjs +2 -2
  36. package/es/components/popper/src/trigger.vue_vue_type_script_lang.mjs.map +1 -1
  37. package/es/components/popper/src/trigger.vue_vue_type_template_id_4fb6e0af_lang.mjs.map +1 -1
  38. package/es/components/select/index.d.ts +9 -1
  39. package/es/components/select/src/select.vue.d.ts +9 -1
  40. package/es/components/select/src/useSelect.d.ts +9 -1
  41. package/es/components/select-v2/index.d.ts +18 -2
  42. package/es/components/select-v2/src/select.vue.d.ts +9 -1
  43. package/es/components/select-v2/src/useSelect.d.ts +9 -1
  44. package/es/components/table/src/filter-panel.vue.d.ts +9 -1
  45. package/es/components/time-picker/src/common/picker.vue.d.ts +9 -1
  46. package/es/components/time-picker/src/common/picker.vue_vue_type_script_lang.mjs.map +1 -1
  47. package/es/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.mjs +4 -2
  48. package/es/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.mjs.map +1 -1
  49. package/es/components/tooltip/index.d.ts +5 -0
  50. package/es/components/tooltip/index.mjs +1 -0
  51. package/es/components/tooltip/index.mjs.map +1 -1
  52. package/es/components/tooltip/src/content.vue.d.ts +13 -6
  53. package/es/components/tooltip/src/content.vue_vue_type_script_lang.mjs +42 -67
  54. package/es/components/tooltip/src/content.vue_vue_type_script_lang.mjs.map +1 -1
  55. package/es/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.mjs +53 -56
  56. package/es/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.mjs.map +1 -1
  57. package/es/components/tooltip/src/tokens.d.ts +1 -0
  58. package/es/components/tooltip/src/tokens.mjs.map +1 -1
  59. package/es/components/tooltip/src/tooltip.d.ts +2 -0
  60. package/es/components/tooltip/src/tooltip.mjs +8 -0
  61. package/es/components/tooltip/src/tooltip.mjs.map +1 -1
  62. package/es/components/tooltip/src/tooltip.vue.d.ts +4 -0
  63. package/es/components/tooltip/src/tooltip.vue_vue_type_script_lang.mjs +2 -1
  64. package/es/components/tooltip/src/tooltip.vue_vue_type_script_lang.mjs.map +1 -1
  65. package/es/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.mjs +2 -1
  66. package/es/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.mjs.map +1 -1
  67. package/es/components/tooltip/src/trigger.vue.d.ts +1 -1
  68. package/es/components/tooltip/src/trigger.vue_vue_type_script_lang.mjs +2 -2
  69. package/es/components/tooltip/src/trigger.vue_vue_type_script_lang.mjs.map +1 -1
  70. package/es/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.mjs +2 -2
  71. package/es/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.mjs.map +1 -1
  72. package/es/components/tree/src/model/useDragNode.mjs +1 -1
  73. package/es/components/tree/src/model/useDragNode.mjs.map +1 -1
  74. package/es/components/tree/src/tree-node.vue_vue_type_script_lang.mjs +1 -1
  75. package/es/components/tree/src/tree-node.vue_vue_type_script_lang.mjs.map +1 -1
  76. package/es/components/tree/src/tree-node.vue_vue_type_template_id_62959aba_lang.mjs.map +1 -1
  77. package/es/index.mjs +1 -0
  78. package/es/index.mjs.map +1 -1
  79. package/es/packages/components/cascader/index.d.ts +18 -2
  80. package/es/packages/components/cascader/src/index.vue.d.ts +9 -1
  81. package/es/packages/components/descriptions/index.d.ts +4 -4
  82. package/es/packages/components/descriptions/src/description-item.d.ts +2 -2
  83. package/es/packages/components/dropdown/index.d.ts +13 -3
  84. package/es/packages/components/dropdown/src/dropdown-menu.vue.d.ts +1 -0
  85. package/es/packages/components/dropdown/src/dropdown.vue.d.ts +11 -3
  86. package/es/packages/components/message-box/src/index.vue.d.ts +2 -2
  87. package/es/packages/components/pagination/index.d.ts +2 -2
  88. package/es/packages/components/pagination/src/pagination.d.ts +2 -2
  89. package/es/packages/components/popover/index.d.ts +18 -2
  90. package/es/packages/components/popover/src/index.vue.d.ts +9 -1
  91. package/es/packages/components/popper/src/trigger.vue.d.ts +3 -3
  92. package/es/packages/components/roving-focus-group/src/roving-focus-group-impl.vue.d.ts +1 -1
  93. package/es/packages/components/roving-focus-group/src/roving-focus-item.vue.d.ts +1 -1
  94. package/es/packages/components/select/index.d.ts +9 -1
  95. package/es/packages/components/select/src/select.vue.d.ts +9 -1
  96. package/es/packages/components/select/src/useSelect.d.ts +9 -1
  97. package/es/packages/components/select-v2/index.d.ts +18 -2
  98. package/es/packages/components/select-v2/src/select.vue.d.ts +9 -1
  99. package/es/packages/components/select-v2/src/useSelect.d.ts +9 -1
  100. package/es/packages/components/table/src/filter-panel.vue.d.ts +9 -1
  101. package/es/packages/components/time-picker/src/common/picker.vue.d.ts +9 -1
  102. package/es/packages/components/tooltip/index.d.ts +5 -0
  103. package/es/packages/components/tooltip/src/content.vue.d.ts +13 -6
  104. package/es/packages/components/tooltip/src/tokens.d.ts +1 -0
  105. package/es/packages/components/tooltip/src/tooltip.d.ts +2 -0
  106. package/es/packages/components/tooltip/src/tooltip.vue.d.ts +4 -0
  107. package/es/packages/components/tooltip/src/trigger.vue.d.ts +1 -1
  108. package/es/packages/components/tree-v2/src/tree-node.vue.d.ts +1 -1
  109. package/es/packages/components/virtual-list/src/builders/build-grid.d.ts +2 -2
  110. package/es/packages/components/virtual-list/src/builders/build-list.d.ts +2 -2
  111. package/es/packages/components/virtual-list/src/components/dynamic-size-grid.d.ts +2 -2
  112. package/es/packages/components/virtual-list/src/components/dynamic-size-list.d.ts +2 -2
  113. package/es/packages/components/virtual-list/src/components/fixed-size-grid.d.ts +2 -2
  114. package/es/packages/components/virtual-list/src/components/fixed-size-list.d.ts +2 -2
  115. package/es/packages/version.d.ts +1 -1
  116. package/es/version.d.ts +1 -1
  117. package/es/version.mjs +1 -1
  118. package/es/version.mjs.map +1 -1
  119. package/lib/components/calendar/src/calendar.vue_vue_type_script_lang.js +4 -4
  120. package/lib/components/calendar/src/calendar.vue_vue_type_script_lang.js.map +1 -1
  121. package/lib/components/calendar/src/calendar.vue_vue_type_template_id_76705c76_lang.js.map +1 -1
  122. package/lib/components/cascader/index.d.ts +18 -2
  123. package/lib/components/cascader/src/index.vue.d.ts +9 -1
  124. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js +6 -0
  125. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js.map +1 -1
  126. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.js.map +1 -1
  127. package/lib/components/dropdown/index.d.ts +11 -1
  128. package/lib/components/dropdown/src/dropdown-item-impl.vue_vue_type_script_lang.js.map +1 -1
  129. package/lib/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.js +31 -25
  130. package/lib/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.js.map +1 -1
  131. package/lib/components/dropdown/src/dropdown-menu.vue.d.ts +1 -0
  132. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.js +4 -6
  133. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.js.map +1 -1
  134. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.js +1 -1
  135. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.js.map +1 -1
  136. package/lib/components/dropdown/src/dropdown.vue.d.ts +9 -1
  137. package/lib/components/index.js +2 -0
  138. package/lib/components/index.js.map +1 -1
  139. package/lib/components/popover/index.d.ts +18 -2
  140. package/lib/components/popover/src/index.vue.d.ts +9 -1
  141. package/lib/components/popper/src/content.vue_vue_type_script_lang.js +2 -1
  142. package/lib/components/popper/src/content.vue_vue_type_script_lang.js.map +1 -1
  143. package/lib/components/popper/src/content.vue_vue_type_template_id_611b76f0_lang.js.map +1 -1
  144. package/lib/components/popper/src/trigger.vue.d.ts +3 -3
  145. package/lib/components/popper/src/trigger.vue_vue_type_script_lang.js +2 -2
  146. package/lib/components/popper/src/trigger.vue_vue_type_script_lang.js.map +1 -1
  147. package/lib/components/popper/src/trigger.vue_vue_type_template_id_4fb6e0af_lang.js.map +1 -1
  148. package/lib/components/select/index.d.ts +9 -1
  149. package/lib/components/select/src/select.vue.d.ts +9 -1
  150. package/lib/components/select/src/useSelect.d.ts +9 -1
  151. package/lib/components/select-v2/index.d.ts +18 -2
  152. package/lib/components/select-v2/src/select.vue.d.ts +9 -1
  153. package/lib/components/select-v2/src/useSelect.d.ts +9 -1
  154. package/lib/components/table/src/filter-panel.vue.d.ts +9 -1
  155. package/lib/components/time-picker/src/common/picker.vue.d.ts +9 -1
  156. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_lang.js.map +1 -1
  157. package/lib/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.js +4 -2
  158. package/lib/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.js.map +1 -1
  159. package/lib/components/tooltip/index.d.ts +5 -0
  160. package/lib/components/tooltip/index.js +2 -0
  161. package/lib/components/tooltip/index.js.map +1 -1
  162. package/lib/components/tooltip/src/content.vue.d.ts +13 -6
  163. package/lib/components/tooltip/src/content.vue_vue_type_script_lang.js +43 -68
  164. package/lib/components/tooltip/src/content.vue_vue_type_script_lang.js.map +1 -1
  165. package/lib/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.js +52 -55
  166. package/lib/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.js.map +1 -1
  167. package/lib/components/tooltip/src/tokens.d.ts +1 -0
  168. package/lib/components/tooltip/src/tokens.js.map +1 -1
  169. package/lib/components/tooltip/src/tooltip.d.ts +2 -0
  170. package/lib/components/tooltip/src/tooltip.js +8 -0
  171. package/lib/components/tooltip/src/tooltip.js.map +1 -1
  172. package/lib/components/tooltip/src/tooltip.vue.d.ts +4 -0
  173. package/lib/components/tooltip/src/tooltip.vue_vue_type_script_lang.js +2 -1
  174. package/lib/components/tooltip/src/tooltip.vue_vue_type_script_lang.js.map +1 -1
  175. package/lib/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.js +2 -1
  176. package/lib/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.js.map +1 -1
  177. package/lib/components/tooltip/src/trigger.vue.d.ts +1 -1
  178. package/lib/components/tooltip/src/trigger.vue_vue_type_script_lang.js +2 -2
  179. package/lib/components/tooltip/src/trigger.vue_vue_type_script_lang.js.map +1 -1
  180. package/lib/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.js +2 -2
  181. package/lib/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.js.map +1 -1
  182. package/lib/components/tree/src/model/useDragNode.js +1 -1
  183. package/lib/components/tree/src/model/useDragNode.js.map +1 -1
  184. package/lib/components/tree/src/tree-node.vue_vue_type_script_lang.js +1 -1
  185. package/lib/components/tree/src/tree-node.vue_vue_type_script_lang.js.map +1 -1
  186. package/lib/components/tree/src/tree-node.vue_vue_type_template_id_62959aba_lang.js.map +1 -1
  187. package/lib/index.js +2 -0
  188. package/lib/index.js.map +1 -1
  189. package/lib/packages/components/cascader/index.d.ts +18 -2
  190. package/lib/packages/components/cascader/src/index.vue.d.ts +9 -1
  191. package/lib/packages/components/descriptions/index.d.ts +4 -4
  192. package/lib/packages/components/descriptions/src/description-item.d.ts +2 -2
  193. package/lib/packages/components/dropdown/index.d.ts +13 -3
  194. package/lib/packages/components/dropdown/src/dropdown-menu.vue.d.ts +1 -0
  195. package/lib/packages/components/dropdown/src/dropdown.vue.d.ts +11 -3
  196. package/lib/packages/components/message-box/src/index.vue.d.ts +2 -2
  197. package/lib/packages/components/pagination/index.d.ts +2 -2
  198. package/lib/packages/components/pagination/src/pagination.d.ts +2 -2
  199. package/lib/packages/components/popover/index.d.ts +18 -2
  200. package/lib/packages/components/popover/src/index.vue.d.ts +9 -1
  201. package/lib/packages/components/popper/src/trigger.vue.d.ts +3 -3
  202. package/lib/packages/components/roving-focus-group/src/roving-focus-group-impl.vue.d.ts +1 -1
  203. package/lib/packages/components/roving-focus-group/src/roving-focus-item.vue.d.ts +1 -1
  204. package/lib/packages/components/select/index.d.ts +9 -1
  205. package/lib/packages/components/select/src/select.vue.d.ts +9 -1
  206. package/lib/packages/components/select/src/useSelect.d.ts +9 -1
  207. package/lib/packages/components/select-v2/index.d.ts +18 -2
  208. package/lib/packages/components/select-v2/src/select.vue.d.ts +9 -1
  209. package/lib/packages/components/select-v2/src/useSelect.d.ts +9 -1
  210. package/lib/packages/components/table/src/filter-panel.vue.d.ts +9 -1
  211. package/lib/packages/components/time-picker/src/common/picker.vue.d.ts +9 -1
  212. package/lib/packages/components/tooltip/index.d.ts +5 -0
  213. package/lib/packages/components/tooltip/src/content.vue.d.ts +13 -6
  214. package/lib/packages/components/tooltip/src/tokens.d.ts +1 -0
  215. package/lib/packages/components/tooltip/src/tooltip.d.ts +2 -0
  216. package/lib/packages/components/tooltip/src/tooltip.vue.d.ts +4 -0
  217. package/lib/packages/components/tooltip/src/trigger.vue.d.ts +1 -1
  218. package/lib/packages/components/tree-v2/src/tree-node.vue.d.ts +1 -1
  219. package/lib/packages/components/virtual-list/src/builders/build-grid.d.ts +2 -2
  220. package/lib/packages/components/virtual-list/src/builders/build-list.d.ts +2 -2
  221. package/lib/packages/components/virtual-list/src/components/dynamic-size-grid.d.ts +2 -2
  222. package/lib/packages/components/virtual-list/src/components/dynamic-size-list.d.ts +2 -2
  223. package/lib/packages/components/virtual-list/src/components/fixed-size-grid.d.ts +2 -2
  224. package/lib/packages/components/virtual-list/src/components/fixed-size-list.d.ts +2 -2
  225. package/lib/packages/version.d.ts +1 -1
  226. package/lib/version.d.ts +1 -1
  227. package/lib/version.js +1 -1
  228. package/lib/version.js.map +1 -1
  229. package/package.json +2 -2
  230. package/tags.json +1 -1
  231. package/theme-chalk/el-dropdown.css +1 -1
  232. package/theme-chalk/el-tree.css +1 -1
  233. package/theme-chalk/index.css +1 -1
  234. package/theme-chalk/src/dropdown.scss +13 -18
  235. package/theme-chalk/src/tree.scss +2 -1
  236. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"picker.vue_vue_type_script_lang.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n v-model:visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :popper-class=\"`el-picker__popper ${popperClass}`\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :gpu-acceleration=\"false\"\n :stop-popper-mouse-event=\"false\"\n :hide-after=\"0\"\n persistent\n @show=\"pickerActualVisible = true\"\n @hide=\"pickerActualVisible = false\"\n >\n <template #default>\n <el-input\n v-if=\"!isRangeInput\"\n :id=\"id\"\n ref=\"inputRef\"\n :model-value=\"displayValue\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n class=\"el-date-editor\"\n :class=\"['el-date-editor--' + type, $attrs.class || undefined]\"\n :style=\"$attrs.style || undefined\"\n :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n @input=\"onUserInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n @change=\"handleChange\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n class=\"el-input__icon clear-icon\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <div\n v-else\n ref=\"inputRef\"\n class=\"el-date-editor el-range-editor el-input__inner\"\n :class=\"[\n 'el-date-editor--' + type,\n pickerSize ? `el-range-editor--${pickerSize}` : '',\n pickerDisabled ? 'is-disabled' : '',\n pickerVisible ? 'is-active' : '',\n ]\"\n @click=\"handleFocus\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @keydown=\"handleKeydown\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon el-range__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n <input\n :id=\"id && id[0]\"\n autocomplete=\"off\"\n :name=\"name && name[0]\"\n :placeholder=\"startPlaceholder\"\n :value=\"displayValue && displayValue[0]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocus\"\n />\n <slot name=\"range-separator\">\n <span class=\"el-range-separator\">{{ rangeSeparator }}</span>\n </slot>\n <input\n :id=\"id && id[1]\"\n autocomplete=\"off\"\n :name=\"name && name[1]\"\n :placeholder=\"endPlaceholder\"\n :value=\"displayValue && displayValue[1]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @focus=\"handleFocus\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n class=\"el-input__icon el-range__close-icon\"\n :class=\"{\n 'el-range__close-icon--hidden': !showClose,\n }\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </div>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n @pick=\"onPick\"\n @select-range=\"setSelectionRange\"\n @set-picker-option=\"onSetPickerOption\"\n @calendar-change=\"onCalendarChange\"\n @mousedown.stop\n ></slot>\n </template>\n </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n nextTick,\n inject,\n watch,\n provide,\n unref,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport isEqual from 'lodash/isEqual'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useSize } from '@element-plus/hooks'\nimport { elFormKey, elFormItemKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isEmpty } from '@element-plus/utils/util'\nimport { Clock, Calendar } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n isValidValue: (date: Dayjs) => boolean\n handleKeydown: (event: KeyboardEvent) => void\n parseUserInput: (value: Dayjs) => dayjs.Dayjs\n formatToString: (value: Dayjs) => string | string[]\n getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n getDefaultValue: () => Dayjs\n panelReady: boolean\n handleClear: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n const aIsDate = a instanceof Date\n const bIsDate = b instanceof Date\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n const aIsArray = a instanceof Array\n const bIsArray = b instanceof Array\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nconst parser = function (\n date: Date | string,\n format: string,\n lang: string\n): Dayjs {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nconst formatter = function (date: number | Date, format: string, lang: string) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n name: 'Picker',\n components: {\n ElInput,\n ElTooltip,\n ElIcon,\n },\n props: timePickerDefaultProps,\n emits: ['update:modelValue', 'change', 'focus', 'blur', 'calendar-change'],\n setup(props, ctx) {\n const { lang } = useLocale()\n\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n const refPopper = ref<InstanceType<typeof ElTooltip>>()\n const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const valueOnOpen = ref(null)\n\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n ctx.emit('blur')\n blurInput()\n props.validateEvent && elFormItem.validate?.('blur')\n } else {\n valueOnOpen.value = props.modelValue\n }\n })\n const emitChange = (val, isClear?: boolean) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n ctx.emit('change', val)\n props.validateEvent && elFormItem.validate?.('change')\n }\n }\n const emitInput = (val) => {\n if (!valueEquals(props.modelValue, val)) {\n let formatValue\n if (Array.isArray(val)) {\n formatValue = val.map((_) =>\n formatter(_, props.valueFormat, lang.value)\n )\n } else if (val) {\n formatValue = formatter(val, props.valueFormat, lang.value)\n }\n ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n }\n }\n const refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value\n ? inputRef.value\n : (inputRef.value as any as ComponentPublicInstance).$el\n return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n }\n return []\n })\n const refStartInput = computed(() => {\n return refInput?.value[0]\n })\n const refEndInput = computed(() => {\n return refInput?.value[1]\n })\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value\n if (!_inputs.length) return\n if (!pos || pos === 'min') {\n _inputs[0].setSelectionRange(start, end)\n _inputs[0].focus()\n } else if (pos === 'max') {\n _inputs[1].setSelectionRange(start, end)\n _inputs[1].focus()\n }\n }\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (Array.isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n const focus = (focusStartInput = true) => {\n let input = refStartInput.value\n if (!focusStartInput && isRangeInput.value) {\n input = refEndInput.value\n }\n if (input) {\n input.focus()\n }\n }\n\n const handleFocus = (e) => {\n if (props.readonly || pickerDisabled.value || pickerVisible.value) return\n pickerVisible.value = true\n ctx.emit('focus', e)\n }\n\n const handleBlur = () => {\n refPopper.value?.onClose()\n blurInput()\n }\n\n const pickerDisabled = computed(() => {\n return props.disabled || elForm.disabled\n })\n\n const parsedValue = computed(() => {\n let result\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n result = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (Array.isArray(props.modelValue)) {\n result = props.modelValue.map((_) =>\n parser(_, props.valueFormat, lang.value)\n )\n } else {\n result = parser(props.modelValue, props.valueFormat, lang.value)\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult =\n pickerOptions.value.getRangeAvailableTime(result)\n if (!isEqual(availableResult, result)) {\n result = availableResult\n emitInput(\n Array.isArray(result)\n ? result.map((_) => _.toDate())\n : result.toDate()\n )\n }\n }\n if (Array.isArray(result) && result.some((_) => !_)) {\n result = []\n }\n return result\n })\n\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (Array.isArray(userInput.value)) {\n return [\n userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n ]\n } else if (userInput.value !== null) {\n return userInput.value\n }\n if (!isTimePicker.value && valueIsEmpty.value) return\n if (!pickerVisible.value && valueIsEmpty.value) return\n if (formattedValue) {\n return isDatesPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n })\n\n const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n const isTimePicker = computed(() => props.type.startsWith('time'))\n\n const isDatesPicker = computed(() => props.type === 'dates')\n\n const triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n )\n\n const showClose = ref(false)\n\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n emitInput(null)\n emitChange(null, true)\n showClose.value = false\n pickerVisible.value = false\n pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n }\n }\n const valueIsEmpty = computed(() => {\n return (\n !props.modelValue ||\n (Array.isArray(props.modelValue) && !props.modelValue.length)\n )\n })\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n }\n const onMouseLeave = () => {\n showClose.value = false\n }\n const isRangeInput = computed(() => {\n return props.type.indexOf('range') > -1\n })\n\n const pickerSize = useSize()\n\n const popperPaneRef = computed(() => {\n return refPopper.value?.popperRef?.contentRef\n })\n\n const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n const actualInputRef = computed(() => {\n if (unref(isRangeInput)) {\n return unref(inputRef)\n }\n\n return (unref(inputRef) as ComponentPublicInstance)?.$el\n })\n\n onClickOutside(actualInputRef, (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unref(actualInputRef)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n e.composedPath().includes(inputEl)\n )\n return\n pickerVisible.value = false\n })\n\n const userInput = ref(null)\n\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(\n Array.isArray(value)\n ? value.map((_) => _.toDate())\n : value.toDate()\n )\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(null)\n emitChange(null)\n userInput.value = null\n }\n }\n\n const blurInput = () => {\n refInput.value.forEach((input) => input.blur())\n }\n\n const parseUserInputToDayjs = (value) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput(value)\n }\n\n const formatDayjsToString = (value) => {\n if (!value) return null\n return pickerOptions.value.formatToString(value)\n }\n\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value)\n }\n\n const handleKeydown = (event) => {\n const code = event.code\n\n if (code === EVENT_CODE.esc) {\n pickerVisible.value = false\n event.stopPropagation()\n return\n }\n\n if (code === EVENT_CODE.tab) {\n if (!isRangeInput.value) {\n handleChange()\n pickerVisible.value = false\n event.stopPropagation()\n } else {\n // user may change focus between two input\n setTimeout(() => {\n if (refInput.value.indexOf(document.activeElement) === -1) {\n pickerVisible.value = false\n blurInput()\n }\n }, 0)\n }\n return\n }\n\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (\n userInput.value === null ||\n userInput.value === '' ||\n isValidValue(parseUserInputToDayjs(displayValue.value))\n ) {\n handleChange()\n pickerVisible.value = false\n }\n event.stopPropagation()\n return\n }\n\n // if user is typing, do not let picker handle key input\n if (userInput.value) {\n event.stopPropagation()\n return\n }\n\n if (pickerOptions.value.handleKeydown) {\n pickerOptions.value.handleKeydown(event)\n }\n }\n const onUserInput = (e) => {\n userInput.value = e\n }\n\n const handleStartInput = (event) => {\n if (userInput.value) {\n userInput.value = [event.target.value, userInput.value[1]]\n } else {\n userInput.value = [event.target.value, null]\n }\n }\n\n const handleEndInput = (event) => {\n if (userInput.value) {\n userInput.value = [userInput.value[0], event.target.value]\n } else {\n userInput.value = [null, event.target.value]\n }\n }\n\n const handleStartChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n const newValue = [value, parsedValue.value && parsedValue.value[1]]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const handleEndChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n if (value && value.isValid()) {\n userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n const newValue = [parsedValue.value && parsedValue.value[0], value]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\n const onSetPickerOption = <T extends keyof PickerOptions>(\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e) => {\n ctx.emit('calendar-change', e)\n }\n\n provide('EP_PICKER_BASE', {\n props,\n })\n\n return {\n // injected popper options\n elPopperOptions,\n\n isDatesPicker,\n handleEndChange,\n handleStartChange,\n handleStartInput,\n handleEndInput,\n onUserInput,\n handleChange,\n handleKeydown,\n popperPaneRef,\n onClickOutside,\n pickerSize,\n isRangeInput,\n onMouseLeave,\n onMouseEnter,\n onClearIconClick,\n showClose,\n triggerIcon,\n onPick,\n handleFocus,\n handleBlur,\n pickerVisible,\n pickerActualVisible,\n displayValue,\n parsedValue,\n setSelectionRange,\n refPopper,\n inputRef,\n pickerDisabled,\n onSetPickerOption,\n onCalendarChange,\n focus,\n }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"picker.vue_vue_type_script_lang.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n v-model:visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :popper-class=\"`el-picker__popper ${popperClass}`\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :gpu-acceleration=\"false\"\n :stop-popper-mouse-event=\"false\"\n :hide-after=\"0\"\n persistent\n @show=\"pickerActualVisible = true\"\n @hide=\"pickerActualVisible = false\"\n >\n <template #default>\n <el-input\n v-if=\"!isRangeInput\"\n :id=\"id\"\n ref=\"inputRef\"\n :model-value=\"displayValue\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n class=\"el-date-editor\"\n :class=\"['el-date-editor--' + type, $attrs.class || undefined]\"\n :style=\"$attrs.style || undefined\"\n :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n @input=\"onUserInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n @change=\"handleChange\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n class=\"el-input__icon clear-icon\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <div\n v-else\n ref=\"inputRef\"\n class=\"el-date-editor el-range-editor el-input__inner\"\n :class=\"[\n 'el-date-editor--' + type,\n pickerSize ? `el-range-editor--${pickerSize}` : '',\n pickerDisabled ? 'is-disabled' : '',\n pickerVisible ? 'is-active' : '',\n $attrs.class || undefined,\n ]\"\n :style=\"$attrs.style || undefined\"\n @click=\"handleFocus\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @keydown=\"handleKeydown\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon el-range__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n <input\n :id=\"id && id[0]\"\n autocomplete=\"off\"\n :name=\"name && name[0]\"\n :placeholder=\"startPlaceholder\"\n :value=\"displayValue && displayValue[0]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocus\"\n />\n <slot name=\"range-separator\">\n <span class=\"el-range-separator\">{{ rangeSeparator }}</span>\n </slot>\n <input\n :id=\"id && id[1]\"\n autocomplete=\"off\"\n :name=\"name && name[1]\"\n :placeholder=\"endPlaceholder\"\n :value=\"displayValue && displayValue[1]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @focus=\"handleFocus\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n class=\"el-input__icon el-range__close-icon\"\n :class=\"{\n 'el-range__close-icon--hidden': !showClose,\n }\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </div>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n @pick=\"onPick\"\n @select-range=\"setSelectionRange\"\n @set-picker-option=\"onSetPickerOption\"\n @calendar-change=\"onCalendarChange\"\n @mousedown.stop\n ></slot>\n </template>\n </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n nextTick,\n inject,\n watch,\n provide,\n unref,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport isEqual from 'lodash/isEqual'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useSize } from '@element-plus/hooks'\nimport { elFormKey, elFormItemKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isEmpty } from '@element-plus/utils/util'\nimport { Clock, Calendar } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n isValidValue: (date: Dayjs) => boolean\n handleKeydown: (event: KeyboardEvent) => void\n parseUserInput: (value: Dayjs) => dayjs.Dayjs\n formatToString: (value: Dayjs) => string | string[]\n getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n getDefaultValue: () => Dayjs\n panelReady: boolean\n handleClear: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n const aIsDate = a instanceof Date\n const bIsDate = b instanceof Date\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n const aIsArray = a instanceof Array\n const bIsArray = b instanceof Array\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nconst parser = function (\n date: Date | string,\n format: string,\n lang: string\n): Dayjs {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nconst formatter = function (date: number | Date, format: string, lang: string) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n name: 'Picker',\n components: {\n ElInput,\n ElTooltip,\n ElIcon,\n },\n props: timePickerDefaultProps,\n emits: ['update:modelValue', 'change', 'focus', 'blur', 'calendar-change'],\n setup(props, ctx) {\n const { lang } = useLocale()\n\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n const refPopper = ref<InstanceType<typeof ElTooltip>>()\n const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const valueOnOpen = ref(null)\n\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n ctx.emit('blur')\n blurInput()\n props.validateEvent && elFormItem.validate?.('blur')\n } else {\n valueOnOpen.value = props.modelValue\n }\n })\n const emitChange = (val, isClear?: boolean) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n ctx.emit('change', val)\n props.validateEvent && elFormItem.validate?.('change')\n }\n }\n const emitInput = (val) => {\n if (!valueEquals(props.modelValue, val)) {\n let formatValue\n if (Array.isArray(val)) {\n formatValue = val.map((_) =>\n formatter(_, props.valueFormat, lang.value)\n )\n } else if (val) {\n formatValue = formatter(val, props.valueFormat, lang.value)\n }\n ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n }\n }\n const refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value\n ? inputRef.value\n : (inputRef.value as any as ComponentPublicInstance).$el\n return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n }\n return []\n })\n const refStartInput = computed(() => {\n return refInput?.value[0]\n })\n const refEndInput = computed(() => {\n return refInput?.value[1]\n })\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value\n if (!_inputs.length) return\n if (!pos || pos === 'min') {\n _inputs[0].setSelectionRange(start, end)\n _inputs[0].focus()\n } else if (pos === 'max') {\n _inputs[1].setSelectionRange(start, end)\n _inputs[1].focus()\n }\n }\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (Array.isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n const focus = (focusStartInput = true) => {\n let input = refStartInput.value\n if (!focusStartInput && isRangeInput.value) {\n input = refEndInput.value\n }\n if (input) {\n input.focus()\n }\n }\n\n const handleFocus = (e) => {\n if (props.readonly || pickerDisabled.value || pickerVisible.value) return\n pickerVisible.value = true\n ctx.emit('focus', e)\n }\n\n const handleBlur = () => {\n refPopper.value?.onClose()\n blurInput()\n }\n\n const pickerDisabled = computed(() => {\n return props.disabled || elForm.disabled\n })\n\n const parsedValue = computed(() => {\n let result\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n result = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (Array.isArray(props.modelValue)) {\n result = props.modelValue.map((_) =>\n parser(_, props.valueFormat, lang.value)\n )\n } else {\n result = parser(props.modelValue, props.valueFormat, lang.value)\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult =\n pickerOptions.value.getRangeAvailableTime(result)\n if (!isEqual(availableResult, result)) {\n result = availableResult\n emitInput(\n Array.isArray(result)\n ? result.map((_) => _.toDate())\n : result.toDate()\n )\n }\n }\n if (Array.isArray(result) && result.some((_) => !_)) {\n result = []\n }\n return result\n })\n\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (Array.isArray(userInput.value)) {\n return [\n userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n ]\n } else if (userInput.value !== null) {\n return userInput.value\n }\n if (!isTimePicker.value && valueIsEmpty.value) return\n if (!pickerVisible.value && valueIsEmpty.value) return\n if (formattedValue) {\n return isDatesPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n })\n\n const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n const isTimePicker = computed(() => props.type.startsWith('time'))\n\n const isDatesPicker = computed(() => props.type === 'dates')\n\n const triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n )\n\n const showClose = ref(false)\n\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n emitInput(null)\n emitChange(null, true)\n showClose.value = false\n pickerVisible.value = false\n pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n }\n }\n const valueIsEmpty = computed(() => {\n return (\n !props.modelValue ||\n (Array.isArray(props.modelValue) && !props.modelValue.length)\n )\n })\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n }\n const onMouseLeave = () => {\n showClose.value = false\n }\n const isRangeInput = computed(() => {\n return props.type.indexOf('range') > -1\n })\n\n const pickerSize = useSize()\n\n const popperPaneRef = computed(() => {\n return refPopper.value?.popperRef?.contentRef\n })\n\n const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n const actualInputRef = computed(() => {\n if (unref(isRangeInput)) {\n return unref(inputRef)\n }\n\n return (unref(inputRef) as ComponentPublicInstance)?.$el\n })\n\n onClickOutside(actualInputRef, (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unref(actualInputRef)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n e.composedPath().includes(inputEl)\n )\n return\n pickerVisible.value = false\n })\n\n const userInput = ref(null)\n\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(\n Array.isArray(value)\n ? value.map((_) => _.toDate())\n : value.toDate()\n )\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(null)\n emitChange(null)\n userInput.value = null\n }\n }\n\n const blurInput = () => {\n refInput.value.forEach((input) => input.blur())\n }\n\n const parseUserInputToDayjs = (value) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput(value)\n }\n\n const formatDayjsToString = (value) => {\n if (!value) return null\n return pickerOptions.value.formatToString(value)\n }\n\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value)\n }\n\n const handleKeydown = (event) => {\n const code = event.code\n\n if (code === EVENT_CODE.esc) {\n pickerVisible.value = false\n event.stopPropagation()\n return\n }\n\n if (code === EVENT_CODE.tab) {\n if (!isRangeInput.value) {\n handleChange()\n pickerVisible.value = false\n event.stopPropagation()\n } else {\n // user may change focus between two input\n setTimeout(() => {\n if (refInput.value.indexOf(document.activeElement) === -1) {\n pickerVisible.value = false\n blurInput()\n }\n }, 0)\n }\n return\n }\n\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (\n userInput.value === null ||\n userInput.value === '' ||\n isValidValue(parseUserInputToDayjs(displayValue.value))\n ) {\n handleChange()\n pickerVisible.value = false\n }\n event.stopPropagation()\n return\n }\n\n // if user is typing, do not let picker handle key input\n if (userInput.value) {\n event.stopPropagation()\n return\n }\n\n if (pickerOptions.value.handleKeydown) {\n pickerOptions.value.handleKeydown(event)\n }\n }\n const onUserInput = (e) => {\n userInput.value = e\n }\n\n const handleStartInput = (event) => {\n if (userInput.value) {\n userInput.value = [event.target.value, userInput.value[1]]\n } else {\n userInput.value = [event.target.value, null]\n }\n }\n\n const handleEndInput = (event) => {\n if (userInput.value) {\n userInput.value = [userInput.value[0], event.target.value]\n } else {\n userInput.value = [null, event.target.value]\n }\n }\n\n const handleStartChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n const newValue = [value, parsedValue.value && parsedValue.value[1]]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const handleEndChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n if (value && value.isValid()) {\n userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n const newValue = [parsedValue.value && parsedValue.value[0], value]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\n const onSetPickerOption = <T extends keyof PickerOptions>(\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e) => {\n ctx.emit('calendar-change', e)\n }\n\n provide('EP_PICKER_BASE', {\n props,\n })\n\n return {\n // injected popper options\n elPopperOptions,\n\n isDatesPicker,\n handleEndChange,\n handleStartChange,\n handleStartInput,\n handleEndInput,\n onUserInput,\n handleChange,\n handleKeydown,\n popperPaneRef,\n onClickOutside,\n pickerSize,\n isRangeInput,\n onMouseLeave,\n onMouseEnter,\n onClearIconClick,\n showClose,\n triggerIcon,\n onPick,\n handleFocus,\n handleBlur,\n pickerVisible,\n pickerActualVisible,\n displayValue,\n parsedValue,\n setSelectionRange,\n refPopper,\n inputRef,\n pickerDisabled,\n onSetPickerOption,\n onCalendarChange,\n focus,\n }\n },\n})\n</script>\n"],"names":[],"mappings":"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"}
@@ -81,8 +81,10 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
81
81
  "el-date-editor--" + _ctx.type,
82
82
  _ctx.pickerSize ? `el-range-editor--${_ctx.pickerSize}` : "",
83
83
  _ctx.pickerDisabled ? "is-disabled" : "",
84
- _ctx.pickerVisible ? "is-active" : ""
84
+ _ctx.pickerVisible ? "is-active" : "",
85
+ _ctx.$attrs.class || void 0
85
86
  ]]),
87
+ style: normalizeStyle(_ctx.$attrs.style || void 0),
86
88
  onClick: _cache[7] || (_cache[7] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)),
87
89
  onMouseenter: _cache[8] || (_cache[8] = (...args) => _ctx.onMouseEnter && _ctx.onMouseEnter(...args)),
88
90
  onMouseleave: _cache[9] || (_cache[9] = (...args) => _ctx.onMouseLeave && _ctx.onMouseLeave(...args)),
@@ -139,7 +141,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
139
141
  ]),
140
142
  _: 1
141
143
  }, 8, ["class", "onClick"])) : createCommentVNode("v-if", true)
142
- ], 34))
144
+ ], 38))
143
145
  ]),
144
146
  content: withCtx(() => [
145
147
  renderSlot(_ctx.$slots, "default", {
@@ -1 +1 @@
1
- {"version":3,"file":"picker.vue_vue_type_template_id_1d54be91_lang.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue?vue&type=template&id=1d54be91&lang.js"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n v-model:visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :popper-class=\"`el-picker__popper ${popperClass}`\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :gpu-acceleration=\"false\"\n :stop-popper-mouse-event=\"false\"\n :hide-after=\"0\"\n persistent\n @show=\"pickerActualVisible = true\"\n @hide=\"pickerActualVisible = false\"\n >\n <template #default>\n <el-input\n v-if=\"!isRangeInput\"\n :id=\"id\"\n ref=\"inputRef\"\n :model-value=\"displayValue\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n class=\"el-date-editor\"\n :class=\"['el-date-editor--' + type, $attrs.class || undefined]\"\n :style=\"$attrs.style || undefined\"\n :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n @input=\"onUserInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n @change=\"handleChange\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n class=\"el-input__icon clear-icon\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <div\n v-else\n ref=\"inputRef\"\n class=\"el-date-editor el-range-editor el-input__inner\"\n :class=\"[\n 'el-date-editor--' + type,\n pickerSize ? `el-range-editor--${pickerSize}` : '',\n pickerDisabled ? 'is-disabled' : '',\n pickerVisible ? 'is-active' : '',\n ]\"\n @click=\"handleFocus\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @keydown=\"handleKeydown\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon el-range__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n <input\n :id=\"id && id[0]\"\n autocomplete=\"off\"\n :name=\"name && name[0]\"\n :placeholder=\"startPlaceholder\"\n :value=\"displayValue && displayValue[0]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocus\"\n />\n <slot name=\"range-separator\">\n <span class=\"el-range-separator\">{{ rangeSeparator }}</span>\n </slot>\n <input\n :id=\"id && id[1]\"\n autocomplete=\"off\"\n :name=\"name && name[1]\"\n :placeholder=\"endPlaceholder\"\n :value=\"displayValue && displayValue[1]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @focus=\"handleFocus\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n class=\"el-input__icon el-range__close-icon\"\n :class=\"{\n 'el-range__close-icon--hidden': !showClose,\n }\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </div>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n @pick=\"onPick\"\n @select-range=\"setSelectionRange\"\n @set-picker-option=\"onSetPickerOption\"\n @calendar-change=\"onCalendarChange\"\n @mousedown.stop\n ></slot>\n </template>\n </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n nextTick,\n inject,\n watch,\n provide,\n unref,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport isEqual from 'lodash/isEqual'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useSize } from '@element-plus/hooks'\nimport { elFormKey, elFormItemKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isEmpty } from '@element-plus/utils/util'\nimport { Clock, Calendar } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n isValidValue: (date: Dayjs) => boolean\n handleKeydown: (event: KeyboardEvent) => void\n parseUserInput: (value: Dayjs) => dayjs.Dayjs\n formatToString: (value: Dayjs) => string | string[]\n getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n getDefaultValue: () => Dayjs\n panelReady: boolean\n handleClear: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n const aIsDate = a instanceof Date\n const bIsDate = b instanceof Date\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n const aIsArray = a instanceof Array\n const bIsArray = b instanceof Array\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nconst parser = function (\n date: Date | string,\n format: string,\n lang: string\n): Dayjs {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nconst formatter = function (date: number | Date, format: string, lang: string) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n name: 'Picker',\n components: {\n ElInput,\n ElTooltip,\n ElIcon,\n },\n props: timePickerDefaultProps,\n emits: ['update:modelValue', 'change', 'focus', 'blur', 'calendar-change'],\n setup(props, ctx) {\n const { lang } = useLocale()\n\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n const refPopper = ref<InstanceType<typeof ElTooltip>>()\n const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const valueOnOpen = ref(null)\n\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n ctx.emit('blur')\n blurInput()\n props.validateEvent && elFormItem.validate?.('blur')\n } else {\n valueOnOpen.value = props.modelValue\n }\n })\n const emitChange = (val, isClear?: boolean) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n ctx.emit('change', val)\n props.validateEvent && elFormItem.validate?.('change')\n }\n }\n const emitInput = (val) => {\n if (!valueEquals(props.modelValue, val)) {\n let formatValue\n if (Array.isArray(val)) {\n formatValue = val.map((_) =>\n formatter(_, props.valueFormat, lang.value)\n )\n } else if (val) {\n formatValue = formatter(val, props.valueFormat, lang.value)\n }\n ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n }\n }\n const refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value\n ? inputRef.value\n : (inputRef.value as any as ComponentPublicInstance).$el\n return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n }\n return []\n })\n const refStartInput = computed(() => {\n return refInput?.value[0]\n })\n const refEndInput = computed(() => {\n return refInput?.value[1]\n })\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value\n if (!_inputs.length) return\n if (!pos || pos === 'min') {\n _inputs[0].setSelectionRange(start, end)\n _inputs[0].focus()\n } else if (pos === 'max') {\n _inputs[1].setSelectionRange(start, end)\n _inputs[1].focus()\n }\n }\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (Array.isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n const focus = (focusStartInput = true) => {\n let input = refStartInput.value\n if (!focusStartInput && isRangeInput.value) {\n input = refEndInput.value\n }\n if (input) {\n input.focus()\n }\n }\n\n const handleFocus = (e) => {\n if (props.readonly || pickerDisabled.value || pickerVisible.value) return\n pickerVisible.value = true\n ctx.emit('focus', e)\n }\n\n const handleBlur = () => {\n refPopper.value?.onClose()\n blurInput()\n }\n\n const pickerDisabled = computed(() => {\n return props.disabled || elForm.disabled\n })\n\n const parsedValue = computed(() => {\n let result\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n result = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (Array.isArray(props.modelValue)) {\n result = props.modelValue.map((_) =>\n parser(_, props.valueFormat, lang.value)\n )\n } else {\n result = parser(props.modelValue, props.valueFormat, lang.value)\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult =\n pickerOptions.value.getRangeAvailableTime(result)\n if (!isEqual(availableResult, result)) {\n result = availableResult\n emitInput(\n Array.isArray(result)\n ? result.map((_) => _.toDate())\n : result.toDate()\n )\n }\n }\n if (Array.isArray(result) && result.some((_) => !_)) {\n result = []\n }\n return result\n })\n\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (Array.isArray(userInput.value)) {\n return [\n userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n ]\n } else if (userInput.value !== null) {\n return userInput.value\n }\n if (!isTimePicker.value && valueIsEmpty.value) return\n if (!pickerVisible.value && valueIsEmpty.value) return\n if (formattedValue) {\n return isDatesPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n })\n\n const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n const isTimePicker = computed(() => props.type.startsWith('time'))\n\n const isDatesPicker = computed(() => props.type === 'dates')\n\n const triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n )\n\n const showClose = ref(false)\n\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n emitInput(null)\n emitChange(null, true)\n showClose.value = false\n pickerVisible.value = false\n pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n }\n }\n const valueIsEmpty = computed(() => {\n return (\n !props.modelValue ||\n (Array.isArray(props.modelValue) && !props.modelValue.length)\n )\n })\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n }\n const onMouseLeave = () => {\n showClose.value = false\n }\n const isRangeInput = computed(() => {\n return props.type.indexOf('range') > -1\n })\n\n const pickerSize = useSize()\n\n const popperPaneRef = computed(() => {\n return refPopper.value?.popperRef?.contentRef\n })\n\n const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n const actualInputRef = computed(() => {\n if (unref(isRangeInput)) {\n return unref(inputRef)\n }\n\n return (unref(inputRef) as ComponentPublicInstance)?.$el\n })\n\n onClickOutside(actualInputRef, (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unref(actualInputRef)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n e.composedPath().includes(inputEl)\n )\n return\n pickerVisible.value = false\n })\n\n const userInput = ref(null)\n\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(\n Array.isArray(value)\n ? value.map((_) => _.toDate())\n : value.toDate()\n )\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(null)\n emitChange(null)\n userInput.value = null\n }\n }\n\n const blurInput = () => {\n refInput.value.forEach((input) => input.blur())\n }\n\n const parseUserInputToDayjs = (value) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput(value)\n }\n\n const formatDayjsToString = (value) => {\n if (!value) return null\n return pickerOptions.value.formatToString(value)\n }\n\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value)\n }\n\n const handleKeydown = (event) => {\n const code = event.code\n\n if (code === EVENT_CODE.esc) {\n pickerVisible.value = false\n event.stopPropagation()\n return\n }\n\n if (code === EVENT_CODE.tab) {\n if (!isRangeInput.value) {\n handleChange()\n pickerVisible.value = false\n event.stopPropagation()\n } else {\n // user may change focus between two input\n setTimeout(() => {\n if (refInput.value.indexOf(document.activeElement) === -1) {\n pickerVisible.value = false\n blurInput()\n }\n }, 0)\n }\n return\n }\n\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (\n userInput.value === null ||\n userInput.value === '' ||\n isValidValue(parseUserInputToDayjs(displayValue.value))\n ) {\n handleChange()\n pickerVisible.value = false\n }\n event.stopPropagation()\n return\n }\n\n // if user is typing, do not let picker handle key input\n if (userInput.value) {\n event.stopPropagation()\n return\n }\n\n if (pickerOptions.value.handleKeydown) {\n pickerOptions.value.handleKeydown(event)\n }\n }\n const onUserInput = (e) => {\n userInput.value = e\n }\n\n const handleStartInput = (event) => {\n if (userInput.value) {\n userInput.value = [event.target.value, userInput.value[1]]\n } else {\n userInput.value = [event.target.value, null]\n }\n }\n\n const handleEndInput = (event) => {\n if (userInput.value) {\n userInput.value = [userInput.value[0], event.target.value]\n } else {\n userInput.value = [null, event.target.value]\n }\n }\n\n const handleStartChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n const newValue = [value, parsedValue.value && parsedValue.value[1]]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const handleEndChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n if (value && value.isValid()) {\n userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n const newValue = [parsedValue.value && parsedValue.value[0], value]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\n const onSetPickerOption = <T extends keyof PickerOptions>(\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e) => {\n ctx.emit('calendar-change', e)\n }\n\n provide('EP_PICKER_BASE', {\n props,\n })\n\n return {\n // injected popper options\n elPopperOptions,\n\n isDatesPicker,\n handleEndChange,\n handleStartChange,\n handleStartInput,\n handleEndInput,\n onUserInput,\n handleChange,\n handleKeydown,\n popperPaneRef,\n onClickOutside,\n pickerSize,\n isRangeInput,\n onMouseLeave,\n onMouseEnter,\n onClearIconClick,\n showClose,\n triggerIcon,\n onPick,\n handleFocus,\n handleBlur,\n pickerVisible,\n pickerActualVisible,\n displayValue,\n parsedValue,\n setSelectionRange,\n refPopper,\n inputRef,\n pickerDisabled,\n onSetPickerOption,\n onCalendarChange,\n focus,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;0BAiGqB;;;;;;;;wBAhGnB;IACE;IACQ;;UACF;IACN;IACA;;IAEA,kBAAA;IACA;IACC;IACA;IACA;IACA;IACA,gCAA8B;IAC9B,cAAY,CAAC;IACd;IACC;;;;QAKU;;;YACN,EAAE;;yBAES;;;yCAGa;;iBAEpB;iBAEC;uBACM;;;uBAGF;YACT,QAAM;;uBAEI;;;YAGA;;;;wBAGF,EAAC;;;;;;;;;;;;;;;2BAUA;;;2EAEU;;;;;;;;;;;oCAOd;;;;;;mBAOA;;;8DAGI;;aAGF;;;kBACN,OAAM;;;;;;;;;;;;mBAQC,aAAQ;+CACe;;;cAG7B,WAAW;;cAEX,OAAK;;qBAEA;;;;;;kBAMD,WAAM;;;;;;;mBAON;;;6DAGI;;aAGH;;;;;;;;;;;;;;;;;;;QAcP;;QAEA;;;;;;"}
1
+ {"version":3,"file":"picker.vue_vue_type_template_id_1d54be91_lang.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue?vue&type=template&id=1d54be91&lang.js"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n v-model:visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :popper-class=\"`el-picker__popper ${popperClass}`\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :gpu-acceleration=\"false\"\n :stop-popper-mouse-event=\"false\"\n :hide-after=\"0\"\n persistent\n @show=\"pickerActualVisible = true\"\n @hide=\"pickerActualVisible = false\"\n >\n <template #default>\n <el-input\n v-if=\"!isRangeInput\"\n :id=\"id\"\n ref=\"inputRef\"\n :model-value=\"displayValue\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n class=\"el-date-editor\"\n :class=\"['el-date-editor--' + type, $attrs.class || undefined]\"\n :style=\"$attrs.style || undefined\"\n :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n @input=\"onUserInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n @change=\"handleChange\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n class=\"el-input__icon clear-icon\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <div\n v-else\n ref=\"inputRef\"\n class=\"el-date-editor el-range-editor el-input__inner\"\n :class=\"[\n 'el-date-editor--' + type,\n pickerSize ? `el-range-editor--${pickerSize}` : '',\n pickerDisabled ? 'is-disabled' : '',\n pickerVisible ? 'is-active' : '',\n $attrs.class || undefined,\n ]\"\n :style=\"$attrs.style || undefined\"\n @click=\"handleFocus\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @keydown=\"handleKeydown\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon el-range__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\"></component>\n </el-icon>\n <input\n :id=\"id && id[0]\"\n autocomplete=\"off\"\n :name=\"name && name[0]\"\n :placeholder=\"startPlaceholder\"\n :value=\"displayValue && displayValue[0]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocus\"\n />\n <slot name=\"range-separator\">\n <span class=\"el-range-separator\">{{ rangeSeparator }}</span>\n </slot>\n <input\n :id=\"id && id[1]\"\n autocomplete=\"off\"\n :name=\"name && name[1]\"\n :placeholder=\"endPlaceholder\"\n :value=\"displayValue && displayValue[1]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @focus=\"handleFocus\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n class=\"el-input__icon el-range__close-icon\"\n :class=\"{\n 'el-range__close-icon--hidden': !showClose,\n }\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </div>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n @pick=\"onPick\"\n @select-range=\"setSelectionRange\"\n @set-picker-option=\"onSetPickerOption\"\n @calendar-change=\"onCalendarChange\"\n @mousedown.stop\n ></slot>\n </template>\n </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n nextTick,\n inject,\n watch,\n provide,\n unref,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport isEqual from 'lodash/isEqual'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useSize } from '@element-plus/hooks'\nimport { elFormKey, elFormItemKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { EVENT_CODE } from '@element-plus/utils/aria'\nimport { isEmpty } from '@element-plus/utils/util'\nimport { Clock, Calendar } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n isValidValue: (date: Dayjs) => boolean\n handleKeydown: (event: KeyboardEvent) => void\n parseUserInput: (value: Dayjs) => dayjs.Dayjs\n formatToString: (value: Dayjs) => string | string[]\n getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n getDefaultValue: () => Dayjs\n panelReady: boolean\n handleClear: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n const aIsDate = a instanceof Date\n const bIsDate = b instanceof Date\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n const aIsArray = a instanceof Array\n const bIsArray = b instanceof Array\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nconst parser = function (\n date: Date | string,\n format: string,\n lang: string\n): Dayjs {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nconst formatter = function (date: number | Date, format: string, lang: string) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n name: 'Picker',\n components: {\n ElInput,\n ElTooltip,\n ElIcon,\n },\n props: timePickerDefaultProps,\n emits: ['update:modelValue', 'change', 'focus', 'blur', 'calendar-change'],\n setup(props, ctx) {\n const { lang } = useLocale()\n\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n const refPopper = ref<InstanceType<typeof ElTooltip>>()\n const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const valueOnOpen = ref(null)\n\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n ctx.emit('blur')\n blurInput()\n props.validateEvent && elFormItem.validate?.('blur')\n } else {\n valueOnOpen.value = props.modelValue\n }\n })\n const emitChange = (val, isClear?: boolean) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n ctx.emit('change', val)\n props.validateEvent && elFormItem.validate?.('change')\n }\n }\n const emitInput = (val) => {\n if (!valueEquals(props.modelValue, val)) {\n let formatValue\n if (Array.isArray(val)) {\n formatValue = val.map((_) =>\n formatter(_, props.valueFormat, lang.value)\n )\n } else if (val) {\n formatValue = formatter(val, props.valueFormat, lang.value)\n }\n ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n }\n }\n const refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value\n ? inputRef.value\n : (inputRef.value as any as ComponentPublicInstance).$el\n return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n }\n return []\n })\n const refStartInput = computed(() => {\n return refInput?.value[0]\n })\n const refEndInput = computed(() => {\n return refInput?.value[1]\n })\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value\n if (!_inputs.length) return\n if (!pos || pos === 'min') {\n _inputs[0].setSelectionRange(start, end)\n _inputs[0].focus()\n } else if (pos === 'max') {\n _inputs[1].setSelectionRange(start, end)\n _inputs[1].focus()\n }\n }\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (Array.isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n const focus = (focusStartInput = true) => {\n let input = refStartInput.value\n if (!focusStartInput && isRangeInput.value) {\n input = refEndInput.value\n }\n if (input) {\n input.focus()\n }\n }\n\n const handleFocus = (e) => {\n if (props.readonly || pickerDisabled.value || pickerVisible.value) return\n pickerVisible.value = true\n ctx.emit('focus', e)\n }\n\n const handleBlur = () => {\n refPopper.value?.onClose()\n blurInput()\n }\n\n const pickerDisabled = computed(() => {\n return props.disabled || elForm.disabled\n })\n\n const parsedValue = computed(() => {\n let result\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n result = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (Array.isArray(props.modelValue)) {\n result = props.modelValue.map((_) =>\n parser(_, props.valueFormat, lang.value)\n )\n } else {\n result = parser(props.modelValue, props.valueFormat, lang.value)\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult =\n pickerOptions.value.getRangeAvailableTime(result)\n if (!isEqual(availableResult, result)) {\n result = availableResult\n emitInput(\n Array.isArray(result)\n ? result.map((_) => _.toDate())\n : result.toDate()\n )\n }\n }\n if (Array.isArray(result) && result.some((_) => !_)) {\n result = []\n }\n return result\n })\n\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (Array.isArray(userInput.value)) {\n return [\n userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n ]\n } else if (userInput.value !== null) {\n return userInput.value\n }\n if (!isTimePicker.value && valueIsEmpty.value) return\n if (!pickerVisible.value && valueIsEmpty.value) return\n if (formattedValue) {\n return isDatesPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n })\n\n const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n const isTimePicker = computed(() => props.type.startsWith('time'))\n\n const isDatesPicker = computed(() => props.type === 'dates')\n\n const triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n )\n\n const showClose = ref(false)\n\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n emitInput(null)\n emitChange(null, true)\n showClose.value = false\n pickerVisible.value = false\n pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n }\n }\n const valueIsEmpty = computed(() => {\n return (\n !props.modelValue ||\n (Array.isArray(props.modelValue) && !props.modelValue.length)\n )\n })\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n }\n const onMouseLeave = () => {\n showClose.value = false\n }\n const isRangeInput = computed(() => {\n return props.type.indexOf('range') > -1\n })\n\n const pickerSize = useSize()\n\n const popperPaneRef = computed(() => {\n return refPopper.value?.popperRef?.contentRef\n })\n\n const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n const actualInputRef = computed(() => {\n if (unref(isRangeInput)) {\n return unref(inputRef)\n }\n\n return (unref(inputRef) as ComponentPublicInstance)?.$el\n })\n\n onClickOutside(actualInputRef, (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unref(actualInputRef)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n e.composedPath().includes(inputEl)\n )\n return\n pickerVisible.value = false\n })\n\n const userInput = ref(null)\n\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(\n Array.isArray(value)\n ? value.map((_) => _.toDate())\n : value.toDate()\n )\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(null)\n emitChange(null)\n userInput.value = null\n }\n }\n\n const blurInput = () => {\n refInput.value.forEach((input) => input.blur())\n }\n\n const parseUserInputToDayjs = (value) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput(value)\n }\n\n const formatDayjsToString = (value) => {\n if (!value) return null\n return pickerOptions.value.formatToString(value)\n }\n\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value)\n }\n\n const handleKeydown = (event) => {\n const code = event.code\n\n if (code === EVENT_CODE.esc) {\n pickerVisible.value = false\n event.stopPropagation()\n return\n }\n\n if (code === EVENT_CODE.tab) {\n if (!isRangeInput.value) {\n handleChange()\n pickerVisible.value = false\n event.stopPropagation()\n } else {\n // user may change focus between two input\n setTimeout(() => {\n if (refInput.value.indexOf(document.activeElement) === -1) {\n pickerVisible.value = false\n blurInput()\n }\n }, 0)\n }\n return\n }\n\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (\n userInput.value === null ||\n userInput.value === '' ||\n isValidValue(parseUserInputToDayjs(displayValue.value))\n ) {\n handleChange()\n pickerVisible.value = false\n }\n event.stopPropagation()\n return\n }\n\n // if user is typing, do not let picker handle key input\n if (userInput.value) {\n event.stopPropagation()\n return\n }\n\n if (pickerOptions.value.handleKeydown) {\n pickerOptions.value.handleKeydown(event)\n }\n }\n const onUserInput = (e) => {\n userInput.value = e\n }\n\n const handleStartInput = (event) => {\n if (userInput.value) {\n userInput.value = [event.target.value, userInput.value[1]]\n } else {\n userInput.value = [event.target.value, null]\n }\n }\n\n const handleEndInput = (event) => {\n if (userInput.value) {\n userInput.value = [userInput.value[0], event.target.value]\n } else {\n userInput.value = [null, event.target.value]\n }\n }\n\n const handleStartChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n const newValue = [value, parsedValue.value && parsedValue.value[1]]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const handleEndChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n if (value && value.isValid()) {\n userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n const newValue = [parsedValue.value && parsedValue.value[0], value]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\n const onSetPickerOption = <T extends keyof PickerOptions>(\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e) => {\n ctx.emit('calendar-change', e)\n }\n\n provide('EP_PICKER_BASE', {\n props,\n })\n\n return {\n // injected popper options\n elPopperOptions,\n\n isDatesPicker,\n handleEndChange,\n handleStartChange,\n handleStartInput,\n handleEndInput,\n onUserInput,\n handleChange,\n handleKeydown,\n popperPaneRef,\n onClickOutside,\n pickerSize,\n isRangeInput,\n onMouseLeave,\n onMouseEnter,\n onClearIconClick,\n showClose,\n triggerIcon,\n onPick,\n handleFocus,\n handleBlur,\n pickerVisible,\n pickerActualVisible,\n displayValue,\n parsedValue,\n setSelectionRange,\n refPopper,\n inputRef,\n pickerDisabled,\n onSetPickerOption,\n onCalendarChange,\n focus,\n }\n },\n})\n</script>\n"],"names":["_normalizeStyle"],"mappings":";;;;0BAmGqB;;;;;;;;wBAlGnB;IACE;IACQ;;UACF;IACN;IACA;;IAEA,kBAAA;IACA;IACC;IACA;IACA;IACA;IACA,gCAA8B;IAC9B,cAAY,CAAC;IACd;IACC;;;;QAKU;;;YACN,EAAE;;yBAES;;;yCAGa;;iBAEpB;iBAEC;uBACM;;;uBAGF;YACT,QAAM;;uBAEI;;;YAGA;;;;wBAGF,EAAC;;;;;;;;;;;;;;;2BAUA;;;2EAEU;;;;;;;;;;eAMjBA;iBACE;;;;;;;iBAQC;mBACA;;;8DAGI;;aAGF;;;kBACN,OAAM;;;;;;;;;;;;mBAQC,aAAQ;+CACe;;;cAG7B,WAAW;;cAEX,OAAK;;qBAEA;;;;;;kBAMD,WAAM;;;;;;;mBAON;;;6DAGI;;aAGH;;;;;;;;;;;;;;;;;;;QAcP;;QAEA;;;;;;"}
@@ -11,6 +11,7 @@ export declare const ElTooltip: import("../../utils/types").SFCWithInstall<impor
11
11
  };
12
12
  virtualRef: import("../../utils/props").BuildPropReturn<import("../../utils/props").PropWrapper<import("..").Measurable>, unknown, unknown, unknown, unknown>;
13
13
  virtualTriggering: import("../../utils/props").BuildPropReturn<BooleanConstructor, unknown, unknown, unknown, unknown>;
14
+ appendTo: import("../../utils/props").BuildPropReturn<import("../../utils/props").PropWrapper<string | HTMLElement>, string | (() => string) | undefined, unknown, unknown, unknown>;
14
15
  content: import("../../utils/props").BuildPropReturn<StringConstructor, string | (() => string) | undefined, unknown, unknown, unknown>;
15
16
  rawContent: import("../../utils/props").BuildPropReturn<BooleanConstructor, boolean | (() => true) | (() => false) | undefined, unknown, unknown, unknown>;
16
17
  persistent: BooleanConstructor;
@@ -187,6 +188,7 @@ export declare const ElTooltip: import("../../utils/types").SFCWithInstall<impor
187
188
  trigger?: unknown;
188
189
  virtualRef?: unknown;
189
190
  virtualTriggering?: unknown;
191
+ appendTo?: unknown;
190
192
  content?: unknown;
191
193
  rawContent?: unknown;
192
194
  persistent?: unknown;
@@ -245,6 +247,7 @@ export declare const ElTooltip: import("../../utils/types").SFCWithInstall<impor
245
247
  } | any)[])[])[])[])[])[])[])[])[])[])[];
246
248
  disabled: boolean;
247
249
  effect: string;
250
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
248
251
  showAfter: number;
249
252
  hideAfter: number;
250
253
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -331,6 +334,7 @@ export declare const ElTooltip: import("../../utils/types").SFCWithInstall<impor
331
334
  } | any)[])[])[])[])[])[])[])[])[])[])[];
332
335
  disabled: boolean;
333
336
  effect: string;
337
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
334
338
  showAfter: number;
335
339
  hideAfter: number;
336
340
  placement: import("../../utils/props").BuildPropType<(new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>) | ((new (...args: any[]) => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown> & {}) | (() => import("../../utils/props").BuildPropType<StringConstructor, import("@popperjs/core").Placement, unknown>))[], unknown, unknown>;
@@ -381,4 +385,5 @@ export declare const ElTooltip: import("../../utils/types").SFCWithInstall<impor
381
385
  trigger: "click" | "contextmenu" | "focus" | "hover" | ("click" | "contextmenu" | "focus" | "hover")[];
382
386
  }>> & Record<string, any>;
383
387
  export * from './src/tooltip';
388
+ export * from './src/tokens';
384
389
  export default ElTooltip;
@@ -1,6 +1,7 @@
1
1
  import { withInstall } from '../../utils/with-install.mjs';
2
2
  import './src/tooltip2.mjs';
3
3
  export { useTooltipContentProps, useTooltipProps, useTooltipTriggerProps } from './src/tooltip.mjs';
4
+ export { TOOLTIP_INJECTION_KEY } from './src/tokens.mjs';
4
5
  import script from './src/tooltip.vue_vue_type_script_lang.mjs';
5
6
 
6
7
  const ElTooltip = withInstall(script);
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/tooltip/index.ts"],"sourcesContent":["import { withInstall } from '@element-plus/utils/with-install'\nimport Tooltip from './src/tooltip.vue'\n\nexport const ElTooltip = withInstall(Tooltip)\nexport * from './src/tooltip'\nexport default ElTooltip\n"],"names":["Tooltip"],"mappings":";;;;;AAEY,MAAC,SAAS,GAAG,WAAW,CAACA,MAAO;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../packages/components/tooltip/index.ts"],"sourcesContent":["import { withInstall } from '@element-plus/utils/with-install'\nimport Tooltip from './src/tooltip.vue'\n\nexport const ElTooltip = withInstall(Tooltip)\nexport * from './src/tooltip'\nexport * from './src/tokens'\nexport default ElTooltip\n"],"names":["Tooltip"],"mappings":";;;;;;AAEY,MAAC,SAAS,GAAG,WAAW,CAACA,MAAO;;;;"}
@@ -1,5 +1,5 @@
1
- import { nextTick } from 'vue';
2
1
  declare const _default: import("vue").DefineComponent<{
2
+ appendTo: import("../../../utils/props").BuildPropReturn<import("../../../utils/props").PropWrapper<string | HTMLElement>, string | (() => string) | undefined, unknown, unknown, unknown>;
3
3
  content: import("../../../utils/props").BuildPropReturn<StringConstructor, string | (() => string) | undefined, unknown, unknown, unknown>;
4
4
  rawContent: import("../../../utils/props").BuildPropReturn<BooleanConstructor, boolean | (() => true) | (() => false) | undefined, unknown, unknown, unknown>;
5
5
  persistent: BooleanConstructor;
@@ -7,6 +7,7 @@ declare const _default: import("vue").DefineComponent<{
7
7
  visible: import("../../../utils/props").BuildPropReturn<import("../../../utils/props").PropWrapper<boolean | null>, (() => null) | null | undefined, unknown, unknown, unknown>;
8
8
  transition: import("../../../utils/props").BuildPropReturn<StringConstructor, string | (() => string) | undefined, unknown, unknown, unknown>;
9
9
  teleported: import("../../../utils/props").BuildPropReturn<BooleanConstructor, boolean | (() => true) | (() => false) | undefined, unknown, unknown, unknown>;
10
+ disabled: import("../../../utils/props").BuildPropReturn<BooleanConstructor, boolean | (() => true) | (() => false) | undefined, unknown, unknown, unknown>;
10
11
  style: import("../../../utils/props").BuildPropReturn<import("../../../utils/props").PropWrapper<import("vue").StyleValue>, string | import("vue").CSSProperties | (() => string) | (() => import("vue").CSSProperties) | (() => import("vue").StyleValue[]) | undefined, unknown, unknown, unknown>;
11
12
  className: import("../../../utils/props").BuildPropReturn<import("../../../utils/props").PropWrapper<string | {
12
13
  [x: string]: any;
@@ -500,7 +501,7 @@ declare const _default: import("vue").DefineComponent<{
500
501
  errorCaptured?: (((err: unknown, instance: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null, info: string) => boolean | void) | ((err: unknown, instance: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}>> | null, info: string) => boolean | void)[]) | undefined;
501
502
  };
502
503
  $forceUpdate: () => void;
503
- $nextTick: typeof nextTick;
504
+ $nextTick: typeof import("vue").nextTick;
504
505
  $watch(source: string | Function, cb: Function, options?: import("vue").WatchOptions<boolean> | undefined): import("vue").WatchStopHandle;
505
506
  } & Readonly<{
506
507
  style?: unknown;
@@ -621,15 +622,16 @@ declare const _default: import("vue").DefineComponent<{
621
622
  } | any)[])[])[])[])[])[])[])[])[])[])[])[]>;
622
623
  updatePopper: () => void;
623
624
  }> & {} & {} & import("vue").ComponentCustomProperties) | null>;
624
- shouldRenderTeleport: import("vue").ComputedRef<boolean>;
625
- shouldRenderPopperContent: import("vue").ComputedRef<boolean>;
626
- shouldShowPopperContent: import("vue").ComputedRef<boolean>;
625
+ shouldRender: import("vue").ComputedRef<boolean>;
626
+ shouldShow: import("vue").ComputedRef<boolean>;
627
627
  open: import("vue").Ref<boolean>;
628
- POPPER_CONTAINER_SELECTOR: string;
628
+ onAfterShow: () => void;
629
+ onBeforeEnter: () => void;
629
630
  onContentEnter: (event: unknown) => void;
630
631
  onContentLeave: (event: unknown) => void;
631
632
  onTransitionLeave: () => void;
632
633
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
634
+ appendTo?: unknown;
633
635
  content?: unknown;
634
636
  rawContent?: unknown;
635
637
  persistent?: unknown;
@@ -637,6 +639,7 @@ declare const _default: import("vue").DefineComponent<{
637
639
  visible?: unknown;
638
640
  transition?: unknown;
639
641
  teleported?: unknown;
642
+ disabled?: unknown;
640
643
  style?: unknown;
641
644
  className?: unknown;
642
645
  effect?: unknown;
@@ -687,7 +690,9 @@ declare const _default: import("vue").DefineComponent<{
687
690
  } | (string | {
688
691
  [x: string]: any;
689
692
  } | any)[])[])[])[])[])[])[])[])[])[])[];
693
+ disabled: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
690
694
  effect: string;
695
+ appendTo: import("../../../utils/props").BuildPropType<import("../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
691
696
  showAfter: number;
692
697
  hideAfter: number;
693
698
  placement: import("../../../utils/props").BuildPropType<(new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>) | ((new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>))[], unknown, unknown>;
@@ -763,7 +768,9 @@ declare const _default: import("vue").DefineComponent<{
763
768
  } | (string | {
764
769
  [x: string]: any;
765
770
  } | any)[])[])[])[])[])[])[])[])[])[])[];
771
+ disabled: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
766
772
  effect: string;
773
+ appendTo: import("../../../utils/props").BuildPropType<import("../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
767
774
  showAfter: number;
768
775
  hideAfter: number;
769
776
  placement: import("../../../utils/props").BuildPropType<(new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>) | ((new (...args: any[]) => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown> & {}) | (() => import("../../../utils/props").BuildPropType<StringConstructor, import("@element-plus/components/popper").Placement, unknown>))[], unknown, unknown>;
@@ -1,7 +1,7 @@
1
- import { defineComponent, ref, inject, computed, unref, nextTick } from 'vue';
1
+ import { defineComponent, ref, inject, computed, unref, watch } from 'vue';
2
+ import { onClickOutside } from '@vueuse/core';
2
3
  import '../../popper/index.mjs';
3
4
  import '../../visual-hidden/index.mjs';
4
- import { ElTeleport } from '../../teleport/index.mjs';
5
5
  import { composeEventHandlers } from '../../../utils/dom.mjs';
6
6
  import '../../../hooks/index.mjs';
7
7
  import { useTooltipContentProps } from './tooltip.mjs';
@@ -9,13 +9,10 @@ import { TOOLTIP_INJECTION_KEY } from './tokens.mjs';
9
9
  import script$1 from '../../popper/src/content.vue_vue_type_script_lang.mjs';
10
10
  import script$2 from '../../visual-hidden/src/visual-hidden.vue_vue_type_script_lang.mjs';
11
11
  import { useEscapeKeydown } from '../../../hooks/use-escape-keydown/index.mjs';
12
- import { useDelayedRender } from '../../../hooks/use-intermediate-render/index.mjs';
13
- import { POPPER_CONTAINER_SELECTOR } from '../../../hooks/use-popper-container/index.mjs';
14
12
 
15
13
  var script = defineComponent({
16
14
  name: "ElTooltipContent",
17
15
  components: {
18
- ElTeleport,
19
16
  ElPopperContent: script$1,
20
17
  ElVisuallyHidden: script$2
21
18
  },
@@ -33,76 +30,27 @@ var script = defineComponent({
33
30
  }
34
31
  return props.persistent;
35
32
  });
33
+ const shouldRender = computed(() => {
34
+ return unref(persistentRef) ? true : unref(open);
35
+ });
36
+ const shouldShow = computed(() => {
37
+ return props.disabled ? false : unref(open);
38
+ });
36
39
  const contentStyle = computed(() => {
37
40
  var _a;
38
41
  return (_a = props.style) != null ? _a : {};
39
42
  });
40
- const shouldRenderTeleport = computed(() => {
41
- if (unref(persistentRef))
42
- return true;
43
- return unref(unref(entering) ? open : intermediateOpen);
44
- });
45
- const shouldRenderPopperContent = computed(() => {
46
- if (unref(persistentRef))
47
- return true;
48
- return unref(unref(leaving) ? open : intermediateOpen);
49
- });
50
- const shouldShowPopperContent = computed(() => {
51
- if (unref(persistentRef)) {
52
- return unref(unref(leaving) ? open : intermediateOpen);
53
- }
54
- return true;
55
- });
56
- const ariaHidden = computed(() => !(unref(shouldRenderPopperContent) && unref(shouldShowPopperContent)));
43
+ const ariaHidden = computed(() => !unref(open));
57
44
  useEscapeKeydown(onClose);
58
- useDelayedRender({
59
- indicator: open,
60
- intermediateIndicator: intermediateOpen,
61
- shouldSetIntermediate: (step) => {
62
- return step === "hide" ? false : true;
63
- },
64
- beforeShow: () => {
65
- if (unref(leaving)) {
66
- leaving.value = false;
67
- intermediateOpen.value = false;
68
- }
69
- entering.value = true;
70
- },
71
- beforeHide: () => {
72
- if (unref(entering)) {
73
- entering.value = false;
74
- return;
75
- }
76
- leaving.value = true;
77
- },
78
- afterShow: () => {
79
- if (!unref(open))
80
- return;
81
- entering.value = false;
82
- onShow();
83
- nextTick(() => {
84
- var _a;
85
- (_a = unref(contentRef)) == null ? void 0 : _a.updatePopper();
86
- });
87
- },
88
- afterHide: () => {
89
- if (unref(open))
90
- return;
91
- onHide();
92
- }
93
- });
94
45
  const onTransitionLeave = () => {
95
- if (unref(open))
96
- return;
97
- leaving.value = false;
98
- intermediateOpen.value = false;
46
+ onHide();
99
47
  };
100
48
  const stopWhenControlled = () => {
101
49
  if (unref(controlled))
102
50
  return true;
103
51
  };
104
52
  const onContentEnter = composeEventHandlers(stopWhenControlled, () => {
105
- if (props.enterable) {
53
+ if (props.enterable && unref(trigger) === "hover") {
106
54
  onOpen();
107
55
  }
108
56
  });
@@ -111,6 +59,33 @@ var script = defineComponent({
111
59
  onClose();
112
60
  }
113
61
  });
62
+ const onBeforeEnter = () => {
63
+ var _a, _b;
64
+ (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);
65
+ };
66
+ const onAfterShow = () => {
67
+ onShow();
68
+ };
69
+ let stopHandle;
70
+ watch(() => unref(open), (val) => {
71
+ if (val) {
72
+ stopHandle = onClickOutside(computed(() => {
73
+ var _a;
74
+ return (_a = contentRef.value) == null ? void 0 : _a.popperContentRef;
75
+ }), () => {
76
+ if (unref(controlled))
77
+ return;
78
+ const $trigger = unref(trigger);
79
+ if ($trigger !== "hover") {
80
+ onClose();
81
+ }
82
+ });
83
+ } else {
84
+ stopHandle == null ? void 0 : stopHandle();
85
+ }
86
+ }, {
87
+ flush: "post"
88
+ });
114
89
  return {
115
90
  ariaHidden,
116
91
  entering,
@@ -119,11 +94,11 @@ var script = defineComponent({
119
94
  intermediateOpen,
120
95
  contentStyle,
121
96
  contentRef,
122
- shouldRenderTeleport,
123
- shouldRenderPopperContent,
124
- shouldShowPopperContent,
97
+ shouldRender,
98
+ shouldShow,
125
99
  open,
126
- POPPER_CONTAINER_SELECTOR,
100
+ onAfterShow,
101
+ onBeforeEnter,
127
102
  onContentEnter,
128
103
  onContentLeave,
129
104
  onTransitionLeave
@@ -1 +1 @@
1
- {"version":3,"file":"content.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/tooltip/src/content.vue"],"sourcesContent":["<template>\n <el-teleport\n v-if=\"shouldRenderTeleport\"\n :disabled=\"!teleported\"\n :container=\"POPPER_CONTAINER_SELECTOR\"\n >\n <transition :name=\"transition\" @after-leave=\"onTransitionLeave\">\n <el-popper-content\n v-if=\"shouldRenderPopperContent\"\n v-show=\"shouldShowPopperContent\"\n ref=\"contentRef\"\n v-bind=\"$attrs\"\n :aria-hidden=\"ariaHidden\"\n :boundaries-padding=\"boundariesPadding\"\n :fallback-placements=\"fallbackPlacements\"\n :gpu-acceleration=\"gpuAcceleration\"\n :offset=\"offset\"\n :placement=\"placement\"\n :popper-options=\"popperOptions\"\n :strategy=\"strategy\"\n :effect=\"effect\"\n :enterable=\"enterable\"\n :pure=\"pure\"\n :popper-class=\"popperClass\"\n :popper-style=\"[popperStyle, contentStyle]\"\n :reference-el=\"referenceEl\"\n :z-index=\"zIndex\"\n @mouseenter=\"onContentEnter\"\n @mouseleave=\"onContentLeave\"\n >\n <slot />\n <el-visually-hidden :id=\"id\" role=\"tooltip\">\n {{ ariaLabel }}\n </el-visually-hidden>\n </el-popper-content>\n </transition>\n </el-teleport>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, nextTick, ref, unref } from 'vue'\nimport { ElPopperContent } from '@element-plus/components/popper'\nimport { ElVisuallyHidden } from '@element-plus/components/visual-hidden'\nimport { ElTeleport } from '@element-plus/components/teleport'\nimport { composeEventHandlers } from '@element-plus/utils/dom'\nimport {\n useEscapeKeydown,\n POPPER_CONTAINER_SELECTOR,\n useDelayedRender,\n} from '@element-plus/hooks'\n\nimport { useTooltipContentProps } from './tooltip'\nimport { TOOLTIP_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n name: 'ElTooltipContent',\n components: {\n ElTeleport,\n ElPopperContent,\n ElVisuallyHidden,\n },\n inheritAttrs: false,\n props: useTooltipContentProps,\n setup(props) {\n const contentRef = ref<InstanceType<typeof ElPopperContent> | null>(null)\n const intermediateOpen = ref(false)\n const entering = ref(false)\n const leaving = ref(false)\n const { controlled, id, open, trigger, onClose, onOpen, onShow, onHide } =\n inject(TOOLTIP_INJECTION_KEY, undefined)!\n const persistentRef = computed(() => {\n // For testing, we would always want the content to be rendered\n // to the DOM, so we need to return true here.\n if (process.env.NODE_ENV === 'test') {\n return true\n }\n return props.persistent\n })\n\n const contentStyle = computed(() => (props.style ?? {}) as any)\n const shouldRenderTeleport = computed(() => {\n if (unref(persistentRef)) return true\n return unref(unref(entering) ? open : intermediateOpen)\n })\n\n const shouldRenderPopperContent = computed(() => {\n if (unref(persistentRef)) return true\n return unref(unref(leaving) ? open : intermediateOpen)\n })\n\n const shouldShowPopperContent = computed(() => {\n // This is for control persistent mode transition\n // When persistent this element will always be rendered, we simply use v-show to control the transition\n if (unref(persistentRef)) {\n return unref(unref(leaving) ? open : intermediateOpen)\n }\n return true\n })\n\n const ariaHidden = computed(\n () =>\n !(unref(shouldRenderPopperContent) && unref(shouldShowPopperContent))\n )\n\n useEscapeKeydown(onClose)\n\n useDelayedRender({\n indicator: open,\n intermediateIndicator: intermediateOpen,\n shouldSetIntermediate: (step) => {\n // we don't want to set the intermediateOpen because we want the transition to finish.\n // After transition finishes, with the hook after-leave we can call intermediate.value = false\n return step === 'hide' ? false : true\n },\n beforeShow: () => {\n // indicates interruption of hide transition\n if (unref(leaving)) {\n leaving.value = false\n intermediateOpen.value = false\n }\n entering.value = true\n },\n beforeHide: () => {\n // indicates interruption of show transition\n if (unref(entering)) {\n entering.value = false\n return\n }\n leaving.value = true\n },\n afterShow: () => {\n if (!unref(open)) return\n entering.value = false\n onShow()\n nextTick(() => {\n unref(contentRef)?.updatePopper()\n })\n },\n afterHide: () => {\n if (unref(open)) return\n // prevent the content from hiding if it's still open\n onHide()\n },\n })\n\n const onTransitionLeave = () => {\n if (unref(open)) return\n leaving.value = false\n intermediateOpen.value = false\n }\n\n const stopWhenControlled = () => {\n if (unref(controlled)) return true\n }\n\n const onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n if (props.enterable) {\n onOpen()\n }\n })\n\n const onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n if (unref(trigger) === 'hover') {\n onClose()\n }\n })\n\n return {\n ariaHidden,\n entering,\n leaving,\n id,\n intermediateOpen,\n contentStyle,\n contentRef,\n shouldRenderTeleport,\n shouldRenderPopperContent,\n shouldShowPopperContent,\n open,\n POPPER_CONTAINER_SELECTOR,\n onContentEnter,\n onContentLeave,\n onTransitionLeave,\n }\n },\n})\n</script>\n"],"names":["ElPopperContent","ElVisuallyHidden"],"mappings":";;;;;;;;;;;;;;AAmDA,aAAe,eAAe;AAC9B,EAAE,wBAAwB;;AAE1B,IAAI;qBACAA,QAAe;sBACfC;;cAEU,EAAE;OACT,EAAE;EACP;IACE,MAAM,UAAU;IAChB,MAAM,gBAAgB,GAAG;IACzB,MAAM;IACN,MAAM,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC9B,MAAM,aAAa,GAAG;MACpB,IAAI,QAAQ,GAAG,CAAC;QACd,OAAO,IAAI,CAAC;OACb;MACD,OAAO,KAAK,CAAC,UAAU,CAAC;MACxB,CAAC;UACG,YAAY,GAAG,QAAQ,OAAO;MAClC,IAAI,EAAE,CAAC;aACA,GAAG;MACV;UACI;;;MAGJ,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC,GAAG,IAAI,GAAG,gBAAgB,CAAC;KACxD,CAAC,CAAC;UACG,yBAAyB;MAC7B,IAAI,KAAK,CAAC,aAAa,CAAC;;;KAGzB,CAAC,CAAC;UACG,uBAAuB,GAAG;MAC9B,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;;;MAG1B,OAAO,IAAI,CAAC;MACZ,CAAC;UACG,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,yBAAyB,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAAC;oBACxF,CAAC,OAAO,CAAC,CAAC;oBACV,CAAC;MACf;MACA;;;OAGC;MACD;QACE,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE;;;SAGnB;;OAEF;MACD,YAAY;QACV,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;UACnB,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;iBAChB;SACR;QACD,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;OACtB;MACD,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;iBACP;gBACD,CAAC,KAAK,QAAQ;cAChB,EAAE,CAAC;QACT;UACE,IAAI,EAAE,CAAC;;SAER,CAAC,CAAC;;eAEI,EAAE,MAAM;YACX,KAAK,CAAC,IAAI,CAAC;UACb;QACF;;MAEF,CAAC;UACG;eACK,CAAC,IAAI,CAAC;QACb,OAAO;aACF,CAAC;uBACS;;;MAGjB;QACE,OAAO,KAAK;;wBAEI,GAAG,oBAAoB,CAAC;UACtC,KAAK;;;;IAIX,MAAM,cAAc;MAClB,IAAI,KAAK,CAAC,OAAO,CAAC;QAChB,OAAO,EAAE,CAAC;OACX;;;MAGD,UAAU;MACV,QAAQ;;;MAGR,gBAAgB;MAChB,YAAY;;MAEZ;;;MAGA,IAAI;MACJ,yBAAyB;;MAEzB;;;;;;;;"}
1
+ {"version":3,"file":"content.vue_vue_type_script_lang.mjs","sources":["../../../../../../packages/components/tooltip/src/content.vue"],"sourcesContent":["<template>\n <teleport :disabled=\"!teleported\" :to=\"appendTo\">\n <transition\n :name=\"transition\"\n @after-leave=\"onTransitionLeave\"\n @before-enter=\"onBeforeEnter\"\n @after-enter=\"onAfterShow\"\n >\n <el-popper-content\n v-if=\"shouldRender\"\n v-show=\"shouldShow\"\n ref=\"contentRef\"\n v-bind=\"$attrs\"\n :aria-hidden=\"ariaHidden\"\n :boundaries-padding=\"boundariesPadding\"\n :fallback-placements=\"fallbackPlacements\"\n :gpu-acceleration=\"gpuAcceleration\"\n :offset=\"offset\"\n :placement=\"placement\"\n :popper-options=\"popperOptions\"\n :strategy=\"strategy\"\n :effect=\"effect\"\n :enterable=\"enterable\"\n :pure=\"pure\"\n :popper-class=\"popperClass\"\n :popper-style=\"[popperStyle, contentStyle]\"\n :reference-el=\"referenceEl\"\n :z-index=\"zIndex\"\n @mouseenter=\"onContentEnter\"\n @mouseleave=\"onContentLeave\"\n >\n <slot />\n <el-visually-hidden :id=\"id\" role=\"tooltip\">\n {{ ariaLabel }}\n </el-visually-hidden>\n </el-popper-content>\n </transition>\n </teleport>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, ref, unref, watch } from 'vue'\nimport { onClickOutside } from '@vueuse/core'\nimport { ElPopperContent } from '@element-plus/components/popper'\nimport { ElVisuallyHidden } from '@element-plus/components/visual-hidden'\nimport { composeEventHandlers } from '@element-plus/utils/dom'\nimport { useEscapeKeydown } from '@element-plus/hooks'\n\nimport { useTooltipContentProps } from './tooltip'\nimport { TOOLTIP_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n name: 'ElTooltipContent',\n components: {\n ElPopperContent,\n ElVisuallyHidden,\n },\n inheritAttrs: false,\n props: useTooltipContentProps,\n setup(props) {\n const contentRef = ref<InstanceType<typeof ElPopperContent> | null>(null)\n const intermediateOpen = ref(false)\n const entering = ref(false)\n const leaving = ref(false)\n const { controlled, id, open, trigger, onClose, onOpen, onShow, onHide } =\n inject(TOOLTIP_INJECTION_KEY, undefined)!\n const persistentRef = computed(() => {\n // For testing, we would always want the content to be rendered\n // to the DOM, so we need to return true here.\n if (process.env.NODE_ENV === 'test') {\n return true\n }\n return props.persistent\n })\n\n const shouldRender = computed(() => {\n return unref(persistentRef) ? true : unref(open)\n })\n\n const shouldShow = computed(() => {\n return props.disabled ? false : unref(open)\n })\n\n const contentStyle = computed(() => (props.style ?? {}) as any)\n\n const ariaHidden = computed(() => !unref(open))\n\n useEscapeKeydown(onClose)\n\n const onTransitionLeave = () => {\n onHide()\n }\n\n const stopWhenControlled = () => {\n if (unref(controlled)) return true\n }\n\n const onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n if (props.enterable && unref(trigger) === 'hover') {\n onOpen()\n }\n })\n\n const onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n if (unref(trigger) === 'hover') {\n onClose()\n }\n })\n\n const onBeforeEnter = () => {\n contentRef.value?.updatePopper?.()\n }\n\n const onAfterShow = () => {\n onShow()\n }\n\n let stopHandle: ReturnType<typeof onClickOutside>\n\n watch(\n () => unref(open),\n (val) => {\n if (val) {\n stopHandle = onClickOutside(\n computed(() => {\n return contentRef.value?.popperContentRef\n }),\n () => {\n if (unref(controlled)) return\n const $trigger = unref(trigger)\n if ($trigger !== 'hover') {\n onClose()\n }\n }\n )\n } else {\n stopHandle?.()\n }\n },\n {\n flush: 'post',\n }\n )\n\n return {\n ariaHidden,\n entering,\n leaving,\n id,\n intermediateOpen,\n contentStyle,\n contentRef,\n shouldRender,\n shouldShow,\n open,\n onAfterShow,\n onBeforeEnter,\n onContentEnter,\n onContentLeave,\n onTransitionLeave,\n }\n },\n})\n</script>\n"],"names":["ElPopperContent","ElVisuallyHidden"],"mappings":";;;;;;;;;;;;AAgDA,aAAe,eAAe;AAC9B,EAAE,wBAAwB;;AAE1B,qBAAIA,QAAe;sBACfC,QAAgB;GACjB;cACW,EAAE;OACT,EAAE;EACP;IACE,MAAM,UAAU;IAChB,MAAM,gBAAgB,GAAG;IACzB,MAAM;IACN,MAAM,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC9B,MAAM,aAAa,GAAG;MACpB,IAAI,QAAQ,GAAG,CAAC;QACd,OAAO,IAAI,CAAC;OACb;MACD,OAAO,KAAK,CAAC,UAAU,CAAC;MACxB,CAAC;UACG,YAAY,GAAG,QAAQ,OAAO;MAClC,OAAO,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,GAAG;;;MAGrC,OAAO,KAAK,CAAC,QAAQ;KACtB;;MAEC,IAAI,EAAE,CAAC;MACP,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,SAAS,KAAK,GAAG,EAAE,CAAC;KAC7C;;IAED,iBAAiB,OAAO,CAAC,CAAC;UACpB,oBAAoB,MAAM;;;IAGhC,MAAM,kBAAkB,GAAG,MAAM;;QAE7B,OAAO,IAAI;;IAEf,MAAM,cAAc,GAAG;;QAEnB,MAAM,EAAE,CAAC;OACV;;;MAGD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK;eACd,EAAE,CAAC;;;IAGd,MAAM,aAAa,SAAS;MAC1B,IAAI,EAAE,EAAE,EAAE,CAAC;SACR,GAAG,CAAC,EAAE;MACT;IACF;;KAEC,CAAC;kBACY,CAAC;SACV,CAAC,MAAM;MACV;;;UAGI,OAAO,CAAC,EAAE;SACX,CAAC,EAAE,MAAM;;;UAGR,MAAM,QAAQ,GAAG;UACjB;;;SAGD,CAAC,CAAC;;QAEH;OACD;OACA;WACI,EAAE;;;gBAGG;cACF;aACD;;sBAES;kBACJ;gBACF;;;UAGN;;mBAES;;MAEb;MACA;;;;;;;"}