element-plus
Version:
A Component Library for Vue 3
1 lines • 13 kB
Source Map (JSON)
{"version":3,"file":"panel-time-pick.mjs","sources":["../../../../../../../packages/components/time-picker/src/time-picker-com/panel-time-pick.vue"],"sourcesContent":["<template>\n <transition :name=\"transitionName\">\n <div v-if=\"actualVisible || visible\" :class=\"ns.b('panel')\">\n <div :class=\"[ns.be('panel', 'content'), { 'has-seconds': showSeconds }]\">\n <time-spinner\n ref=\"spinner\"\n :role=\"datetimeRole || 'start'\"\n :arrow-control=\"arrowControl\"\n :show-seconds=\"showSeconds\"\n :am-pm-mode=\"amPmMode\"\n :spinner-date=\"\n // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n parsedValue as any\n \"\n :disabled-hours=\"disabledHours\"\n :disabled-minutes=\"disabledMinutes\"\n :disabled-seconds=\"disabledSeconds\"\n @change=\"handleChange\"\n @set-option=\"onSetOption\"\n @select-range=\"setSelectionRange\"\n />\n </div>\n <div :class=\"ns.be('panel', 'footer')\">\n <button\n type=\"button\"\n :class=\"[ns.be('panel', 'btn'), 'cancel']\"\n @click=\"handleCancel\"\n >\n {{ t('el.datepicker.cancel') }}\n </button>\n <button\n type=\"button\"\n :class=\"[ns.be('panel', 'btn'), 'confirm']\"\n @click=\"handleConfirm()\"\n >\n {{ t('el.datepicker.confirm') }}\n </button>\n </div>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { getEventCode, isUndefined } from '@element-plus/utils'\nimport { PICKER_BASE_INJECTION_KEY } from '../constants'\nimport { panelTimePickerProps } from '../props/panel-time-picker'\nimport { useTimePanel } from '../composables/use-time-panel'\nimport {\n buildAvailableTimeSlotGetter,\n useOldValue,\n} from '../composables/use-time-picker'\nimport TimeSpinner from './basic-time-spinner.vue'\n\nimport type { Dayjs } from 'dayjs'\n\nconst props = defineProps(panelTimePickerProps)\nconst emit = defineEmits(['pick', 'select-range', 'set-picker-option'])\n\n// Injections\nconst pickerBase = inject(PICKER_BASE_INJECTION_KEY) as any\nconst {\n arrowControl,\n disabledHours,\n disabledMinutes,\n disabledSeconds,\n defaultValue,\n} = pickerBase.props\nconst { getAvailableHours, getAvailableMinutes, getAvailableSeconds } =\n buildAvailableTimeSlotGetter(disabledHours, disabledMinutes, disabledSeconds)\n\nconst ns = useNamespace('time')\nconst { t, lang } = useLocale()\n// data\nconst selectionRange = ref([0, 2])\nconst oldValue = useOldValue(props)\n// computed\nconst transitionName = computed(() => {\n return isUndefined(props.actualVisible)\n ? `${ns.namespace.value}-zoom-in-top`\n : ''\n})\nconst showSeconds = computed(() => {\n return props.format.includes('ss')\n})\nconst amPmMode = computed(() => {\n if (props.format.includes('A')) return 'A'\n if (props.format.includes('a')) return 'a'\n return ''\n})\n// method\nconst isValidValue = (_date: Dayjs) => {\n const parsedDate = dayjs(_date).locale(lang.value)\n const result = getRangeAvailableTime(parsedDate)\n return parsedDate.isSame(result)\n}\nconst handleCancel = () => {\n const old = oldValue.value\n emit('pick', old, false)\n nextTick(() => {\n oldValue.value = old\n })\n}\nconst handleConfirm = (visible = false, first = false) => {\n if (first) return\n emit('pick', props.parsedValue, visible)\n}\nconst handleChange = (_date: Dayjs) => {\n // visible avoids edge cases, when use scrolls during panel closing animation\n if (!props.visible) {\n return\n }\n const result = getRangeAvailableTime(_date).millisecond(0)\n emit('pick', result, true)\n}\n\nconst setSelectionRange = (start: number, end: number) => {\n emit('select-range', start, end)\n selectionRange.value = [start, end]\n}\n\nconst changeSelectionRange = (step: number) => {\n const actualFormat = props.format\n const hourIndex = actualFormat.indexOf('HH')\n const minuteIndex = actualFormat.indexOf('mm')\n const secondIndex = actualFormat.indexOf('ss')\n const list: number[] = []\n const mapping: string[] = []\n if (hourIndex !== -1) {\n list.push(hourIndex)\n mapping.push('hours')\n }\n if (minuteIndex !== -1) {\n list.push(minuteIndex)\n mapping.push('minutes')\n }\n if (secondIndex !== -1 && showSeconds.value) {\n list.push(secondIndex)\n mapping.push('seconds')\n }\n\n const index = list.indexOf(selectionRange.value[0])\n const next = (index + step + list.length) % list.length\n timePickerOptions['start_emitSelectRange'](mapping[next])\n}\n\nconst handleKeydown = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n\n const { left, right, up, down } = EVENT_CODE\n\n if ([left, right].includes(code)) {\n const step = code === left ? -1 : 1\n changeSelectionRange(step)\n event.preventDefault()\n return\n }\n\n if ([up, down].includes(code)) {\n const step = code === up ? -1 : 1\n timePickerOptions['start_scrollDown'](step)\n event.preventDefault()\n return\n }\n}\n\nconst { timePickerOptions, onSetOption, getAvailableTime } = useTimePanel({\n getAvailableHours,\n getAvailableMinutes,\n getAvailableSeconds,\n})\n\nconst getRangeAvailableTime = (date: Dayjs) => {\n return getAvailableTime(date, props.datetimeRole || '', true)\n}\n\nconst parseUserInput = (value: Dayjs) => {\n if (!value) return null\n return dayjs(value, props.format).locale(lang.value)\n}\n\nconst getDefaultValue = () => {\n return dayjs(defaultValue).locale(lang.value)\n}\n\nemit('set-picker-option', ['isValidValue', isValidValue])\nemit('set-picker-option', ['parseUserInput', parseUserInput])\nemit('set-picker-option', ['handleKeydownInput', handleKeydown])\nemit('set-picker-option', ['getRangeAvailableTime', getRangeAvailableTime])\nemit('set-picker-option', ['getDefaultValue', getDefaultValue])\n</script>\n"],"names":["_createBlock","_Transition","_withCtx","actualVisible","visible","_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_createVNode","datetimeRole","parsedValue"],"mappings":"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"}