UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 23.1 kB
{"version":3,"file":"basic-time-spinner.vue2.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":["_createElementBlock","_normalizeClass","_unref","showSeconds","arrowControl","_Fragment","_renderList","_createBlock","_openBlock","amPmMode","_toDisplayString","_createTextVNode","_createVNode","_createElementVNode"],"mappings":"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"}