@element-plus/nightly 0.0.20220109 → 0.0.20220113

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 (216) hide show
  1. package/attributes.json +1 -1
  2. package/dist/index.css +1 -1
  3. package/dist/index.full.js +417 -437
  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 +421 -442
  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/cascader/src/index.vue_vue_type_script_lang.mjs.map +1 -1
  15. package/es/components/cascader/src/index.vue_vue_type_template_id_0429c2db_lang.mjs +5 -3
  16. package/es/components/cascader/src/index.vue_vue_type_template_id_0429c2db_lang.mjs.map +1 -1
  17. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs +6 -0
  18. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.mjs.map +1 -1
  19. package/es/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.mjs.map +1 -1
  20. package/es/components/descriptions/index.d.ts +4 -4
  21. package/es/components/descriptions/src/description-item.d.ts +2 -2
  22. package/es/components/dropdown/index.d.ts +19 -7
  23. package/es/components/dropdown/src/dropdown-item-impl.vue_vue_type_script_lang.mjs.map +1 -1
  24. package/es/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.mjs +32 -26
  25. package/es/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.mjs.map +1 -1
  26. package/es/components/dropdown/src/dropdown-item.vue.d.ts +3 -2
  27. package/es/components/dropdown/src/dropdown-item.vue_vue_type_script_lang.mjs +6 -3
  28. package/es/components/dropdown/src/dropdown-item.vue_vue_type_script_lang.mjs.map +1 -1
  29. package/es/components/dropdown/src/dropdown-item.vue_vue_type_template_id_396ed16b_lang.mjs.map +1 -1
  30. package/es/components/dropdown/src/dropdown-menu.vue.d.ts +1 -0
  31. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.mjs +8 -7
  32. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.mjs.map +1 -1
  33. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.mjs +1 -1
  34. package/es/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.mjs.map +1 -1
  35. package/es/components/dropdown/src/dropdown.vue.d.ts +11 -3
  36. package/es/components/index.mjs +1 -0
  37. package/es/components/index.mjs.map +1 -1
  38. package/es/components/message-box/src/index.vue.d.ts +2 -2
  39. package/es/components/pagination/index.d.ts +2 -2
  40. package/es/components/pagination/src/pagination.d.ts +2 -2
  41. package/es/components/popover/index.d.ts +18 -2
  42. package/es/components/popover/src/index.vue.d.ts +9 -1
  43. package/es/components/popper/src/content.vue_vue_type_script_lang.mjs +2 -1
  44. package/es/components/popper/src/content.vue_vue_type_script_lang.mjs.map +1 -1
  45. package/es/components/popper/src/content.vue_vue_type_template_id_611b76f0_lang.mjs.map +1 -1
  46. package/es/components/popper/src/trigger.vue.d.ts +3 -3
  47. package/es/components/popper/src/trigger.vue_vue_type_script_lang.mjs +2 -2
  48. package/es/components/popper/src/trigger.vue_vue_type_script_lang.mjs.map +1 -1
  49. package/es/components/popper/src/trigger.vue_vue_type_template_id_4fb6e0af_lang.mjs.map +1 -1
  50. package/es/components/roving-focus-group/src/roving-focus-group-impl.vue.d.ts +1 -1
  51. package/es/components/roving-focus-group/src/roving-focus-item.vue.d.ts +1 -1
  52. package/es/components/select/index.d.ts +9 -1
  53. package/es/components/select/src/select.vue.d.ts +9 -1
  54. package/es/components/select/src/useSelect.d.ts +9 -1
  55. package/es/components/select-v2/index.d.ts +18 -2
  56. package/es/components/select-v2/src/select.vue.d.ts +9 -1
  57. package/es/components/select-v2/src/useSelect.d.ts +9 -1
  58. package/es/components/table/src/filter-panel.vue.d.ts +9 -1
  59. package/es/components/time-picker/src/common/picker.vue.d.ts +9 -1
  60. package/es/components/time-picker/src/common/picker.vue_vue_type_script_lang.mjs.map +1 -1
  61. package/es/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.mjs +4 -2
  62. package/es/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.mjs.map +1 -1
  63. package/es/components/time-select/index.d.ts +14 -0
  64. package/es/components/time-select/src/time-select.vue.d.ts +7 -0
  65. package/es/components/time-select/src/time-select.vue_vue_type_script_lang.mjs +45 -7
  66. package/es/components/time-select/src/time-select.vue_vue_type_script_lang.mjs.map +1 -1
  67. package/es/components/time-select/src/time-select.vue_vue_type_template_id_5beb6389_lang.mjs.map +1 -1
  68. package/es/components/tooltip/index.d.ts +5 -0
  69. package/es/components/tooltip/index.mjs +1 -0
  70. package/es/components/tooltip/index.mjs.map +1 -1
  71. package/es/components/tooltip/src/content.vue.d.ts +13 -6
  72. package/es/components/tooltip/src/content.vue_vue_type_script_lang.mjs +42 -67
  73. package/es/components/tooltip/src/content.vue_vue_type_script_lang.mjs.map +1 -1
  74. package/es/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.mjs +53 -56
  75. package/es/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.mjs.map +1 -1
  76. package/es/components/tooltip/src/tokens.d.ts +1 -0
  77. package/es/components/tooltip/src/tokens.mjs.map +1 -1
  78. package/es/components/tooltip/src/tooltip.d.ts +2 -0
  79. package/es/components/tooltip/src/tooltip.mjs +8 -0
  80. package/es/components/tooltip/src/tooltip.mjs.map +1 -1
  81. package/es/components/tooltip/src/tooltip.vue.d.ts +4 -0
  82. package/es/components/tooltip/src/tooltip.vue_vue_type_script_lang.mjs +2 -1
  83. package/es/components/tooltip/src/tooltip.vue_vue_type_script_lang.mjs.map +1 -1
  84. package/es/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.mjs +2 -1
  85. package/es/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.mjs.map +1 -1
  86. package/es/components/tooltip/src/trigger.vue.d.ts +1 -1
  87. package/es/components/tooltip/src/trigger.vue_vue_type_script_lang.mjs +2 -2
  88. package/es/components/tooltip/src/trigger.vue_vue_type_script_lang.mjs.map +1 -1
  89. package/es/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.mjs +2 -2
  90. package/es/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.mjs.map +1 -1
  91. package/es/components/tree/src/model/useDragNode.mjs +1 -1
  92. package/es/components/tree/src/model/useDragNode.mjs.map +1 -1
  93. package/es/components/tree/src/tree-node.vue_vue_type_script_lang.mjs +1 -1
  94. package/es/components/tree/src/tree-node.vue_vue_type_script_lang.mjs.map +1 -1
  95. package/es/components/tree/src/tree-node.vue_vue_type_template_id_62959aba_lang.mjs.map +1 -1
  96. package/es/components/tree-v2/src/tree-node.vue.d.ts +1 -1
  97. package/es/components/virtual-list/src/builders/build-grid.d.ts +2 -2
  98. package/es/components/virtual-list/src/builders/build-list.d.ts +2 -2
  99. package/es/components/virtual-list/src/components/dynamic-size-grid.d.ts +2 -2
  100. package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +2 -2
  101. package/es/components/virtual-list/src/components/fixed-size-grid.d.ts +2 -2
  102. package/es/components/virtual-list/src/components/fixed-size-list.d.ts +2 -2
  103. package/es/index.mjs +1 -0
  104. package/es/index.mjs.map +1 -1
  105. package/es/version.d.ts +1 -1
  106. package/es/version.mjs +1 -1
  107. package/es/version.mjs.map +1 -1
  108. package/lib/components/calendar/src/calendar.vue_vue_type_script_lang.js +4 -4
  109. package/lib/components/calendar/src/calendar.vue_vue_type_script_lang.js.map +1 -1
  110. package/lib/components/calendar/src/calendar.vue_vue_type_template_id_76705c76_lang.js.map +1 -1
  111. package/lib/components/cascader/index.d.ts +18 -2
  112. package/lib/components/cascader/src/index.vue.d.ts +9 -1
  113. package/lib/components/cascader/src/index.vue_vue_type_script_lang.js.map +1 -1
  114. package/lib/components/cascader/src/index.vue_vue_type_template_id_0429c2db_lang.js +4 -2
  115. package/lib/components/cascader/src/index.vue_vue_type_template_id_0429c2db_lang.js.map +1 -1
  116. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js +6 -0
  117. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_script_lang.js.map +1 -1
  118. package/lib/components/date-picker/src/date-picker-com/panel-date-pick.vue_vue_type_template_id_78e07aa7_lang.js.map +1 -1
  119. package/lib/components/descriptions/index.d.ts +4 -4
  120. package/lib/components/descriptions/src/description-item.d.ts +2 -2
  121. package/lib/components/dropdown/index.d.ts +19 -7
  122. package/lib/components/dropdown/src/dropdown-item-impl.vue_vue_type_script_lang.js.map +1 -1
  123. package/lib/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.js +31 -25
  124. package/lib/components/dropdown/src/dropdown-item-impl.vue_vue_type_template_id_6daab4f2_lang.js.map +1 -1
  125. package/lib/components/dropdown/src/dropdown-item.vue.d.ts +3 -2
  126. package/lib/components/dropdown/src/dropdown-item.vue_vue_type_script_lang.js +6 -3
  127. package/lib/components/dropdown/src/dropdown-item.vue_vue_type_script_lang.js.map +1 -1
  128. package/lib/components/dropdown/src/dropdown-item.vue_vue_type_template_id_396ed16b_lang.js.map +1 -1
  129. package/lib/components/dropdown/src/dropdown-menu.vue.d.ts +1 -0
  130. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.js +7 -6
  131. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_script_lang.js.map +1 -1
  132. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.js +1 -1
  133. package/lib/components/dropdown/src/dropdown-menu.vue_vue_type_template_id_617b3492_lang.js.map +1 -1
  134. package/lib/components/dropdown/src/dropdown.vue.d.ts +11 -3
  135. package/lib/components/index.js +2 -0
  136. package/lib/components/index.js.map +1 -1
  137. package/lib/components/message-box/src/index.vue.d.ts +2 -2
  138. package/lib/components/pagination/index.d.ts +2 -2
  139. package/lib/components/pagination/src/pagination.d.ts +2 -2
  140. package/lib/components/popover/index.d.ts +18 -2
  141. package/lib/components/popover/src/index.vue.d.ts +9 -1
  142. package/lib/components/popper/src/content.vue_vue_type_script_lang.js +2 -1
  143. package/lib/components/popper/src/content.vue_vue_type_script_lang.js.map +1 -1
  144. package/lib/components/popper/src/content.vue_vue_type_template_id_611b76f0_lang.js.map +1 -1
  145. package/lib/components/popper/src/trigger.vue.d.ts +3 -3
  146. package/lib/components/popper/src/trigger.vue_vue_type_script_lang.js +2 -2
  147. package/lib/components/popper/src/trigger.vue_vue_type_script_lang.js.map +1 -1
  148. package/lib/components/popper/src/trigger.vue_vue_type_template_id_4fb6e0af_lang.js.map +1 -1
  149. package/lib/components/roving-focus-group/src/roving-focus-group-impl.vue.d.ts +1 -1
  150. package/lib/components/roving-focus-group/src/roving-focus-item.vue.d.ts +1 -1
  151. package/lib/components/select/index.d.ts +9 -1
  152. package/lib/components/select/src/select.vue.d.ts +9 -1
  153. package/lib/components/select/src/useSelect.d.ts +9 -1
  154. package/lib/components/select-v2/index.d.ts +18 -2
  155. package/lib/components/select-v2/src/select.vue.d.ts +9 -1
  156. package/lib/components/select-v2/src/useSelect.d.ts +9 -1
  157. package/lib/components/table/src/filter-panel.vue.d.ts +9 -1
  158. package/lib/components/time-picker/src/common/picker.vue.d.ts +9 -1
  159. package/lib/components/time-picker/src/common/picker.vue_vue_type_script_lang.js.map +1 -1
  160. package/lib/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.js +4 -2
  161. package/lib/components/time-picker/src/common/picker.vue_vue_type_template_id_1d54be91_lang.js.map +1 -1
  162. package/lib/components/time-select/index.d.ts +14 -0
  163. package/lib/components/time-select/src/time-select.vue.d.ts +7 -0
  164. package/lib/components/time-select/src/time-select.vue_vue_type_script_lang.js +50 -7
  165. package/lib/components/time-select/src/time-select.vue_vue_type_script_lang.js.map +1 -1
  166. package/lib/components/time-select/src/time-select.vue_vue_type_template_id_5beb6389_lang.js.map +1 -1
  167. package/lib/components/tooltip/index.d.ts +5 -0
  168. package/lib/components/tooltip/index.js +2 -0
  169. package/lib/components/tooltip/index.js.map +1 -1
  170. package/lib/components/tooltip/src/content.vue.d.ts +13 -6
  171. package/lib/components/tooltip/src/content.vue_vue_type_script_lang.js +43 -68
  172. package/lib/components/tooltip/src/content.vue_vue_type_script_lang.js.map +1 -1
  173. package/lib/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.js +52 -55
  174. package/lib/components/tooltip/src/content.vue_vue_type_template_id_20254f8d_lang.js.map +1 -1
  175. package/lib/components/tooltip/src/tokens.d.ts +1 -0
  176. package/lib/components/tooltip/src/tokens.js.map +1 -1
  177. package/lib/components/tooltip/src/tooltip.d.ts +2 -0
  178. package/lib/components/tooltip/src/tooltip.js +8 -0
  179. package/lib/components/tooltip/src/tooltip.js.map +1 -1
  180. package/lib/components/tooltip/src/tooltip.vue.d.ts +4 -0
  181. package/lib/components/tooltip/src/tooltip.vue_vue_type_script_lang.js +2 -1
  182. package/lib/components/tooltip/src/tooltip.vue_vue_type_script_lang.js.map +1 -1
  183. package/lib/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.js +2 -1
  184. package/lib/components/tooltip/src/tooltip.vue_vue_type_template_id_694d1617_lang.js.map +1 -1
  185. package/lib/components/tooltip/src/trigger.vue.d.ts +1 -1
  186. package/lib/components/tooltip/src/trigger.vue_vue_type_script_lang.js +2 -2
  187. package/lib/components/tooltip/src/trigger.vue_vue_type_script_lang.js.map +1 -1
  188. package/lib/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.js +2 -2
  189. package/lib/components/tooltip/src/trigger.vue_vue_type_template_id_0ec0b94c_lang.js.map +1 -1
  190. package/lib/components/tree/src/model/useDragNode.js +1 -1
  191. package/lib/components/tree/src/model/useDragNode.js.map +1 -1
  192. package/lib/components/tree/src/tree-node.vue_vue_type_script_lang.js +1 -1
  193. package/lib/components/tree/src/tree-node.vue_vue_type_script_lang.js.map +1 -1
  194. package/lib/components/tree/src/tree-node.vue_vue_type_template_id_62959aba_lang.js.map +1 -1
  195. package/lib/components/tree-v2/src/tree-node.vue.d.ts +1 -1
  196. package/lib/components/virtual-list/src/builders/build-grid.d.ts +2 -2
  197. package/lib/components/virtual-list/src/builders/build-list.d.ts +2 -2
  198. package/lib/components/virtual-list/src/components/dynamic-size-grid.d.ts +2 -2
  199. package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +2 -2
  200. package/lib/components/virtual-list/src/components/fixed-size-grid.d.ts +2 -2
  201. package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +2 -2
  202. package/lib/index.js +2 -0
  203. package/lib/index.js.map +1 -1
  204. package/lib/version.d.ts +1 -1
  205. package/lib/version.js +1 -1
  206. package/lib/version.js.map +1 -1
  207. package/package.json +2 -2
  208. package/tags.json +1 -1
  209. package/theme-chalk/el-dropdown.css +1 -1
  210. package/theme-chalk/el-tabs.css +1 -1
  211. package/theme-chalk/el-tree.css +1 -1
  212. package/theme-chalk/index.css +1 -1
  213. package/theme-chalk/src/dropdown.scss +13 -18
  214. package/theme-chalk/src/tabs.scss +8 -6
  215. package/theme-chalk/src/tree.scss +2 -1
  216. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"picker.vue_vue_type_template_id_1d54be91_lang.js","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;;2BAEI;;;YAGA;;;;4BAGF,EAAC;;;;;;;;;;;;;;;2BAUA;;;2EAEU;;;;;;;;;;;oCAOd;;;;;;mBAOA;;;0EAGI;;aAGF;;;kBACN,OAAM;;;;;;;;;;;;uBAQC,aAAQ;mDACe;;;cAG7B,WAAW;;cAEX,OAAK;;qBAEA;;;;;;kBAMD,WAAM;;;;;;;mBAON;;;yEAGI;;aAGH;;;;;;;;;;;;;;;;;;;QAcP;;QAEA;;;;;;"}
1
+ {"version":3,"file":"picker.vue_vue_type_template_id_1d54be91_lang.js","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;;2BAEI;;;YAGA;;;;4BAGF,EAAC;;;;;;;;;;;;;;;2BAUA;;;2EAEU;;;;;;;;;;eAMjBA;iBACE;;;;;;;iBAQC;mBACA;;;0EAGI;;aAGF;;;kBACN,OAAM;;;;;;;;;;;;uBAQC,aAAQ;mDACe;;;cAG7B,WAAW;;cAEX,OAAK;;qBAEA;;;;;;kBAMD,WAAM;;;;;;;mBAON;;;yEAGI;;aAGH;;;;;;;;;;;;;;;;;;;QAcP;;QAEA;;;;;;"}
@@ -1,5 +1,9 @@
1
1
  import type { SFCWithInstall } from 'element-plus/es/utils/types';
2
2
  declare const _TimeSelect: SFCWithInstall<import("vue").DefineComponent<{
3
+ format: {
4
+ type: StringConstructor;
5
+ default: string;
6
+ };
3
7
  modelValue: StringConstructor;
4
8
  disabled: {
5
9
  type: BooleanConstructor;
@@ -61,6 +65,7 @@ declare const _TimeSelect: SFCWithInstall<import("vue").DefineComponent<{
61
65
  blur: () => void;
62
66
  focus: () => void;
63
67
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "change" | "blur" | "focus")[], "update:modelValue" | "change" | "blur" | "focus", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
68
+ format?: unknown;
64
69
  modelValue?: unknown;
65
70
  disabled?: unknown;
66
71
  editable?: unknown;
@@ -85,6 +90,7 @@ declare const _TimeSelect: SFCWithInstall<import("vue").DefineComponent<{
85
90
  placeholder: string;
86
91
  clearable: boolean;
87
92
  prefixIcon: string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
93
+ format: string;
88
94
  clearIcon: string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
89
95
  step: string;
90
96
  minTime: string;
@@ -106,6 +112,7 @@ declare const _TimeSelect: SFCWithInstall<import("vue").DefineComponent<{
106
112
  placeholder: string;
107
113
  clearable: boolean;
108
114
  prefixIcon: string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
115
+ format: string;
109
116
  clearIcon: string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
110
117
  step: string;
111
118
  minTime: string;
@@ -113,6 +120,10 @@ declare const _TimeSelect: SFCWithInstall<import("vue").DefineComponent<{
113
120
  }>>;
114
121
  export default _TimeSelect;
115
122
  export declare const ElTimeSelect: SFCWithInstall<import("vue").DefineComponent<{
123
+ format: {
124
+ type: StringConstructor;
125
+ default: string;
126
+ };
116
127
  modelValue: StringConstructor;
117
128
  disabled: {
118
129
  type: BooleanConstructor;
@@ -174,6 +185,7 @@ export declare const ElTimeSelect: SFCWithInstall<import("vue").DefineComponent<
174
185
  blur: () => void;
175
186
  focus: () => void;
176
187
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "change" | "blur" | "focus")[], "update:modelValue" | "change" | "blur" | "focus", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
188
+ format?: unknown;
177
189
  modelValue?: unknown;
178
190
  disabled?: unknown;
179
191
  editable?: unknown;
@@ -198,6 +210,7 @@ export declare const ElTimeSelect: SFCWithInstall<import("vue").DefineComponent<
198
210
  placeholder: string;
199
211
  clearable: boolean;
200
212
  prefixIcon: string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
213
+ format: string;
201
214
  clearIcon: string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
202
215
  step: string;
203
216
  minTime: string;
@@ -219,6 +232,7 @@ export declare const ElTimeSelect: SFCWithInstall<import("vue").DefineComponent<
219
232
  placeholder: string;
220
233
  clearable: boolean;
221
234
  prefixIcon: string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
235
+ format: string;
222
236
  clearIcon: string | import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
223
237
  step: string;
224
238
  minTime: string;
@@ -1,6 +1,10 @@
1
1
  import type { PropType, Component } from 'vue';
2
2
  import type { ComponentSize } from 'element-plus/es/utils/types';
3
3
  declare const _default: import("vue").DefineComponent<{
4
+ format: {
5
+ type: StringConstructor;
6
+ default: string;
7
+ };
4
8
  modelValue: StringConstructor;
5
9
  disabled: {
6
10
  type: BooleanConstructor;
@@ -62,6 +66,7 @@ declare const _default: import("vue").DefineComponent<{
62
66
  blur: () => void;
63
67
  focus: () => void;
64
68
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "change" | "blur" | "focus")[], "update:modelValue" | "change" | "blur" | "focus", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
69
+ format?: unknown;
65
70
  modelValue?: unknown;
66
71
  disabled?: unknown;
67
72
  editable?: unknown;
@@ -86,6 +91,7 @@ declare const _default: import("vue").DefineComponent<{
86
91
  placeholder: string;
87
92
  clearable: boolean;
88
93
  prefixIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
94
+ format: string;
89
95
  clearIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
90
96
  step: string;
91
97
  minTime: string;
@@ -107,6 +113,7 @@ declare const _default: import("vue").DefineComponent<{
107
113
  placeholder: string;
108
114
  clearable: boolean;
109
115
  prefixIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
116
+ format: string;
110
117
  clearIcon: string | Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
111
118
  step: string;
112
119
  minTime: string;
@@ -3,16 +3,30 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var vue = require('vue');
6
+ var dayjs = require('dayjs');
7
+ var customParseFormat = require('dayjs/plugin/customParseFormat');
6
8
  var index = require('../../select/index.js');
7
9
  var index$1 = require('../../icon/index.js');
8
10
  var iconsVue = require('@element-plus/icons-vue');
9
11
 
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
15
+ var customParseFormat__default = /*#__PURE__*/_interopDefaultLegacy(customParseFormat);
16
+
17
+ dayjs__default["default"].extend(customParseFormat__default["default"]);
10
18
  const { Option: ElOption } = index.ElSelect;
11
19
  const parseTime = (time) => {
12
20
  const values = (time || "").split(":");
13
21
  if (values.length >= 2) {
14
- const hours = parseInt(values[0], 10);
22
+ let hours = parseInt(values[0], 10);
15
23
  const minutes = parseInt(values[1], 10);
24
+ const timeUpper = time.toUpperCase();
25
+ if (timeUpper.includes("AM") && hours === 12) {
26
+ hours = 0;
27
+ } else if (timeUpper.includes("PM") && hours !== 12) {
28
+ hours += 12;
29
+ }
16
30
  return {
17
31
  hours,
18
32
  minutes
@@ -30,8 +44,11 @@ const compareTime = (time1, time2) => {
30
44
  }
31
45
  return minutes1 > minutes2 ? 1 : -1;
32
46
  };
47
+ const padTime = (time) => {
48
+ return `${time}`.padStart(2, "0");
49
+ };
33
50
  const formatTime = (time) => {
34
- return `${time.hours < 10 ? `0${time.hours}` : time.hours}:${time.minutes < 10 ? `0${time.minutes}` : time.minutes}`;
51
+ return `${padTime(time.hours)}:${padTime(time.minutes)}`;
35
52
  };
36
53
  const nextTime = (time, step) => {
37
54
  const timeValue = parseTime(time);
@@ -54,6 +71,10 @@ var script = vue.defineComponent({
54
71
  event: "change"
55
72
  },
56
73
  props: {
74
+ format: {
75
+ type: String,
76
+ default: "HH:mm"
77
+ },
57
78
  modelValue: String,
58
79
  disabled: {
59
80
  type: Boolean,
@@ -113,16 +134,38 @@ var script = vue.defineComponent({
113
134
  setup(props) {
114
135
  const select = vue.ref(null);
115
136
  const value = vue.computed(() => props.modelValue);
137
+ const start = vue.computed(() => {
138
+ const time = parseTime(props.start);
139
+ return formatTime(time);
140
+ });
141
+ const end = vue.computed(() => {
142
+ const time = parseTime(props.end);
143
+ return formatTime(time);
144
+ });
145
+ const step = vue.computed(() => {
146
+ const time = parseTime(props.step);
147
+ return formatTime(time);
148
+ });
149
+ const minTime = vue.computed(() => {
150
+ const time = parseTime(props.minTime);
151
+ return time ? formatTime(time) : null;
152
+ });
153
+ const maxTime = vue.computed(() => {
154
+ const time = parseTime(props.maxTime);
155
+ return time ? formatTime(time) : null;
156
+ });
116
157
  const items = vue.computed(() => {
117
158
  const result = [];
118
159
  if (props.start && props.end && props.step) {
119
- let current = props.start;
120
- while (compareTime(current, props.end) <= 0) {
160
+ let current = start.value;
161
+ let currentTime;
162
+ while (compareTime(current, end.value) <= 0) {
163
+ currentTime = dayjs__default["default"](current, "HH:mm").format(props.format);
121
164
  result.push({
122
- value: current,
123
- disabled: compareTime(current, props.minTime || "-1:-1") <= 0 || compareTime(current, props.maxTime || "100:100") >= 0
165
+ value: currentTime,
166
+ disabled: compareTime(current, minTime.value || "-1:-1") <= 0 || compareTime(current, maxTime.value || "100:100") >= 0
124
167
  });
125
- current = nextTime(current, props.step);
168
+ current = nextTime(current, step.value);
126
169
  }
127
170
  }
128
171
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"time-select.vue_vue_type_script_lang.js","sources":["../../../../../../packages/components/time-select/src/time-select.vue"],"sourcesContent":["<template>\n <el-select\n ref=\"select\"\n :model-value=\"value\"\n :disabled=\"disabled\"\n :clearable=\"clearable\"\n :clear-icon=\"clearIcon\"\n :size=\"size\"\n :placeholder=\"placeholder\"\n default-first-option\n :filterable=\"editable\"\n @update:model-value=\"(event) => $emit('update:modelValue', event)\"\n @change=\"(event) => $emit('change', event)\"\n @blur=\"(event) => $emit('blur', event)\"\n @focus=\"(event) => $emit('focus', event)\"\n >\n <el-option\n v-for=\"item in items\"\n :key=\"item.value\"\n :label=\"item.value\"\n :value=\"item.value\"\n :disabled=\"item.disabled\"\n />\n <template #prefix>\n <el-icon v-if=\"prefixIcon\" class=\"el-input__prefix-icon\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </template>\n </el-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref } from 'vue'\nimport ElSelect from '@element-plus/components/select'\nimport ElIcon from '@element-plus/components/icon'\nimport { CircleClose, Clock } from '@element-plus/icons-vue'\n\nimport type { PropType, Component } from 'vue'\nimport type { ComponentSize } from '@element-plus/utils/types'\n\nconst { Option: ElOption } = ElSelect\n\ninterface Time {\n hours: number\n minutes: number\n}\n\nconst parseTime = (time: string): null | Time => {\n const values = (time || '').split(':')\n if (values.length >= 2) {\n const hours = parseInt(values[0], 10)\n const minutes = parseInt(values[1], 10)\n return {\n hours,\n minutes,\n }\n }\n return null\n}\nconst compareTime = (time1: string, time2: string): number => {\n const value1 = parseTime(time1)\n const value2 = parseTime(time2)\n const minutes1 = value1.minutes + value1.hours * 60\n const minutes2 = value2.minutes + value2.hours * 60\n if (minutes1 === minutes2) {\n return 0\n }\n return minutes1 > minutes2 ? 1 : -1\n}\nconst formatTime = (time: Time): string => {\n return `${time.hours < 10 ? `0${time.hours}` : time.hours}:${\n time.minutes < 10 ? `0${time.minutes}` : time.minutes\n }`\n}\nconst nextTime = (time: string, step: string): string => {\n const timeValue = parseTime(time)\n const stepValue = parseTime(step)\n const next = {\n hours: timeValue.hours,\n minutes: timeValue.minutes,\n }\n next.minutes += stepValue.minutes\n next.hours += stepValue.hours\n next.hours += Math.floor(next.minutes / 60)\n next.minutes = next.minutes % 60\n return formatTime(next)\n}\n\nexport default defineComponent({\n name: 'ElTimeSelect',\n components: { ElSelect, ElOption, ElIcon },\n model: {\n prop: 'value',\n event: 'change',\n },\n props: {\n modelValue: String,\n disabled: {\n type: Boolean,\n default: false,\n },\n editable: {\n type: Boolean,\n default: true,\n },\n clearable: {\n type: Boolean,\n default: true,\n },\n size: {\n type: String as PropType<ComponentSize>,\n default: 'default',\n validator: (value: string) =>\n !value || ['large', 'default', 'small'].indexOf(value) !== -1,\n },\n placeholder: {\n type: String,\n default: '',\n },\n start: {\n type: String,\n default: '09:00',\n },\n end: {\n type: String,\n default: '18:00',\n },\n step: {\n type: String,\n default: '00:30',\n },\n minTime: {\n type: String,\n default: '',\n },\n maxTime: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n prefixIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Clock,\n },\n clearIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: CircleClose,\n },\n },\n emits: ['change', 'blur', 'focus', 'update:modelValue'],\n setup(props) {\n // computed\n const select = ref(null)\n const value = computed(() => props.modelValue)\n const items = computed(() => {\n const result = []\n if (props.start && props.end && props.step) {\n let current = props.start\n while (compareTime(current, props.end) <= 0) {\n result.push({\n value: current,\n disabled:\n compareTime(current, props.minTime || '-1:-1') <= 0 ||\n compareTime(current, props.maxTime || '100:100') >= 0,\n })\n current = nextTime(current, props.step)\n }\n }\n return result\n })\n const blur = () => {\n select.value?.blur?.()\n }\n const focus = () => {\n select.value?.focus?.()\n }\n\n return {\n select,\n value,\n items,\n blur,\n focus,\n }\n },\n})\n</script>\n"],"names":["defineComponent","ElSelect","computed"],"mappings":";;;;;;;;;AAmCA,cAAc,EAAE,QAAQ,EAAE,iBAAW,CAAC;;AAEtC,EAAE,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,GAAG,EAAE;AACzC,EAAE,UAAU,OAAO,IAAI,CAAC,EAAE;;AAE1B,IAAI,MAAM,OAAO,GAAG,SAAS,MAAM,CAAC;;AAEpC,MAAM,KAAK;MACL,OAAO;KACR,CAAC;AACN;;AAEA,CAAC,CAAC;MACI,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK;EACpC,MAAM,MAAM,GAAG,SAAS;QAClB,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,QAAQ,SAAS,CAAC,OAAO,GAAG,MAAM;QAClC;MACF;WACK,CAAC,CAAC;;EAEX;EACA;AACF;AACA,EAAE,OAAO,CAAC,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;EAC1D;MACI,WAAW,CAAC,IAAI,EAAE,IAAI;EAC1B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE;EAClC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE;EAClC,MAAM,IAAI,GAAG;IACX,KAAK,EAAE;;GAER,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,KAAK,cAAc,KAAK;EAC7B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;MACvC,CAAC,OAAO,GAAG,KAAK,OAAO,GAAG,EAAE,CAAC;EACjC;AACF;AACA,aAAeA,mBAAe;EAC5B,IAAI,EAAE,cAAc;EACpB,UAAU,EAAE,YAAEC,cAAQ,EAAE,QAAQ;EAChC,OAAO;IACL,IAAI,SAAS;IACb,KAAK,EAAE,QAAQ;;EAEjB,KAAK,EAAE;IACL,UAAU,EAAE,MAAM;IAClB,UAAU;MACR,IAAI,EAAE,OAAO;MACb,OAAO,EAAE,KAAK;AACpB;;AAEA,UAAU,EAAE,OAAO;MACb,OAAO,EAAE,IAAI;KACd;IACD;MACE,IAAI,EAAE;MACN,OAAO,EAAE,IAAI;;IAEf;MACE,IAAI,EAAE,MAAM;MACZ;MACA,SAAS,EAAE,CAAC;;IAEd;MACE,IAAI,EAAE;MACN,OAAO,EAAE,EAAE;;IAEb;MACE,IAAI,EAAE;MACN,OAAO,EAAE;;IAEX;MACE,IAAI;MACJ,OAAO,EAAE,OAAO;;QAEd,EAAE;UACA,EAAE,MAAM;;KAEb;aACQ;MACP,IAAI,EAAE;;KAEP;aACQ;MACP,IAAI,EAAE,MAAM;;KAEb;QACG,EAAE;MACJ,IAAI,EAAE,MAAM;;KAEb;cACS,EAAE;MACV,IAAI,EAAE,CAAC,MAAM,EAAE;;KAEhB;aACQ,EAAE;MACT,IAAI,EAAE,CAAC;;KAER;;OAEE,EAAE,CAAC;;IAEN,MAAM;UACA,KAAK,GAAGC;UACR,KAAK;;MAET,IAAI,MAAM;QACR,IAAI,OAAO,GAAG,KAAK,MAAM,CAAC;QAC1B,OAAO;;YAEH;YACA,UAAU,WAAW,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI;WACjD,CAAC,CAAC;;;OAGN;MACD,OAAO;KACR,EAAE;IACH,MAAM,IAAI,GAAG,MAAM;MACjB,IAAI,EAAE,EAAE,EAAE;MACV,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK;MACxB;UACI,KAAK,GAAG;UACR,EAAE,EAAE,EAAE,CAAC;SACR,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE;;;YAGzC;;;UAGF;WACC;;;;;;;"}
1
+ {"version":3,"file":"time-select.vue_vue_type_script_lang.js","sources":["../../../../../../packages/components/time-select/src/time-select.vue"],"sourcesContent":["<template>\n <el-select\n ref=\"select\"\n :model-value=\"value\"\n :disabled=\"disabled\"\n :clearable=\"clearable\"\n :clear-icon=\"clearIcon\"\n :size=\"size\"\n :placeholder=\"placeholder\"\n default-first-option\n :filterable=\"editable\"\n @update:model-value=\"(event) => $emit('update:modelValue', event)\"\n @change=\"(event) => $emit('change', event)\"\n @blur=\"(event) => $emit('blur', event)\"\n @focus=\"(event) => $emit('focus', event)\"\n >\n <el-option\n v-for=\"item in items\"\n :key=\"item.value\"\n :label=\"item.value\"\n :value=\"item.value\"\n :disabled=\"item.disabled\"\n />\n <template #prefix>\n <el-icon v-if=\"prefixIcon\" class=\"el-input__prefix-icon\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </template>\n </el-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport ElSelect from '@element-plus/components/select'\nimport ElIcon from '@element-plus/components/icon'\nimport { CircleClose, Clock } from '@element-plus/icons-vue'\n\nimport type { PropType, Component } from 'vue'\nimport type { ComponentSize } from '@element-plus/utils/types'\ndayjs.extend(customParseFormat)\n\nconst { Option: ElOption } = ElSelect\n\ninterface Time {\n hours: number\n minutes: number\n}\n\nconst parseTime = (time: string): null | Time => {\n const values = (time || '').split(':')\n if (values.length >= 2) {\n let hours = parseInt(values[0], 10)\n const minutes = parseInt(values[1], 10)\n const timeUpper = time.toUpperCase()\n if (timeUpper.includes('AM') && hours === 12) {\n hours = 0\n } else if (timeUpper.includes('PM') && hours !== 12) {\n hours += 12\n }\n return {\n hours,\n minutes,\n }\n }\n return null\n}\nconst compareTime = (time1: string, time2: string): number => {\n const value1 = parseTime(time1)\n const value2 = parseTime(time2)\n const minutes1 = value1.minutes + value1.hours * 60\n const minutes2 = value2.minutes + value2.hours * 60\n if (minutes1 === minutes2) {\n return 0\n }\n return minutes1 > minutes2 ? 1 : -1\n}\nconst padTime = (time: number | string) => {\n return `${time}`.padStart(2, '0')\n}\nconst formatTime = (time: Time): string => {\n return `${padTime(time.hours)}:${padTime(time.minutes)}`\n}\nconst nextTime = (time: string, step: string): string => {\n const timeValue = parseTime(time)\n const stepValue = parseTime(step)\n const next = {\n hours: timeValue.hours,\n minutes: timeValue.minutes,\n }\n next.minutes += stepValue.minutes\n next.hours += stepValue.hours\n next.hours += Math.floor(next.minutes / 60)\n next.minutes = next.minutes % 60\n return formatTime(next)\n}\n\nexport default defineComponent({\n name: 'ElTimeSelect',\n components: { ElSelect, ElOption, ElIcon },\n model: {\n prop: 'value',\n event: 'change',\n },\n props: {\n format: {\n type: String,\n default: 'HH:mm',\n },\n modelValue: String,\n disabled: {\n type: Boolean,\n default: false,\n },\n editable: {\n type: Boolean,\n default: true,\n },\n clearable: {\n type: Boolean,\n default: true,\n },\n size: {\n type: String as PropType<ComponentSize>,\n default: 'default',\n validator: (value: string) =>\n !value || ['large', 'default', 'small'].indexOf(value) !== -1,\n },\n placeholder: {\n type: String,\n default: '',\n },\n start: {\n type: String,\n default: '09:00',\n },\n end: {\n type: String,\n default: '18:00',\n },\n step: {\n type: String,\n default: '00:30',\n },\n minTime: {\n type: String,\n default: '',\n },\n maxTime: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n prefixIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Clock,\n },\n clearIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: CircleClose,\n },\n },\n emits: ['change', 'blur', 'focus', 'update:modelValue'],\n setup(props) {\n // computed\n const select = ref(null)\n const value = computed(() => props.modelValue)\n const start = computed(() => {\n const time = parseTime(props.start)\n return formatTime(time)\n })\n const end = computed(() => {\n const time = parseTime(props.end)\n return formatTime(time)\n })\n const step = computed(() => {\n const time = parseTime(props.step)\n return formatTime(time)\n })\n const minTime = computed(() => {\n const time = parseTime(props.minTime)\n return time ? formatTime(time) : null\n })\n const maxTime = computed(() => {\n const time = parseTime(props.maxTime)\n return time ? formatTime(time) : null\n })\n const items = computed(() => {\n const result = []\n if (props.start && props.end && props.step) {\n let current = start.value\n let currentTime\n while (compareTime(current, end.value) <= 0) {\n currentTime = dayjs(current, 'HH:mm').format(props.format)\n result.push({\n value: currentTime,\n disabled:\n compareTime(current, minTime.value || '-1:-1') <= 0 ||\n compareTime(current, maxTime.value || '100:100') >= 0,\n })\n current = nextTime(current, step.value)\n }\n }\n return result\n })\n const blur = () => {\n select.value?.blur?.()\n }\n const focus = () => {\n select.value?.focus?.()\n }\n\n return {\n select,\n value,\n items,\n blur,\n focus,\n }\n },\n})\n</script>\n"],"names":["dayjs","customParseFormat","defineComponent","ElSelect","Clock","CircleClose","computed"],"mappings":";;;;;;;;;;;;;;;;AAqCAA,yBAAK,OAAO,CAACC,qCAAiB,CAAC,CAAC;;AAEhC,eAAe,GAAG,CAAC,SAAS;AAC5B,EAAE,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACzC,EAAE,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;;AAE1B,IAAI,MAAM,OAAO,GAAG,SAAS,MAAM,CAAC;;AAEpC,IAAI,IAAI;MACF,KAAK,GAAG;KACT,MAAM,IAAI;AACf;;AAEA,IAAI,OAAO;MACL,KAAK;MACL,OAAO;KACR,CAAC;;aAEO,CAAC;;MAER;QACE,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC1B;;QAEA;MACF;WACK,CAAC,CAAC;;EAEX;EACA;AACF;AACA,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE;EAClC;MACI,aAAa,CAAC,IAAI,KAAK;EAC3B,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI;EAC7C;MACI,WAAW,KAAK,EAAE;QAChB;EACN;EACA,UAAU,GAAG;AACf;AACA,IAAI,OAAO,YAAY,OAAO;GAC3B,CAAC;AACJ;AACA,EAAE,IAAI,CAAC,KAAK,cAAc,KAAK;EAC7B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAC9C;AACA,EAAE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;EACxB;aACaC,mBAAe,CAAC;EAC7B,IAAI,EAAE;YACI,EAAE,YAAEC,cAAQ,EAAE;OACnB,EAAE;;IAEL,KAAK,EAAE,QAAQ;GAChB;EACD,KAAK,EAAE;IACL,MAAM,EAAE;MACN,IAAI,EAAE,MAAM;AAClB;;AAEA,IAAI,YAAY,MAAM;IAClB,QAAQ,EAAE;MACR,IAAI,EAAE,OAAO;MACb;KACD;IACD,QAAQ,EAAE;;MAER;KACD;aACQ,EAAE;MACT,IAAI,EAAE,OAAO;;KAEd;IACD,IAAI,EAAE;MACJ,IAAI,EAAE,MAAM;MACZ,OAAO,EAAE;;KAEV;eACU,EAAE;MACX,IAAI,EAAE,MAAM;;KAEb;SACI;MACH,IAAI,EAAE,MAAM;;KAEb;OACE,EAAE;MACH,IAAI,EAAE,MAAM;MACZ,OAAO,EAAE,OAAO;;IAElB;MACE,IAAI,EAAE;MACN,OAAO,EAAE;;IAEX;MACE;MACA,OAAO,EAAE,EAAE;;IAEb;MACE;MACA,OAAO,EAAE,EAAE;;IAEb;MACE,IAAI;MACJ,OAAO,EAAE,EAAE;;IAEb;MACE,IAAI,GAAG;MACP,OAAO,EAAEC;;IAEX;MACE,IAAI,GAAG;MACP,OAAO,EAAEC;;;OAGR,GAAG;OACH,CAAC,KAAK,EAAE;UACL,MAAM;IACZ;IACA,MAAM;MACJ,MAAM,IAAI,GAAG,UAAU,KAAK,CAAC,KAAK,CAAC,CAAC;MACpC,OAAO;KACR;IACD,MAAM,GAAG;MACP,MAAM,IAAI,GAAG,UAAU,KAAK,CAAC,GAAG,CAAC,CAAC;MAClC,OAAO,UAAU,CAAC;KACnB;;MAEC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;MACnC,OAAO;KACR,EAAE;IACH,MAAM,OAAO,GAAGC;MACd,MAAM,IAAI,GAAG,SAAS,MAAM,CAAC,OAAO,CAAC,CAAC;MACtC,OAAO,OAAO,UAAU,CAAC;MACzB,CAAC;UACG,OAAO,GAAGA,YAAQ;;MAEtB,WAAW,GAAG,WAAW;MACzB,CAAC;UACG,KAAK,GAAGA,YAAQ,CAAC;;MAErB,IAAI,KAAK,MAAM,IAAI,KAAK;QACtB,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,eAAe,CAAC;;UAEd,WAAW,GAAGN,yBAAK,CAAC;UACpB,OAAO,IAAI,CAAC;8BACQ;;WAEnB,CAAC,CAAC;UACH,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI;SACjC;;MAEH,OAAO,MAAM,CAAC;MACd,CAAC;UACG,IAAI,GAAG,MAAM;UACb,EAAE,EAAE,EAAE,CAAC;SACR,GAAG,CAAC,EAAE,GAAG;;UAER,KAAK,GAAG,MAAM;UACd,EAAE,EAAE,EAAE,CAAC;YACL,CAAC,EAAE,SAAS,CAAC,KAAK;;;;WAInB;WACA;;MAEL;MACA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"time-select.vue_vue_type_template_id_5beb6389_lang.js","sources":["../../../../../../packages/components/time-select/src/time-select.vue?vue&type=template&id=5beb6389&lang.js"],"sourcesContent":["<template>\n <el-select\n ref=\"select\"\n :model-value=\"value\"\n :disabled=\"disabled\"\n :clearable=\"clearable\"\n :clear-icon=\"clearIcon\"\n :size=\"size\"\n :placeholder=\"placeholder\"\n default-first-option\n :filterable=\"editable\"\n @update:model-value=\"(event) => $emit('update:modelValue', event)\"\n @change=\"(event) => $emit('change', event)\"\n @blur=\"(event) => $emit('blur', event)\"\n @focus=\"(event) => $emit('focus', event)\"\n >\n <el-option\n v-for=\"item in items\"\n :key=\"item.value\"\n :label=\"item.value\"\n :value=\"item.value\"\n :disabled=\"item.disabled\"\n />\n <template #prefix>\n <el-icon v-if=\"prefixIcon\" class=\"el-input__prefix-icon\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </template>\n </el-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref } from 'vue'\nimport ElSelect from '@element-plus/components/select'\nimport ElIcon from '@element-plus/components/icon'\nimport { CircleClose, Clock } from '@element-plus/icons-vue'\n\nimport type { PropType, Component } from 'vue'\nimport type { ComponentSize } from '@element-plus/utils/types'\n\nconst { Option: ElOption } = ElSelect\n\ninterface Time {\n hours: number\n minutes: number\n}\n\nconst parseTime = (time: string): null | Time => {\n const values = (time || '').split(':')\n if (values.length >= 2) {\n const hours = parseInt(values[0], 10)\n const minutes = parseInt(values[1], 10)\n return {\n hours,\n minutes,\n }\n }\n return null\n}\nconst compareTime = (time1: string, time2: string): number => {\n const value1 = parseTime(time1)\n const value2 = parseTime(time2)\n const minutes1 = value1.minutes + value1.hours * 60\n const minutes2 = value2.minutes + value2.hours * 60\n if (minutes1 === minutes2) {\n return 0\n }\n return minutes1 > minutes2 ? 1 : -1\n}\nconst formatTime = (time: Time): string => {\n return `${time.hours < 10 ? `0${time.hours}` : time.hours}:${\n time.minutes < 10 ? `0${time.minutes}` : time.minutes\n }`\n}\nconst nextTime = (time: string, step: string): string => {\n const timeValue = parseTime(time)\n const stepValue = parseTime(step)\n const next = {\n hours: timeValue.hours,\n minutes: timeValue.minutes,\n }\n next.minutes += stepValue.minutes\n next.hours += stepValue.hours\n next.hours += Math.floor(next.minutes / 60)\n next.minutes = next.minutes % 60\n return formatTime(next)\n}\n\nexport default defineComponent({\n name: 'ElTimeSelect',\n components: { ElSelect, ElOption, ElIcon },\n model: {\n prop: 'value',\n event: 'change',\n },\n props: {\n modelValue: String,\n disabled: {\n type: Boolean,\n default: false,\n },\n editable: {\n type: Boolean,\n default: true,\n },\n clearable: {\n type: Boolean,\n default: true,\n },\n size: {\n type: String as PropType<ComponentSize>,\n default: 'default',\n validator: (value: string) =>\n !value || ['large', 'default', 'small'].indexOf(value) !== -1,\n },\n placeholder: {\n type: String,\n default: '',\n },\n start: {\n type: String,\n default: '09:00',\n },\n end: {\n type: String,\n default: '18:00',\n },\n step: {\n type: String,\n default: '00:30',\n },\n minTime: {\n type: String,\n default: '',\n },\n maxTime: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n prefixIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Clock,\n },\n clearIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: CircleClose,\n },\n },\n emits: ['change', 'blur', 'focus', 'update:modelValue'],\n setup(props) {\n // computed\n const select = ref(null)\n const value = computed(() => props.modelValue)\n const items = computed(() => {\n const result = []\n if (props.start && props.end && props.step) {\n let current = props.start\n while (compareTime(current, props.end) <= 0) {\n result.push({\n value: current,\n disabled:\n compareTime(current, props.minTime || '-1:-1') <= 0 ||\n compareTime(current, props.maxTime || '100:100') >= 0,\n })\n current = nextTime(current, props.step)\n }\n }\n return result\n })\n const blur = () => {\n select.value?.blur?.()\n }\n const focus = () => {\n select.value?.focus?.()\n }\n\n return {\n select,\n value,\n items,\n blur,\n focus,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;wBACE;IACE;IACC,eAAa,UAAK;IAClB;IACA,WAAW;IACX;IACA;IACA;IACD;IACC,UAAU;IACV,kDAAqB,KAAK,eAAU;IACpC,yDAAwB,gBAAgB;;IAExC;;;;;;;;;;;;;;;sBAGC;;;eACM,KAAK;UACV;;;;;;;;"}
1
+ {"version":3,"file":"time-select.vue_vue_type_template_id_5beb6389_lang.js","sources":["../../../../../../packages/components/time-select/src/time-select.vue?vue&type=template&id=5beb6389&lang.js"],"sourcesContent":["<template>\n <el-select\n ref=\"select\"\n :model-value=\"value\"\n :disabled=\"disabled\"\n :clearable=\"clearable\"\n :clear-icon=\"clearIcon\"\n :size=\"size\"\n :placeholder=\"placeholder\"\n default-first-option\n :filterable=\"editable\"\n @update:model-value=\"(event) => $emit('update:modelValue', event)\"\n @change=\"(event) => $emit('change', event)\"\n @blur=\"(event) => $emit('blur', event)\"\n @focus=\"(event) => $emit('focus', event)\"\n >\n <el-option\n v-for=\"item in items\"\n :key=\"item.value\"\n :label=\"item.value\"\n :value=\"item.value\"\n :disabled=\"item.disabled\"\n />\n <template #prefix>\n <el-icon v-if=\"prefixIcon\" class=\"el-input__prefix-icon\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </template>\n </el-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport ElSelect from '@element-plus/components/select'\nimport ElIcon from '@element-plus/components/icon'\nimport { CircleClose, Clock } from '@element-plus/icons-vue'\n\nimport type { PropType, Component } from 'vue'\nimport type { ComponentSize } from '@element-plus/utils/types'\ndayjs.extend(customParseFormat)\n\nconst { Option: ElOption } = ElSelect\n\ninterface Time {\n hours: number\n minutes: number\n}\n\nconst parseTime = (time: string): null | Time => {\n const values = (time || '').split(':')\n if (values.length >= 2) {\n let hours = parseInt(values[0], 10)\n const minutes = parseInt(values[1], 10)\n const timeUpper = time.toUpperCase()\n if (timeUpper.includes('AM') && hours === 12) {\n hours = 0\n } else if (timeUpper.includes('PM') && hours !== 12) {\n hours += 12\n }\n return {\n hours,\n minutes,\n }\n }\n return null\n}\nconst compareTime = (time1: string, time2: string): number => {\n const value1 = parseTime(time1)\n const value2 = parseTime(time2)\n const minutes1 = value1.minutes + value1.hours * 60\n const minutes2 = value2.minutes + value2.hours * 60\n if (minutes1 === minutes2) {\n return 0\n }\n return minutes1 > minutes2 ? 1 : -1\n}\nconst padTime = (time: number | string) => {\n return `${time}`.padStart(2, '0')\n}\nconst formatTime = (time: Time): string => {\n return `${padTime(time.hours)}:${padTime(time.minutes)}`\n}\nconst nextTime = (time: string, step: string): string => {\n const timeValue = parseTime(time)\n const stepValue = parseTime(step)\n const next = {\n hours: timeValue.hours,\n minutes: timeValue.minutes,\n }\n next.minutes += stepValue.minutes\n next.hours += stepValue.hours\n next.hours += Math.floor(next.minutes / 60)\n next.minutes = next.minutes % 60\n return formatTime(next)\n}\n\nexport default defineComponent({\n name: 'ElTimeSelect',\n components: { ElSelect, ElOption, ElIcon },\n model: {\n prop: 'value',\n event: 'change',\n },\n props: {\n format: {\n type: String,\n default: 'HH:mm',\n },\n modelValue: String,\n disabled: {\n type: Boolean,\n default: false,\n },\n editable: {\n type: Boolean,\n default: true,\n },\n clearable: {\n type: Boolean,\n default: true,\n },\n size: {\n type: String as PropType<ComponentSize>,\n default: 'default',\n validator: (value: string) =>\n !value || ['large', 'default', 'small'].indexOf(value) !== -1,\n },\n placeholder: {\n type: String,\n default: '',\n },\n start: {\n type: String,\n default: '09:00',\n },\n end: {\n type: String,\n default: '18:00',\n },\n step: {\n type: String,\n default: '00:30',\n },\n minTime: {\n type: String,\n default: '',\n },\n maxTime: {\n type: String,\n default: '',\n },\n name: {\n type: String,\n default: '',\n },\n prefixIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: Clock,\n },\n clearIcon: {\n type: [String, Object] as PropType<string | Component>,\n default: CircleClose,\n },\n },\n emits: ['change', 'blur', 'focus', 'update:modelValue'],\n setup(props) {\n // computed\n const select = ref(null)\n const value = computed(() => props.modelValue)\n const start = computed(() => {\n const time = parseTime(props.start)\n return formatTime(time)\n })\n const end = computed(() => {\n const time = parseTime(props.end)\n return formatTime(time)\n })\n const step = computed(() => {\n const time = parseTime(props.step)\n return formatTime(time)\n })\n const minTime = computed(() => {\n const time = parseTime(props.minTime)\n return time ? formatTime(time) : null\n })\n const maxTime = computed(() => {\n const time = parseTime(props.maxTime)\n return time ? formatTime(time) : null\n })\n const items = computed(() => {\n const result = []\n if (props.start && props.end && props.step) {\n let current = start.value\n let currentTime\n while (compareTime(current, end.value) <= 0) {\n currentTime = dayjs(current, 'HH:mm').format(props.format)\n result.push({\n value: currentTime,\n disabled:\n compareTime(current, minTime.value || '-1:-1') <= 0 ||\n compareTime(current, maxTime.value || '100:100') >= 0,\n })\n current = nextTime(current, step.value)\n }\n }\n return result\n })\n const blur = () => {\n select.value?.blur?.()\n }\n const focus = () => {\n select.value?.focus?.()\n }\n\n return {\n select,\n value,\n items,\n blur,\n focus,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;wBACE;IACE;IACC,eAAa,UAAK;IAClB;IACA,WAAW;IACX;IACA;IACA;IACD;IACC,UAAU;IACV,kDAAqB,KAAK,eAAU;IACpC,yDAAwB,gBAAgB;;IAExC;;;;;;;;;;;;;;;sBAGC;;;eACM,KAAK;UACV;;;;;;;;"}
@@ -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 | (() => false) | (() => true) | 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;
@@ -284,6 +286,7 @@ export declare const ElTooltip: import("../../utils/types").SFCWithInstall<impor
284
286
  stopPopperMouseEvent: import("../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
285
287
  showAfter: number;
286
288
  hideAfter: number;
289
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
287
290
  rawContent: import("../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
288
291
  persistent: boolean;
289
292
  teleported: import("../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
@@ -370,6 +373,7 @@ export declare const ElTooltip: import("../../utils/types").SFCWithInstall<impor
370
373
  stopPopperMouseEvent: import("../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
371
374
  showAfter: number;
372
375
  hideAfter: number;
376
+ appendTo: import("../../utils/props").BuildPropType<import("../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
373
377
  rawContent: import("../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
374
378
  persistent: boolean;
375
379
  teleported: import("../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
@@ -381,4 +385,5 @@ export declare const ElTooltip: import("../../utils/types").SFCWithInstall<impor
381
385
  showArrow: import("../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
382
386
  }>> & Record<string, any>;
383
387
  export * from './src/tooltip';
388
+ export * from './src/tokens';
384
389
  export default ElTooltip;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var withInstall = require('../../utils/with-install.js');
6
6
  require('./src/tooltip2.js');
7
7
  var tooltip = require('./src/tooltip.js');
8
+ var tokens = require('./src/tokens.js');
8
9
  var tooltip_vue_vue_type_script_lang = require('./src/tooltip.vue_vue_type_script_lang.js');
9
10
 
10
11
  const ElTooltip = withInstall.withInstall(tooltip_vue_vue_type_script_lang["default"]);
@@ -12,6 +13,7 @@ const ElTooltip = withInstall.withInstall(tooltip_vue_vue_type_script_lang["defa
12
13
  exports.useTooltipContentProps = tooltip.useTooltipContentProps;
13
14
  exports.useTooltipProps = tooltip.useTooltipProps;
14
15
  exports.useTooltipTriggerProps = tooltip.useTooltipTriggerProps;
16
+ exports.TOOLTIP_INJECTION_KEY = tokens.TOOLTIP_INJECTION_KEY;
15
17
  exports.ElTooltip = ElTooltip;
16
18
  exports["default"] = ElTooltip;
17
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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":["withInstall","Tooltip"],"mappings":";;;;;;;;;AAEY,MAAC,SAAS,GAAGA,uBAAW,CAACC,2CAAO;;;;;;;;"}
1
+ {"version":3,"file":"index.js","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":["withInstall","Tooltip"],"mappings":";;;;;;;;;;AAEY,MAAC,SAAS,GAAGA,uBAAW,CAACC,2CAAO;;;;;;;;;"}
@@ -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 | (() => false) | (() => true) | 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 | (() => false) | (() => true) | undefined, unknown, unknown, unknown>;
10
+ disabled: import("../../../utils/props").BuildPropReturn<BooleanConstructor, boolean | (() => false) | (() => true) | 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;
@@ -657,6 +660,7 @@ declare const _default: import("vue").DefineComponent<{
657
660
  showAfter?: unknown;
658
661
  hideAfter?: unknown;
659
662
  } & {
663
+ disabled: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
660
664
  style: import("vue").StyleValue;
661
665
  transition: string;
662
666
  offset: number;
@@ -726,6 +730,7 @@ declare const _default: import("vue").DefineComponent<{
726
730
  stopPopperMouseEvent: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
727
731
  showAfter: number;
728
732
  hideAfter: number;
733
+ appendTo: import("../../../utils/props").BuildPropType<import("../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
729
734
  rawContent: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
730
735
  persistent: boolean;
731
736
  teleported: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
@@ -733,6 +738,7 @@ declare const _default: import("vue").DefineComponent<{
733
738
  zIndex?: number | undefined;
734
739
  ariaLabel?: string | undefined;
735
740
  }>, {
741
+ disabled: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
736
742
  style: import("vue").StyleValue;
737
743
  transition: string;
738
744
  offset: number;
@@ -802,6 +808,7 @@ declare const _default: import("vue").DefineComponent<{
802
808
  stopPopperMouseEvent: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
803
809
  showAfter: number;
804
810
  hideAfter: number;
811
+ appendTo: import("../../../utils/props").BuildPropType<import("../../../utils/props").PropWrapper<string | HTMLElement>, unknown, unknown>;
805
812
  rawContent: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;
806
813
  persistent: boolean;
807
814
  teleported: import("../../../utils/props").BuildPropType<BooleanConstructor, unknown, unknown>;