import { validateTimestamp, parseDate, DAYS_IN_WEEK, validateTime } from './timestamp'; import { CalendarEventOverlapModes } from '../modes'; export default { base: { start: { type: [String, Number, Date], validate: validateTimestamp, default: () => parseDate(new Date()).date }, end: { type: [String, Number, Date], validate: validateTimestamp }, weekdays: { type: [Array, String], default: () => [0, 1, 2, 3, 4, 5, 6], validate: validateWeekdays }, hideHeader: { type: Boolean }, shortWeekdays: { type: Boolean, default: true }, weekdayFormat: { type: Function, default: null }, dayFormat: { type: Function, default: null } }, intervals: { maxDays: { type: Number, default: 7 }, shortIntervals: { type: Boolean, default: true }, intervalHeight: { type: [Number, String], default: 48, validate: validateNumber }, intervalWidth: { type: [Number, String], default: 60, validate: validateNumber }, intervalMinutes: { type: [Number, String], default: 60, validate: validateNumber }, firstInterval: { type: [Number, String], default: 0, validate: validateNumber }, firstTime: { type: [Number, String, Object], validate: validateTime }, intervalCount: { type: [Number, String], default: 24, validate: validateNumber }, intervalFormat: { type: Function, default: null }, intervalStyle: { type: Function, default: null }, showIntervalLabel: { type: Function, default: null } }, weeks: { localeFirstDayOfYear: { type: [String, Number], default: 0 }, minWeeks: { validate: validateNumber, default: 1 }, shortMonths: { type: Boolean, default: true }, showMonthOnFirst: { type: Boolean, default: true }, showWeek: Boolean, monthFormat: { type: Function, default: null } }, calendar: { type: { type: String, default: 'month' }, value: { type: [String, Number, Date], validate: validateTimestamp } }, category: { categories: { type: [Array, String], default: '' }, categoryHideDynamic: { type: Boolean }, categoryShowAll: { type: Boolean }, categoryForInvalid: { type: String, default: '' }, categoryDays: { type: [Number, String], default: 1, validate: x => isFinite(parseInt(x)) && parseInt(x) > 0 } }, events: { events: { type: Array, default: () => [] }, eventStart: { type: String, default: 'start' }, eventEnd: { type: String, default: 'end' }, eventTimed: { type: [String, Function], default: 'timed' }, eventCategory: { type: [String, Function], default: 'category' }, eventHeight: { type: Number, default: 20 }, eventColor: { type: [String, Function], default: 'primary' }, eventTextColor: { type: [String, Function], default: 'white' }, eventName: { type: [String, Function], default: 'name' }, eventOverlapThreshold: { type: [String, Number], default: 60 }, eventOverlapMode: { type: [String, Function], default: 'stack', validate: mode => mode in CalendarEventOverlapModes || typeof mode === 'function' }, eventMore: { type: Boolean, default: true }, eventMoreText: { type: String, default: '$vuetify.calendar.moreEvents' }, eventRipple: { type: [Boolean, Object], default: null }, eventMarginBottom: { type: Number, default: 1 } } }; export function validateNumber(input) { return isFinite(parseInt(input)); } export function validateWeekdays(input) { if (typeof input === 'string') { input = input.split(','); } if (Array.isArray(input)) { const ints = input.map(x => parseInt(x)); if (ints.length > DAYS_IN_WEEK || ints.length === 0) { return false; } const visited = {}; let wrapped = false; for (let i = 0; i < ints.length; i++) { const x = ints[i]; if (!isFinite(x) || x < 0 || x >= DAYS_IN_WEEK) { return false; } if (i > 0) { const d = x - ints[i - 1]; if (d < 0) { if (wrapped) { return false; } wrapped = true; } else if (d === 0) { return false; } } if (visited[x]) { return false; } visited[x] = true; } return true; } return false; } //# sourceMappingURL=props.js.map