UNPKG

vexip-ui

Version:

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

1 lines 18.5 kB
{"version":3,"file":"date-control.vue2.cjs","sources":["../../../components/date-picker/date-control.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\n\nimport { useNameHelper } from '@vexip-ui/config'\nimport { doubleDigits, getLastDayOfMonth } from '@vexip-ui/utils'\nimport { handleKeyEnter } from './helper'\n\nimport type { PropType } from 'vue'\nimport type { LocaleConfig } from '@vexip-ui/config'\nimport type { DateTimeType, DateType } from './symbol'\n\ndefineOptions({ name: 'DateControl' })\n\nconst props = defineProps({\n unitType: {\n type: String as PropType<DateTimeType | ''>,\n default: '',\n },\n enabled: {\n type: Object as PropType<Record<DateTimeType, boolean>>,\n default: () => ({}),\n },\n activated: {\n type: Object as PropType<Record<DateTimeType, boolean>>,\n default: () => ({}),\n },\n dateValue: {\n type: Object as PropType<Record<DateTimeType, number>>,\n default: () => ({}),\n },\n dateSeparator: {\n type: String,\n default: '/',\n },\n timeSeparator: {\n type: String,\n default: ':',\n },\n visible: {\n type: Boolean,\n default: false,\n },\n focused: {\n type: Boolean,\n default: false,\n },\n filler: {\n type: String,\n default: '-',\n validator: (value: string) => {\n return value.length === 1\n },\n },\n steps: {\n type: Array as PropType<number[]>,\n default: () => [1, 1, 1],\n },\n ctrlSteps: {\n type: Array as PropType<number[]>,\n default: () => [5, 5, 5],\n },\n labels: {\n type: Object as PropType<Partial<Record<DateTimeType, string>>>,\n default: () => ({}),\n },\n hasError: {\n type: Boolean,\n default: false,\n },\n placeholder: {\n type: String,\n default: '',\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n labeledBy: {\n type: String,\n default: undefined,\n },\n locale: {\n type: Object as PropType<LocaleConfig['calendar'] & LocaleConfig['datePicker']>,\n default: () => ({}),\n },\n dateUnitOrder: {\n type: Array as PropType<DateType[]>,\n default: () => ['year', 'month', 'date'],\n },\n})\n\nconst emit = defineEmits([\n 'input',\n 'plus',\n 'minus',\n 'enter',\n 'cancel',\n 'unit-focus',\n 'prev-unit',\n 'next-unit',\n 'blur',\n])\n\nconst nh = useNameHelper('date-picker')\n\nconst wrapper = ref<HTMLElement>()\n\nconst label = computed(() => props.locale.ariaLabel ?? {})\nconst isActivated = computed(() => {\n return (Object.keys(props.enabled) as DateTimeType[]).every(type => {\n return !props.enabled[type] || props.activated[type]\n })\n})\nconst className = computed(() => {\n return {\n [nh.be('input')]: true,\n [nh.bem('input', 'activated')]: isActivated.value,\n [nh.bem('input', 'error')]: props.hasError,\n }\n})\nconst showTimeUnits = computed(() => {\n return props.enabled.hour || props.enabled.minute || props.enabled.second\n})\nconst formattedYear = computed(() => {\n return formatValue('year')\n})\nconst formattedMonth = computed(() => {\n return formatValue('month')\n})\nconst formattedDate = computed(() => {\n return formatValue('date')\n})\nconst formattedHour = computed(() => {\n return formatValue('hour')\n})\nconst formattedMinute = computed(() => {\n return formatValue('minute')\n})\nconst formattedSecond = computed(() => {\n return formatValue('second')\n})\nconst maxDateCount = computed(() => {\n return getLastDayOfMonth(props.dateValue.year, props.dateValue.month)\n})\nconst dateUnitOrder = computed(() => {\n const [one, two, three] = props.dateUnitOrder\n\n return {\n [one]: -4,\n [two]: -2,\n [three]: 0,\n }\n})\n\ndefineExpose({\n isActivated,\n wrapper,\n focus: () => {\n wrapper.value?.focus()\n },\n blur: () => {\n wrapper.value?.blur()\n },\n})\n\nfunction formatValue(type: DateTimeType) {\n const isYear = type === 'year'\n const filler = props.filler\n\n return props.activated[type]\n ? isYear\n ? props.dateValue.year.toString().padStart(4, '0')\n : doubleDigits(props.dateValue[type])\n : `${isYear ? `${filler}${filler}` : ''}${filler}${filler}`\n}\n\nfunction getUnitFocusClass(type: DateTimeType) {\n return props.visible && props.unitType === type ? nh.bem('unit', 'focused') : null\n}\n\nfunction handleInputFocus(type: DateTimeType) {\n if (props.readonly) return\n\n emit('unit-focus', type)\n}\n\nfunction handleInput(event: KeyboardEvent) {\n if (!props.visible) return\n\n const type = handleKeyEnter(event)\n\n if (props.readonly) {\n switch (type) {\n case 'ok': {\n emit('enter')\n break\n }\n case 'esc': {\n emit('cancel')\n break\n }\n }\n\n return\n }\n\n switch (type) {\n case 'next': {\n emit('next-unit')\n break\n }\n case 'prev': {\n emit('prev-unit')\n break\n }\n case 'up': {\n emit('minus', event.ctrlKey)\n break\n }\n case 'down': {\n emit('plus', event.ctrlKey)\n break\n }\n case 'ok': {\n emit('enter')\n break\n }\n case 'esc': {\n emit('cancel')\n break\n }\n default: {\n if (typeof type === 'number') {\n emit('input', type)\n }\n }\n }\n}\n\nfunction handleBlur() {\n emit('blur')\n}\n</script>\n\n<template>\n <div\n ref=\"wrapper\"\n :class=\"className\"\n role=\"none\"\n tabindex=\"-1\"\n @keydown=\"handleInput\"\n @blur=\"handleBlur\"\n >\n <div v-if=\"!focused && !isActivated\" :class=\"nh.be('placeholder')\">\n {{ placeholder }}\n </div>\n <template v-else>\n <div\n v-if=\"enabled.year\"\n :class=\"[nh.be('unit'), getUnitFocusClass('year')]\"\n role=\"spinbutton\"\n :aria-label=\"label.year\"\n :aria-valuenow=\"props.dateValue.year\"\n :aria-valuetext=\"formattedYear\"\n :aria-valuemin=\"1\"\n :aria-valuemax=\"9999\"\n :aria-labelledby=\"labeledBy\"\n :style=\"{ order: dateUnitOrder['year'] }\"\n @click=\"handleInputFocus('year')\"\n >\n {{ formattedYear }}\n </div>\n <div\n v-if=\"labels.year\"\n :class=\"nh.be('label')\"\n aria-hidden\n :style=\"{ order: dateUnitOrder['year'] }\"\n @click=\"handleInputFocus('year')\"\n >\n {{ labels.year }}\n </div>\n <template v-if=\"enabled.month\">\n <div\n v-if=\"enabled.year\"\n :class=\"nh.be('separator')\"\n aria-hidden\n style=\"order: -3\"\n >\n {{ dateSeparator }}\n </div>\n <div\n :class=\"[nh.be('unit'), getUnitFocusClass('month')]\"\n role=\"spinbutton\"\n :aria-label=\"label.month\"\n :aria-valuenow=\"props.dateValue.month\"\n :aria-valuetext=\"formattedMonth\"\n :aria-valuemin=\"1\"\n :aria-valuemax=\"12\"\n :aria-labelledby=\"labeledBy\"\n :style=\"{ order: dateUnitOrder['month'] }\"\n @click=\"handleInputFocus('month')\"\n >\n {{ formattedMonth }}\n </div>\n <div\n v-if=\"labels.month\"\n :class=\"nh.be('label')\"\n aria-hidden\n :style=\"{ order: dateUnitOrder['month'] }\"\n @click=\"handleInputFocus('month')\"\n >\n {{ labels.month }}\n </div>\n </template>\n <template v-if=\"enabled.date\">\n <div\n v-if=\"enabled.month || enabled.year\"\n :class=\"nh.be('separator')\"\n aria-hidden\n style=\"order: -1\"\n >\n {{ dateSeparator }}\n </div>\n <div\n :class=\"[nh.be('unit'), getUnitFocusClass('date')]\"\n role=\"spinbutton\"\n :aria-label=\"label.date\"\n :aria-valuenow=\"props.dateValue.date\"\n :aria-valuetext=\"formattedDate\"\n :aria-valuemin=\"1\"\n :aria-valuemax=\"maxDateCount || 31\"\n :aria-labelledby=\"labeledBy\"\n :style=\"{ order: dateUnitOrder['date'] }\"\n @click=\"handleInputFocus('date')\"\n >\n {{ formattedDate }}\n </div>\n <div\n v-if=\"labels.date\"\n :class=\"nh.be('label')\"\n aria-hidden\n :style=\"{ order: dateUnitOrder['date'] }\"\n @click=\"handleInputFocus('date')\"\n >\n {{ labels.date }}\n </div>\n </template>\n\n <template v-if=\"showTimeUnits\">\n <div :class=\"nh.be('pad')\"></div>\n <div\n v-if=\"enabled.hour\"\n :class=\"[nh.be('unit'), getUnitFocusClass('hour')]\"\n role=\"spinbutton\"\n :aria-label=\"label.hour\"\n :aria-valuenow=\"props.dateValue.hour\"\n :aria-valuetext=\"formattedHour\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"23\"\n :aria-labelledby=\"labeledBy\"\n @click=\"handleInputFocus('hour')\"\n >\n {{ formattedHour }}\n </div>\n <div\n v-if=\"labels.hour\"\n :class=\"nh.be('label')\"\n aria-hidden\n @click=\"handleInputFocus('hour')\"\n >\n {{ labels.hour }}\n </div>\n <template v-if=\"enabled.minute\">\n <div v-if=\"enabled.hour\" :class=\"nh.be('separator')\" aria-hidden>\n {{ timeSeparator }}\n </div>\n <div\n :class=\"[nh.be('unit'), getUnitFocusClass('minute')]\"\n role=\"spinbutton\"\n :aria-label=\"label.minute\"\n :aria-valuenow=\"props.dateValue.minute\"\n :aria-valuetext=\"formattedMinute\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"59\"\n :aria-labelledby=\"labeledBy\"\n @click=\"handleInputFocus('minute')\"\n >\n {{ formattedMinute }}\n </div>\n <div\n v-if=\"labels.minute\"\n :class=\"nh.be('label')\"\n aria-hidden\n @click=\"handleInputFocus('minute')\"\n >\n {{ labels.minute }}\n </div>\n </template>\n <template v-if=\"enabled.second\">\n <div v-if=\"enabled.minute || enabled.hour\" :class=\"nh.be('separator')\" aria-hidden>\n {{ timeSeparator }}\n </div>\n <div\n :class=\"[nh.be('unit'), getUnitFocusClass('second')]\"\n role=\"spinbutton\"\n :aria-label=\"label.second\"\n :aria-valuenow=\"props.dateValue.second\"\n :aria-valuetext=\"formattedSecond\"\n :aria-valuemin=\"0\"\n :aria-valuemax=\"59\"\n :aria-labelledby=\"labeledBy\"\n @click=\"handleInputFocus('second')\"\n >\n {{ formattedSecond }}\n </div>\n <div\n v-if=\"labels.second\"\n :class=\"nh.be('label')\"\n aria-hidden\n @click=\"handleInputFocus('second')\"\n >\n {{ labels.second }}\n </div>\n </template>\n </template>\n </template>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","nh","useNameHelper","wrapper","ref","label","computed","isActivated","type","className","showTimeUnits","formattedYear","formatValue","formattedMonth","formattedDate","formattedHour","formattedMinute","formattedSecond","maxDateCount","getLastDayOfMonth","dateUnitOrder","one","two","three","__expose","_a","isYear","filler","doubleDigits","getUnitFocusClass","handleInputFocus","handleInput","event","handleKeyEnter","handleBlur","_createElementBlock","_normalizeClass","_unref","_Fragment","_hoisted_1","_toDisplayString","_createElementVNode","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6"],"mappings":"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"}