UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 14.7 kB
{"version":3,"file":"VCalendarWeekly.mjs","names":["VBtn","CalendarBase","getSlot","weekNumber","props","createDayList","getDayIdentifier","createNativeLocaleFormatter","extend","name","weeks","computed","staticClass","classes","themeClasses","parsedMinWeeks","parseInt","minWeeks","days","minDays","parsedWeekdays","length","start","getStartOfWeek","parsedStart","end","getEndOfWeek","parsedEnd","times","today","weekdaySkips","Number","MAX_SAFE_INTEGER","todayWeek","monthFormatter","monthFormat","longOptions","timeZone","month","shortOptions","currentLocale","_tms","short","methods","isOutside","day","dayIdentifier","genHead","$createElement","attrs","role","genHeadDays","header","map","genHeadDay","showWeek","unshift","index","outside","color","present","undefined","setTextColor","key","date","class","getRelativeClasses","weekdayFormatter","shortWeekdays","genWeeks","weekDays","i","push","genWeek","slice","getWeekNumber","week","weekNodes","genDay","genWeekNumber","determineDay","year","localeFirstDayOfYear","String","on","getDefaultMouseEventHandlers","nativeEvent","genDayLabel","genDayLabelButton","hasMonth","showMonthOnFirst","fab","depressed","small","getMouseEventHandlers","event","stop","prevent","result","shortMonths","dayFormatter","genDayMonth","render","h","dragstart","e","preventDefault","hideHeader"],"sources":["../../../src/components/VCalendar/VCalendarWeekly.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// Styles\nimport './VCalendarWeekly.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Components\nimport VBtn from '../VBtn'\n\n// Mixins\nimport CalendarBase from './mixins/calendar-base'\n\n// Util\nimport { getSlot } from '../../util/helpers'\nimport { weekNumber } from '../../util/dateTimeUtils'\nimport props from './util/props'\nimport {\n createDayList,\n getDayIdentifier,\n createNativeLocaleFormatter,\n} from './util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'v-calendar-weekly',\n\n props: props.weeks,\n\n computed: {\n staticClass (): string {\n return 'v-calendar-weekly'\n },\n classes (): object {\n return this.themeClasses\n },\n parsedMinWeeks (): number {\n return parseInt(this.minWeeks)\n },\n days (): CalendarTimestamp[] {\n const minDays = this.parsedMinWeeks * this.parsedWeekdays.length\n const start = this.getStartOfWeek(this.parsedStart)\n const end = this.getEndOfWeek(this.parsedEnd)\n\n return createDayList(\n start,\n end,\n this.times.today,\n this.weekdaySkips,\n Number.MAX_SAFE_INTEGER,\n minDays\n )\n },\n todayWeek (): CalendarTimestamp[] {\n const today = this.times.today\n const start = this.getStartOfWeek(today)\n const end = this.getEndOfWeek(today)\n\n return createDayList(\n start,\n end,\n today,\n this.weekdaySkips,\n this.parsedWeekdays.length,\n this.parsedWeekdays.length\n )\n },\n monthFormatter (): CalendarFormatter {\n if (this.monthFormat) {\n return this.monthFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', month: 'long' }\n const shortOptions = { timeZone: 'UTC', month: 'short' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (_tms, short) => short ? shortOptions : longOptions\n )\n },\n },\n\n methods: {\n isOutside (day: CalendarTimestamp): boolean {\n const dayIdentifier = getDayIdentifier(day)\n\n return dayIdentifier < getDayIdentifier(this.parsedStart) ||\n dayIdentifier > getDayIdentifier(this.parsedEnd)\n },\n genHead (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__head',\n attrs: {\n role: 'row',\n },\n }, this.genHeadDays())\n },\n genHeadDays (): VNode[] {\n const header = this.todayWeek.map(this.genHeadDay)\n\n if (this.showWeek) {\n header.unshift(this.$createElement('div', {\n staticClass: 'v-calendar-weekly__head-weeknumber',\n }))\n }\n\n return header\n },\n genHeadDay (day: CalendarTimestamp, index: number): VNode {\n const outside = this.isOutside(this.days[index])\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n key: day.date,\n staticClass: 'v-calendar-weekly__head-weekday',\n class: this.getRelativeClasses(day, outside),\n attrs: {\n role: 'columnheader',\n },\n }), this.weekdayFormatter(day, this.shortWeekdays))\n },\n genWeeks (): VNode[] {\n const days = this.days\n const weekDays = this.parsedWeekdays.length\n const weeks: VNode[] = []\n\n for (let i = 0; i < days.length; i += weekDays) {\n weeks.push(this.genWeek(days.slice(i, i + weekDays), this.getWeekNumber(days[i])))\n }\n\n return weeks\n },\n genWeek (week: CalendarTimestamp[], weekNumber: number): VNode {\n const weekNodes = week.map((day, index) => this.genDay(day, index, week))\n\n if (this.showWeek) {\n weekNodes.unshift(this.genWeekNumber(weekNumber))\n }\n\n return this.$createElement('div', {\n key: week[0].date,\n staticClass: 'v-calendar-weekly__week',\n attrs: {\n role: 'row',\n },\n }, weekNodes)\n },\n getWeekNumber (determineDay: CalendarTimestamp) {\n return weekNumber(\n determineDay.year,\n determineDay.month - 1,\n determineDay.day,\n this.parsedWeekdays[0],\n parseInt(this.localeFirstDayOfYear)\n )\n },\n genWeekNumber (weekNumber: number) {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__weeknumber',\n }, [\n this.$createElement('small', String(weekNumber)),\n ])\n },\n genDay (day: CalendarTimestamp, index: number, week: CalendarTimestamp[]): VNode {\n const outside = this.isOutside(day)\n\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-weekly__day',\n class: this.getRelativeClasses(day, outside),\n attrs: {\n role: 'cell',\n },\n on: this.getDefaultMouseEventHandlers(':day', nativeEvent => {\n return { nativeEvent, ...day }\n }),\n }, [\n this.genDayLabel(day),\n ...(getSlot(this, 'day', () => ({ outside, index, week, ...day })) || []),\n ])\n },\n genDayLabel (day: CalendarTimestamp): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__day-label',\n }, getSlot(this, 'day-label', day) || [this.genDayLabelButton(day)])\n },\n genDayLabelButton (day: CalendarTimestamp): VNode {\n const color = day.present ? this.color : 'transparent'\n const hasMonth = day.day === 1 && this.showMonthOnFirst\n\n return this.$createElement(VBtn, {\n props: {\n color,\n fab: true,\n depressed: true,\n small: true,\n },\n on: this.getMouseEventHandlers({\n 'click:date': { event: 'click', stop: true },\n 'contextmenu:date': { event: 'contextmenu', stop: true, prevent: true, result: false },\n }, nativeEvent => ({ nativeEvent, ...day })),\n }, hasMonth\n ? this.monthFormatter(day, this.shortMonths) + ' ' + this.dayFormatter(day, false)\n : this.dayFormatter(day, false)\n )\n },\n genDayMonth (day: CalendarTimestamp): VNode | string {\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-weekly__day-month',\n }), getSlot(this, 'day-month', day) || this.monthFormatter(day, this.shortMonths))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: this.staticClass,\n class: this.classes,\n on: {\n dragstart: (e: MouseEvent) => {\n e.preventDefault()\n },\n },\n }, [\n !this.hideHeader ? this.genHead() : '',\n ...this.genWeeks(),\n ])\n },\n})\n"],"mappings":"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"}