import type { Locale } from 'date-fns'; import type { ExtractPropTypes, PropType } from 'vue'; import type { AriaLabels, Flow, DateFilter, IDisableDates, IFormat, IMarker, TimeModel, Transition, ModelType, ModelValue, OpenPosition, WeekStartNum, WeekStartStr, CustomAltPosition, SixWeekMode, ActionRowData, ICalendarDate, ArrMapValues, InternalModuleValue, MultiCalendarsProp, TextInputProp, PresetDate, InlineProp, DisabledTimeArrProp, Config, HighlightProp, } from '@/interfaces'; export const AllProps = { multiCalendars: { type: [Boolean, Number, String, Object] as PropType, default: undefined }, modelValue: { type: [String, Date, Array, Object, Number] as PropType, default: null }, modelType: { type: String as PropType, default: null }, position: { type: String as PropType, default: 'center' }, dark: { type: Boolean as PropType, default: false }, format: { type: [String, Function] as PropType, default: () => null, }, autoPosition: { type: Boolean as PropType, default: true }, altPosition: { type: Function as PropType, default: null }, transitions: { type: [Boolean, Object] as PropType>, default: true }, formatLocale: { type: Object as PropType, default: null }, utc: { type: [Boolean, String] as PropType, default: false }, ariaLabels: { type: Object as PropType>, default: () => ({}) }, offset: { type: [Number, String] as PropType, default: 10 }, hideNavigation: { type: Array as PropType, default: () => [] }, timezone: { type: String as PropType, default: null }, emitTimezone: { type: String as PropType, default: null }, vertical: { type: Boolean as PropType, default: false }, disableMonthYearSelect: { type: Boolean as PropType, default: false }, disableYearSelect: { type: Boolean as PropType, default: false }, menuClassName: { type: String as PropType, default: null }, dayClass: { type: Function as PropType<(date: Date) => string>, default: null }, yearRange: { type: Array as PropType, default: () => [1900, 2100] }, calendarCellClassName: { type: String as PropType, default: null }, enableTimePicker: { type: Boolean as PropType, default: true }, autoApply: { type: Boolean as PropType, default: false }, disabledDates: { type: [Array, Function] as PropType, default: () => [] }, monthNameFormat: { type: String as PropType<'long' | 'short'>, default: 'short' }, startDate: { type: [Date, String] as PropType, default: null }, startTime: { type: [Object, Array] as PropType, default: null }, hideOffsetDates: { type: Boolean as PropType, default: false }, autoRange: { type: [Number, String] as PropType, default: null }, noToday: { type: Boolean as PropType, default: false }, disabledWeekDays: { type: Array as PropType, default: () => [] }, allowedDates: { type: Array as PropType, default: null }, nowButtonLabel: { type: String as PropType, default: 'Now' }, markers: { type: Array as PropType, default: () => [] }, escClose: { type: Boolean as PropType, default: true }, spaceConfirm: { type: Boolean as PropType, default: true }, monthChangeOnArrows: { type: Boolean as PropType, default: true }, presetDates: { type: Array as PropType, default: () => [] }, flow: { type: Array as PropType, default: () => [] }, partialFlow: { type: Boolean as PropType, default: false }, preventMinMaxNavigation: { type: Boolean as PropType, default: false }, minRange: { type: [Number, String] as PropType, default: null }, maxRange: { type: [Number, String] as PropType, default: null }, multiDatesLimit: { type: [Number, String] as PropType, default: null }, reverseYears: { type: Boolean as PropType, default: false }, weekPicker: { type: Boolean as PropType, default: false }, filters: { type: Object as PropType>, default: () => ({}) }, arrowNavigation: { type: Boolean as PropType, default: false }, disableTimeRangeValidation: { type: Boolean as PropType, default: false }, highlight: { type: [Array, Function, Object] as PropType, default: null, }, highlightWeekDays: { type: Array as PropType, default: null, }, highlightDisabledDays: { type: Boolean as PropType, default: false }, teleport: { type: [String, Boolean] as PropType, default: null }, teleportCenter: { type: Boolean as PropType, default: false }, locale: { type: String as PropType, default: 'en-Us' }, weekNumName: { type: String as PropType, default: 'W' }, weekStart: { type: [Number, String] as PropType, default: 1 }, weekNumbers: { type: [String, Function] as PropType<'iso' | 'local' | ((date: Date) => string | number)>, default: null, }, calendarClassName: { type: String as PropType, default: null }, monthChangeOnScroll: { type: [Boolean, String] as PropType, default: true }, dayNames: { type: [Function, Array] as PropType<((lang: string, weekStart: number) => string[]) | string[]>, default: null, }, monthPicker: { type: Boolean as PropType, default: false }, customProps: { type: Object as PropType>, default: null }, yearPicker: { type: Boolean as PropType, default: false }, modelAuto: { type: Boolean as PropType, default: false }, selectText: { type: String as PropType, default: 'Select' }, cancelText: { type: String as PropType, default: 'Cancel' }, previewFormat: { type: [String, Function] as PropType, default: () => '', }, multiDates: { type: Boolean as PropType, default: false }, partialRange: { type: Boolean as PropType, default: true }, ignoreTimeValidation: { type: Boolean as PropType, default: false }, minDate: { type: [Date, String] as PropType, default: null }, maxDate: { type: [Date, String] as PropType, default: null }, minTime: { type: Object as PropType, default: null }, maxTime: { type: Object as PropType, default: null }, name: { type: String as PropType, default: null }, placeholder: { type: String as PropType, default: '' }, hideInputIcon: { type: Boolean as PropType, default: false }, clearable: { type: Boolean as PropType, default: true }, state: { type: Boolean as PropType, default: null }, required: { type: Boolean as PropType, default: false }, autocomplete: { type: String as PropType, default: 'off' }, inputClassName: { type: String as PropType, default: null }, fixedStart: { type: Boolean as PropType, default: false }, fixedEnd: { type: Boolean as PropType, default: false }, timePicker: { type: Boolean as PropType, default: false }, enableSeconds: { type: Boolean as PropType, default: false }, is24: { type: Boolean as PropType, default: true }, noHoursOverlay: { type: Boolean as PropType, default: false }, noMinutesOverlay: { type: Boolean as PropType, default: false }, noSecondsOverlay: { type: Boolean as PropType, default: false }, hoursGridIncrement: { type: [String, Number] as PropType, default: 1 }, minutesGridIncrement: { type: [String, Number] as PropType, default: 5 }, secondsGridIncrement: { type: [String, Number] as PropType, default: 5 }, hoursIncrement: { type: [Number, String] as PropType, default: 1 }, minutesIncrement: { type: [Number, String] as PropType, default: 1 }, secondsIncrement: { type: [Number, String] as PropType, default: 1 }, range: { type: Boolean as PropType, default: false }, uid: { type: String as PropType, default: null }, disabled: { type: Boolean as PropType, default: false }, readonly: { type: Boolean as PropType, default: false }, inline: { type: [Boolean, Object] as PropType, default: false }, textInput: { type: [Boolean, Object] as PropType, default: false }, noDisabledRange: { type: Boolean as PropType, default: false }, sixWeeks: { type: [Boolean, String] as PropType, default: false }, actionRow: { type: Object as PropType>, default: () => ({}) }, focusStartDate: { type: Boolean as PropType, default: false }, disabledTimes: { type: [Function, Array] as PropType, default: undefined }, showLastInRange: { type: Boolean as PropType, default: true }, timePickerInline: { type: Boolean as PropType, default: false }, calendar: { type: Function as PropType<(month: ICalendarDate[]) => ICalendarDate[]>, default: null }, config: { type: Object as PropType>, default: undefined }, quarterPicker: { type: Boolean as PropType, default: false }, yearFirst: { type: Boolean as PropType, default: false }, }; export const PickerBaseProps = { ...AllProps, shadow: { type: Boolean as PropType, default: false }, flowStep: { type: Number as PropType, default: 0 }, internalModelValue: { type: [Date, Array] as PropType, default: null }, arrMapValues: { type: Object as PropType, default: () => ({}) }, noOverlayFocus: { type: Boolean as PropType, default: false }, }; export type AllPropsType = ExtractPropTypes; export type PickerBasePropsType = ExtractPropTypes;