UNPKG

vuetify

Version:

Vue Material Component Framework

1 lines 22.5 kB
{"version":3,"file":"VCalendar.mjs","names":["CalendarWithEvents","props","DAYS_IN_MONTH_MAX","DAY_MIN","DAYS_IN_WEEK","parseTimestamp","validateTimestamp","relativeDays","nextDay","prevDay","copyTimestamp","updateFormatted","updateWeekday","updateRelative","getStartOfMonth","getEndOfMonth","timestampToDate","VCalendarMonthly","VCalendarDaily","VCalendarWeekly","VCalendarCategory","getParsedCategories","extend","name","calendar","weeks","intervals","category","data","lastStart","lastEnd","computed","parsedValue","value","parsedStart","times","today","parsedCategoryDays","parseInt","categoryDays","renderProps","around","component","maxDays","weekdays","parsedWeekdays","categories","parsedCategories","start","end","type","getStartOfWeek","getEndOfWeek","weekday","parsedEnd","days","i","push","getCategoryList","Error","eventWeekdays","categoryMode","title","spanYears","year","spanMonths","month","monthShortFormatter","monthLongFormatter","getFormatter","timeZone","categoryText","watch","mounted","updateEventVisibility","checkChange","updated","window","requestAnimationFrame","methods","date","$emit","move","amount","moved","forward","mover","limit","day","now","Date","getTime","next","prev","timeToY","time","clamp","c","$children","timeDelta","minutesToPixels","minutes","scrollToTime","input","required","timestamp","noEvents","categoryMap","reduce","map","index","categoryName","count","categoryHideDynamic","categoryShowAll","categoryLength","length","parsedEvents","forEach","ev","categoryForInvalid","filter","hasOwnProperty","render","h","staticClass","class","$props","attrs","role","directives","modifiers","quiet","on","$listeners","e","scopedSlots","getScopedSlots"],"sources":["../../../src/components/VCalendar/VCalendar.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// Styles\n// import '../../stylus/components/_calendar-daily.styl'\n\n// Types\nimport { VNode, Component } from 'vue'\n\n// Mixins\nimport CalendarWithEvents from './mixins/calendar-with-events'\n\n// Util\nimport props from './util/props'\nimport {\n DAYS_IN_MONTH_MAX,\n DAY_MIN,\n DAYS_IN_WEEK,\n parseTimestamp,\n validateTimestamp,\n relativeDays,\n nextDay,\n prevDay,\n copyTimestamp,\n updateFormatted,\n updateWeekday,\n updateRelative,\n getStartOfMonth,\n getEndOfMonth,\n VTime,\n VTimestampInput,\n timestampToDate,\n} from './util/timestamp'\n\n// Calendars\nimport VCalendarMonthly from './VCalendarMonthly'\nimport VCalendarDaily from './VCalendarDaily'\nimport VCalendarWeekly from './VCalendarWeekly'\nimport VCalendarCategory from './VCalendarCategory'\nimport { CalendarTimestamp, CalendarFormatter, CalendarCategory } from 'vuetify/types'\nimport { getParsedCategories } from './util/parser'\n\n// Types\ninterface VCalendarRenderProps {\n start: CalendarTimestamp\n end: CalendarTimestamp\n component: string | Component\n maxDays: number\n weekdays: number[]\n categories: CalendarCategory[]\n}\n\n/* @vue/component */\nexport default CalendarWithEvents.extend({\n name: 'v-calendar',\n\n props: {\n ...props.calendar,\n ...props.weeks,\n ...props.intervals,\n ...props.category,\n },\n\n data: () => ({\n lastStart: null as CalendarTimestamp | null,\n lastEnd: null as CalendarTimestamp | null,\n }),\n\n computed: {\n parsedValue (): CalendarTimestamp {\n return (validateTimestamp(this.value)\n ? parseTimestamp(this.value, true)\n : (this.parsedStart || this.times.today))\n },\n parsedCategoryDays (): number {\n return parseInt(this.categoryDays) || 1\n },\n renderProps (): VCalendarRenderProps {\n const around = this.parsedValue\n let component: any = null\n let maxDays = this.maxDays\n let weekdays = this.parsedWeekdays\n let categories = this.parsedCategories\n let start = around\n let end = around\n switch (this.type) {\n case 'month':\n component = VCalendarMonthly\n start = getStartOfMonth(around)\n end = getEndOfMonth(around)\n break\n case 'week':\n component = VCalendarDaily\n start = this.getStartOfWeek(around)\n end = this.getEndOfWeek(around)\n maxDays = 7\n break\n case 'day':\n component = VCalendarDaily\n maxDays = 1\n weekdays = [start.weekday]\n break\n case '4day':\n component = VCalendarDaily\n end = relativeDays(copyTimestamp(end), nextDay, 3)\n updateFormatted(end)\n maxDays = 4\n weekdays = [\n start.weekday,\n (start.weekday + 1) % 7,\n (start.weekday + 2) % 7,\n (start.weekday + 3) % 7,\n ]\n break\n case 'custom-weekly':\n component = VCalendarWeekly\n start = this.parsedStart || around\n end = this.parsedEnd\n break\n case 'custom-daily':\n component = VCalendarDaily\n start = this.parsedStart || around\n end = this.parsedEnd\n break\n case 'category':\n const days = this.parsedCategoryDays\n\n component = VCalendarCategory\n end = relativeDays(copyTimestamp(end), nextDay, days)\n updateFormatted(end)\n maxDays = days\n weekdays = []\n\n for (let i = 0; i < days; i++) {\n weekdays.push((start.weekday + i) % 7)\n }\n\n categories = this.getCategoryList(categories)\n break\n default:\n throw new Error(this.type + ' is not a valid Calendar type')\n }\n\n return { component, start, end, maxDays, weekdays, categories }\n },\n eventWeekdays (): number[] {\n return this.renderProps.weekdays\n },\n categoryMode (): boolean {\n return this.type === 'category'\n },\n title (): string {\n const { start, end } = this.renderProps\n const spanYears = start.year !== end.year\n const spanMonths = spanYears || start.month !== end.month\n\n if (spanYears) {\n return this.monthShortFormatter(start, true) + ' ' + start.year + ' - ' + this.monthShortFormatter(end, true) + ' ' + end.year\n }\n\n if (spanMonths) {\n return this.monthShortFormatter(start, true) + ' - ' + this.monthShortFormatter(end, true) + ' ' + end.year\n } else {\n return this.monthLongFormatter(start, false) + ' ' + start.year\n }\n },\n monthLongFormatter (): CalendarFormatter {\n return this.getFormatter({\n timeZone: 'UTC', month: 'long',\n })\n },\n monthShortFormatter (): CalendarFormatter {\n return this.getFormatter({\n timeZone: 'UTC', month: 'short',\n })\n },\n parsedCategories (): CalendarCategory[] {\n return getParsedCategories(this.categories, this.categoryText)\n },\n },\n\n watch: {\n renderProps: 'checkChange',\n },\n\n mounted () {\n this.updateEventVisibility()\n this.checkChange()\n },\n\n updated () {\n window.requestAnimationFrame(this.updateEventVisibility)\n },\n\n methods: {\n checkChange (): void {\n const { lastStart, lastEnd } = this\n const { start, end } = this.renderProps\n if (!lastStart || !lastEnd ||\n start.date !== lastStart.date ||\n end.date !== lastEnd.date) {\n this.lastStart = start\n this.lastEnd = end\n this.$emit('change', { start, end })\n }\n },\n move (amount = 1): void {\n const moved = copyTimestamp(this.parsedValue)\n const forward = amount > 0\n const mover = forward ? nextDay : prevDay\n const limit = forward ? DAYS_IN_MONTH_MAX : DAY_MIN\n let times = forward ? amount : -amount\n\n while (--times >= 0) {\n switch (this.type) {\n case 'month':\n moved.day = limit\n mover(moved)\n break\n case 'week':\n relativeDays(moved, mover, DAYS_IN_WEEK)\n break\n case 'day':\n relativeDays(moved, mover, 1)\n break\n case '4day':\n relativeDays(moved, mover, 4)\n break\n case 'category':\n relativeDays(moved, mover, this.parsedCategoryDays)\n break\n }\n }\n\n updateWeekday(moved)\n updateFormatted(moved)\n updateRelative(moved, this.times.now)\n\n if (this.value instanceof Date) {\n this.$emit('input', timestampToDate(moved))\n } else if (typeof this.value === 'number') {\n this.$emit('input', timestampToDate(moved).getTime())\n } else {\n this.$emit('input', moved.date)\n }\n\n this.$emit('moved', moved)\n },\n next (amount = 1): void {\n this.move(amount)\n },\n prev (amount = 1): void {\n this.move(-amount)\n },\n timeToY (time: VTime, clamp = true): number | false {\n const c = this.$children[0] as any\n\n if (c && c.timeToY) {\n return c.timeToY(time, clamp)\n } else {\n return false\n }\n },\n timeDelta (time: VTime): number | false {\n const c = this.$children[0] as any\n\n if (c && c.timeDelta) {\n return c.timeDelta(time)\n } else {\n return false\n }\n },\n minutesToPixels (minutes: number): number {\n const c = this.$children[0] as any\n\n if (c && c.minutesToPixels) {\n return c.minutesToPixels(minutes)\n } else {\n return -1\n }\n },\n scrollToTime (time: VTime): boolean {\n const c = this.$children[0] as any\n\n if (c && c.scrollToTime) {\n return c.scrollToTime(time)\n } else {\n return false\n }\n },\n parseTimestamp (input: VTimestampInput, required?: false): CalendarTimestamp | null {\n return parseTimestamp(input, required, this.times.now)\n },\n timestampToDate (timestamp: CalendarTimestamp): Date {\n return timestampToDate(timestamp)\n },\n getCategoryList (categories: CalendarCategory[]): CalendarCategory[] {\n if (!this.noEvents) {\n const categoryMap: any = categories.reduce((map: any, category, index) => {\n if (typeof category === 'object' && category.categoryName) map[category.categoryName] = { index, count: 0 }\n else if (typeof category === 'string') map[category] = { index, count: 0 }\n return map\n }, {})\n\n if (!this.categoryHideDynamic || !this.categoryShowAll) {\n let categoryLength = categories.length\n\n this.parsedEvents.forEach(ev => {\n let category = ev.category\n\n if (typeof category !== 'string') {\n category = this.categoryForInvalid\n }\n\n if (!category) {\n return\n }\n\n if (category in categoryMap) {\n categoryMap[category].count++\n } else if (!this.categoryHideDynamic) {\n categoryMap[category] = {\n index: categoryLength++,\n count: 1,\n }\n }\n })\n }\n\n if (!this.categoryShowAll) {\n for (const category in categoryMap) {\n if (categoryMap[category].count === 0) {\n delete categoryMap[category]\n }\n }\n }\n\n categories = categories.filter((category: CalendarCategory) => {\n if (typeof category === 'object' && category.categoryName) {\n return categoryMap.hasOwnProperty(category.categoryName)\n } else if (typeof category === 'string') {\n return categoryMap.hasOwnProperty(category)\n }\n return false\n })\n }\n return categories\n },\n },\n\n render (h): VNode {\n const { start, end, maxDays, component, weekdays, categories } = this.renderProps\n\n return h(component, {\n staticClass: 'v-calendar',\n class: {\n 'v-calendar-events': !this.noEvents,\n },\n props: {\n ...this.$props,\n start: start.date,\n end: end.date,\n maxDays,\n weekdays,\n categories,\n },\n attrs: {\n role: 'grid',\n },\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.updateEventVisibility,\n }],\n on: {\n ...this.$listeners,\n\n 'click:date': (day: CalendarTimestamp, e?: MouseEvent) => {\n if (this.$listeners.input) {\n this.$emit('input', day.date)\n }\n if (this.$listeners['click:date']) {\n this.$emit('click:date', day, e)\n }\n },\n },\n scopedSlots: this.getScopedSlots(),\n })\n },\n})\n"],"mappings":"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"}