UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.69 kB
{"version":3,"file":"time-select2.mjs","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 :effect=\"effect\"\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=\"nsInput.e('prefix-icon')\">\n <component :is=\"prefixIcon\" />\n </el-icon>\n </template>\n </el-select>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref } from 'vue'\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat.js'\nimport ElSelect from '@element-plus/components/select'\nimport ElIcon from '@element-plus/components/icon'\nimport { useNamespace } from '@element-plus/hooks'\nimport { timeSelectProps } from './time-select'\nimport { compareTime, formatTime, nextTime, parseTime } from './utils'\n\ndayjs.extend(customParseFormat)\n\nconst { Option: ElOption } = ElSelect\n\ndefineOptions({\n name: 'ElTimeSelect',\n})\n\ndefineEmits(['change', 'blur', 'focus', 'update:modelValue'])\n\nconst props = defineProps(timeSelectProps)\n\nconst nsInput = useNamespace('input')\nconst select = ref<typeof ElSelect>()\n\nconst value = computed(() => props.modelValue)\nconst start = computed(() => {\n const time = parseTime(props.start)\n return time ? formatTime(time) : null\n})\n\nconst end = computed(() => {\n const time = parseTime(props.end)\n return time ? formatTime(time) : null\n})\n\nconst step = computed(() => {\n const time = parseTime(props.step)\n return time ? formatTime(time) : null\n})\n\nconst minTime = computed(() => {\n const time = parseTime(props.minTime || '')\n return time ? formatTime(time) : null\n})\n\nconst maxTime = computed(() => {\n const time = parseTime(props.maxTime || '')\n return time ? formatTime(time) : null\n})\n\nconst items = computed(() => {\n const result: { value: string; disabled: boolean }[] = []\n if (props.start && props.end && props.step) {\n let current = start.value\n let currentTime: string\n while (current && end.value && 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\nconst blur = () => {\n select.value?.blur?.()\n}\n\nconst focus = () => {\n select.value?.focus?.()\n}\n\ndefineExpose({\n blur,\n focus,\n})\n</script>\n"],"names":[],"mappings":"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"}