{"version":3,"file":"libusoftcicom-lc-datepicker.mjs","sources":["../../../projects/libusoftcicom/lc-datepicker/src/lib/lc-date-picker-adapter.class.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/enums.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/time-picker/time-picker.class.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/time-picker/time-spinner.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/time-picker/time-spinner.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/time-picker/time-picker.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/time-picker/time-picker.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/time-picker-compact/time-spinner-compact.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/time-picker-compact/time-spinner-compact.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/time-picker-compact/time-picker-compact.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/time-picker-compact/time-picker-compact.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/base-date-picker.class.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/day-picker/day-picker.class.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/day-picker/day-picker-button.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/day-picker/day-picker-button.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/day-picker/day-picker.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/day-picker/day-picker.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/month-picker/month-picker.class.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/month-picker/month-picker-button.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/month-picker/month-picker-button.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/month-picker/month-picker.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/month-picker/month-picker.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/date-time.class.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/year-picker/year-picker.class.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/year-picker/year-picker-button.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/year-picker/year-picker-button.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/year-picker/year-picker.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/year-picker/year-picker.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/confirm-button/confirm-button.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/confirm-button/confirm-button.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/calendar-background/calendar-background.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/calendar-background/calendar-background.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/lc-datepicker/lc-date-picker.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/lc-datepicker/lc-date-picker.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/header/header.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/header/header.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/lc-date-range-picker/lc-date-range-picker.component.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/lc-date-range-picker/lc-date-range-picker.component.html","../../../projects/libusoftcicom/lc-datepicker/src/lib/lc-date-picker-control.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/lc-date-picker-config.ts","../../../projects/libusoftcicom/lc-datepicker/src/lib/lc-date-picker.module.ts","../../../projects/libusoftcicom/lc-datepicker/src/public-api.ts","../../../projects/libusoftcicom/lc-datepicker/src/libusoftcicom-lc-datepicker.ts"],"sourcesContent":["import {DateTime} from './date-time.class';\r\nimport { ITimeUnit } from './base-date-picker.class';\r\n\r\n/**\r\n * Represents different parts of a date and time.\r\n *\r\n * @enum {number}\r\n */\r\nexport enum DateTimePart {\r\n  YEAR,\r\n  MONTH,\r\n  DATE,\r\n  HOUR,\r\n  HOUR_AMPM,\r\n  MINUTE,\r\n  AMPM\r\n}\r\n\r\n/**\r\n * The abstract class LCDatePickerAdapter provides a set of methods\r\n * for manipulating and formatting date and time values.\r\n * This class serves as a base class for different Datepicker adapters.\r\n *\r\n * @abstract\r\n */\r\nexport abstract class LCDatePickerAdapter {\r\n\r\n  /**\r\n   * Represents the number of days in a week.\r\n   *\r\n   * @constant {number}\r\n   * @default 7\r\n   */\r\n  public readonly DAYS_IN_WEEK = 7;\r\n\r\n  /**\r\n   * Returns the current DateTime in the specified timezone.\r\n   *\r\n   * @param {string} timezone - The timezone to use for the DateTime.\r\n   * If not specified, it will be implementation specific.\r\n   *\r\n   * @return {DateTime} - The current DateTime object.\r\n   */\r\n  public abstract now(timezone?: string): DateTime;\r\n\r\n  /**\r\n   * Calculates the current date without the time component in the specified timezone.\r\n   *\r\n   * @param {string} timezone - The timezone to calculate the current date in.\r\n   * If not specified, it will be implementation specific.\r\n   *\r\n   * @return {DateTime} - The current date in the specified timezone.\r\n   */\r\n  public abstract today(timezone?: string): DateTime;\r\n\r\n  /**\r\n   * Sets the specified parts of the date and time represented by this DateTime object.\r\n   *\r\n   * @param {DateTime} dateTime - The DateTime object to set the parts on.\r\n   * @param {Object} update - An object containing the parts to update. Each part is optional and can include:\r\n   *                          - year: The year value.\r\n   *                          - month: The month value (0-11).\r\n   *                          - date: The day of the month value (1-31).\r\n   *                          - hour: The hour value (0-23).\r\n   *                          - minute: The minute value (0-59).\r\n   *                          - second: The second value (0-59).\r\n   *                          - millisecond: The millisecond value (0-999).\r\n   *                          - timezone: The timezone value (e.g. 'GMT', 'UTC', 'America/New_York').\r\n   *\r\n   * @return {DateTime} A new DateTime object with the specified parts updated.\r\n   * The original DateTime object is not modified.\r\n   */\r\n  public abstract setParts(\r\n    dateTime: DateTime,\r\n    update: {\r\n      year?: number,\r\n      month?: number,\r\n      date?: number,\r\n      hour?: number,\r\n      minute?: number,\r\n      second?: number,\r\n      millisecond?: number,\r\n      timezone?: string,\r\n    }): DateTime;\r\n\r\n  /**\r\n   * Adds the specified amount of the specified time unit to the given date and time.\r\n   *\r\n   * @param {DateTime} dateTime - The date and time to add the duration to.\r\n   * @param {number} amount - The amount to add.\r\n   * @param {ITimeUnit} unit - The time unit to add.\r\n   * @return {DateTime} The updated date and time after adding the duration.\r\n   */\r\n  public abstract add(dateTime: DateTime, amount: number, unit: ITimeUnit): DateTime;\r\n\r\n  /**\r\n   * Subtracts the specified amount of time units from the given date and time.\r\n   *\r\n   * @param {DateTime} dateTime - The date and time from which to subtract the duration.\r\n   * @param {number} amount - The amount to subtract.\r\n   * @param {ITimeUnit} unit - The time unit to subtract.\r\n   *\r\n   * @return {DateTime} - The updated date and time after subtracting the duration.\r\n   */\r\n  public abstract subtract(dateTime: DateTime, amount: number, unit: ITimeUnit): DateTime;\r\n\r\n  /**\r\n   * Returns the weekday of the given date, where 0 represents Monday, 1 represents Tuesday, etc.\r\n   *\r\n   * @param {DateTime} date - The date for which to find the weekday.\r\n   * @return {number} - The weekday number.\r\n   */\r\n  public abstract getWeekday(date: DateTime): number;\r\n\r\n  /**\r\n   * Returns the first day of the week for the given locale, where 0 represents Monday, 1 represents Tuesday, etc.\r\n   *\r\n   * @param {string} locale - The locale for which to retrieve the first day of the week.\r\n   *\r\n   * @return {number} - The first day of the week for the given locale.\r\n   */\r\n  public abstract getFirstDayOfWeek(locale: string): number;\r\n\r\n  /**\r\n   * Returns the start of the year for a given date.\r\n   *\r\n   * @param {DateTime} date - The date for which to determine the start of the year.\r\n   * @return {DateTime} The start of the year for the given date.\r\n   */\r\n  public abstract getStartOfYear(date: DateTime): DateTime;\r\n\r\n  /**\r\n   * Returns the end of the year for the given date.\r\n   *\r\n   * @param {DateTime} date The date for which to determine the end of the year.\r\n   *\r\n   * @return {DateTime} The end of the year for the given date.\r\n   */\r\n  public abstract getEndOfYear(date: DateTime): DateTime;\r\n\r\n  /**\r\n   * Retrieves the start of the month for the given date.\r\n   *\r\n   * @param {DateTime} date - The date for which to retrieve the start of the month.\r\n   * @return {DateTime} - The start of the month for the given date.\r\n   */\r\n  public abstract getStartOfMonth(date: DateTime): DateTime;\r\n\r\n  /**\r\n   * Returns the end of the month for the given date.\r\n   *\r\n   * @param {DateTime} date - The date for which to retrieve the end of the month.\r\n   * @return {DateTime} - The end of the month for the given date.\r\n   */\r\n  public abstract getEndOfMonth(date: DateTime): DateTime;\r\n\r\n  /**\r\n   * Determines if the given date is chronologically before another date.\r\n   *\r\n   * @param {DateTime} dateTime - The date to check.\r\n   * @param {DateTime} otherDateTime - The date to compare against.\r\n   * @return {boolean} - True if date is before the other date, false otherwise.\r\n   */\r\n  public abstract isBefore(dateTime: DateTime, otherDateTime: DateTime): boolean;\r\n\r\n  /**\r\n   * Determines whether the given date is chronologically after another date.\r\n   *\r\n   * @param {DateTime} dateTime - The date to check.\r\n   * @param {DateTime} otherDateTime - The date to compare against.\r\n   *\r\n   * @return {boolean} - True if the date is after the other date, false otherwise.\r\n   */\r\n  public abstract isAfter(dateTime: DateTime, otherDateTime: DateTime): boolean;\r\n\r\n  /**\r\n   * Checks if the given date is chronologically the same as another date.\r\n   *\r\n   * @param {DateTime} dateTime - The date to check.\r\n   * @param {DateTime} otherDateTime - The date to compare against.\r\n   * @return {boolean} - True if the date objects are chronologically the same, false otherwise.\r\n   */\r\n  public abstract isSame(dateTime: DateTime, otherDateTime: DateTime): boolean;\r\n\r\n  /**\r\n   * Determines whether a given date falls between a minimum and maximum date (inclusive).\r\n   *\r\n   * @param {DateTime} dateTime - The date to check.\r\n   * @param {DateTime} minimumDateTime - The minimum date.\r\n   * @param {DateTime} maximumDateTime - The maximum date.\r\n   *\r\n   * @return {boolean} - True if the date is between the minimum and maximum dates;\r\n   * otherwise, false.\r\n   */\r\n  public abstract isBetween(dateTime: DateTime, minimumDateTime: DateTime, maximumDateTime: DateTime): boolean;\r\n\r\n  /**\r\n   * Converts a DateTime object to its equivalent string representation in ISO 8601 format.\r\n   *\r\n   * @param {DateTime} date - The DateTime object to convert.\r\n   * @param {boolean} [keepOffset=false] - If true, the original offset of the DateTime object will be displayed,\r\n   *  otherwise it will be converted to UTC.\r\n   * @return {string} The string representation of the date in ISO 8601 format.\r\n   */\r\n  public abstract toISOString(date: DateTime, keepOffset?: boolean): string;\r\n\r\n  /**\r\n   * Retrieves an array of abbreviated localized weekdays.\r\n   *\r\n   * @param {string} locale - The locale for which the weekdays should be retrieved.\r\n   *\r\n   * @return {string[]} - An array of abbreviated localized weekdays.\r\n   */\r\n  public abstract getLocalizedWeekdaysShort(locale: string): string[];\r\n\r\n  /**\r\n   * Retrieves an array of abbreviated localized month names.\r\n   *\r\n   * @param {string} locale - The locale for which the months should be retrieved.\r\n   *\r\n   * @return {string[]} An array of abbreviated localized month names.\r\n   */\r\n  public abstract getLocalizedMonthsShort(locale: string): string[];\r\n\r\n  /**\r\n   * Formats a specific part of a date according to the given locale.\r\n   *\r\n   * @param {DateTime} dateTime - The date to be formatted.\r\n   * @param {DateTimePart} dateTimePart - The specific part of the date to format.\r\n   * @param {string} [locale] - The locale to use for formatting. Optional, default is implementation specific.\r\n   * @return {string} - The formatted string representation of the specified date part.\r\n   */\r\n  public abstract formatDateTimePart(dateTime: DateTime, dateTimePart: DateTimePart, locale?: string): string;\r\n\r\n  /**\r\n   * Parses the given date string using the provided format and locale,\r\n   * and returns a DateTime object.\r\n   *\r\n   * @param {string} dateTime The string representation of the date and time.\r\n   * @param {string} format The format of the dateTime string. Must be compatible\r\n   * with the formatting patterns supported by the underlying implementation.\r\n   * @param {string} [locale] The locale to use for parsing the date string.\r\n   * Optional, default is implementation specific.\r\n   *\r\n   * @return {DateTime} A DateTime object representing the parsed date and time.\r\n   */\r\n  public abstract parseString(dateTime: string, format: string, locale?: string): DateTime;\r\n\r\n  /**\r\n   * Formats a DateTime object into a string representation according to the specified format and locale.\r\n   *\r\n   * @param {DateTime} dateTime - The date to be formatted.\r\n   * @param {string} format - The format string pattern used for the formatting. Must be compatible\r\n   * with the formatting patterns supported by the underlying implementation.\r\n   * @param {string} [locale] - The locale to be used for the formatting.\r\n   * Optional, default is implementation specific.\r\n   *\r\n   * @return {string} The formatted string representation of the date.\r\n   */\r\n  public abstract formatDateTime(dateTime: DateTime, format: string, locale?: string): string;\r\n\r\n\r\n  /**\r\n   * Converts an ISO 8601 formatted string to a DateTime object.\r\n   *\r\n   * @param {string} dateTime - ISO 8601 formatted string.\r\n   * @param {string} timezone - The timezone to use for the date.\r\n   * If not specified, it will be implementation specific.\r\n   * @return {DateTime} A DateTime object representing the converted ISO 8601 string.\r\n   */\r\n  public abstract fromISOString(dateTime: string, timezone?: string): DateTime;\r\n}\r\n","export enum ECalendarType {\r\n    Time,\r\n    DateTime,\r\n    Date,\r\n    MonthYear,\r\n    Year,\r\n    DateRange\r\n}\r\n\r\nexport enum ECalendarNavigation {\r\n    Up,\r\n    Right,\r\n    Down,\r\n    Left,\r\n    PageUp,\r\n    PageDown,\r\n    Confirm,\r\n    Close\r\n}\r\n\r\nexport enum EHourFormat {\r\n  TWENTY_FOUR_HOUR,\r\n  TWELVE_HOUR\r\n}\r\n\r\nexport enum DateType {\r\n  REGULAR,\r\n  FROM,\r\n  TO,\r\n}\r\n","import {DateTimePart, LCDatePickerAdapter} from '../lc-date-picker-adapter.class';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport { EHourFormat } from '../enums';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\n\r\n@Injectable()\r\nexport class TimePicker {\r\n\r\n    private readonly HOURS_IN_DAY = 24;\r\n    private readonly HOURS_IN_DAY_AMPM = 12;\r\n    private readonly MINUTES_IN_HOUR = 60;\r\n\r\n    private control: LCDatePickerControl;\r\n\r\n    private readonly calendarChanges: Subject<void> = new Subject();\r\n\r\n    constructor(\r\n      private readonly dateAdapter: LCDatePickerAdapter,\r\n    ) {}\r\n\r\n  public setControl(control: LCDatePickerControl): void {\r\n    this.control = control;\r\n  }\r\n\r\n    public addHour(): void {\r\n        this.control.setValue(\r\n            this.dateAdapter.setParts(\r\n                this.control.getValue(),\r\n                {hour: (this.control.getValue().getHour() + 1) % this.HOURS_IN_DAY}\r\n            ));\r\n        this.updateTime(false);\r\n    }\r\n\r\n    public subtractHour(): void {\r\n        this.control.setValue(\r\n            this.dateAdapter.setParts(\r\n                this.control.getValue(),\r\n                {hour: (this.control.getValue().getHour() - 1 + this.HOURS_IN_DAY) % this.HOURS_IN_DAY}\r\n            ));\r\n        this.updateTime(true);\r\n    }\r\n\r\n    public addMinute(): void {\r\n        this.control.setValue(\r\n            this.dateAdapter.setParts(\r\n                this.control.getValue(),\r\n                {minute: (this.control.getValue().getMinute() + 1) % this.MINUTES_IN_HOUR}\r\n            ));\r\n        this.updateTime(false);\r\n    }\r\n\r\n    public subtractMinute(): void {\r\n        this.control.setValue(\r\n            this.dateAdapter.setParts(\r\n                this.control.getValue(),\r\n                {minute: (this.control.getValue().getMinute() - 1 + this.MINUTES_IN_HOUR) % this.MINUTES_IN_HOUR}\r\n            ));\r\n        this.updateTime(true);\r\n    }\r\n\r\n    public updateTime(reverse: boolean): void {\r\n\r\n        let updatedTime = false;\r\n\r\n        this.control.getDisabledTimeRanges().forEach(timeRange => {\r\n            const currentTime =\r\n                this.dateAdapter.setParts(\r\n                    this.control.getValue(),\r\n                    {second: 0, millisecond: 0}\r\n                );\r\n\r\n            const minimumTime =\r\n                this.dateAdapter.setParts(currentTime, {\r\n                    hour: timeRange.startTime.hour,\r\n                    minute: timeRange.startTime.minute\r\n                });\r\n\r\n            const maximumTime =\r\n                this.dateAdapter.setParts(currentTime, {\r\n                    hour: timeRange.stopTime.hour,\r\n                    minute: timeRange.stopTime.minute\r\n                });\r\n\r\n\r\n            if (this.dateAdapter.isBetween(currentTime, minimumTime, maximumTime)) {\r\n\r\n                if (reverse) {\r\n                    this.control.setValue(this.dateAdapter.subtract(minimumTime, 1, 'minute'));\r\n                }\r\n                else{\r\n                    this.control.setValue(this.dateAdapter.add(maximumTime, 1, 'minute'));\r\n                }\r\n                updatedTime = true;\r\n            }\r\n        })\r\n\r\n        if (updatedTime) {\r\n            this.updateTime(reverse);\r\n        }\r\n        else {\r\n            this.calendarChanges.next();\r\n        }\r\n    }\r\n\r\n    public getFormattedHour(): string {\r\n        return this.dateAdapter.formatDateTimePart(\r\n            this.control.getValue(),\r\n            this.control.getHourFormat() === EHourFormat.TWENTY_FOUR_HOUR ? DateTimePart.HOUR : DateTimePart.HOUR_AMPM,\r\n            this.control.getLocalization());\r\n    }\r\n\r\n    public getFormattedMinute(): string {\r\n        return this.dateAdapter.formatDateTimePart(\r\n          this.control.getValue(),\r\n          DateTimePart.MINUTE,\r\n          this.control.getLocalization()\r\n        );\r\n    }\r\n\r\n    public getFormattedAMPM(): string {\r\n        return this.dateAdapter.formatDateTimePart(\r\n          this.control.getValue(),\r\n          DateTimePart.AMPM,\r\n          this.control.getLocalization()\r\n        );\r\n    }\r\n\r\n    public getCalendarChanges(): Observable<void> {\r\n        return this.calendarChanges;\r\n    }\r\n\r\n    public toggleMeridiem(): void {\r\n        this.control.setValue(\r\n            this.dateAdapter.setParts(\r\n                this.control.getValue(),\r\n                {hour: (this.control.getValue().getHour() + this.HOURS_IN_DAY_AMPM) % this.HOURS_IN_DAY}\r\n            ));\r\n        this.updateTime(false);\r\n    }\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  ChangeDetectionStrategy,\r\n  OnInit, OnDestroy, NgZone, Renderer2, ViewChild, ElementRef, EventEmitter, Output,\r\n} from '@angular/core';\r\nimport {fromEvent, Subscription} from 'rxjs';\r\nimport {LCDatePickerControl} from '../lc-date-picker-control';\r\n\r\n@Component({\r\n  selector: 'lc-time-spinner',\r\n  templateUrl: 'time-spinner.component.html',\r\n  styleUrls: ['./time-spinner.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LCTimeSpinnerComponent implements OnInit, OnDestroy {\r\n\r\n  private readonly subscriptions: Subscription[] = [];\r\n\r\n  @Input() public value: string;\r\n  @Input() public control: LCDatePickerControl;\r\n  @Output() public incremented: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() public decremented: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() public scrolled: EventEmitter<WheelEvent> = new EventEmitter<WheelEvent>();\r\n\r\n  @ViewChild('timeSpinner', { static: true })\r\n  public timeSpinnerElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('upArrowButton', { static: true })\r\n  public upArrowButtonElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('timeDigit', { static: true })\r\n  public timeDigitElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('downArrowButton', { static: true })\r\n  public downArrowButtonElement: ElementRef<HTMLDivElement>;\r\n\r\n  constructor(\r\n    private readonly ngZone: NgZone,\r\n    private readonly renderer: Renderer2,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n    this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n    this.setStyles();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.forEach(sub => sub.unsubscribe());\r\n    this.subscriptions.length = 0;\r\n  }\r\n\r\n  private registerViewEvents(): void {\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.upArrowButtonElement.nativeElement, 'click')\r\n        .subscribe(() => this.incremented.emit())\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.downArrowButtonElement.nativeElement, 'click')\r\n        .subscribe(() => this.decremented.emit())\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<WheelEvent>(this.timeSpinnerElement.nativeElement, 'wheel')\r\n        .subscribe((event) => this.scrolled.emit(event))\r\n    );\r\n  }\r\n\r\n  private setStyles(): void {\r\n    this.renderer\r\n      .setStyle(this.upArrowButtonElement.nativeElement, 'color', this.control.getTheme().fontColor);\r\n    this.renderer\r\n      .setStyle(this.downArrowButtonElement.nativeElement, 'color', this.control.getTheme().fontColor);\r\n    this.renderer\r\n      .setStyle(this.timeDigitElement.nativeElement, 'color', this.control.getTheme().fontColor);\r\n  }\r\n}\r\n","<div #timeSpinner class=\"time-spinner\">\r\n    <div #upArrowButton class=\"selectbtn\"><i class=\"fa fa-caret-up\" aria-hidden=\"true\"></i></div>\r\n    <div #timeDigit class=\"timeDigit\">{{value}}</div>\r\n    <div #downArrowButton class=\"selectbtn\"><i class=\"fa fa-caret-down\" aria-hidden=\"true\"></i></div>\r\n</div>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef, Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\nimport { TimePicker } from './time-picker.class';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { EHourFormat } from '../enums';\r\n\r\n@Component({\r\n  selector: 'lc-time-picker',\r\n  templateUrl: 'time-picker.component.html',\r\n  styleUrls: ['./time-picker.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [TimePicker]\r\n})\r\nexport class LCTimePickerComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n  public hourFormat: EHourFormat;\r\n  public formattedHour: string;\r\n  public formattedMinute: string;\r\n  public formattedAMPM: string;\r\n\r\n  private readonly subscriptions: Subscription[] = [];\r\n  private readonly meridiemSubscriptions: Subscription[] = [];\r\n\r\n  protected readonly EHourFormat = EHourFormat;\r\n\r\n  @Input() public control: LCDatePickerControl;\r\n\r\n  @ViewChild('timePicker', { static: true })\r\n  public timePickerElement: ElementRef<HTMLTableElement>;\r\n\r\n  @ViewChild('header', { static: true })\r\n  public headerElement: ElementRef<HTMLTableCellElement>;\r\n\r\n  @ViewChild('reset', { static: true })\r\n  public resetElement: ElementRef<HTMLDivElement>;\r\n\r\n  constructor(\r\n    private readonly cd: ChangeDetectorRef,\r\n    private readonly timePicker: TimePicker,\r\n    private readonly ngZone: NgZone,\r\n    private readonly renderer: Renderer2,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n\r\n    this.timePicker.setControl(this.control);\r\n\r\n    this.subscriptions.push(\r\n      this.timePicker.getCalendarChanges().subscribe(() => this.updateTemplate())\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      this.control.getResetChanges().subscribe(() => {\r\n        this.timePicker.updateTime(false);\r\n        this.updateTemplate();\r\n      })\r\n    );\r\n\r\n    this.updateTemplate();\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n\r\n    this.setStyles();\r\n    this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n\r\n    this.subscriptions.forEach(sub => sub.unsubscribe());\r\n    this.subscriptions.length = 0;\r\n    this.meridiemSubscriptions.forEach(sub => sub.unsubscribe());\r\n    this.meridiemSubscriptions.length = 0;\r\n\r\n    this.cd.detach();\r\n  }\r\n\r\n  public setTimeFormat(): void {\r\n    this.hourFormat = this.control.getHourFormat();\r\n  }\r\n\r\n  public addHour(): void {\r\n    this.timePicker.addHour();\r\n  }\r\n\r\n  public subtractHour(): void {\r\n    this.timePicker.subtractHour();\r\n  }\r\n\r\n  public addMinute(): void {\r\n    this.timePicker.addMinute();\r\n  }\r\n\r\n  public subtractMinute(): void {\r\n    this.timePicker.subtractMinute();\r\n  }\r\n\r\n  public hourScroll(event: WheelEvent): void {\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (event.deltaY < 0) {\r\n      this.addHour();\r\n    }\r\n    if (event.deltaY > 0) {\r\n      this.subtractHour();\r\n    }\r\n  }\r\n\r\n  public minuteScroll(event: WheelEvent): void {\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (event.deltaY < 0) {\r\n      this.addMinute();\r\n    }\r\n    if (event.deltaY > 0) {\r\n      this.subtractMinute();\r\n    }\r\n  }\r\n\r\n  public resetTime(): void {\r\n    this.control.reset();\r\n  }\r\n\r\n  public toggleMeridiem(): void {\r\n    this.timePicker.toggleMeridiem();\r\n  }\r\n\r\n  public scrollMeridiem(event: Event): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n\r\n    this.toggleMeridiem();\r\n  }\r\n\r\n  private updateTemplate(): void {\r\n    this.hourFormat = this.control.getHourFormat();\r\n    this.formattedHour = this.timePicker.getFormattedHour();\r\n    this.formattedMinute = this.timePicker.getFormattedMinute();\r\n    this.formattedAMPM = this.timePicker.getFormattedAMPM();\r\n\r\n    this.cd.detectChanges();\r\n\r\n    this.setStyles();\r\n  }\r\n\r\n  private setStyles(): void {\r\n\r\n    this.renderer\r\n      .setStyle(this.timePickerElement.nativeElement.tHead, 'background', this.control.getTheme().primaryColor);\r\n    this.renderer\r\n      .setStyle(this.timePickerElement.nativeElement.tBodies[0], 'color', this.control.getTheme().fontColor);\r\n    this.renderer\r\n      .setAttribute(\r\n        this.headerElement.nativeElement,\r\n        'colspan',\r\n        this.hourFormat === EHourFormat.TWENTY_FOUR_HOUR ? '3' : '4'\r\n      );\r\n  }\r\n\r\n  private registerViewEvents() {\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.resetElement.nativeElement, 'click')\r\n        .subscribe(() => this.resetTime())\r\n    );\r\n  }\r\n}\r\n","<table #timePicker aria-describedby=\"a control for choosing time\">\r\n    <thead>\r\n    <tr>\r\n        <th #header>\r\n            <div class=\"resetBtn\"> &nbsp; </div>\r\n            <div #reset class=\"resetBtn\"> <i class=\"fa fa-home\" aria-hidden=\"true\"></i> </div>\r\n        </th>\r\n    </tr>\r\n    </thead>\r\n    <tbody>\r\n    <tr>\r\n        <td class=\"pullRight\">\r\n          <lc-time-spinner\r\n            [value]=\"formattedHour\"\r\n            [control]=\"control\"\r\n            (incremented)=\"addHour()\"\r\n            (decremented)=\"subtractHour()\"\r\n            (scrolled)=\"hourScroll($event)\">\r\n          </lc-time-spinner>\r\n        </td>\r\n        <td class=\"divider\">:</td>\r\n        <td class=\"pullLeft\">\r\n          <lc-time-spinner\r\n            [value]=\"formattedMinute\"\r\n            [control]=\"control\"\r\n            (incremented)=\"addMinute()\"\r\n            (decremented)=\"subtractMinute()\"\r\n            (scrolled)=\"minuteScroll($event)\">\r\n          </lc-time-spinner>\r\n        </td>\r\n        <td>\r\n          <lc-time-spinner\r\n            *ngIf=\"hourFormat === EHourFormat.TWELVE_HOUR\"\r\n            [value]=\"formattedAMPM\"\r\n            [control]=\"control\"\r\n            (incremented)=\"toggleMeridiem()\"\r\n            (decremented)=\"toggleMeridiem()\"\r\n            (scrolled)=\"scrollMeridiem($event)\">\r\n          </lc-time-spinner>\r\n        </td>\r\n    </tr>\r\n    </tbody>\r\n</table>\r\n","import {\r\n  Component,\r\n  Input,\r\n  ChangeDetectionStrategy,\r\n  OnInit, OnDestroy, NgZone, Renderer2, ViewChild, ElementRef, EventEmitter, Output,\r\n} from '@angular/core';\r\nimport {fromEvent, Subscription} from 'rxjs';\r\nimport {LCDatePickerControl} from '../lc-date-picker-control';\r\n\r\n@Component({\r\n  selector: 'lc-time-spinner-compact',\r\n  templateUrl: 'time-spinner-compact.component.html',\r\n  styleUrls: ['./time-spinner-compact.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LCTimeSpinnerCompactComponent implements OnInit, OnDestroy {\r\n\r\n  private readonly subscriptions: Subscription[] = [];\r\n\r\n  @Input() public value: string;\r\n  @Input() public control: LCDatePickerControl;\r\n  @Output() public incremented: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() public decremented: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() public scrolled: EventEmitter<WheelEvent> = new EventEmitter<WheelEvent>();\r\n\r\n  @ViewChild('timeSpinner', { static: true })\r\n  public timeSpinnerElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('upArrowButton', { static: true })\r\n  public upArrowButtonElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('timeDigit', { static: true })\r\n  public timeDigitElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('downArrowButton', { static: true })\r\n  public downArrowButtonElement: ElementRef<HTMLDivElement>;\r\n\r\n  constructor(\r\n    private readonly ngZone: NgZone,\r\n    private readonly renderer: Renderer2,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n    this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n    this.setStyles();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.forEach(sub => sub.unsubscribe());\r\n    this.subscriptions.length = 0;\r\n  }\r\n\r\n  private registerViewEvents(): void {\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.upArrowButtonElement.nativeElement, 'click')\r\n        .subscribe(() => this.incremented.emit())\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.downArrowButtonElement.nativeElement, 'click')\r\n        .subscribe(() => this.decremented.emit())\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<WheelEvent>(this.timeSpinnerElement.nativeElement, 'wheel')\r\n        .subscribe((event) => this.scrolled.emit(event))\r\n    );\r\n  }\r\n\r\n  private setStyles(): void {\r\n    this.renderer\r\n      .setStyle(this.upArrowButtonElement.nativeElement, 'color', this.control.getTheme().fontColor);\r\n    this.renderer\r\n      .setStyle(this.downArrowButtonElement.nativeElement, 'color', this.control.getTheme().fontColor);\r\n    this.renderer\r\n      .setStyle(this.timeDigitElement.nativeElement, 'color', this.control.getTheme().fontColor);\r\n  }\r\n}\r\n","<div #timeSpinner class=\"time-spinner\">\r\n    <div #timeDigit class=\"timeLabel\">{{value}}</div>\r\n    <div class=\"arrows\">\r\n        <div #upArrowButton class=\"selectbtn\"><i class=\"fa fa-caret-up fa-2x\" aria-hidden=\"true\"></i></div>\r\n        <div #downArrowButton class=\"selectbtn\"><i class=\"fa fa-caret-down fa-2x\" aria-hidden=\"true\"></i></div>\r\n    </div>\r\n\r\n</div>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef, Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\nimport { TimePicker } from '../time-picker/time-picker.class';\r\nimport { Subscription } from 'rxjs';\r\nimport { EHourFormat } from '../enums';\r\n\r\n\r\n@Component({\r\n  selector: 'lc-time-picker-compact',\r\n  templateUrl: './time-picker-compact.component.html',\r\n  styleUrls: ['./time-picker-compact.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [TimePicker],\r\n})\r\nexport class LCTimePickerCompactComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n  public hourFormat: EHourFormat;\r\n  public formattedHour: string;\r\n  public formattedMinute: string;\r\n  public formattedAMPM: string;\r\n\r\n  protected readonly EHourFormat = EHourFormat;\r\n\r\n  private readonly subscriptions: Subscription[] = [];\r\n  private readonly meridiemSubscriptions: Subscription[] = [];\r\n\r\n  @Input() public control: LCDatePickerControl;\r\n\r\n  @ViewChild('timePicker', { static: true })\r\n  public timePickerElement: ElementRef<HTMLTableElement>;\r\n\r\n  constructor(\r\n    private readonly cd: ChangeDetectorRef,\r\n    private readonly timePicker: TimePicker,\r\n    private readonly renderer: Renderer2,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n    this.timePicker.setControl(this.control);\r\n    this.subscriptions.push(\r\n      this.timePicker.getCalendarChanges().subscribe(() => this.updateTemplate())\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      this.control.getResetChanges().subscribe(() => {\r\n        this.timePicker.updateTime(false);\r\n        this.updateTemplate();\r\n      })\r\n    );\r\n\r\n    this.updateTemplate();\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n\r\n    this.setStyles();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n\r\n    this.subscriptions.forEach(sub => sub.unsubscribe());\r\n    this.subscriptions.length = 0;\r\n    this.meridiemSubscriptions.forEach(sub => sub.unsubscribe());\r\n    this.meridiemSubscriptions.length = 0;\r\n\r\n    this.cd.detach();\r\n  }\r\n\r\n  public addHour(): void {\r\n    this.timePicker.addHour();\r\n  }\r\n\r\n  public subtractHour(): void {\r\n    this.timePicker.subtractHour();\r\n  }\r\n\r\n  public addMinute(): void {\r\n    this.timePicker.addMinute();\r\n  }\r\n\r\n  public subtractMinute(): void {\r\n    this.timePicker.subtractMinute();\r\n  }\r\n\r\n  public hourScroll(event: WheelEvent): void {\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (event.deltaY < 0) {\r\n      this.addHour();\r\n    }\r\n    if (event.deltaY > 0) {\r\n      this.subtractHour();\r\n    }\r\n  }\r\n\r\n  public minuteScroll(event: WheelEvent): void {\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (event.deltaY < 0) {\r\n      this.addMinute();\r\n    }\r\n    if (event.deltaY > 0) {\r\n      this.subtractMinute();\r\n    }\r\n  }\r\n\r\n  public toggleMeridiem(): void {\r\n    this.timePicker.toggleMeridiem();\r\n  }\r\n\r\n  public scrollMeridiem(event: Event): void {\r\n\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n\r\n    this.toggleMeridiem();\r\n  }\r\n\r\n  private setStyles(): void {\r\n\r\n    this.renderer\r\n      .setStyle(this.timePickerElement.nativeElement.tBodies[0], 'color', this.control.getTheme().fontColor);\r\n  }\r\n\r\n  private updateTemplate(): void {\r\n    this.hourFormat = this.control.getHourFormat();\r\n    this.formattedHour = this.timePicker.getFormattedHour();\r\n    this.formattedMinute = this.timePicker.getFormattedMinute();\r\n    this.formattedAMPM = this.timePicker.getFormattedAMPM();\r\n\r\n    this.cd.detectChanges();\r\n\r\n    this.setStyles();\r\n  }\r\n}\r\n","<table #timePicker class=\"timePicker\" aria-describedby=\"a control for choosing time\">\r\n    <tbody>\r\n        <tr>\r\n            <td class=\"clockCell\">\r\n                <i class=\"fa fa-clock-o fa-2x\" aria-hidden=\"true\"></i>\r\n            </td>\r\n            <td>\r\n                <lc-time-spinner-compact\r\n                  [value]=\"formattedHour\"\r\n                  [control]=\"control\"\r\n                  (incremented)=\"addHour()\"\r\n                  (decremented)=\"subtractHour()\"\r\n                  (scrolled)=\"hourScroll($event)\">\r\n                </lc-time-spinner-compact>\r\n            </td>\r\n                <td class=\"divider\">:</td>\r\n            <td>\r\n                <lc-time-spinner-compact\r\n                  [value]=\"formattedMinute\"\r\n                  [control]=\"control\"\r\n                  (incremented)=\"addMinute()\"\r\n                  (decremented)=\"subtractMinute()\"\r\n                  (scrolled)=\"minuteScroll($event)\">\r\n                </lc-time-spinner-compact>\r\n            </td>\r\n            <td>\r\n                <lc-time-spinner-compact\r\n                  *ngIf=\"hourFormat === EHourFormat.TWELVE_HOUR\"\r\n                  [value]=\"formattedAMPM\"\r\n                  [control]=\"control\"\r\n                  (incremented)=\"toggleMeridiem()\"\r\n                  (decremented)=\"toggleMeridiem()\"\r\n                  (scrolled)=\"scrollMeridiem($event)\">\r\n                </lc-time-spinner-compact>\r\n            </td>\r\n        </tr>\r\n    </tbody>\r\n</table>\r\n","import {DateTime} from './date-time.class';\r\nimport {Injectable} from '@angular/core';\r\nimport {Observable, Subject} from 'rxjs';\r\nimport { LCDatePickerControl } from './lc-date-picker-control';\r\n\r\nexport interface ICalendarItem {\r\n    value: number;\r\n    text?: string;\r\n    active?: boolean;\r\n    disabled?: boolean;\r\n    current?: boolean;\r\n}\r\n\r\nconst ITimeUnits = [\r\n    'year', 'years', 'y',\r\n    'month', 'months', 'M',\r\n    'week', 'weeks', 'w',\r\n    'day', 'days', 'd',\r\n    'hour', 'hours', 'h',\r\n    'minute', 'minutes', 'm',\r\n    'second', 'seconds', 's',\r\n    'millisecond', 'milliseconds', 'ms',\r\n] as const;\r\nexport type ITimeUnit = typeof ITimeUnits[number];\r\n\r\n\r\nexport enum Panel {\r\n    Time,\r\n    Day,\r\n    Month,\r\n    Year,\r\n}\r\n\r\n@Injectable()\r\nexport abstract class BaseDatePicker {\r\n\r\n    protected calendarData: ICalendarItem[][];\r\n    protected control: LCDatePickerControl;\r\n    protected calendarChanges: Subject<void> = new Subject();\r\n\r\n    public abstract getCalendarData(): ICalendarItem[][];\r\n    public abstract setCalendarData(calendarData: ICalendarItem[][]): void;\r\n    public abstract formatCalendarData(dateTime: DateTime): ICalendarItem[][];\r\n    public abstract setSelectedDate(date: DateTime): void;\r\n\r\n    public getCalendarChanges(): Observable<void> {\r\n        return this.calendarChanges;\r\n    }\r\n\r\n    public setControl(control: LCDatePickerControl): void {\r\n      this.control = control;\r\n    }\r\n}\r\n","import { DateTime } from '../date-time.class';\r\nimport { DateTimePart, LCDatePickerAdapter } from '../lc-date-picker-adapter.class';\r\nimport { Injectable } from '@angular/core';\r\nimport { BaseDatePicker, ICalendarItem } from '../base-date-picker.class';\r\nimport { ECalendarType } from '../enums';\r\n\r\n@Injectable()\r\nexport class DayPicker extends BaseDatePicker {\r\n\r\n  public readonly DAYS_IN_WEEK = 7;\r\n\r\n  private daysOfWeek: string[];\r\n\r\n  constructor(\r\n    private readonly dateAdapter: LCDatePickerAdapter,\r\n  ) {\r\n    super();\r\n  }\r\n\r\n  public setSelectedDate(date: DateTime): void {\r\n    if (\r\n      this.control.getMinDate() &&\r\n      this.control.getMaxDate() &&\r\n      this.dateAdapter.isSame(this.control.getMinDate(), this.control.getMaxDate())\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    if (date === undefined) {\r\n      date = this.dateAdapter.today(this.control.getTimezone());\r\n    }\r\n\r\n    this.initializeDate(date);\r\n    this.calendarData = this.formatCalendarData();\r\n    this.calendarChanges.next();\r\n  }\r\n\r\n  public getCalendarData(): ICalendarItem[][] {\r\n    return this.calendarData;\r\n  }\r\n\r\n  public setCalendarData(calendarData: ICalendarItem[][]): void {\r\n    this.calendarData = calendarData;\r\n    this.calendarChanges.next();\r\n  }\r\n\r\n  public getCalendarItem(row: number, column: number): ICalendarItem {\r\n    return this.calendarData[row][column];\r\n  }\r\n\r\n  public getShortDaysOfWeek(): string[] {\r\n    return this.daysOfWeek;\r\n  }\r\n\r\n  public initializeDaysOfWeek(): void {\r\n    this.daysOfWeek = this.dateAdapter.getLocalizedWeekdaysShort(this.control.getLocalization());\r\n  }\r\n\r\n  public formatCalendarData(): ICalendarItem[][] {\r\n\r\n    const monthStartDate = this.dateAdapter.setParts(this.control.getValue(), {date: 1});\r\n\r\n    const monthArray: ICalendarItem[][] = [];\r\n\r\n    const difference =\r\n      this.dateAdapter.getWeekday(monthStartDate) -\r\n      this.dateAdapter.getFirstDayOfWeek(this.control.getLocalization());\r\n    const offset = difference > 0 ? difference : difference + this.DAYS_IN_WEEK;\r\n\r\n    let week: ICalendarItem[] =\r\n      new Array(\r\n        offset)\r\n        .fill(null);\r\n\r\n    if (week.length === this.DAYS_IN_WEEK) {\r\n      monthArray.push(week);\r\n      week = [];\r\n    }\r\n\r\n    for (let i = 1; i <= this.dateAdapter.getEndOfMonth(this.control.getValue()).getDate(); i++) {\r\n\r\n      week.push(this.createCalendarItem(monthStartDate, i));\r\n      if (week.length === this.DAYS_IN_WEEK) {\r\n        monthArray.push(week);\r\n        week = [];\r\n      }\r\n    }\r\n\r\n    if (week.length !== 0) {\r\n      while (week.length < this.DAYS_IN_WEEK) {\r\n        week.push(null);\r\n      }\r\n\r\n      monthArray.push(week);\r\n    }\r\n\r\n    return monthArray;\r\n  }\r\n\r\n  public nextMonth(): void {\r\n\r\n    this.control.setValue(this.dateAdapter.add(this.control.getValue(),1, 'month'));\r\n    this.calendarData = this.formatCalendarData();\r\n    this.calendarChanges.next();\r\n  }\r\n\r\n  public previousMonth(): void {\r\n\r\n    this.control.setValue(this.dateAdapter.subtract(this.control.getValue(),1, 'month'));\r\n    this.calendarData = this.formatCalendarData();\r\n    this.calendarChanges.next();\r\n  }\r\n\r\n  public getFormattedMonth(): string {\r\n    return this.dateAdapter.formatDateTimePart(\r\n      this.control.getValue(),\r\n      DateTimePart.MONTH,\r\n      this.control.getLocalization()\r\n    );\r\n  }\r\n\r\n  public getFormattedYear(): string {\r\n    return this.dateAdapter.formatDateTimePart(\r\n      this.control.getValue(),\r\n      DateTimePart.YEAR,\r\n      this.control.getLocalization()\r\n    );\r\n  }\r\n\r\n  public previousDate(): void {\r\n    this.addDays(-1);\r\n  }\r\n\r\n  public nextDate(): void {\r\n    this.addDays(1);\r\n  }\r\n\r\n  public previousWeek(): void {\r\n    this.addDays(-this.DAYS_IN_WEEK);\r\n  }\r\n\r\n  public nextWeek(): void {\r\n    this.addDays(this.DAYS_IN_WEEK);\r\n  }\r\n\r\n  public isDateDisabled(date: DateTime): boolean {\r\n\r\n    if (this.control.getMinDate() && this.dateAdapter.isBefore(date, this.control.getMinDate())) {\r\n      return true;\r\n    }\r\n\r\n    if (this.control.getMaxDate() && this.dateAdapter.isAfter(date, this.control.getMaxDate())) {\r\n      return true;\r\n    }\r\n\r\n    return this.control.getDisabledDates()\r\n      .some(disabledDate =>\r\n        this.dateAdapter.isSame(\r\n          this.dateAdapter.setParts(date, {hour: 0, minute: 0, second: 0, millisecond: 0}),\r\n          this.dateAdapter.fromISOString(disabledDate, this.control.getTimezone())\r\n        )\r\n      );\r\n  }\r\n\r\n  private addDays(amount: number): void {\r\n    this.control.setValue(this.dateAdapter.add(this.control.getValue(), amount, 'days'));\r\n    this.calendarData = this.formatCalendarData();\r\n    this.calendarChanges.next();\r\n  }\r\n\r\n  private subtractDays(amount: number): void {\r\n    this.addDays(-amount);\r\n  }\r\n\r\n  private initializeDate(date: DateTime) {\r\n\r\n    if (this.control.getCalendarType() === ECalendarType.DateTime) {\r\n      date = this.dateAdapter.setParts(date, {second: 0, millisecond: 0});\r\n    }\r\n    else {\r\n      date = this.dateAdapter.setParts(date, {hour: 0, minute: 0, second: 0, millisecond: 0});\r\n    }\r\n\r\n\r\n    while (this.control.getDisabledDates().some(disabledDate =>\r\n      this.dateAdapter.isSame(date, this.dateAdapter.fromISOString(disabledDate, this.control.getTimezone())))) {\r\n      date = this.dateAdapter.add(date, 1, 'day');\r\n    }\r\n\r\n    if (this.control.getMinDate() && this.dateAdapter.isBefore(date, this.control.getMinDate())) {\r\n      this.control.setValue(this.control.getMinDate().clone());\r\n    } else if (this.control.getMaxDate() && this.dateAdapter.isAfter(date, this.control.getMaxDate())) {\r\n      this.control.setValue(this.control.getMaxDate().clone());\r\n    } else {\r\n      this.control.setValue(date.clone());\r\n    }\r\n  }\r\n\r\n  private createCalendarItem(monthStartDate: DateTime, date: number): ICalendarItem {\r\n    const item: ICalendarItem = {value: date};\r\n\r\n    const dateTime = this.dateAdapter.add(monthStartDate, date - 1, 'days');\r\n\r\n    if (this.isDateDisabled(dateTime)) {\r\n      item.disabled = true;\r\n    }\r\n\r\n    if (this.dateAdapter.isSame(dateTime, this.dateAdapter.today(this.control.getTimezone()))) {\r\n      item.current = true;\r\n    }\r\n\r\n    if (this.dateAdapter.isSame(dateTime, this.control.getValue())) {\r\n      item.active = true;\r\n    }\r\n\r\n    return item;\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { DayPicker } from './day-picker.class';\r\nimport { ICalendarItem } from '../base-date-picker.class';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\nimport { LCDatePickerAdapter } from '../lc-date-picker-adapter.class';\r\nimport { ECalendarType } from '../enums';\r\n\r\n@Component({\r\n  selector: 'lc-day-picker-button',\r\n  templateUrl: 'day-picker-button.component.html',\r\n  styleUrls: ['./day-picker-button.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LCDayPickerButtonComponent implements OnInit, OnDestroy {\r\n\r\n  private subscription: Subscription;\r\n\r\n  @Input() public item: ICalendarItem;\r\n  @Input() public row: number;\r\n  @Input() public column: number;\r\n  @Input() public control: LCDatePickerControl;\r\n\r\n  @ViewChild('buttonContainer', { static: true })\r\n  public dayPickerButtonContainerElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('button', { static: true })\r\n  public dayPickerButtonElement: ElementRef<HTMLButtonElement>;\r\n\r\n  constructor(\r\n    private readonly datePicker: DayPicker,\r\n    private readonly ngZone: NgZone,\r\n    private readonly renderer: Renderer2,\r\n    private readonly dateAdapter: LCDatePickerAdapter,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n    this.datePicker.setControl(this.control);\r\n    this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n\r\n    this.setStyles();\r\n    this.setClasses();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscription.unsubscribe();\r\n  }\r\n\r\n  private registerViewEvents(): void {\r\n\r\n    this.subscription =\r\n      fromEvent<PointerEvent>(this.dayPickerButtonElement.nativeElement, 'click')\r\n        .subscribe(() => {\r\n            if (this.datePicker.getCalendarItem(this.row, this.column).value === null) {\r\n              return;\r\n            }\r\n\r\n            if (this.datePicker.getCalendarItem(this.row, this.column).disabled) {\r\n              return;\r\n            }\r\n\r\n            const newDate = this.dateAdapter.setParts(\r\n              this.control.getValue(),\r\n              { date: this.datePicker.getCalendarItem(this.row, this.column).value }\r\n            );\r\n\r\n            this.control.setValue(\r\n              newDate,\r\n              this.control.getCalendarType() === ECalendarType.Date\r\n            );\r\n\r\n            this.datePicker.setSelectedDate(newDate);\r\n          }\r\n        );\r\n  }\r\n\r\n  private setStyles(): void {\r\n    this.renderer\r\n      .setStyle(this.dayPickerButtonElement.nativeElement, 'color', this.control.getTheme().fontColor);\r\n  }\r\n\r\n  private setClasses() {\r\n    if (this.item?.active) {\r\n      this.dayPickerButtonContainerElement.nativeElement.classList.add('active');\r\n    }\r\n\r\n    if (this.item?.disabled) {\r\n      this.dayPickerButtonContainerElement.nativeElement.classList.add('disabled');\r\n    }\r\n\r\n    if (this.item?.current) {\r\n      this.dayPickerButtonContainerElement.nativeElement.classList.add('current');\r\n    }\r\n  }\r\n}\r\n","<div #buttonContainer>\r\n    <button type=\"button\" #button>{{ item?.value }}</button>\r\n</div>\r\n\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  QueryList,\r\n  Renderer2,\r\n  ViewChild,\r\n  ViewChildren\r\n} from '@angular/core';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { DayPicker } from './day-picker.class';\r\nimport { ICalendarItem, Panel } from '../base-date-picker.class';\r\nimport { ECalendarNavigation, ECalendarType } from '../enums';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\n\r\n@Component({\r\n  selector: 'lc-day-picker',\r\n  templateUrl: 'day-picker.component.html',\r\n  styleUrls: ['./day-picker.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [DayPicker],\r\n})\r\nexport class LCDayPickerComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n  public formattedMonth: string;\r\n  public formattedYear: string;\r\n  public shortDaysOfWeek: string[];\r\n  public calendarData: ICalendarItem[][];\r\n\r\n  private readonly subscriptions: Subscription[] = [];\r\n\r\n  @Input() public control: LCDatePickerControl;\r\n\r\n  @ViewChild('dayPicker', { static: true })\r\n  public dayPickerElement: ElementRef<HTMLTableElement>;\r\n\r\n  @ViewChild('previousMonthButton', { static: true })\r\n  public previousMonthButtonElement: ElementRef<HTMLButtonElement>;\r\n\r\n  @ViewChild('nextMonthButton', { static: true })\r\n  public nextMonthButtonElement: ElementRef<HTMLButtonElement>;\r\n\r\n  @ViewChild('reset', { static: true })\r\n  public resetElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('monthPanel', { static: true })\r\n  public monthPanelElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('yearPanel', { static: true })\r\n  public yearPanelElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChildren('itemButtons', { read: ElementRef })\r\n  public itemButtonElements: QueryList<ElementRef>;\r\n\r\n  @ViewChildren('daysOfWeek', { read: ElementRef })\r\n  public daysOfWeekElements: QueryList<ElementRef>;\r\n\r\n  constructor(\r\n    private readonly cd: ChangeDetectorRef,\r\n    private readonly datePicker: DayPicker,\r\n    private readonly ngZone: NgZone,\r\n    private readonly renderer: Renderer2,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n\r\n    this.datePicker.setControl(this.control);\r\n    this.setupSubscriptions();\r\n\r\n    this.initializeCalendar();\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n\r\n    this.setStyles();\r\n\r\n    this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.forEach((sub) => sub.unsubscribe());\r\n    this.subscriptions.length = 0;\r\n\r\n    this.cd.detach();\r\n  }\r\n\r\n  public getDayPicker(): DayPicker {\r\n    return this.datePicker;\r\n  }\r\n\r\n  public nextMonth(): void {\r\n    this.datePicker.nextMonth();\r\n  }\r\n\r\n  public previousMonth(): void {\r\n    this.datePicker.previousMonth();\r\n  }\r\n\r\n  public monthScroll(event: WheelEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (event.deltaY < 0) {\r\n      this.nextMonth();\r\n    }\r\n    if (event.deltaY > 0) {\r\n      this.previousMonth();\r\n    }\r\n  }\r\n\r\n  public switchPanels(panel: Panel): void {\r\n    this.control.setPanel(panel);\r\n  }\r\n\r\n  public resetDate(): void {\r\n    this.control.reset();\r\n  }\r\n\r\n  private setupSubscriptions(): void {\r\n    this.subscriptions.push(this.control.getNavigationChanges().subscribe((dir) => this.navigate(dir)));\r\n\r\n    this.subscriptions.push(this.datePicker.getCalendarChanges().subscribe(() => this.updateTemplate()));\r\n    this.subscriptions.push(this.control.getResetChanges().subscribe(() => {\r\n      if (\r\n        this.control.getCalendarType() === ECalendarType.DateTime ||\r\n        this.control.getCalendarType() === ECalendarType.DateRange\r\n      ) {\r\n        this.datePicker.setSelectedDate(this.control.getValue());\r\n        this.updateTemplate();\r\n      }\r\n    }));\r\n  }\r\n\r\n  private updateTemplate(): void {\r\n    this.shortDaysOfWeek = this.datePicker.getShortDaysOfWeek();\r\n    this.calendarData = this.datePicker.getCalendarData();\r\n    this.formattedMonth = this.datePicker.getFormattedMonth();\r\n    this.formattedYear = this.datePicker.getFormattedYear();\r\n\r\n    this.cd.detectChanges();\r\n\r\n    this.setStyles();\r\n  }\r\n\r\n  private navigate(dir: ECalendarNavigation): void {\r\n    switch (dir) {\r\n      case ECalendarNavigation.PageDown:\r\n        this.previousMonth();\r\n        break;\r\n      case ECalendarNavigation.PageUp:\r\n        this.nextMonth();\r\n        break;\r\n      case ECalendarNavigation.Confirm:\r\n        if (!this.datePicker.isDateDisabled(this.control.getValue())) {\r\n          this.datePicker.setSelectedDate(this.control.getValue());\r\n        }\r\n\r\n        break;\r\n      case ECalendarNavigation.Left:\r\n        this.datePicker.previousDate();\r\n        break;\r\n      case ECalendarNavigation.Right:\r\n        this.datePicker.nextDate();\r\n        break;\r\n      case ECalendarNavigation.Up:\r\n        this.datePicker.previousWeek();\r\n        break;\r\n      case ECalendarNavigation.Down:\r\n        this.datePicker.nextWeek();\r\n        break;\r\n      default:\r\n        break;\r\n    }\r\n  }\r\n\r\n  private initializeCalendar(): void {\r\n\r\n    this.datePicker.initializeDaysOfWeek();\r\n    this.datePicker.setSelectedDate(this.control.getValue());\r\n  }\r\n\r\n  private registerViewEvents(): void {\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<WheelEvent>(this.dayPickerElement.nativeElement, 'wheel')\r\n        .subscribe((event) => this.monthScroll(event))\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.previousMonthButtonElement.nativeElement, 'click')\r\n        .subscribe(() => {\r\n          this.previousMonth();\r\n          this.control.focus();\r\n        })\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.nextMonthButtonElement.nativeElement, 'click')\r\n        .subscribe(() =>{\r\n          this.nextMonth();\r\n          this.control.focus();\r\n        })\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.resetElement.nativeElement, 'click')\r\n        .subscribe(() => this.resetDate())\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.monthPanelElement.nativeElement, 'click')\r\n        .subscribe(() => this.switchPanels(Panel.Month))\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.yearPanelElement.nativeElement, 'click')\r\n        .subscribe(() => this.switchPanels(Panel.Year))\r\n    );\r\n  }\r\n\r\n  private setStyles(): void {\r\n    this.renderer\r\n      .setStyle(this.dayPickerElement.nativeElement.tHead, 'background', this.control.getTheme().primaryColor);\r\n\r\n    this.daysOfWeekElements.forEach((e) =>\r\n      this.renderer.setStyle(e.nativeElement, 'color', this.control.getTheme().fontColor)\r\n    );\r\n\r\n    this.itemButtonElements.forEach((e) =>\r\n      this.renderer.setStyle(e.nativeElement, 'color', this.control.getTheme().fontColor)\r\n    );\r\n  }\r\n}\r\n","<table #dayPicker class=\"dayPicker\" aria-describedby=\"a control for choosing the date\">\r\n  <thead>\r\n  <tr>\r\n    <th colspan=\"7\">\r\n      <div class=\"selectbtn\">\r\n        <button type=\"button\" #previousMonthButton><i class=\"fa fa-caret-left fa-lg\" aria-hidden=\"true\"></i></button>\r\n      </div>\r\n      <div #reset class=\"selectbtn\">\r\n        <i class=\"fa fa-home\" aria-hidden=\"true\"></i>\r\n      </div>\r\n      <div #monthPanel class=\"selectbtn monthlabel\">\r\n        {{ formattedMonth }}\r\n      </div>\r\n      <div #yearPanel class=\"selectbtn yearlabel\">\r\n        {{ formattedYear }}\r\n      </div>\r\n      <div class=\"selectbtn pullRight\">\r\n        <button type=\"button\" #nextMonthButton><i class=\"fa fa-caret-right fa-lg\" aria-hidden=\"true\"></i></button>\r\n      </div>\r\n    </th>\r\n  </tr>\r\n  </thead>\r\n  <tbody>\r\n    <tr class=\"days\">\r\n      <td #daysOfWeek *ngFor=\"let item of shortDaysOfWeek\" class=\"dayName\">\r\n        <span>{{ item }}</span>\r\n      </td>\r\n    </tr>\r\n    <tr *ngFor=\"let row of calendarData; let i = index\">\r\n      <td *ngFor=\"let item of row; let j = index\">\r\n        <lc-day-picker-button [control]=\"control\" [item]=\"item\" [row]=\"i\" [column]=\"j\" *ngIf=\"item\"></lc-day-picker-button>\r\n      </td>\r\n    </tr>\r\n  </tbody>\r\n</table>\r\n","import {DateTime} from '../date-time.class';\r\nimport {LCDatePickerAdapter} from '../lc-date-picker-adapter.class';\r\nimport {Injectable} from '@angular/core';\r\nimport {BaseDatePicker, ICalendarItem} from '../base-date-picker.class';\r\n\r\n@Injectable()\r\nexport class MonthPicker extends BaseDatePicker {\r\n\r\n\tpublic ROW_LENGTH = 3;\r\n\r\n\tconstructor(\r\n    private readonly dateAdapter: LCDatePickerAdapter,\r\n  ) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tpublic getCalendarData(): ICalendarItem[][] {\r\n\t\treturn this.calendarData;\r\n\t}\r\n\r\n\tpublic setCalendarData(calendarData: ICalendarItem[][]): void {\r\n\t\tthis.calendarData = calendarData;\r\n\t\tthis.calendarChanges.next();\r\n\t}\r\n\r\n\tpublic getCalendarItem(row: number, column: number): ICalendarItem {\r\n\t\treturn this.calendarData[row][column];\r\n\t}\r\n\r\n\tpublic formatCalendarData(): ICalendarItem[][] {\r\n\t\tconst monthArray: ICalendarItem[][] = [];\r\n\r\n\t\tconst months = this.dateAdapter.getLocalizedMonthsShort(this.control.getLocalization());\r\n\r\n\t\tlet row: ICalendarItem[] = [];\r\n\r\n\t\tfor (let i = 0; i < months.length; i++) {\r\n\t\t\tconst item = this.createCalendarItem(months, i);\r\n\r\n\t\t\trow.push(item);\r\n\r\n\t\t\tif (row.length === this.ROW_LENGTH) {\r\n\t\t\t\tmonthArray.push(row);\r\n\t\t\t\trow = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn monthArray;\r\n\t}\r\n\r\n\tpublic previousYear(): void {\r\n\r\n\t\tthis.control.setValue(this.dateAdapter.subtract(this.control.getValue(), 1, 'years'));\r\n\t\tthis.calendarData = this.formatCalendarData();\r\n\t\tthis.calendarChanges.next();\r\n\t}\r\n\r\n\tpublic nextYear(): void {\r\n\r\n\t\tthis.control.setValue(this.dateAdapter.add(this.control.getValue(), 1, 'years'));\r\n\t\tthis.calendarData = this.formatCalendarData();\r\n\t\tthis.calendarChanges.next();\r\n\t}\r\n\r\n\tpublic setSelectedDate(date: DateTime): void {\r\n\r\n\t\tif (\r\n      this.control.getMinDate() &&\r\n      this.control.getMaxDate() &&\r\n      this.dateAdapter.isSame(this.control.getMinDate(), this.control.getMaxDate())\r\n    ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (date === undefined) {\r\n\t\t\tdate = this.dateAdapter.getStartOfMonth(this.dateAdapter.today(this.control.getTimezone()));\r\n\t\t}\r\n\r\n\t\tif (this.control.getMinDate() && this.dateAdapter.isBefore(date, this.control.getMinDate())) {\r\n\t\t\tthis.control.setValue(this.dateAdapter.getStartOfMonth(this.control.getMinDate()));\r\n\t\t}\r\n\t\telse if (this.control.getMaxDate() && this.dateAdapter.isAfter(date, this.control.getMaxDate())) {\r\n\t\t\tthis.control.setValue(this.dateAdapter.getStartOfMonth(this.control.getMaxDate()));\r\n\t\t}\r\n\r\n\t\tthis.calendarData = this.formatCalendarData();\r\n\t\tthis.calendarChanges.next();\r\n\t}\r\n\r\n\tpublic previousMonth(): void {\r\n\t\tthis.addMonths(-1);\r\n\t}\r\n\r\n\tpublic nextMonth(): void {\r\n\t\tthis.addMonths(1);\r\n\t}\r\n\r\n\tpublic previousRow(): void {\r\n\t\tthis.addMonths(-this.ROW_LENGTH);\r\n\t}\r\n\r\n\tpublic nextRow(): void {\r\n\t\tthis.addMonths(this.ROW_LENGTH);\r\n\t}\r\n\r\n\tprivate addMonths(amount: number): void {\r\n\t\tthis.control.setValue(this.dateAdapter.add(this.control.getValue(), amount, 'months'));\r\n\t\tthis.calendarData = this.formatCalendarData();\r\n\t\tthis.calendarChanges.next();\r\n\t}\r\n\r\n\tprivate subtractMonths(amount: number): void {\r\n\t\tthis.addMonths(-amount);\r\n\t}\r\n\r\n\tprivate createCalendarItem(months: string[], i: number): ICalendarItem {\r\n\t\tconst item: ICalendarItem = { value: i, text: months[i] };\r\n\r\n\t\tconst startOfMonth = this.dateAdapter.setParts(this.control.getValue(), {month: i, date: 1});\r\n\r\n\t\tif (this.isMonthDisabled(startOfMonth)) {\r\n\t\t\titem.disabled = true;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tthis.dateAdapter.isSame(\r\n\t\t\t\tstartOfMonth,\r\n\t\t\t\tthis.dateAdapter.getStartOfMonth(this.dateAdapter.today(this.control.getTimezone()))\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\titem.current = true;\r\n\t\t}\r\n\r\n\t\tif (\r\n      startOfMonth.getMonth() === this.control.getValue().getMonth() &&\r\n      startOfMonth.getYear() === this.control.getValue().getYear()\r\n    ) {\r\n\t\t\titem.active = true;\r\n\t\t}\r\n\t\treturn item;\r\n\t}\r\n\r\n\tprivate isMonthDisabled(date: DateTime): boolean {\r\n\t\tif (\r\n      this.control.getMinDate() &&\r\n      this.dateAdapter.isBefore(date, this.dateAdapter.getStartOfMonth(this.control.getMinDate()))\r\n    ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn (\r\n      this.control.getMaxDate() &&\r\n      this.dateAdapter.isAfter(date, this.dateAdapter.getEndOfMonth(this.control.getMaxDate()))\r\n    );\r\n\t}\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { ICalendarItem, Panel } from '../base-date-picker.class';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\nimport { MonthPicker } from './month-picker.class';\r\nimport { ECalendarType } from '../enums';\r\nimport { LCDatePickerAdapter } from '../lc-date-picker-adapter.class';\r\n\r\n@Component({\r\n  selector: 'lc-month-picker-button',\r\n  templateUrl: 'month-picker-button.component.html',\r\n  styleUrls: ['./month-picker-button.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LCMonthPickerButtonComponent implements OnInit, OnDestroy {\r\n\r\n  private subscription: Subscription;\r\n\r\n  @Input() public item: ICalendarItem;\r\n  @Input() public row: number;\r\n  @Input() public column: number;\r\n  @Input() public control: LCDatePickerControl;\r\n\r\n  @ViewChild('buttonContainer', { static: true })\r\n  public monthPickerButtonContainerElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('monthPickerButton', { static: true })\r\n  public monthPickerButtonElement: ElementRef<HTMLButtonElement>;\r\n\r\n  constructor(\r\n    private readonly datePicker: MonthPicker,\r\n    private readonly ngZone: NgZone,\r\n    private readonly renderer: Renderer2,\r\n    private readonly dateAdapter: LCDatePickerAdapter,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n    this.datePicker.setControl(this.control);\r\n    this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n\r\n    this.setStyles();\r\n    this.setClasses();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscription.unsubscribe();\r\n  }\r\n\r\n  private registerViewEvents(): void {\r\n\r\n    this.subscription =\r\n      fromEvent<PointerEvent>(this.monthPickerButtonElement.nativeElement, 'click')\r\n        .subscribe(() => {\r\n\r\n          const isMonthYear = this.control.getCalendarType() === ECalendarType.MonthYear;\r\n          this.control.setValue(\r\n            this.dateAdapter.setParts(\r\n              this.control.getValue(),\r\n              { month: this.datePicker.getCalendarItem(this.row, this.column).value }\r\n            ),\r\n            isMonthYear\r\n          );\r\n\r\n          if (!isMonthYear) {\r\n            this.control.setPanel(Panel.Day);\r\n          }\r\n        });\r\n  }\r\n\r\n  private setStyles(): void {\r\n    this.renderer.setStyle(this.monthPickerButtonElement.nativeElement, 'color', this.control.getTheme().fontColor)\r\n  }\r\n\r\n  private setClasses(): void {\r\n    if (this.item.active) {\r\n      this.monthPickerButtonContainerElement.nativeElement.classList.add('active');\r\n    }\r\n\r\n    if (this.item.disabled) {\r\n      this.monthPickerButtonContainerElement.nativeElement.classList.add('disabled');\r\n    }\r\n\r\n    if (this.item.current) {\r\n      this.monthPickerButtonContainerElement.nativeElement.classList.add('current');\r\n    }\r\n  }\r\n}\r\n","<div #buttonContainer>\r\n    <button type=\"button\" #monthPickerButton>{{ item.text }}</button>\r\n</div>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef, Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { LCDatePickerControl } from './../lc-date-picker-control';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { ICalendarItem, Panel } from '../base-date-picker.class';\r\nimport { MonthPicker } from './month-picker.class';\r\nimport { ECalendarNavigation } from '../enums';\r\nimport { DateTimePart, LCDatePickerAdapter } from '../lc-date-picker-adapter.class';\r\n\r\n@Component({\r\n  selector: 'lc-month-picker',\r\n  templateUrl: 'month-picker.component.html',\r\n  styleUrls: ['./month-picker.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [MonthPicker],\r\n})\r\nexport class LCMonthPickerComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n  public formattedYear: string;\r\n  public calendarData: ICalendarItem[][];\r\n\r\n  private readonly subscriptions: Subscription[] = [];\r\n\r\n  @Input() public control: LCDatePickerControl;\r\n\r\n  @ViewChild('monthPicker', { static: true })\r\n  public monthPickerElement: ElementRef<HTMLTableElement>;\r\n\r\n  @ViewChild('reset', { static: true })\r\n  public resetElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('yearPanel', { static: true })\r\n  public yearPanelElement: ElementRef<HTMLDivElement>;\r\n\r\n  constructor(\r\n    private readonly cd: ChangeDetectorRef,\r\n    private readonly datePicker: MonthPicker,\r\n    private readonly ngZone: NgZone,\r\n    private readonly renderer: Renderer2,\r\n    private readonly dateAdapter: LCDatePickerAdapter,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n\r\n    this.datePicker.setControl(this.control);\r\n    this.setupSubscriptions();\r\n\r\n    this.initializeCalendar();\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n\r\n    this.setStyles();\r\n\r\n    this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.forEach((sub) => sub.unsubscribe());\r\n    this.subscriptions.length = 0;\r\n\r\n    this.cd.detach();\r\n  }\r\n\r\n  public nextYear(): void {\r\n    this.datePicker.nextYear();\r\n  }\r\n\r\n  public previousYear(): void {\r\n    this.datePicker.previousYear();\r\n  }\r\n\r\n  public monthScroll(event: WheelEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (event.deltaY < 0) {\r\n      this.nextYear();\r\n    }\r\n    if (event.deltaY > 0) {\r\n      this.previousYear();\r\n    }\r\n  }\r\n\r\n  public switchPanels(panel: Panel): void {\r\n    this.control.setPanel(panel);\r\n  }\r\n\r\n  public resetDate(): void {\r\n    this.control.reset();\r\n  }\r\n\r\n  private setupSubscriptions(): void {\r\n    this.subscriptions.push(this.control.getNavigationChanges().subscribe(dir => this.navigate(dir)));\r\n    this.subscriptions.push(this.datePicker.getCalendarChanges().subscribe(() => this.updateTemplate()));\r\n  }\r\n\r\n  private updateTemplate(): void {\r\n    this.calendarData = this.datePicker.getCalendarData();\r\n    this.formattedYear =\r\n      this.dateAdapter.formatDateTimePart(\r\n        this.control.getValue(),\r\n        DateTimePart.YEAR,\r\n        this.control.getLocalization()\r\n      );\r\n\r\n    this.cd.detectChanges();\r\n\r\n    this.setStyles();\r\n  }\r\n\r\n  private navigate(dir: ECalendarNavigation): void {\r\n    if (dir === ECalendarNavigation.PageDown) {\r\n      this.previousYear();\r\n    } else if (dir === ECalendarNavigation.PageUp) {\r\n      this.nextYear();\r\n    } else if (dir === ECalendarNavigation.Confirm) {\r\n      this.datePicker.setCalendarData(this.datePicker.formatCalendarData());\r\n    } else if (dir === ECalendarNavigation.Left) {\r\n      this.datePicker.previousMonth();\r\n    } else if (dir === ECalendarNavigation.Right) {\r\n      this.datePicker.nextMonth();\r\n    } else if (dir === ECalendarNavigation.Up) {\r\n      this.datePicker.previousRow();\r\n    } else if (dir === ECalendarNavigation.Down) {\r\n      this.datePicker.nextRow();\r\n    }\r\n  }\r\n\r\n  private initializeCalendar(): void {\r\n    this.datePicker.setSelectedDate(this.control.getValue());\r\n  }\r\n\r\n  private registerViewEvents() {\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<WheelEvent>(this.monthPickerElement.nativeElement, 'wheel')\r\n        .subscribe((event) => this.monthScroll(event))\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.resetElement.nativeElement, 'click')\r\n        .subscribe(() => this.resetDate())\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.yearPanelElement.nativeElement, 'click')\r\n        .subscribe(() => this.switchPanels(Panel.Year))\r\n    );\r\n  }\r\n\r\n  private setStyles(): void {\r\n    this.renderer\r\n      .setStyle(this.monthPickerElement.nativeElement.tHead, 'background', this.control.getTheme().primaryColor);\r\n  }\r\n}\r\n","<table #monthPicker class=\"monthsCal\" aria-describedby=\"a control for choosing the month\">\r\n  <thead>\r\n  <tr>\r\n    <th colspan=\"4\">\r\n      <div class=\"selectbtn\">&nbsp;</div>\r\n      <div #reset class=\"selectbtn\"><i class=\"fa fa-home\" aria-hidden=\"true\"></i></div>\r\n      <div class=\"selectbtn monthlabel\">&nbsp;</div>\r\n      <div #yearPanel class=\"selectbtn yearlabel\">\r\n        {{ formattedYear }}\r\n      </div>\r\n    </th>\r\n  </tr>\r\n  </thead>\r\n  <tbody>\r\n  <tr *ngFor=\"let row of calendarData; let i = index\">\r\n    <td #items *ngFor=\"let item of row; let j = index\">\r\n      <lc-month-picker-button [control]=\"control\" [item]=\"item\" [row]=\"i\" [column]=\"j\"></lc-month-picker-button>\r\n    </td>\r\n  </tr>\r\n  </tbody>\r\n</table>\r\n","/**\r\n * Represents a specific date and time.\r\n */\r\nexport class DateTime {\r\n\r\n    private readonly year: number;\r\n    private readonly month: number;\r\n    private readonly date: number;\r\n    private readonly hour: number;\r\n    private readonly minute: number;\r\n    private readonly second: number;\r\n    private readonly millisecond: number;\r\n    private readonly timezone: string;\r\n\r\n    /**\r\n     * Creates a new instance of the DateTime class.\r\n     *\r\n     * @param {number} year - The year of the date.\r\n     * @param {number} month - The month of the date (0-11).\r\n     * @param {number} date - The day of the month.\r\n     * @param {number} hour - The hour of the day (0-23).\r\n     * @param {number} minute - The minutes.\r\n     * @param {number} second - The seconds.\r\n     * @param {number} millisecond - The milliseconds.\r\n     * @param {string} timezone - The name of the timezone of the date (e.g. 'GMT', 'UTC', 'America/New_York').\r\n     *\r\n     * @return {void}\r\n     */\r\n    constructor(\r\n        year: number,\r\n        month: number,\r\n        date: number,\r\n        hour: number,\r\n        minute: number,\r\n        second: number,\r\n        millisecond: number,\r\n        timezone: string,\r\n    ) {\r\n        this.year = year;\r\n        this.month = month;\r\n        this.date = date;\r\n        this.hour = hour ?? 0;\r\n        this.minute = minute ?? 0;\r\n        this.second = second ?? 0;\r\n        this.millisecond = millisecond ?? 0;\r\n        this.timezone = timezone ?? 'UTC';\r\n    }\r\n\r\n    /**\r\n     * Retrieves the year of the given date.\r\n     *\r\n     * @returns {number} The year.\r\n     */\r\n    public getYear(): number {\r\n        return this.year;\r\n    }\r\n\r\n    /**\r\n     * Retrieves the month of the given date.\r\n     *\r\n     * @returns {number} The month (0-11).\r\n     */\r\n    public getMonth(): number {\r\n        return this.month;\r\n    }\r\n\r\n    /**\r\n     * Retrieves the day of the month.\r\n     *\r\n     * @return {number} The day of the month.\r\n     */\r\n    public getDate(): number {\r\n        return this.date;\r\n    }\r\n\r\n    /**\r\n     * Retrieves the hour of the day.\r\n     *\r\n     * @return {number} The hour of the day (0-23).\r\n     */\r\n    public getHour(): number {\r\n        return this.hour;\r\n    }\r\n\r\n    /**\r\n     * Retrieves the minutes.\r\n     *\r\n     * @return {number} The minutes.\r\n     */\r\n    public getMinute(): number {\r\n        return this.minute;\r\n    }\r\n\r\n    /**\r\n     * Retrieves the seconds.\r\n     *\r\n     * @return {number} The seconds.\r\n     */\r\n    public getSecond(): number {\r\n        return this.second;\r\n    }\r\n\r\n    /**\r\n     * Retrieves the milliseconds.\r\n     *\r\n     * @return {number} The milliseconds.\r\n     */\r\n    public getMillisecond(): number {\r\n        return this.millisecond;\r\n    }\r\n\r\n    /**\r\n     * Retrieves the name of the timezone of the date (e.g. 'GMT', 'UTC', 'America/New_York').\r\n     *\r\n     * @return {number} The timezone.\r\n     */\r\n    public getTimeZone(): string {\r\n        return this.timezone;\r\n    }\r\n\r\n    /**\r\n     * Returns a new DateTime object with the same properties as the current instance.\r\n     *\r\n     * @returns {DateTime} A new DateTime object cloned from the current instance.\r\n     */\r\n    public clone(): DateTime {\r\n        return new DateTime(\r\n            this.year,\r\n            this.month,\r\n            this.date,\r\n            this.hour,\r\n            this.minute,\r\n            this.second,\r\n            this.millisecond,\r\n            this.timezone,\r\n        );\r\n    }\r\n}\r\n\r\n","import {DateTime} from '../date-time.class';\r\nimport {LCDatePickerAdapter} from '../lc-date-picker-adapter.class';\r\nimport { EventEmitter, Injectable } from '@angular/core';\r\nimport {BaseDatePicker, ICalendarItem} from '../base-date-picker.class';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class YearPicker extends BaseDatePicker {\r\n\r\n\tpublic readonly YEARS_PER_CALENDAR = 25;\r\n\tpublic readonly YEARS_PER_ROW = 5;\r\n\r\n  public selectedChanged: Subject<ICalendarItem> = new EventEmitter<ICalendarItem>();\r\n\r\n\tconstructor(\r\n    private readonly dateAdapter: LCDatePickerAdapter,\r\n  ) {\r\n\t\tsuper();\r\n\t}\r\n\r\n  public getSelectedChanged(): Observable<ICalendarItem> {\r\n    return this.selectedChanged.asObservable();\r\n  }\r\n\r\n\tpublic getCalendarData(): ICalendarItem[][] {\r\n\t\treturn this.calendarData;\r\n\t}\r\n\r\n\tpublic setCalendarData(calendarData: ICalendarItem[][]): void {\r\n\t\tthis.calendarData = calendarData;\r\n\t\tthis.calendarChanges.next();\r\n\t}\r\n\r\n\tpublic getCalendarItem(row: number, column: number): ICalendarItem {\r\n\t\treturn this.calendarData[row][column];\r\n\t}\r\n\r\n\tpublic setCalendarItem(row: number, column: number): void {\r\n    const item = this.calendarData[row][column];\r\n    if (!item || item.disabled) {\r\n      return;\r\n    }\r\n\r\n    this.selectedChanged.next(item);\r\n\t}\r\n\r\n\tpublic formatCalendarData(): ICalendarItem[][] {\r\n\r\n\t\tconst yearsArray: ICalendarItem[][] = [];\r\n\r\n    const currentYear = (this.control.getValue() as DateTime).getYear();\r\n\r\n\t\tconst minYear =\r\n      currentYear - currentYear % this.YEARS_PER_CALENDAR;\r\n\t\tconst maxYear = minYear + this.YEARS_PER_CALENDAR;\r\n\r\n\t\tlet yearsRow: ICalendarItem[] = [];\r\n\r\n\t\tfor (let i = minYear; i < maxYear; i++) {\r\n\t\t\tconst item = this.createCalendarItem(i);\r\n\t\t\tyearsRow.push(item);\r\n\r\n\t\t\tif (yearsRow.length === this.YEARS_PER_ROW) {\r\n\t\t\t\tyearsArray.push(yearsRow);\r\n\t\t\t\tyearsRow = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn yearsArray;\r\n\t}\r\n\r\n\tpublic nextYears(): void {\r\n\r\n\t\t// If the year of max date is e.g. 2021, this will return 2000 (assuming 25 years per group),\r\n\t\t// i.e. the year in the top left corner of the calendar.\r\n\t\t// This year is then used to prevent the user from going past the screen with the maximum date.\r\n\t\tconst minCalendarYear =\r\n      this.control.getMaxDate().getYear() - this.control.getMaxDate().getYear() % this.YEARS_PER_CALENDAR;\r\n\t\tif (this.control.getValue().getYear() >= minCalendarYear) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.control.setValue(this.dateAdapter.add(this.control.getValue(),this.YEARS_PER_CALENDAR, 'years'));\r\n\t\tthis.calendarData = this.formatCalendarData();\r\n\t\tthis.calendarChanges.next();\r\n\t}\r\n\r\n\tpublic previousYears(): void {\r\n\r\n\t\t// If the year of min date is e.g. 1912, this will return 1900 (assuming 25 years per group),\r\n\t\t// i.e. the year in the top left corner of the calendar.\r\n\t\t// This year is then used to prevent the user from going past the screen with the minimum date.\r\n\t\tconst minCalendarYear =\r\n      this.control.getMinDate().getYear() - this.control.getMinDate().getYear() % this.YEARS_PER_CALENDAR;\r\n\t\tif (this.control.getValue().getYear() < minCalendarYear + this.YEARS_PER_CALENDAR) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.control.setValue(this.dateAdapter.subtract(this.control.getValue(), this.YEARS_PER_CALENDAR, 'years'));\r\n\t\tthis.calendarData = this.formatCalendarData();\r\n\t\tthis.calendarChanges.next();\r\n\t}\r\n\r\n\tpublic previousYear(): void {\r\n\t\tthis.addYears(-1);\r\n\t}\r\n\r\n\tpublic nextYear(): void {\r\n\t\tthis.addYears(1);\r\n\t}\r\n\r\n\tpublic previousRow(): void {\r\n\t\tthis.addYears(-this.YEARS_PER_ROW);\r\n\r\n\t}\r\n\r\n\tpublic nextRow(): void {\r\n\t\tthis.addYears(this.YEARS_PER_ROW);\r\n\t}\r\n\r\n\tpublic setSelectedDate(): void {\r\n\r\n\t\tif (\r\n      this.control.getMinDate() &&\r\n      this.control.getMaxDate() &&\r\n      this.dateAdapter.isSame(this.control.getMinDate(), this.control.getMaxDate())\r\n    ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (\r\n      this.control.getMinDate() &&\r\n      this.dateAdapter.isBefore(this.control.getValue(), this.control.getMinDate())\r\n    ) {\r\n\t\t\tthis.control.setValue(this.dateAdapter.getStartOfYear(this.control.getMinDate()));\r\n\t\t}\r\n\t\telse if (\r\n      this.control.getMaxDate() &&\r\n      this.dateAdapter.isAfter(this.control.getValue(), this.control.getMaxDate())\r\n    ) {\r\n\t\t\tthis.control.setValue(this.dateAdapter.getStartOfYear(this.control.getMaxDate()));\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.control.setValue(this.dateAdapter.getStartOfYear(this.control.getValue()));\r\n\t\t}\r\n\r\n\t\tthis.calendarData = this.formatCalendarData();\r\n\t\tthis.calendarChanges.next();\r\n\t}\r\n\r\n\tpublic addYears(amount: number): void {\r\n\r\n\t\tconst newYear = this.dateAdapter.add(this.control.getValue(), amount, 'years');\r\n\r\n\t\tif (\r\n      newYear.getYear() < this.control.getMinDate().getYear() ||\r\n      newYear.getYear() > this.control.getMaxDate().getYear()\r\n    ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.control.setValue(newYear);\r\n\t\tthis.calendarData = this.formatCalendarData();\r\n\t\tthis.calendarChanges.next();\r\n\t}\r\n\r\n\tpublic subtractYears(amount: number): void {\r\n\t\tthis.addYears(-amount);\r\n\t}\r\n\r\n\tprivate isYearDisabled(date: DateTime): boolean {\r\n\t\tif (\r\n      this.control.getMinDate() &&\r\n      this.dateAdapter.isBefore(date, this.dateAdapter.getStartOfYear(this.control.getMinDate()))\r\n    ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn (\r\n      this.control.getMaxDate() &&\r\n      this.dateAdapter.isAfter(date, this.dateAdapter.getEndOfYear(this.control.getMaxDate()))\r\n    );\r\n\t}\r\n\r\n\tprivate createCalendarItem(i: number): ICalendarItem {\r\n\r\n\t\tconst item: ICalendarItem = { value: i };\r\n\r\n\t\tconst startOfYear = new DateTime(\r\n\t\t\ti,\r\n\t\t\t0,\r\n\t\t\t1,\r\n\t\t\t0,\r\n\t\t\t0,\r\n\t\t\t0,\r\n\t\t\t0,\r\n\t\t\tthis.control.getValue().getTimeZone()\r\n\t\t);\r\n\r\n\t\tif (this.isYearDisabled(startOfYear)) {\r\n\t\t\titem.disabled = true;\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tthis.dateAdapter.isSame(\r\n\t\t\t\tstartOfYear,\r\n\t\t\t\tthis.dateAdapter.getStartOfYear(this.dateAdapter.today(this.control.getTimezone()))\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\titem.current = true;\r\n\t\t}\r\n\r\n\t\tif (this.dateAdapter.isSame(startOfYear, this.control.getValue())) {\r\n\t\t\titem.active = true;\r\n\t\t}\r\n\t\treturn item;\r\n\t}\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { ICalendarItem, Panel } from '../base-date-picker.class';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\nimport { YearPicker } from './year-picker.class';\r\nimport { ECalendarType } from '../enums';\r\nimport { LCDatePickerAdapter } from '../lc-date-picker-adapter.class';\r\n\r\n@Component({\r\n  selector: 'lc-year-picker-button',\r\n  templateUrl: 'year-picker-button.component.html',\r\n  styleUrls: ['./year-picker-button.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LCYearPickerButtonComponent implements OnInit, OnDestroy {\r\n\r\n  private subscription: Subscription;\r\n\r\n  @Input() public item: ICalendarItem;\r\n  @Input() public row: number;\r\n  @Input() public column: number;\r\n  @Input() public control: LCDatePickerControl;\r\n\r\n  @ViewChild('buttonContainer', { static: true })\r\n  public yearPickerButtonContainerElement: ElementRef<HTMLDivElement>;\r\n\r\n  @ViewChild('yearPickerButton', { static: true })\r\n  public yearPickerButtonElement: ElementRef<HTMLButtonElement>;\r\n\r\n  constructor(\r\n    private readonly datePicker: YearPicker,\r\n    private readonly ngZone: NgZone,\r\n    private readonly renderer: Renderer2,\r\n    private readonly dateAdapter: LCDatePickerAdapter,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n    this.datePicker.setControl(this.control);\r\n    this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n    this.setStyles();\r\n    this.setClasses();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscription.unsubscribe();\r\n  }\r\n\r\n  private registerViewEvents(): void {\r\n\r\n    this.subscription =\r\n      fromEvent<PointerEvent>(this.yearPickerButtonElement.nativeElement, 'click')\r\n        .subscribe(() => {\r\n          const isYear = this.control.getCalendarType() === ECalendarType.Year;\r\n          this.control.setValue(\r\n            this.dateAdapter.setParts(\r\n              this.control.getValue(),\r\n              { year: this.datePicker.getCalendarItem(this.row, this.column).value }\r\n            ),\r\n            isYear\r\n          );\r\n\r\n          if (!isYear) {\r\n            this.control.setPanel(Panel.Month);\r\n          }\r\n        });\r\n  }\r\n\r\n  private setStyles(): void {\r\n    this.renderer.setStyle(this.yearPickerButtonElement.nativeElement, 'color', this.control.getTheme().fontColor)\r\n  }\r\n\r\n  private setClasses(): void {\r\n    if (this.item.active) {\r\n      this.yearPickerButtonContainerElement.nativeElement.classList.add('active');\r\n    }\r\n\r\n    if (this.item.disabled) {\r\n      this.yearPickerButtonContainerElement.nativeElement.classList.add('disabled');\r\n    }\r\n\r\n    if (this.item.current) {\r\n      this.yearPickerButtonContainerElement.nativeElement.classList.add('current');\r\n    }\r\n  }\r\n}\r\n","<div #buttonContainer>\r\n    <button type=\"button\" #yearPickerButton>{{item.value}}</button>\r\n</div>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef, Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { ICalendarItem } from '../base-date-picker.class';\r\nimport { YearPicker } from './year-picker.class';\r\nimport { ECalendarNavigation } from '../enums';\r\n\r\n@Component({\r\n  selector: 'lc-year-picker',\r\n  templateUrl: 'year-picker.component.html',\r\n  styleUrls: ['./year-picker.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [YearPicker],\r\n})\r\nexport class LCYearPickerComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n  public calendarData: ICalendarItem[][];\r\n\r\n  private readonly subscriptions: Subscription[] = [];\r\n\r\n  @Input() public control: LCDatePickerControl;\r\n\r\n  @ViewChild('yearPicker', { static: true })\r\n  public yearPickerElement: ElementRef<HTMLTableElement>;\r\n\r\n  @ViewChild('previousYearsButton', { static: true })\r\n  public previousYearsButtonElement: ElementRef<HTMLButtonElement>;\r\n\r\n  @ViewChild('nextYearsButton', { static: true })\r\n  public nextYearsButtonElement: ElementRef<HTMLButtonElement>;\r\n\r\n  @ViewChild('reset', { static: true })\r\n  public resetElement: ElementRef<HTMLDivElement>;\r\n\r\n  constructor(\r\n    private readonly cd: ChangeDetectorRef,\r\n    private readonly datePicker: YearPicker,\r\n    private readonly ngZone: NgZone,\r\n    private readonly renderer: Renderer2,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n    this.datePicker.setControl(this.control);\r\n    this.setupSubscriptions();\r\n    this.initializeCalendar();\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n    this.setStyles();\r\n\r\n    this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.forEach((sub) => sub.unsubscribe());\r\n    this.subscriptions.length = 0;\r\n\r\n    this.cd.detach();\r\n  }\r\n\r\n  public previousYears(): void {\r\n    this.datePicker.previousYears();\r\n  }\r\n\r\n  public nextYears(): void {\r\n    this.datePicker.nextYears();\r\n  }\r\n\r\n  public yearScroll(event: WheelEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (event.deltaY < 0) {\r\n      this.nextYears();\r\n    }\r\n    if (event.deltaY > 0) {\r\n      this.previousYears();\r\n    }\r\n  }\r\n\r\n  private setupSubscriptions(): void {\r\n\r\n    this.subscriptions.push(this.control.getNavigationChanges().subscribe((dir) => this.navigate(dir)));\r\n\r\n    this.subscriptions.push(\r\n      this.datePicker.getCalendarChanges().subscribe(() => {\r\n        this.calendarData = this.datePicker.getCalendarData();\r\n        this.cd.detectChanges();\r\n        this.setStyles();\r\n      })\r\n    );\r\n  }\r\n\r\n  private navigate(dir: ECalendarNavigation): void {\r\n    switch (dir) {\r\n      case ECalendarNavigation.PageDown:\r\n        this.nextYears();\r\n        break;\r\n      case ECalendarNavigation.PageUp:\r\n        this.previousYears();\r\n        break;\r\n      case ECalendarNavigation.Confirm:\r\n        this.datePicker.setCalendarData(this.datePicker.formatCalendarData());\r\n        break;\r\n      case ECalendarNavigation.Left:\r\n        this.datePicker.previousYear();\r\n        break;\r\n      case ECalendarNavigation.Right:\r\n        this.datePicker.nextYear();\r\n        break;\r\n      case ECalendarNavigation.Up:\r\n        this.datePicker.previousRow();\r\n        break;\r\n      case ECalendarNavigation.Down:\r\n        this.datePicker.nextRow();\r\n        break;\r\n      default:\r\n        break;\r\n    }\r\n  }\r\n\r\n  private initializeCalendar(): void {\r\n    this.datePicker.setSelectedDate();\r\n  }\r\n\r\n  private registerViewEvents(): void {\r\n    this.subscriptions.push(\r\n      fromEvent<WheelEvent>(this.yearPickerElement.nativeElement, 'wheel')\r\n        .subscribe((event) => this.yearScroll(event))\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.previousYearsButtonElement.nativeElement, 'click')\r\n        .subscribe(() => {\r\n          this.previousYears();\r\n          this.control.focus();\r\n        })\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.nextYearsButtonElement.nativeElement, 'click')\r\n        .subscribe(() =>{\r\n          this.nextYears();\r\n          this.control.focus();\r\n        })\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      fromEvent<PointerEvent>(this.resetElement.nativeElement, 'click')\r\n        .subscribe(() => this.control.reset())\r\n    );\r\n  }\r\n\r\n  private setStyles(): void {\r\n    this.renderer\r\n      .setStyle(this.yearPickerElement.nativeElement.tHead, 'background', this.control.getTheme().primaryColor);\r\n  }\r\n}\r\n","<table #yearPicker class=\"yearsCal\" aria-describedby=\"a control for choosing years\">\r\n  <thead>\r\n    <tr>\r\n      <th colspan=\"5\">\r\n        <div class=\"selectbtn\">\r\n          <button type=\"button\" #previousYearsButton> <i class=\"fa fa-caret-left fa-lg\" aria-hidden=\"true\"></i> </button>\r\n        </div>\r\n        <div #reset class=\"selectbtn\"> <i class=\"fa fa-home\" aria-hidden=\"true\"></i> </div>\r\n        <div class=\"selectbtn pullRight\">\r\n          <button type=\"button\" #nextYearsButton> <i class=\"fa fa-caret-right fa-lg\" aria-hidden=\"true\"></i> </button>\r\n        </div>\r\n      </th>\r\n    </tr>\r\n  </thead>\r\n  <tbody>\r\n    <tr *ngFor=\"let row of calendarData; let i = index\">\r\n      <td *ngFor=\"let item of row; let j = index\">\r\n        <lc-year-picker-button [item]=\"item\" [row]=\"i\" [column]=\"j\" [control]=\"control\"></lc-year-picker-button>\r\n      </td>\r\n    </tr>\r\n  </tbody>\r\n</table>\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter, Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\n\r\n@Component({\r\n  selector: 'lc-confirm-button',\r\n  templateUrl: 'confirm-button.component.html',\r\n  styleUrls: ['./confirm-button.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LCConfirmButtonComponent implements OnInit, OnDestroy {\r\n\r\n  private subscription: Subscription;\r\n\r\n  @Input() public control: LCDatePickerControl;\r\n\r\n  @Output() public confirmed: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  @ViewChild('confirmButton', { static: true })\r\n  public confirmButtonElement: ElementRef<HTMLButtonElement>;\r\n\r\n  constructor(\r\n    private readonly ngZone: NgZone,\r\n    private readonly renderer: Renderer2,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n    this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n    this.setStyles();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscription.unsubscribe();\r\n  }\r\n\r\n  private registerViewEvents(): void {\r\n\r\n    this.subscription =\r\n      fromEvent<PointerEvent>(this.confirmButtonElement.nativeElement, 'click')\r\n        .subscribe(() => {\r\n          this.control.setValue(\r\n            this.control.getValue(),\r\n            true\r\n          );\r\n          this.confirmed.emit();\r\n        });\r\n  }\r\n\r\n  private setStyles(): void {\r\n    this.renderer.setStyle(this.confirmButtonElement.nativeElement, 'background', this.control.getTheme().primaryColor);\r\n  }\r\n}\r\n","<div class=\"confirmDate\">\r\n    <button type=\"button\" #confirmButton>{{ this.control.getLabels().confirmLabel }}</button>\r\n</div>\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  NgZone,\r\n  OnDestroy,\r\n  OnInit,\r\n  ViewChild\r\n} from '@angular/core';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\n\r\n@Component({\r\n    selector: 'lc-calendar-background',\r\n    templateUrl: 'calendar-background.component.html',\r\n    styleUrls: ['./calendar-background.component.style.css'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LCCalendarBackgroundComponent implements OnInit, OnDestroy {\r\n\r\n    private subscription: Subscription;\r\n\r\n    @Input() public control: LCDatePickerControl;\r\n\r\n    @ViewChild('calendarBackground', { static: true })\r\n    public calendarBackgroundElement: ElementRef<HTMLDivElement>;\r\n\r\n    constructor(\r\n        private readonly ngZone: NgZone,\r\n    ) {}\r\n\r\n    public ngOnInit(): void {\r\n        this.ngZone.runOutsideAngular(() => this.registerViewEvents());\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this.subscription.unsubscribe();\r\n    }\r\n\r\n    private registerViewEvents(): void {\r\n\r\n        this.subscription =\r\n            fromEvent<PointerEvent>(\r\n                this.calendarBackgroundElement.nativeElement,\r\n                'click'\r\n            ).subscribe(() => {\r\n                this.control.setOpen(false);\r\n            });\r\n    }\r\n}\r\n","<div #calendarBackground class=\"calendarBackground\"></div>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Panel } from '../base-date-picker.class';\r\nimport { DateType, ECalendarNavigation, ECalendarType } from '../enums';\r\nimport { DatePickerConfig } from '../lc-date-picker-config';\r\nimport { LCDatePickerControl } from '../lc-date-picker-control';\r\n\r\n@Component({\r\n  selector: 'lc-datepicker',\r\n  templateUrl: './lc-date-picker.component.html',\r\n  styleUrls: ['./lc-date-picker.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LCDatePickerComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n  protected activePanel: Panel;\r\n  protected calendarType: ECalendarType;\r\n  protected opened: boolean;\r\n  protected readonly ECalendarType = ECalendarType;\r\n  protected control: LCDatePickerControl;\r\n\r\n  @HostBinding('style.margin-top')\r\n  public componentMargin;\r\n\r\n  @HostBinding('attr.tabindex')\r\n  public tabIndex = 0;\r\n\r\n  @Input() public config: DatePickerConfig;\r\n  @Output() public dateChange: EventEmitter<string> = new EventEmitter<string>();\r\n  @Output() public openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  private readonly subscriptions: Subscription[] = [];\r\n\r\n  constructor(\r\n    private readonly cd: ChangeDetectorRef,\r\n    private readonly _elementRef: ElementRef,\r\n  ) {}\r\n\r\n  public ngOnInit(): void {\r\n\r\n    this.control = this.config.getControl();\r\n    this.config.setHostElement(this._elementRef.nativeElement);\r\n    this.initCalendar();\r\n    this.setupSubscriptions();\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n    this._elementRef.nativeElement.focus();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n    this.subscriptions.length = 0;\r\n\r\n    this.cd.detach();\r\n  }\r\n\r\n  public reset(): void {\r\n\r\n    if (\r\n      this.calendarType === ECalendarType.Date ||\r\n      this.calendarType === ECalendarType.MonthYear ||\r\n      this.calendarType === ECalendarType.Year\r\n    ) {\r\n      this.changeDate();\r\n    }\r\n  }\r\n\r\n  public changeDate(): void {\r\n    this.dateChange.emit(this.config.getValue());\r\n    this.config.setOpen(false);\r\n  }\r\n\r\n  public confirm(): void {\r\n    this.config.confirm();\r\n  }\r\n\r\n  private getActivePanel(): Panel {\r\n    return this.config.getPanel();\r\n  }\r\n\r\n  private initCalendar(): void {\r\n    this.calendarType = this.config.getCalendarType();\r\n    this.activePanel = this.getActivePanel();\r\n  }\r\n\r\n  private setupSubscriptions(): void {\r\n\r\n    this.subscriptions.push(\r\n      this.config.getOpenChanges().subscribe(open => {\r\n        this.opened = open;\r\n\r\n        if (this.opened) {\r\n          this.setCalendarPosition();\r\n        }\r\n\r\n        this.cd.detectChanges();\r\n        this.openedChange.emit(this.opened);\r\n      })\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      this.config.getNavigationChanges().subscribe(dir => this.navigation(dir))\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      this.config.getPanelChanges().subscribe((type: {panel: Panel, dateType: DateType}) => {\r\n        this.activePanel = type.panel;\r\n        this.calendarType = this.config.getCalendarType();\r\n        this.cd.detectChanges();\r\n      })\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      this.config.getValueChanges().subscribe(() => this.changeDate())\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      this.config.getResetChanges().subscribe(() => this.reset())\r\n    );\r\n  }\r\n\r\n  private setCalendarPosition() {\r\n    const windowHeight = window.innerHeight;\r\n    const componentPosition = this._elementRef.nativeElement.parentNode.getBoundingClientRect();\r\n    this.componentMargin =\r\n      (windowHeight - componentPosition.top > this.calendarSize(this.calendarType))\r\n        ? 0\r\n        : this.calendarSize(this.calendarType) * -1 + 'px';\r\n  }\r\n\r\n  private navigation(dir: ECalendarNavigation): void {\r\n    if (dir === ECalendarNavigation.Close) {\r\n      this.config.setOpen(false);\r\n    }\r\n  }\r\n\r\n  private calendarSize(type: ECalendarType): number {\r\n    let height = 5;\r\n    if (\r\n      this.config.getCalendarType() === ECalendarType.Time ||\r\n      this.config.getCalendarType() === ECalendarType.DateTime\r\n    ) {\r\n      height += 20;\r\n    }\r\n    switch (type) {\r\n      case ECalendarType.DateTime: {\r\n        height += 280;\r\n        break;\r\n      }\r\n      case ECalendarType.Date:\r\n      case ECalendarType.MonthYear:\r\n      case ECalendarType.Year: {\r\n        height += 240;\r\n        break;\r\n      }\r\n      case ECalendarType.Time: {\r\n        height += 140;\r\n        break;\r\n      }\r\n    }\r\n    return height;\r\n  }\r\n}\r\n","<div [ngSwitch]=\"activePanel\" class=\"calendar\" *ngIf=\"opened\">\r\n    <lc-year-picker *ngSwitchCase=\"3\" [control]=\"control\"></lc-year-picker>\r\n    <lc-month-picker *ngSwitchCase=\"2\" [control]=\"control\"></lc-month-picker>\r\n    <lc-day-picker *ngSwitchCase=\"1\" [control]=\"control\"></lc-day-picker>\r\n    <lc-time-picker *ngSwitchCase=\"0\" [control]=\"control\"></lc-time-picker>\r\n\r\n    <div class=\"dateTimeToggle\" *ngIf=\"calendarType === ECalendarType.DateTime\">\r\n        <lc-time-picker-compact [control]=\"control\"></lc-time-picker-compact>\r\n    </div>\r\n    <lc-confirm-button *ngIf=\"calendarType <= 1\" [control]=\"control\" (confirmed)=\"confirm()\"></lc-confirm-button>\r\n</div>\r\n<lc-calendar-background *ngIf=\"opened\" [control]=\"control\"></lc-calendar-background>\r\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, OnInit, Renderer2, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'lc-header',\r\n    templateUrl: 'header.component.html',\r\n    styleUrls: ['./header.component.style.css'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LCHeaderComponent implements OnInit {\r\n\r\n    @Input() public headerLabel: string;\r\n    @Input() public backgroundColor: string;\r\n\r\n    @ViewChild('label', { static: true })\r\n    public labelElement: ElementRef<HTMLDivElement>;\r\n\r\n    constructor(\r\n        private readonly renderer: Renderer2,\r\n    ) {}\r\n\r\n    public ngOnInit(): void {\r\n        this.setStyles();\r\n    }\r\n\r\n    private setStyles(): void {\r\n      this.renderer.setStyle(this.labelElement.nativeElement, 'background', this.backgroundColor);\r\n    }\r\n}\r\n","<div #label class=\"dateRangeLabel\">\r\n  {{ headerLabel }}\r\n</div>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostBinding,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { Panel } from '../base-date-picker.class';\r\nimport { DateType, ECalendarNavigation, ECalendarType } from '../enums';\r\nimport { IColorTheme, ILabels, LCDatePickerControl } from '../lc-date-picker-control';\r\nimport { DatePickerConfig } from '../lc-date-picker-config';\r\n\r\n@Component({\r\n  selector: 'lc-date-range-picker',\r\n  templateUrl: 'lc-date-range-picker.component.html',\r\n  styleUrls: ['./lc-date-range-picker.component.style.css'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LCDateRangePickerComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n  protected activePanelFrom: Panel;\r\n  protected activePanelTo: Panel;\r\n  protected opened: boolean;\r\n  protected fromControl: LCDatePickerControl;\r\n  protected toControl: LCDatePickerControl;\r\n\r\n  @HostBinding('style.margin-top')\r\n  public componentMargin;\r\n\r\n  @HostBinding('attr.tabindex')\r\n  public tabIndex = 0;\r\n\r\n  @Input() public config: DatePickerConfig;\r\n  @Output() public dateChange: EventEmitter<string> = new EventEmitter<string>();\r\n  @Output() public openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n  private readonly subscriptions: Subscription[] = [];\r\n\r\n  constructor(\r\n    private readonly cd: ChangeDetectorRef,\r\n    private readonly _elementRef: ElementRef,\r\n  ) {\r\n  }\r\n\r\n  public ngOnInit(): void {\r\n\r\n    this.fromControl = this.config.getControl(DateType.FROM);\r\n    this.toControl = this.config.getControl(DateType.TO);\r\n    this.config.setHostElement(this._elementRef.nativeElement);\r\n    this.initCalendar();\r\n    this.setupSubscriptions();\r\n\r\n    this.cd.detectChanges();\r\n  }\r\n\r\n  public ngAfterViewInit(): void {\r\n\r\n    this.cd.detectChanges();\r\n  }\r\n\r\n  public ngOnDestroy(): void {\r\n    this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n    this.subscriptions.length = 0;\r\n\r\n    this.cd.detach();\r\n  }\r\n\r\n  public confirm(): void {\r\n    this.dateChange.emit(this.config.getValue());\r\n    this.setOpen(false);\r\n  }\r\n\r\n  public isOpen(): boolean {\r\n    return this.config.isOpen();\r\n  }\r\n\r\n  public setOpen(open: boolean): void {\r\n    this.config.setOpen(open);\r\n  }\r\n\r\n  public getLocalization(): string {\r\n    return this.config.getLocalization();\r\n  }\r\n\r\n  public setLocalization(localization: string): void {\r\n    this.config.setLocalization(localization);\r\n  }\r\n\r\n  public getLabels(): ILabels {\r\n    return this.config.getLabels();\r\n  }\r\n\r\n  public setLabels(labels: ILabels): void {\r\n    this.config.setLabels(labels);\r\n  }\r\n\r\n  public getTheme(): IColorTheme {\r\n    return this.config.getTheme();\r\n  }\r\n\r\n  public setTheme(theme: IColorTheme): void {\r\n    this.config.setTheme(theme);\r\n  }\r\n\r\n  public getTimezone(): string {\r\n    return this.config.getTimezone();\r\n  }\r\n\r\n  public getDisabledDates(): string[] {\r\n    return this.config.getDisabledDates();\r\n  }\r\n\r\n  public setDisabledDates(dates: string[]): void {\r\n    this.config.setDisabledDates(dates);\r\n  }\r\n\r\n  public isFocused(): boolean {\r\n    return this.config.isFocused();\r\n  }\r\n\r\n  public focus(): void {\r\n    this.config.focus();\r\n  }\r\n\r\n  private getActivePanel(dateType: DateType): Panel {\r\n    return this.config.getPanel(dateType);\r\n  }\r\n\r\n  private initCalendar(): void {\r\n\r\n    this.activePanelFrom = this.config.getPanel(DateType.FROM);\r\n    this.activePanelTo = this.config.getPanel(DateType.TO);\r\n\r\n    this._elementRef.nativeElement.focus();\r\n  }\r\n\r\n  private navigation(dir: ECalendarNavigation): void {\r\n    if (dir === ECalendarNavigation.Close) {\r\n      this.setOpen(false);\r\n    }\r\n    if (dir === ECalendarNavigation.Confirm) {\r\n      this.confirm();\r\n    }\r\n  }\r\n\r\n  private setupSubscriptions() {\r\n\r\n    this.subscriptions.push(\r\n      this.config.getOpenChanges()\r\n        .subscribe(open => {\r\n          this.opened = open;\r\n\r\n          if (this.opened) {\r\n            this.setCalendarPosition();\r\n          }\r\n\r\n          this.cd.detectChanges();\r\n          this.openedChange.emit(this.opened);\r\n        })\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      this.config.getNavigationChanges()\r\n        .subscribe(dir => this.navigation(dir))\r\n    );\r\n\r\n    this.subscriptions.push(\r\n      this.config.getPanelChanges().subscribe((type: {panel: Panel, dateType: DateType}) => {\r\n        if (type.dateType === DateType.FROM) {\r\n          this.activePanelFrom = type.panel;\r\n        }\r\n        else {\r\n          this.activePanelTo = type.panel;\r\n        }\r\n\r\n        this.cd.detectChanges();\r\n      })\r\n    );\r\n  }\r\n\r\n  private setCalendarPosition(): void {\r\n    const windowHeight = window.innerHeight;\r\n    const componentPosition = this._elementRef.nativeElement.parentNode.getBoundingClientRect();\r\n    this.componentMargin =\r\n      (windowHeight - componentPosition.top > this.calendarSize(this.config.getCalendarType()))\r\n        ? 0\r\n        : this.calendarSize(this.config.getCalendarType()) * -1 + 'px';\r\n  }\r\n\r\n  private calendarSize(type: ECalendarType): number {\r\n    let height = 32;\r\n    if (\r\n      this.config.getCalendarType() === ECalendarType.Time ||\r\n      this.config.getCalendarType() === ECalendarType.DateTime\r\n    ) {\r\n      height += 20;\r\n    }\r\n    switch (type) {\r\n      case ECalendarType.DateTime: {\r\n        height += 280;\r\n        break;\r\n      }\r\n      case ECalendarType.Date:\r\n      case ECalendarType.DateRange:\r\n      case ECalendarType.MonthYear:\r\n      case ECalendarType.Year: {\r\n        height += 240;\r\n        break;\r\n      }\r\n      case ECalendarType.Time: {\r\n        height += 140;\r\n        break;\r\n      }\r\n    }\r\n    return height;\r\n  }\r\n}\r\n","<div [ngSwitch]=\"activePanelFrom\" class=\"calendar\" *ngIf=\"opened\">\r\n    <lc-header [headerLabel]=\"fromControl.getLabels().fromLabel\" [backgroundColor]=\"fromControl.getTheme().primaryColor\"></lc-header>\r\n    <lc-year-picker *ngSwitchCase=\"3\" [control]=\"fromControl\"></lc-year-picker>\r\n    <lc-month-picker *ngSwitchCase=\"2\" [control]=\"fromControl\"></lc-month-picker>\r\n    <lc-day-picker *ngSwitchCase=\"1\" [control]=\"fromControl\"></lc-day-picker>\r\n</div>\r\n<div [ngSwitch]=\"activePanelTo\" class=\"calendar\" *ngIf=\"opened\">\r\n    <lc-header [headerLabel]=\"toControl.getLabels().toLabel\" [backgroundColor]=\"toControl.getTheme().primaryColor\"></lc-header>\r\n    <lc-year-picker *ngSwitchCase=\"3\" [control]=\"toControl\"></lc-year-picker>\r\n    <lc-month-picker *ngSwitchCase=\"2\" [control]=\"toControl\"></lc-month-picker>\r\n    <lc-day-picker *ngSwitchCase=\"1\" [control]=\"toControl\"></lc-day-picker>\r\n</div>\r\n<lc-confirm-button *ngIf=\"opened\" [control]=\"fromControl\" (confirmed)=\"confirm()\"></lc-confirm-button>\r\n<lc-calendar-background *ngIf=\"opened\" [control]=\"fromControl\"></lc-calendar-background>\r\n","import { Panel } from './base-date-picker.class';\r\nimport { DateTime } from './date-time.class';\r\nimport { DateType, ECalendarNavigation, ECalendarType, EHourFormat } from './enums';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { LCDatePickerAdapter } from './lc-date-picker-adapter.class';\r\n\r\nexport interface ITime {\r\n  hour: number;\r\n  minute: number;\r\n}\r\n\r\nexport interface IDisabledTimeRange {\r\n  startTime: ITime;\r\n  stopTime: ITime;\r\n}\r\n\r\nexport interface ILabels {\r\n  confirmLabel?: string;\r\n  fromLabel?: string;\r\n  toLabel?: string;\r\n}\r\n\r\nexport interface IColorTheme {\r\n  primaryColor: string;\r\n  fontColor: string;\r\n}\r\n\r\nexport interface IDateTimeRange {\r\n  dateTimeFrom: DateTime;\r\n  dateTimeTo: DateTime;\r\n}\r\n\r\nexport interface IDatePickerConfiguration {\r\n  value: string;\r\n  calendarType?: ECalendarType;\r\n  theme?: IColorTheme;\r\n  labels?: ILabels;\r\n  hourFormat?: EHourFormat;\r\n  localization?: string;\r\n  minimumDate?: string;\r\n  maximumDate?: string;\r\n  disabledDates?: string[];\r\n  disabledTimeRanges?: IDisabledTimeRange[];\r\n  timezone?: string;\r\n  open?: boolean;\r\n}\r\n\r\nexport class LCDatePickerControl {\r\n\r\n  private datePickerConfiguration: IDatePickerConfiguration;\r\n  private hostElement: HTMLElement = null;\r\n  private panel: Panel;\r\n  private type = DateType.REGULAR;\r\n  private value: DateTime | IDateTimeRange;\r\n  private minimumDate: DateTime;\r\n  private maximumDate: DateTime;\r\n\r\n  private readonly panelChanged: Subject<Panel> = new Subject();\r\n  private readonly openChanged: Subject<boolean> = new Subject();\r\n  private readonly navigationChanged: Subject<ECalendarNavigation> = new Subject();\r\n  private readonly valueChanged: Subject<DateTime> = new Subject();\r\n  private readonly resetChanged: Subject<void> = new Subject();\r\n\r\n  private readonly defaultMinDate: DateTime = new DateTime(\r\n    1900,\r\n    0,\r\n    1,\r\n    0,\r\n    0,\r\n    0,\r\n    0,\r\n    'UTC'\r\n  );\r\n  private readonly defaultMaxDate: DateTime = new DateTime(\r\n    2099,\r\n    11,\r\n    31,\r\n    0,\r\n    0,\r\n    0,\r\n    0,\r\n    'UTC'\r\n  );\r\n\r\n  private dateAdapter: LCDatePickerAdapter;\r\n\r\n  constructor(\r\n    config: IDatePickerConfiguration,\r\n    dateAdapter: LCDatePickerAdapter,\r\n    type?: DateType\r\n  ) {\r\n    this.dateAdapter = dateAdapter;\r\n    let disabledTimeRanges: IDisabledTimeRange[] = [];\r\n    if (config.disabledTimeRanges) {\r\n      disabledTimeRanges = config.disabledTimeRanges.map(timeRange => this.validateDisabledTimeRange(timeRange));\r\n    }\r\n\r\n    if (type) {\r\n      this.type = type;\r\n    }\r\n\r\n    this.datePickerConfiguration = {\r\n      value: config.value ?? null,\r\n      calendarType: config.calendarType ?? ECalendarType.Date,\r\n      theme: config.theme ? Object.assign(config.theme) : { primaryColor: '#5e666f', fontColor: '#5e666f' },\r\n      labels: config.labels ? Object.assign(config.labels) : { confirmLabel: 'OK', fromLabel: 'From', toLabel: 'To' },\r\n      hourFormat: config.hourFormat ?? EHourFormat.TWENTY_FOUR_HOUR,\r\n      localization: config.localization ?? 'en',\r\n      minimumDate: config.minimumDate ?? '',\r\n      maximumDate: config.maximumDate ?? '',\r\n      disabledDates: config.disabledDates ? [...config.disabledDates] : [],\r\n      disabledTimeRanges,\r\n      timezone: config.timezone ?? 'UTC',\r\n      open: config.open ?? false,\r\n    };\r\n\r\n    this.setPanelFromCalendarType(this.datePickerConfiguration.calendarType);\r\n\r\n    this.initializeValue();\r\n    this.setDateBoundaries();\r\n  }\r\n\r\n  public getValue(): DateTime {\r\n    switch (this.type) {\r\n      case DateType.REGULAR:\r\n        return (this.value as DateTime).clone();\r\n      case DateType.FROM:\r\n        return (this.value as IDateTimeRange).dateTimeFrom.clone();\r\n      case DateType.TO:\r\n        return (this.value as IDateTimeRange).dateTimeTo.clone();\r\n    }\r\n  }\r\n\r\n  public getAdapter(): LCDatePickerAdapter {\r\n    return this.dateAdapter;\r\n  }\r\n\r\n  public setValue(value: DateTime, shouldEmit: boolean = false): void {\r\n    const adjustDateTime = this.adjustValueToCalendarType(value);\r\n    switch (this.type) {\r\n      case DateType.REGULAR:\r\n        this.value = adjustDateTime.clone();\r\n        break;\r\n      case DateType.FROM:\r\n        (this.value as IDateTimeRange).dateTimeFrom = adjustDateTime.clone();\r\n        break;\r\n      case DateType.TO:\r\n        (this.value as IDateTimeRange).dateTimeTo = adjustDateTime.clone();\r\n        break;\r\n    }\r\n\r\n    if (shouldEmit) {\r\n      this.valueChanged.next(value);\r\n    }\r\n  }\r\n\r\n  public setPanelFromCalendarType(calendarType: ECalendarType): void {\r\n    switch (calendarType) {\r\n      case ECalendarType.DateTime:\r\n      case ECalendarType.Date:\r\n      case ECalendarType.DateRange:\r\n        this.setPanel(Panel.Day);\r\n        break;\r\n      case ECalendarType.MonthYear:\r\n        this.setPanel(Panel.Month);\r\n        break;\r\n      case ECalendarType.Year:\r\n        this.setPanel(Panel.Year);\r\n        break;\r\n      case ECalendarType.Time:\r\n        this.setPanel(Panel.Time);\r\n        break;\r\n    }\r\n  }\r\n\r\n  public getPanel(): Panel {\r\n    return this.panel;\r\n  }\r\n\r\n  public setPanel(panel: Panel): void {\r\n    this.panel = panel;\r\n    this.panelChanged.next(this.panel);\r\n  }\r\n\r\n  public getTimezone(): string {\r\n    return this.datePickerConfiguration.timezone;\r\n  }\r\n\r\n  public getDisabledDates(): string[] {\r\n    return [...this.datePickerConfiguration.disabledDates];\r\n  }\r\n\r\n  public setDisabledDates(dates: string[]): void {\r\n    this.datePickerConfiguration.disabledDates = [...dates];\r\n  }\r\n\r\n  public getCalendarType(): ECalendarType {\r\n    return this.datePickerConfiguration.calendarType;\r\n  }\r\n\r\n  public setCalendarType(calendarType: ECalendarType): void {\r\n    this.datePickerConfiguration.calendarType = calendarType;\r\n    this.setPanelFromCalendarType(this.datePickerConfiguration.calendarType);\r\n  }\r\n\r\n  public getLocalization(): string {\r\n    return this.datePickerConfiguration.localization;\r\n  }\r\n\r\n  public setLocalization(localization: string): void {\r\n    this.datePickerConfiguration.localization = localization;\r\n  }\r\n\r\n  public getDefaultMinDate(): DateTime {\r\n    return this.defaultMinDate.clone();\r\n  }\r\n\r\n  public getDefaultMaxDate(): DateTime {\r\n    return this.defaultMaxDate.clone();\r\n  }\r\n\r\n  public getMinDate(): DateTime {\r\n    return this.minimumDate.clone();\r\n  }\r\n\r\n  public setMinDate(date: DateTime): void {\r\n    this.minimumDate = date.clone();\r\n  }\r\n\r\n  public getMaxDate(): DateTime {\r\n    return this.maximumDate.clone();\r\n  }\r\n\r\n  public setMaxDate(date: DateTime): void {\r\n    this.maximumDate = date.clone();\r\n  }\r\n\r\n  public getDisabledTimeRanges(): IDisabledTimeRange[] {\r\n    return [...this.datePickerConfiguration.disabledTimeRanges];\r\n  }\r\n\r\n  public  getHourFormat(): EHourFormat {\r\n    return this.datePickerConfiguration.hourFormat;\r\n  }\r\n\r\n  public  setHourFormat(hourFormat: EHourFormat): void {\r\n    this.datePickerConfiguration.hourFormat = hourFormat;\r\n  }\r\n\r\n  public getLabels(): ILabels {\r\n    return Object.assign(this.datePickerConfiguration.labels);\r\n  }\r\n\r\n  public setLabels(labels: ILabels): void {\r\n    this.datePickerConfiguration.labels = Object.assign(labels);\r\n  }\r\n\r\n  public getTheme(): IColorTheme {\r\n    return Object.assign(this.datePickerConfiguration.theme);\r\n  }\r\n\r\n  public setTheme(theme: IColorTheme): void {\r\n    this.datePickerConfiguration.theme = Object.assign(theme);\r\n  }\r\n\r\n  public isOpen(): boolean {\r\n    return this.datePickerConfiguration.open;\r\n  }\r\n\r\n  public setOpen(open: boolean, emit: boolean = true): void {\r\n    this.datePickerConfiguration.open = open;\r\n    if (emit) {\r\n      this.openChanged.next(this.datePickerConfiguration.open);\r\n    }\r\n  }\r\n\r\n  public isFocused(): boolean {\r\n    return document.activeElement == this.hostElement;\r\n  }\r\n\r\n  public focus(): void {\r\n    this.hostElement?.focus();\r\n  }\r\n\r\n  public setHostElement(hostElement: HTMLElement): void {\r\n    if (!this.hostElement) {\r\n      this.hostElement = hostElement;\r\n    }\r\n  }\r\n\r\n  public getNavigationChanges(): Observable<ECalendarNavigation> {\r\n    return this.navigationChanged.asObservable();\r\n  }\r\n\r\n  public getPanelChanges(): Observable<Panel> {\r\n    return this.panelChanged.asObservable();\r\n  }\r\n\r\n  public getOpenChanges(): Observable<boolean> {\r\n    return this.openChanged.asObservable();\r\n  }\r\n\r\n  public getValueChanges(): Observable<DateTime> {\r\n    return this.valueChanged.asObservable();\r\n  }\r\n\r\n  public getResetChanges(): Observable<void> {\r\n    return this.resetChanged.asObservable();\r\n  }\r\n\r\n  public navigateRight(): void {\r\n    this.navigationChanged.next(ECalendarNavigation.Right);\r\n  }\r\n\r\n  public navigateLeft(): void {\r\n    this.navigationChanged.next(ECalendarNavigation.Left);\r\n  }\r\n\r\n  public navigateUp(): void {\r\n    this.navigationChanged.next(ECalendarNavigation.Up);\r\n  }\r\n\r\n  public navigateDown(): void {\r\n    this.navigationChanged.next(ECalendarNavigation.Down);\r\n  }\r\n\r\n  public nextPage(): void {\r\n    this.navigationChanged.next(ECalendarNavigation.PageUp);\r\n  }\r\n\r\n  public previousPage(): void {\r\n    this.navigationChanged.next(ECalendarNavigation.PageDown);\r\n  }\r\n\r\n  public confirm(): void {\r\n    this.navigationChanged.next(ECalendarNavigation.Confirm);\r\n  }\r\n\r\n  public close(): void {\r\n    this.navigationChanged.next(ECalendarNavigation.Close);\r\n  }\r\n\r\n  public reset(): void {\r\n    switch (this.getCalendarType()) {\r\n      case ECalendarType.Date:\r\n        this.setValue(this.dateAdapter.today(this.getTimezone()), true);\r\n        break;\r\n      case ECalendarType.DateRange:\r\n        this.setValue(this.dateAdapter.today(this.getTimezone()));\r\n        break;\r\n      case ECalendarType.DateTime:\r\n      case ECalendarType.Time:\r\n        this.setValue(this.dateAdapter.now(this.getTimezone()));\r\n        break;\r\n      case ECalendarType.MonthYear:\r\n        this.setValue(\r\n          this.dateAdapter.getStartOfMonth(this.dateAdapter.today(this.getTimezone())), true);\r\n        break;\r\n      case ECalendarType.Year:\r\n        this.setValue(\r\n          this.dateAdapter.getStartOfYear(this.dateAdapter.today(this.getTimezone())), true);\r\n        break;\r\n    }\r\n\r\n    this.resetChanged.next();\r\n  }\r\n\r\n  private adjustValueToCalendarType(dateTime: DateTime): DateTime {\r\n    switch (this.getCalendarType()) {\r\n      case ECalendarType.Date:\r\n      case ECalendarType.DateRange:\r\n        return this.dateAdapter.setParts(dateTime, {hour: 0, minute: 0, second: 0, millisecond: 0});\r\n      case ECalendarType.DateTime:\r\n      case ECalendarType.Time:\r\n        return this.dateAdapter.setParts(dateTime, {second: 0, millisecond: 0});\r\n      case ECalendarType.MonthYear:\r\n        return this.dateAdapter.setParts(dateTime, {date: 1, hour: 0, minute: 0, second: 0, millisecond: 0});\r\n      case ECalendarType.Year:\r\n        return this.dateAdapter.setParts(dateTime, {month: 0, date: 1, hour: 0, minute: 0, second: 0, millisecond: 0});\r\n    }\r\n  }\r\n\r\n  private initializeValue(): void {\r\n\r\n    if (this.datePickerConfiguration.calendarType === ECalendarType.DateRange) {\r\n      if (this.datePickerConfiguration.value.trim() === '') {\r\n        const today = this.adjustValueToCalendarType(this.dateAdapter.today(this.datePickerConfiguration.timezone));\r\n        this.value = {\r\n          dateTimeFrom: today,\r\n          dateTimeTo: this.dateAdapter.add(today, 1, 'day'),\r\n        };\r\n      }\r\n      else {\r\n        const dates = this.datePickerConfiguration.value.split('/');\r\n        this.value = {\r\n          dateTimeFrom: this.adjustValueToCalendarType(this.dateAdapter.fromISOString(dates[0], this.datePickerConfiguration.timezone)),\r\n          dateTimeTo: this.adjustValueToCalendarType(this.dateAdapter.fromISOString(dates[1], this.datePickerConfiguration.timezone)),\r\n        };\r\n      }\r\n    }\r\n    else {\r\n      this.value =\r\n        this.adjustValueToCalendarType(this.dateAdapter.fromISOString(this.datePickerConfiguration.value, this.datePickerConfiguration.timezone));\r\n    }\r\n  }\r\n\r\n  private setDateBoundaries(): void {\r\n    this.minimumDate =\r\n      this.datePickerConfiguration.minimumDate.trim() !== ''\r\n        ? this.dateAdapter.fromISOString(\r\n          this.datePickerConfiguration.minimumDate,\r\n          this.datePickerConfiguration.timezone\r\n        )\r\n        : this.defaultMinDate;\r\n\r\n    this.maximumDate =\r\n      this.datePickerConfiguration.maximumDate.trim() !== ''\r\n        ? this.dateAdapter.fromISOString(\r\n          this.datePickerConfiguration.maximumDate,\r\n          this.datePickerConfiguration.timezone\r\n        )\r\n        : this.defaultMaxDate;\r\n  }\r\n\r\n  private validateDisabledTimeRange(timeRange: IDisabledTimeRange): IDisabledTimeRange {\r\n    const min = timeRange.startTime;\r\n    const max = timeRange.stopTime;\r\n\r\n    if (!this.isValidTime(min) || !this.isValidTime(max)) {\r\n      throw new Error('Invalid start/stop time format');\r\n    }\r\n\r\n    if (!this.isValidTimeRange(min, max)) {\r\n      throw new Error('Stop time range must be after start');\r\n    }\r\n\r\n    return {\r\n      startTime: {\r\n        hour: min.hour,\r\n        minute: min.minute\r\n      },\r\n      stopTime: {\r\n        hour: max.hour,\r\n        minute: max.minute\r\n      }\r\n    };\r\n  }\r\n\r\n  private isValidTime(time: ITime): boolean {\r\n    return time.hour >= 0 && time.hour < 24 && time.minute >= 0 && time.minute < 60;\r\n  }\r\n\r\n  private isValidTimeRange(startTime: ITime, stopTime: ITime): boolean {\r\n    return startTime.hour < stopTime.hour || (startTime.hour === stopTime.hour && startTime.minute < stopTime.minute);\r\n  }\r\n}\r\n","import { IColorTheme, IDatePickerConfiguration, ILabels, LCDatePickerControl } from './lc-date-picker-control';\r\nimport { DateType, ECalendarNavigation, ECalendarType } from './enums';\r\nimport { map, merge, Observable } from 'rxjs';\r\nimport { Panel } from './base-date-picker.class';\r\nimport { LCDatePickerAdapter } from './lc-date-picker-adapter.class';\r\n\r\nexport class DatePickerConfig {\r\n  private readonly control1: LCDatePickerControl;\r\n  private readonly control2: LCDatePickerControl;\r\n\r\n  constructor(\r\n    private readonly config: IDatePickerConfiguration,\r\n    dateAdapter: LCDatePickerAdapter\r\n  ) {\r\n    this.control1 =\r\n      new LCDatePickerControl(\r\n        this.config,\r\n        dateAdapter,\r\n        this.config.calendarType === ECalendarType.DateRange ? DateType.FROM : DateType.REGULAR\r\n      );\r\n    this.control2 =\r\n      new LCDatePickerControl(\r\n        this.config,\r\n        dateAdapter,\r\n        this.config.calendarType === ECalendarType.DateRange ? DateType.TO : DateType.REGULAR\r\n      );\r\n  }\r\n\r\n\r\n  /** @internal */\r\n  public setHostElement(nativeElement: HTMLElement): void {\r\n    this.control1.setHostElement(nativeElement);\r\n    this.control2.setHostElement(nativeElement);\r\n  }\r\n\r\n  /** @internal */\r\n  public getControl(dateType: DateType = DateType.REGULAR): LCDatePickerControl {\r\n    return dateType === DateType.TO ? this.control2 : this.control1;\r\n  }\r\n\r\n  /**\r\n   * Allows subscribing to value changes of the datepicker.\r\n   *\r\n   * @return an observable that can be used to subscribe to value changes of the datepicker.\r\n   */\r\n  public getValueChanges(): Observable<string> {\r\n    return this.control1.getValueChanges().pipe(map(value => this.control1.getAdapter().toISOString(value)));\r\n  }\r\n\r\n  /**\r\n   * Allows subscribing to changes in the open state of the datepicker.\r\n   *\r\n   * @return an observable that can be used to subscribe to changes in the open state of the datepicker.\r\n   */\r\n  public getOpenChanges(): Observable<boolean> {\r\n    return this.control1.getOpenChanges();\r\n  }\r\n\r\n  /**\r\n   * Allows subscribing to changes in navigation of the datepicker.\r\n   *\r\n   * @return an observable that can be used to subscribe to changes in navigation of the datepicker.\r\n   */\r\n  public getNavigationChanges(): Observable<ECalendarNavigation> {\r\n    return this.control1.getNavigationChanges();\r\n  }\r\n\r\n  /**\r\n   * Allows subscribing to panel changes of the datepicker.\r\n   *\r\n   * @return an observable that can be used to subscribe to panel changes of the datepicker.\r\n   */\r\n  public getPanelChanges(): Observable<{ panel: Panel, dateType: DateType }> {\r\n\r\n    if (this.control1.getCalendarType() === ECalendarType.DateRange) {\r\n      return merge(\r\n        this.control1.getPanelChanges().pipe(map(panel => ({panel: panel, dateType: DateType.FROM}))),\r\n        this.control2.getPanelChanges().pipe(map(panel => ({panel: panel, dateType: DateType.TO})))\r\n      );\r\n    }\r\n\r\n    return this.control1.getPanelChanges().pipe(map(panel => ({panel: panel, dateType: DateType.REGULAR})));\r\n  }\r\n\r\n  /**\r\n   * Allows subscribing to reset signals of the datepicker.\r\n   *\r\n   * @return an observable that can be used to subscribe to reset signals of the datepicker.\r\n   */\r\n  public getResetChanges(): Observable<void> {\r\n    return this.control1.getResetChanges();\r\n  }\r\n\r\n  /**\r\n   * Is the datepicker open.\r\n   *\r\n   * @return true if the datepicker is open, false otherwise.\r\n   */\r\n  public isOpen(): boolean {\r\n    return this.control1.isOpen();\r\n  }\r\n\r\n  /**\r\n   * Opens or closes the datepicker.\r\n   *\r\n   * @param {boolean} open - whether the datepicker should be open or closed.\r\n   */\r\n  public setOpen(open: boolean): void {\r\n    this.control1.setOpen(open);\r\n    this.control2.setOpen(open, false);\r\n  }\r\n\r\n  /**\r\n   * Retrieves the selected date.\r\n   *\r\n   * @return ISO 8601 formatted string representing the selected date.\r\n   */\r\n  public getValue(): string {\r\n    if (this.control1.getCalendarType() === ECalendarType.DateRange) {\r\n      return this.control1.getAdapter().toISOString(this.control1.getValue()) + '/' + this.control1.getAdapter().toISOString(this.control2.getValue());\r\n    }\r\n\r\n    return this.control1.getAdapter().toISOString(this.control1.getValue());\r\n  }\r\n\r\n  /**\r\n   * Sets the selected date.\r\n   *\r\n   * @param {string} value - the ISO 8601 formatted string representing the new date.\r\n   */\r\n  public setValue(value: string): void {\r\n    if (this.control1.getCalendarType() === ECalendarType.DateRange) {\r\n      if (value === null || value.trim() === '') {\r\n        const today = this.control1.getAdapter().today(this.control1.getTimezone());\r\n        this.control1.setValue(today, false);\r\n        this.control2.setValue(this.control1.getAdapter().add(today, 1, 'day'), false);\r\n      }\r\n      else {\r\n        const dates = value.split('/');\r\n        this.control1.setValue(this.control1.getAdapter().fromISOString(dates[0], this.control1.getTimezone()), true);\r\n        this.control2.setValue(this.control1.getAdapter().fromISOString(dates[1], this.control2.getTimezone()), true);\r\n      }\r\n    } else if (value === null || value.trim() === '') {\r\n      const today = this.control1.getAdapter().now(this.control1.getTimezone());\r\n      this.control1.setValue(today, false);\r\n    } else {\r\n      this.control1.setValue(this.control1.getAdapter().fromISOString(value, this.control1.getTimezone()), true);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Retrieves the timezone of dates.\r\n   *\r\n   * @return the timezone.\r\n   */\r\n  public getTimezone(): string {\r\n    return this.control1.getTimezone();\r\n  }\r\n\r\n  /**\r\n   * Retrieves the type of the calendar.\r\n   *\r\n   * @return the type of the calendar.\r\n   */\r\n  public getCalendarType(): ECalendarType {\r\n    return this.control1.getCalendarType();\r\n  }\r\n\r\n  /**\r\n   * Sets the type of the calendar.\r\n   *\r\n   * @param {ECalendarType} type - the type of the calendar.\r\n   */\r\n  public setCalendarType(type: ECalendarType): void {\r\n    this.control1.setCalendarType(type);\r\n    this.control2.setCalendarType(type);\r\n  }\r\n\r\n  /**\r\n   * Retrieves the currently active panel, depending on which part of the date the user is currently trying to set.\r\n   * E.g. If the type of calendar is Month picker, and the user is currently setting the year, the active panel\r\n   * will be Year, otherwise it will be Month.\r\n   *\r\n   * @param {DateType} dateType - type of the datepicker calendar,\r\n   * with FROM and TO being for the date range picker and REGULAR (default) for the date picker.\r\n   * @return the current panel.\r\n   */\r\n  public getPanel(dateType: DateType = DateType.REGULAR): Panel {\r\n    return dateType === DateType.TO ? this.control2.getPanel() : this.control1.getPanel();\r\n  }\r\n\r\n  /**\r\n   * Retrieves the localization of the datepicker.\r\n   *\r\n   * @return the ISO 639-1 language code.\r\n   */\r\n  public getLocalization(): string {\r\n    return this.control1.getLocalization();\r\n  }\r\n\r\n  /**\r\n   * Sets the localization of the datepicker.\r\n   *\r\n   * @param {string} localization - the ISO 639-1 language code.\r\n   */\r\n  public setLocalization(localization: string): void {\r\n    this.control1.setLocalization(localization);\r\n    this.control2.setLocalization(localization);\r\n  }\r\n\r\n  /**\r\n   * Retrieves the labels of the datepicker.\r\n   *\r\n   * @return - an object containing the labels.\r\n   */\r\n  public getLabels(): ILabels {\r\n    return this.control1.getLabels();\r\n  }\r\n\r\n  /**\r\n   * Sets the labels of the datepicker.\r\n   *\r\n   * @param {ILabels} labels - an object containing the labels.\r\n   */\r\n  public setLabels(labels: ILabels): void {\r\n    this.control1.setLabels(labels);\r\n    this.control2.setLabels(labels);\r\n  }\r\n\r\n  /**\r\n   * Retrieves the color theme of the datepicker.\r\n   *\r\n   * @return an object containing the color theme.\r\n   */\r\n  public getTheme(): IColorTheme {\r\n    return this.control1.getTheme();\r\n  }\r\n\r\n  /**\r\n   * Sets the color theme of the datepicker.\r\n   *\r\n   * @param {IColorTheme} theme - an object containing the color theme.\r\n   */\r\n  public setTheme(theme: IColorTheme): void {\r\n    this.control1.setTheme(theme);\r\n    this.control2.setTheme(theme);\r\n  }\r\n\r\n  /**\r\n   * Retrieves the minimum date of the datepicker.\r\n   *\r\n   * @return the minimum date.\r\n   */\r\n  public getMinDate(): string {\r\n    return this.control1.getAdapter().toISOString(this.control1.getMinDate());\r\n  }\r\n\r\n  /**\r\n   * Sets the minimum date of the datepicker.\r\n   *\r\n   * @param {string} date - the ISO 8601 formatted string representing the minimum date.\r\n   */\r\n  public setMinDate(date: string): void {\r\n    this.control1.setMinDate(this.control1.getAdapter().fromISOString(date, this.getTimezone()));\r\n    this.control2.setMinDate(this.control2.getAdapter().fromISOString(date, this.getTimezone()));\r\n  }\r\n\r\n  /**\r\n   * Retrieves the maximum date of the datepicker.\r\n   *\r\n   * @return the maximum date.\r\n   */\r\n  public getMaxDate(): string {\r\n    return this.control1.getAdapter().toISOString(this.control1.getMaxDate());\r\n  }\r\n\r\n  /**\r\n   * Sets the maximum date of the datepicker.\r\n   *\r\n   * @param {string} date - the ISO 8601 formatted string representing the maximum date.\r\n   */\r\n  public setMaxDate(date: string): void {\r\n    this.control1.setMaxDate(this.control1.getAdapter().fromISOString(date));\r\n    this.control2.setMaxDate(this.control2.getAdapter().fromISOString(date));\r\n  }\r\n\r\n  /**\r\n   * Retrieves a list of disabled dates.\r\n   *\r\n   * @return ISO 8601 formatted string list of disabled dates.\r\n   */\r\n  public getDisabledDates(): string[] {\r\n    return this.control1.getDisabledDates();\r\n  }\r\n\r\n  /**\r\n   * Sets the disabled dates.\r\n   *\r\n   * @param {string[]} dates - ISO 8601 formatted string list of disabled dates.\r\n   */\r\n  public setDisabledDates(dates: string[]): void {\r\n    this.control1.setDisabledDates(dates);\r\n    this.control2.setDisabledDates(dates);\r\n  }\r\n\r\n  /**\r\n   * Is the datepicker focused.\r\n   *\r\n   * @return true if the datepicker is focused, false otherwise.\r\n   */\r\n  public isFocused(): boolean {\r\n    return this.control1.isFocused();\r\n  }\r\n\r\n  /**\r\n   * Sets the focus on the datepicker.\r\n   */\r\n  public focus(): void {\r\n    this.control1.focus();\r\n  }\r\n\r\n  /**\r\n   * Navigates up on the calendar grid.\r\n   */\r\n  public navigateUp(): void {\r\n    this.control1.navigateUp();\r\n  }\r\n\r\n  /**\r\n   * Navigates down on the calendar grid.\r\n   */\r\n  public navigateDown(): void {\r\n    this.control1.navigateDown();\r\n  }\r\n\r\n  /**\r\n   * Navigates right on the calendar grid.\r\n   */\r\n  public navigateRight(): void {\r\n    this.control1.navigateRight();\r\n  }\r\n\r\n  /**\r\n   * Navigates left on the calendar grid.\r\n   */\r\n  public navigateLeft(): void {\r\n    this.control1.navigateLeft();\r\n  }\r\n\r\n  /**\r\n   * Closes the datepicker.\r\n   */\r\n  public close(): void {\r\n    this.control1.close();\r\n  }\r\n\r\n  /**\r\n   * Closes the datepicker and emit the currently selected date.\r\n   */\r\n  public confirm(): void {\r\n    this.control1.confirm();\r\n    this.control2.confirm();\r\n  }\r\n\r\n  /**\r\n   * Go to the next grid of the calendar (e.g. next month).\r\n   */\r\n  public nextPage(): void {\r\n    this.control1.nextPage();\r\n  }\r\n\r\n  /**\r\n   * Go to the previous grid of the calendar (e.g. previous month).\r\n   */\r\n  public previousPage(): void {\r\n    this.control1.previousPage();\r\n  }\r\n}\r\n","import {ModuleWithProviders, NgModule, Type} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LCTimePickerComponent } from './time-picker/time-picker.component';\r\nimport { LCTimePickerCompactComponent } from './time-picker-compact/time-picker-compact.component';\r\nimport { LCDayPickerComponent } from './day-picker/day-picker.component';\r\nimport { LCMonthPickerComponent } from './month-picker/month-picker.component';\r\nimport { LCYearPickerComponent } from './year-picker/year-picker.component';\r\nimport { LCDatePickerComponent } from './lc-datepicker/lc-date-picker.component';\r\nimport { LCDateRangePickerComponent } from './lc-date-range-picker/lc-date-range-picker.component';\r\nimport {LCDatePickerAdapter} from './lc-date-picker-adapter.class';\r\nimport {LCDayPickerButtonComponent} from './day-picker/day-picker-button.component';\r\nimport {LCMonthPickerButtonComponent} from './month-picker/month-picker-button.component';\r\nimport {LCYearPickerButtonComponent} from './year-picker/year-picker-button.component';\r\nimport {LCTimeSpinnerComponent} from './time-picker/time-spinner.component';\r\nimport {LCTimeSpinnerCompactComponent} from './time-picker-compact/time-spinner-compact.component';\r\nimport {LCConfirmButtonComponent} from './confirm-button/confirm-button.component';\r\nimport {LCCalendarBackgroundComponent} from './calendar-background/calendar-background.component';\r\nimport { LCHeaderComponent } from './header/header.component';\r\n\r\nexport interface ImplementationConfig {\r\n  adapter?: Type<LCDatePickerAdapter>;\r\n}\r\n\r\n@NgModule({\r\n\timports: [CommonModule],\r\n\tdeclarations: [\r\n\t\tLCDatePickerComponent,\r\n\t\tLCTimePickerComponent,\r\n\t\tLCTimePickerCompactComponent,\r\n\t\tLCDayPickerComponent,\r\n\t\tLCMonthPickerComponent,\r\n\t\tLCYearPickerComponent,\r\n\t\tLCDateRangePickerComponent,\r\n\t\tLCDayPickerButtonComponent,\r\n\t\tLCMonthPickerButtonComponent,\r\n\t\tLCYearPickerButtonComponent,\r\n\t\tLCTimeSpinnerComponent,\r\n\t\tLCTimeSpinnerCompactComponent,\r\n\t\tLCConfirmButtonComponent,\r\n\t\tLCCalendarBackgroundComponent,\r\n    LCHeaderComponent,\r\n\t],\r\n\texports: [\r\n    LCDatePickerComponent,\r\n    LCDateRangePickerComponent\r\n  ],\r\n})\r\nexport class LcDatePickerModule {\r\n\tpublic static withImplementation(config: ImplementationConfig = {}): ModuleWithProviders<LcDatePickerModule> {\r\n\t\treturn {\r\n\t\t\tngModule: LcDatePickerModule,\r\n\t\t\tproviders: [{ provide: LCDatePickerAdapter, useClass: config.adapter }],\r\n\t\t};\r\n\t}\r\n}\r\n\r\nexport * from './lc-date-picker-config';\r\nexport * from './lc-date-picker-control';\r\nexport * from './lc-datepicker/lc-date-picker.component';\r\nexport * from './lc-date-range-picker/lc-date-range-picker.component';\r\nexport * from './date-time.class';\r\nexport * from './enums';\r\nexport * from './base-date-picker.class';\r\nexport * from './lc-date-picker-adapter.class';\r\n","/*\r\n * Public API Surface of lc-datepicker\r\n */\r\n\r\nexport * from './lib/lc-date-picker.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LCDatePickerAdapter","i1.TimePicker","i2","i3.LCTimeSpinnerComponent","i3.LCTimeSpinnerCompactComponent","i1.DayPicker","i2.LCDatePickerAdapter","i3.LCDayPickerButtonComponent","i1.MonthPicker","i3","i4.LCMonthPickerButtonComponent","i1.YearPicker","i3.LCYearPickerButtonComponent","i2.LCTimePickerComponent","i3.LCTimePickerCompactComponent","i4.LCDayPickerComponent","i5.LCMonthPickerComponent","i6.LCYearPickerComponent","i7.LCConfirmButtonComponent","i8.LCCalendarBackgroundComponent","i2.LCDayPickerComponent","i3.LCMonthPickerComponent","i4.LCYearPickerComponent","i5.LCConfirmButtonComponent","i6.LCCalendarBackgroundComponent","i7.LCHeaderComponent"],"mappings":"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"}