{"version":3,"file":"asoftwareworld-form-builder-pro-datetimepicker.mjs","sources":["../../src/components/datetimepicker/datetimepicker-animations.ts","../../src/components/datetimepicker/datetimepicker-errors.ts","../../src/components/datetimepicker/datetimepicker-filtertype.ts","../../src/components/datetimepicker/calendar-body/calendar-body.ts","../../src/components/datetimepicker/calendar-body/calendar-body.html","../../src/components/datetimepicker/multi-year-view/multi-year-view.ts","../../src/components/datetimepicker/multi-year-view/multi-year-view.html","../../src/components/datetimepicker/datetimepicker-intl.ts","../../src/components/datetimepicker/clock/clock.ts","../../src/components/datetimepicker/clock/clock.html","../../src/components/datetimepicker/time/time.ts","../../src/components/datetimepicker/time/time.html","../../src/components/datetimepicker/month-view/month-view.ts","../../src/components/datetimepicker/month-view/month-view.html","../../src/components/datetimepicker/year-view/year-view.ts","../../src/components/datetimepicker/year-view/year-view.html","../../src/components/datetimepicker/calendar/calendar.ts","../../src/components/datetimepicker/calendar/calendar.html","../../src/components/datetimepicker/datetimepicker.ts","../../src/components/datetimepicker/datetimepicker-content.html","../../src/components/datetimepicker/datetimepicker-input.ts","../../src/components/datetimepicker/datetimepicker-toggle/datetimepicker-toggle.ts","../../src/components/datetimepicker/datetimepicker-toggle/datetimepicker-toggle.html","../../src/components/datetimepicker/datetimepicker-module.ts","../../src/components/datetimepicker/asoftwareworld-form-builder-pro-datetimepicker.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, keyframes, state, style, transition, trigger } from '@angular/animations';\n\n/**\n * Animations used by the Material datepicker.\n * @docs-private\n */\nexport const aswDatetimepickerAnimations: {\n    readonly transformPanel: AnimationTriggerMetadata;\n    readonly fadeInCalendar: AnimationTriggerMetadata;\n    readonly slideCalendar: AnimationTriggerMetadata;\n} = {\n    /** Transforms the height of the datepicker's calendar. */\n    transformPanel: trigger('transformPanel', [\n        transition('void => enter-dropdown', animate('120ms cubic-bezier(0, 0, 0.2, 1)', keyframes([style({ opacity: 0, transform: 'scale(1, 0.8)' }), style({ opacity: 1, transform: 'scale(1, 1)' })]))),\n        transition('void => enter-dialog', animate('150ms cubic-bezier(0, 0, 0.2, 1)', keyframes([style({ opacity: 0, transform: 'scale(0.7)' }), style({ transform: 'none', opacity: 1 })]))),\n        transition('* => void', animate('100ms linear', style({ opacity: 0 })))\n    ]),\n\n    /** Fades in the content of the calendar. */\n    fadeInCalendar: trigger('fadeInCalendar', [\n        state('void', style({ opacity: 0 })),\n        state('enter', style({ opacity: 1 })),\n\n        // TODO(crisbeto): this animation should be removed since it isn't quite on spec, but we\n        // need to keep it until #12440 gets in, otherwise the exit animation will look glitchy.\n        transition('void => *', animate('120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'))\n    ]),\n\n    slideCalendar: trigger('slideCalendar', [\n        transition('* => left', [animate(180, keyframes([style({ transform: 'translateX(100%)', offset: 0.5 }), style({ transform: 'translateX(-100%)', offset: 0.51 }), style({ transform: 'translateX(0)', offset: 1 })]))]),\n        transition('* => right', [animate(180, keyframes([style({ transform: 'translateX(-100%)', offset: 0.5 }), style({ transform: 'translateX(100%)', offset: 0.51 }), style({ transform: 'translateX(0)', offset: 1 })]))])\n    ])\n};\n","/** @docs-private */\nexport function createMissingDateImplError(provider: string) {\n    return Error(`AswDatetimepicker: No provider found for ${provider}. You must import one of the following ` + `modules at your application root: AswNativeDatetimeModule, AswMomentDatetimeModule, or provide a ` + `custom implementation.`);\n}\n","export enum AswDatetimepickerFilterType {\n    DATE,\n    HOUR,\n    MINUTE\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nexport class AswCalendarCell {\n    constructor(\n        public value: number,\n        public displayValue: string,\n        public ariaLabel: string,\n        public enabled: boolean\n    ) {}\n}\n\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\n@Component({\n    selector: '[asw-calendar-body]',\n    templateUrl: 'calendar-body.html',\n    styleUrls: ['calendar-body.scss'],\n    host: {\n        class: 'asw-calendar-body'\n    },\n    exportAs: 'aswCalendarBody',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AswCalendarBody {\n    /** The label for the table. (e.g. \"Jan 2017\"). */\n    @Input() label!: string;\n\n    /** The cells to display in the table. */\n    @Input() rows!: AswCalendarCell[][];\n\n    /** The value in the table that corresponds to today. */\n    @Input() todayValue!: number;\n\n    /** The value in the table that is currently selected. */\n    @Input() selectedValue!: number;\n\n    /** The minimum number of free cells needed to fit the label in the first row. */\n    @Input() labelMinRequiredCells!: number;\n\n    /** The number of columns in the table. */\n    @Input() numCols = 7;\n\n    /** Whether to allow selection of disabled cells. */\n    @Input() allowDisabledSelection = false;\n\n    /** The cell number of the active cell in the table. */\n    @Input() activeCell = 0;\n\n    /** Emits when a new value is selected. */\n    @Output() selectedValueChange = new EventEmitter<number>();\n\n    /** The number of blank cells to put at the beginning for the first row. */\n    get _firstRowOffset(): number {\n        return this.rows && this.rows.length && this.rows[0].length ? this.numCols - this.rows[0].length : 0;\n    }\n\n    _cellClicked(cell: AswCalendarCell): void {\n        if (!this.allowDisabledSelection && !cell.enabled) {\n            return;\n        }\n        this.selectedValueChange.emit(cell.value);\n    }\n\n    _isActiveCell(rowIndex: number, colIndex: number): boolean {\n        let cellNumber = rowIndex * this.numCols + colIndex;\n\n        // Account for the fact that the first row may not have as many cells.\n        if (rowIndex) {\n            cellNumber -= this._firstRowOffset;\n        }\n\n        return cellNumber === this.activeCell;\n    }\n}\n","<!--\r\n  If there's not enough space in the first row, create a separate label row. We mark this row as\r\n  aria-hidden because we don't want it to be read out as one of the weeks in the month.\r\n-->\r\n<tr *ngIf=\"_firstRowOffset < labelMinRequiredCells\" aria-hidden=\"true\">\r\n    <td class=\"asw-calendar-body-label\" [attr.colspan]=\"numCols\">{{ label }}</td>\r\n</tr>\r\n\r\n<!-- Create the first row separately so we can include a special spacer cell. -->\r\n<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\r\n    <!--\r\n        We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\r\n    -->\r\n    <td *ngIf=\"rowIndex === 0 && _firstRowOffset\"\r\n        class=\"asw-calendar-body-label\" [attr.colspan]=\"_firstRowOffset\" aria-hidden=\"true\">\r\n        {{ _firstRowOffset >= labelMinRequiredCells ? label : '' }}\r\n    </td>\r\n    <td *ngFor=\"let item of row; let colIndex = index\"\r\n        role=\"gridcell\"\r\n        class=\"asw-calendar-body-cell\"\r\n        [class.asw-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\"\r\n        [class.asw-calendar-body-disabled]=\"!item.enabled\"\r\n        [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\"\r\n        [attr.data-mat-row]=\"rowIndex\"\r\n        [attr.data-mat-col]=\"colIndex\"\r\n        [attr.aria-label]=\"item.ariaLabel\"\r\n        [attr.aria-disabled]=\"!item.enabled || null\"\r\n        (click)=\"_cellClicked(item)\">\r\n        <div class=\"asw-calendar-body-cell-content\"\r\n            [class.asw-calendar-body-selected]=\"selectedValue === item.value\"\r\n            [class.asw-calendar-body-today]=\"todayValue === item.value\"\r\n            [attr.aria-selected]=\"selectedValue === item.value\">\r\n        {{ item.displayValue }}\r\n        </div>\r\n    </td>\r\n</tr>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation } from '@angular/core';\nimport { createMissingDateImplError } from '../datetimepicker-errors';\nimport { AswCalendarCell } from '../calendar-body/calendar-body';\nimport { aswDatetimepickerAnimations } from '../datetimepicker-animations';\nimport { ASW_DATETIME_FORMATS, AswDatetimeFormats, DatetimeAdapter } from '@asoftwareworld/form-builder-pro/common';\nimport { AswDatetimepickerType } from '../datetimepicker-types';\n\nexport const yearsPerPage = 24;\n\nexport const yearsPerRow = 4;\n\n/**\n * An internal component used to display multiple years in the datetimepicker.\n * @docs-private\n */\n@Component({\n    selector: 'asw-multi-year-view',\n    templateUrl: 'multi-year-view.html',\n    exportAs: 'aswMultiYearView',\n    animations: [aswDatetimepickerAnimations.slideCalendar],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AswMultiYearView<D> implements AfterContentInit {\n    @Input() type: AswDatetimepickerType = 'date';\n\n    /** A function used to filter which dates are selectable. */\n    @Input() dateFilter!: (date: D) => boolean;\n\n    /** Emits when a new month is selected. */\n    @Output() selectedChange = new EventEmitter<D>();\n\n    /** Emits when any date is selected. */\n    @Output() readonly _userSelection = new EventEmitter<void>();\n\n    /** Grid of calendar cells representing the years in the range. */\n    _years!: AswCalendarCell[][];\n\n    /** The label for this year range (e.g. \"2000-2020\"). */\n    _yearLabel!: string;\n\n    /** The year in this range that today falls on. Null if today is in a different range. */\n    _todayYear!: number;\n\n    /**\n     * The year in this range that the selected Date falls on.\n     * Null if the selected Date is in a different range.\n     */\n    _selectedYear!: number | null;\n\n    _calendarState!: string;\n\n    constructor(\n        @Optional() public _adapter: DatetimeAdapter<D>,\n        @Optional() @Inject(ASW_DATETIME_FORMATS) private _dateFormats: AswDatetimeFormats\n    ) {\n        if (!this._adapter) {\n            throw createMissingDateImplError('DatetimeAdapter');\n        }\n\n        if (!this._dateFormats) {\n            throw createMissingDateImplError('ASW_DATETIME_FORMATS');\n        }\n\n        this._activeDate = this._adapter.today();\n    }\n\n    /** The date to display in this multi year view */\n    @Input()\n    get activeDate(): D {\n        return this._activeDate;\n    }\n    set activeDate(value: D) {\n        const oldActiveDate = this._activeDate;\n        this._activeDate = value || this._adapter.today();\n        if (oldActiveDate && this._activeDate && !isSameMultiYearView(this._adapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\n            this._init();\n        }\n    }\n    private _activeDate: D;\n\n    /** The currently selected date. */\n    @Input()\n    get selected(): D {\n        return this._selected;\n    }\n    set selected(value: D) {\n        this._selected = value;\n        this._selectedYear = this._selected && this._adapter.getYear(this._selected);\n    }\n    private _selected!: D;\n\n    /** The minimum selectable date. */\n    @Input()\n    get minDate(): D | null {\n        return this._minDate;\n    }\n    set minDate(value: D | null) {\n        this._minDate = this._getValidDateOrNull(this._adapter.deserialize(value));\n    }\n    private _minDate!: D | null;\n\n    /** The maximum selectable date. */\n    @Input()\n    get maxDate(): D | null {\n        return this._maxDate;\n    }\n    set maxDate(value: D | null) {\n        this._maxDate = this._getValidDateOrNull(this._adapter.deserialize(value));\n    }\n    private _maxDate!: D | null;\n\n    ngAfterContentInit() {\n        this._init();\n    }\n\n    /** Handles when a new year is selected. */\n    _yearSelected(year: number) {\n        const month = this._adapter.getMonth(this.activeDate);\n        const normalizedDate = this._adapter.createDatetime(year, month, 1, 0, 0);\n\n        this.selectedChange.emit(\n            this._adapter.createDatetime(year, month, Math.min(this._adapter.getDate(this.activeDate), this._adapter.getNumDaysInMonth(normalizedDate)), this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate))\n        );\n\n        if (this.type === 'year') {\n            this._userSelection.emit();\n        }\n    }\n\n    _getActiveCell(): number {\n        return getActiveOffset(this._adapter, this.activeDate, this.minDate, this.maxDate);\n    }\n\n    _calendarStateDone() {\n        this._calendarState = '';\n    }\n\n    /** Initializes this year view. */\n    private _init() {\n        this._todayYear = this._adapter.getYear(this._adapter.today());\n        this._yearLabel = this._adapter.getYearName(this.activeDate);\n\n        const activeYear = this._adapter.getYear(this.activeDate);\n\n        const minYearOfPage = activeYear - getActiveOffset(this._adapter, this.activeDate, this.minDate, this.maxDate);\n\n        this._years = [];\n        for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n            row.push(minYearOfPage + i);\n            if (row.length === yearsPerRow) {\n                this._years.push(row.map((year) => this._createCellForYear(year)));\n                row = [];\n            }\n        }\n    }\n\n    /** Creates an AswCalendarCell for the given year. */\n    private _createCellForYear(year: number) {\n        const yearName = this._adapter.getYearName(this._adapter.createDate(year, 0, 1));\n        return new AswCalendarCell(year, yearName, yearName, this._shouldEnableYear(year));\n    }\n\n    /** Whether the given year is enabled. */\n    private _shouldEnableYear(year: number) {\n        // disable if the year is greater than maxDate lower than minDate\n        if (year === undefined || year === null || (this.maxDate && year > this._adapter.getYear(this.maxDate)) || (this.minDate && year < this._adapter.getYear(this.minDate))) {\n            return false;\n        }\n\n        // enable if it reaches here and there's no filter defined\n        if (!this.dateFilter) {\n            return true;\n        }\n\n        const firstOfYear = this._adapter.createDate(year, 0, 1);\n\n        // If any date in the year is enabled count the year as enabled.\n        for (let date = firstOfYear; this._adapter.getYear(date) === year; date = this._adapter.addCalendarDays(date, 1)) {\n            if (this.dateFilter(date)) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    /**\n     * Gets the year in this years range that the given Date falls on.\n     * Returns null if the given Date is not in this range.\n     */\n    private _getYearInCurrentRange(date: D) {\n        const year = this._adapter.getYear(date);\n        return this._isInRange(year) ? year : null;\n    }\n\n    /**\n     * Validate if the current year is in the current range\n     * Returns true if is in range else returns false\n     */\n    private _isInRange(year: number): boolean {\n        return true;\n    }\n\n    /**\n     * @param obj The object to check.\n     * @returns The given object if it is both a date instance and valid, otherwise null.\n     */\n    private _getValidDateOrNull(obj: any): D | null {\n        return this._adapter.isDateInstance(obj) && this._adapter.isValid(obj) ? obj : null;\n    }\n}\n\nexport function isSameMultiYearView<D>(dateAdapter: DatetimeAdapter<D>, date1: D, date2: D, minDate: D | null, maxDate: D | null): boolean {\n    const year1 = dateAdapter.getYear(date1);\n    const year2 = dateAdapter.getYear(date2);\n    const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\n    return Math.floor((year1 - startingYear) / yearsPerPage) === Math.floor((year2 - startingYear) / yearsPerPage);\n}\n\n/**\n * When the multi-year view is first opened, the active year will be in view.\n * So we compute how many years are between the active year and the *slot* where our\n * \"startingYear\" will render when paged into view.\n */\nexport function getActiveOffset<D>(dateAdapter: DatetimeAdapter<D>, activeDate: D, minDate: D | null, maxDate: D | null): number {\n    const activeYear = dateAdapter.getYear(activeDate);\n    return euclideanModulo(activeYear - getStartingYear(dateAdapter, minDate, maxDate), yearsPerPage);\n}\n\n/**\n * We pick a \"starting\" year such that either the maximum year would be at the end\n * or the minimum year would be at the beginning of a page.\n */\nfunction getStartingYear<D>(dateAdapter: DatetimeAdapter<D>, minDate: D | null, maxDate: D | null): number {\n    let startingYear = 0;\n    if (maxDate) {\n        const maxYear = dateAdapter.getYear(maxDate);\n        startingYear = maxYear - yearsPerPage + 1;\n    } else if (minDate) {\n        startingYear = dateAdapter.getYear(minDate);\n    }\n    return startingYear;\n}\n\n/** Gets remainder that is non-negative, even if first number is negative */\nfunction euclideanModulo(a: number, b: number): number {\n    return ((a % b) + b) % b;\n}\n","<table class=\"asw-calendar-table\" role=\"grid\">\r\n    <thead class=\"asw-calendar-table-header\"></thead>\r\n    <tbody asw-calendar-body\r\n        (@slideCalendar.done)=\"_calendarStateDone()\"\r\n        [@slideCalendar]=\"_calendarState\"\r\n        [todayValue]=\"_todayYear\"\r\n        [rows]=\"_years\"\r\n        [numCols]=\"4\"\r\n        [activeCell]=\"_getActiveCell()\"\r\n        [allowDisabledSelection]=\"true\"\r\n        [selectedValue]=\"_selectedYear!\"\r\n        (selectedValueChange)=\"_yearSelected($event)\">\r\n    </tbody>\r\n</table>\r\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AswDatetimepickerIntl {\n    /**\n     * Stream to emit from when labels are changed. Use this to notify components when the labels have\n     * changed after initialization.\n     */\n    readonly changes = new Subject<void>();\n\n    /** A label for the calendar popup (used by screen readers). */\n    calendarLabel = 'Calendar';\n\n    /** A label for the button used to open the calendar popup (used by screen readers). */\n    openCalendarLabel = 'Open calendar';\n\n    /** Label for the button used to close the calendar popup. */\n    closeCalendarLabel = 'Close calendar';\n\n    /** A label for the previous month button (used by screen readers). */\n    prevMonthLabel = 'Previous month';\n\n    /** A label for the next month button (used by screen readers). */\n    nextMonthLabel = 'Next month';\n\n    /** A label for the previous year button (used by screen readers). */\n    prevYearLabel = 'Previous year';\n\n    /** A label for the next year button (used by screen readers). */\n    nextYearLabel = 'Next year';\n\n    /** A label for the previous multi-year button (used by screen readers). */\n    prevMultiYearLabel = 'Previous 24 years';\n\n    /** A label for the next multi-year button (used by screen readers). */\n    nextMultiYearLabel = 'Next 24 years';\n\n    /** A label for the 'switch to month view' button (used by screen readers). */\n    switchToMonthViewLabel = 'Choose date';\n\n    /** A label for the 'switch to year view' button (used by screen readers). */\n    switchToYearViewLabel = 'Choose month';\n\n    /** A label for the 'switch to multi-year view' button (used by screen readers). */\n    switchToMultiYearViewLabel = 'Choose month and year';\n\n    /** A label for the first date of a range of dates (used by screen readers). */\n    startDateLabel = 'Start date';\n\n    /** A label for the last date of a range of dates (used by screen readers). */\n    endDateLabel = 'End date';\n\n    /** Formats a range of years (used for visuals). */\n    formatYearRange(start: string, end: string): string {\n        return `${start} \\u2013 ${end}`;\n    }\n\n    /** Formats a label for a range of years (used by screen readers). */\n    formatYearRangeLabel(start: string, end: string): string {\n        return `${start} to ${end}`;\n    }\n\n    /** A label for the 'switch to clock hour view' button (used by screen readers). */\n    switchToClockHourViewLabel = 'Choose hour';\n\n    /** A label for the 'switch to clock minute view' button (used by screen readers). */\n    switchToClockMinuteViewLabel = 'Choose minute';\n\n    /** Label used for ok button within the manual time input. */\n    okLabel = 'OK';\n\n    /** Label used for cancel button within the manual time input. */\n    cancelLabel = 'Cancel';\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, OnChanges, OnDestroy, Output, SimpleChanges, ViewEncapsulation } from '@angular/core';\nimport { DatetimeAdapter } from '@asoftwareworld/form-builder-pro/common';\nimport { AswDatetimepickerFilterType } from '../datetimepicker-filtertype';\nimport { AswAMPM } from '../datetimepicker-types';\n\nconst activeEventOptions = normalizePassiveListenerOptions({ passive: false });\n\nexport const CLOCK_RADIUS = 50;\nexport const CLOCK_INNER_RADIUS = 27.5;\nexport const CLOCK_OUTER_RADIUS = 41.25;\nexport const CLOCK_TICK_RADIUS = 7.0833;\n\n/** Possible views for datetimepicker clock. */\nexport type AswClockView = 'hour' | 'minute';\n\n/**\n * A clock that is used as part of the datetimepicker.\n * @docs-private\n */\n@Component({\n    selector: 'asw-clock',\n    templateUrl: 'clock.html',\n    styleUrls: ['clock.scss'],\n    host: {\n        role: 'clock',\n        class: 'asw-clock',\n        '(mousedown)': '_pointerDown($event)',\n        '(touchstart)': '_pointerDown($event)'\n    },\n    exportAs: 'aswClock',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AswClock<D> implements AfterContentInit, OnDestroy, OnChanges {\n    /** A function used to filter which dates are selectable. */\n    @Input() dateFilter!: (date: D, type: AswDatetimepickerFilterType) => boolean;\n\n    /** Step over minutes. */\n    @Input() interval: number = 1;\n\n    /** Whether the clock uses 12 hour format. */\n    @Input() twelvehour: boolean = false;\n\n    /** Whether the time is now in AM or PM. */\n    @Input() AMPM: AswAMPM = 'AM';\n\n    /** Emits when the currently selected date changes. */\n    @Output() selectedChange = new EventEmitter<D>();\n\n    /** Emits when any date is activated. */\n    @Output() activeDateChange = new EventEmitter<D>();\n\n    /** Emits when any date is selected. */\n    @Output() readonly _userSelection = new EventEmitter<void>();\n\n    /** Whether the clock is in hour view. */\n    _hourView: boolean = true;\n\n    _hours: any[] = [];\n\n    _minutes: any[] = [];\n\n    _selectedHour!: number;\n\n    _selectedMinute!: number;\n\n    private _timeChanged = false;\n\n    constructor(\n        private _elementRef: ElementRef,\n        private _adapter: DatetimeAdapter<D>,\n        private _changeDetectorRef: ChangeDetectorRef,\n        @Inject(DOCUMENT) private _document: any\n    ) {}\n\n    /**\n     * The date to display in this clock view.\n     */\n    @Input()\n    get activeDate(): D {\n        return this._activeDate;\n    }\n    set activeDate(value: D) {\n        const oldActiveDate = this._activeDate;\n        this._activeDate = this._adapter.clampDate(value, this.minDate, this.maxDate);\n        if (!this._adapter.sameMinute(oldActiveDate, this._activeDate)) {\n            this._init();\n        }\n    }\n    private _activeDate!: D;\n\n    /** The currently selected date. */\n    @Input()\n    get selected(): D | null {\n        return this._selected;\n    }\n    set selected(value: D | null) {\n        this._selected = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\n        if (this._selected) {\n            this.activeDate = this._selected;\n        }\n    }\n    private _selected!: D | null;\n\n    /** The minimum selectable date. */\n    @Input()\n    get minDate(): D | null {\n        return this._minDate;\n    }\n    set minDate(value: D | null) {\n        this._minDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\n    }\n    private _minDate!: D | null;\n\n    /** The maximum selectable date. */\n    @Input()\n    get maxDate(): D | null {\n        return this._maxDate;\n    }\n    set maxDate(value: D | null) {\n        this._maxDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\n    }\n    private _maxDate!: D | null;\n\n    /** Whether the clock should be started in hour or minute view. */\n    @Input()\n    set startView(value: AswClockView) {\n        this._hourView = value !== 'minute';\n    }\n\n    get _hand() {\n        const hour = this._adapter.getHour(this.activeDate);\n        this._selectedHour = hour;\n        this._selectedMinute = this._adapter.getMinute(this.activeDate);\n        let deg = 0;\n        let radius = CLOCK_OUTER_RADIUS;\n        if (this._hourView) {\n            const outer = this._selectedHour > 0 && this._selectedHour < 13;\n            radius = outer ? CLOCK_OUTER_RADIUS : CLOCK_INNER_RADIUS;\n            if (this.twelvehour) {\n                radius = CLOCK_OUTER_RADIUS;\n            }\n            deg = Math.round(this._selectedHour * (360 / (24 / 2)));\n        } else {\n            deg = Math.round(this._selectedMinute * (360 / 60));\n        }\n        return {\n            height: `${radius}%`,\n            marginTop: `${50 - radius}%`,\n            transform: `rotate(${deg}deg)`\n        };\n    }\n\n    ngAfterContentInit() {\n        this.activeDate = this._activeDate || this._adapter.today();\n        this._init();\n    }\n\n    ngOnDestroy() {\n        this._removeGlobalEvents();\n    }\n\n    ngOnChanges(): void {\n        this._init();\n    }\n\n    /** Called when the user has put their pointer down on the clock. */\n    private _pointerDown = (event: TouchEvent | MouseEvent) => {\n        this._timeChanged = false;\n        this.setTime(event);\n        this._bindGlobalEvents(event);\n    };\n\n    /**\n     * Called when the user has moved their pointer after\n     * starting to drag. Bound on the document level.\n     */\n    private _pointerMove = (event: TouchEvent | MouseEvent) => {\n        if (event.cancelable) {\n            event.preventDefault();\n        }\n        this.setTime(event);\n    };\n\n    /** Called when the user has lifted their pointer. Bound on the document level. */\n    private _pointerUp = (event: TouchEvent | MouseEvent) => {\n        if (event.cancelable) {\n            event.preventDefault();\n        }\n        this._removeGlobalEvents();\n\n        if (this._timeChanged) {\n            this.selectedChange.emit(this.activeDate);\n            if (!this._hourView) {\n                this._userSelection.emit();\n            }\n        }\n    };\n\n    /** Binds our global move and end events. */\n    private _bindGlobalEvents(triggerEvent: TouchEvent | MouseEvent) {\n        // Note that we bind the events to the `document`, because it allows us to capture\n        // drag cancel events where the user's pointer is outside the browser window.\n        const document = this._document;\n        const isTouch = isTouchEvent(triggerEvent);\n        const moveEventName = isTouch ? 'touchmove' : 'mousemove';\n        const endEventName = isTouch ? 'touchend' : 'mouseup';\n        document.addEventListener(moveEventName, this._pointerMove, activeEventOptions);\n        document.addEventListener(endEventName, this._pointerUp, activeEventOptions);\n\n        if (isTouch) {\n            document.addEventListener('touchcancel', this._pointerUp, activeEventOptions);\n        }\n    }\n\n    /** Removes any global event listeners that we may have added. */\n    private _removeGlobalEvents() {\n        const document = this._document;\n        document.removeEventListener('mousemove', this._pointerMove, activeEventOptions);\n        document.removeEventListener('mouseup', this._pointerUp, activeEventOptions);\n        document.removeEventListener('touchmove', this._pointerMove, activeEventOptions);\n        document.removeEventListener('touchend', this._pointerUp, activeEventOptions);\n        document.removeEventListener('touchcancel', this._pointerUp, activeEventOptions);\n    }\n\n    /** Initializes this clock view. */\n    private _init() {\n        this._hours.length = 0;\n        this._minutes.length = 0;\n\n        const hourNames = this._adapter.getHourNames();\n        const minuteNames = this._adapter.getMinuteNames();\n        if (this.twelvehour) {\n            const hours = [];\n            for (let i = 0; i < hourNames.length; i++) {\n                const radian = (i / 6) * Math.PI;\n                const radius = CLOCK_OUTER_RADIUS;\n\n                const hour = i;\n                const date = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), this._adapter.getDate(this.activeDate), hour, 0);\n\n                // Check if the date is enabled, no need to respect the minute setting here\n                const enabled =\n                    (!this.minDate || (this._adapter.compareDatetime(date, this.minDate, false) as number) >= 0) &&\n                    (!this.maxDate || (this._adapter.compareDatetime(date, this.maxDate, false) as number) <= 0) &&\n                    (!this.dateFilter || this.dateFilter(date, AswDatetimepickerFilterType.HOUR));\n\n                // display value for twelvehour clock should be from 1-12 not including 0 and not above 12\n                hours.push({\n                    value: i,\n                    displayValue: i % 12 === 0 ? '12' : hourNames[i % 12],\n                    enabled,\n                    top: CLOCK_RADIUS - Math.cos(radian) * radius - CLOCK_TICK_RADIUS,\n                    left: CLOCK_RADIUS + Math.sin(radian) * radius - CLOCK_TICK_RADIUS\n                });\n            }\n\n            // filter out AM or PM hours based on AMPM\n            if (this.AMPM === 'AM') {\n                this._hours = hours.filter((x) => x.value < 12);\n            } else {\n                this._hours = hours.filter((x) => x.value >= 12);\n            }\n        } else {\n            for (let i = 0; i < hourNames.length; i++) {\n                const radian = (i / 6) * Math.PI;\n                const outer = i > 0 && i < 13;\n                const radius = outer ? CLOCK_OUTER_RADIUS : CLOCK_INNER_RADIUS;\n                const date = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), this._adapter.getDate(this.activeDate), i, 0);\n\n                // Check if the date is enabled, no need to respect the minute setting here\n                const enabled =\n                    (!this.minDate || (this._adapter.compareDatetime(date, this.minDate, false) as number) >= 0) &&\n                    (!this.maxDate || (this._adapter.compareDatetime(date, this.maxDate, false) as number) <= 0) &&\n                    (!this.dateFilter || this.dateFilter(date, AswDatetimepickerFilterType.HOUR));\n\n                this._hours.push({\n                    value: i,\n                    displayValue: i === 0 ? '00' : hourNames[i],\n                    enabled,\n                    top: CLOCK_RADIUS - Math.cos(radian) * radius - CLOCK_TICK_RADIUS,\n                    left: CLOCK_RADIUS + Math.sin(radian) * radius - CLOCK_TICK_RADIUS,\n                    fontSize: i > 0 && i < 13 ? '' : '80%'\n                });\n            }\n        }\n\n        for (let i = 0; i < minuteNames.length; i += 5) {\n            const radian = (i / 30) * Math.PI;\n            const date = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), this._adapter.getDate(this.activeDate), this._adapter.getHour(this.activeDate), i);\n            const enabled =\n                (!this.minDate || (this._adapter.compareDatetime(date, this.minDate) as number) >= 0) &&\n                (!this.maxDate || (this._adapter.compareDatetime(date, this.maxDate) as number) <= 0) &&\n                (!this.dateFilter || this.dateFilter(date, AswDatetimepickerFilterType.MINUTE));\n            this._minutes.push({\n                value: i,\n                displayValue: i === 0 ? '00' : minuteNames[i],\n                enabled,\n                top: CLOCK_RADIUS - Math.cos(radian) * CLOCK_OUTER_RADIUS - CLOCK_TICK_RADIUS,\n                left: CLOCK_RADIUS + Math.sin(radian) * CLOCK_OUTER_RADIUS - CLOCK_TICK_RADIUS\n            });\n        }\n    }\n\n    /**\n     * Set Time\n     * @param event\n     */\n    private setTime(event: TouchEvent | MouseEvent) {\n        const trigger = this._elementRef.nativeElement;\n        const triggerRect = trigger.getBoundingClientRect();\n        const width = trigger.offsetWidth;\n        const height = trigger.offsetHeight;\n        const { pageX, pageY } = getPointerPositionOnPage(event);\n        const x = width / 2 - (pageX - triggerRect.left - window.pageXOffset);\n        const y = height / 2 - (pageY - triggerRect.top - window.pageYOffset);\n\n        let radian = Math.atan2(-x, y);\n        const unit = Math.PI / (this._hourView ? 6 : this.interval ? 30 / this.interval : 30);\n        const z = Math.sqrt(x * x + y * y);\n        const outer = this._hourView && z > (width * (CLOCK_OUTER_RADIUS / 100) + width * (CLOCK_INNER_RADIUS / 100)) / 2;\n\n        if (radian < 0) {\n            radian = Math.PI * 2 + radian;\n        }\n        let value = Math.round(radian / unit);\n\n        let date;\n        if (this._hourView) {\n            if (this.twelvehour) {\n                if (this.AMPM === 'AM') {\n                    value = value === 0 ? 12 : value;\n                } else {\n                    // if we chosen 12 in PM, the value should be 0 for 0:00,\n                    // else we can safely add 12 to the final value\n                    value = value === 12 ? 0 : value + 12;\n                }\n            } else {\n                if (value === 12) {\n                    value = 0;\n                }\n                value = outer ? (value === 0 ? 12 : value) : value === 0 ? 0 : value + 12;\n            }\n\n            date = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), this._adapter.getDate(this.activeDate), value, this._adapter.getMinute(this.activeDate));\n        } else {\n            if (this.interval) {\n                value *= this.interval;\n            }\n            if (value === 60) {\n                value = 0;\n            }\n            date = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), this._adapter.getDate(this.activeDate), this._adapter.getHour(this.activeDate), value);\n        }\n\n        this._timeChanged = true;\n        this.activeDate = date;\n        this._changeDetectorRef.markForCheck();\n        this.activeDateChange.emit(this.activeDate);\n    }\n\n    static ngAcceptInputType_twelvehour: BooleanInput;\n}\n\n/** Returns whether an event is a touch event. */\nfunction isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\n    // This function is called for every pixel that the user has dragged so we need it to be\n    // as fast as possible. Since we only bind mouse events and touch events, we can assume\n    // that if the event's name starts with `t`, it's a touch event.\n    return event.type[0] === 't';\n}\n\n/** Gets the coordinates of a touch or mouse event relative to the document. */\nfunction getPointerPositionOnPage(event: MouseEvent | TouchEvent) {\n    let point: { pageX: number; pageY: number };\n\n    if (isTouchEvent(event)) {\n        // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n        point = event.touches[0] || event.changedTouches[0];\n    } else {\n        point = event;\n    }\n\n    return point;\n}\n","<div class=\"asw-clock-wrapper\">\r\n    <div class=\"asw-clock-center\"></div>\r\n    <div class=\"asw-clock-hand\" [ngStyle]=\"_hand\"></div>\r\n    <div class=\"asw-clock-hours\" [class.active]=\"_hourView\">\r\n        <div *ngFor=\"let item of _hours\"\r\n            class=\"asw-clock-cell\"\r\n            [class.asw-clock-cell-disabled]=\"!item.enabled\"\r\n            [class.asw-clock-cell-selected]=\"_selectedHour === item.value\"\r\n            [style.fontSize]=\"item.fontSize\"\r\n            [style.left]=\"item.left+'%'\"\r\n            [style.top]=\"item.top+'%'\">{{ item.displayValue }}\r\n        </div>\r\n    </div>\r\n    <div class=\"asw-clock-minutes\" [class.active]=\"!_hourView\">\r\n        <div *ngFor=\"let item of _minutes\"\r\n            class=\"asw-clock-cell\"\r\n            [class.asw-clock-cell-disabled]=\"!item.enabled\"\r\n            [class.asw-clock-cell-selected]=\"_selectedMinute === item.value\"\r\n            [style.left]=\"item.left+'%'\"\r\n            [style.top]=\"item.top+'%'\">{{ item.displayValue }}\r\n        </div>\r\n    </div>\r\n</div>\r\n","import { BooleanInput, coerceBooleanProperty, coerceNumberProperty, NumberInput } from '@angular/cdk/coercion';\nimport { DOWN_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Directive, ElementRef, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { DatetimeAdapter } from '@asoftwareworld/form-builder-pro/common';\nimport { SubscriptionLike } from 'rxjs';\nimport { AswClockView } from '../clock/clock';\nimport { AswDatetimepickerFilterType } from '../datetimepicker-filtertype';\nimport { AswDatetimepickerIntl } from '../datetimepicker-intl';\nimport { AswAMPM } from '../datetimepicker-types';\n\nfunction pad(num: NumberInput, size: number) {\n    num = String(num);\n    while (num.length < size) num = '0' + num;\n    return num;\n}\n\n@Directive({\n    selector: 'input.asw-time-input',\n    host: {\n        '(blur)': 'blur($event)',\n        '(focus)': 'focus($event)'\n    },\n    exportAs: 'aswTimeInput'\n})\nexport class AswTimeInput implements OnDestroy {\n    @Input('timeInterval')\n    set timeInterval(value: NumberInput) {\n        this._interval = coerceNumberProperty(value);\n    }\n    private _interval: number = 1;\n\n    @Input('timeMin')\n    set timeMin(value: NumberInput) {\n        this._min = coerceNumberProperty(value);\n    }\n    private _min = 0;\n\n    @Input('timeMax')\n    set timeMax(value: NumberInput) {\n        this._max = coerceNumberProperty(value);\n    }\n    private _max = Infinity;\n\n    @Input('timeValue')\n    set timeValue(value: NumberInput) {\n        this._value = coerceNumberProperty(value);\n        if (!this.hasFocus) {\n            this.writeValue(this._value);\n        }\n        this.writePlaceholder(this._value);\n    }\n\n    @Output() timeValueChanged = new EventEmitter<NumberInput>();\n\n    private _value: NumberInput;\n\n    private keyDownListener = this.keyDownHandler.bind(this);\n    private keyPressListener = this.keyPressHandler.bind(this);\n    private inputEventListener = this.inputChangedHandler.bind(this);\n\n    constructor(\n        private element: ElementRef,\n        private cdr: ChangeDetectorRef\n    ) {\n        this.inputElement.addEventListener('keydown', this.keyDownListener, {\n            passive: true\n        });\n\n        // Do not passive since we want to be able to preventDefault()\n        this.inputElement.addEventListener('keypress', this.keyPressListener);\n        this.inputElement.addEventListener('input', this.inputEventListener, {\n            passive: true\n        });\n    }\n\n    get hasFocus() {\n        return this.element.nativeElement && this.element?.nativeElement === document?.activeElement;\n    }\n\n    get inputElement() {\n        return this.element.nativeElement as HTMLInputElement;\n    }\n\n    // We look here at the placeholder value, because we write '' into the value on focus\n    // placeholder should always be up to date with \"currentValue\"\n    get valid() {\n        // At the start _value is undefined therefore this would result in not valid and\n        // make a ugly warning border afterwards we can safely check\n        if (this._value) {\n            const currentValue = String(this.inputElement.value);\n\n            // It can be that currentValue is empty due to we removing the value on focus,\n            // if that is the case we should check previous value which should be in the placeholder\n            if (currentValue.length) {\n                return this._value == this.inputElement.value;\n            } else {\n                return this._value == this.inputElement.placeholder;\n            }\n        }\n        return true;\n    }\n\n    get invalid() {\n        return !this.valid;\n    }\n\n    blur() {\n        this.writeValue(this._value);\n        this.writePlaceholder(this._value);\n        this.timeValueChanged.emit(this._value);\n    }\n\n    focus() {\n        this.writeValue('');\n    }\n\n    /**\n     * Write value to inputElement\n     * @param value NumberInput\n     */\n    writeValue(value: NumberInput) {\n        if (value !== '') {\n            this.inputElement.value = pad(value, 2);\n        } else {\n            this.inputElement.value = '';\n        }\n        this.cdr.markForCheck();\n    }\n\n    /**\n     * Writes value to placeholder\n     * @param value NumberInput\n     */\n    writePlaceholder(value: NumberInput) {\n        this.inputElement.placeholder = pad(value, 2);\n        this.cdr.markForCheck();\n    }\n\n    keyDownHandler(event: KeyboardEvent) {\n        if (String(this.inputElement.value).length > 0) {\n            let value: number | null = null;\n            if (event.keyCode === UP_ARROW) {\n                value = coerceNumberProperty(this._value);\n                value += this._interval;\n                event.stopPropagation();\n            } else if (event.keyCode === DOWN_ARROW) {\n                value = coerceNumberProperty(this._value);\n                value -= this._interval;\n                event.stopPropagation();\n            }\n\n            // if value has changed\n            if (typeof value === 'number') {\n                this.writeValue(value);\n                this.writePlaceholder(value);\n                this.clampInputValue();\n                this.timeValueChanged.emit(this._value);\n            }\n        }\n    }\n\n    /**\n     * Prevent non number inputs in the inputElement with the exception of Enter/BackSpace\n     * @param event KeyboardEvent\n     */\n    keyPressHandler(event: KeyboardEvent) {\n        const key = event?.key ?? null;\n        if (isNaN(Number(key)) && key !== 'Enter') {\n            event.preventDefault();\n        }\n    }\n\n    inputChangedHandler() {\n        this.clampInputValue();\n        this.timeValueChanged.emit(this._value);\n    }\n\n    clampInputValue() {\n        if (this.inputElement?.value === '') {\n            return;\n        }\n\n        const value = coerceNumberProperty(this.inputElement?.value ?? null);\n        // if this._min === 0, we should allow 0\n        if (value || (this._min === 0 && value === 0)) {\n            const clampedValue = Math.min(Math.max(value, this._min), this._max);\n            if (clampedValue !== value) {\n                this.writeValue(clampedValue);\n                this.writePlaceholder(clampedValue);\n            }\n            this._value = clampedValue;\n        }\n    }\n\n    /**\n     * Remove event listeners on destruction\n     */\n    ngOnDestroy(): void {\n        this.inputElement.removeEventListener('keydown', this.keyDownListener);\n        this.inputElement.removeEventListener('keypress', this.keyPressListener);\n        this.inputElement.removeEventListener('input', this.inputEventListener);\n    }\n}\n\n@Component({\n    selector: 'asw-time',\n    templateUrl: 'time.html',\n    styleUrls: ['time.scss'],\n    exportAs: 'aswTime',\n    host: {\n        class: 'asw-time'\n    },\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AswTime<D> implements OnChanges, AfterViewInit, OnDestroy {\n    /** Emits when the currently selected date changes. */\n    @Output() readonly selectedChange = new EventEmitter<D>();\n\n    /** Emits when any date changes. */\n    @Output() readonly activeDateChange = new EventEmitter<D>();\n\n    /** Emits when any date is selected. */\n    @Output() readonly _userSelection = new EventEmitter<void>();\n\n    /** Emits when AM/PM button are clicked. */\n    @Output() readonly ampmChange = new EventEmitter<AswAMPM>();\n\n    /** Emits when AM/PM button are clicked. */\n    @Output() readonly clockViewChange = new EventEmitter<AswClockView>();\n\n    /** A function used to filter which dates are selectable. */\n    @Input() dateFilter!: (date: D, type: AswDatetimepickerFilterType) => boolean;\n\n    /** Step over minutes. */\n    @Input() interval: number = 1;\n\n    @ViewChild('hourInput', { read: ElementRef<HTMLInputElement> })\n    protected hourInputElement: ElementRef<HTMLInputElement> | undefined;\n\n    @ViewChild('hourInput', { read: AswTimeInput })\n    protected hourInputDirective: AswTimeInput | undefined;\n\n    @ViewChild('minuteInput', { read: ElementRef<HTMLInputElement> })\n    protected minuteInputElement: ElementRef<HTMLInputElement> | undefined;\n\n    @ViewChild('minuteInput', { read: AswTimeInput })\n    protected minuteInputDirective: AswTimeInput | undefined;\n\n    datetimepickerIntlChangesSubscription: SubscriptionLike;\n\n    /** Whether the clock uses 12 hour format. */\n    @Input()\n    get twelvehour(): boolean {\n        return this._twelvehour;\n    }\n    set twelvehour(value: boolean) {\n        this._twelvehour = coerceBooleanProperty(value);\n    }\n    private _twelvehour = false;\n\n    /** Whether the time is now in AM or PM. */\n    @Input() AMPM: AswAMPM = 'AM';\n\n    /**\n     * The date to display in this clock view.\n     */\n    @Input()\n    get activeDate(): D {\n        return this._activeDate;\n    }\n    set activeDate(value: D) {\n        this._activeDate = this._adapter.clampDate(value, this.minDate, this.maxDate);\n    }\n    private _activeDate!: D;\n\n    /** The currently selected date. */\n    @Input()\n    get selected(): D | null {\n        return this._selected;\n    }\n    set selected(value: D | null) {\n        this._selected = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\n        if (this._selected) {\n            this.activeDate = this._selected;\n        }\n    }\n    private _selected!: D | null;\n\n    /** The minimum selectable date. */\n    @Input()\n    get minDate(): D | null {\n        return this._minDate;\n    }\n\n    set minDate(value: D | null) {\n        this._minDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\n    }\n    private _minDate!: D | null;\n\n    /** The maximum selectable date. */\n    @Input()\n    get maxDate(): D | null {\n        return this._maxDate;\n    }\n    set maxDate(value: D | null) {\n        this._maxDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));\n    }\n    private _maxDate!: D | null;\n\n    /** Whether the clock should be started in hour or minute view. */\n    @Input()\n    get clockView() {\n        return this._clockView;\n    }\n    set clockView(value: AswClockView) {\n        this._clockView = value;\n    }\n    /** Whether the clock is in hour view. */\n    private _clockView: AswClockView = 'hour';\n\n    get isHourView() {\n        return this._clockView === 'hour';\n    }\n\n    get isMinuteView() {\n        return this._clockView === 'hour';\n    }\n\n    get hour() {\n        if (!this.activeDate) {\n            if (this.twelvehour) {\n                return '12';\n            } else {\n                return '00';\n            }\n        }\n\n        const hour = Number(this._adapter.getHour(this.activeDate));\n        if (!this.twelvehour) {\n            return this.prefixWithZero(hour);\n        }\n\n        if (hour === 0) {\n            return '12';\n        } else {\n            return this.prefixWithZero(hour > 12 ? hour - 12 : hour);\n        }\n    }\n\n    get minute() {\n        if (this.activeDate) {\n            return this.prefixWithZero(this._adapter.getMinute(this.activeDate));\n        }\n\n        return '00';\n    }\n\n    prefixWithZero(value: number) {\n        if (value < 10) {\n            return '0' + String(value);\n        }\n\n        return String(value);\n    }\n\n    constructor(\n        private _adapter: DatetimeAdapter<D>,\n        private _changeDetectorRef: ChangeDetectorRef,\n        protected _datetimepickerIntl: AswDatetimepickerIntl\n    ) {\n        this.datetimepickerIntlChangesSubscription = this._datetimepickerIntl.changes.subscribe(() => {\n            this._changeDetectorRef.detectChanges();\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        // when clockView changes by input we should focus the correct input\n        if (changes.clockView) {\n            if (changes.clockView.currentValue !== changes.clockView.previousValue) {\n                this.focusInputElement();\n            }\n        }\n    }\n\n    ngAfterViewInit(): void {\n        this.focusInputElement();\n    }\n\n    focusInputElement() {\n        if (this.clockView === 'hour') {\n            if (this.hourInputElement) {\n                (this.hourInputElement.nativeElement as HTMLInputElement).focus();\n            }\n        } else {\n            if (this.minuteInputElement) {\n                (this.minuteInputElement.nativeElement as HTMLInputElement).focus();\n            }\n        }\n    }\n\n    handleHourInputChange(value: NumberInput) {\n        const hour = coerceNumberProperty(value);\n        if (hour || hour === 0) {\n            const newValue = this._adapter.createDatetime(\n                this._adapter.getYear(this.activeDate),\n                this._adapter.getMonth(this.activeDate),\n                this._adapter.getDate(this.activeDate),\n                this.updateHourForAmPm(hour),\n                this._adapter.getMinute(this.activeDate)\n            );\n\n            this._activeDate = this._adapter.clampDate(newValue, this.minDate, this.maxDate);\n            this.activeDateChange.emit(this.activeDate);\n\n            // If previously we did set [aswValue]=\"13\" and the input changed to 6, and the clamping\n            // will make it \"13\" again then the hourInputDirective will not have been updated\n            // since \"13\" === \"13\" same reference so no change detected by directly setting it within\n            // this handler, we handle this usecase\n            if (this.hourInputDirective) {\n                this.hourInputDirective.timeValue = this.hour;\n            }\n        }\n    }\n\n    updateHourForAmPm(value: number) {\n        if (!this.twelvehour) {\n            return value;\n        }\n\n        // value should be between 1-12\n        if (this.AMPM === 'AM') {\n            if (value === 0 || value === 12) {\n                return 0;\n            }\n            return value;\n        }\n        // PM\n        else {\n            if (value === 0 || value === 12) {\n                return 12;\n            }\n\n            // other cases, we should add 12 to the value aka 3:00 PM = 3 + 12 = 15:00\n            return value + 12;\n        }\n    }\n\n    handleMinuteInputChange(value: NumberInput) {\n        const minute = coerceNumberProperty(value);\n        if (minute || minute === 0) {\n            const newValue = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), this._adapter.getDate(this.activeDate), this._adapter.getHour(this._activeDate), minute);\n            this._activeDate = this._adapter.clampDate(newValue, this.minDate, this.maxDate);\n            this.activeDateChange.emit(this.activeDate);\n\n            // If previously we did set [aswValue]=\"40\" and the input changed to 30, and the clamping\n            // will make it \"40\" again then the minuteInputDirective will not have been updated\n            // since \"40\" === \"40\" same reference so no change detected by directly setting it within\n            // this handler, we handle this usecase\n            if (this.minuteInputDirective) {\n                this.minuteInputDirective.timeValue = this.minute;\n            }\n        }\n    }\n\n    handleFocus(clockView: AswClockView) {\n        this.clockView = clockView;\n        this.clockViewChange.emit(clockView);\n    }\n\n    _timeSelected(date: D): void {\n        if (this.clockView === 'hour') {\n            this.clockView = 'minute';\n        }\n        this._activeDate = this.selected = date;\n    }\n\n    _onActiveDateChange(date: D) {\n        this._activeDate = date;\n        this.activeDateChange.emit(date);\n    }\n\n    handleOk() {\n        if (this._selected) {\n            this.selectedChange.emit(this._selected);\n        }\n        this._userSelection.emit();\n    }\n\n    handleCancel() {\n        this._userSelection.emit();\n    }\n\n    ngOnDestroy(): void {\n        if (this.datetimepickerIntlChangesSubscription) {\n            this.datetimepickerIntlChangesSubscription.unsubscribe();\n        }\n    }\n\n    static ngAcceptInputType_twelvehour: BooleanInput;\n}\n","<div class=\"asw-time-input-wrapper\">\r\n    <div class=\"asw-time-input-inner\">\r\n        <input class=\"asw-time-input\"\r\n            [class.asw-time-input-active]=\"clockView === 'hour'\"\r\n            [class.asw-time-input-warning]=\"!hourInput.valid\"\r\n            #hourInput=\"aswTimeInput\"\r\n            type=\"text\"\r\n            inputmode=\"numeric\"\r\n            maxlength=\"2\"\r\n            [timeMin]=\"twelvehour ? 1 : 0\"\r\n            [timeMax]=\"twelvehour ? 12 : 23\"\r\n            [timeValue]=\"hour\"\r\n            (timeValueChanged)=\"handleHourInputChange($event)\"\r\n            (focus)=\"handleFocus('hour')\" />\r\n\r\n        <div class=\"asw-time-seperator\">:</div>\r\n\r\n        <input class=\"asw-time-input\"\r\n            [class.asw-time-input-active]=\"clockView === 'minute'\"\r\n            [class.asw-time-input-warning]=\"!minuteInput.valid\"\r\n            #minuteInput=\"aswTimeInput\"\r\n            type=\"text\"\r\n            inputmode=\"numeric\"\r\n            maxlength=\"2\"\r\n            [timeMin]=\"0\"\r\n            [timeMax]=\"59\"\r\n            [timeValue]=\"minute\"\r\n            (timeValueChanged)=\"handleMinuteInputChange($event)\"\r\n            [timeInterval]=\"interval\"\r\n            (focus)=\"handleFocus('minute')\" />\r\n\r\n        <div *ngIf=\"twelvehour\" class=\"asw-time-ampm\">\r\n            <button mat-button type=\"button\" class=\"asw-time-am\"\r\n                [class.asw-time-ampm-active]=\"AMPM === 'AM'\" aria-label=\"AM\"\r\n                (keydown)=\"$event.stopPropagation()\"\r\n                (click)=\"ampmChange.emit('AM')\">AM\r\n            </button>\r\n            <button mat-button type=\"button\" class=\"asw-time-pm\"\r\n                [class.asw-time-ampm-active]=\"AMPM === 'PM'\" aria-label=\"PM\"\r\n                (keydown)=\"$event.stopPropagation()\"\r\n                (click)=\"ampmChange.emit('PM')\">PM\r\n            </button>\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n<asw-clock (selectedChange)=\"_timeSelected($event)\"\r\n    (activeDateChange)=\"_onActiveDateChange($event)\"\r\n    [AMPM]=\"AMPM\"\r\n    [dateFilter]=\"dateFilter\"\r\n    [interval]=\"interval\"\r\n    [maxDate]=\"maxDate\"\r\n    [minDate]=\"minDate\"\r\n    [selected]=\"selected\"\r\n    [startView]=\"clockView\"\r\n    [twelvehour]=\"twelvehour\">\r\n</asw-clock>\r\n\r\n<div class=\"asw-time-button-wrapper\">\r\n    <button class=\"asw-time-cancel-button\" mat-button type=\"button\" (click)=\"handleCancel()\">\r\n        {{ _datetimepickerIntl.cancelLabel }}\r\n    </button>\r\n    <button class=\"asw-time-ok-button\" mat-button type=\"button\" (click)=\"handleOk()\"\r\n        [disabled]=\"minuteInputDirective?.invalid || hourInputDirective?.invalid\">\r\n        {{ _datetimepickerIntl.okLabel }}\r\n    </button>\r\n</div>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation } from '@angular/core';\nimport { ASW_DATETIME_FORMATS, AswDatetimeFormats, DatetimeAdapter } from '@asoftwareworld/form-builder-pro/common';\nimport { AswCalendarCell } from '../calendar-body/calendar-body';\nimport { aswDatetimepickerAnimations } from '../datetimepicker-animations';\nimport { createMissingDateImplError } from '../datetimepicker-errors';\nimport { AswDatetimepickerType } from '../datetimepicker-types';\n\nconst DAYS_PER_WEEK = 7;\n\n/**\n * An internal component used to display a single month in the datetimepicker.\n * @docs-private\n */\n@Component({\n    selector: 'asw-month-view',\n    templateUrl: 'month-view.html',\n    exportAs: 'aswMonthView',\n    animations: [aswDatetimepickerAnimations.slideCalendar],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AswMonthView<D> implements AfterContentInit {\n    @Input() type: AswDatetimepickerType = 'date';\n\n    /** A function used to filter which dates are selectable. */\n    @Input() dateFilter!: (date: D) => boolean;\n\n    /** Emits when a new date is selected. */\n    @Output() selectedChange = new EventEmitter<D>();\n\n    /** Emits when any date is selected. */\n    @Output() readonly _userSelection = new EventEmitter<void>();\n\n    /** Grid of calendar cells representing the dates of the month. */\n    _weeks!: AswCalendarCell[][];\n\n    /** The number of blank cells in the first row before the 1st of the month. */\n    _firstWeekOffset!: number;\n\n    /**\n     * The date of the month that the currently selected Date falls on.\n     * Null if the currently selected Date is in another month.\n     */\n    _selectedDate!: number | null;\n\n    /** The date of the month that today falls on. Null if today is in another month. */\n    _todayDate!: number | null;\n\n    /** The names of the weekdays. */\n    _weekdays: { long: string; narrow: string }[];\n\n    _calendarState!: string;\n\n    constructor(\n        @Optional() public _adapter: DatetimeAdapter<D>,\n        @Optional() @Inject(ASW_DATETIME_FORMATS) private _dateFormats: AswDatetimeFormats\n    ) {\n        if (!this._adapter) {\n            throw createMissingDateImplError('DatetimeAdapter');\n        }\n\n        if (!this._dateFormats) {\n            throw createMissingDateImplError('ASW_DATETIME_FORMATS');\n        }\n\n        const firstDayOfWeek = this._adapter.getFirstDayOfWeek();\n        const narrowWeekdays = this._adapter.getDayOfWeekNames('narrow');\n        const longWeekdays = this._adapter.getDayOfWeekNames('long');\n\n        // Rotate the labels for days of the week based on the configured first day of the week.\n        const weekdays = longWeekdays.map((long, i) => {\n            return { long, narrow: narrowWeekdays[i] };\n        });\n        this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n\n        this._activeDate = this._adapter.today();\n    }\n\n    private _activeDate: D;\n\n    /**\n     * The date to display in this month view (everything other than the month and year is ignored).\n     */\n    @Input()\n    get activeDate(): D {\n        return this._activeDate;\n    }\n\n    set activeDate(value: D) {\n        const oldActiveDate = this._activeDate;\n        this._activeDate = value || this._adapter.today();\n        if (oldActiveDate && this._activeDate && !this._adapter.sameMonthAndYear(oldActiveDate, this._activeDate)) {\n            this._init();\n            if (this._adapter.isInNextMonth(oldActiveDate, this._activeDate)) {\n                this.calendarState('right');\n            } else {\n                this.calendarState('left');\n            }\n        }\n    }\n\n    /** The currently selected date. */\n    @Input()\n    get selected(): D {\n        return this._selected;\n    }\n    set selected(value: D) {\n        this._selected = value;\n        this._selectedDate = this._getDateInCurrentMonth(this.selected);\n    }\n    private _selected!: D;\n\n    ngAfterContentInit(): void {\n        this._init();\n    }\n\n    /** Handles when a new date is selected. */\n    _dateSelected(date: number) {\n        this.selectedChange.emit(this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), date, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate)));\n        if (this.type === 'date') {\n            this._userSelection.emit();\n        }\n    }\n\n    _calendarStateDone() {\n        this._calendarState = '';\n    }\n\n    /** Initializes this month view. */\n    private _init() {\n        this._selectedDate = this._getDateInCurrentMonth(this.selected);\n        this._todayDate = this._getDateInCurrentMonth(this._adapter.today());\n\n        const firstOfMonth = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate));\n        this._firstWeekOffset = (DAYS_PER_WEEK + this._adapter.getDayOfWeek(firstOfMonth) - this._adapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n\n        this._createWeekCells();\n    }\n\n    /** Creates MdCalendarCells for the dates in this month. */\n    private _createWeekCells() {\n        const daysInMonth = this._adapter.getNumDaysInMonth(this.activeDate);\n        const dateNames = this._adapter.getDateNames();\n        this._weeks = [[]];\n        for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n            if (cell === DAYS_PER_WEEK) {\n                this._weeks.push([]);\n                cell = 0;\n            }\n            const date = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), i + 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate));\n            const enabled = !this.dateFilter || this.dateFilter(date);\n            const ariaLabel = this._adapter.format(date, this._dateFormats.display.dateA11yLabel);\n            this._weeks[this._weeks.length - 1].push(new AswCalendarCell(i + 1, dateNames[i], ariaLabel, enabled));\n        }\n    }\n\n    /**\n     * Gets the date in this month that the given Date falls on.\n     * Returns null if the given Date is in another month.\n     */\n    private _getDateInCurrentMonth(date: D): number | null {\n        return this._adapter.sameMonthAndYear(date, this.activeDate) ? this._adapter.getDate(date) : null;\n    }\n\n    private calendarState(direction: string): void {\n        this._calendarState = direction;\n    }\n}\n","<table class=\"asw-calendar-table\" role=\"grid\">\r\n    <thead class=\"asw-calendar-table-header\">\r\n        <tr>\r\n            <th *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\r\n        </tr>\r\n    </thead>\r\n    <tbody asw-calendar-body\r\n        (@slideCalendar.done)=\"_calendarStateDone()\"\r\n        [@slideCalendar]=\"_calendarState\"\r\n        [rows]=\"_weeks\"\r\n        [todayValue]=\"_todayDate!\"\r\n        [activeCell]=\"_adapter.getDate(activeDate) - 1\"\r\n        [selectedValue]=\"_selectedDate!\"\r\n        (selectedValueChange)=\"_dateSelected($event)\">\r\n    </tbody>\r\n</table>\r\n","import { AfterContentInit, ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation } from '@angular/core';\nimport { createMissingDateImplError } from '../datetimepicker-errors';\nimport { AswCalendarCell } from '../calendar-body/calendar-body';\nimport { aswDatetimepickerAnimations } from '../datetimepicker-animations';\nimport { ASW_DATETIME_FORMATS, AswDatetimeFormats, DatetimeAdapter } from '@asoftwareworld/form-builder-pro/common';\nimport { AswDatetimepickerType } from '../datetimepicker-types';\n\n/**\n * An internal component used to display a single year in the datetimepicker.\n * @docs-private\n */\n@Component({\n    selector: 'asw-year-view',\n    templateUrl: 'year-view.html',\n    exportAs: 'aswYearView',\n    animations: [aswDatetimepickerAnimations.slideCalendar],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AswYearView<D> implements AfterContentInit {\n    @Input() type: AswDatetimepickerType = 'date';\n\n    /** A function used to filter which dates are selectable. */\n    @Input() dateFilter!: (date: D) => boolean;\n\n    /** Emits when a new month is selected. */\n    @Output() selectedChange = new EventEmitter<D>();\n\n    /** Emits when any date is selected. */\n    @Output() readonly _userSelection = new EventEmitter<void>();\n\n    /** Grid of calendar cells representing the months of the year. */\n    _months!: AswCalendarCell[][];\n\n    /** The label for this year (e.g. \"2017\"). */\n    _yearLabel!: string;\n\n    /** The month in this year that today falls on. Null if today is in a different year. */\n    _todayMonth!: number | null;\n\n    /**\n     * The month in this year that the selected Date falls on.\n     * Null if the selected Date is in a different year.\n     */\n    _selectedMonth!: number | null;\n\n    _calendarState!: string;\n\n    constructor(\n        @Optional() public _adapter: DatetimeAdapter<D>,\n        @Optional() @Inject(ASW_DATETIME_FORMATS) private _dateFormats: AswDatetimeFormats\n    ) {\n        if (!this._adapter) {\n            throw createMissingDateImplError('DatetimeAdapter');\n        }\n\n        if (!this._dateFormats) {\n            throw createMissingDateImplError('ASW_DATETIME_FORMATS');\n        }\n\n        this._activeDate = this._adapter.today();\n    }\n\n    private _activeDate: D;\n\n    /** The date to display in this year view (everything other than the year is ignored). */\n    @Input()\n    get activeDate(): D {\n        return this._activeDate;\n    }\n\n    set activeDate(value: D) {\n        const oldActiveDate = this._activeDate;\n        this._activeDate = value || this._adapter.today();\n        if (oldActiveDate && this._activeDate && !this._adapter.sameYear(oldActiveDate, this._activeDate)) {\n            this._init();\n            // if (oldActiveDate < this._activeDate) {\n            //  this.calendarState('right');\n            // } else {\n            //  this.calendarState('left');\n            // }\n        }\n    }\n\n    private _selected!: D;\n\n    /** The currently selected date. */\n    @Input()\n    get selected(): D {\n        return this._selected;\n    }\n\n    set selected(value: D) {\n        this._selected = value;\n        this._selectedMonth = this._getMonthInCurrentYear(this.selected);\n    }\n\n    ngAfterContentInit() {\n        this._init();\n    }\n\n    /** Handles when a new month is selected. */\n    _monthSelected(month: number) {\n        const normalizedDate = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, 0, 0);\n\n        this.selectedChange.emit(\n            this._adapter.createDatetime(\n                this._adapter.getYear(this.activeDate),\n                month,\n                Math.min(this._adapter.getDate(this.activeDate), this._adapter.getNumDaysInMonth(normalizedDate)),\n                this._adapter.getHour(this.activeDate),\n                this._adapter.getMinute(this.activeDate)\n            )\n        );\n        if (this.type === 'month') {\n            this._userSelection.emit();\n        }\n    }\n\n    _calendarStateDone() {\n        this._calendarState = '';\n    }\n\n    /** Initializes this month view. */\n    private _init() {\n        this._selectedMonth = this._getMonthInCurrentYear(this.selected);\n        this._todayMonth = this._getMonthInCurrentYear(this._adapter.today());\n        this._yearLabel = this._adapter.getYearName(this.activeDate);\n\n        const monthNames = this._adapter.getMonthNames('short');\n        // First row of months only contains 5 elements so we can fit the year label on the same row.\n        this._months = [\n            [0, 1, 2, 3],\n            [4, 5, 6, 7],\n            [8, 9, 10, 11]\n        ].map((row) => row.map((month) => this._createCellForMonth(month, monthNames[month])));\n    }\n\n    /**\n     * Gets the month in this year that the given Date falls on.\n     * Returns null if the given Date is in another year.\n     */\n    private _getMonthInCurrentYear(date: D) {\n        return this._adapter.sameYear(date, this.activeDate) ? this._adapter.getMonth(date) : null;\n    }\n\n    /** Creates an MdCalendarCell for the given month. */\n    private _createCellForMonth(month: number, monthName: string) {\n        const ariaLabel = this._adapter.format(\n            this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate)),\n            this._dateFormats.display.monthYearA11yLabel\n        );\n        return new AswCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._isMonthEnabled(month));\n    }\n\n    // private calendarState(direction: string): void {\n    //   this._calendarState = direction;\n    // }\n\n    /** Whether the given month is enabled. */\n    private _isMonthEnabled(month: number) {\n        if (!this.dateFilter) {\n            return true;\n        }\n\n        const firstOfMonth = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate));\n\n        // If any date in the month is enabled count the month as enabled.\n        for (let date = firstOfMonth; this._adapter.getMonth(date) === month; date = this._adapter.addCalendarDays(date, 1)) {\n            if (this.dateFilter(date)) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n}\n","<table class=\"asw-calendar-table\" role=\"grid\">\r\n    <thead class=\"asw-calendar-table-header\"></thead>\r\n    <tbody asw-calendar-body \r\n        (@slideCalendar.done)=\"_calendarStateDone()\" \r\n        [@slideCalendar]=\"_calendarState\"\r\n        [label]=\"_yearLabel\" \r\n        [rows]=\"_months\" \r\n        [todayValue]=\"_todayMonth!\" \r\n        [labelMinRequiredCells]=\"2\" \r\n        [numCols]=\"4\"\r\n        [activeCell]=\"_adapter.getMonth(activeDate)\" \r\n        [selectedValue]=\"_selectedMonth!\"\r\n        (selectedValueChange)=\"_monthSelected($event)\" \r\n        [allowDisabledSelection]=\"true\">\r\n    </tbody>\r\n</table>","import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, NgZone, OnDestroy, Optional, Output, ViewEncapsulation } from '@angular/core';\nimport { DOWN_ARROW, END, ENTER, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subscription } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { DatetimeAdapter, ASW_DATETIME_FORMATS, AswDatetimeFormats } from '@asoftwareworld/form-builder-pro/common';\nimport { AswClockView } from '../clock/clock';\nimport { aswDatetimepickerAnimations } from '../datetimepicker-animations';\nimport { createMissingDateImplError } from '../datetimepicker-errors';\nimport { AswDatetimepickerFilterType } from '../datetimepicker-filtertype';\nimport { getActiveOffset, isSameMultiYearView, yearsPerPage, yearsPerRow } from '../multi-year-view/multi-year-view';\nimport { AswAMPM, AswCalendarView, AswDatetimepickerType } from '../datetimepicker-types';\nimport { AswDatetimepickerIntl } from '../datetimepicker-intl';\n\n/**\n * A calendar that is used as part of the datetimepicker.\n * @docs-private\n */\n@Component({\n    selector: 'asw-calendar',\n    templateUrl: 'calendar.html',\n    styleUrls: ['calendar.scss'],\n    host: {\n        class: 'asw-calendar',\n        '[class.asw-calendar-with-time-input]': 'timeInput',\n        tabindex: '0',\n        '(keydown)': '_handleCalendarBodyKeydown($event)'\n    },\n    exportAs: 'aswCalendar',\n    animations: [aswDatetimepickerAnimations.slideCalendar],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AswCalendar<D> implements AfterContentInit, OnDestroy {\n    /** Whether to show multi-year view. */\n    @Input()\n    get multiYearSelector(): boolean {\n        return this._multiYearSelector;\n    }\n    set multiYearSelector(value: boolean) {\n        this._multiYearSelector = coerceBooleanProperty(value);\n    }\n    private _multiYearSelector = false;\n\n    /** Whether the clock uses 12 hour format. */\n    @Input()\n    get twelvehour(): boolean {\n        return this._twelvehour;\n    }\n    set twelvehour(value: boolean) {\n        this._twelvehour = coerceBooleanProperty(value);\n    }\n    private _twelvehour = false;\n\n    /** Whether the calendar should be started in month or year view. */\n    @Input() startView: AswCalendarView = 'month';\n\n    /** Step over minutes. */\n    @Input() timeInterval: number = 1;\n\n    /** A function used to filter which dates are selectable. */\n    @Input() dateFilter!: (date: D, type: AswDatetimepickerFilterType) => boolean;\n\n    /** Prevent user to select same date time */\n    @Input() preventSameDateTimeSelection = false;\n\n    /** Emits when the currently selected date changes. */\n    @Output() selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n    /** Emits when the view has been changed. */\n    @Output() viewChanged: EventEmitter<AswCalendarView> = new EventEmitter<AswCalendarView>();\n\n    @Output() _userSelection = new EventEmitter<void>();\n\n    _AMPM!: AswAMPM;\n\n    _clockView: AswClockView = 'hour';\n\n    _calendarState!: string;\n\n    private _intlChanges: Subscription;\n\n    private _clampedActiveDate!: D;\n\n    constructor(\n        private _elementRef: ElementRef,\n        private _intl: AswDatetimepickerIntl,\n        private _ngZone: NgZone,\n        @Optional() private _adapter: DatetimeAdapter<D>,\n        @Optional() @Inject(ASW_DATETIME_FORMATS) private _dateFormats: AswDatetimeFormats,\n        _changeDetectorRef: ChangeDetectorRef\n    ) {\n        if (!this._adapter) {\n            throw createMissingDateImplError('DatetimeAdapter');\n        }\n\n        if (!this._dateFormats) {\n            throw createMissingDateImplError('ASW_DATETIME_FORMATS');\n        }\n\n        this._intlChanges = _intl.changes.subscribe(() => _changeDetectorRef.markForCheck());\n    }\n\n    /** The display type of datetimepicker. */\n    @Input()\n    get type(): AswDatetimepickerType {\n        return this._type;\n    }\n    set type(value: AswDatetimepickerType) {\n        this._type = value || 'date';\n        if (this.type === 'year') {\n            this.multiYearSelector = true;\n        }\n    }\n    private _type: AswDatetimepickerType = 'date';\n\n    /** A date representing the period (month or year) to start the calendar in. */\n    @Input()\n    get startAt(): D | null {\n        return this._startAt;\n    }\n    set startAt(value: D | null) {\n        this._startAt = this._adapter.getValidDateOrNull(value);\n    }\n    private _startAt!: D | null;\n\n    /**\n     * Whether the calendar is in time mode. In time mode the calendar clock gets time input elements\n     * rather then just clock. When touchUi is enabled this will be disabled\n     */\n    @Input()\n    get timeInput(): boolean {\n        return this._timeInput;\n    }\n    set timeInput(value: boolean) {\n        this._timeInput = coerceBooleanProperty(value);\n    }\n    private _timeInput = false;\n\n    /** The currently selected date. */\n    @Input()\n    get selected(): D | null {\n        return this._selected;\n    }\n    set selected(value: D | null) {\n        this._selected = this._adapter.getValidDateOrNull(value);\n    }\n    private _selected!: D | null;\n\n    /** The minimum selectable date. */\n    @Input()\n    get minDate(): D | null {\n        return this._minDate;\n    }\n    set minDate(value: D | null) {\n        this._minDate = this._adapter.getValidDateOrNull(value);\n    }\n    private _minDate!: D | null;\n\n    /** The maximum selectable date. */\n    @Input()\n    get maxDate(): D | null {\n        return this._maxDate;\n    }\n    set maxDate(value: D | null) {\n        this._maxDate = this._adapter.getValidDateOrNull(value);\n    }\n    private _maxDate!: D | null;\n\n    /**\n     * The current active date. This determines which time period is shown and which date is\n     * highlighted when using keyboard navigation.\n     */\n    get _activeDate(): D {\n        return this._clampedActiveDate;\n    }\n\n    set _activeDate(value: D) {\n        const oldActiveDate = this._clampedActiveDate;\n        this._clampedActiveDate = this._adapter.clampDate(value, this.minDate, this.maxDate);\n\n        // whenever active date changed, and possibly got clamped we should adjust the am/pm setting\n        this._selectAMPM(this._clampedActiveDate);\n        if (oldActiveDate && this._clampedActiveDate && this.currentView === 'month' && !this._adapter.sameMonthAndYear(oldActiveDate, this._clampedActiveDate)) {\n            if (this._adapter.isInNextMonth(oldActiveDate, this._clampedActiveDate)) {\n                this.calendarState('right');\n            } else {\n                this.calendarState('left');\n            }\n        }\n    }\n\n    /** Whether the calendar is in month view. */\n    get currentView(): AswCalendarView {\n        return this._currentView;\n    }\n    set currentView(view: AswCalendarView) {\n        this._currentView = view;\n        this.viewChanged.emit(view);\n    }\n    private _currentView!: AswCalendarView;\n\n    get _yearPeriodText(): string {\n        if (this.currentView === 'multi-year') {\n            // The offset from the active year to the \"slot\" for the starting year is the\n            // *actual* first rendered year in the multi-year view, and the last year is\n            // just yearsPerPage - 1 away.\n            const activeYear = this._adapter.getYear(this._activeDate);\n            const minYearOfPage = activeYear - getActiveOffset(this._adapter, this._activeDate, this.minDate, this.maxDate);\n            const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\n            const minYearName = this._adapter.getYearName(this._adapter.createDate(minYearOfPage, 0, 1));\n            const maxYearName = this._adapter.getYearName(this._adapter.createDate(maxYearOfPage, 0, 1));\n            return this._intl.formatYearRange(minYearName, maxYearName);\n        }\n\n        return this.currentView === 'month' ? this._adapter.getMonthNames('long')[this._adapter.getMonth(this._activeDate)] : this._adapter.getYearName(this._activeDate);\n    }\n\n    get _yearButtonText(): string {\n        return this._adapter.getYearName(this._activeDate);\n    }\n\n    get _yearButtonLabel(): string {\n        return this.multiYearSelector ? this._intl.switchToMultiYearViewLabel : this._intl.switchToYearViewLabel;\n    }\n\n    get _dateButtonText(): string {\n        switch (this.type) {\n            case 'month':\n                return this._adapter.getMonthNames('long')[this._adapter.getMonth(this._activeDate)];\n            default:\n                return this._adapter.format(this._activeDate, this._dateFormats.display.popupHeaderDateLabel);\n        }\n    }\n\n    get _dateButtonLabel(): string {\n        return this._intl.switchToMonthViewLabel;\n    }\n\n    get _hoursButtonText(): string {\n        let hour = this._adapter.getHour(this._activeDate);\n        if (this.twelvehour) {\n            if (hour === 0) {\n                hour = 24;\n            }\n            hour = hour > 12 ? hour - 12 : hour;\n        }\n        return this._2digit(hour);\n    }\n\n    get _hourButtonLabel(): string {\n        return this._intl.switchToClockHourViewLabel;\n    }\n\n    get _minutesButtonText(): string {\n        return this._2digit(this._adapter.getMinute(this._activeDate));\n    }\n\n    get _minuteButtonLabel(): string {\n        return this._intl.switchToClockMinuteViewLabel;\n    }\n\n    get _prevButtonLabel(): string {\n        switch (this._currentView) {\n            case 'month':\n                return this._intl.prevMonthLabel;\n            case 'year':\n                return this._intl.prevYearLabel;\n            case 'multi-year':\n                return this._intl.prevMultiYearLabel;\n            default:\n                return '';\n        }\n    }\n\n    get _nextButtonLabel(): string {\n        switch (this._currentView) {\n            case 'month':\n                return this._intl.nextMonthLabel;\n            case 'year':\n                return this._intl.nextYearLabel;\n            case 'multi-year':\n                return this._intl.nextMultiYearLabel;\n            default:\n                return '';\n        }\n    }\n\n    /** Date filter for the month and year views. */\n    _dateFilterForViews = (date: D) => {\n        return !!date && (!this.dateFilter || this.dateFilter(date, AswDatetimepickerFilterType.DATE)) && (!this.minDate || this._adapter.compareDate(date, this.minDate) >= 0) && (!this.maxDate || this._adapter.compareDate(date, this.maxDate) <= 0);\n    };\n\n    _userSelected(): void {\n        this._userSelection.emit();\n    }\n\n    ngAfterContentInit() {\n        this._activeDate = this.startAt || this._adapter.today();\n        this._selectAMPM(this._activeDate);\n\n        if (this.type === 'year') {\n            this.currentView = 'multi-year';\n        } else if (this.type === 'month') {\n            this.currentView = 'year';\n        } else if (this.type === 'time') {\n            this.currentView = 'clock';\n        } else {\n            this.currentView = this.startView || 'month';\n        }\n    }\n\n    ngOnDestroy() {\n        this._intlChanges.unsubscribe();\n    }\n\n    /** Handles date selection in the month view. */\n    _dateSelected(date: D): void {\n        if (this.type === 'date') {\n            if (!this._adapter.sameDate(date, this.selected) || !this.preventSameDateTimeSelection) {\n                this.selectedChange.emit(date);\n            }\n        } else {\n            this._activeDate = date;\n            this.currentView = 'clock';\n        }\n    }\n\n    /** Handles month selection in the year view. */\n    _monthSelected(month: D): void {\n        if (this.type === 'month') {\n            if (!this._adapter.sameMonthAndYear(month, this.selected) || !this.preventSameDateTimeSelection) {\n                this.selectedChange.emit(this._adapter.getFirstDateOfMonth(month));\n            }\n        } else {\n            this._activeDate = month;\n            this.currentView = 'month';\n            this._clockView = 'hour';\n        }\n    }\n\n    /** Handles year selection in the multi year view. */\n    _yearSelected(year: D): void {\n        if (this.type === 'year') {\n            if (!this._adapter.sameYear(year, this.selected as D) || !this.preventSameDateTimeSelection) {\n                const normalizedDate = this._adapter.createDatetime(this._adapter.getYear(year), 0, 1, 0, 0);\n                this.selectedChange.emit(normalizedDate);\n            }\n        } else {\n            this._activeDate = year;\n            this.currentView = 'year';\n        }\n    }\n\n    _timeSelected(date: D) {\n        this._activeDate = this._updateDate(date);\n        if (!this._adapter.sameDatetime(date, this.selected) || !this.preventSameDateTimeSelection) {\n            this.selectedChange.emit(date);\n        }\n    }\n\n    _dialTimeSelected(date: D): void {\n        if (this._clockView !== 'minute') {\n            this._activeDate = this._updateDate(date);\n            this._clockView = 'minute';\n        } else {\n            if (!this._adapter.sameDatetime(date, this.selected) || !this.preventSameDateTimeSelection) {\n                this.selectedChange.emit(date);\n            }\n        }\n    }\n\n    _onActiveDateChange(date: D) {\n        this._activeDate = date;\n    }\n\n    _updateDate(date: D): D {\n        if (this.twelvehour) {\n            const HOUR = this._adapter.getHour(date);\n            if (HOUR === 12) {\n                if (this._AMPM === 'AM') {\n                    return this._adapter.addCalendarHours(date, -12);\n                }\n            } else if (this._AMPM === 'PM') {\n                return this._adapter.addCalendarHours(date, 12);\n            }\n        }\n        return date;\n    }\n\n    _selectAMPM(date: D) {\n        const hour = this._adapter.getHour(date);\n        if (hour > 11) {\n            this._AMPM = 'PM';\n        } else {\n            this._AMPM = 'AM';\n        }\n    }\n\n    _ampmClicked(source: AswAMPM): void {\n        this._currentView = 'clock';\n\n        if (source === this._AMPM) {\n            return;\n        }\n\n        // if AMPM changed from PM to AM substract 12 hours\n        const currentHour = this._adapter.getHour(this._activeDate);\n        let newHourValue;\n        if (source === 'AM') {\n            newHourValue = currentHour >= 12 ? this._adapter.getHour(this._activeDate) - 12 : 12;\n        }\n        // otherwise add 12 hours\n        else {\n            newHourValue = (currentHour + 12) % 24;\n        }\n\n        const newActiveDate = this._adapter.clampDate(\n            this._adapter.createDatetime(this._adapter.getYear(this._activeDate), this._adapter.getMonth(this._activeDate), this._adapter.getDate(this._activeDate), newHourValue, this._adapter.getMinute(this._activeDate)),\n            this.minDate,\n            this.maxDate\n        );\n\n        // only if our clamped date is not changed, we know we can apply the newActiveDate to the\n        // activeDate\n        if (this._adapter.getHour(newActiveDate) === newHourValue) {\n            this._activeDate = newActiveDate;\n            this._AMPM = source;\n        }\n    }\n\n    _yearClicked(): void {\n        if (this.type === 'year' || this.multiYearSelector) {\n            this.currentView = 'multi-year';\n            return;\n        }\n        this.currentView = 'year';\n    }\n\n    _dateClicked(): void {\n        if (this.type !== 'month') {\n            this.currentView = 'month';\n        }\n    }\n\n    _hoursClicked(): void {\n        this.currentView = 'clock';\n        this._clockView = 'hour';\n    }\n\n    _minutesClicked(): void {\n        this.currentView = 'clock';\n        this._clockView = 'minute';\n    }\n\n    /** Handles user clicks on the previous button. */\n    _previousClicked(): void {\n        this._activeDate = this.currentView === 'month' ? this._adapter.addCalendarMonths(this._activeDate, -1) : this._adapter.addCalendarYears(this._activeDate, this.currentView === 'year' ? -1 : -yearsPerPage);\n    }\n\n    /** Handles user clicks on the next button. */\n    _nextClicked(): void {\n        this._activeDate = this.currentView === 'month' ? this._adapter.addCalendarMonths(this._activeDate, 1) : this._adapter.addCalendarYears(this._activeDate, this.currentView === 'year' ? 1 : yearsPerPage);\n    }\n\n    /** Whether the previous period button is enabled. */\n    _previousEnabled(): boolean {\n        if (!this.minDate) {\n            return true;\n        }\n        return !this.minDate || !this._isSameView(this._activeDate, this.minDate);\n    }\n\n    /** Whether the next period button is enabled. */\n    _nextEnabled(): boolean {\n        return !this.maxDate || !this._isSameView(this._activeDate, this.maxDate);\n    }\n\n    /** Handles keydown events on the calendar body. */\n    _handleCalendarBodyKeydown(event: KeyboardEvent): void {\n        // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n        // disabled ones from being selected. This may not be ideal, we should look into whether\n        // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n        if (this.currentView === 'month') {\n            this._handleCalendarBodyKeydownInMonthView(event);\n        } else if (this.currentView === 'year') {\n            this._handleCalendarBodyKeydownInYearView(event);\n        } else if (this.currentView === 'multi-year') {\n            this._handleCalendarBodyKeydownInMultiYearView(event);\n        } else {\n            this._handleCalendarBodyKeydownInClockView(event);\n        }\n    }\n\n    _focusActiveCell() {\n        this._ngZone.runOutsideAngular(() => {\n            this._ngZone.onStable\n                .asObservable()\n                .pipe(first())\n                .subscribe(() => {\n                    this._elementRef.nativeElement.focus();\n                });\n        });\n    }\n\n    _calendarStateDone() {\n        this._calendarState = '';\n    }\n\n    /** Whether the two dates represent the same view in the current view mode (month or year). */\n    private _isSameView(date1: D, date2: D): boolean {\n        if (this.currentView === 'month') {\n            return this._adapter.getYear(date1) === this._adapter.getYear(date2) && this._adapter.getMonth(date1) === this._adapter.getMonth(date2);\n        }\n        if (this.currentView === 'year') {\n            return this._adapter.getYear(date1) === this._adapter.getYear(date2);\n        }\n        // Otherwise we are in 'multi-year' view.\n        return isSameMultiYearView(this._adapter, date1, date2, this.minDate, this.maxDate);\n    }\n\n    /** Handles keydown events on the calendar body when calendar is in month view. */\n    private _handleCalendarBodyKeydownInMonthView(event: KeyboardEvent): void {\n        switch (event.keyCode) {\n            case LEFT_ARROW:\n                this._activeDate = this._adapter.addCalendarDays(this._activeDate, -1);\n                break;\n            case RIGHT_ARROW:\n                this._activeDate = this._adapter.addCalendarDays(this._activeDate, 1);\n                break;\n            case UP_ARROW:\n                this._activeDate = this._adapter.addCalendarDays(this._activeDate, -7);\n                break;\n            case DOWN_ARROW:\n                this._activeDate = this._adapter.addCalendarDays(this._activeDate, 7);\n                break;\n            case HOME:\n                this._activeDate = this._adapter.addCalendarDays(this._activeDate, 1 - this._adapter.getDate(this._activeDate));\n                break;\n            case END:\n                this._activeDate = this._adapter.addCalendarDays(this._activeDate, this._adapter.getNumDaysInMonth(this._activeDate) - this._adapter.getDate(this._activeDate));\n                break;\n            case PAGE_UP:\n                this._activeDate = event.altKey ? this._adapter.addCalendarYears(this._activeDate, -1) : this._adapter.addCalendarMonths(this._activeDate, -1);\n                break;\n            case PAGE_DOWN:\n                this._activeDate = event.altKey ? this._adapter.addCalendarYears(this._activeDate, 1) : this._adapter.addCalendarMonths(this._activeDate, 1);\n                break;\n            case ENTER:\n                if (this._dateFilterForViews(this._activeDate)) {\n                    this._dateSelected(this._activeDate);\n                    // Prevent unexpected default actions such as form submission.\n                    event.preventDefault();\n                }\n                return;\n            default:\n                // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n                return;\n        }\n\n        // Prevent unexpected default actions such as form submission.\n        event.preventDefault();\n    }\n\n    /** Handles keydown events on the calendar body when calendar is in year view. */\n    private _handleCalendarBodyKeydownInYearView(event: KeyboardEvent): void {\n        switch (event.keyCode) {\n            case LEFT_ARROW:\n                this._activeDate = this._adapter.addCalendarMonths(this._activeDate, -1);\n                break;\n            case RIGHT_ARROW:\n                this._activeDate = this._adapter.addCalendarMonths(this._activeDate, 1);\n                break;\n            case UP_ARROW:\n                this._activeDate = this._prevMonthInSameCol(this._activeDate);\n                break;\n            case DOWN_ARROW:\n                this._activeDate = this._nextMonthInSameCol(this._activeDate);\n                break;\n            case HOME:\n                this._activeDate = this._adapter.addCalendarMonths(this._activeDate, -this._adapter.getMonth(this._activeDate));\n                break;\n            case END:\n                this._activeDate = this._adapter.addCalendarMonths(this._activeDate, 11 - this._adapter.getMonth(this._activeDate));\n                break;\n            case PAGE_UP:\n                this._activeDate = this._adapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n                break;\n            case PAGE_DOWN:\n                this._activeDate = this._adapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n                break;\n            case ENTER:\n                this._monthSelected(this._activeDate);\n                break;\n            default:\n                // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n                return;\n        }\n\n        // Prevent unexpected default actions such as form submission.\n        event.preventDefault();\n    }\n\n    /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n    private _handleCalendarBodyKeydownInMultiYearView(event: KeyboardEvent): void {\n        switch (event.keyCode) {\n            case LEFT_ARROW:\n                this._activeDate = this._adapter.addCalendarYears(this._activeDate, -1);\n                break;\n            case RIGHT_ARROW:\n                this._activeDate = this._adapter.addCalendarYears(this._activeDate, 1);\n                break;\n            case UP_ARROW:\n                this._activeDate = this._adapter.addCalendarYears(this._activeDate, -yearsPerRow);\n                break;\n            case DOWN_ARROW:\n                this._activeDate = this._adapter.addCalendarYears(this._activeDate, yearsPerRow);\n                break;\n            case HOME:\n                this._activeDate = this._adapter.addCalendarYears(this._activeDate, -getActiveOffset(this._adapter, this._activeDate, this.minDate, this.maxDate));\n                break;\n            case END:\n                this._activeDate = this._adapter.addCalendarYears(this._activeDate, yearsPerPage - getActiveOffset(this._adapter, this._activeDate, this.minDate, this.maxDate) - 1);\n                break;\n            case PAGE_UP:\n                this._activeDate = this._adapter.addCalendarYears(this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n                break;\n            case PAGE_DOWN:\n                this._activeDate = this._adapter.addCalendarYears(this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n                break;\n            case ENTER:\n                this._yearSelected(this._activeDate);\n                break;\n            default:\n                // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n                return;\n        }\n    }\n\n    /** Handles keydown events on the calendar body when calendar is in month view. */\n    private _handleCalendarBodyKeydownInClockView(event: KeyboardEvent): void {\n        switch (event.keyCode) {\n            case UP_ARROW:\n                this._activeDate = this._clockView === 'hour' ? this._adapter.addCalendarHours(this._activeDate, 1) : this._adapter.addCalendarMinutes(this._activeDate, this.timeInterval);\n                break;\n            case DOWN_ARROW:\n                this._activeDate = this._clockView === 'hour' ? this._adapter.addCalendarHours(this._activeDate, -1) : this._adapter.addCalendarMinutes(this._activeDate, -this.timeInterval);\n                break;\n            case ENTER:\n                if (!this.timeInput) {\n                    this._dialTimeSelected(this._activeDate);\n                }\n                return;\n            default:\n                // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n                return;\n        }\n\n        // Prevent unexpected default actions such as form submission.\n        event.preventDefault();\n    }\n\n    /**\n     * Determine the date for the month that comes before the given month in the same column in the\n     * calendar table.\n     */\n    private _prevMonthInSameCol(date: D): D {\n        // Determine how many months to jump forward given that there are 2 empty slots at the beginning\n        // of each year.\n        const increment = this._adapter.getMonth(date) <= 4 ? -5 : this._adapter.getMonth(date) >= 7 ? -7 : -12;\n        return this._adapter.addCalendarMonths(date, increment);\n    }\n\n    /**\n     * Determine the date for the month that comes after the given month in the same column in the\n     * calendar table.\n     */\n    private _nextMonthInSameCol(date: D): D {\n        // Determine how many months to jump forward given that there are 2 empty slots at the beginning\n        // of each year.\n        const increment = this._adapter.getMonth(date) <= 4 ? 7 : this._adapter.getMonth(date) >= 7 ? 5 : 12;\n        return this._adapter.addCalendarMonths(date, increment);\n    }\n\n    private calendarState(direction: string): void {\n        this._calendarState = direction;\n    }\n\n    private _2digit(n: number) {\n        return ('00' + n).slice(-2);\n    }\n\n    static ngAcceptInputType_multiYearSelector: BooleanInput;\n    static ngAcceptInputType_twelvehour: BooleanInput;\n    static ngAcceptInputType_timeInput: BooleanInput;\n}\n","<div class=\"asw-calendar-header\">\r\n    <button *ngIf=\"type !== 'time'\"\r\n        mat-button type=\"button\" class=\"asw-calendar-header-year\"\r\n        [class.active]=\"currentView === 'year' || currentView === 'multi-year'\"\r\n        [attr.aria-label]=\"_yearButtonLabel\"\r\n        (click)=\"_yearClicked()\">\r\n        <span>{{ _yearButtonText }}</span>\r\n        <svg *ngIf=\"multiYearSelector || type === 'year'\"\r\n            class=\"asw-calendar-header-year-dropdown\" matButtonIcon iconPositionEnd\r\n            width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n        <path d=\"M7,10L12,15L17,10H7Z\"></path>\r\n        </svg>\r\n    </button>\r\n    <div *ngIf=\"type !== 'year'\" class=\"asw-calendar-header-date-time\">\r\n        <button *ngIf=\"type !== 'time'\"\r\n            mat-button type=\"button\" class=\"asw-calendar-header-date\"\r\n            [class.active]=\"currentView === 'month'\"\r\n            [class.not-clickable]=\"type === 'month'\"\r\n            [attr.aria-label]=\"_dateButtonLabel\"\r\n            (click)=\"_dateClicked()\">{{ _dateButtonText }}\r\n        </button>\r\n        <span *ngIf=\"type.endsWith('time')\" class=\"asw-calendar-header-time\"\r\n            [class.active]=\"currentView === 'clock'\">\r\n            <span class=\"asw-calendar-header-hour-minute-container\">\r\n                <button mat-button type=\"button\" class=\"asw-calendar-header-hours\"\r\n                    [class.active]=\"_clockView === 'hour'\"\r\n                    [attr.aria-label]=\"_hourButtonLabel\"\r\n                    (click)=\"_hoursClicked()\">{{ _hoursButtonText }}\r\n                </button>\r\n                <span class=\"asw-calendar-header-hour-minute-separator\">:</span>\r\n                <button mat-button type=\"button\" class=\"asw-calendar-header-minutes\"\r\n                        [class.active]=\"_clockView === 'minute'\"\r\n                        [attr.aria-label]=\"_minuteButtonLabel\"\r\n                        (click)=\"_minutesClicked()\">{{ _minutesButtonText }}</button>\r\n            </span>\r\n            <span *ngIf=\"twelvehour\" class=\"asw-calendar-header-ampm-container\">\r\n                <button mat-button type=\"button\" class=\"asw-calendar-header-ampm\"\r\n                    [class.active]=\"_AMPM === 'AM'\" aria-label=\"AM\"\r\n                    (click)=\"_ampmClicked('AM')\">AM\r\n                </button>\r\n                <button mat-button type=\"button\" class=\"asw-calendar-header-ampm\"\r\n                    [class.active]=\"_AMPM === 'PM'\" aria-label=\"PM\"\r\n                    (click)=\"_ampmClicked('PM')\">PM\r\n                </button>\r\n            </span>\r\n        </span>\r\n    </div>\r\n</div>\r\n\r\n<div class=\"asw-calendar-content\" [ngSwitch]=\"currentView\">\r\n    <div *ngIf=\"currentView === 'month' || currentView === 'year' || currentView === 'multi-year'\"\r\n        class=\"asw-month-content\">\r\n        <div class=\"asw-calendar-controls\">\r\n            <button mat-icon-button type=\"button\"\r\n                class=\"asw-calendar-previous-button\"\r\n                [class.disabled]=\"!_previousEnabled()\"\r\n                [attr.aria-disabled]=\"!_previousEnabled()\"\r\n                [attr.aria-label]=\"_prevButtonLabel\"\r\n                (click)=\"_previousClicked()\">\r\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n                    <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"></path>\r\n                </svg>\r\n            </button>\r\n            <div class=\"asw-calendar-period-button\"\r\n                [@slideCalendar]=\"_calendarState\"\r\n                (@slideCalendar.done)=\"_calendarStateDone()\">\r\n                <strong>{{ _yearPeriodText }}</strong>\r\n            </div>\r\n            <button mat-icon-button type=\"button\"\r\n                class=\"asw-calendar-next-button\"\r\n                [class.disabled]=\"!_nextEnabled()\"\r\n                [attr.aria-disabled]=\"!_nextEnabled()\"\r\n                [attr.aria-label]=\"_nextButtonLabel\"\r\n                (click)=\"_nextClicked()\">\r\n                <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n                    <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path>\r\n                </svg>\r\n            </button>\r\n        </div>\r\n    </div>\r\n    <asw-month-view *ngSwitchCase=\"'month'\"\r\n        (_userSelection)=\"_userSelected()\"\r\n        (selectedChange)=\"_dateSelected($event)\"\r\n        [activeDate]=\"_activeDate\"\r\n        [dateFilter]=\"_dateFilterForViews\"\r\n        [selected]=\"selected!\"\r\n        [type]=\"type\">\r\n    </asw-month-view>\r\n    <asw-year-view *ngSwitchCase=\"'year'\"\r\n        (_userSelection)=\"_userSelected()\"\r\n        (selectedChange)=\"_monthSelected($event)\"\r\n        [activeDate]=\"_activeDate\"\r\n        [dateFilter]=\"_dateFilterForViews\"\r\n        [selected]=\"selected!\"\r\n        [type]=\"type\">\r\n    </asw-year-view>\r\n    <asw-multi-year-view *ngSwitchCase=\"'multi-year'\"\r\n        (_userSelection)=\"_userSelected()\"\r\n        (selectedChange)=\"_yearSelected($event)\"\r\n        [activeDate]=\"_activeDate\"\r\n        [dateFilter]=\"_dateFilterForViews\"\r\n        [maxDate]=\"maxDate\"\r\n        [minDate]=\"minDate\"\r\n        [selected]=\"selected!\"\r\n        [type]=\"type\">\r\n    </asw-multi-year-view>\r\n\r\n    <ng-container *ngSwitchDefault>\r\n        <asw-time *ngIf=\"timeInput; else clock\"\r\n            (_userSelection)=\"_userSelected()\"\r\n            (activeDateChange)=\"_onActiveDateChange($event)\"\r\n            (selectedChange)=\"_timeSelected($event)\"\r\n            [AMPM]=\"_AMPM\"\r\n            (ampmChange)=\"_ampmClicked($event)\"\r\n            [clockView]=\"_clockView\"\r\n            (clockViewChange)=\"_clockView = $event\"\r\n            [twelvehour]=\"twelvehour\"\r\n            [dateFilter]=\"dateFilter\"\r\n            [interval]=\"timeInterval\"\r\n            [maxDate]=\"maxDate\"\r\n            [minDate]=\"minDate\"\r\n            [selected]=\"_activeDate\">\r\n        </asw-time>\r\n\r\n        <ng-template #clock>\r\n            <asw-clock (_userSelection)=\"_userSelected()\"\r\n                (activeDateChange)=\"_onActiveDateChange($event)\"\r\n                (selectedChange)=\"_dialTimeSelected($event)\"\r\n                [AMPM]=\"_AMPM\"\r\n                [dateFilter]=\"dateFilter\"\r\n                [interval]=\"timeInterval\"\r\n                [maxDate]=\"maxDate\"\r\n                [minDate]=\"minDate\"\r\n                [selected]=\"_activeDate\"\r\n                [startView]=\"_clockView\"\r\n                [twelvehour]=\"twelvehour\">\r\n            </asw-clock>\r\n        </ng-template>\r\n    </ng-container>\r\n</div>\r\n","import {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ComponentRef,\n    ElementRef,\n    EventEmitter,\n    inject,\n    Inject,\n    InjectionToken,\n    Input,\n    NgZone,\n    OnDestroy,\n    OnInit,\n    Optional,\n    Output,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation\n} from '@angular/core';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { BooleanInput, coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';\nimport { ESCAPE, hasModifierKey, UP_ARROW } from '@angular/cdk/keycodes';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';\nimport { CanColor, mixinColor, ThemePalette } from '@angular/material/core';\nimport { merge, Subject, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { DatetimeAdapter } from '@asoftwareworld/form-builder-pro/common';\nimport { AswCalendar } from './calendar/calendar';\nimport { createMissingDateImplError } from './datetimepicker-errors';\nimport { AswDatetimepickerFilterType } from './datetimepicker-filtertype';\nimport { AswDatetimepickerInput } from './datetimepicker-input';\nimport { aswDatetimepickerAnimations } from './datetimepicker-animations';\nimport { AswCalendarView, AswDatetimepickerType } from './datetimepicker-types';\nimport { DOCUMENT } from '@angular/common';\n\n/** Used to generate a unique ID for each datetimepicker instance. */\nlet datetimepickerUid = 0;\n\n/** Possible modes for datetimepicker dropdown display. */\nexport type AswDatetimepickerMode = 'auto' | 'portrait' | 'landscape';\n\n/** Possible positions for the datetimepicker dropdown along the X axis. */\nexport type DatetimepickerDropdownPositionX = 'start' | 'end';\n\n/** Possible positions for the datetimepicker dropdown along the Y axis. */\nexport type DatetimepickerDropdownPositionY = 'above' | 'below';\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const ASW_DATETIMEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>('asw-datetimepicker-scroll-strategy');\n\nexport function ASW_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n    return () => overlay.scrollStrategies.reposition();\n}\n\nexport const ASW_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n    provide: ASW_DATETIMEPICKER_SCROLL_STRATEGY,\n    deps: [Overlay],\n    useFactory: ASW_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY\n};\n\n// Boilerplate for applying mixins to AswDatetimepickerContent.\n/** @docs-private */\nconst _AswDatetimepickerContentBase = mixinColor(\n    class {\n        constructor(public _elementRef: ElementRef) {}\n    }\n);\n\n/**\n * Component used as the content for the datetimepicker dialog and popup. We use this instead of\n * using AswCalendar directly as the content so we can control the initial focus. This also gives us\n * a place to put additional features of the popup that are not part of the calendar itself in the\n * future. (e.g. confirmation buttons).\n * @docs-private\n */\n@Component({\n    selector: 'asw-datetimepicker-content',\n    templateUrl: 'datetimepicker-content.html',\n    styleUrls: ['datetimepicker-content.scss'],\n    host: {\n        class: 'asw-datetimepicker-content',\n        '[class.asw-datetimepicker-content-touch]': 'datetimepicker?.touchUi',\n        '[attr.mode]': 'datetimepicker.mode',\n        '[@transformPanel]': '_animationState',\n        '(@transformPanel.done)': '_animationDone.next()'\n    },\n    animations: [aswDatetimepickerAnimations.transformPanel, aswDatetimepickerAnimations.fadeInCalendar],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    inputs: ['color']\n})\nexport class AswDatetimepickerContent<D> extends _AswDatetimepickerContentBase implements OnInit, AfterContentInit, OnDestroy, CanColor {\n    @ViewChild(AswCalendar, { static: true }) _calendar!: AswCalendar<D>;\n\n    datetimepicker!: AswDatetimepicker<D>;\n\n    /** Whether the datetimepicker is above or below the input. */\n    _isAbove!: boolean;\n\n    /** Current state of the animation. */\n    _animationState!: 'enter-dropdown' | 'enter-dialog' | 'void';\n\n    /** Emits when an animation has finished. */\n    readonly _animationDone = new Subject<void>();\n\n    /** Id of the label for the `role=\"dialog\"` element. */\n    _dialogLabelId: string | null = null;\n\n    constructor(\n        elementRef: ElementRef,\n        private _changeDetectorRef: ChangeDetectorRef\n    ) {\n        super(elementRef);\n    }\n\n    ngOnInit() {\n        this._animationState = this.datetimepicker.touchUi ? 'enter-dialog' : 'enter-dropdown';\n    }\n\n    ngAfterContentInit() {\n        this._calendar._focusActiveCell();\n    }\n\n    _startExitAnimation() {\n        this._animationState = 'void';\n        this._changeDetectorRef.markForCheck();\n    }\n\n    ngOnDestroy() {\n        this._animationDone.complete();\n    }\n}\n\n@Component({\n    selector: 'asw-datetimepicker',\n    exportAs: 'aswDatetimepicker',\n    template: '',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    preserveWhitespaces: false\n})\nexport class AswDatetimepicker<D> implements OnDestroy {\n    private _document = inject(DOCUMENT);\n\n    /** Whether to show multi-year view. */\n    @Input()\n    get multiYearSelector(): boolean {\n        return this._multiYearSelector;\n    }\n    set multiYearSelector(value: boolean) {\n        this._multiYearSelector = coerceBooleanProperty(value);\n    }\n    private _multiYearSelector = false;\n\n    /** Whether the clock uses 12 hour format. */\n    @Input()\n    get twelvehour(): boolean {\n        return this._twelvehour;\n    }\n    set twelvehour(value: boolean) {\n        this._twelvehour = coerceBooleanProperty(value);\n    }\n    private _twelvehour = false;\n\n    /** The view that the calendar should start in. */\n    @Input() startView: AswCalendarView = 'month';\n\n    /** The display mode of datetimepicker. */\n    @Input() mode: AswDatetimepickerMode = 'auto';\n\n    /** Step over minutes. */\n    @Input() timeInterval: number = 1;\n\n    /** Prevent user to select same date time */\n    @Input() preventSameDateTimeSelection = false;\n\n    /**\n     * Emits new selected date when selected date changes.\n     * @deprecated Switch to the `dateChange` and `dateInput` binding on the input element.\n     */\n    @Output() selectedChanged = new EventEmitter<D>();\n\n    /** Emits when the datetimepicker has been opened. */\n    @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n    /** Emits when the datetimepicker has been closed. */\n    @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n    /** Emits when the view has been changed. */\n    @Output() viewChanged: EventEmitter<AswCalendarView> = new EventEmitter<AswCalendarView>();\n\n    /**\n     * Classes to be passed to the date picker panel.\n     * Supports string and string array values, similar to `ngClass`.\n     */\n    @Input()\n    get panelClass(): string | string[] {\n        return this._panelClass;\n    }\n    set panelClass(value: string | string[]) {\n        this._panelClass = coerceStringArray(value);\n    }\n    private _panelClass!: string[];\n\n    /** Whether the calendar is open. */\n    @Input()\n    get opened(): boolean {\n        return this._opened;\n    }\n    set opened(value: boolean) {\n        coerceBooleanProperty(value) ? this.open() : this.close();\n    }\n    private _opened = false;\n\n    /** The id for the datetimepicker calendar. */\n    id = `asw-datetimepicker-${datetimepickerUid++}`;\n\n    /** Color palette to use on the datetimepicker's calendar. */\n    @Input()\n    get color(): ThemePalette {\n        return this._color || (this.datetimepickerInput ? this.datetimepickerInput.getThemePalette() : undefined);\n    }\n    set color(value: ThemePalette) {\n        this._color = value;\n    }\n    private _color: ThemePalette;\n\n    /** The input element this datetimepicker is associated with. */\n    datetimepickerInput!: AswDatetimepickerInput<D>;\n\n    /** Emits when the datetimepicker is disabled. */\n    _disabledChange = new Subject<boolean>();\n\n    private _validSelected: D | null = null;\n\n    /** A reference to the overlay into which we've rendered the calendar. */\n    private _overlayRef!: OverlayRef | null;\n\n    /** Reference to the component instance rendered in the overlay. */\n    private _componentRef!: ComponentRef<AswDatetimepickerContent<D>> | null;\n\n    /** The element that was focused before the datetimepicker was opened. */\n    private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n    /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n    private _backdropHarnessClass = `${this.id}-backdrop`;\n\n    private _inputStateChanges = Subscription.EMPTY;\n\n    constructor(\n        private _overlay: Overlay,\n        private _ngZone: NgZone,\n        private _viewContainerRef: ViewContainerRef,\n        @Inject(ASW_DATETIMEPICKER_SCROLL_STRATEGY) private _scrollStrategy: any,\n        @Optional() private _dateAdapter: DatetimeAdapter<D>,\n        @Optional() private _dir: Directionality\n    ) {\n        if (!this._dateAdapter) {\n            throw createMissingDateImplError('DateAdapter');\n        }\n    }\n\n    /** The date to open the calendar to initially. */\n    @Input()\n    get startAt(): D | null {\n        // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n        // selected value is.\n        return this._startAt || (this.datetimepickerInput ? this.datetimepickerInput.value : null);\n    }\n    set startAt(date: D | null) {\n        this._startAt = this._dateAdapter.getValidDateOrNull(date);\n    }\n    private _startAt!: D | null;\n\n    /** The display type of datetimepicker. */\n    @Input()\n    get type() {\n        return this._type;\n    }\n    set type(value: AswDatetimepickerType) {\n        this._type = value || 'datetime';\n    }\n    private _type: AswDatetimepickerType = 'datetime';\n\n    /**\n     * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\n     * than a popup and elements have more padding to allow for bigger touch targets.\n     */\n    @Input()\n    get touchUi(): boolean {\n        return this._touchUi;\n    }\n    set touchUi(value: boolean) {\n        this._touchUi = coerceBooleanProperty(value);\n    }\n    private _touchUi = false;\n\n    /**\n     * Whether the calendar is in time mode. In time mode the calendar clock gets time input\n     * elements rather then just clock. When `touchUi` is enabled this will be disabled.\n     */\n    @Input()\n    get timeInput(): boolean {\n        return this._timeInput && !this.touchUi;\n    }\n    set timeInput(value: boolean) {\n        this._timeInput = coerceBooleanProperty(value);\n    }\n    private _timeInput = false;\n\n    /** Whether the datetimepicker pop-up should be disabled. */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled === undefined && this.datetimepickerInput ? this.datetimepickerInput.disabled : !!this._disabled;\n    }\n    set disabled(value: boolean) {\n        const newValue = coerceBooleanProperty(value);\n\n        if (newValue !== this._disabled) {\n            this._disabled = newValue;\n            this._disabledChange.next(newValue);\n        }\n    }\n    private _disabled!: boolean;\n\n    /** Preferred position of the datetimepicker in the X axis. */\n    @Input()\n    xPosition: DatetimepickerDropdownPositionX = 'start';\n\n    /** Preferred position of the datetimepicker in the Y axis. */\n    @Input()\n    yPosition: DatetimepickerDropdownPositionY = 'below';\n\n    /**\n     * Whether to restore focus to the previously-focused element when the panel is closed.\n     * Note that automatic focus restoration is an accessibility feature and it is recommended that\n     * you provide your own equivalent, if you decide to turn it off.\n     */\n    @Input()\n    get restoreFocus(): boolean {\n        return this._restoreFocus;\n    }\n    set restoreFocus(value: boolean) {\n        this._restoreFocus = coerceBooleanProperty(value);\n    }\n    private _restoreFocus = true;\n\n    /** The currently selected date. */\n    get _selected(): D | null {\n        return this._validSelected;\n    }\n\n    set _selected(value: D | null) {\n        this._validSelected = value;\n    }\n\n    /** The minimum selectable date. */\n    get _minDate(): D | null {\n        return this.datetimepickerInput && this.datetimepickerInput.min;\n    }\n\n    /** The maximum selectable date. */\n    get _maxDate(): D | null {\n        return this.datetimepickerInput && this.datetimepickerInput.max;\n    }\n\n    get _dateFilter(): (date: D | null, type: AswDatetimepickerFilterType) => boolean {\n        return this.datetimepickerInput && this.datetimepickerInput._dateFilter;\n    }\n\n    _viewChanged(type: AswCalendarView): void {\n        this.viewChanged.emit(type);\n    }\n\n    ngOnDestroy() {\n        this._destroyOverlay();\n        this.close();\n        this._inputStateChanges.unsubscribe();\n        this._disabledChange.complete();\n    }\n\n    /** Selects the given date */\n    _select(date: D): void {\n        const oldValue = this._selected;\n        this._selected = date;\n        if (!this._dateAdapter.sameDatetime(oldValue, this._selected)) {\n            this.selectedChanged.emit(date);\n        }\n    }\n\n    /**\n     * Register an input with this datetimepicker.\n     * @param input The datetimepicker input to register with this datetimepicker.\n     */\n    _registerInput(input: AswDatetimepickerInput<D>): void {\n        if (this.datetimepickerInput) {\n            throw Error('A AswDatetimepicker can only be associated with a single input.');\n        }\n        this.datetimepickerInput = input;\n        this._inputStateChanges = this.datetimepickerInput._valueChange.subscribe((value: D | null) => (this._selected = value));\n    }\n\n    /** Open the calendar. */\n    open(): void {\n        if (this._opened || this.disabled) {\n            return;\n        }\n        if (!this.datetimepickerInput) {\n            throw Error('Attempted to open an AswDatetimepicker with no associated input.');\n        }\n\n        this._focusedElementBeforeOpen = _getFocusedElementPierceShadowDom();\n        this._openOverlay();\n        this._opened = true;\n        this.openedStream.emit();\n    }\n\n    /** Close the calendar. */\n    close(): void {\n        if (!this._opened) {\n            return;\n        }\n\n        const canRestoreFocus = this._restoreFocus && this._focusedElementBeforeOpen && typeof this._focusedElementBeforeOpen.focus === 'function';\n\n        const completeClose = () => {\n            // The `_opened` could've been reset already if\n            // we got two events in quick succession.\n            if (this._opened) {\n                this._opened = false;\n                this.closedStream.emit();\n            }\n        };\n\n        if (this._componentRef) {\n            const { instance, location } = this._componentRef;\n            instance._startExitAnimation();\n            instance._animationDone.pipe(take(1)).subscribe(() => {\n                const activeElement = this._document.activeElement;\n\n                // Since we restore focus after the exit animation, we have to check that\n                // the user didn't move focus themselves inside the `close` handler.\n                if (canRestoreFocus && (!activeElement || activeElement === this._document.activeElement || location.nativeElement.contains(activeElement))) {\n                    this._focusedElementBeforeOpen!.focus();\n                }\n\n                this._focusedElementBeforeOpen = null;\n                this._destroyOverlay();\n            });\n        }\n\n        if (canRestoreFocus) {\n            // Because IE moves focus asynchronously, we can't count on it being restored before we've\n            // marked the datepicker as closed. If the event fires out of sequence and the element that\n            // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n            // able to close the calendar at all. We work around it by making the logic, that marks\n            // the datepicker as closed, async as well.\n            setTimeout(completeClose);\n        } else {\n            completeClose();\n        }\n    }\n\n    /**\n     * Forwards relevant values from the datetimepicker to the\n     * datetimepicker content inside the overlay.\n     */\n    protected _forwardContentValues(instance: AswDatetimepickerContent<D>) {\n        instance.datetimepicker = this;\n        instance.color = this.color;\n        instance._dialogLabelId = this.datetimepickerInput.getOverlayLabelId();\n    }\n\n    /** Opens the overlay with the calendar. */\n    private _openOverlay(): void {\n        this._destroyOverlay();\n\n        const isDialog = this.touchUi;\n        const labelId = this.datetimepickerInput.getOverlayLabelId();\n\n        const portal = new ComponentPortal<AswDatetimepickerContent<D>>(AswDatetimepickerContent, this._viewContainerRef);\n        const overlayRef = (this._overlayRef = this._overlay.create(\n            new OverlayConfig({\n                positionStrategy: isDialog ? this._getDialogStrategy() : this._getDropdownStrategy(),\n                hasBackdrop: true,\n                backdropClass: [isDialog ? 'cdk-overlay-dark-backdrop' : 'mat-overlay-transparent-backdrop', this._backdropHarnessClass],\n                direction: this._dir,\n                scrollStrategy: isDialog ? this._overlay.scrollStrategies.block() : this._scrollStrategy(),\n                panelClass: `asw-datetimepicker-${isDialog ? 'dialog' : 'popup'}`\n            })\n        ));\n\n        const overlayElement = overlayRef.overlayElement;\n        overlayElement.setAttribute('role', 'dialog');\n\n        if (labelId) {\n            overlayElement.setAttribute('aria-labelledby', labelId);\n        }\n\n        if (isDialog) {\n            overlayElement.setAttribute('aria-modal', 'true');\n        }\n\n        this._getCloseStream(overlayRef).subscribe((event) => {\n            if (event) {\n                event.preventDefault();\n            }\n            this.close();\n        });\n\n        this._componentRef = overlayRef.attach(portal);\n        this._forwardContentValues(this._componentRef.instance);\n\n        // Update the position once the calendar has rendered. Only relevant in dropdown mode.\n        if (!isDialog) {\n            this._ngZone.onStable.pipe(take(1)).subscribe(() => overlayRef.updatePosition());\n        }\n    }\n\n    /** Destroys the current overlay. */\n    private _destroyOverlay() {\n        if (this._overlayRef) {\n            this._overlayRef.dispose();\n            this._overlayRef = this._componentRef = null;\n        }\n    }\n\n    /** Gets a position strategy that will open the calendar as a dropdown. */\n    private _getDialogStrategy() {\n        return this._overlay.position().global().centerHorizontally().centerVertically();\n    }\n\n    /** Gets a position strategy that will open the calendar as a dropdown. */\n    private _getDropdownStrategy() {\n        const strategy = this._overlay.position().flexibleConnectedTo(this.datetimepickerInput.getConnectedOverlayOrigin()).withTransformOriginOn('.asw-datetimepicker-content').withFlexibleDimensions(false).withViewportMargin(8).withLockedPosition();\n\n        return this._setConnectedPositions(strategy);\n    }\n\n    /**\n     * Sets the positions of the datetimepicker in dropdown mode based on the current configuration.\n     */\n    private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy) {\n        const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n        const secondaryX = primaryX === 'start' ? 'end' : 'start';\n        const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n        const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n\n        return strategy.withPositions([\n            {\n                originX: primaryX,\n                originY: secondaryY,\n                overlayX: primaryX,\n                overlayY: primaryY\n            },\n            {\n                originX: primaryX,\n                originY: primaryY,\n                overlayX: primaryX,\n                overlayY: secondaryY\n            },\n            {\n                originX: secondaryX,\n                originY: secondaryY,\n                overlayX: secondaryX,\n                overlayY: primaryY\n            },\n            {\n                originX: secondaryX,\n                originY: primaryY,\n                overlayX: secondaryX,\n                overlayY: secondaryY\n            }\n        ]);\n    }\n\n    /** Gets an observable that will emit when the overlay is supposed to be closed. */\n    private _getCloseStream(overlayRef: OverlayRef) {\n        return merge(\n            overlayRef.backdropClick(),\n            overlayRef.detachments(),\n            overlayRef.keydownEvents().pipe(\n                filter((event) => {\n                    // Closing on alt + up is only valid when there's an input associated with the\n                    // datetimepicker.\n                    return (event.keyCode === ESCAPE && !hasModifierKey(event)) || (this.datetimepickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW);\n                })\n            )\n        );\n    }\n\n    static ngAcceptInputType_multiYearSelector: BooleanInput;\n    static ngAcceptInputType_twelvehour: BooleanInput;\n    static ngAcceptInputType_preventSameDateTimeSelection: BooleanInput;\n    static ngAcceptInputType_disabled: BooleanInput;\n    static ngAcceptInputType_opened: BooleanInput;\n    static ngAcceptInputType_touchUi: BooleanInput;\n    static ngAcceptInputType_timeInput: BooleanInput;\n    static ngAcceptInputType_restoreFocus: BooleanInput;\n}\n","<div cdkTrapFocus\r\n    role=\"dialog\"\r\n    [attr.aria-modal]=\"true\"\r\n    [attr.aria-labelledby]=\"_dialogLabelId ?? undefined\"\r\n    [attr.mode]=\"datetimepicker.mode\"\r\n    class=\"asw-datetimepicker-content-container\">\r\n    <asw-calendar [id]=\"datetimepicker.id\"\r\n        [ngClass]=\"datetimepicker.panelClass\"\r\n        [attr.mode]=\"datetimepicker.mode\"\r\n        [type]=\"datetimepicker.type\"\r\n        [startAt]=\"datetimepicker.startAt\"\r\n        [startView]=\"datetimepicker.startView\"\r\n        [maxDate]=\"datetimepicker._maxDate\"\r\n        [minDate]=\"datetimepicker._minDate\"\r\n        [dateFilter]=\"datetimepicker._dateFilter\"\r\n        [multiYearSelector]=\"datetimepicker.multiYearSelector\"\r\n        [preventSameDateTimeSelection]=\"datetimepicker.preventSameDateTimeSelection\"\r\n        [timeInterval]=\"datetimepicker.timeInterval\"\r\n        [twelvehour]=\"datetimepicker.twelvehour\"\r\n        [selected]=\"datetimepicker._selected\"\r\n        [timeInput]=\"datetimepicker.timeInput\"\r\n        (selectedChange)=\"datetimepicker._select($event)\"\r\n        (viewChanged)=\"datetimepicker._viewChanged($event)\"\r\n        (_userSelection)=\"datetimepicker.close()\"\r\n        [@fadeInCalendar]=\"'enter'\">\r\n    </asw-calendar>\r\n</div>\r\n","import { AfterContentInit, Directive, ElementRef, EventEmitter, forwardRef, Inject, Input, OnDestroy, Optional, Output } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { ThemePalette } from '@angular/material/core';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { MatFormField } from '@angular/material/form-field';\nimport { Subscription } from 'rxjs';\nimport { DatetimeAdapter, ASW_DATETIME_FORMATS, AswDatetimeFormats } from '@asoftwareworld/form-builder-pro/common';\nimport { AswDatetimepicker } from './datetimepicker';\nimport { createMissingDateImplError } from './datetimepicker-errors';\nimport { AswDatetimepickerFilterType } from './datetimepicker-filtertype';\n\nexport const MAT_DATETIMEPICKER_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => AswDatetimepickerInput),\n    multi: true\n};\n\nexport const MAT_DATETIMEPICKER_VALIDATORS: any = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => AswDatetimepickerInput),\n    multi: true\n};\n\n/**\n * An event used for datetimepicker input and change events. We don't always have access to a native\n * input or change event because the event may have been triggered by the user clicking on the\n * calendar popup. For consistency, we always use AswDatetimepickerInputEvent instead.\n */\nexport class AswDatetimepickerInputEvent<D> {\n    /** The new value for the target datetimepicker input. */\n    value: D | null;\n\n    constructor(\n        public target: AswDatetimepickerInput<D>,\n        public targetElement: HTMLElement\n    ) {\n        this.value = this.target.value;\n    }\n}\n\n/** Directive used to connect an input to a AswDatetimepicker. */\n@Directive({\n    selector: 'input[aswDatetimepicker]',\n    providers: [MAT_DATETIMEPICKER_VALUE_ACCESSOR, MAT_DATETIMEPICKER_VALIDATORS, { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: AswDatetimepickerInput }],\n    host: {\n        '[attr.aria-haspopup]': 'true',\n        '[attr.aria-owns]': '(_datetimepicker?.opened && _datetimepicker.id) || null',\n        '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n        '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n        '[disabled]': 'disabled',\n        '(input)': '_onInput($event.target.value)',\n        '(change)': '_onChange()',\n        '(blur)': '_onBlur()',\n        '(keydown)': '_onKeydown($event)'\n    },\n    exportAs: 'aswDatetimepickerInput'\n})\nexport class AswDatetimepickerInput<D> implements AfterContentInit, ControlValueAccessor, OnDestroy, Validator {\n    _datetimepicker!: AswDatetimepicker<D>;\n\n    _dateFilter!: (date: D | null, type: AswDatetimepickerFilterType) => boolean;\n\n    /** Emits when a `change` event is fired on this `<input>`. */\n    @Output() dateChange = new EventEmitter<AswDatetimepickerInputEvent<D>>();\n\n    /** Emits when an `input` event is fired on this `<input>`. */\n    @Output() dateInput = new EventEmitter<AswDatetimepickerInputEvent<D>>();\n\n    /** Emits when the value changes (either due to user input or programmatic change). */\n    _valueChange = new EventEmitter<D | null>();\n\n    /** Emits when the disabled state has changed */\n    _disabledChange = new EventEmitter<boolean>();\n\n    private _datetimepickerSubscription = Subscription.EMPTY;\n\n    private _localeSubscription = Subscription.EMPTY;\n\n    /** Whether the last value set on the input was valid. */\n    private _lastValueValid = false;\n\n    constructor(\n        private _elementRef: ElementRef,\n        @Optional() public _dateAdapter: DatetimeAdapter<D>,\n        @Optional() @Inject(ASW_DATETIME_FORMATS) private _dateFormats: AswDatetimeFormats,\n        @Optional() private _formField: MatFormField\n    ) {\n        if (!this._dateAdapter) {\n            throw createMissingDateImplError('DatetimeAdapter');\n        }\n        if (!this._dateFormats) {\n            throw createMissingDateImplError('ASW_DATETIME_FORMATS');\n        }\n\n        // Update the displayed date when the locale changes.\n        this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n            this.value = this._dateAdapter.deserialize(this.value);\n        });\n    }\n\n    /** The datetimepicker that this input is associated with. */\n    @Input()\n    set aswDatetimepicker(value: AswDatetimepicker<D>) {\n        this.registerDatetimepicker(value);\n    }\n\n    @Input()\n    set aswDatetimepickerFilter(filter: (date: D | null, type: AswDatetimepickerFilterType) => boolean) {\n        this._dateFilter = filter;\n        this._validatorOnChange();\n    }\n\n    /** The value of the input. */\n    @Input()\n    get value(): D | null {\n        return this._value;\n    }\n    set value(value: D | null) {\n        value = this._dateAdapter.deserialize(value);\n        this._lastValueValid = !value || this._dateAdapter.isValid(value);\n        value = this._dateAdapter.getValidDateOrNull(value);\n        const oldDate = this.value;\n        this._value = value;\n        this._formatValue(value);\n\n        // use timeout to ensure the datetimepicker is instantiated and we get the correct format\n        setTimeout(() => {\n            if (!this._dateAdapter.sameDatetime(oldDate, value)) {\n                this._valueChange.emit(value);\n            }\n        });\n    }\n    private _value!: D | null;\n\n    /** The minimum valid date. */\n    @Input()\n    get min(): D | null {\n        return this._min;\n    }\n    set min(value: D | null) {\n        this._min = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n        this._validatorOnChange();\n    }\n    private _min!: D | null;\n\n    /** The maximum valid date. */\n    @Input()\n    get max(): D | null {\n        return this._max;\n    }\n    set max(value: D | null) {\n        this._max = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));\n        this._validatorOnChange();\n    }\n    private _max!: D | null;\n\n    /** Whether the datetimepicker-input is disabled. */\n    @Input()\n    get disabled(): boolean {\n        return !!this._disabled;\n    }\n    set disabled(value: boolean) {\n        const newValue = coerceBooleanProperty(value);\n\n        if (this._disabled !== newValue) {\n            this._disabled = newValue;\n            this._disabledChange.emit(newValue);\n        }\n    }\n    private _disabled!: boolean;\n\n    _onTouched = () => {};\n\n    ngAfterContentInit() {\n        if (this._datetimepicker) {\n            this._datetimepickerSubscription = this._datetimepicker.selectedChanged.subscribe((selected: D) => {\n                this.value = selected;\n                this._cvaOnChange(selected);\n                this._onTouched();\n                this.dateInput.emit(new AswDatetimepickerInputEvent(this, this._elementRef.nativeElement));\n                this.dateChange.emit(new AswDatetimepickerInputEvent(this, this._elementRef.nativeElement));\n            });\n        }\n    }\n\n    ngOnDestroy() {\n        this._datetimepickerSubscription.unsubscribe();\n        this._localeSubscription.unsubscribe();\n        this._valueChange.complete();\n        this._disabledChange.complete();\n    }\n\n    registerOnValidatorChange(fn: () => void): void {\n        this._validatorOnChange = fn;\n    }\n\n    validate(c: AbstractControl): ValidationErrors | null {\n        return this._validator ? this._validator(c) : null;\n    }\n\n    /**\n     * Gets the element that the datetimepicker popup should be connected to.\n     * @return The element to connect the popup to.\n     */\n    getConnectedOverlayOrigin(): ElementRef {\n        return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n    }\n\n    /** Gets the ID of an element that should be used a description for the calendar overlay. */\n    getOverlayLabelId(): string | null {\n        if (this._formField) {\n            return this._formField.getLabelId();\n        }\n\n        return this._elementRef.nativeElement.getAttribute('aria-labelledby');\n    }\n\n    // Implemented as part of ControlValueAccessor\n    writeValue(value: D): void {\n        this.value = value;\n    }\n\n    // Implemented as part of ControlValueAccessor\n    registerOnChange(fn: (value: any) => void): void {\n        this._cvaOnChange = fn;\n    }\n\n    // Implemented as part of ControlValueAccessor\n    registerOnTouched(fn: () => void): void {\n        this._onTouched = fn;\n    }\n\n    // Implemented as part of ControlValueAccessor\n    setDisabledState(disabled: boolean): void {\n        this.disabled = disabled;\n    }\n\n    _onKeydown(event: KeyboardEvent) {\n        if (event.altKey && event.keyCode === DOWN_ARROW) {\n            this._datetimepicker.open();\n            event.preventDefault();\n        }\n    }\n\n    _onInput(value: string) {\n        let date = this._dateAdapter.parse(value, this.getParseFormat());\n        this._lastValueValid = !date || this._dateAdapter.isValid(date);\n        date = this._dateAdapter.getValidDateOrNull(date);\n        this._value = date;\n        this._cvaOnChange(date);\n        this._valueChange.emit(date);\n        this.dateInput.emit(new AswDatetimepickerInputEvent(this, this._elementRef.nativeElement));\n    }\n\n    _onChange() {\n        this.dateChange.emit(new AswDatetimepickerInputEvent(this, this._elementRef.nativeElement));\n    }\n\n    /** Handles blur events on the input. */\n    _onBlur() {\n        // Reformat the input only if we have a valid value.\n        if (this.value) {\n            this._formatValue(this.value);\n        }\n\n        this._onTouched();\n    }\n\n    private registerDatetimepicker(value: AswDatetimepicker<D>) {\n        if (value) {\n            this._datetimepicker = value;\n            this._datetimepicker._registerInput(this);\n        }\n    }\n\n    private getDisplayFormat() {\n        switch (this._datetimepicker.type) {\n            case 'date':\n                return this._dateFormats.display.dateInput;\n            case 'datetime':\n                return this._dateFormats.display.datetimeInput;\n            case 'time':\n                return this._dateFormats.display.timeInput;\n            case 'month':\n                return this._dateFormats.display.monthInput;\n            case 'year':\n                return this._dateFormats.display.yearInput;\n        }\n    }\n\n    private getParseFormat() {\n        let parseFormat;\n\n        switch (this._datetimepicker.type) {\n            case 'date':\n                parseFormat = this._dateFormats.parse.dateInput;\n                break;\n            case 'datetime':\n                parseFormat = this._dateFormats.parse.datetimeInput;\n                break;\n            case 'time':\n                parseFormat = this._dateFormats.parse.timeInput;\n                break;\n            case 'month':\n                parseFormat = this._dateFormats.parse.monthInput;\n                break;\n            case 'year':\n                parseFormat = this._dateFormats.parse.yearInput;\n                break;\n        }\n        if (!parseFormat) {\n            parseFormat = this._dateFormats.parse.dateInput;\n        }\n\n        return parseFormat;\n    }\n\n    private _cvaOnChange: (value: any) => void = () => {};\n\n    private _validatorOnChange = () => {};\n\n    /** The form control validator for whether the input parses. */\n    private _parseValidator: ValidatorFn = (): ValidationErrors | null => {\n        return this._lastValueValid ? null : { aswDatetimepickerParse: { text: this._elementRef.nativeElement.value } };\n    };\n\n    /** The form control validator for the min date. */\n    private _minValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n        const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n        return !this.min || !controlValue || (this._dateAdapter.compareDatetime(this.min, controlValue) as number) <= 0 ? null : { aswDatetimepickerMin: { min: this.min, actual: controlValue } };\n    };\n\n    /** The form control validator for the max date. */\n    private _maxValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n        const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n        return !this.max || !controlValue || (this._dateAdapter.compareDatetime(this.max, controlValue) as number) >= 0 ? null : { aswDatetimepickerMax: { max: this.max, actual: controlValue } };\n    };\n\n    /** The form control validator for the date filter. */\n    private _filterValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\n        const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n        return !this._dateFilter || !controlValue || this._dateFilter(controlValue, AswDatetimepickerFilterType.DATE) ? null : { aswDatetimepickerFilter: true };\n    };\n\n    /** The combined form control validator for this input. */\n    private _validator: ValidatorFn | null = Validators.compose([this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator]);\n\n    /** Formats a value and sets it on the input element. */\n    private _formatValue(value: D | null) {\n        this._elementRef.nativeElement.value = value ? this._dateAdapter.format(value, this.getDisplayFormat()) : '';\n    }\n\n    /** Returns the palette used by the input's form field, if any. */\n    getThemePalette(): ThemePalette {\n        return this._formField ? this._formField.color : undefined;\n    }\n\n    static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { AfterContentInit, Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, Directive, Input, OnChanges, OnDestroy, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MatButton } from '@angular/material/button';\nimport { merge, of as observableOf, Subscription, Observable } from 'rxjs';\nimport { AswDatetimepicker } from '../datetimepicker';\nimport { AswDatetimepickerIntl } from '../datetimepicker-intl';\nimport { Icons } from '@asoftwareworld/form-builder-pro/common';\n\n/** Can be used to override the icon of a `aswDatetimepickerToggle`. */\n@Directive({\n    selector: '[aswDatetimepickerToggleIcon]'\n})\nexport class AswDatetimepickerToggleIcon {}\n\n@Component({\n    selector: 'asw-datetimepicker-toggle',\n    templateUrl: 'datetimepicker-toggle.html',\n    styleUrls: ['./datetimepicker-toggle.scss'],\n    host: {\n        class: 'asw-datetimepicker-toggle',\n        '[attr.tabindex]': 'null',\n        '[class.asw-datetimepicker-toggle-active]': 'datetimepicker && datetimepicker.opened',\n        '[class.mat-accent]': 'datetimepicker && datetimepicker.color === \"accent\"',\n        '[class.mat-warn]': 'datetimepicker && datetimepicker.color === \"warn\"',\n        // Used by the test harness to tie this toggle to its datetimepicker.\n        '[attr.data-asw-calendar]': 'datetimepicker ? datetimepicker.id : null',\n        // Bind the `click` on the host, rather than the inner `button`, so that we can call\n        // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n        // it so that the input doesn't get focused automatically by the form field (See #21836).\n        '(click)': '_open($event)'\n    },\n    exportAs: 'aswDatetimepickerToggle',\n    encapsulation: ViewEncapsulation.None,\n    preserveWhitespaces: false,\n    changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AswDatetimepickerToggle<D> implements AfterContentInit, OnChanges, OnDestroy {\n    private _stateChanges = Subscription.EMPTY;\n    icons = Icons;\n    /** Datetimepicker instance that the button will toggle. */\n    @Input('for') datetimepicker!: AswDatetimepicker<D>;\n\n    /** Tabindex for the toggle. */\n    @Input() tabIndex: number | null;\n\n    /** Screen-reader label for the button. */\n    @Input('aria-label') ariaLabel?: string;\n\n    /** Whether the toggle button is disabled. */\n    @Input()\n    get disabled(): boolean {\n        return this._disabled === undefined ? this.datetimepicker.disabled : !!this._disabled;\n    }\n    set disabled(value: boolean) {\n        this._disabled = coerceBooleanProperty(value);\n    }\n    private _disabled!: boolean;\n\n    /** Whether ripples on the toggle should be disabled. */\n    @Input() disableRipple!: boolean;\n\n    /** Custom icon set by the consumer. */\n    @ContentChild(AswDatetimepickerToggleIcon) _customIcon!: AswDatetimepickerToggleIcon;\n\n    /** Underlying button element. */\n    @ViewChild('button') _button!: MatButton;\n\n    constructor(\n        public _intl: AswDatetimepickerIntl,\n        private _changeDetectorRef: ChangeDetectorRef,\n        @Attribute('tabindex') defaultTabIndex: string\n    ) {\n        const parsedTabIndex = Number(defaultTabIndex);\n        this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes.datetimepicker) {\n            this._watchStateChanges();\n        }\n    }\n\n    ngOnDestroy() {\n        this._stateChanges.unsubscribe();\n    }\n\n    ngAfterContentInit() {\n        this._watchStateChanges();\n    }\n\n    _open(event: Event): void {\n        if (this.datetimepicker && !this.disabled) {\n            this.datetimepicker.open();\n            event.stopPropagation();\n        }\n    }\n\n    private _watchStateChanges() {\n        const datetimepickerDisabled = this.datetimepicker ? this.datetimepicker._disabledChange : observableOf();\n        const inputDisabled = this.datetimepicker && this.datetimepicker.datetimepickerInput ? this.datetimepicker.datetimepickerInput._disabledChange : observableOf();\n        const datetimepickerToggled = this.datetimepicker ? merge(this.datetimepicker.openedStream, this.datetimepicker.closedStream) : observableOf();\n\n        this._stateChanges.unsubscribe();\n        this._stateChanges = merge(this._intl.changes, datetimepickerDisabled as Observable<void>, inputDisabled as Observable<void>, datetimepickerToggled).subscribe(() => this._changeDetectorRef.markForCheck());\n    }\n\n    static ngAcceptInputType_disabled: BooleanInput;\n    static ngAcceptInputType_disableRipple: BooleanInput;\n}\n","<button #button\r\n      mat-icon-button\r\n      type=\"button\"\r\n      [attr.aria-haspopup]=\"datetimepicker ? 'dialog' : null\"\r\n      [attr.aria-label]=\"ariaLabel || _intl.openCalendarLabel\"\r\n      [attr.tabindex]=\"disabled ? -1 : tabIndex\"\r\n      [disabled]=\"disabled\"\r\n      [disableRipple]=\"disableRipple\">\r\n      <ng-container *ngIf=\"!_customIcon\" [ngSwitch]=\"datetimepicker.type\">\r\n            <span *ngSwitchCase=\"'time'\" [innerHTML]=\"icons.time | aswSafeHtml\"></span>\r\n            <span *ngSwitchCase=\"'datetime'\" [innerHTML]=\"icons.dateTime | aswSafeHtml\"></span>\r\n            <span *ngSwitchDefault [innerHTML]=\"icons.today | aswSafeHtml\"></span>\r\n      </ng-container>\r\n      <ng-content select=\"[aswDatetimepickerToggleIcon]\"></ng-content>\r\n</button>\r\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AswCalendar } from './calendar/calendar';\nimport { AswCalendarBody } from './calendar-body/calendar-body';\nimport { AswClock } from './clock/clock';\nimport { AswTime, AswTimeInput } from './time/time';\nimport { AswDatetimepicker, AswDatetimepickerContent, ASW_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER } from './datetimepicker';\nimport { AswDatetimepickerInput } from './datetimepicker-input';\nimport { AswDatetimepickerToggle, AswDatetimepickerToggleIcon } from './datetimepicker-toggle/datetimepicker-toggle';\nimport { AswMonthView } from './month-view/month-view';\nimport { AswYearView } from './year-view/year-view';\nimport { AswMultiYearView } from './multi-year-view/multi-year-view';\nimport { AswPipeModule } from '@asoftwareworld/form-builder-pro/common';\n\n@NgModule({\n    imports: [CommonModule, MatButtonModule, OverlayModule, A11yModule, PortalModule, AswPipeModule],\n    declarations: [AswCalendar, AswCalendarBody, AswClock, AswTime, AswTimeInput, AswDatetimepicker, AswDatetimepickerToggle, AswDatetimepickerToggleIcon, AswDatetimepickerInput, AswDatetimepickerContent, AswMonthView, AswYearView, AswMultiYearView],\n    exports: [AswCalendar, AswCalendarBody, AswClock, AswTime, AswDatetimepicker, AswDatetimepickerToggle, AswDatetimepickerToggleIcon, AswDatetimepickerInput, AswDatetimepickerContent, AswMonthView, AswYearView, AswMultiYearView],\n    providers: [ASW_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER]\n})\nexport class AswDatetimepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.AswCalendarBody","i2.AswDatetimepickerIntl","i3.AswCalendarBody","i3","i5.AswClock","i6.AswTime","i7.AswMonthView","i8.AswYearView","i9.AswMultiYearView","i2","i3.AswCalendar","i5","observableOf","i4"],"mappings":"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"}