vuetify
Version:
Vue Material Component Framework
1 lines • 10.9 kB
Source Map (JSON)
{"version":3,"file":"calendar-with-intervals.mjs","names":["CalendarBase","props","parseTime","copyTimestamp","updateMinutes","createDayList","createIntervalList","createNativeLocaleFormatter","MINUTES_IN_DAY","extend","name","intervals","computed","parsedFirstInterval","parseInt","firstInterval","parsedIntervalMinutes","intervalMinutes","parsedIntervalCount","intervalCount","parsedIntervalHeight","parseFloat","intervalHeight","parsedFirstTime","firstTime","firstMinute","time","bodyHeight","days","parsedStart","parsedEnd","times","today","weekdaySkips","maxDays","first","minutes","count","now","map","d","intervalFormatter","intervalFormat","longOptions","timeZone","hour","minute","shortOptions","shortHourOptions","currentLocale","tms","short","methods","showIntervalLabelDefault","interval","isFirst","intervalStyleDefault","_interval","undefined","getTimestampAtEvent","e","day","timestamp","bounds","currentTarget","getBoundingClientRect","baseMinutes","touchEvent","mouseEvent","touches","changedTouches","clientY","addIntervals","top","addMinutes","Math","floor","getSlotScope","scope","timeToY","timeDelta","minutesToPixels","week","scrollToTime","y","pane","$refs","scrollArea","scrollTop","clamp","min","gap"],"sources":["../../../../src/components/VCalendar/mixins/calendar-with-intervals.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n\n// Mixins\nimport CalendarBase from './calendar-base'\n\n// Util\nimport props from '../util/props'\nimport {\n parseTime,\n copyTimestamp,\n updateMinutes,\n createDayList,\n createIntervalList,\n createNativeLocaleFormatter,\n VTime,\n MINUTES_IN_DAY,\n} from '../util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter, CalendarDayBodySlotScope } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'calendar-with-intervals',\n\n props: props.intervals,\n\n computed: {\n parsedFirstInterval (): number {\n return parseInt(this.firstInterval)\n },\n parsedIntervalMinutes (): number {\n return parseInt(this.intervalMinutes)\n },\n parsedIntervalCount (): number {\n return parseInt(this.intervalCount)\n },\n parsedIntervalHeight (): number {\n return parseFloat(this.intervalHeight)\n },\n parsedFirstTime (): number | false {\n return parseTime(this.firstTime)\n },\n firstMinute (): number {\n const time = this.parsedFirstTime\n\n return time !== false && time >= 0 && time <= MINUTES_IN_DAY\n ? time\n : this.parsedFirstInterval * this.parsedIntervalMinutes\n },\n bodyHeight (): number {\n return this.parsedIntervalCount * this.parsedIntervalHeight\n },\n days (): CalendarTimestamp[] {\n return createDayList(\n this.parsedStart,\n this.parsedEnd,\n this.times.today,\n this.weekdaySkips,\n this.maxDays\n )\n },\n intervals (): CalendarTimestamp[][] {\n const days: CalendarTimestamp[] = this.days\n const first: number = this.firstMinute\n const minutes: number = this.parsedIntervalMinutes\n const count: number = this.parsedIntervalCount\n const now: CalendarTimestamp = this.times.now\n\n return days.map(d => createIntervalList(d, first, minutes, count, now))\n },\n intervalFormatter (): CalendarFormatter {\n if (this.intervalFormat) {\n return this.intervalFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', hour: '2-digit', minute: '2-digit' }\n const shortOptions = { timeZone: 'UTC', hour: 'numeric', minute: '2-digit' }\n const shortHourOptions = { timeZone: 'UTC', hour: 'numeric' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (tms, short) => short ? (tms.minute === 0 ? shortHourOptions : shortOptions) : longOptions\n )\n },\n },\n\n methods: {\n showIntervalLabelDefault (interval: CalendarTimestamp): boolean {\n const first: CalendarTimestamp = this.intervals[0][0]\n const isFirst: boolean = first.hour === interval.hour && first.minute === interval.minute\n return !isFirst\n },\n intervalStyleDefault (_interval: CalendarTimestamp): object | undefined {\n return undefined\n },\n getTimestampAtEvent (e: MouseEvent | TouchEvent, day: CalendarTimestamp): CalendarTimestamp {\n const timestamp: CalendarTimestamp = copyTimestamp(day)\n const bounds = (e.currentTarget as HTMLElement).getBoundingClientRect()\n const baseMinutes: number = this.firstMinute\n const touchEvent: TouchEvent = e as TouchEvent\n const mouseEvent: MouseEvent = e as MouseEvent\n const touches: TouchList = touchEvent.changedTouches || touchEvent.touches\n const clientY: number = touches && touches[0] ? touches[0].clientY : mouseEvent.clientY\n const addIntervals: number = (clientY - bounds.top) / this.parsedIntervalHeight\n const addMinutes: number = Math.floor(addIntervals * this.parsedIntervalMinutes)\n const minutes: number = baseMinutes + addMinutes\n\n return updateMinutes(timestamp, minutes, this.times.now)\n },\n getSlotScope (timestamp: CalendarTimestamp): CalendarDayBodySlotScope {\n const scope = copyTimestamp(timestamp) as any\n scope.timeToY = this.timeToY\n scope.timeDelta = this.timeDelta\n scope.minutesToPixels = this.minutesToPixels\n scope.week = this.days\n return scope\n },\n scrollToTime (time: VTime): boolean {\n const y = this.timeToY(time)\n const pane = this.$refs.scrollArea as HTMLElement\n\n if (y === false || !pane) {\n return false\n }\n\n pane.scrollTop = y\n\n return true\n },\n minutesToPixels (minutes: number): number {\n return minutes / this.parsedIntervalMinutes * this.parsedIntervalHeight\n },\n timeToY (time: VTime, clamp = true): number | false {\n let y = this.timeDelta(time)\n\n if (y !== false) {\n y *= this.bodyHeight\n\n if (clamp) {\n if (y < 0) {\n y = 0\n }\n if (y > this.bodyHeight) {\n y = this.bodyHeight\n }\n }\n }\n\n return y\n },\n timeDelta (time: VTime): number | false {\n const minutes = parseTime(time)\n\n if (minutes === false) {\n return false\n }\n\n const min: number = this.firstMinute\n const gap: number = this.parsedIntervalCount * this.parsedIntervalMinutes\n\n return (minutes - min) / gap\n },\n },\n})\n"],"mappings":"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"}