UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 47.5 kB
{"version":3,"file":"time-picker.vue2.cjs","sources":["../../../components/date-picker/time-picker.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Button } from '@/components/button'\nimport { Icon } from '@/components/icon'\nimport { Popper } from '@/components/popper'\nimport { useFieldStore } from '@/components/form'\nimport { Renderer } from '@/components/renderer'\n\nimport { computed, nextTick, reactive, ref, toRef, watch } from 'vue'\n\nimport TimeWheel from './time-wheel.vue'\nimport TimeControl from './time-control.vue'\nimport {\n createIconProp,\n createSizeProp,\n createStateProp,\n emitEvent,\n makeSentence,\n useIcons,\n useLocale,\n useNameHelper,\n useProps,\n useWordSpace,\n} from '@vexip-ui/config'\nimport {\n placementWhileList,\n useClickOutside,\n useHover,\n usePopper,\n useSetTimeout,\n} from '@vexip-ui/hooks'\nimport { USE_TOUCH, boundRange, callIfFunc, doubleDigits, toAttrValue } from '@vexip-ui/utils'\nimport { timePickerProps } from './props'\nimport { useColumn, useTimeBound } from './helper'\nimport { TIME_REG } from './symbol'\n\nimport type { PopperExposed } from '@/components/popper'\nimport type { TimePickerChangeEvent, TimePickerSlots, TimeType } from './symbol'\n\ndefineOptions({ name: 'TimePicker' })\n\nconst {\n idFor,\n labelId,\n state,\n disabled,\n loading,\n size,\n validateField,\n clearField,\n getFieldValue,\n setFieldValue,\n} = useFieldStore<string | string[]>(() => reference.value?.focus())\n\nconst nh = useNameHelper('time-picker')\n\nconst _props = defineProps(timePickerProps)\nconst props = useProps('timePicker', _props, {\n size: createSizeProp(size),\n state: createStateProp(state),\n locale: null,\n visible: false,\n placement: {\n default: 'bottom-start',\n validator: value => placementWhileList.includes(value),\n },\n transfer: false,\n format: 'HH:mm:ss',\n separator: ':',\n value: {\n default: () => getFieldValue(),\n static: true,\n },\n filler: {\n default: '-',\n validator: value => value.length === 1,\n },\n clearable: false,\n noAction: false,\n noArrow: false,\n pointer: USE_TOUCH,\n candidate: {\n default: 3,\n validator: value => [0, 1, 2, 3].includes(value),\n },\n steps: () => [1, 1, 1],\n labels: () => ({}),\n shortcuts: () => [],\n range: null,\n disabled: () => disabled.value,\n transitionName: () => nh.ns('drop'),\n confirmText: null,\n cancelText: null,\n ctrlSteps: () => [5, 5, 5],\n prefix: createIconProp(),\n prefixColor: '',\n suffix: createIconProp(),\n suffixColor: '',\n noSuffix: false,\n exchange: false,\n loading: () => loading.value,\n loadingIcon: createIconProp(),\n loadingLock: false,\n loadingEffect: null,\n min: null,\n max: null,\n outsideClose: true,\n outsideCancel: false,\n placeholder: null,\n unitReadonly: false,\n popperAlive: null,\n shortcutsPlacement: 'left',\n slots: () => ({}),\n})\n\nconst emit = defineEmits(['update:value', 'update:visible'])\n\nconst slots = defineSlots<TimePickerSlots>()\n\nconst locale = useLocale('timePicker', toRef(props, 'locale'))\nconst icons = useIcons()\nconst wordSpace = useWordSpace()\n\nconst placement = toRef(props, 'placement')\nconst transfer = toRef(props, 'transfer')\nconst currentVisible = ref(props.visible)\nconst focused = ref(false)\nconst lastValue = ref('')\nconst startState = createTimeState()\nconst endState = createTimeState()\nconst currentState = ref<'start' | 'end'>('start')\nconst staticWheel = ref(false)\n\nconst { timer } = useSetTimeout()\n\nconst wrapper = useClickOutside(handleClickOutside)\nconst popper = ref<PopperExposed>()\nconst { reference, transferTo, updatePopper } = usePopper({\n placement,\n transfer,\n wrapper,\n popper: computed(() => popper.value?.wrapper),\n isDrop: true,\n})\nconst { isHover } = useHover(reference)\nconst { isTimeDisabled } = useTimeBound(toRef(props, 'min'), toRef(props, 'max'))\n\nconst startInput = ref<InstanceType<typeof TimeControl>>()\nconst endInput = ref<InstanceType<typeof TimeControl>>()\n\nconst startPlaceholder = computed(() => {\n if (props.placeholder) {\n return Array.isArray(props.placeholder) ? props.placeholder[0] : props.placeholder\n }\n\n const { select, start, time } = locale.value.placeholder\n\n return makeSentence(props.range ? `${start} ${time}` : `${select} ${time}`, wordSpace.value)\n})\nconst endPlaceholder = computed(() => {\n if (props.placeholder) {\n return Array.isArray(props.placeholder)\n ? props.placeholder[1] || props.placeholder[0]\n : props.placeholder\n }\n\n const { end, time } = locale.value.placeholder\n\n return makeSentence(`${end} ${time}`, wordSpace.value)\n})\nconst className = computed(() => {\n return [\n nh.b(),\n nh.ns('input-vars'),\n nh.bs('vars'),\n {\n [nh.bm('inherit')]: props.inherit,\n [nh.bm('disabled')]: props.disabled,\n [nh.bm(props.size)]: props.size !== 'default',\n [nh.bm('no-hour')]: !startState.enabled.hour,\n [nh.bm('no-minute')]: !startState.enabled.minute,\n [nh.bm('no-second')]: !startState.enabled.second,\n [nh.bm('visible')]: currentVisible.value,\n [nh.bm(props.state)]: props.state !== 'default',\n [nh.bm('is-range')]: props.range,\n },\n ]\n})\nconst readonly = computed(() => props.loading && props.loadingLock)\nconst selectorClass = computed(() => {\n const baseCls = nh.be('selector')\n\n return {\n [baseCls]: true,\n [`${baseCls}--disabled`]: props.disabled,\n [`${baseCls}--readonly`]: readonly.value,\n [`${baseCls}--loading`]: props.loading,\n [`${baseCls}--${props.size}`]: props.size !== 'default',\n [`${baseCls}--focused`]: focused.value,\n [`${baseCls}--${props.state}`]: props.state !== 'default',\n }\n})\nconst hasPrefix = computed(() => !!(slots.prefix || props.prefix || props.slots.prefix))\nconst currentValue = computed(() => {\n const values = [startState, endState].map(state => {\n return Object.values(state.timeValue).map(doubleDigits).join(':')\n })\n\n return props.range ? values : values[0]\n})\nconst showClear = computed(() => {\n return !props.disabled && !readonly.value && props.clearable && isHover.value && !!lastValue.value\n})\nconst startError = computed(() => {\n const { hour, minute, second } = startState.timeValue\n\n return (\n isTimeDisabled.hour(hour) ||\n isTimeDisabled.minute(hour, minute) ||\n isTimeDisabled.second(hour, minute, second)\n )\n})\nconst endError = computed(() => {\n if (!props.range) return false\n\n const { hour, minute, second } = endState.timeValue\n\n return (\n isTimeDisabled.hour(hour) ||\n isTimeDisabled.minute(hour, minute) ||\n isTimeDisabled.second(hour, minute, second)\n )\n})\n\nwatch(\n () => props.value,\n value => {\n parseValue(value)\n lastValue.value = (Array.isArray(value) ? value[0] || value[1] : value) ? getStringValue() : ''\n },\n { immediate: true },\n)\nwatch(() => props.format, parseFormat, { immediate: true })\nwatch(\n () => props.visible,\n value => {\n currentVisible.value = value\n },\n)\nwatch(currentVisible, value => {\n if (value) {\n updatePopper()\n }\n})\nwatch(focused, value => {\n if (value) {\n emitEvent(props.onFocus)\n } else {\n emitEvent(props.onBlur)\n }\n})\nwatch(currentState, value => {\n if (!props.unitReadonly && currentVisible.value) {\n emitEvent(props.onChangeCol, getCurrentState().column, value)\n }\n})\nwatch(\n () => startState.column,\n value => {\n if (!props.unitReadonly && currentVisible.value && currentState.value === 'start') {\n emitEvent(props.onChangeCol, value, 'start')\n }\n },\n)\nwatch(\n () => endState.column,\n value => {\n if (!props.unitReadonly && currentVisible.value && currentState.value === 'end') {\n emitEvent(props.onChangeCol, value, 'end')\n }\n },\n)\nwatch(\n () => props.disabled,\n value => {\n if (value) {\n setVisible(false)\n handleBlur()\n }\n },\n)\nwatch(readonly, value => {\n if (value) {\n setVisible(false)\n }\n})\n\ndefineExpose({\n idFor,\n isHover,\n currentVisible,\n focused,\n startState,\n endState,\n currentState,\n currentValue,\n startError,\n endError,\n wrapper,\n reference,\n popper,\n start: startInput,\n end: endInput,\n updatePopper,\n focus: (options?: FocusOptions) => reference.value?.focus(options),\n blur: () => reference.value?.blur(),\n})\n\nfunction createTimeState() {\n const { currentColumn, enabled, resetColumn, enterColumn } = useColumn([\n 'hour',\n 'minute',\n 'second',\n ] as TimeType[])\n\n const timeValue = reactive({\n hour: 0,\n minute: 0,\n second: 0,\n })\n const activated = reactive({\n hour: false,\n minute: false,\n second: false,\n })\n\n return reactive({\n column: currentColumn,\n enabled,\n activated,\n timeValue,\n resetColumn,\n enterColumn,\n })\n}\n\nfunction getCurrentState() {\n return currentState.value === 'start' ? startState : endState\n}\n\nfunction parseValue<T extends string | null>(value: T | T[]) {\n if (!Array.isArray(value)) {\n value = [value, value]\n }\n\n const defaultDate = new Date()\n\n for (let i = 0; i < 2; ++i) {\n const match = TIME_REG.exec(value[i] || '')\n const state = i === 0 ? startState : endState\n const { timeValue } = state\n\n if (match) {\n toggleActivated(true, i === 0 ? 'start' : 'end')\n\n const hour = parseInt(match[1])\n const minute = match[2] ? parseInt(match[2].slice(1)) : 0\n const second = match[3] ? parseInt(match[3].slice(1)) : 0\n\n const date = new Date(2000, 1, 1, hour, minute, second)\n\n timeValue.hour = date.getHours()\n timeValue.minute = date.getMinutes()\n timeValue.second = date.getSeconds()\n } else {\n timeValue.hour = defaultDate.getHours()\n timeValue.minute = defaultDate.getMinutes()\n timeValue.second = defaultDate.getSeconds()\n\n toggleActivated(false, i === 0 ? 'start' : 'end')\n }\n\n if (!props.range) break\n }\n}\n\nfunction parseFormat() {\n ;[startState, endState].forEach(state => {\n state.enabled.hour = props.format.includes('H')\n state.enabled.minute = props.format.includes('m')\n state.enabled.second = props.format.includes('s')\n })\n}\n\nfunction toggleActivated(value: boolean, valueType?: 'start' | 'end') {\n const states = valueType\n ? valueType === 'start'\n ? [startState]\n : [endState]\n : [startState, endState]\n\n states.forEach(state => {\n ;(Object.keys(state.activated) as TimeType[]).forEach(type => {\n state.activated[type] = value\n })\n })\n}\n\nfunction getStringValue() {\n return Array.isArray(currentValue.value) ? currentValue.value.join('|') : currentValue.value\n}\n\nfunction verifyTime() {\n if (startError.value || (props.range && endError.value)) {\n parseValue(props.value)\n }\n}\n\nfunction setVisible(visible: boolean) {\n if (currentVisible.value === visible) return\n\n currentVisible.value = visible\n\n emit('update:visible', visible)\n emitEvent(props.onToggle, visible)\n}\n\nfunction emitChange() {\n verifyTime()\n\n if (lastValue.value !== getStringValue()) {\n lastValue.value = getStringValue()\n\n toggleActivated(true)\n emit('update:value', currentValue.value)\n setFieldValue(currentValue.value)\n emitEvent(props.onChange as TimePickerChangeEvent, currentValue.value)\n validateField()\n }\n}\n\nfunction handleFocused() {\n if (props.disabled) return\n\n focused.value = true\n\n timer.focus = setTimeout(() => {\n if (focused.value) {\n if (currentState.value === 'start') {\n startInput.value?.focus()\n } else {\n endInput.value?.focus()\n }\n }\n }, 120)\n}\n\nfunction handleBlur() {\n clearTimeout(timer.focus)\n\n focused.value = false\n startInput.value?.blur()\n endInput.value?.blur()\n}\n\nfunction showPanel(event: Event) {\n if (props.disabled || readonly.value) return\n\n const target = event.target as Node\n\n setVisible(true)\n handleFocused()\n\n if (wrapper.value && target) {\n const units = Array.from(wrapper.value.querySelectorAll(`.${nh.be('unit')}`))\n\n if (!units.some(unit => unit === target || unit.contains(target))) {\n startState.column = null\n endState.column = null\n }\n }\n}\n\nfunction finishInput(shouldChange = true) {\n setVisible(false)\n\n shouldChange && emitChange()\n startState.resetColumn()\n endState.resetColumn()\n}\n\nfunction handleClear(finish = true) {\n if (props.disabled || readonly.value) return\n\n if (props.clearable) {\n nextTick(() => {\n const emitValue = props.range ? ([] as string[]) : ''\n\n parseValue(null)\n finish && finishInput(false)\n emit('update:value', emitValue)\n emitEvent(props.onChange as TimePickerChangeEvent, emitValue)\n emitEvent(props.onClear)\n clearField(emitValue)\n finish && handleBlur()\n\n lastValue.value = ''\n\n nextTick(() => {\n toggleActivated(false)\n })\n })\n }\n}\n\nfunction handleWheelChange(type: TimeType) {\n if (currentVisible.value) {\n getCurrentState().activated[type] = true\n }\n}\n\nfunction handleInputFocus(type: TimeType) {\n getCurrentState().column = type\n}\n\nfunction handleInput(value: number) {\n const state = getCurrentState()\n const type = state.column\n\n if (!type) return\n\n handleInputNumber(type, value)\n\n if (state.column !== 'second' && state.timeValue[type] >= 10) {\n state.enterColumn('next', false)\n }\n}\n\nfunction handleInputNumber(type: TimeType, number: number) {\n const state = getCurrentState()\n const prev = state.timeValue[type]\n\n if (state.activated[type] && prev > 0 && prev < 10) {\n state.timeValue[type] = prev * 10 + number\n } else {\n state.timeValue[type] = number\n }\n\n verifyValue(type)\n\n state.activated[type] = true\n emitEvent(props.onInput, type, state.timeValue[type])\n}\n\nfunction verifyValue(type: TimeType) {\n const timeValue = getCurrentState().timeValue\n\n timeValue[type] = boundRange(timeValue[type], 0, type === 'hour' ? 23 : 59)\n timeValue[type] = Math.round(timeValue[type] / getStep(type)) * getStep(type)\n}\n\nfunction handlePlus(ctrlKey: boolean) {\n const state = getCurrentState()\n const type = state.column\n\n if (!type) return\n\n if (state.enabled[type]) {\n state.timeValue[type] += ctrlKey ? getCtrlStep(type) : getStep(type)\n\n verifyValue(type)\n emitEvent(props.onPlus, type, state.timeValue[type])\n }\n}\n\nfunction handleMinus(ctrlKey: boolean) {\n const state = getCurrentState()\n const type = state.column\n\n if (!type) return\n\n if (state.enabled[type]) {\n state.timeValue[type] -= ctrlKey ? getCtrlStep(type) : getStep(type)\n\n verifyValue(type)\n emitEvent(props.onMinus, type, state.timeValue[type])\n }\n}\n\nfunction getStep(type: TimeType) {\n return props.steps[type === 'hour' ? 0 : type === 'minute' ? 1 : 2] || 1\n}\n\nfunction getCtrlStep(type: TimeType) {\n return props.ctrlSteps[type === 'hour' ? 0 : type === 'minute' ? 1 : 2] || 1\n}\n\nfunction fallbackFocus() {\n requestAnimationFrame(() => {\n handleBlur()\n reference.value?.focus()\n })\n}\n\nfunction handleEnter() {\n fallbackFocus()\n finishInput()\n emitEvent(props.onEnter)\n}\n\nfunction handleCancel() {\n fallbackFocus()\n parseValue(props.value)\n finishInput(false)\n emitEvent(props.onCancel)\n}\n\nfunction handleShortcut(index: number) {\n const { value, name } = props.shortcuts[index]\n const parsedValue = callIfFunc(value)\n\n fallbackFocus()\n parseValue(parsedValue)\n emitEvent(props.onShortcut as (name: string, value: string | string[]) => void, name, parsedValue)\n finishInput()\n}\n\nfunction toggleCurrentState(type: 'start' | 'end') {\n currentState.value = type\n}\n\nfunction enterColumn(type: 'prev' | 'next') {\n if (props.range) {\n if (type === 'prev' && currentState.value === 'start' && !startState.column) {\n toggleCurrentState('end')\n }\n\n const state = getCurrentState()\n const currentColumn = state.column\n\n state.enterColumn(type, !currentColumn)\n\n if (currentColumn === state.column) {\n const isStart = currentState.value === 'start'\n const otherState = isStart ? endState : startState\n\n otherState.resetColumn(type === 'prev' ? 'second' : 'hour', type === 'prev')\n toggleCurrentState(isStart ? 'end' : 'start')\n }\n } else {\n startState.enterColumn(type)\n }\n}\n\nfunction handleStartInput(type: TimeType) {\n toggleCurrentState('start')\n handleInputFocus(type)\n}\n\nfunction handleEndInput(type: TimeType) {\n toggleCurrentState('end')\n handleInputFocus(type)\n}\n\nfunction exchangeValue() {\n ;(Object.keys(startState.timeValue) as TimeType[]).forEach(type => {\n const temp = endState.timeValue[type]\n endState.timeValue[type] = startState.timeValue[type]\n startState.timeValue[type] = temp\n })\n}\n\nfunction handleExchangeClick(event: MouseEvent) {\n if (props.exchange) {\n !currentVisible.value && event.stopPropagation()\n exchangeValue()\n }\n}\n\nfunction handleClickOutside() {\n emitEvent(props.onClickOutside)\n\n if (props.outsideClose && currentVisible.value) {\n finishInput(!props.outsideCancel)\n handleBlur()\n emitEvent(props.onOutsideClose)\n }\n}\n</script>\n\n<template>\n <div\n :id=\"idFor\"\n ref=\"wrapper\"\n :class=\"className\"\n role=\"group\"\n :aria-disabled=\"toAttrValue(props.disabled)\"\n :aria-expanded=\"toAttrValue(currentVisible)\"\n aria-haspopup=\"dialog\"\n :aria-labelledby=\"labelId\"\n @click=\"showPanel\"\n >\n <div\n ref=\"reference\"\n :class=\"selectorClass\"\n tabindex=\"0\"\n @keydown.space.prevent=\"showPanel\"\n @keydown.backspace.prevent=\"handleClear(false)\"\n >\n <div\n v-if=\"hasPrefix\"\n :class=\"[nh.be('icon'), nh.be('prefix')]\"\n :style=\"{ color: props.prefixColor }\"\n >\n <slot name=\"prefix\">\n <Renderer :renderer=\"props.slots.prefix\">\n <Icon :icon=\"props.prefix\"></Icon>\n </Renderer>\n </slot>\n </div>\n <div :class=\"nh.be('control')\">\n <TimeControl\n ref=\"startInput\"\n :unit-type=\"currentState === 'start' ? startState.column! : ''\"\n :enabled=\"startState.enabled\"\n :activated=\"startState.activated\"\n :time-value=\"startState.timeValue\"\n :steps=\"props.steps\"\n :ctrl-steps=\"props.ctrlSteps\"\n :focused=\"focused\"\n :visible=\"currentVisible\"\n :separator=\"props.separator\"\n :filler=\"props.filler\"\n :labels=\"props.labels\"\n :has-error=\"startError\"\n :placeholder=\"startPlaceholder\"\n :readonly=\"props.unitReadonly\"\n :labeled-by=\"labelId\"\n :locale=\"locale\"\n @input=\"handleInput\"\n @plus=\"handlePlus\"\n @minus=\"handleMinus\"\n @enter=\"handleEnter\"\n @cancel=\"handleCancel\"\n @unit-focus=\"handleStartInput\"\n @prev-unit=\"enterColumn('prev')\"\n @next-unit=\"enterColumn('next')\"\n @blur=\"startState.column = null\"\n ></TimeControl>\n <template v-if=\"props.range\">\n <div\n :class=\"[nh.be('exchange'), props.exchange ? nh.bem('exchange', 'enabled') : '']\"\n @click=\"handleExchangeClick\"\n >\n <slot name=\"exchange\">\n <Renderer :renderer=\"props.slots.exchange\">\n <Icon v-bind=\"icons.exchange\" style=\"padding-top: 1px\"></Icon>\n </Renderer>\n </slot>\n </div>\n <TimeControl\n ref=\"endInput\"\n :unit-type=\"currentState === 'end' ? endState.column! : ''\"\n :enabled=\"endState.enabled\"\n :activated=\"endState.activated\"\n :time-value=\"endState.timeValue\"\n :steps=\"props.steps\"\n :ctrl-steps=\"props.ctrlSteps\"\n :focused=\"focused\"\n :visible=\"currentVisible\"\n :separator=\"props.separator\"\n :filler=\"props.filler\"\n :labels=\"props.labels\"\n :has-error=\"endError\"\n :placeholder=\"endPlaceholder\"\n :readonly=\"props.unitReadonly\"\n :labeled-by=\"labelId\"\n :locale=\"locale\"\n @input=\"handleInput\"\n @plus=\"handlePlus\"\n @minus=\"handleMinus\"\n @enter=\"handleEnter\"\n @cancel=\"handleCancel\"\n @unit-focus=\"handleEndInput\"\n @prev-unit=\"enterColumn('prev')\"\n @next-unit=\"enterColumn('next')\"\n @blur=\"endState.column = null\"\n ></TimeControl>\n </template>\n </div>\n <div\n v-if=\"!props.noSuffix\"\n :class=\"[nh.be('icon'), nh.be('suffix')]\"\n :style=\"{\n color: props.suffixColor,\n opacity: showClear || props.loading ? '0%' : ''\n }\"\n >\n <slot name=\"suffix\">\n <Renderer :renderer=\"props.slots.suffix\">\n <Icon v-bind=\"icons.clock\" :icon=\"props.suffix || icons.clock.icon\"></Icon>\n </Renderer>\n </slot>\n </div>\n <div\n v-else-if=\"props.clearable || props.loading\"\n :class=\"[nh.be('icon'), nh.bem('icon', 'placeholder'), nh.be('suffix')]\"\n ></div>\n <Transition :name=\"nh.ns('fade')\" appear>\n <button\n v-if=\"showClear\"\n :class=\"[nh.be('icon'), nh.be('clear')]\"\n type=\"button\"\n tabindex=\"-1\"\n :aria-label=\"locale.ariaLabel.clear\"\n @click.stop=\"handleClear()\"\n >\n <Icon v-bind=\"icons.clear\"></Icon>\n </button>\n <div v-else-if=\"props.loading\" :class=\"[nh.be('icon'), nh.be('loading')]\">\n <Icon\n v-bind=\"icons.loading\"\n :effect=\"props.loadingEffect || icons.loading.effect\"\n :icon=\"props.loadingIcon || icons.loading.icon\"\n ></Icon>\n </div>\n </Transition>\n </div>\n <Popper\n ref=\"popper\"\n :class=\"[nh.be('popper'), nh.bs('vars')]\"\n :visible=\"currentVisible\"\n :to=\"transferTo\"\n :transition=\"props.transitionName\"\n :alive=\"props.popperAlive ?? !transferTo\"\n @click.stop=\"handleFocused\"\n @before-enter=\"staticWheel = true\"\n @before-leave=\"staticWheel = true\"\n @after-enter=\"staticWheel = false\"\n @after-leave=\"staticWheel = false\"\n >\n <div\n :class=\"{\n [nh.be('panel')]: true,\n [nh.bem('panel', 'vertical')]:\n props.shortcuts.length &&\n (props.shortcutsPlacement === 'top' || props.shortcutsPlacement === 'bottom')\n }\"\n :aria-labelledby=\"labelId\"\n >\n <div\n v-if=\"props.shortcuts.length\"\n :class=\"[\n nh.be('list'),\n nh.bem('list', 'sub'),\n nh.be('shortcuts'),\n nh.bem('shortcuts', props.shortcutsPlacement)\n ]\"\n >\n <div\n v-for=\"(item, index) in props.shortcuts\"\n :key=\"index\"\n :class=\"nh.be('shortcut')\"\n :title=\"item.name\"\n @click=\"handleShortcut(index)\"\n >\n {{ item.name }}\n </div>\n </div>\n <div :class=\"nh.be('list')\">\n <div :class=\"nh.be('wheels')\">\n <TimeWheel\n v-model:hour=\"startState.timeValue.hour\"\n v-model:minute=\"startState.timeValue.minute\"\n v-model:second=\"startState.timeValue.second\"\n :no-arrow=\"props.noArrow\"\n :candidate=\"props.candidate\"\n :steps=\"props.steps\"\n :pointer=\"props.pointer\"\n :disabled-time=\"isTimeDisabled\"\n :no-transition=\"staticWheel\"\n @change=\"handleWheelChange\"\n @toggle-col=\"toggleCurrentState('start')\"\n ></TimeWheel>\n <TimeWheel\n v-if=\"props.range\"\n v-model:hour=\"endState.timeValue.hour\"\n v-model:minute=\"endState.timeValue.minute\"\n v-model:second=\"endState.timeValue.second\"\n :no-arrow=\"props.noArrow\"\n :candidate=\"props.candidate\"\n :steps=\"props.steps\"\n :pointer=\"props.pointer\"\n :disabled-time=\"isTimeDisabled\"\n :no-transition=\"staticWheel\"\n @change=\"handleWheelChange\"\n @toggle-col=\"toggleCurrentState('end')\"\n ></TimeWheel>\n </div>\n <div v-if=\"!props.noAction\" :class=\"nh.be('action')\">\n <Button\n inherit\n text\n size=\"small\"\n @click.stop=\"handleCancel\"\n >\n {{ props.cancelText || locale.cancel }}\n </Button>\n <Button\n inherit\n type=\"primary\"\n size=\"small\"\n :disabled=\"startError || endError\"\n @click.stop=\"handleEnter\"\n >\n {{ props.confirmText || locale.confirm }}\n </Button>\n </div>\n </div>\n </div>\n </Popper>\n </div>\n</template>\n"],"names":["idFor","labelId","state","disabled","loading","size","validateField","clearField","getFieldValue","setFieldValue","useFieldStore","_a","reference","nh","useNameHelper","_props","__props","props","useProps","createSizeProp","createStateProp","value","placementWhileList","USE_TOUCH","createIconProp","emit","__emit","slots","_useSlots","locale","useLocale","toRef","icons","useIcons","wordSpace","useWordSpace","placement","transfer","currentVisible","ref","focused","lastValue","startState","createTimeState","endState","currentState","staticWheel","timer","useSetTimeout","wrapper","useClickOutside","handleClickOutside","popper","transferTo","updatePopper","usePopper","computed","isHover","useHover","isTimeDisabled","useTimeBound","startInput","endInput","startPlaceholder","select","start","time","makeSentence","endPlaceholder","end","className","readonly","selectorClass","baseCls","hasPrefix","currentValue","values","doubleDigits","showClear","startError","hour","minute","second","endError","watch","parseValue","getStringValue","parseFormat","emitEvent","getCurrentState","setVisible","handleBlur","__expose","options","currentColumn","enabled","resetColumn","enterColumn","useColumn","timeValue","reactive","activated","defaultDate","i","match","TIME_REG","toggleActivated","date","valueType","type","verifyTime","visible","emitChange","handleFocused","_b","showPanel","event","target","unit","finishInput","shouldChange","handleClear","finish","nextTick","emitValue","handleWheelChange","handleInputFocus","handleInput","handleInputNumber","number","prev","verifyValue","boundRange","getStep","handlePlus","ctrlKey","getCtrlStep","handleMinus","fallbackFocus","handleEnter","handleCancel","handleShortcut","index","name","parsedValue","callIfFunc","toggleCurrentState","isStart","handleStartInput","handleEndInput","exchangeValue","temp","handleExchangeClick","_createElementBlock","_unref","toAttrValue","_createElementVNode","_normalizeStyle","_renderSlot","_ctx","_createVNode","Renderer","Icon","_normalizeClass","TimeControl","_cache","$event","_Fragment","_mergeProps","_Transition","_normalizeProps","_guardReactiveProps","Popper","_openBlock","item","_toDisplayString","_hoisted_5","TimeWheel","_createBlock","Button","_createTextVNode"],"mappings":"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"}