1 |
- {"version":3,"sources":["../../../../src/components/VCalendar/mixins/calendar-with-intervals.ts"],"names":[],"mappings":"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","sourcesContent":["\n// Mixins\nimport CalendarBase from './calendar-base'\n\n// Util\nimport props from '../util/props'\nimport {\n VTimestamp,\n VTime,\n VTimestampFormatter,\n parseTime,\n copyTimestamp,\n updateMinutes,\n createDayList,\n createIntervalList,\n createNativeLocaleFormatter\n} from '../util/timestamp'\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 firstMinute (): number {\n return this.parsedFirstInterval * this.parsedIntervalMinutes\n },\n bodyHeight (): number {\n return this.parsedIntervalCount * this.parsedIntervalHeight\n },\n days (): VTimestamp[] {\n return createDayList(\n this.parsedStart,\n this.parsedEnd,\n this.times.today,\n this.weekdaySkips,\n this.maxDays\n )\n },\n intervals (): VTimestamp[][] {\n const days: VTimestamp[] = this.days\n const first: number = this.parsedFirstInterval\n const minutes: number = this.parsedIntervalMinutes\n const count: number = this.parsedIntervalCount\n const now: VTimestamp = this.times.now\n\n return days.map(d => createIntervalList(d, first, minutes, count, now))\n },\n intervalFormatter (): VTimestampFormatter {\n if (this.intervalFormat) {\n return this.intervalFormat as VTimestampFormatter\n }\n\n const longOptions = { timeZone: 'UTC', hour12: true, hour: '2-digit', minute: '2-digit' }\n const shortOptions = { timeZone: 'UTC', hour12: true, hour: 'numeric', minute: '2-digit' }\n const shortHourOptions = { timeZone: 'UTC', hour12: true, hour: 'numeric' }\n\n return createNativeLocaleFormatter(\n this.locale,\n (tms, short) => short ? (tms.minute === 0 ? shortHourOptions : shortOptions) : longOptions\n )\n }\n },\n\n methods: {\n showIntervalLabelDefault (interval: VTimestamp): boolean {\n const first: VTimestamp = this.intervals[0][0]\n const isFirst: boolean = first.hour === interval.hour && first.minute === interval.minute\n return !isFirst && interval.minute === 0\n },\n intervalStyleDefault (_interval: VTimestamp): object | undefined {\n return undefined\n },\n getTimestampAtEvent (e: MouseEvent | TouchEvent, day: VTimestamp): VTimestamp {\n const timestamp: VTimestamp = 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: VTimestamp): any {\n const scope = copyTimestamp(timestamp) as any\n scope.timeToY = this.timeToY\n scope.minutesToPixels = this.minutesToPixels\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 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 const delta: number = (minutes - min) / gap\n let y: number = delta * 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 return y\n }\n }\n})\n"],"sourceRoot":""}
|