{"version":3,"file":"vitorgja-ion-calendar.mjs","sources":["../../../projects/ion-calendar/src/lib/types/index.ts","../../../projects/ion-calendar/src/lib/helpers/DateTimeHelper.ts","../../../projects/ion-calendar/src/lib/calendar-options.provider.ts","../../../projects/ion-calendar/src/lib/ion-calendar.service.ts","../../../projects/ion-calendar/src/lib/components/calendar-month/calendar-month.component.ts","../../../projects/ion-calendar/src/lib/components/calendar-month/calendar-month.component.html","../../../projects/ion-calendar/src/lib/components/calendar-week/calendar-week.component.ts","../../../projects/ion-calendar/src/lib/components/calendar-week/calendar-week.component.html","../../../projects/ion-calendar/src/lib/components/month-picker/month-picker.component.ts","../../../projects/ion-calendar/src/lib/components/month-picker/month-picker.component.html","../../../projects/ion-calendar/src/lib/components/year-picker/year-picker.component.ts","../../../projects/ion-calendar/src/lib/components/year-picker/year-picker.component.html","../../../projects/ion-calendar/src/lib/components/calendar/calendar.component.ts","../../../projects/ion-calendar/src/lib/components/calendar/calendar.component.html","../../../projects/ion-calendar/src/lib/components/calendar-modal/calendar-modal.component.ts","../../../projects/ion-calendar/src/lib/components/calendar-modal/calendar-modal.component.html","../../../projects/ion-calendar/src/lib/components/index.ts","../../../projects/ion-calendar/src/lib/calendar-modal.controller.ts","../../../projects/ion-calendar/src/lib/ion-calendar.module.ts","../../../projects/ion-calendar/src/lib/models/ICalendarResult.ts","../../../projects/ion-calendar/src/public-api.ts","../../../projects/ion-calendar/src/vitorgja-ion-calendar.ts"],"sourcesContent":["import { DateObjectUnits, DateTime } from 'luxon';\nimport { ICalendarLocale } from '../models';\n\nexport type DateType = Date | string | number | null;\nexport type CalendarComponentType = 'string' | 'js-date' | 'luxon' | 'time' | 'object';\nexport type CalendarComponentPayloadType = string | number | Date | DateTime | DateObjectUnits ;\nexport type CalendarComponentPayloadRangeType = { from: CalendarComponentPayloadType, to: CalendarComponentPayloadType };\nexport type CalendarComponentOnChangeType = CalendarComponentPayloadType | CalendarComponentPayloadType[] | CalendarComponentPayloadRangeType\n\nexport type ColorType = 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger' | 'dark' | 'medium' | 'light' | 'custom' | 'transparent' | '';\n\nexport const pickModes = {\n  single: 'single',\n  range: 'range',\n  multi: 'multi'\n};\nexport type PickModeType = keyof typeof pickModes[][number];\n// export type PickModeType = 'single' | 'range' | 'multi';\n\nexport const displayModes = {\n  month: 'month',\n  week: 'week',\n}\nexport type DisplayModeType = keyof typeof displayModes[][number];\n// export type DisplayModeType = typeof displayModes[keyof typeof displayModes]\n\n\nconst defaultValues = {\n  COLOR: 'primary',\n  PICK_MODE: pickModes.single,\n  DISPLAY_MODE: displayModes.month,\n  DATE_FORMAT: 'yyyy-MM-dd',\n  LOCALE: { locale: 'en', weekdays: 'initial' } as ICalendarLocale,\n  YEAR_FORMAT: 'yyyy',\n};\n\nexport default defaultValues;\n","import { DateTime, Info } from \"luxon\";\r\nimport { CalendarComponentPayloadType } from \"../types\";\r\nimport { ICalendarLocale } from \"../models\";\r\n\r\nclass DateTimeHelper {\r\n  static parse(date: CalendarComponentPayloadType | undefined): DateTime {\r\n    if (!date) return DateTime.now();\r\n\r\n    if (typeof date === 'number') {\r\n      return DateTime.fromMillis(date);\r\n    }\r\n    else if (typeof date === 'string') {\r\n      return DateTime.fromISO(date);\r\n    }\r\n    else if (date instanceof Date) {\r\n      return DateTime.fromJSDate(date);\r\n    }\r\n\r\n    return DateTime.fromObject(date);\r\n  }\r\n\r\n  static now() {\r\n    return DateTime.now();\r\n  }\r\n\r\n  static isDate(value: any): boolean {\r\n    if (value instanceof Date) {\r\n      // Verifique se o objeto Date não é 'Invalid Date'\r\n      return value.toString() !== 'Invalid Date';\r\n    }\r\n\r\n    if (typeof value === 'number') {\r\n      return this.parse(value).isValid\r\n    }\r\n\r\n    if (typeof value === 'string') {\r\n      return this.parse(value).isValid;\r\n    }\r\n\r\n    // Se não for uma data válida em nenhum formato conhecido, retorne false\r\n    return false;\r\n  }\r\n\r\n  /**\r\n  * Calculates the first and last day of the week for a given date.\r\n  *\r\n  * @param {Date} date - The date for which to calculate the first and last day of the week.\r\n  * @return {{firstDay: Date, lastDay: Date}} - An object containing the first and last day of the week.\r\n  *\r\n  * @example\r\n  * const today = new Date();\r\n  * const weekRange = getFirstAndLastDayOfWeek(today);\r\n  * console.log(weekRange.firstDay.toDateString()); // Output: Sun Oct 08 2023\r\n  * console.log(weekRange.lastDay.toDateString()); // Output: Sat Oct 14 2023\r\n  */\r\n  static getFirstAndLastDayOfWeek(date: Date): { firstDay: Date, lastDay: Date } {\r\n    const currentDay = date.getDay(); // Dia da semana (0 - Domingo, 1 - Segunda, ..., 6 - Sábado)\r\n    const diff = currentDay - 0; // 0 representa o Domingo\r\n\r\n    // Primeiro dia da semana (Domingo)\r\n    const firstDay = new Date(date);\r\n    firstDay.setDate(date.getDate() - diff);\r\n\r\n    // Último dia da semana (Sábado)\r\n    const lastDay = new Date(date);\r\n    lastDay.setDate(date.getDate() + (6 - diff));\r\n\r\n    return { firstDay, lastDay };\r\n  }\r\n\r\n  static monthsShortTitle(locale: string = 'en') {\r\n    return Info.months('short', { locale }).map(m => m.substring(0, 3).toUpperCase());\r\n  }\r\n\r\n  static weekDays(locale: ICalendarLocale = { locale: 'en', weekdays: 'initial' }) {\r\n    const { locale: l, weekdays: w } = locale;\r\n    const weeksDay = Info.weekdays('short', { locale: l }).map(d => w === 'initial' ? d.substring(0, 1).toUpperCase() : d.toUpperCase());\r\n\r\n    const today = DateTime.now();\r\n    const firstDay = this.getFirstAndLastDayOfWeek(today.toJSDate()).firstDay.getDay();\r\n\r\n    if (firstDay < Number(today.startOf('week').toFormat('dd'))) {\r\n      weeksDay.unshift(weeksDay.pop()!);\r\n    }\r\n    return weeksDay;\r\n  }\r\n\r\n  static weekday(date: DateTime) {\r\n    const wd = date.weekday;\r\n    return wd < 7 ? wd : 0;\r\n  }\r\n}\r\n\r\nexport default DateTimeHelper;\r\n","import { InjectionToken } from '@angular/core';\nimport { ICalendarModalOptions } from './models/ICalendarOptions';\n\nexport const DEFAULT_CALENDAR_OPTIONS = new InjectionToken<ICalendarModalOptions>('DEFAULT_CALENDAR_MODAL_OPTIONS');\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ICalendarDay, ICalendarLocale, ICalendarModalOptions, ICalendarMonth, ICalendarOriginal, ICalendarResult, IDayConfig } from './models';\nimport defaultValues, { PickModeType, displayModes, pickModes } from './types';\nimport { DateTimeHelper } from './helpers';\nimport { DEFAULT_CALENDAR_OPTIONS } from './calendar-options.provider';\n\nimport { DateTime } from 'luxon';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class IonCalendarService {\n\n  private readonly defaultOpts: ICalendarModalOptions;\n\n  constructor(@Optional() @Inject(DEFAULT_CALENDAR_OPTIONS) defaultOpts: ICalendarModalOptions) {\n    this.defaultOpts = defaultOpts;\n  }\n\n  get DEFAULT_STEP() {\n    return 12;\n  }\n\n  safeOpt(calendarOptions: any = {}): ICalendarModalOptions {\n    const _disableWeeks: number[] = [];\n    const _daysConfig: IDayConfig[] = [];\n\n    const _locale: ICalendarLocale = calendarOptions.locale || defaultValues.LOCALE;\n\n    const {\n      locale = _locale,\n      from = new Date(),\n      to = undefined,\n      weekStart = 0,\n      step = this.DEFAULT_STEP,\n      id = '',\n      cssClass = '',\n      closeLabel = 'CANCEL',\n      doneLabel = 'DONE',\n      monthFormat = 'MMM yyyy',\n      title = 'CALENDAR',\n      defaultTitle = '',\n      defaultSubtitle = '',\n      autoDone = false,\n      canBackwardsSelected = false,\n      closeIcon = false,\n      doneIcon = false,\n      pickMode = defaultValues.PICK_MODE,\n      color = defaultValues.COLOR,\n      colorSubtitle = undefined,\n      weekdays = DateTimeHelper.weekDays(_locale),\n      daysConfig = _daysConfig,\n      disableWeeks = _disableWeeks,\n      clearLabel = null,\n      displayMode = defaultValues.DISPLAY_MODE,\n      showAdjacentMonthDay = true,\n      showMonthAdjacentDays = false,\n      weeks = 1\n    } = { ...this.defaultOpts, ...calendarOptions };\n\n    const fromDate = DateTimeHelper.isDate(from) ? from : new Date();\n    const toDate = DateTimeHelper.isDate(to) ? to : undefined;\n\n    return {\n      id,\n      locale,\n      from: fromDate,\n      to: toDate,\n      pickMode,\n      autoDone,\n      color,\n      colorSubtitle,\n      cssClass,\n      weekStart,\n      closeLabel,\n      closeIcon,\n      doneLabel,\n      doneIcon,\n      canBackwardsSelected,\n      disableWeeks,\n      monthFormat,\n      // yearFormat,\n      title,\n      weekdays,\n      daysConfig,\n      step,\n      defaultTitle,\n      defaultSubtitle,\n      defaultScrollTo: calendarOptions.defaultScrollTo || fromDate,\n      defaultDate: calendarOptions.defaultDate || null,\n      defaultDates: calendarOptions.defaultDates || null,\n      defaultDateRange: calendarOptions.defaultDateRange || null,\n      clearLabel,\n      showAdjacentMonthDay,\n      showMonthAdjacentDays,\n      displayMode,\n      weeks\n    };\n  }\n\n  createOriginalCalendar(time: number, timeWithDay = false): ICalendarOriginal {\n    const luxon = DateTimeHelper.parse(time);\n    const date = new Date(time);\n    const year = date.getFullYear();\n    const month = date.getMonth();\n    const firstWeek = new Date(year, month, 1).getDay();\n\n    const daysInMonth: number = luxon.daysInMonth!;\n    const lastDayOfMonth = luxon.endOf(\"month\").valueOf();\n\n    return {\n      date,\n      year,\n      month,\n      firstWeekDay: firstWeek,\n      daysInMonth,\n      time: new Date(year, month, (timeWithDay) ? date.getDate() : 1).getTime(),\n      lastDayOfMonth\n    };\n  }\n\n  private findDayConfig(day: DateTime, options: ICalendarModalOptions): IDayConfig | null {\n    const { daysConfig } = options;\n\n    const dayConfig = daysConfig?.find((config) => {\n      const dateTime = DateTimeHelper.parse(config.date)\n      return day.hasSame(dateTime, 'day');\n    }) || null;\n\n    return dayConfig;\n  }\n\n  /**\n   * Create a calendar day object based on the given time, options, and month.\n   *\n   * @param {number} time - The time in milliseconds.\n   * @param {ICalendarModalOptions} options - The calendar modal options.\n   * @param {number} month - The month number.\n   * @return {ICalendarDay} The created calendar day object.\n   */\n  createCalendarDay(time: number, options: ICalendarModalOptions, month?: number): ICalendarDay {\n    const date = DateTimeHelper.parse(time).startOf(\"day\");\n    const isToday = DateTimeHelper.now().hasSame(date, 'day')\n    const dayConfig = this.findDayConfig(date, options);\n\n    const { title, subTitle, disable } = this.getCalendarDayAttributes(date, dayConfig, options);\n\n    return {\n      time,\n      isToday,\n      selected: false,\n      marked: dayConfig?.marked ?? false,\n      isLastMonth: month ? date.month < month : false,\n      isNextMonth: month ? date.month > month : false,\n      isFirst: date.day === 1,\n      isLast: date.day === date.daysInMonth,\n      cssClass: dayConfig?.cssClass ?? '',\n      title,\n      subTitle,\n      disable,\n    };\n  }\n\n  /**\n   * Gets the attributes of a calendar day based on the given date, day configuration, and options.\n   *\n   * @param {DateTime} date - The date of the calendar day.\n   * @param {IDayConfig | null} dayConfig - The configuration for the day (optional).\n   * @param {ICalendarModalOptions} options - The options for the calendar modal.\n   * @return {{ disable: boolean; title: string; subTitle: string; }} The attributes of the calendar day.\n   */\n  private getCalendarDayAttributes(date: DateTime, dayConfig: IDayConfig | null, options: ICalendarModalOptions)\n    : { disable: boolean; title: string; subTitle: string; } {\n\n    let disable = false;\n\n    // Check if there is a specific disable configuration for the day\n    if (dayConfig?.disable !== undefined) {\n      disable = dayConfig.disable!;\n    }\n    else {\n      // If no specific disable configuration, check if the day is in the list of disabled weekdays\n      const dayOfWeek = DateTimeHelper.weekday(date);\n      disable = options.disableWeeks?.includes(dayOfWeek) || false;\n\n      if (!disable && !options.canBackwardsSelected) {\n        const dateFrom = options.from === undefined ? undefined : DateTimeHelper.parse(options.from).startOf(\"day\");\n        const dateTo = options.to === undefined ? undefined : DateTimeHelper.parse(options.to).startOf(\"day\");\n\n        // Check if the date is between the specified range\n        if (dateFrom !== undefined && dateTo !== undefined) {\n          disable = !(date >= dateFrom && date <= dateTo);\n        } else if (dateFrom !== undefined) {\n          disable = date < dateFrom;\n        } else if (dateTo !== undefined) {\n          disable = date > dateTo;\n        }\n      }\n\n    }\n\n    // Determine the title and subtitle for the calendar day\n    const title = dayConfig?.title || options.defaultTitle || date.day.toString();\n    const subTitle = dayConfig?.subTitle || options.defaultSubtitle || '';\n    return { title, subTitle, disable };\n  }\n\n  /**\n   * Creates a calendar month of a given week.\n   *\n   * @param {ICalendarOriginal} original - The original calendar data.\n   * @param {ICalendarModalOptions} options - The calendar modal options.\n   * @returns {ICalendarMonth} The calendar month of the given week.\n   */\n  private createCalendarMonthOfWeek(original: ICalendarOriginal, options: ICalendarModalOptions): ICalendarMonth {\n    const { weeks = 1, weekStart, showAdjacentMonthDay, showMonthAdjacentDays, displayMode } = options;\n    const { date, year, month } = original;\n    const days: ICalendarDay[] = new Array(6).fill(null);\n\n    const calculateStartDay = (originalDate: Date): number => {\n      const dayOfWeek = originalDate.getDay();\n      return originalDate.getDate() - (weekStart === 0 ? dayOfWeek : dayOfWeek - 1);\n    };\n\n    const createDay = (currentTime: number): ICalendarDay => {\n      const month = DateTimeHelper.parse(original.time).month;\n      const dateTime = DateTimeHelper.parse(currentTime);\n      const isDifferentMonth = dateTime.month !== month;\n\n      // Show months in weekdays adjecent of selected month\n      if (displayMode === displayModes.week && showMonthAdjacentDays && isDifferentMonth) {\n        const optClone: ICalendarModalOptions = JSON.parse(JSON.stringify(options));\n        const dayConfig: IDayConfig | null = this.findDayConfig(dateTime, optClone);\n\n        if (!dayConfig) {\n          if (!optClone.daysConfig) optClone.daysConfig = [];\n          optClone.daysConfig.push({ date: dateTime.toJSDate(), subTitle: dateTime.monthShort! });\n        }\n\n        return this.createCalendarDay(currentTime, optClone, month);\n      }\n\n      return this.createCalendarDay(currentTime, options, month);\n    };\n\n\n    const startDay = calculateStartDay(date);\n    const startIndex = 0;\n\n    for (let i = startIndex; i < 7 * weeks; i++) {\n      const itemTime = new Date(year, month, startDay + (i - startIndex)).getTime();\n      days[i] = createDay(itemTime);\n    }\n\n    if (displayMode === displayModes.month && showAdjacentMonthDay) {\n      const dayExists = days.map(day => !!day);\n\n      let startOffsetIndex = dayExists.indexOf(true) - 1;\n      let endOffsetIndex = dayExists.lastIndexOf(true) + 1;\n\n      for (startOffsetIndex; startOffsetIndex >= 0; startOffsetIndex--) {\n        const dayBefore = DateTimeHelper.parse(days[startOffsetIndex + 1].time).minus({ days: 1 });\n        days[startOffsetIndex] = createDay(dayBefore.valueOf());\n      }\n\n      if (!(dayExists.length % 7 === 0 && dayExists[dayExists.length - 1])) {\n        for (endOffsetIndex; endOffsetIndex < days.length + (endOffsetIndex % 7); endOffsetIndex++) {\n          const dayAfter = DateTimeHelper.parse(days[endOffsetIndex - 1].time).plus({ days: 1 });\n          days[endOffsetIndex] = createDay(dayAfter.valueOf());\n        }\n      }\n    }\n\n    return { days, original };\n  }\n\n  createCalendarMonth(original: ICalendarOriginal, opt: ICalendarModalOptions): ICalendarMonth {\n    const days: Array<ICalendarDay> = new Array(6).fill(null);\n    const daysInMonth = original.daysInMonth;\n\n    for (let i = original.firstWeekDay; i < daysInMonth + original.firstWeekDay; i++) {\n      const itemTime = new Date(original.year, original.month, i - original.firstWeekDay + 1).getTime();\n      days[i] = this.createCalendarDay(itemTime, opt);\n    }\n\n    if (opt.weekStart == 1) {\n      if (!days[0]) {\n        days.shift();\n      } else {\n        days.unshift(...new Array(6).fill(null));\n      }\n    }\n\n    if (opt.showAdjacentMonthDay && !Number.isNaN(original.time)) {\n      const thisMonth = DateTimeHelper.parse(original.time).month;\n      const _booleanMap = days.map(e => !!e);\n\n      let startOffsetIndex = _booleanMap.indexOf(true) - 1;\n      while (startOffsetIndex >= 0) {\n        const dayBefore = DateTimeHelper.parse(days[startOffsetIndex + 1].time).minus({ days: 1 });\n        days[startOffsetIndex] = this.createCalendarDay(dayBefore.valueOf(), opt, thisMonth);\n        startOffsetIndex--;\n      }\n\n      if (!(_booleanMap.length % 7 === 0 && _booleanMap[_booleanMap.length - 1])) {\n        let endOffsetIndex = _booleanMap.lastIndexOf(true) + 1;\n        while (endOffsetIndex < days.length + (endOffsetIndex % 7)) {\n          const timeAfter = days[endOffsetIndex - 1].time;\n          const dayAfter = DateTimeHelper.parse(timeAfter).plus({ days: 1 });\n          days[endOffsetIndex] = this.createCalendarDay(dayAfter.valueOf(), opt, thisMonth);\n\n          endOffsetIndex++;\n        }\n      }\n    }\n\n    return { days, original };\n  }\n\n  /**\n   * Creates an array of CalendarMonth objects by period.\n   *\n   * @param {number} startTime - The start time of the period.\n   * @param {ICalendarModalOptions} opt - The calendar modal options.\n   * @return {Array<ICalendarMonth>} The array of CalendarMonth objects.\n   */\n  createWeeksByPeriod(startTime: number, opt: ICalendarModalOptions): Array<ICalendarMonth> {\n    const result: Array<ICalendarMonth> = [];\n\n    const time = DateTimeHelper.parse(startTime).valueOf();\n    const originalCalendar = this.createOriginalCalendar(time, true);\n\n    result.push(this.createCalendarMonthOfWeek(originalCalendar, opt));\n\n    return result;\n  }\n\n  /**\n   * Creates an array of CalendarMonth objects based on the given start time and the number of months.\n   *\n   * @param {number} startTime - The starting time in milliseconds.\n   * @param {number} monthsNum - The number of months to create.\n   * @param {ICalendarModalOptions} opt - The options for creating the CalendarMonth objects.\n   * @return {Array<ICalendarMonth>} - An array of CalendarMonth objects.\n   */\n  createMonthsByPeriod(startTime: number, monthsNum: number, opt: ICalendarModalOptions): Array<ICalendarMonth> {\n    const result = Array.from({ length: monthsNum }, (_, i) => {\n      const time = DateTimeHelper.parse(startTime).startOf('month').plus({ months: i }).valueOf();\n      const originalCalendar = this.createOriginalCalendar(time);\n      const calendar = this.createCalendarMonth(originalCalendar, opt);\n\n      return calendar;\n    });\n\n    return result;\n  }\n\n  /**\n   * Creates an array of CalendarMonth objects based on the specified start year, number of years, and options.\n   *\n   * @param {number} startYear - The starting year.\n   * @param {number} yearsNum - The number of years.\n   * @param {ICalendarModalOptions} opt - The options for the calendar modal.\n   * @return {Array<ICalendarMonth>} An array of CalendarMonth objects.\n   */\n  createYearsByPeriod(startYear: number, yearsNum: number, opt: ICalendarModalOptions): Array<ICalendarMonth> {\n    return Array.from({ length: yearsNum }, (_, i) => {\n      const time = DateTimeHelper.parse({ year: startYear + i, month: 1, day: 1 }).toMillis();\n      const originalCalendar = this.createOriginalCalendar(time);\n      const calendar = this.createCalendarMonth(originalCalendar, opt);\n\n      return calendar;\n    });\n  }\n\n  wrapResult(original: ICalendarDay[], pickMode: PickModeType) {\n    let result: ICalendarResult | ICalendarResult[] | { from: ICalendarResult, to: ICalendarResult } | ICalendarDay[];\n\n    switch (pickMode) {\n      case pickModes.single:\n        result = this.multiFormat(original[0].time);\n        break;\n      case pickModes.range:\n        result = {\n          from: this.multiFormat(original[0].time),\n          to: this.multiFormat((original[1] || original[0]).time),\n        };\n        break;\n      case pickModes.multi:\n        result = original.map(e => this.multiFormat(e.time));\n        break;\n      default:\n        result = original;\n    }\n    return result;\n  }\n\n  multiFormat(time: number): ICalendarResult {\n    const luxonDate = DateTimeHelper.parse(time);\n\n    return {\n      time: luxonDate.toMillis(),\n      seconds: luxonDate.toSeconds(),\n      dateObj: luxonDate.toJSDate(),\n      string: luxonDate.toFormat(defaultValues.DATE_FORMAT.replace(/Y/g, 'y')),\n      year: luxonDate.year,\n      month: luxonDate.month, // Note que o mês começa em 0 no Moment\n      day: luxonDate.day,\n    };\n  }\n\n}\n\n","import {Component, ChangeDetectorRef, Input, Output, EventEmitter, forwardRef, AfterViewInit, Provider} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {ICalendarDay, ICalendarMonth, ICalendarOriginal} from \"../../models\";\nimport defaultValues, {ColorType, PickModeType, pickModes} from \"../../types\";\n\nexport const MONTH_VALUE_ACCESSOR: Provider = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => CalendarMonthComponent),\n\tmulti: true,\n};\n\n@Component({\n\tselector: \"ion-calendar-month\",\n\ttemplateUrl: \"./calendar-month.component.html\",\n\tstyleUrls: [\"./calendar-month.component.scss\"],\n\tproviders: [MONTH_VALUE_ACCESSOR],\n\thost: {\n\t\t\"[class.component-mode]\": \"componentMode\",\n\t},\n})\nexport class CalendarMonthComponent implements ControlValueAccessor, AfterViewInit {\n\t@Input() month!: ICalendarMonth;\n\t@Input() pickMode: PickModeType = defaultValues.PICK_MODE as PickModeType;\n\t@Input() id: string | undefined = undefined;\n\t@Input() readonly = false;\n\t@Input() color: ColorType | undefined = defaultValues.COLOR as ColorType;\n\t@Input() colorSubtitle: ColorType | undefined = undefined;\n\t@Output() private onChange: EventEmitter<ICalendarDay[]> = new EventEmitter();\n\t@Output() private onSelect: EventEmitter<ICalendarDay> = new EventEmitter();\n\t@Output() private onSelectStart: EventEmitter<ICalendarDay> = new EventEmitter();\n\t@Output() private onSelectEnd: EventEmitter<ICalendarDay> = new EventEmitter();\n\n\tprivate _date: Array<ICalendarDay | null> = [null, null];\n\tprivate _isInit = false;\n\tprivate _onChanged?: Function;\n\tprivate _onTouched?: Function;\n\n\treadonly DAY_DATE_FORMAT = \"MMMM dd, yyyy\";\n\n\tget isRange(): boolean {\n\t\treturn this.pickMode === pickModes.range;\n\t}\n\n\tconstructor(public ref: ChangeDetectorRef) {\n\t\t// console.log(\"CalendarMonthComponent.constructor\");\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis._isInit = true;\n\t}\n\n\tget value() {\n\t\treturn this._date;\n\t}\n\n\twriteValue(obj: any): void {\n\t\tif (Array.isArray(obj)) {\n\t\t\tthis._date = obj;\n\t\t}\n\t}\n\n\tregisterOnChange(fn: any): void {\n\t\tthis._onChanged = fn;\n\t}\n\n\tregisterOnTouched(fn: any): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\ttrackByTime(index: number, item: ICalendarOriginal): number {\n\t\treturn item ? item.time : index;\n\t}\n\n\tisEndSelection(day: ICalendarDay): boolean {\n\t\tif (!day) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.pickMode !== pickModes.range || !this._isInit || !this._date[1]) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this._date[1].time === day.time;\n\t}\n\n\tgetDayLabel(day: ICalendarDay) {\n\t\treturn new Date(day.time);\n\t}\n\n\tisBetween(day: ICalendarDay): boolean {\n\t\tif (!day) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (this.pickMode !== pickModes.range || !this._isInit) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this._date[0] || !this._date[1]) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst start = this._date[0].time;\n\t\tconst end = this._date[1].time;\n\n\t\treturn day.time < end && day.time > start;\n\t}\n\n\tisStartSelection(day: ICalendarDay): boolean {\n\t\tif (!day) {\n\t\t\treturn false;\n\t\t}\n\t\tif (this.pickMode !== pickModes.range || !this._isInit || !this._date[0]) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this._date[0].time === day.time && !!this._date[1];\n\t}\n\n\tisSelected(time: number): boolean {\n\t\tif (Array.isArray(this._date)) {\n\t\t\tif (this.pickMode !== pickModes.multi) {\n\t\t\t\tif (!!this._date[0]) {\n\t\t\t\t\treturn time === this._date[0].time;\n\t\t\t\t}\n\t\t\t\tif (!!this._date[1]) {\n\t\t\t\t\treturn time === this._date[1].time;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn this._date.findIndex((e) => e !== null && e.time === time) !== -1;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tonSelected(item: ICalendarDay): void {\n\t\tif (this.readonly) {\n\t\t\treturn;\n\t\t}\n\n\t\titem.selected = true;\n\t\tthis.onSelect.emit(item);\n\n\t\tswitch (this.pickMode) {\n\t\t\tcase pickModes.range:\n\t\t\t\tthis.handleSelectedRangeMode(item);\n\t\t\t\tbreak;\n\t\t\tcase pickModes.multi:\n\t\t\t\tthis.handleSelectedMultiMode(item);\n\t\t\t\tbreak;\n\t\t\tcase pickModes.single:\n\t\t\tdefault:\n\t\t\t\tthis.handleSelectedSingleMode(item);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate handleSelectedSingleMode(item: ICalendarDay): void {\n\t\tthis._date[0] = item;\n\t\tthis.onChange.emit(this._date as ICalendarDay[]);\n\t}\n\n\tprivate handleSelectedRangeMode(item: ICalendarDay): void {\n\t\tif (!this._date[0]) {\n\t\t\tthis._date[0] = item;\n\t\t\tthis.onSelectStart.emit(item);\n\t\t} else if (!this._date[1]) {\n\t\t\tif (this._date[0].time < item.time) {\n\t\t\t\tthis._date[1] = item;\n\t\t\t\tthis.onSelectEnd.emit(item);\n\t\t\t} else {\n\t\t\t\tthis._date[1] = this._date[0];\n\t\t\t\tthis.onSelectEnd.emit(this._date[0]);\n\t\t\t\tthis._date[0] = item;\n\t\t\t\tthis.onSelectStart.emit(item);\n\t\t\t}\n\t\t} else if (this._date[0].time > item.time) {\n\t\t\tthis._date[0] = item;\n\t\t\tthis.onSelectStart.emit(item);\n\t\t} else if (this._date[1].time < item.time) {\n\t\t\tthis._date[1] = item;\n\t\t\tthis.onSelectEnd.emit(item);\n\t\t} else {\n\t\t\tthis._date[0] = item;\n\t\t\tthis.onSelectStart.emit(item);\n\t\t\tthis._date[1] = null;\n\t\t}\n\n\t\tthis.onChange.emit(this._date as ICalendarDay[]);\n\t}\n\n\tprivate handleSelectedMultiMode(item: ICalendarDay): void {\n\t\tconst index = this._date.findIndex((e) => !!e && e.time === item.time);\n\n\t\tif (index === -1) {\n\t\t\tthis._date.push(item);\n\t\t} else {\n\t\t\tthis._date.splice(index, 1);\n\t\t}\n\n\t\tthis.onChange.emit(this._date.filter((e) => !!e) as ICalendarDay[]);\n\t}\n}\n","<div [class]=\"color\">\n  <ng-template [ngIf]=\"!isRange\" [ngIfElse]=\"rangeBox\">\n    <div class=\"days-box\">\n      <ng-template ngFor let-day [ngForOf]=\"month.days\"><!--  [ngForTrackBy]=\"trackByTime\">   -->\n        <div class=\"days\">\n          <ng-container *ngIf=\"day\">\n            <button type='button'\n            \t\t[class]=\"'days-btn ' + day.cssClass\"\n            \t\t[class.today]=\"day.isToday\"\n            \t\t(click)=\"onSelected(day)\"\n            \t\t[class.marked]=\"day.marked\"\n            \t\t[class.last-month-day]=\"day.isLastMonth\"\n            \t\t[class.next-month-day]=\"day.isNextMonth\"\n            \t\t[class.on-selected]=\"isSelected(day.time)\"\n            \t\t[disabled]=\"day.disable\"\n            \t\t[attr.aria-label]=\"getDayLabel(day) | date:DAY_DATE_FORMAT\">\n              <p>{{ day.title }}</p>\n              <ion-note *ngIf=\"day.subTitle\" [color]=\"colorSubtitle\">{{ day?.subTitle }}</ion-note>\n            </button>\n          </ng-container>\n        </div>\n      </ng-template>\n    </div>\n  </ng-template>\n\n  <ng-template #rangeBox>\n    <div class=\"days-box\">\n      <ng-template ngFor let-day [ngForOf]=\"month.days\"><!--  [ngForTrackBy]=\"trackByTime\">   -->\n        <div class=\"days\"\n        \t [class.startSelection]=\"isStartSelection(day)\"\n        \t [class.endSelection]=\"isEndSelection(day)\"\n        \t [class.is-first-wrap]=\"day?.isFirst\"\n        \t [class.is-last-wrap]=\"day?.isLast\"\n        \t [class.between]=\"isBetween(day)\">\n          <ng-container *ngIf=\"day\">\n            <button type='button'\n            \t\t[class]=\"'days-btn ' + day.cssClass\"\n            \t\t[class.today]=\"day.isToday\"\n            \t\t(click)=\"onSelected(day)\"\n            \t\t[class.marked]=\"day.marked\"\n            \t\t[class.last-month-day]=\"day.isLastMonth\"\n            \t\t[class.next-month-day]=\"day.isNextMonth\"\n            \t\t[class.is-first]=\"day.isFirst\"\n            \t\t[class.is-last]=\"day.isLast\"\n            \t\t[class.on-selected]=\"isSelected(day.time)\"\n            \t\t[disabled]=\"day.disable\">\n              <p>{{ day.title }}</p>\n              <ion-note *ngIf=\"day.subTitle\" [color]=\"colorSubtitle\">{{ day?.subTitle }}</ion-note>\n            </button>\n          </ng-container>\n\n        </div>\n      </ng-template>\n    </div>\n  </ng-template>\n</div>\n","import { Component, Input } from '@angular/core';\nimport defaultValues, { ColorType } from '../../types';\nimport { DateTimeHelper } from '../../helpers';\n\n\n@Component({\n  selector: 'ion-calendar-week',\n  templateUrl: './calendar-week.component.html',\n  styleUrls: ['./calendar-week.component.scss']\n})\nexport class CalendarWeekComponent {\n  private WEEKDAYS = DateTimeHelper.weekDays();\n  private _weekDaysOld: string[] = this.WEEKDAYS;\n  private _weekDays: string[] = this.WEEKDAYS;\n  private _weekStart = 0;\n\n  public displayWeekDays: string[] = this._weekDays;\n\n  @Input() color: ColorType | undefined = defaultValues.COLOR as ColorType;\n\n  constructor() {\n    // console.log(\"CalendarWeekComponent.constructor\");\n  }\n\n  @Input()\n  set weekDays(value: string[] | undefined) {\n    if (value && value.length === 7) {\n      this._weekDays = [...value];\n      this.adjustSort(this._weekStart);\n    }\n  }\n\n  @Input()\n  set weekStart(value: number) {\n    this.adjustSort(value);\n  }\n\n  private adjustSort(weekStart: number): void {\n    if (weekStart == this._weekStart && this.isEquals(this._weekDays, this._weekDaysOld)) return;\n\n    if (weekStart == 1) {\n      const cacheWeekArray = [...this._weekDays];\n      cacheWeekArray.push(cacheWeekArray.shift()!);\n      this.displayWeekDays = [...cacheWeekArray];\n\n    } else {\n      this.displayWeekDays = [...this._weekDays];\n    }\n\n    this._weekDaysOld = Array.from(this._weekDays);\n    this._weekStart = weekStart;\n  }\n\n  private isEquals(a: Array<any>, b: Array<any>): boolean {\n    try {\n      return JSON.stringify(a) === JSON.stringify(b);\n    } catch (error) {\n      return false;\n    }\n  }\n}\n","<ion-toolbar class=\"week-toolbar\" [color]=\"color\" no-border-top>\n  <ul [class]=\"'week-title ' + color\">\n      <li *ngFor=\"let w of displayWeekDays\">{{ w }}</li>\n  </ul>\n</ion-toolbar>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ICalendarMonth } from '../../models';\nimport defaultValues from '../../types';\nimport { DateTimeHelper } from '../../helpers';\n\n@Component({\n  selector: 'ion-month-picker',\n  templateUrl: './month-picker.component.html',\n  styleUrls: ['./month-picker.component.scss']\n})\nexport class MonthPickerComponent {\n  _thisMonth = new Date();\n  _monthsTitle = DateTimeHelper.monthsShortTitle();\n  MONTH_FORMAT = 'MMMM';\n\n  @Input() month!: ICalendarMonth;\n  @Input() color = defaultValues.COLOR;\n  @Output() onSelect: EventEmitter<number> = new EventEmitter();\n\n  @Input() set monthsTitle(value: string[]) {\n    if (Array.isArray(value) && value.length === 12) {\n      this._monthsTitle = value;\n    }\n  }\n  get monthsTitle(): string[] {\n    return this._monthsTitle;\n  }\n\n  constructor() {\n    // console.log(\"MonthPickerComponent.constructor\");\n  }\n\n  _onSelect(month: number): void {\n    this.onSelect.emit(month);\n  }\n\n  getDate(month: number) {\n    return new Date(this._thisMonth.getFullYear(), month, 1);\n  }\n\n  get monthSelected(): number {\n    return this.month.original.month;\n  }\n}\n","<!-- && month.original.year === _thisMonth.getFullYear()\" -->\n<div [class]=\"'month-picker ' + color\">\n  <div class=\"month-packer-item\"\n    *ngFor=\"let m of _monthsTitle; let idx = index\"\n    [class.this-month]=\" idx === _thisMonth.getMonth()\"\n    [class.active]=\" idx === monthSelected\">\n\n    <button type=\"button\" (click)=\"_onSelect(idx+1)\" [attr.aria-label]=\"getDate(idx) | date:MONTH_FORMAT\">\n      {{ m }}\n    </button>\n\n  </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport defaultValues from '../../types';\n\n@Component({\n  selector: 'ion-year-picker',\n  templateUrl: './year-picker.component.html',\n  styleUrls: ['./year-picker.component.scss']\n})\nexport class YearPickerComponent {\n  _thisYear = new Date();\n  _yearRanges: number[] = [];\n\n  private _year: number = new Date().getFullYear();\n  get year(): number {\n    return this._year;\n  }\n  @Input() set year(value: number) {\n    this._year = value;\n  }\n\n  private _yearStep: number = 0;\n  get yearStep(): number {\n    return this._yearStep;\n  }\n  @Input() set yearStep(value: number) {\n    if (this._year) {\n      this._yearStep = value;\n      this.setYearRanges(this.year, value);\n    }\n  }\n\n  @Input() color = defaultValues.COLOR;\n  @Output() onSelect: EventEmitter<number> = new EventEmitter();\n\n  constructor() {\n    // console.log(\"YearPickerComponent.Constructor\");\n    this.setYearRanges(this._thisYear.getFullYear(), 0);\n  }\n\n  private setYearRanges(year: number, step: number) {\n    const yearBase = year + (step * 15);\n    const start = yearBase - 7;\n    const end = yearBase + 7;\n\n    this._yearRanges = [];\n    for (let i = start; i <= end; i++) {\n      this._yearRanges.push(i);\n    }\n  }\n\n  _onSelect(year: number): void {\n    this.onSelect.emit(year);\n  }\n\n  ngOnChanges(changes: any) {\n    if (changes.year) {\n      this._year = changes.year.currentValue;\n      this.setYearRanges(this._year, 0);\n    }\n  }\n}\n","<div [class]=\"'year-picker ' + color\">\n  <div class=\"year-packer-item\"\n    *ngFor=\"let y of _yearRanges\"\n    [class.this-year]=\"y === _thisYear.getFullYear()\"\n    [class.active]=\"y === year\">\n\n    <button type=\"button\" (click)=\"_onSelect(y)\" >\n      {{ y }}\n    </button>\n\n  </div>\n</div>\n","import {Component, Input, OnInit, Output, EventEmitter, forwardRef, Provider} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\n\nimport {Settings as luxonSettings, DateTime} from \"luxon\";\nimport {DateTimeHelper} from \"../../helpers\";\n\nimport {IonCalendarService} from \"../../ion-calendar.service\";\nimport {\n\tICalendarComponentMonthChange,\n\tICalendarComponentOptions,\n\tICalendarComponentWeekChange,\n\tICalendarDay,\n\tICalendarModalOptions,\n\tICalendarMonth,\n} from \"../../models\";\nimport defaultValues, {\n\tCalendarComponentOnChangeType,\n\tCalendarComponentPayloadRangeType,\n\tCalendarComponentPayloadType,\n\tCalendarComponentType,\n\tColorType,\n\tpickModes,\n} from \"../../types\";\n\nexport const ION_CAL_VALUE_ACCESSOR: Provider = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => CalendarComponent),\n\tmulti: true,\n};\n@Component({\n\tselector: \"ion-calendar\",\n\ttemplateUrl: \"./calendar.component.html\",\n\tstyleUrls: [\"./calendar.component.scss\"],\n\tproviders: [ION_CAL_VALUE_ACCESSOR],\n})\nexport class CalendarComponent implements ControlValueAccessor, OnInit {\n\tdef!: ICalendarModalOptions;\n\tmonthOpt!: ICalendarMonth;\n\tcalendarMonthValue: Array<ICalendarDay | null> = [null, null];\n\tview: \"year\" | \"month\" | \"days\" = \"days\";\n\tyearStep: number = 0;\n\n\tpublic _monthsTitle = DateTimeHelper.monthsShortTitle();\n\n\tprivate _showToggleButtons = true;\n\tget showToggleButtons(): boolean {\n\t\treturn this._showToggleButtons;\n\t}\n\tset showToggleButtons(value: boolean) {\n\t\tthis._showToggleButtons = value;\n\t}\n\n\tprivate _showMonthPicker = true;\n\tget showMonthPicker(): boolean {\n\t\treturn this._showMonthPicker;\n\t}\n\tset showMonthPicker(value: boolean) {\n\t\tthis._showMonthPicker = value;\n\t}\n\n\tprivate _options: ICalendarComponentOptions = {};\n\tget options(): ICalendarComponentOptions {\n\t\treturn this._options;\n\t}\n\n\t@Input()\n\tset options(value: ICalendarComponentOptions) {\n\t\tthis._options = value;\n\t\tthis.initOpt();\n\t\tif (this.monthOpt?.original) {\n\t\t\tthis.createWeekOrMonth(this.monthOpt.original.time);\n\t\t}\n\t}\n\n\t@Input() color: ColorType | undefined = undefined;\n\t@Input() format: string = defaultValues.DATE_FORMAT;\n\t@Input() type: CalendarComponentType = \"string\";\n\t@Input() readonly = false;\n\n\t@Output() onChange: EventEmitter<CalendarComponentOnChangeType> = new EventEmitter();\n\t@Output() onMonthChange: EventEmitter<ICalendarComponentMonthChange> = new EventEmitter();\n\t@Output() onWeekChange: EventEmitter<ICalendarComponentWeekChange> = new EventEmitter();\n\t@Output() onSelect: EventEmitter<ICalendarDay> = new EventEmitter();\n\t@Output() onSelectStart: EventEmitter<ICalendarDay> = new EventEmitter();\n\t@Output() onSelectEnd: EventEmitter<ICalendarDay> = new EventEmitter();\n\n\tconstructor(public calSvc: IonCalendarService) {\n\t\tluxonSettings.defaultLocale = \"en\";\n\t}\n\n\tngOnInit(): void {\n\t\tthis.initOpt();\n\t\tthis.createWeekOrMonth(new Date().getTime());\n\t}\n\n\tprivate _selectedDates!: Date | Date[];\n\n\tget selectedDates() {\n\t\tif (this._selectedDates) {\n\t\t\treturn this._selectedDates;\n\t\t}\n\n\t\tconst dates: Array<Date> = [];\n\t\tfor (const el of this.calendarMonthValue) {\n\t\t\tif (el?.time) {\n\t\t\t\tdates.push(new Date(el.time));\n\t\t\t}\n\t\t}\n\t\treturn dates;\n\t}\n\tprivate set selectedDates(value: Date | Date[]) {\n\t\tthis._selectedDates = value;\n\t}\n\n\tprotected switchView(): void {\n\t\tconst switchNext = this.options.showYearPicker ?? true ? \"year\" : \"month\";\n\t\tconst switchPrev = this.view === \"year\" ? \"month\" : \"days\";\n\t\tthis.view = this.view === \"days\" ? switchNext : switchPrev;\n\t}\n\n\tswitchIcon(): string {\n\t\tconst secondIcon = (this.options.showYearPicker ?? true) && this.view === \"year\" ? \"caret-down\" : \"caret-up\";\n\t\treturn this.view === \"days\" ? \"caret-down\" : secondIcon;\n\t}\n\n\tprotected prev(): void {\n\t\tif (this.view === \"days\") {\n\t\t\tif (this.def.displayMode === \"week\") {\n\t\t\t\tthis.backWeek();\n\t\t\t} else {\n\t\t\t\tthis.backMonth();\n\t\t\t}\n\t\t} else if (this.view === \"month\") {\n\t\t\tthis.prevYear();\n\t\t} else {\n\t\t\tthis.yearStep -= 1;\n\t\t}\n\t}\n\n\tprotected next(): void {\n\t\tif (this.view === \"days\") {\n\t\t\tif (this.def.displayMode === \"week\") {\n\t\t\t\tthis.nextWeek();\n\t\t\t} else {\n\t\t\t\tthis.nextMonth();\n\t\t\t}\n\t\t} else if (this.view === \"month\") {\n\t\t\tthis.nextYear();\n\t\t} else {\n\t\t\tthis.yearStep += 1;\n\t\t}\n\t}\n\n\tprivate prevYear(): void {\n\t\tconst backTime = DateTime.fromMillis(this.monthOpt.original.time).minus({year: 1}).valueOf();\n\t\tthis.createWeekOrMonth(backTime);\n\t}\n\n\tprivate nextYear(): void {\n\t\tconst nextTime = DateTime.fromMillis(this.monthOpt.original.time).plus({year: 1}).valueOf();\n\t\tthis.createWeekOrMonth(nextTime);\n\t}\n\n\tprivate nextMonth() {\n\t\tconst nextTime = DateTime.fromMillis(this.monthOpt.original.time).plus({months: 1}).valueOf();\n\t\tthis.onMonthChange.emit({\n\t\t\toldMonth: this.calSvc.multiFormat(this.monthOpt.original.time),\n\t\t\tnewMonth: this.calSvc.multiFormat(nextTime),\n\t\t});\n\t\tthis.monthOpt = this.createMonth(nextTime);\n\t}\n\n\tprivate nextWeek() {\n\t\tconst nextTime = DateTime.fromMillis(this.monthOpt.original.time).plus({weeks: this.def.weeks}).valueOf();\n\t\tconst newWeek = this.calSvc.multiFormat(nextTime);\n\t\tconst oldWeek = this.calSvc.multiFormat(this.monthOpt.original.time);\n\n\t\tthis.monthOpt = this.createWeek(nextTime);\n\t\tthis.onWeekChange.emit({oldWeek: oldWeek, newWeek: this.calSvc.multiFormat(this.monthOpt.original.time)});\n\n\t\tif (oldWeek.month != newWeek.month) {\n\t\t\tthis.onMonthChange.emit({oldMonth: oldWeek, newMonth: this.calSvc.multiFormat(this.monthOpt.original.time)});\n\t\t}\n\t}\n\n\tcanNext(): boolean {\n\t\tif (!this.def.to || this.view !== \"days\") return true;\n\n\t\tconst toDate = DateTimeHelper.parse(this.def.to);\n\t\treturn this.monthOpt.original.lastDayOfMonth < toDate.toMillis();\n\t}\n\n\tprivate backMonth(): void {\n\t\tconst backTime = DateTime.fromMillis(this.monthOpt.original.time).minus({months: 1}).valueOf();\n\t\tthis.onMonthChange.emit({\n\t\t\toldMonth: this.calSvc.multiFormat(this.monthOpt.original.time),\n\t\t\tnewMonth: this.calSvc.multiFormat(backTime),\n\t\t});\n\t\tthis.monthOpt = this.createMonth(backTime);\n\t}\n\n\tprivate backWeek(): void {\n\t\tconst backTime = DateTime.fromMillis(this.monthOpt.original.time).minus({weeks: this.def.weeks}).valueOf();\n\t\tconst newWeek = this.calSvc.multiFormat(backTime);\n\t\tconst oldWeek = this.calSvc.multiFormat(this.monthOpt.original.time);\n\n\t\tthis.onWeekChange.emit({oldWeek: oldWeek, newWeek: newWeek});\n\n\t\tif (oldWeek.month != newWeek.month) {\n\t\t\tthis.onMonthChange.emit({oldMonth: oldWeek, newMonth: newWeek});\n\t\t}\n\n\t\tthis.monthOpt = this.createWeek(backTime);\n\t}\n\n\tcanPrev(): boolean {\n\t\tif (!this.def.from || this.view !== \"days\") return true;\n\n\t\tconst fromDate = DateTimeHelper.parse(this.def.from);\n\t\treturn this.monthOpt.original.time > fromDate.valueOf();\n\t}\n\n\tonMonthSelect(month: number): void {\n\t\tthis.view = \"days\";\n\n\t\tconst newMonth = DateTimeHelper.parse(this.monthOpt.original.time).set({month}).valueOf();\n\t\tthis.onMonthChange.emit({\n\t\t\toldMonth: this.calSvc.multiFormat(this.monthOpt.original.time),\n\t\t\tnewMonth: this.calSvc.multiFormat(newMonth),\n\t\t});\n\t\tthis.createWeekOrMonth(newMonth);\n\t}\n\n\tpublic onYearSelect(year: number): void {\n\t\tthis.view = \"month\";\n\n\t\tconst newYear = DateTimeHelper.parse(this.monthOpt.original.time).set({year}).valueOf();\n\t\tthis.onMonthChange.emit({\n\t\t\toldMonth: this.calSvc.multiFormat(this.monthOpt.original.time),\n\t\t\tnewMonth: this.calSvc.multiFormat(newYear),\n\t\t});\n\t\tthis.monthOpt = this.createMonth(newYear);\n\t}\n\n\tprotected onChanged($event: ICalendarDay[]): void {\n\t\tconst eCD: ICalendarDay[] = $event;\n\n\t\tthis.yearStep = 0;\n\n\t\tconst emitOnChange = (date: CalendarComponentOnChangeType) => {\n\t\t\tthis._onChanged(date);\n\t\t\tthis.onChange.emit(date);\n\t\t};\n\n\t\tswitch (this.def.pickMode) {\n\t\t\tcase pickModes.single:\n\t\t\t\tconst dTime = eCD[0].time;\n\t\t\t\tconst date = this._handleType(dTime);\n\n\t\t\t\tthis.selectedDates = DateTimeHelper.parse(dTime).toJSDate();\n\t\t\t\temitOnChange(date);\n\t\t\t\tbreak;\n\n\t\t\tcase pickModes.range:\n\t\t\t\tif (eCD[0] && eCD[1]) {\n\t\t\t\t\tconst timeFrom = eCD[0].time;\n\t\t\t\t\tconst timeTo = eCD[1].time;\n\n\t\t\t\t\tconst rangeDate: CalendarComponentPayloadRangeType = {\n\t\t\t\t\t\tfrom: this._handleType(timeFrom),\n\t\t\t\t\t\tto: this._handleType(timeTo),\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.selectedDates = Array<Date>(DateTimeHelper.parse(timeFrom).toJSDate(), DateTimeHelper.parse(timeTo).toJSDate());\n\n\t\t\t\t\temitOnChange(rangeDate);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase pickModes.multi:\n\t\t\t\tconst emitChangeForMulti = (days: ICalendarDay[]): Array<Date> => {\n\t\t\t\t\tconst dates: Array<Date> = [];\n\n\t\t\t\t\tconst payloads: Array<CalendarComponentPayloadType> = [];\n\t\t\t\t\tfor (const day of days) {\n\t\t\t\t\t\tif (day?.time) {\n\t\t\t\t\t\t\tconst payload = this._handleType(day.time);\n\t\t\t\t\t\t\tpayloads.push(payload);\n\t\t\t\t\t\t\tdates.push(DateTimeHelper.parse(day.time).toJSDate());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\temitOnChange(payloads);\n\t\t\t\t\treturn dates;\n\t\t\t\t};\n\t\t\t\tthis.selectedDates = emitChangeForMulti(eCD);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t}\n\t}\n\n\tprivate _onChanged: Function = () => {};\n\tprivate _onTouched: Function = () => {};\n\n\tprivate _payloadToTimeNumber(value: CalendarComponentPayloadType): number {\n\t\tconst date = typeof value === \"string\"\n      ? DateTime.fromFormat(value, this.format.replace(/Y/g, \"y\"))\n      : DateTimeHelper.parse(value);\n\n\t\treturn date.valueOf();\n\t}\n\n\tmonthFormat(date: number): string {\n\t\tif (!this.def.monthFormat) return \"\";\n\t\treturn DateTimeHelper.parse(date).toFormat(this.def.monthFormat.replace(/Y/g, \"y\"), {locale: this._options.locale?.locale});\n\t}\n\n\tprivate initOpt(): void {\n\t\tthis.showToggleButtons = this._options.showToggleButtons ?? true;\n\t\tthis.showMonthPicker = this._options.showMonthPicker ?? true;\n\n\t\tif (this.view !== \"days\" && !this.showMonthPicker) {\n\t\t\tthis.view = \"days\";\n\t\t}\n\n\t\tif (this.color && this.color !== this.options.color) {\n\t\t\tthis.options.color = this.color;\n\t\t}\n\n\t\tthis.def = this.calSvc.safeOpt(this._options);\n\t\tthis._options = {\n\t\t\t...this._options,\n\t\t\t...this.def,\n\t\t};\n\n\t\tconst locale = this._options.locale?.locale || \"en\";\n\t\tluxonSettings.defaultLocale = locale;\n\n\t\tthis._monthsTitle = this._options.monthsTitle ?? DateTimeHelper.monthsShortTitle(locale);\n\t}\n\n\tprivate createWeekOrMonth(time: number) {\n\t\tif (this.def.displayMode === \"week\") {\n\t\t\tthis.monthOpt = this.createWeek(time);\n\t\t} else {\n\t\t\tthis.monthOpt = this.createMonth(time);\n\t\t}\n\t}\n\n\tprivate createWeek(date: number): ICalendarMonth {\n\t\tconst period = this.calSvc.createWeeksByPeriod(date, this.def);\n\t\treturn period[0];\n\t}\n\tprivate createMonth(date: number): ICalendarMonth {\n\t\tconst period = this.calSvc.createMonthsByPeriod(date, 1, this.def);\n\t\treturn period[0];\n\t}\n\n\tprivate _createCalendarDay(value: CalendarComponentPayloadType): ICalendarDay {\n\t\treturn this.calSvc.createCalendarDay(this._payloadToTimeNumber(value), this.def);\n\t}\n\n\tprivate _handleType(value: number): CalendarComponentPayloadType {\n\t\tconst date = DateTimeHelper.parse(value);\n\t\tswitch (this.type) {\n\t\t\tcase \"time\":\n\t\t\t\treturn date.valueOf();\n\t\t\tcase \"js-date\":\n\t\t\t\treturn date.toJSDate();\n\t\t\tcase \"object\":\n\t\t\t\treturn date.toObject();\n\t\t\tcase \"luxon\":\n\t\t\t\treturn date;\n\t\t\tcase \"string\":\n\t\t\tdefault:\n\t\t\t\treturn date.toFormat(this.format.replace(/Y/g, \"y\"));\n\t\t}\n\t}\n\n\twriteValue(obj: CalendarComponentOnChangeType): void {\n\t\tthis._writeValue(obj);\n\t\tif (obj) {\n\t\t\tif (this.calendarMonthValue[0]) {\n\t\t\t\tif (!Number.isNaN(this.calendarMonthValue[0].time)) {\n          this.createWeekOrMonth(this.calendarMonthValue[0].time);\n        }\n\t\t\t} else {\n\t\t\t\tthis.createWeekOrMonth(new Date().getTime());\n\t\t\t}\n\t\t}\n\t}\n\n\tregisterOnChange(fn: Function): void {\n\t\tthis._onChanged = fn;\n\t}\n\n\tregisterOnTouched(fn: Function): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tprivate _writeValue(value: CalendarComponentOnChangeType): void {\n\t\tif (!value) {\n\t\t\tthis.calendarMonthValue = [null, null];\n\t\t\treturn;\n\t\t}\n\n\t\tthis.onChange.emit(value);\n\n\t\tswitch (this.def.pickMode) {\n\t\t\tcase \"single\":\n\t\t\t\tthis.calendarMonthValue[0] = this._createCalendarDay(value as CalendarComponentPayloadType);\n\t\t\t\tbreak;\n\n\t\t\tcase \"range\":\n\t\t\t\tconst {from, to} = value as CalendarComponentPayloadRangeType;\n\t\t\t\tthis.calendarMonthValue[0] = from ? this._createCalendarDay(from) : null;\n\t\t\t\tthis.calendarMonthValue[1] = to ? this._createCalendarDay(to) : null;\n\t\t\t\tbreak;\n\n\t\t\tcase \"multi\":\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tthis.calendarMonthValue = value.map((e) => {\n\t\t\t\t\t\treturn this._createCalendarDay(e);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.calendarMonthValue = [null, null];\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t}\n\t}\n}\n","<div class=\"title\">\n  <ng-template [ngIf]=\"showMonthPicker && !readonly\" [ngIfElse]=\"title\">\n      <ion-button type=\"button\" fill=\"clear\" class=\"switch-btn\" (click)=\"switchView()\" mode=\"md\">\n          {{ monthFormat(monthOpt.original.time) }}\n          <ion-icon class=\"arrow-dropdown\" [name]=\"switchIcon()\"></ion-icon>\n      </ion-button>\n  </ng-template>\n\n  <ng-template #title>\n      <div class=\"switch-btn\">\n        {{ monthFormat(monthOpt.original.time) }}\n      </div>\n  </ng-template>\n\n  <ng-template [ngIf]=\"showToggleButtons && !readonly\">\n      <ion-button type=\"button\" fill=\"clear\" class=\"back\" [disabled]=\"!canPrev()\" (click)=\"prev()\">\n          <ion-icon slot=\"icon-only\" size=\"small\" name=\"chevron-back\"></ion-icon>\n      </ion-button>\n      <ion-button type=\"button\" fill=\"clear\" class=\"forward\" [disabled]=\"!canNext()\" (click)=\"next()\">\n          <ion-icon slot=\"icon-only\" size=\"small\" name=\"chevron-forward\"></ion-icon>\n      </ion-button>\n  </ng-template>\n</div>\n\n<ng-template #viewDays [ngIf]=\"view === 'days'\">\n  <ion-calendar-week color=\"transparent\" [weekDays]=\"def.weekdays\" [weekStart]=\"def.weekStart??0\">\n  </ion-calendar-week>\n\n  <!-- (swipe)=\"onSwipe($event)\" -->\n  <ion-calendar-month class=\"component-mode\"\n      [(ngModel)]=\"calendarMonthValue\"\n      [month]=\"monthOpt\"\n      [readonly]=\"readonly\"\n      (onChange)=\"onChanged($event)\"\n      (onSelect)=\"onSelect.emit($event)\"\n      (onSelectStart)=\"onSelectStart.emit($event)\"\n      (onSelectEnd)=\"onSelectEnd.emit($event)\"\n      [pickMode]=\"def.pickMode||'single'\"\n      [color]=\"def.color\"\n      [colorSubtitle]=\"def.colorSubtitle\">\n  </ion-calendar-month>\n</ng-template>\n\n<ng-template #viewMonths [ngIf]=\"view === 'month'\">\n  <ion-month-picker\n      (onSelect)=\"onMonthSelect($event)\"\n      [color]=\"def.color!\"\n      [month]=\"monthOpt\"\n      [monthsTitle]=\"_monthsTitle\">\n  </ion-month-picker>\n</ng-template>\n\n<ng-template #viewYears [ngIf]=\"view === 'year'\">\n  <ion-year-picker\n      (onSelect)=\"onYearSelect($event)\"\n      [color]=\"def.color!\"\n      [year]=\"monthOpt.original.year\"\n      [yearStep]=\"yearStep\">\n  </ion-year-picker>\n</ng-template>\n","import {\n  Component, ViewChild, ElementRef, ChangeDetectorRef, Renderer2, OnInit, Input, AfterViewInit\n} from '@angular/core';\nimport { NavParams, ModalController, IonContent } from '@ionic/angular';\n\nimport { IonCalendarService } from '../../ion-calendar.service';\nimport { ICalendarModalOptions, ICalendarDay, ICalendarMonth } from '../../models';\nimport { DateTimeHelper } from '../../helpers';\nimport { pickModes } from '../../types';\n\nconst NUM_OF_MONTHS_TO_CREATE = 3;\n\n@Component({\n  selector: 'ion-calendar-modal',\n  templateUrl: './calendar-modal.component.html',\n  styleUrls: ['./calendar-modal.component.scss']\n})\nexport class CalendarModalComponent implements OnInit, AfterViewInit {\n  def!: ICalendarModalOptions;\n  datesTemp: Array<ICalendarDay | null> = [null];\n  calendarMonths!: Array<ICalendarMonth>;\n\n  private showYearPicker!: boolean;\n  private year!: number;\n  private _scrollLock = true;\n  private actualFirstTime!: number;\n\n  @ViewChild('ionContent')\n  private content: ElementRef | undefined;\n\n  @ViewChild('months')\n  private monthElement!: ElementRef;\n\n  // @HostBinding('class.ion-page')\n  // private ionPage = true;\n\n  @Input() options!: ICalendarModalOptions;\n\n  constructor(\n    private _renderer: Renderer2,\n    public _elementRef: ElementRef,\n    public params: NavParams,\n    public modalCtrl: ModalController,\n    public ref: ChangeDetectorRef,\n    public calSvc: IonCalendarService\n  ) {\n    // console.log(\"CalendarModalComponent.constructor\");\n  }\n\n  ngOnInit(): void {\n    this.init();\n    this.initDefaultDate();\n  }\n\n  ngAfterViewInit(): void {\n    this.findCssClass();\n    if (this.def.canBackwardsSelected) this.backwardsMonth();\n    this.scrollToDefaultDate();\n  }\n\n  private init(): void {\n    this.def = this.calSvc.safeOpt(this.options);\n    this.def.showAdjacentMonthDay = false;\n\n    const { from, to, defaultScrollTo } = this.def;\n\n    let step = this.def.step || 0;\n\n    if (DateTimeHelper.isDate(to)) {\n      const dateTo = DateTimeHelper.parse(to).toJSDate();\n      step = Math.max(step, this.findIndexMonthElement(dateTo));\n    }\n\n    const startTime = DateTimeHelper.parse(from).valueOf();\n    const scrollTo = defaultScrollTo!;\n\n    if (scrollTo.getTime() !== startTime) {\n      step = Math.max(step, this.findIndexMonthElement(scrollTo));\n    }\n\n    step = Math.max(step, this.calSvc.DEFAULT_STEP);\n    this.calendarMonths = this.calSvc.createMonthsByPeriod(startTime, step, this.def);\n  }\n\n  private initDefaultDate(): void {\n    const { pickMode, defaultDate, defaultDateRange, defaultDates } = this.def;\n    switch (pickMode) {\n      case pickModes.single:\n        if (defaultDate) {\n          this.datesTemp[0] = this.calSvc.createCalendarDay(this._getDayTime(defaultDate), this.def);\n        }\n        break;\n      case pickModes.range:\n        if (defaultDateRange) {\n          if (defaultDateRange.from) {\n            this.datesTemp[0] = this.calSvc.createCalendarDay(this._getDayTime(defaultDateRange.from), this.def);\n          }\n          if (defaultDateRange.to) {\n            this.datesTemp[1] = this.calSvc.createCalendarDay(this._getDayTime(defaultDateRange.to), this.def);\n          }\n        }\n        break;\n      case pickModes.multi:\n        if (defaultDates?.length) {\n          this.datesTemp = defaultDates.map(e => this.calSvc.createCalendarDay(this._getDayTime(e), this.def));\n        }\n        break;\n      default:\n        this.datesTemp = [null, null];\n    }\n  }\n\n  private findCssClass(): void {\n    const { cssClass } = this.def;\n    if (cssClass) {\n      cssClass.split(' ').forEach((_class: string) => {\n        if (_class.trim() !== '') this._renderer.addClass(this._elementRef.nativeElement, _class);\n      });\n    }\n  }\n\n  protected onChange(data: ICalendarDay[]): void {\n    const { pickMode, autoDone } = this.def;\n\n    this.datesTemp = data;\n    this.ref.detectChanges();\n\n    if (pickMode !== pickModes.multi && autoDone && this.canDone()) {\n      this.done();\n    }\n\n    this.repaintDOM();\n  }\n\n  cancel(): void {\n    this.modalCtrl.dismiss(null, 'cancel');\n  }\n\n  done(): void {\n    const { pickMode } = this.def;\n\n    this.modalCtrl.dismiss(this.calSvc.wrapResult(this.datesTemp as ICalendarDay[], pickMode!), 'done');\n  }\n\n  canDone(): boolean {\n    if (!Array.isArray(this.datesTemp)) {\n      return false;\n    }\n    const { pickMode } = this.def;\n\n    switch (pickMode) {\n      case pickModes.single:\n        return !!this.datesTemp[0]?.time;\n      case pickModes.range:\n        return !!(this.datesTemp[0]?.time && this.datesTemp[1]?.time);\n      case pickModes.multi:\n        return this.datesTemp.length > 0 && this.datesTemp.every(e => !!e?.time);\n      default:\n        return false;\n    }\n  }\n\n  clear() {\n    this.datesTemp = [null, null];\n  }\n\n  canClear() {\n    return !!this.datesTemp[0];\n  }\n\n  nextMonth(event: any): void {\n    const len = this.calendarMonths.length;\n    const final = this.calendarMonths[len - 1];\n\n    const nextTime = DateTimeHelper.parse(final.original.time).plus({ months: 1 }).valueOf();\n    const rangeEnd = this.def.to ? DateTimeHelper.parse(this.def.to).minus({ months: 1 }) : 0;\n\n    if (len <= 0 || (rangeEnd !== 0 && DateTimeHelper.parse(final.original.time) > rangeEnd)) {\n      event.target.disabled = true;\n      return;\n    }\n\n    this.calendarMonths.push(...this.calSvc.createMonthsByPeriod(nextTime, NUM_OF_MONTHS_TO_CREATE, this.def));\n    event.target.complete();\n    this.repaintDOM();\n  }\n\n  backwardsMonth(): void {\n    const first = this.calendarMonths[0];\n\n    if (first.original.time <= 0) {\n      this.def.canBackwardsSelected = false;\n      return;\n    }\n\n    const firstTime = (this.actualFirstTime = DateTimeHelper.parse(first.original.time)\n      .minus({ months: NUM_OF_MONTHS_TO_CREATE })\n      .valueOf());\n\n    this.calendarMonths.unshift(...this.calSvc.createMonthsByPeriod(firstTime, NUM_OF_MONTHS_TO_CREATE, this.def));\n    this.ref.detectChanges();\n    this.repaintDOM();\n  }\n\n  private scrollToDate(date: Date): void {\n    const elIndex = this.findIndexMonthElement(date);\n    const monthElement = this.monthElement.nativeElement.children[`month-${elIndex}`];\n\n    setTimeout(() => {\n      const scrollTo = monthElement ? monthElement.offsetTop : 0;\n\n      if (scrollTo > 0)\n        this.content?.nativeElement.scrollByPoint(0, scrollTo, 120);\n\n    }, 350);\n\n  }\n\n  private scrollToDefaultDate(): void {\n    this.scrollToDate(this.def.defaultScrollTo!);\n  }\n\n  onScroll($event: any): void {\n    if (!this.def.canBackwardsSelected) return;\n\n    const content: IonContent = $event.target;\n    const { detail } = $event;\n\n    if (detail.scrollTop <= 200 && detail.velocityY < 0 && this._scrollLock) {\n      content.getScrollElement().then(scrollElem => {\n        this._scrollLock = !1;\n\n        const heightBeforeMonthPrepend = scrollElem.scrollHeight;\n        this.backwardsMonth();\n        setTimeout(() => {\n          const heightAfterMonthPrepend = scrollElem.scrollHeight;\n\n          content.scrollByPoint(0, heightAfterMonthPrepend - heightBeforeMonthPrepend, 0).then(() => {\n            this._scrollLock = !0;\n          });\n        }, 180);\n      });\n    }\n  }\n\n  /**\n   * In some older Safari versions (observed at Mac's Safari 10.0), there is an issue where style updates to\n   * shadowRoot descendants don't cause a browser repaint.\n   * See for more details: https://github.com/Polymer/polymer/issues/4701\n   */\n  async repaintDOM() {\n    this.monthElement.nativeElement.style.zIndex = '2';\n    this.monthElement.nativeElement.style.zIndex = 'initial';\n  }\n\n  private findIndexMonthElement(date: Date): number {\n    let startDate = this.actualFirstTime ? DateTimeHelper.parse(this.actualFirstTime) : DateTimeHelper.parse(this.def.from);\n    const defaultScrollTo = DateTimeHelper.parse(date);\n    const isAfter: boolean = defaultScrollTo > startDate;\n\n    if (!isAfter) return -1;\n\n    if (this.showYearPicker) {\n      startDate = DateTimeHelper.parse(new Date(this.year, 0, 1));\n    }\n\n    return Math.round(defaultScrollTo.diff(startDate, 'month').months);\n  }\n\n  _getDayTime(date: any): number {\n    const dtFormat = DateTimeHelper.parse(date).toFormat('yyyy-MM-dd');\n    return DateTimeHelper.parse(dtFormat).valueOf();\n  }\n\n  _monthTitle(date: any): string {\n    const dtFormat = this.def.monthFormat?.replace(/Y/g, 'y') || 'MMM yyyy';\n    return DateTimeHelper.parse(date).toFormat(dtFormat, { locale: this.def.locale?.locale });\n  }\n\n  trackByIndex(index: number, momentDate: ICalendarMonth): number {\n    return momentDate.original ? momentDate.original.time : index;\n  }\n}\n","<ion-header>\n  <ion-toolbar [color]=\"def.color\" class=\"ion-no-border\">\n    <ion-buttons slot=\"start\">\n      <ion-button type='button' slot=\"icon-only\" shape=\"round\" fill=\"clear\" (click)=\"cancel()\">\n        <span *ngIf=\"def.closeLabel !== '' && !def.closeIcon\">{{ def.closeLabel }}</span>\n        <ion-icon *ngIf=\"def.closeIcon\" name=\"close\"></ion-icon>\n      </ion-button>\n    </ion-buttons>\n\n    <ion-title>{{ def.title }}</ion-title>\n\n    <ion-buttons slot=\"end\">\n      <ion-button type='button' *ngIf=\"!!def.clearLabel\" shape=\"round\" fill=\"clear\" [disabled]=\"!canClear()\" (click)=\"clear()\">\n        <span *ngIf=\"def.clearLabel !== ''\">{{ def.clearLabel }}</span>\n      </ion-button>\n      <ion-button type='button' slot=\"icon-only\" *ngIf=\"!def.autoDone\" shape=\"round\" fill=\"clear\" [disabled]=\"!canDone()\" (click)=\"done()\">\n        <span *ngIf=\"def.doneLabel !== '' && !def.doneIcon\">{{ def.doneLabel }}</span>\n        <ion-icon *ngIf=\"def.doneIcon\" name=\"checkmark\"></ion-icon>\n      </ion-button>\n    </ion-buttons>\n  </ion-toolbar>\n\n  <ng-content select=\"[sub-header]\"></ng-content>\n\n  <ion-calendar-week [color]=\"def.color\" [weekDays]=\"def.weekdays\" [weekStart]=\"def.weekStart??0\">\n  </ion-calendar-week>\n\n</ion-header>\n\n<ion-content #ionContent class=\"calendar-page\"\n             [ngClass]=\"{'multi-selection': def.pickMode === 'multi'}\"\n             (ionScroll)=\"onScroll($event)\"\n             [scrollEvents]=\"true\">\n\n  <div #months>\n    <ng-template ngFor let-month [ngForOf]=\"calendarMonths\" [ngForTrackBy]=\"trackByIndex\" let-i=\"index\">\n      <div class=\"month-box\" [attr.id]=\"'month-' + i\">\n        <h4 class=\"text-center month-title\">{{ _monthTitle(month.original.date) }}</h4>\n        <ion-calendar-month [month]=\"month\"\n                            [pickMode]=\"def.pickMode||'single'\"\n                            [id]=\"def.id\"\n                            [color]=\"def.color\"\n                            [colorSubtitle]=\"def.colorSubtitle\" \n                            (onChange)=\"onChange($event)\"\n                            [(ngModel)]=\"datesTemp\">\n        </ion-calendar-month>\n      </div>\n    </ng-template>\n\n  </div>\n\n  <ion-infinite-scroll threshold=\"25%\" (ionInfinite)=\"nextMonth($event)\">\n    <ion-infinite-scroll-content></ion-infinite-scroll-content>\n  </ion-infinite-scroll>\n\n</ion-content>\n","import { CalendarComponent } from \"./calendar/calendar.component\";\r\nimport { CalendarModalComponent } from \"./calendar-modal/calendar-modal.component\";\r\nimport { CalendarMonthComponent } from \"./calendar-month/calendar-month.component\";\r\nimport { CalendarWeekComponent } from \"./calendar-week/calendar-week.component\";\r\nimport { MonthPickerComponent } from \"./month-picker/month-picker.component\";\r\nimport { YearPickerComponent } from \"./year-picker/year-picker.component\";\r\n\r\nexport {\r\n  CalendarModalComponent,\r\n  CalendarMonthComponent,\r\n  CalendarWeekComponent,\r\n  CalendarComponent,\r\n  MonthPickerComponent,\r\n  YearPickerComponent\r\n}\r\n\r\nexport const ION_CALENDAR_COMPONENTS = [\r\n  CalendarModalComponent,\r\n  CalendarMonthComponent,\r\n  CalendarWeekComponent,\r\n  CalendarComponent\r\n];\r\n","import { Injectable } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\n\nimport { ICalendarModalOptions } from './models/ICalendarOptions';\nimport { IModalOptions } from './models/IModalOptions';\nimport { IonCalendarService } from './ion-calendar.service';\nimport { CalendarModalComponent } from './components';\n\n@Injectable()\nexport class CalendarModalController {\n    constructor(public modalCtrl: ModalController, public calSvc: IonCalendarService) { }\n\n    /**\n     * @deprecated\n     * @param {ICalendarModalOptions} calendarOptions\n     * @param {IModalOptions} modalOptions\n     * @returns {any}\n     */\n    async openCalendar(calendarOptions: ICalendarModalOptions, modalOptions: IModalOptions = {}): Promise<{}> {\n        const options = this.calSvc.safeOpt(calendarOptions);\n\n        const calendarModal = await this.modalCtrl\n            .create({\n                component: CalendarModalComponent,\n                componentProps: {\n                    options,\n                },\n                ...modalOptions,\n            });\n        calendarModal.present();\n        const event = await calendarModal.onDidDismiss();\n        return await (event.data ? Promise.resolve(event.data) : Promise.reject('cancelled'));\n    }\n}\n","import { CUSTOM_ELEMENTS_SCHEMA, EnvironmentProviders, makeEnvironmentProviders, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\n\nimport { IonCalendarService } from './ion-calendar.service';\nimport { CalendarModalController } from './calendar-modal.controller';\nimport { DEFAULT_CALENDAR_OPTIONS } from './calendar-options.provider';\nimport { ION_CALENDAR_COMPONENTS, MonthPickerComponent, YearPickerComponent } from './components';\nimport { ICalendarModalOptions } from './models';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nexport function calendarController(modalCtrl: ModalController, calSvc: IonCalendarService) {\n  return new CalendarModalController(modalCtrl, calSvc);\n}\n\nexport function provideIonCalendar(defaultOptions: ICalendarModalOptions = {}): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    { provide: DEFAULT_CALENDAR_OPTIONS, useValue: defaultOptions },\n    IonCalendarService,\n  ]);\n}\n\n@NgModule({\n  declarations: [\n    ION_CALENDAR_COMPONENTS, MonthPickerComponent, YearPickerComponent\n  ],\n  imports: [\n    CommonModule, FormsModule\n  ],\n  exports: [\n    ION_CALENDAR_COMPONENTS, MonthPickerComponent, YearPickerComponent\n  ],\n  providers: [\n    IonCalendarService,\n    {\n      provide: CalendarModalController,\n      useFactory: calendarController,\n      deps: [ModalController, IonCalendarService],\n    }\n  ],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class IonCalendarModule {\n\n  static forRoot(defaultOptions: ICalendarModalOptions = {}): ModuleWithProviders<any> {\n    return {\n      ngModule: IonCalendarModule,\n      providers: [\n        { provide: DEFAULT_CALENDAR_OPTIONS, useValue: defaultOptions }\n      ]\n    };\n  }\n}\n","export class ICalendarResult {\r\n  time: number = 0;\r\n  seconds: number = 0;\r\n  dateObj: Date = new Date();\r\n  string: string = '';\r\n  year: number = 0;\r\n  month: number = 0;\r\n  day: number = 0;\r\n}\r\n\r\nexport class ICalendarComponentWeekChange {\r\n  oldWeek!: ICalendarResult;\r\n  newWeek!: ICalendarResult;\r\n}\r\n\r\nexport class ICalendarComponentMonthChange {\r\n  oldMonth!: ICalendarResult;\r\n  newMonth!: ICalendarResult;\r\n}\r\n\r\n","/*\n * Public API Surface of ion-calendar\n */\n\nexport * from './lib/ion-calendar.service';\nexport * from './lib/ion-calendar.module';\n\nexport * from './lib/components';\nexport * from './lib/models';\nexport * from './lib/calendar-modal.controller';\nexport { DEFAULT_CALENDAR_OPTIONS } from './lib/calendar-options.provider';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["luxonSettings","i1.IonCalendarService","i2","i4.CalendarMonthComponent","i5.CalendarWeekComponent","i6.MonthPickerComponent","i7.YearPickerComponent","i1","i2.IonCalendarService","i3","i4","i5.CalendarMonthComponent","i6.CalendarWeekComponent","i1.CalendarModalComponent","i2.CalendarMonthComponent","i3.CalendarWeekComponent","i4.CalendarComponent"],"mappings":"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"}