import { pDatepickerViewMode, DatepickerFormatOptions, DatepickerRenderOptions, DatepickerDateCustomClasses, DaysCalendarModel, DaysCalendarViewModel, MonthsCalendarViewModel, MonthViewOptions, YearsCalendarViewModel } from '../models'; import { defaultMonthOptions } from './_defaults'; import { pDatepickerConfig } from '../p-datepicker.config'; export interface pDatepickerViewState { date: Date; mode: pDatepickerViewMode; } export class pDatepickerState implements DatepickerRenderOptions, DatepickerFormatOptions { // date picker selectedDate?: Date; // daterange picker selectedRange?: Date[]; // initial date of calendar, today by default view: pDatepickerViewState; isDisabled?: boolean; // bounds minDate?: Date; maxDate?: Date; daysDisabled?: number[]; datesDisabled?: Date[]; datesEnabled?: Date[]; minMode?: pDatepickerViewMode; dateCustomClasses?: DatepickerDateCustomClasses[]; hoveredDate?: Date; hoveredMonth?: Date; hoveredYear?: Date; // days calendar monthsModel?: DaysCalendarModel[]; formattedMonths?: DaysCalendarViewModel[]; flaggedMonths?: DaysCalendarViewModel[]; selectFromOtherMonth?: boolean; showPreviousMonth?: boolean; // dateRangePicker only; displayOneMonthRange?: boolean; // dateRangePicker only; // months calendar monthsCalendar?: MonthsCalendarViewModel[]; flaggedMonthsCalendar?: MonthsCalendarViewModel[]; // years calendar yearsCalendarModel?: YearsCalendarViewModel[]; yearsCalendarFlagged?: YearsCalendarViewModel[]; // options monthViewOptions: MonthViewOptions; // DatepickerRenderOptions showWeekNumbers?: boolean; displayMonths?: number; // DatepickerFormatOptions locale: string; monthTitle: string; yearTitle: string; dayLabel: string; monthLabel: string; yearLabel: string; weekNumbers: string; } const _initialView: pDatepickerViewState = { date: new Date(), mode: 'day' }; export const initialDatepickerState: pDatepickerState = Object.assign( new pDatepickerConfig(), { locale: 'en', view: _initialView, selectedRange: [], monthViewOptions: defaultMonthOptions } );