{"version":3,"file":"nggondolas-ng2-date-picker.mjs","sources":["../../../projects/ng2-date-picker/src/lib/common/types/calendar-mode-enum.ts","../../../projects/ng2-date-picker/src/lib/common/types/calendar-value-enum.ts","../../../projects/ng2-date-picker/src/lib/common/types/selection-event.enum.ts","../../../projects/ng2-date-picker/src/lib/common/dayjs/dayjs.ref.ts","../../../projects/ng2-date-picker/src/lib/common/services/utils/utils.service.ts","../../../projects/ng2-date-picker/src/lib/day-calendar/day-calendar.service.ts","../../../projects/ng2-date-picker/src/lib/time-select/time-select.service.ts","../../../projects/ng2-date-picker/src/lib/day-time-calendar/day-time-calendar.service.ts","../../../projects/ng2-date-picker/src/lib/date-picker/date-picker.service.ts","../../../projects/ng2-date-picker/src/lib/month-calendar/month-calendar.service.ts","../../../projects/ng2-date-picker/src/lib/calendar-nav/calendar-nav.component.ts","../../../projects/ng2-date-picker/src/lib/calendar-nav/calendar-nav.component.html","../../../projects/ng2-date-picker/src/lib/month-calendar/month-calendar.component.ts","../../../projects/ng2-date-picker/src/lib/month-calendar/month-calendar.component.html","../../../projects/ng2-date-picker/src/lib/day-calendar/day-calendar.component.ts","../../../projects/ng2-date-picker/src/lib/day-calendar/day-calendar.component.html","../../../projects/ng2-date-picker/src/lib/time-select/time-select.component.ts","../../../projects/ng2-date-picker/src/lib/time-select/time-select.component.html","../../../projects/ng2-date-picker/src/lib/day-time-calendar/day-time-calendar.component.ts","../../../projects/ng2-date-picker/src/lib/day-time-calendar/day-time-calendar.component.html","../../../projects/ng2-date-picker/src/lib/date-picker/date-picker.component.ts","../../../projects/ng2-date-picker/src/lib/date-picker/date-picker.component.html","../../../projects/ng2-date-picker/src/lib/date-picker/date-picker.directive.ts","../../../projects/ng2-date-picker/src/lib/date-picker.module.ts","../../../projects/ng2-date-picker/src/nggondolas-ng2-date-picker.ts"],"sourcesContent":["export enum ECalendarMode {\n  Day,\n  DayTime,\n  Month,\n  Time\n}\n","export enum ECalendarValue {\n  Dayjs = 1,\n  DayjsArr,\n  String,\n  StringArr\n}\n","export enum SelectEvent {\n  INPUT = 'input',\n  SELECTION = 'selection'\n}\n","import dayjs from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport isoWeek from 'dayjs/plugin/isoWeek';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\ndayjs.extend(isBetween);\ndayjs.extend(isoWeek);\ndayjs.extend(customParseFormat);\n\nexport const dayjsRef = dayjs;\n","import {ECalendarValue} from '../../types/calendar-value-enum';\nimport {SingleCalendarValue} from '../../types/single-calendar-value';\nimport {ElementRef, Injectable} from '@angular/core';\n\nimport {Dayjs, UnitType} from 'dayjs';\nimport {CalendarValue} from '../../types/calendar-value';\nimport {IDate} from '../../models/date.model';\nimport {CalendarMode} from '../../types/calendar-mode';\nimport {DateValidator} from '../../types/validator.type';\nimport {ICalendarInternal} from '../../models/calendar.model';\nimport {dayjsRef} from '../../dayjs/dayjs.ref';\n\nexport interface DateLimits {\n  minDate?: SingleCalendarValue;\n  maxDate?: SingleCalendarValue;\n  minTime?: SingleCalendarValue;\n  maxTime?: SingleCalendarValue;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class UtilsService {\n  static debounce(func: Function, wait: number) {\n    let timeout;\n    return function () {\n      const context = this, args = arguments;\n      timeout = clearTimeout(timeout);\n      setTimeout(() => {\n        func.apply(context, args);\n      }, wait);\n    };\n  };\n\n  createArray(size: number): number[] {\n    return new Array(size).fill(1);\n  }\n\n  convertToDayjs(date: SingleCalendarValue, format: string): Dayjs {\n    if (!date) {\n      return null;\n    } else if (typeof date === 'string') {\n      return dayjsRef(date, format);\n    } else {\n      return dayjsRef(date.toDate());\n    }\n  }\n\n  isDateValid(date: string, format: string): boolean {\n    if (date === '') {\n      return true;\n    }\n\n    return dayjsRef(date, format, true).isValid();\n  }\n\n  // todo:: add unit test\n  getDefaultDisplayDate(current: Dayjs,\n                        selected: Dayjs[],\n                        allowMultiSelect: boolean,\n                        minDate: Dayjs): Dayjs {\n    if (current) {\n      return dayjsRef(current.toDate());\n    } else if (minDate && minDate.isAfter(dayjsRef())) {\n      return dayjsRef(minDate.toDate());\n    } else if (allowMultiSelect) {\n      if (selected && selected[selected.length]) {\n        return dayjsRef(selected[selected.length].toDate());\n      }\n    } else if (selected && selected[0]) {\n      return dayjsRef(selected[0].toDate());\n    }\n\n    return dayjsRef();\n  }\n\n  // todo:: add unit test\n  getInputType(value: CalendarValue, allowMultiSelect: boolean): ECalendarValue {\n    if (Array.isArray(value)) {\n      if (!value.length) {\n        return ECalendarValue.DayjsArr;\n      } else if (typeof value[0] === 'string') {\n        return ECalendarValue.StringArr;\n      } else if (dayjsRef.isDayjs(value[0])) {\n        return ECalendarValue.DayjsArr;\n      }\n    } else {\n      if (typeof value === 'string') {\n        return ECalendarValue.String;\n      } else if (dayjsRef.isDayjs(value)) {\n        return ECalendarValue.Dayjs;\n      }\n    }\n\n    return allowMultiSelect ? ECalendarValue.DayjsArr : ECalendarValue.Dayjs;\n  }\n\n  // todo:: add unit test\n  convertToDayjsArray(value: CalendarValue,\n                      config: { allowMultiSelect?: boolean, format?: string }): Dayjs[] {\n    let retVal: Dayjs[];\n    switch (this.getInputType(value, config.allowMultiSelect)) {\n      case (ECalendarValue.String):\n        retVal = value ? [dayjsRef(<string>value, config.format, true)] : [];\n        break;\n      case (ECalendarValue.StringArr):\n        retVal = (<string[]>value).map(v => v ? dayjsRef(v, config.format, true) : null).filter(Boolean);\n        break;\n      case (ECalendarValue.Dayjs):\n        retVal = value ? [dayjsRef((<Dayjs>value).toDate())] : [];\n        break;\n      case (ECalendarValue.DayjsArr):\n        retVal = (<Dayjs[]>value || []).map(v => dayjsRef(v.toDate()));\n        break;\n      default:\n        retVal = [];\n    }\n\n    return retVal;\n  }\n\n  // todo:: add unit test\n  convertFromDayjsArray(format: string,\n                        value: Dayjs[],\n                        convertTo: ECalendarValue): CalendarValue {\n    switch (convertTo) {\n      case (ECalendarValue.String):\n        return value[0] && value[0].format(format);\n      case (ECalendarValue.StringArr):\n        return value.filter(Boolean).map(v => v.format(format));\n      case (ECalendarValue.Dayjs):\n        return value[0] ? dayjsRef(value[0].toDate()) : value[0];\n      case (ECalendarValue.DayjsArr):\n        return value ? value.map(v => dayjsRef(v.toDate())) : value;\n      default:\n        return value;\n    }\n  }\n\n  convertToString(value: CalendarValue, format: string): string {\n    let tmpVal: string[];\n\n    if (typeof value === 'string') {\n      tmpVal = [value];\n    } else if (Array.isArray(value)) {\n      if (value.length) {\n        tmpVal = (<SingleCalendarValue[]>value).map((v) => {\n          return this.convertToDayjs(v, format).format(format);\n        });\n      } else {\n        tmpVal = <string[]>value;\n      }\n    } else if (dayjsRef.isDayjs(value)) {\n      tmpVal = [value.format(format)];\n    } else {\n      return '';\n    }\n\n    return tmpVal.filter(Boolean).join(' | ');\n  }\n\n  // todo:: add unit test\n  clearUndefined<T>(obj: T): T {\n    if (!obj) {\n      return obj;\n    }\n\n    Object.keys(obj).forEach((key) => (obj[key] === undefined) && delete obj[key]);\n    return obj;\n  }\n\n  updateSelected(isMultiple: boolean,\n                 currentlySelected: Dayjs[],\n                 date: IDate,\n                 granularity: UnitType = 'day'): Dayjs[] {\n    if (isMultiple) {\n      return !date.selected\n        ? currentlySelected.concat([date.date])\n        : currentlySelected.filter(d => !d.isSame(date.date, granularity));\n    } else {\n      return !date.selected ? [date.date] : [];\n    }\n  }\n\n  closestParent(element: HTMLElement, selector: string): HTMLElement {\n    if (!element) {\n      return undefined;\n    }\n    const match = <HTMLElement>element.querySelector(selector);\n    return match || this.closestParent(element.parentElement, selector);\n  }\n\n  onlyTime(m: Dayjs): Dayjs {\n    return m && dayjsRef.isDayjs(m) && dayjsRef(m.format('HH:mm:ss'), 'HH:mm:ss');\n  }\n\n  granularityFromType(calendarType: CalendarMode): UnitType {\n    switch (calendarType) {\n      case 'time':\n        return 'second';\n      case 'daytime':\n        return 'second';\n      default:\n        return calendarType;\n    }\n  }\n\n  createValidator({minDate, maxDate, minTime, maxTime}: DateLimits,\n                  format: string,\n                  calendarType: CalendarMode): DateValidator {\n    let isValid: boolean;\n    let value: Dayjs[];\n    const validators = [];\n    const granularity = this.granularityFromType(calendarType);\n\n    if (minDate) {\n      const md = this.convertToDayjs(minDate, format);\n      validators.push({\n        key: 'minDate',\n        isValid: () => {\n          const _isValid = value.every(val => val.isSameOrAfter(md, granularity));\n          isValid = isValid ? _isValid : false;\n          return _isValid;\n        }\n      });\n    }\n\n    if (maxDate) {\n      const md = this.convertToDayjs(maxDate, format);\n      validators.push({\n        key: 'maxDate',\n        isValid: () => {\n          const _isValid = value.every(val => val.isSameOrBefore(md, granularity));\n          isValid = isValid ? _isValid : false;\n          return _isValid;\n        }\n      });\n    }\n\n    if (minTime) {\n      const md = this.onlyTime(this.convertToDayjs(minTime, format));\n      validators.push({\n        key: 'minTime',\n        isValid: () => {\n          const _isValid = value.every(val => this.onlyTime(val).isSameOrAfter(md));\n          isValid = isValid ? _isValid : false;\n          return _isValid;\n        }\n      });\n    }\n\n    if (maxTime) {\n      const md = this.onlyTime(this.convertToDayjs(maxTime, format));\n      validators.push({\n        key: 'maxTime',\n        isValid: () => {\n          const _isValid = value.every(val => this.onlyTime(val).isSameOrBefore(md));\n          isValid = isValid ? _isValid : false;\n          return _isValid;\n        }\n      });\n    }\n\n    return (inputVal: CalendarValue) => {\n      isValid = true;\n\n      value = this.convertToDayjsArray(inputVal, {\n        format,\n        allowMultiSelect: true\n      }).filter(Boolean);\n\n      if (!value.every(val => val.isValid())) {\n        return {\n          format: {\n            given: inputVal\n          }\n        };\n      }\n\n      const errors = validators.reduce((map, err) => {\n        if (!err.isValid()) {\n          map[err.key] = {\n            given: value\n          };\n        }\n\n        return map;\n      }, {});\n\n      return !isValid ? errors : null;\n    };\n  }\n\n  datesStringToStringArray(value: string): string[] {\n    return (value || '').split('|').map(m => m.trim()).filter(Boolean);\n  }\n\n  getValidDayjsArray(value: string, format: string): Dayjs[] {\n    return this.datesStringToStringArray(value)\n      .filter(d => this.isDateValid(d, format))\n      .map(d => dayjsRef(d, format));\n  }\n\n  shouldShowCurrent(showGoToCurrent: boolean,\n                    mode: CalendarMode,\n                    min: Dayjs,\n                    max: Dayjs): boolean {\n    return showGoToCurrent &&\n      mode !== 'time' &&\n      this.isDateInRange(dayjsRef(), min, max);\n  }\n\n  isDateInRange(date: Dayjs, from: Dayjs, to: Dayjs): boolean {\n    if (!date) {\n      return false;\n    }\n\n    if (!from && !to) {\n      return true;\n    }\n\n    if (!from && to) {\n      return date.isSameOrBefore(to);\n    }\n\n    if (from && !to) {\n      return date.isSameOrAfter(from);\n    }\n\n    return date.isBetween(from, to, 'day', '[]');\n  }\n\n  convertPropsToDayjs(obj: { [key: string]: any }, format: string, props: string[]): void {\n    props.forEach((prop) => {\n      if (obj.hasOwnProperty(prop)) {\n        obj[prop] = this.convertToDayjs(obj[prop], format);\n      }\n    });\n  }\n\n  shouldResetCurrentView<T extends ICalendarInternal>(prevConf: T, currentConf: T): boolean {\n    if (prevConf && currentConf) {\n      if (!prevConf.min && currentConf.min) {\n        return true;\n      } else if (prevConf.min && currentConf.min && !prevConf.min.isSame(currentConf.min, 'd')) {\n        return true;\n      } else if (!prevConf.max && currentConf.max) {\n        return true;\n      } else if (prevConf.max && currentConf.max && !prevConf.max.isSame(currentConf.max, 'd')) {\n        return true;\n      }\n\n      return false;\n    }\n\n    return false;\n  }\n\n  getNativeElement(elem: HTMLElement | string | ElementRef): HTMLElement {\n    if (!elem) {\n      return null;\n    } else if (typeof elem === 'string') {\n      return document.querySelector(elem);\n    } else if (elem instanceof ElementRef) {\n      return elem.nativeElement;\n    } else {\n      return elem;\n    }\n  }\n}\n","import {Injectable} from '@angular/core';\n\nimport {WeekDays} from '../common/types/week-days.type';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IDay} from './day.model';\nimport {IDayCalendarConfig, IDayCalendarConfigInternal} from './day-calendar-config.model';\nimport {IMonthCalendarConfig} from '../month-calendar/month-calendar-config';\nimport {Dayjs} from 'dayjs';\nimport {dayjsRef} from '../common/dayjs/dayjs.ref';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DayCalendarService {\n  readonly DEFAULT_CONFIG: IDayCalendarConfig = {\n    showNearMonthDays: true,\n    showWeekNumbers: false,\n    firstDayOfWeek: 'su',\n    weekDayFormat: 'ddd',\n    format: 'DD-MM-YYYY',\n    allowMultiSelect: false,\n    monthFormat: 'MMM, YYYY',\n    enableMonthSelector: true,\n    dayBtnFormat: 'DD',\n    unSelectOnClick: true\n  };\n  private readonly DAYS = ['su', 'mo', 'tu', 'we', 'th', 'fr', 'sa'];\n\n  constructor(private utilsService: UtilsService) {\n  }\n\n  getConfig(config: IDayCalendarConfig): IDayCalendarConfigInternal {\n    const _config = {\n      ...this.DEFAULT_CONFIG,\n      ...this.utilsService.clearUndefined(config)\n    };\n\n    this.utilsService.convertPropsToDayjs(_config, _config.format, ['min', 'max']);\n\n    return _config as IDayCalendarConfigInternal;\n  }\n\n  generateDaysMap(firstDayOfWeek: WeekDays) {\n    const firstDayIndex = this.DAYS.indexOf(firstDayOfWeek);\n    const daysArr = this.DAYS.slice(firstDayIndex, 7).concat(this.DAYS.slice(0, firstDayIndex));\n    return daysArr.reduce((map, day, index) => {\n      map[day] = index;\n\n      return map;\n    }, <{[key: string]: number}>{});\n  }\n\n  generateMonthArray(config: IDayCalendarConfigInternal, month: Dayjs, selected: Dayjs[]): IDay[][] {\n    const parsedMonth = month.isValid() ? dayjsRef(month.toDate()) : dayjsRef();\n    let monthArray: IDay[][] = [];\n    const firstDayOfWeekIndex = this.DAYS.indexOf(config.firstDayOfWeek);\n    let firstDayOfBoard = parsedMonth.startOf('month');\n\n    while (firstDayOfBoard.day() !== firstDayOfWeekIndex) {\n      firstDayOfBoard = firstDayOfBoard.subtract(1, 'day');\n    }\n\n    let current = dayjsRef(firstDayOfBoard.toDate());\n    const prevMonth = parsedMonth.subtract(1, 'month');\n    const nextMonth = parsedMonth.add(1, 'month');\n    const today = dayjsRef();\n\n    const daysOfCalendar: IDay[] = this.utilsService.createArray(42)\n      .reduce((array: IDay[]) => {\n        array.push({\n          date: dayjsRef(current.toDate()),\n          selected: !!selected.find(selectedDay => current.isSame(selectedDay, 'day')),\n          currentMonth: current.isSame(parsedMonth, 'month'),\n          prevMonth: current.isSame(prevMonth, 'month'),\n          nextMonth: current.isSame(nextMonth, 'month'),\n          currentDay: current.isSame(today, 'day'),\n          disabled: this.isDateDisabled(current, config)\n        });\n        current = current.add(1, 'day');\n\n        return array;\n      }, []);\n\n    daysOfCalendar.forEach((day, index) => {\n      const weekIndex = Math.floor(index / 7);\n\n      if (!monthArray[weekIndex]) {\n        monthArray.push([]);\n      }\n\n      monthArray[weekIndex].push(day);\n    });\n\n    if (!config.showNearMonthDays) {\n      monthArray = this.removeNearMonthWeeks(parsedMonth, monthArray);\n    }\n\n    return monthArray;\n  }\n\n  generateWeekdays(firstDayOfWeek: WeekDays): Dayjs[] {\n    const weekdayNames: {[key: string]: Dayjs} = {\n      su: dayjsRef().day(0),\n      mo: dayjsRef().day(1),\n      tu: dayjsRef().day(2),\n      we: dayjsRef().day(3),\n      th: dayjsRef().day(4),\n      fr: dayjsRef().day(5),\n      sa: dayjsRef().day(6)\n    };\n    const weekdays: Dayjs[] = [];\n    const daysMap = this.generateDaysMap(firstDayOfWeek);\n\n    for (const dayKey in daysMap) {\n      if (daysMap.hasOwnProperty(dayKey)) {\n        weekdays[daysMap[dayKey]] = weekdayNames[dayKey];\n      }\n    }\n\n    return weekdays;\n  }\n\n  isDateDisabled(date: Dayjs, config: IDayCalendarConfigInternal): boolean {\n    if (config.isDayDisabledCallback) {\n      return config.isDayDisabledCallback(date);\n    }\n\n    if (config.min && date.isBefore(config.min, 'day')) {\n      return true;\n    }\n\n    return !!(config.max && date.isAfter(config.max, 'day'));\n  }\n\n  // todo:: add unit tests\n  getHeaderLabel(config: IDayCalendarConfigInternal, month: Dayjs): string {\n    if (config.monthFormatter) {\n      return config.monthFormatter(month);\n    }\n\n    return month.format(config.monthFormat);\n  }\n\n  // todo:: add unit tests\n  shouldShowLeft(min: Dayjs, currentMonthView: Dayjs): boolean {\n    return min ? min.isBefore(currentMonthView, 'month') : true;\n  }\n\n  // todo:: add unit tests\n  shouldShowRight(max: Dayjs, currentMonthView: Dayjs): boolean {\n    return max ? max.isAfter(currentMonthView, 'month') : true;\n  }\n\n  generateDaysIndexMap(firstDayOfWeek: WeekDays) {\n    const firstDayIndex = this.DAYS.indexOf(firstDayOfWeek);\n    const daysArr = this.DAYS.slice(firstDayIndex, 7).concat(this.DAYS.slice(0, firstDayIndex));\n    return daysArr.reduce((map, day, index) => {\n      map[index] = day;\n\n      return map;\n    }, <{[key: number]: string}>{});\n  }\n\n  getMonthCalendarConfig(componentConfig: IDayCalendarConfigInternal): IMonthCalendarConfig {\n    return this.utilsService.clearUndefined({\n      min: componentConfig.min,\n      max: componentConfig.max,\n      format: componentConfig.format,\n      isNavHeaderBtnClickable: true,\n      allowMultiSelect: false,\n      yearFormat: componentConfig.yearFormat,\n      yearFormatter: componentConfig.yearFormatter,\n      monthBtnFormat: componentConfig.monthBtnFormat,\n      monthBtnFormatter: componentConfig.monthBtnFormatter,\n      monthBtnCssClassCallback: componentConfig.monthBtnCssClassCallback,\n      isMonthDisabledCallback: componentConfig.isMonthDisabledCallback,\n      multipleYearsNavigateBy: componentConfig.multipleYearsNavigateBy,\n      showMultipleYearsNavigation: componentConfig.showMultipleYearsNavigation,\n      showGoToCurrent: componentConfig.showGoToCurrent,\n      numOfMonthRows: componentConfig.numOfMonthRows\n    });\n  }\n\n  getDayBtnText(config: IDayCalendarConfigInternal, day: Dayjs): string {\n    if (config.dayBtnFormatter) {\n      return config.dayBtnFormatter(day);\n    }\n\n    return day.format(config.dayBtnFormat);\n  }\n\n  getDayBtnCssClass(config: IDayCalendarConfigInternal, day: Dayjs): string {\n    if (config.dayBtnCssClassCallback) {\n      return config.dayBtnCssClassCallback(day);\n    }\n\n    return '';\n  }\n\n  private removeNearMonthWeeks(currentMonth: Dayjs, monthArray: IDay[][]): IDay[][] {\n    if (monthArray[monthArray.length - 1].find((day) => day.date.isSame(currentMonth, 'month'))) {\n      return monthArray;\n    } else {\n      return monthArray.slice(0, -1);\n    }\n  }\n}\n","import {Injectable} from '@angular/core';\n\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {ITimeSelectConfig, ITimeSelectConfigInternal} from './time-select-config.model';\nimport {Dayjs} from 'dayjs';\nimport {dayjsRef} from '../common/dayjs/dayjs.ref';\n\nexport type TimeUnit = 'hour' | 'minute' | 'second';\nexport const FIRST_PM_HOUR = 12;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TimeSelectService {\n  readonly DEFAULT_CONFIG: ITimeSelectConfigInternal = {\n    hours12Format: 'hh',\n    hours24Format: 'HH',\n    meridiemFormat: 'A',\n    minutesFormat: 'mm',\n    minutesInterval: 1,\n    secondsFormat: 'ss',\n    secondsInterval: 1,\n    showSeconds: false,\n    showTwentyFourHours: false,\n    timeSeparator: ':',\n  };\n\n  constructor(private readonly utilsService: UtilsService) {\n  }\n\n  getConfig(config: ITimeSelectConfig): ITimeSelectConfigInternal {\n    const timeConfigs = {\n      maxTime: this.utilsService.onlyTime(config && config.maxTime),\n      minTime: this.utilsService.onlyTime(config && config.minTime)\n    };\n\n    return <ITimeSelectConfigInternal>{\n      ...this.DEFAULT_CONFIG,\n      ...this.utilsService.clearUndefined(config),\n      ...timeConfigs\n    };\n  }\n\n  getTimeFormat(config: ITimeSelectConfigInternal): string {\n    return (config.showTwentyFourHours ? config.hours24Format : config.hours12Format)\n      + config.timeSeparator + config.minutesFormat\n      + (config.showSeconds ? (config.timeSeparator + config.secondsFormat) : '')\n      + (config.showTwentyFourHours ? '' : ' ' + config.meridiemFormat);\n  }\n\n  getHours(config: ITimeSelectConfigInternal, t: Dayjs | null): string {\n    const time = t || dayjsRef();\n    return time && time.format(config.showTwentyFourHours ? config.hours24Format : config.hours12Format);\n  }\n\n  getMinutes(config: ITimeSelectConfigInternal, t: Dayjs | null): string {\n    const time = t || dayjsRef();\n    return time && time.format(config.minutesFormat);\n  }\n\n  getSeconds(config: ITimeSelectConfigInternal, t: Dayjs | null): string {\n    const time = t || dayjsRef();\n    return time && time.format(config.secondsFormat);\n  }\n\n  getMeridiem(config: ITimeSelectConfigInternal, time: Dayjs): string {\n    return time && time.format(config.meridiemFormat);\n  }\n\n  decrease(config: ITimeSelectConfigInternal, time: Dayjs, unit: TimeUnit): Dayjs {\n    let amount: number = 1;\n    switch (unit) {\n      case 'minute':\n        amount = config.minutesInterval;\n        break;\n      case 'second':\n        amount = config.secondsInterval;\n        break;\n    }\n    return time.subtract(amount, unit);\n  }\n\n  increase(config: ITimeSelectConfigInternal, time: Dayjs, unit: TimeUnit): Dayjs {\n    let amount: number = 1;\n    switch (unit) {\n      case 'minute':\n        amount = config.minutesInterval;\n        break;\n      case 'second':\n        amount = config.secondsInterval;\n        break;\n    }\n    return time.add(amount, unit);\n  }\n\n  toggleMeridiem(time: Dayjs): Dayjs {\n    if (time.hour() < FIRST_PM_HOUR) {\n      return time.add(12, 'hour');\n    } else {\n      return time.subtract(12, 'hour');\n    }\n  }\n\n  shouldShowDecrease(config: ITimeSelectConfigInternal, time: Dayjs, unit: TimeUnit): boolean {\n    if (!config.min && !config.minTime) {\n      return true;\n    }\n    const newTime = this.decrease(config, time, unit);\n\n    return (!config.min || config.min.isSameOrBefore(newTime))\n      && (!config.minTime || config.minTime.isSameOrBefore(this.utilsService.onlyTime(newTime)));\n  }\n\n  shouldShowIncrease(config: ITimeSelectConfigInternal, time: Dayjs, unit: TimeUnit): boolean {\n    if (!config.max && !config.maxTime) {\n      return true;\n    }\n    const newTime = this.increase(config, time, unit);\n\n    return (!config.max || config.max.isSameOrAfter(newTime))\n      && (!config.maxTime || config.maxTime.isSameOrAfter(this.utilsService.onlyTime(newTime)));\n  }\n\n  shouldShowToggleMeridiem(config: ITimeSelectConfigInternal, time: Dayjs): boolean {\n    if (!config.min && !config.max && !config.minTime && !config.maxTime) {\n      return true;\n    }\n    const newTime = this.toggleMeridiem(time);\n    return (!config.max || config.max.isSameOrAfter(newTime))\n      && (!config.min || config.min.isSameOrBefore(newTime))\n      && (!config.maxTime || config.maxTime.isSameOrAfter(this.utilsService.onlyTime(newTime)))\n      && (!config.minTime || config.minTime.isSameOrBefore(this.utilsService.onlyTime(newTime)));\n  }\n}\n","import {Injectable} from '@angular/core';\n\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {DayCalendarService} from '../day-calendar/day-calendar.service';\nimport {TimeSelectService} from '../time-select/time-select.service';\nimport {IDayTimeCalendarConfig, IDayTimeCalendarConfigInternal} from './day-time-calendar-config.model';\nimport {dayjsRef} from '../common/dayjs/dayjs.ref';\nimport {Dayjs} from 'dayjs';\nimport {IDayCalendarConfigInternal} from '../day-calendar/day-calendar-config.model';\n\nconst DAY_FORMAT = 'YYYYMMDD';\nconst TIME_FORMAT = 'HH:mm:ss';\nconst COMBINED_FORMAT = DAY_FORMAT + TIME_FORMAT;\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DayTimeCalendarService {\n  readonly DEFAULT_CONFIG: IDayTimeCalendarConfig = {};\n\n  constructor(private utilsService: UtilsService,\n              private dayCalendarService: DayCalendarService,\n              private timeSelectService: TimeSelectService) {\n  }\n\n  getConfig(config: IDayTimeCalendarConfig): IDayTimeCalendarConfigInternal {\n    const _config =  {\n      ...this.DEFAULT_CONFIG,\n      ...this.timeSelectService.getConfig(config),\n      ...this.dayCalendarService.getConfig(config)\n    };\n\n    this.utilsService.convertPropsToDayjs(_config, _config.format, ['min', 'max']);\n\n    return _config as IDayTimeCalendarConfigInternal;\n  }\n\n  updateDay(current: Dayjs, day: Dayjs, config: IDayCalendarConfigInternal): Dayjs {\n    const time = current ? current : dayjsRef();\n    let updated = dayjsRef(day.format(DAY_FORMAT) + time.format(TIME_FORMAT), COMBINED_FORMAT);\n\n    if (config.min) {\n      const min = config.min;\n      updated = min.isAfter(updated) ? min : updated;\n    }\n\n    if (config.max) {\n      const max = config.max;\n      updated = max.isBefore(updated) ? max : updated;\n    }\n\n    return updated;\n  }\n\n  updateTime(current: Dayjs, time: Dayjs): Dayjs {\n    const day = current ? current : dayjsRef();\n\n    return dayjsRef(day.format(DAY_FORMAT) + time.format(TIME_FORMAT), COMBINED_FORMAT);\n  }\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {IDatePickerConfig, IDatePickerConfigInternal} from './date-picker-config.model';\n\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IDayCalendarConfig} from '../day-calendar/day-calendar-config.model';\nimport {TimeSelectService} from '../time-select/time-select.service';\nimport {DayTimeCalendarService} from '../day-time-calendar/day-time-calendar.service';\nimport {ITimeSelectConfig} from '../time-select/time-select-config.model';\nimport {CalendarMode} from '../common/types/calendar-mode';\nimport {Dayjs} from 'dayjs';\nimport {IDayTimeCalendarConfig} from '../day-time-calendar/day-time-calendar-config.model';\nimport {ConnectionPositionPair, ScrollStrategyOptions, ScrollStrategy} from '@angular/cdk/overlay';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DatePickerService {\n  readonly onPickerClosed: EventEmitter<null> = new EventEmitter();\n  private defaultConfig: IDatePickerConfigInternal = {\n    closeOnSelect: true,\n    closeOnSelectDelay: 100,\n    closeOnEnter: true,\n    format: 'DD-MM-YYYY',\n    openOnFocus: true,\n    openOnClick: true,\n    onOpenDelay: 0,\n    disableKeypress: false,\n    showNearMonthDays: true,\n    showWeekNumbers: false,\n    enableMonthSelector: true,\n    showGoToCurrent: true,\n    hideOnOutsideClick: true,\n  };\n\n  constructor(private readonly utilsService: UtilsService,\n              private readonly scrollOptions: ScrollStrategyOptions,\n              private readonly timeSelectService: TimeSelectService,\n              private readonly daytimeCalendarService: DayTimeCalendarService) {\n  }\n\n  // todo:: add unit tests\n  getConfig(config: IDatePickerConfig, mode: CalendarMode = 'daytime'): IDatePickerConfigInternal {\n    const _config = <IDatePickerConfigInternal>{\n      ...this.defaultConfig,\n      format: DatePickerService.getDefaultFormatByMode(mode),\n      ...this.utilsService.clearUndefined(config)\n    };\n\n    this.utilsService.convertPropsToDayjs(_config, _config.format, ['min', 'max']);\n\n    if (config && config.allowMultiSelect && config.closeOnSelect === undefined) {\n      _config.closeOnSelect = false;\n    }\n\n    return _config;\n  }\n\n  getDayConfigService(pickerConfig: IDatePickerConfig): IDayCalendarConfig {\n    return {\n      min: pickerConfig.min,\n      max: pickerConfig.max,\n      isDayDisabledCallback: pickerConfig.isDayDisabledCallback,\n      weekDayFormat: pickerConfig.weekDayFormat,\n      weekDayFormatter: pickerConfig.weekDayFormatter,\n      showNearMonthDays: pickerConfig.showNearMonthDays,\n      showWeekNumbers: pickerConfig.showWeekNumbers,\n      firstDayOfWeek: pickerConfig.firstDayOfWeek,\n      format: pickerConfig.format,\n      allowMultiSelect: pickerConfig.allowMultiSelect,\n      monthFormat: pickerConfig.monthFormat,\n      monthFormatter: pickerConfig.monthFormatter,\n      enableMonthSelector: pickerConfig.enableMonthSelector,\n      yearFormat: pickerConfig.yearFormat,\n      yearFormatter: pickerConfig.yearFormatter,\n      dayBtnFormat: pickerConfig.dayBtnFormat,\n      dayBtnFormatter: pickerConfig.dayBtnFormatter,\n      dayBtnCssClassCallback: pickerConfig.dayBtnCssClassCallback,\n      monthBtnFormat: pickerConfig.monthBtnFormat,\n      monthBtnFormatter: pickerConfig.monthBtnFormatter,\n      monthBtnCssClassCallback: pickerConfig.monthBtnCssClassCallback,\n      isMonthDisabledCallback: pickerConfig.isMonthDisabledCallback,\n      multipleYearsNavigateBy: pickerConfig.multipleYearsNavigateBy,\n      showMultipleYearsNavigation: pickerConfig.showMultipleYearsNavigation,\n      returnedValueType: pickerConfig.returnedValueType,\n      showGoToCurrent: pickerConfig.showGoToCurrent,\n      unSelectOnClick: pickerConfig.unSelectOnClick,\n      numOfMonthRows: pickerConfig.numOfMonthRows\n    };\n  }\n\n  getDayTimeConfig(pickerConfig: IDatePickerConfig): IDayTimeCalendarConfig {\n    return this.daytimeCalendarService.getConfig(pickerConfig);\n  }\n\n  getTimeConfig(pickerConfig: IDatePickerConfig): ITimeSelectConfig {\n    return this.timeSelectService.getConfig(pickerConfig);\n  }\n\n  pickerClosed() {\n    this.onPickerClosed.emit();\n  }\n\n  // todo:: add unit tests\n  isValidInputDateValue(value: string, config: IDatePickerConfig): boolean {\n    value = value ? value : '';\n    const datesStrArr: string[] = this.utilsService.datesStringToStringArray(value);\n\n    return datesStrArr.every(date => this.utilsService.isDateValid(date, config.format));\n  }\n\n  // todo:: add unit tests\n  convertInputValueToDayjsArray(value: string, config: IDatePickerConfig): Dayjs[] {\n    value = value ? value : '';\n    const datesStrArr: string[] = this.utilsService.datesStringToStringArray(value);\n\n    return this.utilsService.convertToDayjsArray(datesStrArr, config);\n  }\n\n  getOverlayPosition({drops, opens}: IDatePickerConfig):  ConnectionPositionPair[] | undefined {\n    if (!drops && !opens) {\n      return undefined;\n    }\n\n    return [{\n      originX: opens ? opens === 'left' ? 'start' : 'end' : 'start',\n      originY:  drops ? drops === 'up' ? 'top' : 'bottom' : 'bottom',\n      overlayX: opens ? opens === 'left' ? 'start' : 'end' : 'start',\n      overlayY: drops ? drops === 'up' ? 'bottom' : 'top' : 'top',\n    }];\n  }\n\n  getScrollStrategy(scrollStrategy: ScrollStrategy): ScrollStrategy {\n    if (scrollStrategy) {\n      return scrollStrategy;\n    }\n\n    return this.scrollOptions.noop(); // close, blocking, reposition\n  }\n\n  private static getDefaultFormatByMode(mode: CalendarMode): string {\n    switch (mode) {\n      case 'day':\n        return 'DD-MM-YYYY';\n      case 'daytime':\n        return 'DD-MM-YYYY HH:mm:ss';\n      case 'time':\n        return 'HH:mm:ss';\n      case 'month':\n        return 'MMM, YYYY';\n    }\n  }\n}\n","import {Injectable} from '@angular/core';\n\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IMonth} from './month.model';\nimport {IMonthCalendarConfig, IMonthCalendarConfigInternal} from './month-calendar-config';\nimport {Dayjs} from 'dayjs';\nimport {dayjsRef} from '../common/dayjs/dayjs.ref';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MonthCalendarService {\n  readonly DEFAULT_CONFIG: IMonthCalendarConfigInternal = {\n    allowMultiSelect: false,\n    yearFormat: 'YYYY',\n    format: 'MM-YYYY',\n    isNavHeaderBtnClickable: false,\n    monthBtnFormat: 'MMM',\n    multipleYearsNavigateBy: 10,\n    showMultipleYearsNavigation: false,\n    unSelectOnClick: true,\n    numOfMonthRows: 3\n  };\n\n  constructor(private utilsService: UtilsService) {\n  }\n\n  getConfig(config: IMonthCalendarConfig): IMonthCalendarConfigInternal {\n    const _config = <IMonthCalendarConfigInternal>{\n      ...this.DEFAULT_CONFIG,\n      ...this.utilsService.clearUndefined(config)\n    };\n\n    MonthCalendarService.validateConfig(_config);\n    this.utilsService.convertPropsToDayjs(_config, _config.format, ['min', 'max']);\n\n    return _config;\n  }\n\n  generateYear(config: IMonthCalendarConfig, year: Dayjs, selected: Dayjs[] = null): IMonth[][] {\n    let index = year.startOf('year');\n\n    return this.utilsService.createArray(config.numOfMonthRows).map(() => {\n      return this.utilsService.createArray(12 / config.numOfMonthRows).map(() => {\n        const date = dayjsRef(index);\n        const month = {\n          date,\n          selected: !!selected.find(s => index.isSame(s, 'month')),\n          currentMonth: index.isSame(dayjsRef(), 'month'),\n          disabled: this.isMonthDisabled(date, config),\n          text: this.getMonthBtnText(config, date)\n        };\n\n        index = index.add(1, 'month');\n\n        return month;\n      });\n    });\n  }\n\n  isMonthDisabled(date: Dayjs, config: IMonthCalendarConfig) {\n    if (config.isMonthDisabledCallback) {\n      return config.isMonthDisabledCallback(date);\n    }\n\n    if (config.min && date.isBefore(config.min, 'month')) {\n      return true;\n    }\n\n    return !!(config.max && date.isAfter(config.max, 'month'));\n  }\n\n  shouldShowLeft(min: Dayjs, currentMonthView: Dayjs): boolean {\n    return min ? min.isBefore(currentMonthView, 'year') : true;\n  }\n\n  shouldShowRight(max: Dayjs, currentMonthView: Dayjs): boolean {\n    return max ? max.isAfter(currentMonthView, 'year') : true;\n  }\n\n  getHeaderLabel(config: IMonthCalendarConfig, year: Dayjs): string {\n    if (config.yearFormatter) {\n      return config.yearFormatter(year);\n    }\n\n    return year.format(config.yearFormat);\n  }\n\n  getMonthBtnText(config: IMonthCalendarConfig, month: Dayjs): string {\n    if (config.monthBtnFormatter) {\n      return config.monthBtnFormatter(month);\n    }\n\n    return month.format(config.monthBtnFormat);\n  }\n\n  getMonthBtnCssClass(config: IMonthCalendarConfig, month: Dayjs): string {\n    if (config.monthBtnCssClassCallback) {\n      return config.monthBtnCssClassCallback(month);\n    }\n\n    return '';\n  }\n\n  private static validateConfig(config: IMonthCalendarConfigInternal): void {\n    if (config.numOfMonthRows < 1 || config.numOfMonthRows > 12 || !Number.isInteger(12 / config.numOfMonthRows)) {\n      throw new Error('numOfMonthRows has to be between 1 - 12 and divide 12 to integer');\n    }\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  HostBinding,\n  Input,\n  Output,\n  ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n  selector: 'dp-calendar-nav',\n  templateUrl: './calendar-nav.component.html',\n  styleUrls: ['./calendar-nav.component.less'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CalendarNavComponent {\n  @Input() label: string;\n  @Input() isLabelClickable: boolean = false;\n  @Input() showLeftNav: boolean = true;\n  @Input() showLeftSecondaryNav: boolean = false;\n  @Input() showRightNav: boolean = true;\n  @Input() showRightSecondaryNav: boolean = false;\n  @Input() leftNavDisabled: boolean = false;\n  @Input() leftSecondaryNavDisabled: boolean = false;\n  @Input() rightNavDisabled: boolean = false;\n  @Input() rightSecondaryNavDisabled: boolean = false;\n  @Input() showGoToCurrent: boolean = true;\n  @HostBinding('class') @Input() theme: string;\n\n  @Output() onLeftNav: EventEmitter<null> = new EventEmitter();\n  @Output() onLeftSecondaryNav: EventEmitter<null> = new EventEmitter();\n  @Output() onRightNav: EventEmitter<null> = new EventEmitter();\n  @Output() onRightSecondaryNav: EventEmitter<null> = new EventEmitter();\n  @Output() onLabelClick: EventEmitter<null> = new EventEmitter();\n  @Output() onGoToCurrent: EventEmitter<null> = new EventEmitter();\n\n  leftNavClicked() {\n    this.onLeftNav.emit();\n  }\n\n  leftSecondaryNavClicked() {\n    this.onLeftSecondaryNav.emit();\n  }\n\n  rightNavClicked() {\n    this.onRightNav.emit();\n  }\n\n  rightSecondaryNavClicked() {\n    this.onRightSecondaryNav.emit();\n  }\n\n  labelClicked() {\n    this.onLabelClick.emit();\n  }\n}\n","<div class=\"dp-calendar-nav-container\" dir=\"ltr\">\n  <div class=\"dp-nav-header\">\n    <span [attr.data-hidden]=\"isLabelClickable\"\n          [hidden]=\"isLabelClickable\"\n          [innerText]=\"label\">\n    </span>\n    <button (click)=\"labelClicked()\"\n            [attr.data-hidden]=\"!isLabelClickable\"\n            [hidden]=\"!isLabelClickable\"\n            [innerText]=\"label\"\n            class=\"dp-nav-header-btn\"\n            type=\"button\">\n    </button>\n  </div>\n\n  <div class=\"dp-nav-btns-container\">\n    <div class=\"dp-calendar-nav-container-left\">\n      <button (click)=\"leftSecondaryNavClicked()\"\n              *ngIf=\"showLeftSecondaryNav\"\n              [disabled]=\"leftSecondaryNavDisabled\"\n              class=\"dp-calendar-secondary-nav-left\"\n              type=\"button\">\n      </button>\n      <button (click)=\"leftNavClicked()\"\n              [attr.data-hidden]=\"!showLeftNav\"\n              [disabled]=\"leftNavDisabled\"\n              [hidden]=\"!showLeftNav\"\n              class=\"dp-calendar-nav-left\"\n              type=\"button\">\n      </button>\n    </div>\n    <button (click)=\"onGoToCurrent.emit()\"\n            *ngIf=\"showGoToCurrent\"\n            class=\"dp-current-location-btn\"\n            type=\"button\">\n    </button>\n    <div class=\"dp-calendar-nav-container-right\">\n      <button (click)=\"rightNavClicked()\"\n              [attr.data-hidden]=\"!showRightNav\"\n              [disabled]=\"rightNavDisabled\"\n              [hidden]=\"!showRightNav\"\n              class=\"dp-calendar-nav-right\"\n              type=\"button\">\n      </button>\n      <button (click)=\"rightSecondaryNavClicked()\"\n              *ngIf=\"showRightSecondaryNav\"\n              [disabled]=\"rightSecondaryNavDisabled\"\n              class=\"dp-calendar-secondary-nav-right\"\n              type=\"button\">\n      </button>\n    </div>\n  </div>\n</div>\n","import {ECalendarValue} from '../common/types/calendar-value-enum';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport {IMonth} from './month.model';\nimport {MonthCalendarService} from './month-calendar.service';\n\nimport {IMonthCalendarConfig, IMonthCalendarConfigInternal} from './month-calendar-config';\nimport {\n  ControlValueAccessor,\n  UntypedFormControl,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator\n} from '@angular/forms';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {DateValidator} from '../common/types/validator.type';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {INavEvent} from '../common/models/navigation-event.model';\nimport {Dayjs} from 'dayjs';\nimport {dayjsRef} from '../common/dayjs/dayjs.ref';\n\n@Component({\n  selector: 'dp-month-calendar',\n  templateUrl: 'month-calendar.component.html',\n  styleUrls: ['month-calendar.component.less'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    MonthCalendarService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => MonthCalendarComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => MonthCalendarComponent),\n      multi: true\n    }\n  ]\n})\nexport class MonthCalendarComponent implements OnInit, OnChanges, ControlValueAccessor, Validator {\n\n  @Input() config: IMonthCalendarConfig;\n  @Input() displayDate: Dayjs | string;\n  @Input() minDate: Dayjs;\n  @Input() maxDate: Dayjs;\n  @HostBinding('class') @Input() theme: string;\n  @Output() onSelect: EventEmitter<IMonth> = new EventEmitter();\n  @Output() onNavHeaderBtnClick: EventEmitter<null> = new EventEmitter();\n  @Output() onGoToCurrent: EventEmitter<void> = new EventEmitter();\n  @Output() onLeftNav: EventEmitter<INavEvent> = new EventEmitter();\n  @Output() onRightNav: EventEmitter<INavEvent> = new EventEmitter();\n  @Output() onLeftSecondaryNav: EventEmitter<INavEvent> = new EventEmitter();\n  @Output() onRightSecondaryNav: EventEmitter<INavEvent> = new EventEmitter();\n  isInited: boolean = false;\n  componentConfig: IMonthCalendarConfigInternal;\n  yearMonths: IMonth[][];\n  inputValue: CalendarValue;\n  inputValueType: ECalendarValue;\n  validateFn: DateValidator;\n  _shouldShowCurrent: boolean = true;\n  navLabel: string;\n  showLeftNav: boolean;\n  showRightNav: boolean;\n  showSecondaryLeftNav: boolean;\n  showSecondaryRightNav: boolean;\n  api = {\n    toggleCalendar: this.toggleCalendarMode.bind(this),\n    moveCalendarTo: this.moveCalendarTo.bind(this)\n  };\n\n  constructor(public readonly monthCalendarService: MonthCalendarService,\n              public readonly utilsService: UtilsService,\n              public readonly cd: ChangeDetectorRef) {\n  }\n\n  _selected: Dayjs[];\n\n  get selected(): Dayjs[] {\n    return this._selected;\n  }\n\n  set selected(selected: Dayjs[]) {\n    this._selected = selected;\n    this.onChangeCallback(this.processOnChangeCallback(selected));\n  }\n\n  _currentDateView: Dayjs;\n\n  get currentDateView(): Dayjs {\n    return this._currentDateView;\n  }\n\n  set currentDateView(current: Dayjs) {\n    this._currentDateView = dayjsRef(current.toDate());\n    this.yearMonths = this.monthCalendarService\n      .generateYear(this.componentConfig, this._currentDateView, this.selected);\n    this.navLabel = this.monthCalendarService.getHeaderLabel(this.componentConfig, this.currentDateView);\n    this.showLeftNav = this.monthCalendarService.shouldShowLeft(this.componentConfig.min, this._currentDateView);\n    this.showRightNav = this.monthCalendarService.shouldShowRight(this.componentConfig.max, this.currentDateView);\n    this.showSecondaryLeftNav = this.componentConfig.showMultipleYearsNavigation && this.showLeftNav;\n    this.showSecondaryRightNav = this.componentConfig.showMultipleYearsNavigation && this.showRightNav;\n  }\n\n  ngOnInit(): void {\n    this.isInited = true;\n    this.init();\n    this.initValidators();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.isInited) {\n      const {minDate, maxDate, config} = changes;\n\n      this.handleConfigChange(config);\n      this.init();\n\n      if (minDate || maxDate) {\n        this.initValidators();\n      }\n      this.cd.markForCheck()\n    }\n  }\n\n  init(): void {\n    this.componentConfig = this.monthCalendarService.getConfig(this.config);\n    this.selected = this.selected || [];\n    this.currentDateView = (this.displayDate as Dayjs) ?? this.utilsService\n      .getDefaultDisplayDate(\n        this.currentDateView,\n        this.selected,\n        this.componentConfig.allowMultiSelect,\n        this.componentConfig.min\n      );\n    this.inputValueType = this.utilsService.getInputType(this.inputValue, this.componentConfig.allowMultiSelect);\n    this._shouldShowCurrent = this.shouldShowCurrent();\n  }\n\n  writeValue(value: CalendarValue): void {\n    this.inputValue = value;\n\n    if (value) {\n      this.selected = this.utilsService\n        .convertToDayjsArray(value, this.componentConfig);\n      this.yearMonths = this.monthCalendarService\n        .generateYear(this.componentConfig, this.currentDateView, this.selected);\n      this.inputValueType = this.utilsService.getInputType(this.inputValue, this.componentConfig.allowMultiSelect);\n    } else {\n      this.selected = [];\n      this.yearMonths = this.monthCalendarService\n        .generateYear(this.componentConfig, this.currentDateView, this.selected);\n    }\n\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  onChangeCallback(_: any): void {\n  }\n\n  registerOnTouched(fn: any): void {\n  }\n\n  validate(formControl: UntypedFormControl): ValidationErrors | any {\n    if (this.minDate || this.maxDate) {\n      return this.validateFn(formControl.value);\n    } else {\n      return () => null;\n    }\n  }\n\n  processOnChangeCallback(value: Dayjs[]): CalendarValue {\n    return this.utilsService.convertFromDayjsArray(\n      this.componentConfig.format,\n      value,\n      this.componentConfig.returnedValueType || this.inputValueType\n    );\n  }\n\n  initValidators(): void {\n    this.validateFn = this.validateFn = this.utilsService.createValidator(\n      {minDate: this.minDate, maxDate: this.maxDate},\n      this.componentConfig.format,\n      'month'\n    );\n\n    this.onChangeCallback(this.processOnChangeCallback(this.selected));\n  }\n\n  monthClicked(month: IMonth): void {\n    if (month.selected && !this.componentConfig.unSelectOnClick) {\n      return;\n    }\n\n    this.selected = this.utilsService\n      .updateSelected(this.componentConfig.allowMultiSelect, this.selected, month, 'month');\n    this.yearMonths = this.monthCalendarService\n      .generateYear(this.componentConfig, this.currentDateView, this.selected);\n    this.onSelect.emit(month);\n  }\n\n  onLeftNavClick() {\n    const from = dayjsRef(this.currentDateView.toDate());\n    this.currentDateView = this.currentDateView.subtract(1, 'year');\n    const to = dayjsRef(this.currentDateView.toDate());\n    this.yearMonths = this.monthCalendarService.generateYear(this.componentConfig, this.currentDateView, this.selected);\n    this.onLeftNav.emit({from, to});\n  }\n\n  onLeftSecondaryNavClick(): void {\n    let navigateBy = this.componentConfig.multipleYearsNavigateBy;\n    const isOutsideRange = this.componentConfig.min &&\n      this.currentDateView.year() - this.componentConfig.min.year() < navigateBy;\n\n    if (isOutsideRange) {\n      navigateBy = this.currentDateView.year() - this.componentConfig.min.year();\n    }\n\n    const from = dayjsRef(this.currentDateView.toDate());\n    this.currentDateView = this.currentDateView.subtract(navigateBy, 'year');\n    const to = dayjsRef(this.currentDateView.toDate());\n    this.onLeftSecondaryNav.emit({from, to});\n  }\n\n  onRightNavClick(): void {\n    const from = dayjsRef(this.currentDateView.toDate());\n    this.currentDateView = this.currentDateView.add(1, 'year');\n    const to = dayjsRef(this.currentDateView.toDate());\n    this.onRightNav.emit({from, to});\n  }\n\n  onRightSecondaryNavClick(): void {\n    let navigateBy = this.componentConfig.multipleYearsNavigateBy;\n    const isOutsideRange = this.componentConfig.max &&\n      this.componentConfig.max.year() - this.currentDateView.year() < navigateBy;\n\n    if (isOutsideRange) {\n      navigateBy = this.componentConfig.max.year() - this.currentDateView.year();\n    }\n\n    const from = dayjsRef(this.currentDateView.toDate());\n    this.currentDateView = this.currentDateView.add(navigateBy, 'year');\n    const to = dayjsRef(this.currentDateView.toDate());\n    this.onRightSecondaryNav.emit({from, to});\n  }\n\n  toggleCalendarMode(): void {\n    this.onNavHeaderBtnClick.emit();\n  }\n\n  getMonthBtnCssClass(month: IMonth): { [klass: string]: boolean } {\n    const cssClass: { [klass: string]: boolean } = {\n      'dp-selected': month.selected,\n      'dp-current-month': month.currentMonth\n    };\n    const customCssClass: string = this.monthCalendarService.getMonthBtnCssClass(this.componentConfig, month.date);\n\n    if (customCssClass) {\n      cssClass[customCssClass] = true;\n    }\n\n    return cssClass;\n  }\n\n  shouldShowCurrent(): boolean {\n    return this.utilsService.shouldShowCurrent(\n      this.componentConfig.showGoToCurrent,\n      'month',\n      this.componentConfig.min,\n      this.componentConfig.max\n    );\n  }\n\n  goToCurrent(): void {\n    this.currentDateView = dayjsRef();\n    this.onGoToCurrent.emit();\n  }\n\n  moveCalendarTo(to: SingleCalendarValue): void {\n    if (to) {\n      this.currentDateView = this.utilsService.convertToDayjs(to, this.componentConfig.format);\n      this.cd.markForCheck();\n    }\n  }\n\n  handleConfigChange(config: SimpleChange): void {\n    if (config) {\n      const prevConf: IMonthCalendarConfigInternal = this.monthCalendarService.getConfig(config.previousValue);\n      const currentConf: IMonthCalendarConfigInternal = this.monthCalendarService.getConfig(config.currentValue);\n\n      if (this.utilsService.shouldResetCurrentView(prevConf, currentConf)) {\n        this._currentDateView = null;\n      }\n    }\n  }\n}\n","<div class=\"dp-month-calendar-container\" dir=\"ltr\">\n  <dp-calendar-nav\n      (onGoToCurrent)=\"goToCurrent()\"\n      (onLabelClick)=\"toggleCalendarMode()\"\n      (onLeftNav)=\"onLeftNavClick()\"\n      (onLeftSecondaryNav)=\"onLeftSecondaryNavClick()\"\n      (onRightNav)=\"onRightNavClick()\"\n      (onRightSecondaryNav)=\"onRightSecondaryNavClick()\"\n      [isLabelClickable]=\"componentConfig.isNavHeaderBtnClickable\"\n      [label]=\"navLabel\"\n      [showGoToCurrent]=\"shouldShowCurrent()\"\n      [showLeftNav]=\"showLeftNav\"\n      [showLeftSecondaryNav]=\"showSecondaryLeftNav\"\n      [showRightNav]=\"showRightNav\"\n      [showRightSecondaryNav]=\"showSecondaryRightNav\"\n      [theme]=\"theme\">\n  </dp-calendar-nav>\n\n  <div class=\"dp-calendar-wrapper\">\n    <div *ngFor=\"let monthRow of yearMonths\" class=\"dp-months-row\">\n      <button (click)=\"monthClicked(month)\"\n              *ngFor=\"let month of monthRow\"\n              [attr.data-date]=\"month.date.format(componentConfig.format)\"\n              [disabled]=\"month.disabled\"\n              [innerText]=\"month.text\"\n              [ngClass]=\"getMonthBtnCssClass(month)\"\n              class=\"dp-calendar-month\"\n              type=\"button\">\n      </button>\n    </div>\n  </div>\n</div>\n","import {ECalendarValue} from '../common/types/calendar-value-enum';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {ECalendarMode} from '../common/types/calendar-mode-enum';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport {DayCalendarService} from './day-calendar.service';\n\nimport {Dayjs, ManipulateType} from 'dayjs';\nimport {IDayCalendarConfig, IDayCalendarConfigInternal} from './day-calendar-config.model';\nimport {IDay} from './day.model';\nimport {\n  ControlValueAccessor,\n  UntypedFormControl,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator\n} from '@angular/forms';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IMonthCalendarConfig} from '../month-calendar/month-calendar-config';\nimport {IMonth} from '../month-calendar/month.model';\nimport {DateValidator} from '../common/types/validator.type';\nimport {INavEvent} from '../common/models/navigation-event.model';\nimport {dayjsRef} from '../common/dayjs/dayjs.ref';\n\n@Component({\n  selector: 'dp-day-calendar',\n  templateUrl: 'day-calendar.component.html',\n  styleUrls: ['day-calendar.component.less'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    DayCalendarService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DayCalendarComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DayCalendarComponent),\n      multi: true\n    }\n  ]\n})\nexport class DayCalendarComponent implements OnInit, OnChanges, ControlValueAccessor, Validator {\n\n  @Input() config: IDayCalendarConfig;\n  @Input() displayDate: SingleCalendarValue;\n  @Input() minDate: Dayjs;\n  @Input() maxDate: Dayjs;\n  @HostBinding('class') @Input() theme: string;\n  @Output() onSelect: EventEmitter<IDay> = new EventEmitter();\n  @Output() onMonthSelect: EventEmitter<IMonth> = new EventEmitter();\n  @Output() onNavHeaderBtnClick: EventEmitter<ECalendarMode> = new EventEmitter();\n  @Output() onGoToCurrent: EventEmitter<void> = new EventEmitter();\n  @Output() onLeftNav: EventEmitter<INavEvent> = new EventEmitter();\n  @Output() onRightNav: EventEmitter<INavEvent> = new EventEmitter();\n  CalendarMode = ECalendarMode;\n  isInited: boolean = false;\n  componentConfig: IDayCalendarConfigInternal;\n  weeks: IDay[][];\n  weekdays: Dayjs[];\n  inputValue: CalendarValue;\n  inputValueType: ECalendarValue;\n  validateFn: DateValidator;\n  currentCalendarMode: ECalendarMode = ECalendarMode.Day;\n  monthCalendarConfig: IMonthCalendarConfig;\n  _shouldShowCurrent: boolean = true;\n  navLabel: string;\n  showLeftNav: boolean;\n  showRightNav: boolean;\n  api = {\n    moveCalendarsBy: this.moveCalendarsBy.bind(this),\n    moveCalendarTo: this.moveCalendarTo.bind(this),\n    toggleCalendarMode: this.toggleCalendarMode.bind(this)\n  };\n\n  constructor(public readonly dayCalendarService: DayCalendarService,\n              public readonly utilsService: UtilsService,\n              public readonly cd: ChangeDetectorRef) {\n  }\n\n  _selected: Dayjs[];\n\n  get selected(): Dayjs[] {\n    return this._selected;\n  }\n\n  set selected(selected: Dayjs[]) {\n    this._selected = selected;\n    this.onChangeCallback(this.processOnChangeCallback(selected));\n  }\n\n  _currentDateView: Dayjs;\n\n  get currentDateView(): Dayjs {\n    return this._currentDateView;\n  }\n\n  set currentDateView(current: Dayjs) {\n    this._currentDateView = dayjsRef(current.toDate());\n    this.weeks = this.dayCalendarService\n      .generateMonthArray(this.componentConfig, this._currentDateView, this.selected);\n    this.navLabel = this.dayCalendarService.getHeaderLabel(this.componentConfig, this._currentDateView);\n    this.showLeftNav = this.dayCalendarService.shouldShowLeft(this.componentConfig.min, this.currentDateView);\n    this.showRightNav = this.dayCalendarService.shouldShowRight(this.componentConfig.max, this.currentDateView);\n  }\n  ;\n\n  ngOnInit() {\n    this.isInited = true;\n    this.init();\n    this.initValidators();\n  }\n\n  init() {\n    this.componentConfig = this.dayCalendarService.getConfig(this.config);\n    this.selected = this.selected || [];\n    this.currentDateView = this.displayDate\n      ? this.utilsService.convertToDayjs(this.displayDate, this.componentConfig.format)\n      : this.utilsService\n        .getDefaultDisplayDate(\n          this.currentDateView,\n          this.selected,\n          this.componentConfig.allowMultiSelect,\n          this.componentConfig.min\n        );\n    this.weekdays = this.dayCalendarService\n      .generateWeekdays(this.componentConfig.firstDayOfWeek);\n    this.inputValueType = this.utilsService.getInputType(this.inputValue, this.componentConfig.allowMultiSelect);\n    this.monthCalendarConfig = this.dayCalendarService.getMonthCalendarConfig(this.componentConfig);\n    this._shouldShowCurrent = this.shouldShowCurrent();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.isInited) {\n      const {minDate, maxDate, config} = changes;\n\n      this.handleConfigChange(config);\n      this.init();\n\n      if (minDate || maxDate) {\n        this.initValidators();\n      }\n    }\n  }\n\n  writeValue(value: CalendarValue): void {\n    this.inputValue = value;\n\n    if (value) {\n      this.selected = this.utilsService\n        .convertToDayjsArray(value, this.componentConfig);\n      this.inputValueType = this.utilsService\n        .getInputType(this.inputValue, this.componentConfig.allowMultiSelect);\n    } else {\n      this.selected = [];\n    }\n\n    this.weeks = this.dayCalendarService\n      .generateMonthArray(this.componentConfig, this.currentDateView, this.selected);\n\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  onChangeCallback(_: any) {\n  }\n\n  registerOnTouched(fn: any): void {\n  }\n\n  validate(formControl: UntypedFormControl): ValidationErrors | any {\n    if (this.minDate || this.maxDate) {\n      return this.validateFn(formControl.value);\n    } else {\n      return () => null;\n    }\n  }\n\n  processOnChangeCallback(value: Dayjs[]): CalendarValue {\n    return this.utilsService.convertFromDayjsArray(\n      this.componentConfig.format,\n      value,\n      this.componentConfig.returnedValueType || this.inputValueType\n    );\n  }\n\n  initValidators() {\n    this.validateFn = this.utilsService.createValidator(\n      {minDate: this.minDate, maxDate: this.maxDate},\n      this.componentConfig.format,\n      'day'\n    );\n\n    this.onChangeCallback(this.processOnChangeCallback(this.selected));\n  }\n\n  dayClicked(day: IDay) {\n    if (day.selected && !this.componentConfig.unSelectOnClick) {\n      return;\n    }\n\n    this.selected = this.utilsService\n      .updateSelected(this.componentConfig.allowMultiSelect, this.selected, day);\n    this.weeks = this.dayCalendarService\n      .generateMonthArray(this.componentConfig, this.currentDateView, this.selected);\n    this.onSelect.emit(day);\n  }\n\n  getDayBtnText(day: IDay): string {\n    return this.dayCalendarService.getDayBtnText(this.componentConfig, day.date);\n  }\n\n  getDayBtnCssClass(day: IDay): { [klass: string]: boolean } {\n    const cssClasses: { [klass: string]: boolean } = {\n      'dp-selected': day.selected,\n      'dp-current-month': day.currentMonth,\n      'dp-prev-month': day.prevMonth,\n      'dp-next-month': day.nextMonth,\n      'dp-current-day': day.currentDay\n    };\n    const customCssClass: string = this.dayCalendarService.getDayBtnCssClass(this.componentConfig, day.date);\n    if (customCssClass) {\n      cssClasses[customCssClass] = true;\n    }\n\n    return cssClasses;\n  }\n\n  onLeftNavClick() {\n    const from = dayjsRef(this.currentDateView.toDate());\n    this.moveCalendarsBy(this.currentDateView, -1, 'month');\n    const to = dayjsRef(this.currentDateView.toDate());\n    this.onLeftNav.emit({from, to});\n  }\n\n  onRightNavClick() {\n    const from = dayjsRef(this.currentDateView.toDate());\n    this.moveCalendarsBy(this.currentDateView, 1, 'month');\n    const to = dayjsRef(this.currentDateView.toDate());\n    this.onRightNav.emit({from, to});\n  }\n\n  onMonthCalendarLeftClick(change: INavEvent) {\n    this.onLeftNav.emit(change);\n  }\n\n  onMonthCalendarRightClick(change: INavEvent) {\n    this.onRightNav.emit(change);\n  }\n\n  onMonthCalendarSecondaryLeftClick(change: INavEvent) {\n    this.onRightNav.emit(change);\n  }\n\n  onMonthCalendarSecondaryRightClick(change: INavEvent) {\n    this.onLeftNav.emit(change);\n  }\n\n  getWeekdayName(weekday: Dayjs): string {\n    if (this.componentConfig.weekDayFormatter) {\n      return this.componentConfig.weekDayFormatter(weekday.day());\n    }\n\n    return weekday.format(this.componentConfig.weekDayFormat);\n  }\n\n  toggleCalendarMode(mode: ECalendarMode) {\n    if (this.currentCalendarMode !== mode) {\n      this.currentCalendarMode = mode;\n      this.onNavHeaderBtnClick.emit(mode);\n    }\n\n    this.cd.markForCheck();\n  }\n\n  monthSelected(month: IMonth) {\n    this.currentDateView = dayjsRef(month.date.toDate());\n    this.currentCalendarMode = ECalendarMode.Day;\n    this.onMonthSelect.emit(month);\n  }\n\n  moveCalendarsBy(current: Dayjs, amount: number, granularity: ManipulateType = 'month') {\n    this.currentDateView = dayjsRef(current.toDate()).add(amount, granularity);\n    this.cd.markForCheck();\n  }\n\n  moveCalendarTo(to: SingleCalendarValue) {\n    if (to) {\n      this.currentDateView = this.utilsService.convertToDayjs(to, this.componentConfig.format);\n    }\n\n    this.cd.markForCheck();\n  }\n\n  shouldShowCurrent(): boolean {\n    return this.utilsService.shouldShowCurrent(\n      this.componentConfig.showGoToCurrent,\n      'day',\n      this.componentConfig.min,\n      this.componentConfig.max\n    );\n  }\n\n  goToCurrent() {\n    this.currentDateView = dayjsRef();\n    this.onGoToCurrent.emit();\n  }\n\n  handleConfigChange(config: SimpleChange): void {\n    if (config) {\n      const prevConf: IDayCalendarConfigInternal = this.dayCalendarService.getConfig(config.previousValue);\n      const currentConf: IDayCalendarConfigInternal = this.dayCalendarService.getConfig(config.currentValue);\n\n      if (this.utilsService.shouldResetCurrentView(prevConf, currentConf)) {\n        this._currentDateView = null;\n      }\n    }\n  }\n}\n","<div *ngIf=\"currentCalendarMode ===  CalendarMode.Day\" class=\"dp-day-calendar-container\" dir=\"ltr\">\n  <dp-calendar-nav\n      (onGoToCurrent)=\"goToCurrent()\"\n      (onLabelClick)=\"toggleCalendarMode(CalendarMode.Month)\"\n      (onLeftNav)=\"onLeftNavClick()\"\n      (onRightNav)=\"onRightNavClick()\"\n      [isLabelClickable]=\"componentConfig.enableMonthSelector\"\n      [label]=\"navLabel\"\n      [showGoToCurrent]=\"_shouldShowCurrent\"\n      [showLeftNav]=\"showLeftNav\"\n      [showRightNav]=\"showRightNav\"\n      [theme]=\"theme\">\n  </dp-calendar-nav>\n\n  <div [ngClass]=\"{'dp-hide-near-month': !componentConfig.showNearMonthDays}\"\n       class=\"dp-calendar-wrapper\">\n    <div class=\"dp-weekdays\">\n      <span *ngFor=\"let weekday of weekdays\"\n            [innerText]=\"getWeekdayName(weekday)\"\n            class=\"dp-calendar-weekday\">\n      </span>\n    </div>\n    <div *ngFor=\"let week of weeks\" class=\"dp-calendar-week\">\n      <span *ngIf=\"componentConfig.showWeekNumbers\"\n            [innerText]=\"week[0].date.isoWeek()\"\n            class=\"dp-week-number\">\n      </span>\n      <button (click)=\"dayClicked(day)\"\n              *ngFor=\"let day of week\"\n              [attr.data-date]=\"day.date.format(componentConfig.format)\"\n              [disabled]=\"day.disabled\"\n              [innerText]=\"getDayBtnText(day)\"\n              [ngClass]=\"getDayBtnCssClass(day)\"\n              class=\"dp-calendar-day\"\n              type=\"button\">\n      </button>\n    </div>\n  </div>\n</div>\n\n<dp-month-calendar\n    (onLeftNav)=\"onMonthCalendarLeftClick($event)\"\n    (onLeftSecondaryNav)=\"onMonthCalendarSecondaryLeftClick($event)\"\n    (onNavHeaderBtnClick)=\"toggleCalendarMode(CalendarMode.Day)\"\n    (onRightNav)=\"onMonthCalendarRightClick($event)\"\n    (onRightSecondaryNav)=\"onMonthCalendarSecondaryRightClick($event)\"\n    (onSelect)=\"monthSelected($event)\"\n    *ngIf=\"currentCalendarMode ===  CalendarMode.Month\"\n    [config]=\"monthCalendarConfig\"\n    [displayDate]=\"_currentDateView\"\n    [ngModel]=\"_selected\"\n    [theme]=\"theme\">\n</dp-month-calendar>\n","import {ECalendarValue} from '../common/types/calendar-value-enum';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChange,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport {TimeSelectService, TimeUnit} from './time-select.service';\n\nimport {ITimeSelectConfig, ITimeSelectConfigInternal} from './time-select-config.model';\nimport {\n  ControlValueAccessor,\n  UntypedFormControl,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator\n} from '@angular/forms';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IDate} from '../common/models/date.model';\nimport {DateValidator} from '../common/types/validator.type';\nimport {IDayCalendarConfigInternal} from '../day-calendar/day-calendar-config.model';\nimport {Dayjs} from 'dayjs';\nimport {dayjsRef} from '../common/dayjs/dayjs.ref';\n\n@Component({\n  selector: 'dp-time-select',\n  templateUrl: 'time-select.component.html',\n  styleUrls: ['time-select.component.less'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    TimeSelectService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => TimeSelectComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => TimeSelectComponent),\n      multi: true\n    }\n  ]\n})\nexport class TimeSelectComponent implements OnInit, OnChanges, ControlValueAccessor, Validator {\n\n  @Input() config: ITimeSelectConfig;\n  @Input() displayDate: SingleCalendarValue;\n  @Input() minDate: SingleCalendarValue;\n  @Input() maxDate: SingleCalendarValue;\n  @Input() minTime: SingleCalendarValue;\n  @Input() maxTime: SingleCalendarValue;\n  @HostBinding('class') @Input() theme: string;\n  @Output() onChange: EventEmitter<IDate> = new EventEmitter();\n  isInited: boolean = false;\n  componentConfig: ITimeSelectConfigInternal;\n  inputValue: CalendarValue;\n  inputValueType: ECalendarValue;\n  validateFn: DateValidator;\n  hours: string;\n  minutes: string;\n  seconds: string;\n  meridiem: string;\n  showDecHour: boolean;\n  showDecMinute: boolean;\n  showDecSecond: boolean;\n  showIncHour: boolean;\n  showIncMinute: boolean;\n  showIncSecond: boolean;\n  showToggleMeridiem: boolean;\n  api = {\n    triggerChange: this.emitChange.bind(this)\n  };\n\n  constructor(public readonly timeSelectService: TimeSelectService,\n              public readonly utilsService: UtilsService,\n              public readonly cd: ChangeDetectorRef) {\n  }\n\n  _selected: Dayjs;\n\n  get selected(): Dayjs {\n    return this._selected;\n  }\n\n  set selected(selected: Dayjs) {\n    this._selected = selected;\n    this.calculateTimeParts(this.selected);\n\n    this.showDecHour = this.timeSelectService.shouldShowDecrease(this.componentConfig, this._selected, 'hour');\n    this.showDecMinute = this.timeSelectService.shouldShowDecrease(this.componentConfig, this._selected, 'minute');\n    this.showDecSecond = this.timeSelectService.shouldShowDecrease(this.componentConfig, this._selected, 'second');\n\n    this.showIncHour = this.timeSelectService.shouldShowIncrease(this.componentConfig, this._selected, 'hour');\n    this.showIncMinute = this.timeSelectService.shouldShowIncrease(this.componentConfig, this._selected, 'minute');\n    this.showIncSecond = this.timeSelectService.shouldShowIncrease(this.componentConfig, this._selected, 'second');\n\n    this.showToggleMeridiem = this.timeSelectService.shouldShowToggleMeridiem(this.componentConfig, this._selected);\n\n    this.onChangeCallback(this.processOnChangeCallback(selected));\n  }\n\n  ngOnInit() {\n    this.isInited = true;\n    this.init();\n    this.initValidators();\n  }\n\n  init(): void {\n    this.componentConfig = this.timeSelectService.getConfig(this.config);\n    this.selected = this.selected || dayjsRef();\n    this.inputValueType = this.utilsService.getInputType(this.inputValue, false);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.isInited) {\n      const {minDate, maxDate, minTime, maxTime} = changes;\n\n      if (minDate || maxDate || minTime || maxTime) {\n        this.initValidators();\n      }\n\n      this.init();\n    }\n  }\n\n  writeValue(value: CalendarValue): void {\n    this.inputValue = value;\n\n    if (value) {\n      const dayjsValue = this.utilsService\n        .convertToDayjsArray(value, {\n          allowMultiSelect: false,\n          format: this.timeSelectService.getTimeFormat(this.componentConfig)\n        })[0];\n      if (dayjsValue.isValid()) {\n        this.selected = dayjsValue;\n        this.inputValueType = this.utilsService\n          .getInputType(this.inputValue, false);\n      }\n    }\n\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  onChangeCallback(_: any) {\n  }\n\n  registerOnTouched(fn: any): void {\n  }\n\n  validate(formControl: UntypedFormControl): ValidationErrors | any {\n    if (this.minDate || this.maxDate || this.minTime || this.maxTime) {\n      return this.validateFn(formControl.value);\n    } else {\n      return () => null;\n    }\n  }\n\n  processOnChangeCallback(value: Dayjs): CalendarValue {\n    return this.utilsService.convertFromDayjsArray(\n      this.timeSelectService.getTimeFormat(this.componentConfig),\n      [value],\n      this.componentConfig.returnedValueType || this.inputValueType\n    );\n  }\n\n  initValidators() {\n    this.validateFn = this.utilsService.createValidator(\n      {\n        minDate: this.minDate,\n        maxDate: this.maxDate,\n        minTime: this.minTime,\n        maxTime: this.maxTime\n      }, undefined, 'day');\n\n    this.onChangeCallback(this.processOnChangeCallback(this.selected));\n  }\n\n  decrease(unit: TimeUnit) {\n    this.selected = this.timeSelectService.decrease(this.componentConfig, this.selected, unit);\n    this.emitChange();\n  }\n\n  increase(unit: TimeUnit) {\n    this.selected = this.timeSelectService.increase(this.componentConfig, this.selected, unit);\n    this.emitChange();\n  }\n\n  toggleMeridiem(): void {\n    this.selected = this.timeSelectService.toggleMeridiem(this.selected);\n    this.emitChange();\n  }\n\n  emitChange(): void {\n    this.onChange.emit({date: this.selected, selected: false});\n    this.cd.markForCheck();\n  }\n\n  calculateTimeParts(time: Dayjs): void {\n    this.hours = this.timeSelectService.getHours(this.componentConfig, time);\n    this.minutes = this.timeSelectService.getMinutes(this.componentConfig, time);\n    this.seconds = this.timeSelectService.getSeconds(this.componentConfig, time);\n    this.meridiem = this.timeSelectService.getMeridiem(this.componentConfig, time);\n  }\n\n  private handleConfigChange(config: SimpleChange): void {\n    if (config) {\n      const prevConf: IDayCalendarConfigInternal = this.timeSelectService.getConfig(config.previousValue);\n      const currentConf: IDayCalendarConfigInternal = this.timeSelectService.getConfig(config.currentValue);\n    }\n  }\n}\n","<ul class=\"dp-time-select-controls\" dir=\"ltr\">\n  <li class=\"dp-time-select-control dp-time-select-control-hours\">\n    <button (click)=\"increase('hour')\"\n            [disabled]=\"!showIncHour\"\n            class=\"dp-time-select-control-up\"\n            type=\"button\">\n    </button>\n    <span [innerText]=\"hours\"\n          class=\"dp-time-select-display-hours\">\n    </span>\n    <button (click)=\"decrease('hour')\"\n            [disabled]=\"!showDecHour\"\n            class=\"dp-time-select-control-down\"\n            type=\"button\">\n    </button>\n  </li>\n  <li [innerText]=\"componentConfig.timeSeparator\"\n      class=\"dp-time-select-control dp-time-select-separator\">\n  </li>\n  <li class=\"dp-time-select-control dp-time-select-control-minutes\">\n    <button (click)=\"increase('minute')\"\n            [disabled]=\"!showIncMinute\"\n            class=\"dp-time-select-control-up\"\n            type=\"button\"></button>\n    <span [innerText]=\"minutes\"\n          class=\"dp-time-select-display-minutes\">\n    </span>\n    <button (click)=\"decrease('minute')\"\n            [disabled]=\"!showDecMinute\" class=\"dp-time-select-control-down\"\n            type=\"button\">\n    </button>\n  </li>\n  <ng-container *ngIf=\"componentConfig.showSeconds\">\n    <li [innerText]=\"componentConfig.timeSeparator\"\n        class=\"dp-time-select-control dp-time-select-separator\">\n    </li>\n    <li class=\"dp-time-select-control dp-time-select-control-seconds\">\n      <button (click)=\"increase('second')\"\n              [disabled]=\"!showIncSecond\"\n              class=\"dp-time-select-control-up\"\n              type=\"button\"></button>\n      <span [innerText]=\"seconds\"\n            class=\"dp-time-select-display-seconds\">\n      </span>\n      <button (click)=\"decrease('second')\"\n              [disabled]=\"!showDecSecond\"\n              class=\"dp-time-select-control-down\"\n              type=\"button\">\n      </button>\n    </li>\n  </ng-container>\n  <li *ngIf=\"!componentConfig.showTwentyFourHours\" class=\"dp-time-select-control dp-time-select-control-meridiem\">\n    <button (click)=\"toggleMeridiem()\"\n            [disabled]=\"!showToggleMeridiem\"\n            class=\"dp-time-select-control-up\"\n            type=\"button\">\n    </button>\n    <span [innerText]=\"meridiem\"\n          class=\"dp-time-select-display-meridiem\">\n    </span>\n    <button (click)=\"toggleMeridiem()\"\n            [disabled]=\"!showToggleMeridiem\"\n            class=\"dp-time-select-control-down\"\n            type=\"button\">\n    </button>\n  </li>\n</ul>\n","import {ECalendarValue} from '../common/types/calendar-value-enum';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  UntypedFormControl,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator\n} from '@angular/forms';\nimport {Dayjs} from 'dayjs';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {IDate} from '../common/models/date.model';\nimport {DayCalendarService} from '../day-calendar/day-calendar.service';\nimport {TimeSelectService} from '../time-select/time-select.service';\nimport {IDayTimeCalendarConfig, IDayTimeCalendarConfigInternal} from './day-time-calendar-config.model';\nimport {DayTimeCalendarService} from './day-time-calendar.service';\nimport {DateValidator} from '../common/types/validator.type';\nimport {DayCalendarComponent} from '../day-calendar/day-calendar.component';\nimport {INavEvent} from '../common/models/navigation-event.model';\n\n@Component({\n  selector: 'dp-day-time-calendar',\n  templateUrl: 'day-time-calendar.component.html',\n  styleUrls: ['day-time-calendar.component.less'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    DayTimeCalendarService,\n    DayCalendarService,\n    TimeSelectService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DayTimeCalendarComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DayTimeCalendarComponent),\n      multi: true\n    }\n  ]\n})\nexport class DayTimeCalendarComponent implements OnInit, OnChanges, ControlValueAccessor, Validator {\n\n  @Input() config: IDayTimeCalendarConfig;\n  @Input() displayDate: SingleCalendarValue;\n  @Input() minDate: SingleCalendarValue;\n  @Input() maxDate: SingleCalendarValue;\n  @HostBinding('class') @Input() theme: string;\n  @Output() onChange: EventEmitter<IDate> = new EventEmitter();\n  @Output() onGoToCurrent: EventEmitter<void> = new EventEmitter();\n  @Output() onLeftNav: EventEmitter<INavEvent> = new EventEmitter();\n  @Output() onRightNav: EventEmitter<INavEvent> = new EventEmitter();\n  @ViewChild('dayCalendar') dayCalendarRef: DayCalendarComponent;\n  isInited: boolean = false;\n  componentConfig: IDayTimeCalendarConfigInternal;\n  inputValue: CalendarValue;\n  inputValueType: ECalendarValue;\n  validateFn: DateValidator;\n  api = {\n    moveCalendarTo: this.moveCalendarTo.bind(this)\n  };\n\n  constructor(public dayTimeCalendarService: DayTimeCalendarService,\n              public utilsService: UtilsService,\n              public cd: ChangeDetectorRef) {\n  }\n\n  _selected: Dayjs;\n\n  get selected(): Dayjs {\n    return this._selected;\n  }\n\n  set selected(selected: Dayjs) {\n    this._selected = selected;\n    this.onChangeCallback(this.processOnChangeCallback(selected));\n  }\n  ;\n\n  ngOnInit() {\n    this.isInited = true;\n    this.init();\n    this.initValidators();\n  }\n\n  init() {\n    this.componentConfig = this.dayTimeCalendarService.getConfig(this.config);\n    this.inputValueType = this.utilsService.getInputType(this.inputValue, false);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (this.isInited) {\n      const {minDate, maxDate} = changes;\n      this.init();\n\n      if (minDate || maxDate) {\n        this.initValidators();\n      }\n    }\n  }\n\n  writeValue(value: CalendarValue): void {\n    this.inputValue = value;\n\n    if (value) {\n      this.selected = this.utilsService\n        .convertToDayjsArray(value, {\n          format: this.componentConfig.format,\n          allowMultiSelect: false\n        })[0];\n      this.inputValueType = this.utilsService\n        .getInputType(this.inputValue, false);\n    } else {\n      this.selected = null;\n    }\n\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  onChangeCallback(_: any) {\n  }\n\n  registerOnTouched(fn: any): void {\n  }\n\n  validate(formControl: UntypedFormControl): ValidationErrors | any {\n    if (this.minDate || this.maxDate) {\n      return this.validateFn(formControl.value);\n    } else {\n      return () => null;\n    }\n  }\n\n  processOnChangeCallback(value: Dayjs): CalendarValue {\n    return this.utilsService.convertFromDayjsArray(\n      this.componentConfig.format,\n      [value],\n      this.componentConfig.returnedValueType || this.inputValueType\n    );\n  }\n\n  initValidators() {\n    this.validateFn = this.utilsService.createValidator(\n      {\n        minDate: this.minDate,\n        maxDate: this.maxDate\n      }, undefined, 'daytime');\n\n    this.onChangeCallback(this.processOnChangeCallback(this.selected));\n  }\n\n  dateSelected(day: IDate) {\n    this.selected = this.dayTimeCalendarService.updateDay(this.selected, day.date, this.componentConfig);\n    this.emitChange();\n  }\n\n  timeChange(time: IDate) {\n    this.selected = this.dayTimeCalendarService.updateTime(this.selected, time.date);\n    this.emitChange();\n  }\n\n  emitChange() {\n    this.onChange.emit({date: this.selected, selected: false});\n  }\n\n  moveCalendarTo(to: SingleCalendarValue) {\n    if (to) {\n      this.dayCalendarRef.moveCalendarTo(to);\n    }\n  }\n\n  onLeftNavClick(change: INavEvent) {\n    this.onLeftNav.emit(change);\n  }\n\n  onRightNavClick(change: INavEvent) {\n    this.onRightNav.emit(change);\n  }\n}\n","<dp-day-calendar #dayCalendar\n                 (onGoToCurrent)=\"onGoToCurrent.emit()\"\n                 (onLeftNav)=\"onLeftNavClick($event)\"\n                 (onRightNav)=\"onRightNavClick($event)\"\n                 (onSelect)=\"dateSelected($event)\"\n                 [config]=\"componentConfig\"\n                 [displayDate]=\"displayDate\"\n                 [ngModel]=\"_selected\"\n                 [theme]=\"theme\">\n</dp-day-calendar>\n<dp-time-select #timeSelect\n                (onChange)=\"timeChange($event)\"\n                [config]=\"componentConfig\"\n                [ngModel]=\"_selected\"\n                [theme]=\"theme\">\n</dp-time-select>\n","import {IDate} from '../common/models/date.model';\nimport {UtilsService} from '../common/services/utils/utils.service';\nimport {CalendarMode} from '../common/types/calendar-mode';\nimport {ECalendarMode} from '../common/types/calendar-mode-enum';\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {ECalendarValue} from '../common/types/calendar-value-enum';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {IDayCalendarConfig} from '../day-calendar/day-calendar-config.model';\nimport {DayCalendarComponent} from '../day-calendar/day-calendar.component';\nimport {DayCalendarService} from '../day-calendar/day-calendar.service';\nimport {IDayTimeCalendarConfig} from '../day-time-calendar/day-time-calendar-config.model';\nimport {DayTimeCalendarService} from '../day-time-calendar/day-time-calendar.service';\nimport {ITimeSelectConfig} from '../time-select/time-select-config.model';\nimport {TimeSelectComponent} from '../time-select/time-select.component';\nimport {TimeSelectService} from '../time-select/time-select.service';\nimport {IDatePickerConfig, IDatePickerConfigInternal} from './date-picker-config.model';\nimport {IDpDayPickerApi} from './date-picker.api';\nimport {DatePickerService} from './date-picker.service';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport {\n  ControlValueAccessor,\n  UntypedFormControl,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator\n} from '@angular/forms';\n\nimport {DateValidator} from '../common/types/validator.type';\nimport {MonthCalendarComponent} from '../month-calendar/month-calendar.component';\nimport {DayTimeCalendarComponent} from '../day-time-calendar/day-time-calendar.component';\nimport {INavEvent} from '../common/models/navigation-event.model';\nimport {SelectEvent} from '../common/types/selection-event.enum';\nimport {ISelectionEvent} from '../common/types/selection-event.model';\nimport {Dayjs, UnitType} from 'dayjs';\nimport {dayjsRef} from '../common/dayjs/dayjs.ref';\nimport {ConnectionPositionPair, ScrollStrategy} from '@angular/cdk/overlay';\n\n@Component({\n  selector: 'dp-date-picker',\n  templateUrl: 'date-picker.component.html',\n  styleUrls: ['date-picker.component.less'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    DatePickerService,\n    DayTimeCalendarService,\n    DayCalendarService,\n    TimeSelectService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DatePickerComponent),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => DatePickerComponent),\n      multi: true\n    }\n  ]\n})\nexport class DatePickerComponent implements OnChanges,\n                                            OnInit,\n                                            ControlValueAccessor,\n                                            Validator,\n                                            OnDestroy {\n  isInitialized: boolean = false;\n  @Input() config: IDatePickerConfig;\n  @Input() mode: CalendarMode = 'day';\n  @Input() placeholder: string = '';\n  @Input() disabled: boolean = false;\n  @Input() displayDate: Dayjs | string;\n  @HostBinding('class') @Input() theme: string;\n  @Input() minDate: SingleCalendarValue;\n  @Input() maxDate: SingleCalendarValue;\n  @Input() minTime: SingleCalendarValue;\n  @Input() maxTime: SingleCalendarValue;\n  @Output() open = new EventEmitter<void>();\n  @Output() close = new EventEmitter<void>();\n  @Output() onChange = new EventEmitter<CalendarValue>();\n  @Output() onGoToCurrent = new EventEmitter<void>();\n  @Output() onLeftNav = new EventEmitter<INavEvent>();\n  @Output() onRightNav = new EventEmitter<INavEvent>();\n  @Output() onSelect = new EventEmitter<ISelectionEvent>();\n  @ViewChild('container') calendarContainer: ElementRef;\n  @ViewChild('dayCalendar') dayCalendarRef: DayCalendarComponent;\n  @ViewChild('monthCalendar') monthCalendarRef: MonthCalendarComponent;\n  @ViewChild('daytimeCalendar') dayTimeCalendarRef: DayTimeCalendarComponent;\n  @ViewChild('timeSelect') timeSelectRef: TimeSelectComponent;\n  @ViewChild('inputElement') inputElement: ElementRef<HTMLInputElement>;\n  componentConfig: IDatePickerConfigInternal;\n  dayCalendarConfig: IDayCalendarConfig;\n  dayTimeCalendarConfig: IDayTimeCalendarConfig;\n  timeSelectConfig: ITimeSelectConfig;\n  inputValue: CalendarValue;\n  isFocusedTrigger = false;\n  inputElementValue: string;\n  calendarWrapper: HTMLElement;\n  appendToElement: HTMLElement;\n  handleInnerElementClickUnlisteners: Function[] = [];\n  globalListenersUnlisteners: Function[] = [];\n  validateFn: DateValidator;\n  api: IDpDayPickerApi = {\n    open: this.showCalendars.bind(this),\n    close: this.hideCalendar.bind(this),\n    moveCalendarTo: this.moveCalendarTo.bind(this)\n  };\n  selectEvent = SelectEvent;\n  origin: ElementRef | HTMLElement;\n  scrollStrategy: ScrollStrategy;\n  private onOpenDelayTimeoutHandler;\n\n  constructor(private readonly dayPickerService: DatePickerService,\n              private readonly elemRef: ElementRef,\n              private readonly renderer: Renderer2,\n              private readonly utilsService: UtilsService,\n              public readonly cd: ChangeDetectorRef) {\n  }\n\n  get openOnFocus(): boolean {\n    return this.componentConfig.openOnFocus;\n  }\n\n  get openOnClick(): boolean {\n    return this.componentConfig.openOnClick;\n  }\n\n  areCalendarsShown: boolean = false;\n\n  _selected: Dayjs[] = [];\n\n  get selected(): Dayjs[] {\n    return this._selected;\n  }\n\n  set selected(selected: Dayjs[]) {\n    this._selected = selected;\n    this.inputElementValue = (<string[]>this.utilsService\n      .convertFromDayjsArray(this.componentConfig.format, selected, ECalendarValue.StringArr))\n      .join(' | ');\n    const val = this.processOnChangeCallback(selected);\n    this.onChangeCallback(val, false);\n    this.onChange.emit(val);\n  }\n\n  _currentDateView: Dayjs;\n  overlayPosition: ConnectionPositionPair[] | undefined;\n\n  get currentDateView(): Dayjs {\n    return this._currentDateView;\n  }\n\n  set currentDateView(date: Dayjs) {\n    this._currentDateView = date;\n\n    if (this.dayCalendarRef) {\n      this.dayCalendarRef.moveCalendarTo(date);\n    }\n\n    if (this.monthCalendarRef) {\n      this.monthCalendarRef.moveCalendarTo(date);\n    }\n\n    if (this.dayTimeCalendarRef) {\n      this.dayTimeCalendarRef.moveCalendarTo(date);\n    }\n\n    this.displayDate = date;\n  }\n\n  @HostListener('click')\n  onClick(): void {\n    if (!this.openOnClick) {\n      return;\n    }\n\n    if (!this.isFocusedTrigger && !this.disabled) {\n      if (!this.areCalendarsShown) {\n        this.showCalendars();\n      }\n    }\n  }\n\n  onBodyClick(event: MouseEvent) {\n    if (this.inputElement.nativeElement === event.target) {\n      return;\n    }\n\n    if (this.componentConfig.hideOnOutsideClick) {\n      this.hideCalendar();\n    }\n  }\n\n  writeValue(value: CalendarValue): void {\n    this.inputValue = value;\n\n    if (value || value === '') {\n      this.selected = this.utilsService\n        .convertToDayjsArray(value, this.componentConfig);\n      this.init();\n    } else {\n      this.selected = [];\n    }\n\n    this.cd.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  onChangeCallback(_: any, __: boolean) {\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouchedCallback = fn;\n  }\n\n  onTouchedCallback() {\n  }\n\n  validate(formControl: UntypedFormControl): ValidationErrors {\n    return this.validateFn(formControl.value);\n  }\n\n  processOnChangeCallback(selected: Dayjs[] | string): CalendarValue {\n    if (typeof selected === 'string') {\n      return selected;\n    } else {\n      return this.utilsService.convertFromDayjsArray(\n        this.componentConfig.format,\n        selected,\n        this.componentConfig.returnedValueType || this.utilsService.getInputType(this.inputValue, this.componentConfig.allowMultiSelect)\n      );\n    }\n  }\n\n  initValidators(): void {\n    this.validateFn = this.utilsService.createValidator(\n      {\n        minDate: this.minDate,\n        maxDate: this.maxDate,\n        minTime: this.minTime,\n        maxTime: this.maxTime\n      }, this.componentConfig.format, this.mode);\n\n    this.onChangeCallback(this.processOnChangeCallback(this.selected), false);\n  }\n\n  ngOnInit(): void {\n    this.isInitialized = true;\n    this.init();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.isInitialized) {\n      this.init();\n    }\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    this.cd.markForCheck();\n  }\n\n  init(): void {\n    this.componentConfig = this.dayPickerService.getConfig(this.config, this.mode);\n    this.currentDateView = this.displayDate\n      ? this.utilsService.convertToDayjs(this.displayDate, this.componentConfig.format)\n      : this.utilsService\n        .getDefaultDisplayDate(\n          this.currentDateView,\n          this.selected,\n          this.componentConfig.allowMultiSelect,\n          this.componentConfig.min\n        );\n    this.dayCalendarConfig = this.dayPickerService.getDayConfigService(this.componentConfig);\n    this.dayTimeCalendarConfig = this.dayPickerService.getDayTimeConfig(this.componentConfig);\n    this.timeSelectConfig = this.dayPickerService.getTimeConfig(this.componentConfig);\n    this.initValidators();\n    this.overlayPosition = this.dayPickerService.getOverlayPosition(this.componentConfig);\n    this.origin = this.utilsService.getNativeElement(this.componentConfig.inputElementContainer);\n    this.scrollStrategy = this.dayPickerService.getScrollStrategy(this.componentConfig.scrollStrategy);\n  }\n\n  inputFocused(): void {\n    if (!this.openOnFocus) {\n      return;\n    }\n\n    clearTimeout(this.onOpenDelayTimeoutHandler);\n    this.isFocusedTrigger = true;\n    this.onOpenDelayTimeoutHandler = setTimeout(() => {\n      if (!this.areCalendarsShown) {\n        this.showCalendars();\n      }\n\n      this.isFocusedTrigger = false;\n      this.cd.markForCheck();\n    }, this.componentConfig.onOpenDelay);\n  }\n\n  inputBlurred(): void {\n    clearTimeout(this.onOpenDelayTimeoutHandler);\n    this.onTouchedCallback();\n  }\n\n  showCalendars(): void {\n    this.areCalendarsShown = true;\n    this.startGlobalListeners();\n\n    if (this.timeSelectRef) {\n      this.timeSelectRef.api.triggerChange();\n    }\n\n    this.open.emit();\n    this.cd.markForCheck();\n  }\n\n  hideCalendar(): void {\n    this.areCalendarsShown = false;\n\n    if (this.dayCalendarRef) {\n      this.dayCalendarRef.api.toggleCalendarMode(ECalendarMode.Day);\n    }\n    this.stopGlobalListeners();\n\n    this.close.emit();\n    this.cd.markForCheck();\n  }\n\n  onViewDateChange(value: CalendarValue): void {\n    const strVal = value ? this.utilsService.convertToString(value, this.componentConfig.format) : '';\n    if (this.dayPickerService.isValidInputDateValue(strVal, this.componentConfig)) {\n      this.selected = this.dayPickerService.convertInputValueToDayjsArray(strVal, this.componentConfig);\n      this.currentDateView = this.selected.length\n        ? this.utilsService.getDefaultDisplayDate(\n          null,\n          this.selected,\n          this.componentConfig.allowMultiSelect,\n          this.componentConfig.min\n        )\n        : this.currentDateView;\n\n      this.onSelect.emit({\n        date: strVal,\n        type: SelectEvent.INPUT,\n        granularity: null\n      })\n    } else {\n      this._selected = this.utilsService\n        .getValidDayjsArray(strVal, this.componentConfig.format);\n      this.onChangeCallback(this.processOnChangeCallback(strVal), true);\n    }\n  }\n\n  dateSelected(date: IDate, granularity: UnitType, type: SelectEvent, ignoreClose?: boolean): void {\n    this.selected = this.utilsService\n      .updateSelected(this.componentConfig.allowMultiSelect, this.selected, date, granularity);\n    if (!ignoreClose) {\n      this.onDateClick();\n    }\n\n    this.onSelect.emit({\n      date: date.date,\n      granularity,\n      type\n    });\n  }\n\n  onDateClick(): void {\n    if (this.componentConfig.closeOnSelect) {\n      setTimeout(this.hideCalendar.bind(this), this.componentConfig.closeOnSelectDelay);\n    }\n  }\n\n  onKeyPress(event: KeyboardEvent): void {\n    switch (event.key) {\n      case ('Escape'):\n      case ('Esc'):\n      case ('Tab'):\n        this.hideCalendar();\n        break;\n    }\n  }\n\n  moveCalendarTo(date: SingleCalendarValue): void {\n    this.currentDateView = this.utilsService.convertToDayjs(date, this.componentConfig.format);\n  }\n\n  onLeftNavClick(change: INavEvent): void {\n    this.displayDate = change.to;\n    this.onLeftNav.emit(change);\n  }\n\n  onRightNavClick(change: INavEvent): void {\n    this.displayDate = change.to;\n    this.onRightNav.emit(change);\n  }\n\n  startGlobalListeners(): void {\n    this.globalListenersUnlisteners.push(\n      this.renderer.listen(document, 'keydown', (e: KeyboardEvent) => {\n        this.onKeyPress(e);\n      })\n    );\n  }\n\n  stopGlobalListeners(): void {\n    this.globalListenersUnlisteners.forEach((ul) => ul());\n    this.globalListenersUnlisteners = [];\n  }\n\n  ngOnDestroy(): void {\n    this.handleInnerElementClickUnlisteners.forEach(ul => ul());\n\n    if (this.appendToElement) {\n      this.appendToElement.removeChild(this.calendarWrapper);\n    }\n  }\n\n  goToCurrent(): void {\n    this.currentDateView = dayjsRef();\n    this.onGoToCurrent.emit()\n  }\n}\n","<div [ngClass]=\"{'dp-open': areCalendarsShown}\" dir=\"ltr\" #trigger>\n  <div [attr.data-hidden]=\"componentConfig.hideInputContainer\"\n       [hidden]=\"componentConfig.hideInputContainer\"\n       class=\"dp-input-container\">\n    <input #inputElement\n           (blur)=\"inputBlurred()\"\n           (focus)=\"inputFocused()\"\n           (keydown.enter)=\"componentConfig.closeOnEnter && hideCalendar()\"\n           (ngModelChange)=\"onViewDateChange($event)\"\n           [disabled]=\"disabled\"\n           [ngModel]=\"inputElementValue\"\n           [placeholder]=\"placeholder\"\n           [readonly]=\"componentConfig.disableKeypress\"\n           class=\"dp-picker-input\"\n           type=\"text\"/>\n  </div>\n  <ng-template cdkConnectedOverlay\n               [cdkConnectedOverlayPositions]=\"overlayPosition\"\n               [cdkConnectedOverlayOrigin]=\"origin || trigger\"\n               [cdkConnectedOverlayOpen]=\"areCalendarsShown\"\n               [cdkConnectedOverlayHasBackdrop]=\"false\"\n               [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n               (overlayOutsideClick)=\"onBodyClick($event)\">\n    <div #container>\n      <div [attr.data-hidden]=\"!areCalendarsShown\"\n           [ngSwitch]=\"mode\"\n           class=\"dp-popup {{theme}}\">\n        <dp-day-calendar #dayCalendar\n                         (onGoToCurrent)=\"goToCurrent()\"\n                         (onLeftNav)=\"onLeftNavClick($event)\"\n                         (onRightNav)=\"onRightNavClick($event)\"\n                         (onSelect)=\"dateSelected($event, 'day', selectEvent.SELECTION, false)\"\n                         *ngSwitchCase=\"'day'\"\n                         [config]=\"dayCalendarConfig\"\n                         [displayDate]=\"displayDate\"\n                         [ngModel]=\"_selected\"\n                         [theme]=\"theme\">\n        </dp-day-calendar>\n\n        <dp-month-calendar #monthCalendar\n                           (onGoToCurrent)=\"goToCurrent()\"\n                           (onLeftNav)=\"onLeftNavClick($event)\"\n                           (onRightNav)=\"onRightNavClick($event)\"\n                           (onSelect)=\"dateSelected($event, 'month', selectEvent.SELECTION, false)\"\n                           *ngSwitchCase=\"'month'\"\n                           [config]=\"dayCalendarConfig\"\n                           [displayDate]=\"displayDate\"\n                           [ngModel]=\"_selected\"\n                           [theme]=\"theme\">\n        </dp-month-calendar>\n\n        <dp-time-select #timeSelect\n                        (onChange)=\"dateSelected($event, 'second', selectEvent.SELECTION, true)\"\n                        *ngSwitchCase=\"'time'\"\n                        [config]=\"timeSelectConfig\"\n                        [ngModel]=\"_selected && _selected[0]\"\n                        [theme]=\"theme\">\n        </dp-time-select>\n\n        <dp-day-time-calendar #daytimeCalendar\n                              (onChange)=\"dateSelected($event, 'second', selectEvent.SELECTION, true)\"\n                              (onGoToCurrent)=\"goToCurrent()\"\n                              (onLeftNav)=\"onLeftNavClick($event)\"\n                              (onRightNav)=\"onRightNavClick($event)\"\n                              *ngSwitchCase=\"'daytime'\"\n                              [config]=\"dayTimeCalendarConfig\"\n                              [displayDate]=\"displayDate\"\n                              [ngModel]=\"_selected && _selected[0]\"\n                              [theme]=\"theme\">\n        </dp-day-time-calendar>\n      </div>\n    </div>\n  </ng-template>\n</div>\n","import {CalendarMode} from '../common/types/calendar-mode';\nimport {IDatePickerDirectiveConfig} from './date-picker-directive-config.model';\nimport {IDpDayPickerApi} from './date-picker.api';\nimport {DatePickerComponent} from './date-picker.component';\nimport {\n  ComponentFactoryResolver,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Optional,\n  Output,\n  ViewContainerRef\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {INavEvent} from '../common/models/navigation-event.model';\nimport {UtilsService} from '../common/services/utils/utils.service'\nimport {CalendarValue} from '../common/types/calendar-value';\nimport {ISelectionEvent} from '../common/types/selection-event.model';\nimport {SingleCalendarValue} from '../common/types/single-calendar-value';\nimport {Dayjs} from 'dayjs';\n\n@Directive({\n  exportAs: 'dpDayPicker',\n  selector: '[dpDayPicker]'\n})\nexport class DatePickerDirective implements OnInit {\n\n  @Output() open = new EventEmitter<void>();\n  @Output() close = new EventEmitter<void>();\n  @Output() onChange = new EventEmitter<CalendarValue>();\n  @Output() onGoToCurrent: EventEmitter<void> = new EventEmitter();\n  @Output() onLeftNav: EventEmitter<INavEvent> = new EventEmitter();\n  @Output() onRightNav: EventEmitter<INavEvent> = new EventEmitter();\n  @Output() onSelect: EventEmitter<ISelectionEvent> = new EventEmitter();\n  datePicker: DatePickerComponent;\n  api: IDpDayPickerApi;\n\n  constructor(public readonly viewContainerRef: ViewContainerRef,\n              public readonly elemRef: ElementRef,\n              public readonly componentFactoryResolver: ComponentFactoryResolver,\n              @Optional() public readonly formControl: NgControl,\n              public readonly utilsService: UtilsService) {\n  }\n\n  private _config: IDatePickerDirectiveConfig;\n\n  get config(): IDatePickerDirectiveConfig {\n    return this._config;\n  }\n\n  @Input('dpDayPicker') set config(config: IDatePickerDirectiveConfig) {\n    this._config = {\n      ...config,\n      hideInputContainer: true,\n      inputElementContainer: config.inputElementContainer ?? this.elemRef,\n    };\n    this.updateDatepickerConfig();\n    this.markForCheck();\n  }\n\n  private _theme: string;\n\n  get theme(): string {\n    return this._theme;\n  }\n\n  @Input() set theme(theme: string) {\n    this._theme = theme;\n    if (this.datePicker) {\n      this.datePicker.theme = theme;\n    }\n\n    this.markForCheck();\n  }\n\n  private _mode: CalendarMode = 'day';\n\n  get mode(): CalendarMode {\n    return this._mode;\n  }\n\n  @Input() set mode(mode: CalendarMode) {\n    this._mode = mode;\n    if (this.datePicker) {\n      this.datePicker.mode = mode;\n    }\n\n    this.markForCheck();\n  }\n\n  private _minDate: SingleCalendarValue;\n\n  get minDate(): SingleCalendarValue {\n    return this._minDate;\n  }\n\n  @Input() set minDate(minDate: SingleCalendarValue) {\n    this._minDate = minDate;\n    if (this.datePicker) {\n      this.datePicker.minDate = minDate;\n      this.datePicker.ngOnInit();\n    }\n\n    this.markForCheck();\n  }\n\n  private _maxDate: SingleCalendarValue;\n\n  get maxDate(): SingleCalendarValue {\n    return this._maxDate;\n  }\n\n  @Input() set maxDate(maxDate: SingleCalendarValue) {\n    this._maxDate = maxDate;\n    if (this.datePicker) {\n      this.datePicker.maxDate = maxDate;\n      this.datePicker.ngOnInit();\n    }\n\n    this.markForCheck();\n  }\n\n  private _minTime: SingleCalendarValue;\n\n  get minTime(): SingleCalendarValue {\n    return this._minTime;\n  }\n\n  @Input() set minTime(minTime: SingleCalendarValue) {\n    this._minTime = minTime;\n    if (this.datePicker) {\n      this.datePicker.minTime = minTime;\n      this.datePicker.ngOnInit();\n    }\n\n    this.markForCheck();\n  }\n\n  private _maxTime: SingleCalendarValue;\n\n  get maxTime(): SingleCalendarValue {\n    return this._maxTime;\n  }\n\n  @Input() set maxTime(maxTime: SingleCalendarValue) {\n    this._maxTime = maxTime;\n    if (this.datePicker) {\n      this.datePicker.maxTime = maxTime;\n      this.datePicker.ngOnInit();\n    }\n\n    this.markForCheck();\n  }\n\n  private _displayDate: Dayjs | string;\n\n  get displayDate(): Dayjs | string {\n    return this._displayDate;\n  }\n\n  @Input() set displayDate(displayDate: Dayjs | string) {\n    this._displayDate = displayDate;\n    this.updateDatepickerConfig();\n\n    this.markForCheck();\n  }\n\n  ngOnInit(): void {\n    this.datePicker = this.createDatePicker();\n    this.api = this.datePicker.api;\n    this.updateDatepickerConfig();\n    this.attachModelToDatePicker();\n    this.datePicker.theme = this.theme;\n  }\n\n  createDatePicker(): DatePickerComponent {\n    const factory = this.componentFactoryResolver.resolveComponentFactory(DatePickerComponent);\n    return this.viewContainerRef.createComponent(factory).instance;\n  }\n\n  attachModelToDatePicker() {\n    if (!this.formControl) {\n      return;\n    }\n\n    this.datePicker.onViewDateChange(this.formControl.value);\n\n    this.formControl.valueChanges.subscribe((value) => {\n      if (value !== this.datePicker.inputElementValue) {\n        const strVal = this.utilsService.convertToString(value, this.datePicker.componentConfig.format);\n        this.datePicker.onViewDateChange(strVal);\n      }\n    });\n\n    let setup = true;\n\n    this.datePicker.registerOnChange((value, changedByInput) => {\n      if (value) {\n        const isMultiselectEmpty = setup && Array.isArray(value) && !value.length;\n\n        if (!isMultiselectEmpty && !changedByInput) {\n          this.formControl.control.setValue(this.datePicker.inputElementValue);\n        }\n      }\n\n      const errors = this.datePicker.validateFn(value);\n\n      if (!setup) {\n        this.formControl.control.markAsDirty({\n          onlySelf: true\n        });\n      } else {\n        setup = false;\n      }\n\n      if (errors) {\n        if (errors.hasOwnProperty('format')) {\n          const {given} = errors['format'];\n          this.datePicker.inputElementValue = given;\n          if (!changedByInput) {\n            this.formControl.control.setValue(given);\n          }\n        }\n\n        this.formControl.control.setErrors(errors);\n      }\n    });\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.datePicker.onClick();\n  }\n\n  @HostListener('focus')\n  onFocus() {\n    this.datePicker.inputFocused();\n  }\n\n  @HostListener('keydown.enter')\n  onEnter() {\n    if (this.datePicker.componentConfig.closeOnEnter) {\n      this.datePicker.hideCalendar();\n    }\n  }\n\n  markForCheck() {\n    if (this.datePicker) {\n      this.datePicker.cd.markForCheck();\n    }\n  }\n\n  private updateDatepickerConfig() {\n    if (this.datePicker) {\n      this.datePicker.minDate = this.minDate;\n      this.datePicker.maxDate = this.maxDate;\n      this.datePicker.minTime = this.minTime;\n      this.datePicker.maxTime = this.maxTime;\n      this.datePicker.mode = this.mode || 'day';\n      this.datePicker.displayDate = this.displayDate;\n      this.datePicker.config = this.config;\n      this.datePicker.open = this.open;\n      this.datePicker.close = this.close;\n      this.datePicker.onChange = this.onChange;\n      this.datePicker.onGoToCurrent = this.onGoToCurrent;\n      this.datePicker.onLeftNav = this.onLeftNav;\n      this.datePicker.onRightNav = this.onRightNav;\n      this.datePicker.onSelect = this.onSelect;\n\n      this.datePicker.init();\n\n      if (this.datePicker.componentConfig.disableKeypress) {\n        this.elemRef.nativeElement.setAttribute('readonly', true);\n      } else {\n        this.elemRef.nativeElement.removeAttribute('readonly');\n      }\n    }\n  }\n}\n","import {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {DatePickerComponent} from './date-picker/date-picker.component';\nimport {DatePickerDirective} from './date-picker/date-picker.directive';\nimport {DayCalendarComponent} from './day-calendar/day-calendar.component';\nimport {MonthCalendarComponent} from './month-calendar/month-calendar.component';\nimport {TimeSelectComponent} from './time-select/time-select.component';\nimport {CalendarNavComponent} from './calendar-nav/calendar-nav.component';\nimport {DayTimeCalendarComponent} from './day-time-calendar/day-time-calendar.component';\nexport {DatePickerComponent} from './date-picker/date-picker.component';\nexport {DatePickerDirective} from './date-picker/date-picker.directive';\nexport {DayCalendarComponent} from './day-calendar/day-calendar.component';\nexport {DayTimeCalendarComponent} from './day-time-calendar/day-time-calendar.component';\nexport {TimeSelectComponent} from './time-select/time-select.component';\nexport {MonthCalendarComponent} from './month-calendar/month-calendar.component';\n\n@NgModule({\n  declarations: [\n    DatePickerComponent,\n    DatePickerDirective,\n    DayCalendarComponent,\n    MonthCalendarComponent,\n    CalendarNavComponent,\n    TimeSelectComponent,\n    DayTimeCalendarComponent\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    OverlayModule\n  ],\n  exports: [\n    DatePickerComponent,\n    DatePickerDirective,\n    MonthCalendarComponent,\n    DayCalendarComponent,\n    TimeSelectComponent,\n    DayTimeCalendarComponent\n  ]\n})\nexport class DpDatePickerModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UtilsService","i2.DayCalendarService","i3.TimeSelectService","i4.DayTimeCalendarService","i1","i2","i1.MonthCalendarService","i2.UtilsService","i5.CalendarNavComponent","i1.DayCalendarService","i4","i5","i6.MonthCalendarComponent","i7.CalendarNavComponent","i1.TimeSelectService","i1.DayTimeCalendarService","i3","i4.DayCalendarComponent","i5.TimeSelectComponent","i1.DatePickerService","i6","i7.DayCalendarComponent","i8.MonthCalendarComponent","i9.TimeSelectComponent","i10.DayTimeCalendarComponent"],"mappings":"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"}