UNPKG

vexip-ui

Version:

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

1 lines 6.07 kB
{"version":3,"file":"calendar-cell.vue2.cjs","sources":["../../../components/calendar/calendar-cell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nimport { useNameHelper } from '@vexip-ui/config'\nimport { toAttrValue } from '@vexip-ui/utils'\n\nimport type { PropType } from 'vue'\nimport type { LocaleConfig } from '@vexip-ui/config'\nimport type { MonthIndex, WeekIndex } from './symbol'\n\nconst props = defineProps({\n date: {\n type: Date,\n required: true,\n },\n locale: {\n type: Object as PropType<LocaleConfig['calendar']>,\n required: true,\n },\n selected: {\n type: Boolean,\n default: false,\n },\n hovered: {\n type: Boolean,\n default: false,\n },\n isPrev: {\n type: Boolean,\n default: false,\n },\n isNext: {\n type: Boolean,\n default: false,\n },\n isToday: {\n type: Boolean,\n default: false,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n inRange: {\n type: Boolean,\n default: false,\n },\n})\n\nconst emit = defineEmits(['select', 'hover'])\n\ndefineSlots<{\n item: (params: {\n date: Date,\n label: string,\n selected: boolean,\n hovered: boolean,\n isPrev: boolean,\n isNext: boolean,\n isToday: boolean,\n disabled: boolean,\n inRange: boolean,\n }) => any,\n default: (params: {\n date: Date,\n label: string,\n selected: boolean,\n hovered: boolean,\n isPrev: boolean,\n isNext: boolean,\n isToday: boolean,\n disabled: boolean,\n inRange: boolean,\n }) => any,\n}>()\n\nconst nh = useNameHelper('calendar')\n\nconst label = computed(() => {\n const label = props.locale.ariaLabel\n const year = props.date.getFullYear()\n const month = (props.date.getMonth() + 1) as MonthIndex\n const day = props.date.getDate()\n const weekDay = (props.date.getDay() || 7) as WeekIndex\n\n return `${label[`week${weekDay}`]}, ${label[`month${month}`]} ${day}, ${year}`\n})\n</script>\n\n<template>\n <div\n :class=\"nh.be('cell')\"\n role=\"gridcell\"\n :aria-selected=\"toAttrValue(selected)\"\n :aria-disabled=\"toAttrValue(disabled)\"\n @mouseenter=\"emit('hover', date)\"\n >\n <slot\n name=\"item\"\n :date=\"date\"\n :label=\"label\"\n :selected=\"selected\"\n :hovered=\"hovered\"\n :is-prev=\"isPrev\"\n :is-next=\"isNext\"\n :is-today=\"isToday\"\n :disabled=\"disabled\"\n :in-range=\"inRange\"\n >\n <div\n :class=\"{\n [nh.be('index')]: true,\n [nh.bem('index', 'selected')]: selected,\n [nh.bem('index', 'hovered')]: hovered,\n [nh.bem('index', 'prev')]: isPrev,\n [nh.bem('index', 'next')]: isNext,\n [nh.bem('index', 'today')]: isToday,\n [nh.bem('index', 'disabled')]: disabled,\n [nh.bem('index', 'in-range')]: inRange,\n }\"\n tabindex=\"0\"\n role=\"button\"\n :aria-label=\"label\"\n :aria-disabled=\"toAttrValue(disabled)\"\n @click=\"emit('select', date)\"\n @keydown.enter.prevent=\"emit('select', date)\"\n @keydown.space.prevent=\"emit('select', date)\"\n >\n <slot\n :date=\"date\"\n :label=\"label\"\n :selected=\"selected\"\n :hovered=\"hovered\"\n :is-prev=\"isPrev\"\n :is-next=\"isNext\"\n :is-today=\"isToday\"\n :disabled=\"disabled\"\n :in-range=\"inRange\"\n >\n <div :class=\"nh.be('index-inner')\">\n {{ date.getDate() }}\n </div>\n </slot>\n </div>\n </slot>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","nh","useNameHelper","label","computed","year","month","day","weekDay","_createElementBlock","_normalizeClass","_unref","toAttrValue","_cache","$event","_renderSlot","_ctx","_createElementVNode","_withKeys","_withModifiers","_toDisplayString"],"mappings":"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"}