element-plus
Version:
A Component Library for Vue 3
1 lines • 24.3 kB
Source Map (JSON)
{"version":3,"file":"basic-time-spinner.mjs","sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue"],"sourcesContent":["<template>\n <div :class=\"[ns.b('spinner'), { 'has-seconds': showSeconds }]\">\n <template v-if=\"!arrowControl\">\n <el-scrollbar\n v-for=\"item in spinnerItems\"\n :key=\"item\"\n :ref=\"(scrollbar: unknown) => setRef(scrollbar as any, item)\"\n :class=\"ns.be('spinner', 'wrapper')\"\n wrap-style=\"max-height: inherit;\"\n :view-class=\"ns.be('spinner', 'list')\"\n noresize\n tag=\"ul\"\n @mouseenter=\"emitSelectRange(item)\"\n @mousemove=\"adjustCurrentSpinner(item)\"\n >\n <li\n v-for=\"(disabled, key) in timeList[item]\"\n :key=\"key\"\n :class=\"[\n ns.be('spinner', 'item'),\n ns.is('active', key === timePartials[item]),\n ns.is('disabled', disabled),\n ]\"\n @click=\"handleClick(item, { value: key, disabled })\"\n >\n <template v-if=\"item === 'hours'\">\n {{ ('0' + (amPmMode ? key % 12 || 12 : key)).slice(-2)\n }}{{ getAmPmFlag(key) }}\n </template>\n <template v-else>\n {{ ('0' + key).slice(-2) }}\n </template>\n </li>\n </el-scrollbar>\n </template>\n <template v-if=\"arrowControl\">\n <div\n v-for=\"item in spinnerItems\"\n :key=\"item\"\n :class=\"[ns.be('spinner', 'wrapper'), ns.is('arrow')]\"\n @mouseenter=\"emitSelectRange(item)\"\n >\n <el-icon\n v-repeat-click=\"onDecrement\"\n :class=\"['arrow-up', ns.be('spinner', 'arrow')]\"\n >\n <arrow-up />\n </el-icon>\n <el-icon\n v-repeat-click=\"onIncrement\"\n :class=\"['arrow-down', ns.be('spinner', 'arrow')]\"\n >\n <arrow-down />\n </el-icon>\n <ul :class=\"ns.be('spinner', 'list')\">\n <li\n v-for=\"(time, key) in arrowControlTimeList[item]\"\n :key=\"key\"\n :class=\"[\n ns.be('spinner', 'item'),\n ns.is('active', time === timePartials[item]),\n ns.is('disabled', timeList[item][time!]),\n ]\"\n >\n <template v-if=\"isNumber(time)\">\n <template v-if=\"item === 'hours'\">\n {{ ('0' + (amPmMode ? time % 12 || 12 : time)).slice(-2)\n }}{{ getAmPmFlag(time) }}\n </template>\n <template v-else>\n {{ ('0' + time).slice(-2) }}\n </template>\n </template>\n </li>\n </ul>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, onMounted, ref, unref, watch } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { vRepeatClick } from '@element-plus/directives'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElIcon from '@element-plus/components/icon'\nimport { ArrowDown, ArrowUp } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { getStyle, isNumber } from '@element-plus/utils'\nimport { CHANGE_EVENT } from '@element-plus/constants'\nimport {\n DEFAULT_FORMATS_TIME,\n PICKER_BASE_INJECTION_KEY,\n timeUnits,\n} from '../constants'\nimport { buildTimeList } from '../utils'\nimport { basicTimeSpinnerProps } from '../props/basic-time-spinner'\nimport { getTimeLists } from '../composables/use-time-picker'\n\nimport type { Ref } from 'vue'\nimport type { ScrollbarInstance } from '@element-plus/components/scrollbar'\nimport type { TimeUnit } from '../constants'\nimport type { TimeList } from '../utils'\n\nconst props = defineProps(basicTimeSpinnerProps)\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst { isRange, format } = pickerBase.props\nconst emit = defineEmits([CHANGE_EVENT, 'select-range', 'set-option'])\n\nconst ns = useNamespace('time')\n\nconst { getHoursList, getMinutesList, getSecondsList } = getTimeLists(\n props.disabledHours,\n props.disabledMinutes,\n props.disabledSeconds\n)\n\n// data\nlet isScrolling = false\n\nconst currentScrollbar = ref<TimeUnit>()\nconst listHoursRef = ref<ScrollbarInstance>()\nconst listMinutesRef = ref<ScrollbarInstance>()\nconst listSecondsRef = ref<ScrollbarInstance>()\nconst listRefsMap: Record<TimeUnit, Ref<ScrollbarInstance | undefined>> = {\n hours: listHoursRef,\n minutes: listMinutesRef,\n seconds: listSecondsRef,\n}\n\n// computed\nconst spinnerItems = computed(() => {\n return props.showSeconds ? timeUnits : timeUnits.slice(0, 2)\n})\n\nconst timePartials = computed<Record<TimeUnit, number>>(() => {\n const { spinnerDate } = props\n const hours = spinnerDate.hour()\n const minutes = spinnerDate.minute()\n const seconds = spinnerDate.second()\n return { hours, minutes, seconds }\n})\n\nconst timeList = computed(() => {\n const { hours, minutes } = unref(timePartials)\n const { role, spinnerDate } = props\n const compare = !isRange ? spinnerDate : undefined\n return {\n hours: getHoursList(role, compare),\n minutes: getMinutesList(hours, role, compare),\n seconds: getSecondsList(hours, minutes, role, compare),\n }\n})\n\nconst arrowControlTimeList = computed<Record<TimeUnit, TimeList>>(() => {\n const { hours, minutes, seconds } = unref(timePartials)\n\n return {\n hours: buildTimeList(hours, 23),\n minutes: buildTimeList(minutes, 59),\n seconds: buildTimeList(seconds, 59),\n }\n})\n\nconst debouncedResetScroll = debounce((type) => {\n isScrolling = false\n adjustCurrentSpinner(type)\n}, 200)\n\nconst getAmPmFlag = (hour: number) => {\n const shouldShowAmPm = !!props.amPmMode\n if (!shouldShowAmPm) return ''\n const isCapital = props.amPmMode === 'A'\n // todo locale\n let content = hour < 12 ? ' am' : ' pm'\n if (isCapital) content = content.toUpperCase()\n return content\n}\n\nconst emitSelectRange = (type: TimeUnit) => {\n let range = [0, 0]\n const actualFormat = format || DEFAULT_FORMATS_TIME\n const hourIndex = actualFormat.indexOf('HH')\n const minuteIndex = actualFormat.indexOf('mm')\n const secondIndex = actualFormat.indexOf('ss')\n switch (type) {\n case 'hours':\n if (hourIndex !== -1) {\n range = [hourIndex, hourIndex + 2]\n }\n break\n case 'minutes':\n if (minuteIndex !== -1) {\n range = [minuteIndex, minuteIndex + 2]\n }\n break\n case 'seconds':\n if (secondIndex !== -1) {\n range = [secondIndex, secondIndex + 2]\n }\n break\n }\n const [left, right] = range\n\n emit('select-range', left, right)\n currentScrollbar.value = type\n}\n\nconst adjustCurrentSpinner = (type: TimeUnit) => {\n adjustSpinner(type, unref(timePartials)[type])\n}\n\nconst adjustSpinners = () => {\n adjustCurrentSpinner('hours')\n adjustCurrentSpinner('minutes')\n adjustCurrentSpinner('seconds')\n}\n\nconst getScrollbarElement = (el: HTMLElement) =>\n el.querySelector(`.${ns.namespace.value}-scrollbar__wrap`) as HTMLElement\n\nconst adjustSpinner = (type: TimeUnit, value: number) => {\n if (props.arrowControl) return\n const scrollbar = unref(listRefsMap[type])\n if (scrollbar && scrollbar.$el) {\n getScrollbarElement(scrollbar.$el).scrollTop = Math.max(\n 0,\n value * typeItemHeight(type)\n )\n }\n}\n\nconst typeItemHeight = (type: TimeUnit): number => {\n const scrollbar = unref(listRefsMap[type])\n const listItem = scrollbar?.$el.querySelector('li')\n if (listItem) {\n return Number.parseFloat(getStyle(listItem, 'height')) || 0\n }\n return 0\n}\n\nconst onIncrement = () => {\n scrollDown(1)\n}\n\nconst onDecrement = () => {\n scrollDown(-1)\n}\n\nconst scrollDown = (step: number) => {\n if (!currentScrollbar.value) {\n emitSelectRange('hours')\n }\n\n const label = currentScrollbar.value!\n const now = unref(timePartials)[label]\n const total = currentScrollbar.value === 'hours' ? 24 : 60\n const next = findNextUnDisabled(label, now, step, total)\n\n modifyDateField(label, next)\n adjustSpinner(label, next)\n nextTick(() => emitSelectRange(label))\n}\n\nconst findNextUnDisabled = (\n type: TimeUnit,\n now: number,\n step: number,\n total: number\n) => {\n let next = (now + step + total) % total\n const list = unref(timeList)[type]\n while (list[next] && next !== now) {\n next = (next + step + total) % total\n }\n return next\n}\n\nconst modifyDateField = (type: TimeUnit, value: number) => {\n const list = unref(timeList)[type]\n const isDisabled = list[value]\n if (isDisabled) return\n\n const { hours, minutes, seconds } = unref(timePartials)\n\n let changeTo\n switch (type) {\n case 'hours':\n changeTo = props.spinnerDate.hour(value).minute(minutes).second(seconds)\n break\n case 'minutes':\n changeTo = props.spinnerDate.hour(hours).minute(value).second(seconds)\n break\n case 'seconds':\n changeTo = props.spinnerDate.hour(hours).minute(minutes).second(value)\n break\n }\n emit(CHANGE_EVENT, changeTo)\n}\n\nconst handleClick = (\n type: TimeUnit,\n { value, disabled }: { value: number; disabled: boolean }\n) => {\n if (!disabled) {\n modifyDateField(type, value)\n emitSelectRange(type)\n adjustSpinner(type, value)\n }\n}\n\nconst handleScroll = (type: TimeUnit) => {\n const scrollbar = unref(listRefsMap[type])\n if (!scrollbar) return\n\n isScrolling = true\n debouncedResetScroll(type)\n const value = Math.min(\n Math.round(\n (getScrollbarElement(scrollbar.$el).scrollTop -\n (scrollBarHeight(type) * 0.5 - 10) / typeItemHeight(type) +\n 3) /\n typeItemHeight(type)\n ),\n type === 'hours' ? 23 : 59\n )\n modifyDateField(type, value)\n}\n\nconst scrollBarHeight = (type: TimeUnit) => {\n return unref(listRefsMap[type])!.$el.offsetHeight\n}\n\nconst bindScrollEvent = () => {\n const bindFunction = (type: TimeUnit) => {\n const scrollbar = unref(listRefsMap[type])\n if (scrollbar && scrollbar.$el) {\n getScrollbarElement(scrollbar.$el).onscroll = () => {\n // TODO: scroll is emitted when set scrollTop programmatically\n // should find better solutions in the future!\n handleScroll(type)\n }\n }\n }\n bindFunction('hours')\n bindFunction('minutes')\n bindFunction('seconds')\n}\n\nonMounted(() => {\n nextTick(() => {\n !props.arrowControl && bindScrollEvent()\n adjustSpinners()\n // set selection on the first hour part\n if (props.role === 'start') emitSelectRange('hours')\n })\n})\n\nconst setRef = (scrollbar: ScrollbarInstance | null, type: TimeUnit) => {\n listRefsMap[type].value = scrollbar ?? undefined\n}\n\nemit('set-option', [`${props.role}_scrollDown`, scrollDown])\nemit('set-option', [`${props.role}_emitSelectRange`, emitSelectRange])\n\nwatch(\n () => props.spinnerDate,\n () => {\n if (isScrolling) return\n adjustSpinners()\n }\n)\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_unref","showSeconds","arrowControl","_Fragment","_renderList","_createBlock","_createTextVNode","amPmMode","_toDisplayString","_createVNode","_createElementVNode"],"mappings":"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"}