element-plus
Version:
A Component Library for Vue 3
1 lines • 9.17 kB
Source Map (JSON)
{"version":3,"file":"time-select.vue2.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 :empty-values=\"emptyValues\"\n :value-on-clear=\"valueOnClear\"\n :popper-class=\"popperClass\"\n :popper-style=\"popperStyle\"\n @update:model-value=\"(event) => $emit(UPDATE_MODEL_EVENT, event)\"\n @change=\"(event) => $emit(CHANGE_EVENT, event)\"\n @blur=\"(event) => $emit('blur', event)\"\n @focus=\"(event) => $emit('focus', event)\"\n @clear=\"() => $emit('clear')\"\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 { useFormDisabled } from '@element-plus/components/form'\nimport ElIcon from '@element-plus/components/icon'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport {\n CircleClose as IconCircleClose,\n Clock as IconClock,\n} from '@element-plus/icons-vue'\nimport { compareTime, formatTime, nextTime, parseTime } from './utils'\n\nimport type { TimeSelectProps } from './time-select'\n\ndayjs.extend(customParseFormat)\n\nconst { Option: ElOption } = ElSelect\n\ndefineOptions({\n name: 'ElTimeSelect',\n})\n\ndefineEmits([CHANGE_EVENT, 'blur', 'focus', 'clear', UPDATE_MODEL_EVENT])\n\nconst props = withDefaults(defineProps<TimeSelectProps>(), {\n format: 'HH:mm',\n disabled: undefined,\n editable: true,\n effect: 'light',\n clearable: true,\n start: '09:00',\n end: '18:00',\n step: '00:30',\n prefixIcon: () => IconClock,\n clearIcon: () => IconCircleClose,\n popperClass: '',\n valueOnClear: undefined,\n popperStyle: undefined,\n})\n\nconst nsInput = useNamespace('input')\nconst select = ref<typeof ElSelect>()\n\nconst _disabled = useFormDisabled()\nconst { lang } = useLocale()\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 const push = (formattedValue: string, rawValue: string) => {\n result.push({\n value: formattedValue,\n disabled:\n compareTime(rawValue, minTime.value || '-1:-1') <= 0 ||\n compareTime(rawValue, maxTime.value || '100:100') >= 0,\n })\n }\n\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')\n .locale(lang.value)\n .format(props.format)\n push(currentTime, current)\n current = nextTime(current, step.value!)\n }\n if (\n props.includeEndTime &&\n end.value &&\n result[result.length - 1]?.value !== end.value\n ) {\n const formattedValue = dayjs(end.value, 'HH:mm')\n .locale(lang.value)\n .format(props.format)\n push(formattedValue, end.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 /**\n * @description blur the Input component\n */\n blur,\n /**\n * @description focus the Input component\n */\n focus,\n})\n</script>\n"],"names":["_createBlock","_unref","$emit","_normalizeClass","_openBlock","_resolveDynamicComponent","_createElementBlock","_Fragment","_renderList"],"mappings":"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"}