@ptsecurity/mosaic 15.0.1 → 15.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_theming.scss +107 -32
- package/_visual.scss +35 -17
- package/autocomplete/autocomplete.scss +1 -1
- package/button/_button-base.scss +6 -0
- package/button/button.component.d.ts +11 -4
- package/button/button.module.d.ts +2 -1
- package/core/pop-up/constants.d.ts +2 -1
- package/core/styles/_mosaic-theme.scss +1 -1
- package/core/styles/theming/_components-theming.scss +9 -2
- package/core/styles/typography/_typography.scss +34 -24
- package/datepicker/_datepicker-theme.scss +4 -2
- package/datepicker/calendar-header.scss +6 -0
- package/dl/_dl-theme.scss +49 -4
- package/dl/dl.component.d.ts +2 -1
- package/dl/dl.scss +39 -6
- package/esm2020/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2020/button/button.component.mjs +47 -38
- package/esm2020/button/button.module.mjs +8 -4
- package/esm2020/core/pop-up/constants.mjs +4 -2
- package/esm2020/core/pop-up/pop-up-trigger.mjs +2 -1
- package/esm2020/core/version.mjs +2 -2
- package/esm2020/datepicker/calendar-header.component.mjs +2 -2
- package/esm2020/dl/dl.component.mjs +7 -3
- package/esm2020/form-field/form-field.mjs +2 -2
- package/esm2020/form-field/hint.mjs +3 -3
- package/esm2020/input/input-number.mjs +6 -1
- package/esm2020/link/link.component.mjs +12 -2
- package/esm2020/modal/modal.component.mjs +4 -4
- package/esm2020/modal/modal.type.mjs +4 -2
- package/esm2020/popover/popover-confirm.component.mjs +2 -2
- package/esm2020/popover/popover.component.mjs +6 -6
- package/esm2020/select/select.component.mjs +15 -14
- package/esm2020/select/select.module.mjs +8 -4
- package/esm2020/sidepanel/sidepanel-config.mjs +8 -1
- package/esm2020/sidepanel/sidepanel-container.component.mjs +7 -3
- package/esm2020/sidepanel/sidepanel-directives.mjs +3 -3
- package/esm2020/tags/tag-input.mjs +3 -3
- package/esm2020/timezone/timezone-select.component.mjs +3 -3
- package/esm2020/toast/toast-container.component.mjs +2 -2
- package/esm2020/tooltip/tooltip.animations.mjs +4 -4
- package/esm2020/tooltip/tooltip.component.mjs +9 -6
- package/esm2020/tree-select/tree-select.component.mjs +39 -38
- package/fesm2015/ptsecurity-mosaic-autocomplete.mjs +2 -2
- package/fesm2015/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-button.mjs +52 -37
- package/fesm2015/ptsecurity-mosaic-button.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-core.mjs +5 -2
- package/fesm2015/ptsecurity-mosaic-core.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-datepicker.mjs +2 -2
- package/fesm2015/ptsecurity-mosaic-datepicker.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-dl.mjs +6 -2
- package/fesm2015/ptsecurity-mosaic-dl.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-form-field.mjs +3 -3
- package/fesm2015/ptsecurity-mosaic-form-field.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-input.mjs +6 -0
- package/fesm2015/ptsecurity-mosaic-input.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-link.mjs +11 -1
- package/fesm2015/ptsecurity-mosaic-link.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-modal.mjs +6 -4
- package/fesm2015/ptsecurity-mosaic-modal.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-popover.mjs +7 -7
- package/fesm2015/ptsecurity-mosaic-popover.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-select.mjs +21 -16
- package/fesm2015/ptsecurity-mosaic-select.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-sidepanel.mjs +16 -5
- package/fesm2015/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tags.mjs +2 -2
- package/fesm2015/ptsecurity-mosaic-tags.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-timezone.mjs +2 -2
- package/fesm2015/ptsecurity-mosaic-timezone.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-toast.mjs +2 -2
- package/fesm2015/ptsecurity-mosaic-toast.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tooltip.mjs +11 -8
- package/fesm2015/ptsecurity-mosaic-tooltip.mjs.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tree-select.mjs +39 -37
- package/fesm2015/ptsecurity-mosaic-tree-select.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-autocomplete.mjs +2 -2
- package/fesm2020/ptsecurity-mosaic-autocomplete.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-button.mjs +50 -37
- package/fesm2020/ptsecurity-mosaic-button.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-core.mjs +5 -2
- package/fesm2020/ptsecurity-mosaic-core.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-datepicker.mjs +2 -2
- package/fesm2020/ptsecurity-mosaic-datepicker.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-dl.mjs +6 -2
- package/fesm2020/ptsecurity-mosaic-dl.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-form-field.mjs +3 -3
- package/fesm2020/ptsecurity-mosaic-form-field.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-input.mjs +5 -0
- package/fesm2020/ptsecurity-mosaic-input.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-link.mjs +11 -1
- package/fesm2020/ptsecurity-mosaic-link.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-modal.mjs +6 -4
- package/fesm2020/ptsecurity-mosaic-modal.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-popover.mjs +7 -7
- package/fesm2020/ptsecurity-mosaic-popover.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-select.mjs +21 -16
- package/fesm2020/ptsecurity-mosaic-select.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-sidepanel.mjs +16 -5
- package/fesm2020/ptsecurity-mosaic-sidepanel.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-tags.mjs +2 -2
- package/fesm2020/ptsecurity-mosaic-tags.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-timezone.mjs +2 -2
- package/fesm2020/ptsecurity-mosaic-timezone.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-toast.mjs +2 -2
- package/fesm2020/ptsecurity-mosaic-toast.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-tooltip.mjs +11 -8
- package/fesm2020/ptsecurity-mosaic-tooltip.mjs.map +1 -1
- package/fesm2020/ptsecurity-mosaic-tree-select.mjs +38 -37
- package/fesm2020/ptsecurity-mosaic-tree-select.mjs.map +1 -1
- package/form-field/_form-field-theme.scss +9 -0
- package/form-field/form-field.scss +5 -1
- package/link/_link-theme.scss +18 -2
- package/link/link.component.d.ts +4 -1
- package/modal/modal.component.d.ts +1 -1
- package/modal/modal.scss +2 -2
- package/modal/modal.type.d.ts +3 -2
- package/package.json +6 -6
- package/popover/popover.scss +2 -2
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/default-theme.css +1 -1
- package/select/select.component.d.ts +5 -1
- package/select/select.module.d.ts +1 -1
- package/select/select.scss +7 -3
- package/sidepanel/sidepanel-config.d.ts +6 -0
- package/sidepanel/sidepanel-container.component.d.ts +1 -0
- package/sidepanel/sidepanel.scss +37 -24
- package/toast/toast-container.component.scss +1 -1
- package/tooltip/tooltip.component.d.ts +1 -0
- package/tooltip/tooltip.scss +9 -1
- package/tree-select/tree-select.component.d.ts +2 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ptsecurity-mosaic-datepicker.mjs","sources":["../../../packages/mosaic/datepicker/calendar-body.component.ts","../../../packages/mosaic/datepicker/calendar-body.html","../../../packages/mosaic/datepicker/calendar-header.component.ts","../../../packages/mosaic/datepicker/calendar-header.html","../../../packages/mosaic/datepicker/datepicker-errors.ts","../../../packages/mosaic/datepicker/month-view.component.ts","../../../packages/mosaic/datepicker/month-view.html","../../../packages/mosaic/datepicker/datepicker-intl.ts","../../../packages/mosaic/datepicker/calendar.component.ts","../../../packages/mosaic/datepicker/calendar.html","../../../packages/mosaic/datepicker/datepicker-input.directive.ts","../../../packages/mosaic/datepicker/datepicker-toggle.component.ts","../../../packages/mosaic/datepicker/datepicker-toggle.html","../../../packages/mosaic/datepicker/datepicker-animations.ts","../../../packages/mosaic/datepicker/datepicker.component.ts","../../../packages/mosaic/datepicker/datepicker-content.html","../../../packages/mosaic/datepicker/datepicker-module.ts","../../../packages/mosaic/datepicker/ptsecurity-mosaic-datepicker.ts"],"sourcesContent":["// tslint:disable:no-magic-numbers\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\n\n\n/**\n * Extra CSS classes that can be associated with a calendar cell.\n */\nexport type McCalendarCellCssClasses = string | string[] | Set<string> | { [key: string]: any };\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nexport class McCalendarCell {\n constructor(\n public value: number,\n public displayValue: string,\n public enabled: boolean,\n public cssClasses?: McCalendarCellCssClasses\n ) {}\n}\n\n\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\n@Component({\n selector: '[mc-calendar-body]',\n exportAs: 'mcCalendarBody',\n templateUrl: 'calendar-body.html',\n styleUrls: ['calendar-body.scss'],\n host: {\n class: 'mc-calendar__body'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendarBody implements OnChanges {\n /** The cells to display in the table. */\n @Input() rows: McCalendarCell[][];\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 /** The cell number of the active cell in the table. */\n @Input() activeCell = 0;\n\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n */\n @Input() cellAspectRatio = 1;\n\n /** Emits when a new value is selected. */\n @Output() readonly selectedValueChange: EventEmitter<number> = new EventEmitter<number>();\n\n /** The number of blank cells to put at the beginning for the first row. */\n firstRowOffset: number;\n\n /** Padding for the individual date cells. */\n cellPadding: string;\n\n /** Width of an individual cell. */\n cellWidth: string;\n\n cellClicked(cell: McCalendarCell): void {\n if (cell.enabled) {\n this.selectedValueChange.emit(cell.value);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const columnChanges = changes.numCols;\n // tslint:disable-next-line:no-this-assignment\n const { rows, numCols } = this;\n\n if (changes.rows || columnChanges) {\n this.firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n }\n\n if (changes.cellAspectRatio || columnChanges || !this.cellPadding) {\n this.cellPadding = `${this.cellAspectRatio * 50 / numCols}%`;\n }\n\n if (columnChanges || !this.cellWidth) {\n this.cellWidth = `${100 / numCols}%`;\n }\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","<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\n percentage of the width (a variant of the trick described here:\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n -->\n <td *ngIf=\"rowIndex === 0 && firstRowOffset\"\n class=\"mc-calendar__body-label\"\n [attr.colspan]=\"firstRowOffset\">\n </td>\n\n <td *ngFor=\"let item of row; let colIndex = index\"\n class=\"mc-calendar__body-cell\"\n [ngClass]=\"item.cssClasses!\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.mc-calendar__body_disabled]=\"!item.enabled\"\n [class.mc-calendar__body_active]=\"isActiveCell(rowIndex, colIndex)\"\n (click)=\"cellClicked(item)\"\n [style.width]=\"cellWidth\"\n [style.paddingTop]=\"cellPadding\"\n [style.paddingBottom]=\"cellPadding\">\n <div class=\"mc-calendar__body-cell-content\"\n [class.mc-selected]=\"selectedValue === item.value\"\n [class.mc-calendar__body-today]=\"todayValue === item.value\">\n {{ item.displayValue }}\n </div>\n </td>\n</tr>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter } from '@ptsecurity/mosaic/core';\n\n\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2099;\n\n/** Default header for McCalendar */\n@Component({\n selector: 'mc-calendar-header',\n exportAs: 'mcCalendarHeader',\n templateUrl: 'calendar-header.html',\n styleUrls: ['calendar-header.scss'],\n host: {\n class: 'mc-calendar-header'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendarHeader<D> implements AfterContentInit {\n monthNames: { name: string; value: number }[];\n selectedMonth: number;\n\n years: number[] = [];\n selectedYear: number;\n\n @Input()\n get activeDate(): D {\n return this._activeDate;\n }\n\n set activeDate(value: D) {\n this._activeDate = value;\n\n this.updateSelectedValues();\n }\n\n private _activeDate: D;\n\n @Input()\n get maxDate(): D | null {\n return this._maxDate;\n }\n\n set maxDate(value: D | null) {\n if (!value) { return; }\n\n this._maxDate = value;\n\n this.updateYearsArray();\n }\n\n // tslint:disable-next-line:no-magic-numbers\n private _maxDate = this.adapter.createDate(defaultMaxYear, 11);\n\n @Input()\n get minDate(): D | null {\n return this._minDate;\n }\n\n set minDate(value: D | null) {\n if (!value) { return; }\n\n this._minDate = value;\n\n this.updateYearsArray();\n }\n\n private _minDate = this.adapter.createDate(defaultMinYear, 1);\n\n get previousDisabled(): boolean {\n return this.compareDate(this.activeDate, this.minDate!) < 0;\n }\n\n get nextDisabled(): boolean {\n return this.compareDate(this.activeDate, this.maxDate!) >= 0;\n }\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange = new EventEmitter<D>();\n @Output() readonly monthSelected = new EventEmitter<D>();\n @Output() readonly yearSelected = new EventEmitter<D>();\n\n constructor(private readonly adapter: DateAdapter<D>) {\n this.monthNames = this.adapter.getMonthNames('long')\n .map((name, i) => ({ name, value: i }));\n }\n\n ngAfterContentInit(): void {\n this.updateYearsArray();\n this.updateSelectedValues();\n }\n\n /** Handles when a new month is selected. */\n onMonthSelected(month: number) {\n const year = this.adapter.getYear(this.activeDate);\n const normalizedDate = this.adapter.createDate(year, month);\n const daysInMonth = this.adapter.getNumDaysInMonth(normalizedDate);\n\n this.activeDate = this.adapter.createDate(\n year,\n month,\n Math.min(this.adapter.getDate(this.activeDate), daysInMonth)\n );\n\n this.monthSelected.emit(this.activeDate);\n this.activeDateChange.emit(this.activeDate);\n }\n\n /** Handles when a new year is selected. */\n onYearSelected(year: number) {\n const month = this.adapter.getMonth(this.activeDate);\n const daysInMonth = this.adapter.getNumDaysInMonth(this.adapter.createDate(year, month));\n\n this.activeDate = this.adapter.createDate(\n year,\n month,\n Math.min(this.adapter.getDate(this.activeDate), daysInMonth)\n );\n\n this.yearSelected.emit(this.activeDate);\n this.activeDateChange.emit(this.activeDate);\n }\n\n selectCurrentDate(): void {\n this.activeDate = this.adapter.today();\n\n this.activeDateChange.emit(this.activeDate);\n }\n\n /** Handles user clicks on the previous button. */\n selectPreviousMonth(): void {\n this.activeDate = this.adapter.addCalendarMonths(this.activeDate, -1);\n\n this.activeDateChange.emit(this.activeDate);\n }\n\n /** Handles user clicks on the next button. */\n selectNextMonth(): void {\n this.activeDate = this.adapter.addCalendarMonths(this.activeDate, 1);\n\n this.activeDateChange.emit(this.activeDate);\n }\n\n private compareDate(first: D, second: D): number {\n const normalizedFirst = this.adapter.createDate(\n this.adapter.getYear(first),\n this.adapter.getMonth(first)\n );\n\n const normalizedSecond = this.adapter.createDate(\n this.adapter.getYear(second),\n this.adapter.getMonth(second)\n );\n\n return this.adapter.compareDate(normalizedFirst, normalizedSecond);\n }\n\n private updateSelectedValues() {\n this.selectedMonth = this.monthNames[this.adapter.getMonth(this.activeDate)].value;\n\n const selectedYear = this.adapter.getYear(this.activeDate);\n this.selectedYear = this.years.includes(selectedYear) ? selectedYear : this.years[0];\n }\n\n private updateYearsArray() {\n const minYear = this.adapter.getYear(this.minDate!);\n const maxYear = this.adapter.getYear(this.maxDate!);\n\n this.years = [];\n\n for (let i: number = minYear; i <= maxYear; i++) {\n this.years.push(i);\n }\n }\n}\n","<div class=\"mc-calendar-header__select-group\">\n <mc-select\n class=\"mc-calendar-header__select\"\n #monthSelect=\"mcSelect\"\n [value]=\"selectedMonth\"\n [panelClass]=\"'mc-calendar-select-panel'\"\n (selectionChange)=\"onMonthSelected($event.value)\">\n\n <button class=\"mc-button_transparent layout-padding-right-xs\"\n mc-button\n mc-select-matcher\n [class.mc-active]=\"monthSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ monthSelect.triggerValue }}\n\n <i class=\"layout-padding-left-3xs\" mc-icon=\"mc-angle-down-S_16\"></i>\n </button>\n\n <mc-option *ngFor=\"let month of monthNames\"\n [mcTooltipDisabled]=\"true\"\n [value]=\"month.value\">\n {{ month.name }}\n </mc-option>\n </mc-select>\n\n <mc-select\n #yearSelect=\"mcSelect\"\n [value]=\"selectedYear\"\n [panelClass]=\"'mc-calendar-select-panel'\"\n (selectionChange)=\"onYearSelected($event.value)\">\n <button class=\"mc-button_transparent layout-padding-right-xs\"\n mc-button\n mc-select-matcher\n [class.mc-active]=\"yearSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ yearSelect.triggerValue }}\n\n <i class=\"layout-padding-left-3xs\" mc-icon=\"mc-angle-down-S_16\"></i>\n </button>\n\n <mc-option *ngFor=\"let year of years\"\n [mcTooltipDisabled]=\"true\"\n [value]=\"year\">\n {{ year }}\n </mc-option>\n </mc-select>\n</div>\n\n<div class=\"mc-calendar-header__button-group\">\n <button mc-button\n class=\"mc-button_transparent mc-calendar-header__previous-button\"\n [tabindex]=\"-1\"\n [disabled]=\"previousDisabled\"\n (click)=\"selectPreviousMonth()\">\n\n <i mc-icon=\"mc-angle-left-L_16\"></i>\n </button>\n\n <button mc-button\n class=\"mc-button_transparent\"\n [tabindex]=\"-1\"\n (click)=\"selectCurrentDate()\">\n\n <i mc-icon=\"mc-circle-8_16\"></i>\n </button>\n\n <button mc-button\n class=\"mc-button_transparent mc-calendar-header__next-button\"\n [tabindex]=\"-1\"\n [disabled]=\"nextDisabled\"\n (click)=\"selectNextMonth()\">\n\n <i mc-icon=\"mc-angle-right-L_16\"></i>\n </button>\n</div>\n","/** @docs-private */\nexport function createMissingDateImplError(provider: string) {\n return Error(\n `McDatepicker: No provider found for ${provider}. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`);\n}\n","// tslint:disable:no-magic-numbers\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewEncapsulation,\n ViewChild\n} from '@angular/core';\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/mosaic/core';\n\nimport { McCalendarBody, McCalendarCell, McCalendarCellCssClasses } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\n\n\nconst DAYS_PER_WEEK = 7;\n\n\n/**\n * An internal component used to display a single month in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-month-view',\n exportAs: 'mcMonthView',\n templateUrl: 'month-view.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McMonthView<D> implements AfterContentInit {\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 oldValue = this._activeDate;\n this._activeDate = value;\n\n if (!this.hasSameMonthAndYear(oldValue, value)) {\n this.init();\n }\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\n set selected(value: D | null) {\n this._selected = value;\n this.selectedDate = this.getDateInCurrentMonth(this._selected);\n }\n\n private _selected: D | null;\n\n /** The minimum selectable date. */\n @Input() minDate: D | null;\n\n /** The maximum selectable date. */\n @Input() maxDate: D | null;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\n\n /** Emits when a new date is selected. */\n @Output() readonly selectedChange: EventEmitter<D | null> = new EventEmitter<D | null>();\n\n /** Emits when any date is selected. */\n @Output() readonly userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(McCalendarBody, { static: false }) mcCalendarBody: McCalendarBody;\n\n /** Grid of calendar cells representing the dates of the month. */\n weeks: McCalendarCell[][];\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 constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n @Optional() public adapter: DateAdapter<D>\n ) {\n\n if (!this.adapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n const firstDayOfWeek = this.adapter.getFirstDayOfWeek();\n const narrowWeekdays = this.adapter.getDayOfWeekNames('short');\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\n this.weekdays = weekdays\n .slice(firstDayOfWeek)\n .concat(weekdays.slice(0, firstDayOfWeek));\n\n this._activeDate = this.adapter.today();\n }\n\n ngAfterContentInit() {\n this.init();\n }\n\n /** Handles when a new date is selected. */\n dateSelected(date: number) {\n if (this.selectedDate !== date) {\n const selectedYear = this.adapter.getYear(this.activeDate);\n const selectedMonth = this.adapter.getMonth(this.activeDate);\n const selectedDate = this.adapter.createDate(selectedYear, selectedMonth, date);\n\n this.selectedChange.emit(selectedDate);\n }\n\n this.userSelection.emit();\n }\n\n /** Initializes this month view. */\n init() {\n this.selectedDate = this.getDateInCurrentMonth(this.selected);\n this.todayDate = this.getDateInCurrentMonth(this.adapter.today());\n\n const firstOfMonth = this.adapter.createDate(\n this.adapter.getYear(this.activeDate),\n this.adapter.getMonth(this.activeDate)\n );\n\n this.firstWeekOffset = (\n DAYS_PER_WEEK + this.adapter.getDayOfWeek(firstOfMonth) - this.adapter.getFirstDayOfWeek()\n ) % DAYS_PER_WEEK;\n\n this.createWeekCells();\n this.changeDetectorRef.markForCheck();\n }\n\n /** Creates McCalendarCells for the dates in this month. */\n private createWeekCells() {\n const daysInMonth = this.adapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this.adapter.getDateNames();\n\n this.weeks = [[]];\n\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\n const date = this.adapter.createDate(\n this.adapter.getYear(this.activeDate),\n this.adapter.getMonth(this.activeDate),\n i + 1\n );\n const enabled = this.shouldEnableDate(date);\n const cellClasses = this.dateClass ? this.dateClass(date) : undefined;\n\n this.weeks[this.weeks.length - 1]\n .push(new McCalendarCell(i + 1, dateNames[i], enabled, cellClasses));\n }\n }\n\n /** Date filter for the month */\n private shouldEnableDate(date: D): boolean {\n return !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this.adapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this.adapter.compareDate(date, this.maxDate) <= 0);\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 | null): number | null {\n return date && this.hasSameMonthAndYear(date, this.activeDate) ? this.adapter.getDate(date) : null;\n }\n\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n private hasSameMonthAndYear(d1: D | null, d2: D | null): boolean {\n return !!(d1 && d2 && this.adapter.getMonth(d1) === this.adapter.getMonth(d2) &&\n this.adapter.getYear(d1) === this.adapter.getYear(d2));\n }\n}\n","<table class=\"mc-calendar__table\">\n <thead class=\"mc-calendar__table-header\">\n <tr>\n <th *ngFor=\"let day of weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n <tr>\n <th class=\"mc-calendar__table-header-divider\" colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [rows]=\"weeks\"\n [todayValue]=\"todayDate!\"\n [selectedValue]=\"selectedDate!\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"adapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"dateSelected($event)\">\n </tbody>\n</table>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n/** Datepicker data that requires internationalization. */\n@Injectable({ providedIn: 'root' })\nexport class McDatepickerIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the calendar popup (used by screen readers). */\n calendarLabel: string = 'Calendar';\n\n /** A label for the button used to open the calendar popup (used by screen readers). */\n openCalendarLabel: string = 'Open calendar';\n\n /** A label for the previous month button (used by screen readers). */\n prevMonthLabel: string = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n nextMonthLabel: string = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n prevYearLabel: string = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n nextYearLabel: string = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n prevMultiYearLabel: string = 'Previous 20 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n nextMultiYearLabel: string = 'Next 20 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n switchToMonthViewLabel: string = 'Choose date';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n switchToMultiYearViewLabel: string = 'Choose month and year';\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/mosaic/core';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { McCalendarCellCssClasses } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { McDatepickerIntl } from './datepicker-intl';\nimport { McMonthView } from './month-view.component';\n\n\n/**\n * A calendar that is used as part of the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-calendar',\n exportAs: 'mcCalendar',\n templateUrl: 'calendar.html',\n styleUrls: ['calendar.scss'],\n host: {\n class: 'mc-calendar'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendar<D> implements AfterContentInit, OnDestroy, OnChanges {\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\n set startAt(value: D | null) {\n const deserializedValue = this.getValidDateOrNull(this.adapter.deserialize(value));\n\n this._startAt = deserializedValue !== null ?\n this.adapter.clampDate(deserializedValue, this.minDate, this.maxDate) : null;\n }\n\n private _startAt: D | null;\n\n /** The currently selected date. */\n @Input()\n get selected(): D | null {\n return this._selected;\n }\n\n set selected(value: D | null) {\n this._selected = this.adapter.deserialize(value);\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.deserialize(value);\n\n this.startAt = this._startAt;\n }\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\n set maxDate(value: D | null) {\n this._maxDate = this.adapter.deserialize(value);\n\n this.startAt = this._startAt;\n }\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._activeDate;\n }\n\n set activeDate(value: D) {\n this._activeDate = this.adapter.clampDate(value, this.minDate, this.maxDate);\n\n this.stateChanges.next();\n }\n\n private _activeDate: D;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\n\n /** Emits when the currently selected date changes. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the year chosen in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the month chosen in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is selected. */\n @Output() readonly userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n /** Reference to the current month view component. */\n @ViewChild(McMonthView, { static: false }) monthView: McMonthView<D>;\n\n /**\n * Emits whenever there is a state change that the header may need to respond to.\n */\n stateChanges = new Subject<void>();\n\n private readonly intlChanges: Subscription;\n\n constructor(\n intl: McDatepickerIntl,\n @Optional() private readonly adapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n if (!this.adapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n this.intlChanges = intl.changes.subscribe(() => {\n changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n\n ngAfterContentInit() {\n this.activeDate = this.startAt || this.adapter.today();\n }\n\n ngOnDestroy() {\n this.intlChanges.unsubscribe();\n this.stateChanges.complete();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const change = changes.minDate || changes.maxDate || changes.dateFilter;\n\n if (change && !change.firstChange) {\n if (this.monthView) {\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n // passed down to the view via data bindings which won't be up-to-date when we call `init`.\n this.changeDetectorRef.detectChanges();\n this.monthView.init();\n }\n }\n\n this.stateChanges.next();\n }\n\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n this.monthView.ngAfterContentInit();\n }\n\n /** Handles date selection in the month view. */\n dateSelected(date: D): void {\n if (!this.adapter.sameDate(date, this.selected)) {\n this.selectedChange.emit(date);\n }\n }\n\n userSelected(): void {\n this.userSelection.emit();\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 // todo выглядит как костыль от которого нужно избавиться\n private getValidDateOrNull(obj: any): D | null {\n return (this.adapter.isDateInstance(obj) && this.adapter.isValid(obj)) ? obj : null;\n }\n}\n\n","<mc-calendar-header\n [(activeDate)]=\"activeDate\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"monthSelected.emit(activeDate)\"\n (yearSelected)=\"yearSelected.emit(activeDate)\">\n</mc-calendar-header>\n\n<div class=\"mc-calendar__content\">\n <mc-month-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (selectedChange)=\"dateSelected($event!)\"\n (userSelection)=\"userSelected()\">\n </mc-month-view>\n</div>\n","// tslint:disable:no-empty, deprecation\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n Renderer2\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport {\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n END,\n PAGE_DOWN,\n HOME,\n PAGE_UP,\n SPACE,\n TAB,\n ESCAPE,\n DELETE,\n BACKSPACE,\n hasModifierKey,\n isHorizontalMovement,\n isLetterKey,\n isVerticalMovement\n} from '@ptsecurity/cdk/keycodes';\nimport {\n DateAdapter,\n MC_DATE_FORMATS,\n McDateFormats,\n validationTooltipHideDelay,\n validationTooltipShowDelay\n} from '@ptsecurity/mosaic/core';\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McWarningTooltipTrigger } from '@ptsecurity/mosaic/tooltip';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { McDatepicker } from './datepicker.component';\n\n\n// tslint:disable:naming-convention\nenum DateParts {\n year = 'y',\n month = 'm',\n day = 'd'\n}\n\nexport const MAX_YEAR = 9999;\nconst YEAR_LENGTH = 4;\n\nclass DateDigit {\n maxDays = 31;\n maxMonth = 12;\n\n parse: (value: string) => number;\n\n constructor(public value: DateParts, public start: number, public length: number) {\n if (value === DateParts.day) {\n this.parse = this.parseDay;\n } else if (value === DateParts.month) {\n this.parse = this.parseMonth;\n } else if (value === DateParts.year) {\n this.parse = this.parseYear;\n }\n }\n\n get end(): number {\n return this.start + this.length;\n }\n\n get isDay(): boolean {\n return this.value === DateParts.day;\n }\n\n get isMonth(): boolean {\n return this.value === DateParts.month;\n }\n\n get isYear(): boolean {\n return this.value === DateParts.year;\n }\n\n get fullName(): string {\n if (this.isDay) { return 'date'; }\n\n if (this.isMonth) { return 'month'; }\n\n if (this.isYear) { return 'year'; }\n\n return '';\n }\n\n private parseDay(value: string): number {\n const parsedValue: number = parseInt(value);\n\n if (parsedValue === 0) { return 1; }\n\n if (parsedValue > this.maxDays) { return this.maxDays; }\n\n return parsedValue;\n }\n\n private parseMonth(value: string): number {\n const parsedValue: number = parseInt(value);\n\n if (parsedValue === 0) { return 1; }\n\n if (parsedValue > this.maxMonth) { return this.maxMonth; }\n\n return parsedValue;\n }\n\n private parseYear(value: string): number {\n const parsedValue: number = parseInt(value);\n\n if (parsedValue === 0) { return 1; }\n\n if (parsedValue > MAX_YEAR) { return parseInt(value.substring(0, YEAR_LENGTH)); }\n\n return parsedValue;\n }\n}\n\n/** @docs-private */\nexport const MC_DATEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => McDatepickerInput),\n multi: true\n};\n\n/** @docs-private */\nexport const MC_DATEPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => McDatepickerInput),\n multi: true\n};\n\n\n/**\n * An event used for datepicker 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 McDatepickerInputEvent instead.\n */\nexport class McDatepickerInputEvent<D> {\n /** The new value for the target datepicker input. */\n value: D | null;\n\n constructor(\n /** Reference to the datepicker input component that emitted the event. */\n public target: McDatepickerInput<D>,\n /** Reference to the native input element associated with the datepicker input. */\n public targetElement: HTMLElement\n ) {\n this.value = this.target.value;\n }\n}\n\nlet uniqueComponentIdSuffix = 0;\n\ninterface DateTimeObject {\n year: number;\n month: number;\n date: number;\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n}\n\n\n/** Directive used to connect an input to a McDatepicker. */\n@Directive({\n selector: 'input[mcDatepicker]',\n exportAs: 'mcDatepickerInput',\n providers: [\n MC_DATEPICKER_VALUE_ACCESSOR,\n MC_DATEPICKER_VALIDATORS,\n { provide: McFormFieldControl, useExisting: McDatepickerInput }\n ],\n host: {\n class: 'mc-input mc-datepicker',\n '[attr.placeholder]': 'placeholder',\n '[attr.required]': 'required',\n '[attr.disabled]': 'disabled || null',\n '[attr.min]': 'min ? toISO8601(min) : null',\n '[attr.max]': 'max ? toISO8601(max) : null',\n '[attr.autocomplete]': '\"off\"',\n\n '(paste)': 'onPaste($event)',\n '(change)': 'onChange()',\n\n '(focus)': 'focusChanged(true)',\n '(blur)': 'onBlur()',\n\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class McDatepickerInput<D> implements McFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {\n\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n readonly errorState: boolean;\n\n controlType: string = 'datepicker';\n\n focused: boolean = false;\n\n datepicker: McDatepicker<D>;\n\n dateFilter: (date: D | null) => boolean;\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 @Input() placeholder: string;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required: boolean;\n\n /** The datepicker that this input is associated with. */\n @Input()\n set mcDatepicker(value: McDatepicker<D>) {\n if (!value) { return; }\n\n this.datepicker = value;\n this.datepicker.registerInput(this);\n this.datepickerSubscription.unsubscribe();\n\n this.datepickerSubscription = this.datepicker.selectedChanged\n .subscribe((selected: D) => {\n const newValue = this.saveTimePart(selected);\n\n this.value = newValue;\n this.cvaOnChange(newValue);\n this.onTouched();\n this.dateChange.emit(new McDatepickerInputEvent(this, this.elementRef.nativeElement));\n });\n }\n\n /** Function that can be used to filter out dates within the datepicker. */\n @Input()\n set mcDatepickerFilter(value: (date: D | null) => boolean) {\n this.dateFilter = value;\n this.validatorOnChange();\n }\n\n /** The value of the input. */\n @Input()\n get value(): D | null {\n return this._value;\n }\n\n set value(value: D | null) {\n let newValue = this.adapter.deserialize(value);\n\n this.lastValueValid = !newValue || this.adapter.isValid(newValue);\n\n newValue = this.getValidDateOrNull(newValue);\n\n const oldDate = this.value;\n this._value = newValue;\n this.formatValue(newValue);\n\n if (!this.adapter.sameDate(oldDate, newValue)) {\n this.valueChange.emit(newValue);\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\n set min(value: D | null) {\n this._min = this.adapter.deserialize(value);\n this.validatorOnChange();\n }\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\n set max(value: D | null) {\n this._max = this.adapter.deserialize(value);\n this.validatorOnChange();\n }\n\n private _max: D | null;\n\n /** Whether the datepicker-input is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this.elementRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n\n private _disabled: boolean = false;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n @Input()\n set mcValidationTooltip(tooltip: McWarningTooltipTrigger) {\n if (!tooltip) { return; }\n\n tooltip.enterDelay = validationTooltipShowDelay;\n tooltip.trigger = 'manual';\n\n tooltip.initListeners();\n\n this.incorrectInput.subscribe(() => {\n if (tooltip.isOpen) { return; }\n\n tooltip.show();\n\n setTimeout(() => tooltip.hide(), validationTooltipHideDelay);\n });\n }\n\n @Output() incorrectInput = new EventEmitter<void>();\n\n /** Emits when a `change` event is fired on this `<input>`. */\n @Output() readonly dateChange = new EventEmitter<McDatepickerInputEvent<D>>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n @Output() readonly dateInput = new EventEmitter<McDatepickerInputEvent<D>>();\n\n get empty(): boolean {\n return !this.viewValue && !this.isBadInput();\n }\n\n get viewValue(): string {\n return this.elementRef.nativeElement.value;\n }\n\n get ngControl(): any {\n return this.control;\n }\n\n get isReadOnly(): boolean {\n return this.elementRef.nativeElement.readOnly;\n }\n\n private get readyForParse(): boolean {\n return !!(this.firstDigit && this.secondDigit && this.thirdDigit);\n }\n\n private get selectionStart(): number | null {\n return this.elementRef.nativeElement.selectionStart;\n }\n\n private set selectionStart(value: number | null) {\n this.elementRef.nativeElement.selectionStart = value;\n }\n\n private get selectionEnd(): number | null {\n return this.elementRef.nativeElement.selectionEnd;\n }\n\n private set selectionEnd(value: number | null) {\n this.elementRef.nativeElement.selectionEnd = value;\n }\n\n private control: AbstractControl;\n private readonly uid = `mc-datepicker-${uniqueComponentIdSuffix++}`;\n\n private datepickerSubscription = 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 /** The combined form control validator for this input. */\n private readonly validator: ValidatorFn | null;\n\n private separator: string;\n\n private firstDigit: DateDigit | null = null;\n private secondDigit: DateDigit | null = null;\n private thirdDigit: DateDigit | null = null;\n\n private separatorPositions: number[];\n\n constructor(\n public elementRef: ElementRef<HTMLInputElement>,\n private readonly renderer: Renderer2,\n @Optional() readonly adapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats\n ) {\n this.validator = Validators.compose([\n this.parseValidator,\n this.minValidator,\n this.maxValidator,\n this.filterValidator\n ]);\n\n if (!this.adapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n this.setFormat(dateFormats.dateInput);\n\n this.localeSubscription = adapter.localeChanges\n .subscribe(this.updateLocaleParams);\n }\n\n onContainerClick() {\n this.focus();\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n focusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n // tslint:disable-next-line:no-empty\n onTouched = () => {};\n\n ngOnDestroy() {\n this.datepickerSubscription.unsubscribe();\n this.localeSubscription.unsubscribe();\n this.valueChange.complete();\n this.disabledChange.complete();\n }\n\n /** @docs-private */\n registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n /** @docs-private */\n validate(control: AbstractControl): ValidationErrors | null {\n this.setControl(control);\n\n return this.validator ? this.validator(control) : null;\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(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.isReadOnly) { return; }\n\n const keyCode = event.keyCode;\n\n if (this.isLetterKey(event)) {\n event.preventDefault();\n\n this.incorrectInput.emit();\n } else if (this.isKeyForOpen(event)) {\n event.preventDefault();\n\n this.datepicker?.open();\n } else if (this.isKeyForClose(event)) {\n event.preventDefault();\n\n this.datepicker.close();\n } else if (keyCode === TAB) {\n this.datepicker.close(false);\n } else if (this.isKeyForByPass(event)) {\n return;\n } else if (keyCode === SPACE) {\n this.spaceKeyHandler(event);\n } else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {\n event.preventDefault();\n\n this.verticalArrowKeyHandler(keyCode);\n } else if ([LEFT_ARROW, RIGHT_ARROW, HOME, PAGE_UP, END, PAGE_DOWN].includes(keyCode)) {\n event.preventDefault();\n\n this.changeCaretPosition(keyCode);\n } else if (/^\\D$/.test(event.key)) {\n event.preventDefault();\n\n const newValue = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(newValue);\n\n if (newValue !== formattedValue) {\n this.setViewValue(formattedValue, true);\n\n setTimeout(this.onInput);\n } else {\n this.incorrectInput.emit();\n }\n } else {\n setTimeout(this.onInput);\n }\n }\n\n onInput = () => {\n this.correctCursorPosition();\n const formattedValue = this.replaceSymbols(this.viewValue);\n\n const newTimeObj = this.getDateFromString(formattedValue);\n this.lastValueValid = !!newTimeObj;\n\n if (!newTimeObj) {\n if (!this.viewValue) {\n this._value = null;\n this.cvaOnChange(null);\n } else {\n this.control.updateValueAndValidity();\n }\n\n return;\n }\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput), true);\n\n this.selectNextDigitByCursor((this.selectionStart as number));\n\n this.updateValue(newTimeObj);\n }\n\n parseOnBlur = (): any => {\n if (!this.viewValue || !this.readyForParse) { return null; }\n\n const date: DateTimeObject = this.getDefaultValue();\n\n const viewDigits: string[] = this.viewValue\n .split(this.separator)\n .map((value: string) => value)\n .filter((value) => value);\n\n const [firsViewDigit, secondViewDigit, thirdViewDigit] = viewDigits;\n\n // tslint:disable-next-line:no-magic-numbers\n if (viewDigits.length !== 3) {\n this.lastValueValid = false;\n this._value = null;\n\n return setTimeout(() => this.control.updateValueAndValidity());\n }\n\n date[this.firstDigit!.fullName] = this.firstDigit!.parse(firsViewDigit);\n date[this.secondDigit!.fullName] = this.secondDigit!.parse(secondViewDigit);\n date[this.thirdDigit!.fullName] = this.thirdDigit!.parse(thirdViewDigit);\n\n const [digitWithYear, viewDigitWithYear] = [this.firstDigit, this.secondDigit, this.thirdDigit]\n .reduce((acc: any, digit, index) => digit!.value === DateParts.year ? [digit, viewDigits[index]] : acc, []);\n\n // tslint:disable-next-line:no-magic-numbers\n if (viewDigitWithYear.length < 3) {\n // tslint:disable-next-line:no-magic-numbers\n date.year += date.year < 30 ? 2000 : 1900;\n } else if (viewDigitWithYear.length < digitWithYear.length) {\n this.lastValueValid = false;\n this._value = null;\n\n return setTimeout(() => this.control.updateValueAndValidity());\n }\n\n const newTimeObj = this.createDateTime(date);\n\n if (!newTimeObj) {\n this.lastValueValid = false;\n this._value = null;\n this.cvaOnChange(null);\n\n return setTimeout(() => this.control.updateValueAndValidity());\n }\n\n this.lastValueValid = !!newTimeObj;\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput), true);\n\n this.updateValue(newTimeObj);\n }\n\n onChange() {\n this.dateChange.emit(new McDatepickerInputEvent(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 this.parseOnBlur();\n\n this.focusChanged(false);\n\n this.onInput();\n }\n\n onPaste($event) {\n $event.preventDefault();\n\n let rawValue = $event.clipboardData.getData('text');\n\n if (rawValue.match(/^\\d\\D/)) {\n rawValue = `0${rawValue}`;\n }\n rawValue.replace(/[^A-Za-z0-9]+/g, this.separator);\n\n if (/[a-z]/gi.test(rawValue)) {\n this.incorrectInput.emit();\n }\n\n const match: RegExpMatchArray | null = rawValue.match(/^(?<first>\\d+)\\W(?<second>\\d+)\\W(?<third>\\d+)$/);\n\n if (!match?.groups?.first || !match?.groups?.second || !match?.groups?.third) {\n this.setViewValue(rawValue);\n\n return rawValue;\n }\n\n const value = [match.groups.first, match.groups.second, match.groups.third].join(this.separator);\n\n const newTimeObj = this.getDateFromString(value);\n\n if (!newTimeObj) {\n this.setViewValue(value);\n\n return value;\n }\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput));\n\n this.updateValue(newTimeObj);\n }\n\n toISO8601(value: D): string {\n return this.adapter.toIso8601(value);\n }\n\n private saveTimePart(selected: D) {\n if (!this.value) { return selected; }\n\n const years = this.adapter.getYear(selected);\n const month = this.adapter.getMonth(selected);\n const day = this.adapter.getDate(selected);\n\n const hours = this.adapter.getHours(this.value);\n const minutes = this.adapter.getMinutes(this.value);\n const seconds = this.adapter.getSeconds(this.value);\n const milliseconds = this.adapter.getMilliseconds(this.value);\n\n return this.adapter.createDateTime(years, month, day, hours, minutes, seconds, milliseconds);\n }\n\n private updateLocaleParams = () => {\n this.setFormat(this.dateFormats.dateInput);\n\n this.value = this.value;\n }\n\n private setFormat(format: string): void {\n // @ts-ignore\n this.separator = format.match(/[aA-zZ]+(?<separator>\\W|\\D)[aA-zZ]+/).groups.separator;\n\n this.separatorPositions = format\n .split('')\n .reduce((acc: any, item, index: number) => this.separator === item ? [...acc, index + 1] : acc, []);\n\n this.getDigitPositions(format);\n }\n\n private updateValue(newValue: D) {\n if (!this.adapter.sameDate(newValue, this.value)) {\n this._value = newValue;\n this.cvaOnChange(newValue);\n this.valueChange.emit(newValue);\n this.dateInput.emit(new McDatepickerInputEvent(this, this.elementRef.nativeElement));\n }\n\n this.control?.updateValueAndValidity({ emitEvent: false });\n }\n\n private isKeyForClose(event: KeyboardEvent): boolean {\n return (event.altKey && event.keyCode === UP_ARROW) || event.keyCode === ESCAPE;\n }\n\n private isKeyForOpen(event: KeyboardEvent): boolean {\n return event.altKey && event.keyCode === DOWN_ARROW;\n }\n\n private isLetterKey(event: KeyboardEvent): boolean {\n return isLetterKey(event) && !event.ctrlKey && !event.metaKey;\n }\n\n private isKeyForByPass(event: KeyboardEvent): boolean {\n return (hasModifierKey(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) ||\n event.ctrlKey || event.metaKey ||\n [DELETE, BACKSPACE, TAB].includes(event.keyCode);\n }\n\n private spaceKeyHandler(event: KeyboardEvent) {\n event.preventDefault();\n\n if (this.selectionStart === this.selectionEnd) {\n const value = this.getNewValue(event.key, this.selectionStart as number);\n this.setViewValue(value);\n\n setTimeout(this.onInput);\n } else if (this.selectionStart !== this.selectionEnd) {\n this.selectNextDigit(this.selectionStart as number, true);\n }\n }\n\n private getNewValue(key: string, position: number) {\n return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');\n }\n\n private setViewValue(value: string, savePosition: boolean = false) {\n if (savePosition) {\n const selectionStart = this.selectionStart;\n const selectionEnd = this.selectionEnd;\n\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n }\n }\n\n private replaceSymbols(value: string): string {\n return value\n .split(this.separator)\n .map((part: string) => part.replace(/^([0-9]+)\\W$/, '0$1'))\n .join(this.separator);\n }\n\n private getDateFromString(timeString: string): D | null {\n if (!timeString || timeString.length < this.firstDigit!.length) { return null; }\n\n const date = this.getDefaultValue();\n\n const viewDigits: string[] = timeString\n .split(this.separator)\n .map((value: string) => value);\n\n const [firsViewDigit, secondViewDigit, thirdViewDigit] = viewDigits;\n\n\n if (viewDigits.length === 1) {\n if (/\\D/.test(firsViewDigit) || firsViewDigit.length < this.firstDigit!.length) { return null; }\n\n date[this.firstDigit!.fullName] = this.firstDigit!.parse(firsViewDigit);\n\n if (this.firstDigit!.isDay) {\n date.month = 1;\n }\n // tslint:disable-next-line:no-magic-numbers\n } else if (viewDigits.length === 2) {\n if (firsViewDigit.length < this.firstDigit!.length || secondViewDigit.length < this.secondDigit!.length) {\n return null;\n }\n\n date[this.firstDigit!.fullName] = this.firstDigit!.parse(firsViewDigit);\n date[this.secondDigit!.fullName] = this.secondDigit!.parse(secondViewDigit);\n // tslint:disable-next-line:no-magic-numbers\n } else if (viewDigits.length === 3) {\n if (\n firsViewDigit.length < this.firstDigit!.length ||\n secondViewDigit.length < this.secondDigit!.length ||\n thirdViewDigit.length < this.thirdDigit!.length\n ) { return null; }\n\n date[this.firstDigit!.fullName] = this.firstDigit!.parse(firsViewDigit);\n date[this.secondDigit!.fullName] = this.secondDigit!.parse(secondViewDigit);\n date[this.thirdDigit!.fullName] = this.thirdDigit!.parse(thirdViewDigit);\n } else {\n return null;\n }\n\n return this.createDateTime(date);\n }\n\n private getDefaultValue(): DateTimeObject {\n const defaultValue = this.value || this.adapter.today();\n\n return {\n year: this.adapter.getYear(defaultValue),\n month: this.adapter.getMonth(defaultValue),\n date: this.adapter.getDate(defaultValue),\n hours: this.adapter.getHours(defaultValue),\n minutes: this.adapter.getMinutes(defaultValue),\n seconds: this.adapter.getSeconds(defaultValue),\n milliseconds: this.adapter.getMilliseconds(defaultValue)\n };\n }\n\n private getTimeStringFromDate(value: D | null, timeFormat: string): string {\n if (!value || !this.adapter.isValid(value)) { return ''; }\n\n return this.adapter.format(value, timeFormat);\n }\n\n private getDateEditMetrics(cursorPosition: number): [\n modifiedTimePart: DateParts,\n cursorStartPosition: number,\n cursorEndPosition: number\n ] {\n for (const digit of [this.firstDigit, this.secondDigit, this.thirdDigit]) {\n if (cursorPosition >= digit!.start && cursorPosition <= digit!.end) {\n return [digit!.value, digit!.start, digit!.end];\n }\n }\n\n return [this.thirdDigit!.value, this.thirdDigit!.start, this.thirdDigit!.end];\n }\n\n private incrementDate(dateVal: D, whatToIncrement: DateParts): D {\n let year = this.adapter.getYear(dateVal);\n let month = this.adapter.getMonth(dateVal);\n let day = this.adapter.getDate(dateVal);\n\n switch (whatToIncrement) {\n case DateParts.day:\n day++;\n\n if (day > this.adapter.getNumDaysInMonth(dateVal)) {\n day = 1;\n }\n\n break;\n case DateParts.month:\n month++;\n\n // tslint:disable-next-line:no-magic-numbers\n if (month > 11) {\n month = 0;\n }\n\n const lastDay = this.getLastDayFor(year, month);\n\n if (day > lastDay) {\n day = lastDay;\n }\n\n break;\n case DateParts.year:\n year++;\n\n if (year > MAX_YEAR) {\n year = 1;\n }\n\n break;\n default:\n }\n\n return this.createDate(year, month, day);\n }\n\n private getLastDayFor(year: number, month: number): number {\n return this.adapter.getNumDaysInMonth(this.createDate(year, month, 1));\n }\n\n private decrementDate(dateVal: D, whatToDecrement: DateParts): D {\n let year = this.adapter.getYear(dateVal);\n let month = this.adapter.getMonth(dateVal);\n let day = this.adapter.getDate(dateVal);\n\n switch (whatToDecrement) {\n case DateParts.day:\n day--;\n\n if (day < 1) {\n day = this.adapter.getNumDaysInMonth(dateVal);\n }\n\n break;\n case DateParts.month:\n month--;\n\n if (month < 0) {\n // tslint:disable-next-line:no-magic-numbers\n month = 11;\n }\n\n const lastDay = this.getLastDayFor(year, month);\n\n if (day > lastDay) {\n day = lastDay;\n }\n\n break;\n case DateParts.year:\n year--;\n\n if (year < 1) {\n year = MAX_YEAR;\n }\n\n break;\n default:\n }\n\n return this.createDate(year, month, day);\n }\n\n private verticalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let changedTime;\n\n const [modifiedTimePart, selectionStart, selectionEnd] = this.getDateEditMetrics(this.selectionStart as number);\n\n if (keyCode === UP_ARROW) {\n changedTime = this.incrementDate(this.value, modifiedTimePart);\n }\n\n if (keyCode === DOWN_ARROW) {\n changedTime = this.decrementDate(this.value, modifiedTimePart);\n }\n\n this.value = changedTime;\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n\n this.cvaOnChange(changedTime);\n\n this.onChange();\n this.stateChanges.next();\n }\n\n private changeCaretPosition(keyCode: number): void {\n if (!this.value) { return; }\n\n let cursorPos = this.selectionStart as number;\n\n if ([HOME, PAGE_UP].includes(keyCode)) {\n cursorPos = 0;\n } else if ([END, PAGE_DOWN].includes(keyCode)) {\n cursorPos = this.viewValue.length;\n } else if (keyCode === LEFT_ARROW) {\n cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;\n } else if (keyCode === RIGHT_ARROW) {\n const nextSeparatorPos: number = this.viewValue.indexOf(this.separator, cursorPos);\n\n cursorPos = nextSeparatorPos ? nextSeparatorPos + 1 : 0;\n }\n\n this.selectDigitByCursor(cursorPos);\n }\n\n private selectDigitByCursor(cursorPos: number): void {\n setTimeout(() => {\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(cursorPos);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n });\n }\n\n private selectNextDigitByCursor(cursorPos: number): void {\n setTimeout(() => {\n const [, , endPositionOfCurrentDigit] = this.getDateEditMetrics(cursorPos);\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(endPositionOfCurrentDigit + 1);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n });\n }\n\n private selectNextDigit(cursorPos: number, cycle: boolean = false): void {\n setTimeout(() => {\n const lastValue = cycle ? 0 : cursorPos;\n const nextSeparatorPos: number = this.viewValue.indexOf(this.separator, cursorPos);\n\n const newCursorPos = nextSeparatorPos > 0 ? nextSeparatorPos + 1 : lastValue;\n\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(newCursorPos);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n });\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n private isBadInput(): boolean {\n const validity = (<HTMLInputElement> this.elementRef.nativeElement).validity;\n\n return validity && validity.badInput;\n }\n\n // tslint:disable-next-line:no-empty\n private cvaOnChange: (value: any) => void = () => {};\n\n // tslint:disable-next-line:no-empty\n private validatorOnChange = () => {};\n\n /** The form control validator for whether the input parses. */\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.focused ||\n this.empty ||\n this.lastValueValid ? null : { mcDatepickerParse: { 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.adapter.deserialize(control.value);\n\n return !this.min || !controlValue || this.adapter.compareDateTime(this.min, controlValue) <= 0 ?\n null :\n { mcDatepickerMin: { 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.adapter.deserialize(control.value);\n\n return !this.max || !controlValue || this.adapter.compareDateTime(this.max, controlValue) >= 0 ?\n null :\n { mcDatepickerMax: { 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.adapter.deserialize(control.value);\n\n return !this.dateFilter || !controlValue || this.dateFilter(controlValue) ?\n null : { mcDatepickerFilter: true };\n }\n\n /** Formats a value and sets it on the input element. */\n private formatValue(value: D | null) {\n const formattedValue = value ? this.adapter.format(value, this.dateFormats.dateInput) : '';\n\n this.setViewValue(formattedValue);\n }\n\n private setControl(control: AbstractControl) {\n if (this.control) { return; }\n\n this.control = control;\n\n this.control.valueChanges\n .subscribe((value) => this._value = value);\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 private getDigitPositions(format: string) {\n this.firstDigit = this.secondDigit = this.thirdDigit = null;\n\n const formatInLowerCase = format.toLowerCase();\n\n formatInLowerCase\n .split('')\n .reduce(\n ({ prev, length, start }: any, value: string, index: number, arr) => {\n if (value === this.separator || (arr.length - 1) === index) {\n if (!this.firstDigit) {\n this.firstDigit = new DateDigit(prev, start, length);\n } else if (!this.secondDigit) {\n this.secondDigit = new DateDigit(prev, start, length);\n } else if (!this.thirdDigit) {\n this.thirdDigit = new DateDigit(prev, start, arr.length - start);\n }\n\n // tslint:disable:no-parameter-reassignment\n length = 0;\n start = index + 1;\n } else {\n length++;\n }\n\n return { prev: value, length, start };\n },\n { length: 0, start: 0 }\n );\n\n if (!this.firstDigit || !this.secondDigit || !this.thirdDigit) {\n Error(`Can' t use this format: ${format}`);\n }\n }\n\n private createDate(year: number, month: number, day: number): D {\n return this.adapter.createDateTime(\n year,\n month,\n day,\n this.adapter.getHours(this.value as D),\n this.adapter.getMinutes(this.value as D),\n this.adapter.getSeconds(this.value as D),\n this.adapter.getMilliseconds(this.value as D)\n );\n }\n\n private createDateTime(value: DateTimeObject): D | null {\n if (Object.values(value).some(isNaN)) { return null; }\n\n return this.adapter.createDateTime(\n value.year,\n value.month - 1,\n value.date,\n value.hours,\n value.minutes,\n value.seconds,\n value.milliseconds\n );\n }\n\n private correctCursorPosition() {\n if (this.selectionStart && this.separatorPositions.includes(this.selectionStart)) {\n this.selectionStart = this.selectionStart - 1;\n }\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewEncapsulation,\n ViewChild\n} from '@angular/core';\nimport { McButton } from '@ptsecurity/mosaic/button';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\n\nimport { McDatepickerIntl } from './datepicker-intl';\nimport { McDatepicker } from './datepicker.component';\n\n\n/** Can be used to override the icon of a `mcDatepickerToggle`. */\n@Directive({\n selector: '[mcDatepickerToggleIcon]'\n})\nexport class McDatepickerToggleIcon {}\n\n\n@Component({\n selector: 'mc-datepicker-toggle',\n templateUrl: 'datepicker-toggle.html',\n styleUrls: ['datepicker-toggle.scss'],\n host: {\n class: 'mc-datepicker-toggle',\n '[class.mc-active]': 'datepicker && datepicker.opened'\n },\n exportAs: 'mcDatepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McDatepickerToggle<D> implements AfterContentInit, OnChanges, OnDestroy {\n /** Whether the toggle button is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined ? this.datepicker.disabled : this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n /** Datepicker instance that the button will toggle. */\n @Input('for') datepicker: McDatepicker<D>;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Custom icon set by the consumer. */\n @ContentChild(McDatepickerToggleIcon, { static: false }) customIcon: McDatepickerToggleIcon;\n\n /** Underlying button element. */\n @ViewChild('button', { static: false }) button: McButton;\n private stateChanges = Subscription.EMPTY;\n\n private _disabled: boolean;\n\n constructor(public intl: McDatepickerIntl, private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.datepicker) {\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.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n\n private watchStateChanges() {\n const datepickerDisabled = this.datepicker ? this.datepicker.disabledChange : observableOf<boolean>();\n\n const inputDisabled = this.datepicker && this.datepicker.datepickerInput ?\n this.datepicker.datepickerInput.disabledChange : observableOf<boolean>();\n\n const datepickerToggled = this.datepicker ?\n merge(this.datepicker.openedStream, this.datepicker.closedStream) :\n observableOf<boolean>();\n\n this.stateChanges.unsubscribe();\n\n this.stateChanges = merge(\n this.intl.changes,\n datepickerDisabled,\n inputDisabled,\n datepickerToggled\n ).subscribe(() => this.changeDetectorRef.markForCheck());\n }\n}\n","<!--todo need simplify this-->\n<button\n #button\n mc-button\n type=\"button\"\n class=\"mc-datepicker-toggle__button\"\n aria-haspopup=\"true\"\n [attr.aria-label]=\"intl.openCalendarLabel\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\">\n\n <i *ngIf=\"!customIcon\" mc-icon=\"mc-calendar_16\" class=\"mc-datepicker-toggle__default-icon\"></i>\n\n <ng-content select=\"[mcDatepickerToggleIcon]\"></ng-content>\n</button>\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata\n} from '@angular/animations';\n\n\n/**\n * Animations used by the mosaic datepicker.\n * @docs-private\n */\nexport const mcDatepickerAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n readonly fadeInCalendar: AnimationTriggerMetadata;\n} = {\n /** Transforms the height of the datepicker's calendar. */\n transformPanel: trigger('transformPanel', [\n state('void', style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })),\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1, 1)'\n }))),\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 // 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\n// todo should be put into polyfils\n// https://github.com/angular/angular/issues/24769\nif (!Element.prototype.matches) {\n Element.prototype.matches = (Element.prototype as any).msMatchesSelector;\n}\n","// tslint:disable:no-unbound-method\n// tslint:disable:no-magic-numbers\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter } from '@ptsecurity/mosaic/core';\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { merge, Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { McCalendarCellCssClasses } from './calendar-body.component';\nimport { McCalendar } from './calendar.component';\nimport { mcDatepickerAnimations } from './datepicker-animations';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { McDatepickerInput } from './datepicker-input.directive';\n\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const MC_DATEPICKER_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mc-datepicker-scroll-strategy');\n\n/** @docs-private */\n// tslint:disable-next-line:naming-convention\nexport function MC_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MC_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MC_DATEPICKER_SCROLL_STRATEGY_FACTORY\n};\n\n/**\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\n * McCalendar directly as the content so we can control the initial focus. This also gives us a\n * 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: 'mc-datepicker__content',\n exportAs: 'mcDatepickerContent',\n templateUrl: 'datepicker-content.html',\n styleUrls: ['datepicker-content.scss'],\n host: {\n class: 'mc-datepicker__content',\n\n '[@transformPanel]': 'animationState',\n '(@transformPanel.done)': 'animationDone.next()'\n },\n animations: [\n mcDatepickerAnimations.transformPanel,\n mcDatepickerAnimations.fadeInCalendar\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McDatepickerContent<D> implements OnDestroy {\n /** Emits when an animation has finished. */\n readonly animationDone = new Subject<void>();\n\n /** Reference to the datepicker that created the overlay. */\n datepicker: McDatepicker<D>;\n\n /** Current state of the animation. */\n animationState: 'enter' | 'void';\n\n /** Reference to the internal calendar component. */\n @ViewChild(McCalendar) calendar: McCalendar<D>;\n\n private subscriptions = new Subscription();\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n this.subscriptions.add(this.datepicker.stateChanges.subscribe(() => {\n this.changeDetectorRef.markForCheck();\n }));\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.animationDone.complete();\n }\n\n startExitAnimation() {\n this.animationState = 'void';\n this.changeDetectorRef.markForCheck();\n }\n}\n\n\n// TODO: We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"mcDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\n@Component({\n selector: 'mc-datepicker',\n template: '',\n exportAs: 'mcDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: McFormFieldControl, useExisting: McDatepicker }]\n})\nexport class McDatepicker<D> implements OnDestroy {\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n private _hasBackdrop: boolean = false;\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.datepickerInput?.value;\n }\n\n set startAt(value: D | null) {\n const deserializedValue = this.dateAdapter.deserialize(value);\n\n this._startAt = deserializedValue !== null ?\n this.dateAdapter.clampDate(deserializedValue, this.minDate, this.maxDate) : null;\n }\n\n private _startAt: D | null;\n\n /** Whether the datepicker pop-up should be disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this.datepickerInput ? this.datepickerInput.disabled : this._disabled;\n }\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\n private _disabled: boolean;\n\n /** Whether the calendar is open. */\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n\n set opened(value: boolean) {\n coerceBooleanProperty(value) ? this.open() : this.close();\n }\n\n private _opened = false;\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 get dateFilter(): (date: D | null) => boolean {\n return this.datepickerInput && this.datepickerInput.dateFilter;\n }\n\n get value(): D | null {\n return this.selected;\n }\n\n /** The minimum selectable date. */\n @Input() minDate: D | null;\n\n /** The maximum selectable date. */\n @Input() maxDate: D | null;\n\n /**\n * Emits selected year in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits selected month in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Classes to be passed to the date picker panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[];\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\n\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Emits when the datepicker has been opened. */\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when the datepicker has been closed. */\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Emits when the datepicker is disabled. */\n readonly disabledChange = new Subject<boolean>();\n\n /** Emits new selected date when selected date changes. */\n readonly selectedChanged = new Subject<D>();\n\n /** The id for the datepicker calendar. */\n id: string = `mc-datepicker-${datepickerUid++}`;\n\n /** A reference to the overlay when the calendar is opened as a popup. */\n popupRef: OverlayRef | null;\n\n /** The input element this datepicker is associated with. */\n datepickerInput: McDatepickerInput<D>;\n\n private scrollStrategy: () => ScrollStrategy;\n\n private validSelected: D | null = null;\n\n /** A portal containing the calendar for this datepicker. */\n private calendarPortal: ComponentPortal<McDatepickerContent<D>>;\n\n /** Reference to the component instantiated in popup mode. */\n private popupComponentRef: ComponentRef<McDatepickerContent<D>> | null;\n\n /** The element that was focused before the datepicker was opened. */\n private focusedElementBeforeOpen: HTMLElement | null = null;\n\n /** Subscription to value changes in the associated input element. */\n private inputSubscription = Subscription.EMPTY;\n\n private closeSubscription = Subscription.EMPTY;\n\n constructor(\n private overlay: Overlay,\n private ngZone: NgZone,\n private viewContainerRef: ViewContainerRef,\n @Inject(MC_DATEPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private readonly dateAdapter: DateAdapter<D>,\n @Optional() private dir: Directionality,\n @Optional() @Inject(DOCUMENT) private document: any\n ) {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this.scrollStrategy = scrollStrategy;\n }\n\n ngOnDestroy() {\n this.close();\n this.inputSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.disabledChange.complete();\n\n this.destroyOverlay();\n }\n\n /** Selects the given date */\n select(date: D): void {\n const oldValue = this.selected;\n this.selected = date;\n\n if (!this.dateAdapter.sameDate(oldValue, this.selected)) {\n this.selectedChanged.next(date);\n }\n }\n\n /** Emits the selected year in multiyear view */\n selectYear(normalizedYear: D): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Emits selected month in year view */\n selectMonth(normalizedMonth: D): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n */\n registerInput(input: McDatepickerInput<D>): void {\n if (this.datepickerInput) {\n throw Error('A McDatepicker can only be associated with a single input.');\n }\n\n this.datepickerInput = input;\n this.inputSubscription = this.datepickerInput.valueChange\n .subscribe((value: D | null) => {\n this.selected = value;\n\n if (this.popupComponentRef) {\n this.popupComponentRef.instance.calendar.monthView?.init();\n this.popupComponentRef.instance.calendar.activeDate = value as D;\n }\n });\n }\n\n /** Open the calendar. */\n open(): void {\n if (this._opened || this.disabled) { return; }\n\n if (!this.datepickerInput) {\n throw Error('Attempted to open an McDatepicker with no associated input.');\n }\n\n if (this.document) {\n this.focusedElementBeforeOpen = this.document.activeElement;\n }\n\n this.openAsPopup();\n\n this._opened = true;\n this.openedStream.emit();\n }\n\n /** Close the calendar. */\n close(restoreFocus: boolean = true): void {\n if (!this._opened) { return; }\n\n if (this.popupComponentRef) {\n const instance = this.popupComponentRef.instance;\n\n instance.startExitAnimation();\n\n instance.animationDone\n .pipe(take(1))\n .subscribe(() => this.destroyOverlay());\n }\n\n if (restoreFocus) {\n this.focusedElementBeforeOpen!.focus();\n }\n\n this._opened = false;\n this.closedStream.emit();\n this.focusedElementBeforeOpen = null;\n }\n\n toggle(): void {\n if (this.datepickerInput.isReadOnly) { return; }\n\n this._opened ? this.close() : this.open();\n }\n\n /** Destroys the current overlay. */\n private destroyOverlay() {\n if (this.popupRef) {\n this.popupRef.dispose();\n this.popupRef = this.popupComponentRef = null;\n }\n }\n\n /** Open the calendar as a popup. */\n private openAsPopup(): void {\n if (!this.calendarPortal) {\n this.calendarPortal = new ComponentPortal<McDatepickerContent<D>>(\n McDatepickerContent, this.viewContainerRef\n );\n }\n\n if (!this.popupRef) {\n this.createPopup();\n }\n\n if (!this.popupRef!.hasAttached()) {\n this.popupComponentRef = this.popupRef!.attach(this.calendarPortal);\n this.popupComponentRef.instance.datepicker = this;\n\n // Update the position once the calendar has rendered.\n this.ngZone.onStable.asObservable()\n .pipe(take(1))\n .subscribe(() => this.popupRef?.updatePosition());\n }\n }\n\n /** Create the popup. */\n private createPopup(): void {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this.createPopupPositionStrategy(),\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass,\n direction: this.dir,\n scrollStrategy: this.scrollStrategy(),\n panelClass: 'mc-datepicker__popup'\n });\n\n this.popupRef = this.overlay.create(overlayConfig);\n\n this.closeSubscription = this.closingActions()\n .subscribe(() => this.close(this.restoreFocus()));\n }\n\n private restoreFocus(): boolean {\n return this.document.activeElement === this.document.body;\n }\n\n private closingActions() {\n return merge(\n this.popupRef!.backdropClick(),\n this.popupRef!.outsidePointerEvents(),\n this.popupRef!.detachments()\n );\n }\n\n /** Create the popup PositionStrategy. */\n private createPopupPositionStrategy(): PositionStrategy {\n return this.overlay.position()\n .flexibleConnectedTo(this.datepickerInput.elementRef)\n .withTransformOriginOn('.mc-datepicker__content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition()\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n ]);\n }\n}\n","<mc-calendar [id]=\"datepicker.id\"\n [@fadeInCalendar]=\"'enter'\"\n [ngClass]=\"datepicker.panelClass\"\n [dateClass]=\"datepicker.dateClass\"\n\n [startAt]=\"datepicker.startAt\"\n [minDate]=\"datepicker.minDate\"\n [maxDate]=\"datepicker.maxDate\"\n [dateFilter]=\"datepicker.dateFilter\"\n\n [selected]=\"datepicker.selected\"\n\n (selectedChange)=\"datepicker.select($event)\"\n (yearSelected)=\"datepicker.selectYear($event)\"\n (monthSelected)=\"datepicker.selectMonth($event)\"\n (userSelection)=\"datepicker.close()\">\n</mc-calendar>\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 { McButtonModule } from '@ptsecurity/mosaic/button';\nimport { McIconModule } from '@ptsecurity/mosaic/icon';\nimport { McSelectModule } from '@ptsecurity/mosaic/select';\n\nimport { McCalendarBody } from './calendar-body.component';\nimport { McCalendarHeader } from './calendar-header.component';\nimport { McCalendar } from './calendar.component';\nimport { McDatepickerInput } from './datepicker-input.directive';\nimport { McDatepickerIntl } from './datepicker-intl';\nimport { McDatepickerToggle, McDatepickerToggleIcon } from './datepicker-toggle.component';\nimport {\n McDatepicker,\n McDatepickerContent,\n MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\n} from './datepicker.component';\nimport { McMonthView } from './month-view.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n McButtonModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n McButtonModule,\n McSelectModule,\n McIconModule\n ],\n exports: [\n McCalendar,\n McCalendarBody,\n McDatepicker,\n McDatepickerContent,\n McDatepickerInput,\n McDatepickerToggle,\n McDatepickerToggleIcon,\n McMonthView,\n McCalendarHeader\n ],\n declarations: [\n McCalendar,\n McCalendarBody,\n McDatepicker,\n McDatepickerContent,\n McDatepickerInput,\n McDatepickerToggle,\n McDatepickerToggleIcon,\n McMonthView,\n McCalendarHeader\n ],\n providers: [\n McDatepickerIntl,\n MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\n ]\n})\nexport class McDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3.McCalendarBody","i3.McMonthView","i4.McCalendarHeader","observableOf","i1.McDatepickerIntl","i4","i2.McCalendar","i3","i5"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ptsecurity-mosaic-datepicker.mjs","sources":["../../../packages/mosaic/datepicker/calendar-body.component.ts","../../../packages/mosaic/datepicker/calendar-body.html","../../../packages/mosaic/datepicker/calendar-header.component.ts","../../../packages/mosaic/datepicker/calendar-header.html","../../../packages/mosaic/datepicker/datepicker-errors.ts","../../../packages/mosaic/datepicker/month-view.component.ts","../../../packages/mosaic/datepicker/month-view.html","../../../packages/mosaic/datepicker/datepicker-intl.ts","../../../packages/mosaic/datepicker/calendar.component.ts","../../../packages/mosaic/datepicker/calendar.html","../../../packages/mosaic/datepicker/datepicker-input.directive.ts","../../../packages/mosaic/datepicker/datepicker-toggle.component.ts","../../../packages/mosaic/datepicker/datepicker-toggle.html","../../../packages/mosaic/datepicker/datepicker-animations.ts","../../../packages/mosaic/datepicker/datepicker.component.ts","../../../packages/mosaic/datepicker/datepicker-content.html","../../../packages/mosaic/datepicker/datepicker-module.ts","../../../packages/mosaic/datepicker/ptsecurity-mosaic-datepicker.ts"],"sourcesContent":["// tslint:disable:no-magic-numbers\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\n\n\n/**\n * Extra CSS classes that can be associated with a calendar cell.\n */\nexport type McCalendarCellCssClasses = string | string[] | Set<string> | { [key: string]: any };\n\n/**\n * An internal class that represents the data corresponding to a single calendar cell.\n * @docs-private\n */\nexport class McCalendarCell {\n constructor(\n public value: number,\n public displayValue: string,\n public enabled: boolean,\n public cssClasses?: McCalendarCellCssClasses\n ) {}\n}\n\n\n/**\n * An internal component used to display calendar data in a table.\n * @docs-private\n */\n@Component({\n selector: '[mc-calendar-body]',\n exportAs: 'mcCalendarBody',\n templateUrl: 'calendar-body.html',\n styleUrls: ['calendar-body.scss'],\n host: {\n class: 'mc-calendar__body'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendarBody implements OnChanges {\n /** The cells to display in the table. */\n @Input() rows: McCalendarCell[][];\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 /** The cell number of the active cell in the table. */\n @Input() activeCell = 0;\n\n /**\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\n * maintained even as the table resizes.\n */\n @Input() cellAspectRatio = 1;\n\n /** Emits when a new value is selected. */\n @Output() readonly selectedValueChange: EventEmitter<number> = new EventEmitter<number>();\n\n /** The number of blank cells to put at the beginning for the first row. */\n firstRowOffset: number;\n\n /** Padding for the individual date cells. */\n cellPadding: string;\n\n /** Width of an individual cell. */\n cellWidth: string;\n\n cellClicked(cell: McCalendarCell): void {\n if (cell.enabled) {\n this.selectedValueChange.emit(cell.value);\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const columnChanges = changes.numCols;\n // tslint:disable-next-line:no-this-assignment\n const { rows, numCols } = this;\n\n if (changes.rows || columnChanges) {\n this.firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n }\n\n if (changes.cellAspectRatio || columnChanges || !this.cellPadding) {\n this.cellPadding = `${this.cellAspectRatio * 50 / numCols}%`;\n }\n\n if (columnChanges || !this.cellWidth) {\n this.cellWidth = `${100 / numCols}%`;\n }\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","<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\n percentage of the width (a variant of the trick described here:\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n -->\n <td *ngIf=\"rowIndex === 0 && firstRowOffset\"\n class=\"mc-calendar__body-label\"\n [attr.colspan]=\"firstRowOffset\">\n </td>\n\n <td *ngFor=\"let item of row; let colIndex = index\"\n class=\"mc-calendar__body-cell\"\n [ngClass]=\"item.cssClasses!\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.mc-calendar__body_disabled]=\"!item.enabled\"\n [class.mc-calendar__body_active]=\"isActiveCell(rowIndex, colIndex)\"\n (click)=\"cellClicked(item)\"\n [style.width]=\"cellWidth\"\n [style.paddingTop]=\"cellPadding\"\n [style.paddingBottom]=\"cellPadding\">\n <div class=\"mc-calendar__body-cell-content\"\n [class.mc-selected]=\"selectedValue === item.value\"\n [class.mc-calendar__body-today]=\"todayValue === item.value\">\n {{ item.displayValue }}\n </div>\n </td>\n</tr>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter } from '@ptsecurity/mosaic/core';\n\n\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2099;\n\n/** Default header for McCalendar */\n@Component({\n selector: 'mc-calendar-header',\n exportAs: 'mcCalendarHeader',\n templateUrl: 'calendar-header.html',\n styleUrls: ['calendar-header.scss'],\n host: {\n class: 'mc-calendar-header'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendarHeader<D> implements AfterContentInit {\n monthNames: { name: string; value: number }[];\n selectedMonth: number;\n\n years: number[] = [];\n selectedYear: number;\n\n @Input()\n get activeDate(): D {\n return this._activeDate;\n }\n\n set activeDate(value: D) {\n this._activeDate = value;\n\n this.updateSelectedValues();\n }\n\n private _activeDate: D;\n\n @Input()\n get maxDate(): D | null {\n return this._maxDate;\n }\n\n set maxDate(value: D | null) {\n if (!value) { return; }\n\n this._maxDate = value;\n\n this.updateYearsArray();\n }\n\n // tslint:disable-next-line:no-magic-numbers\n private _maxDate = this.adapter.createDate(defaultMaxYear, 11);\n\n @Input()\n get minDate(): D | null {\n return this._minDate;\n }\n\n set minDate(value: D | null) {\n if (!value) { return; }\n\n this._minDate = value;\n\n this.updateYearsArray();\n }\n\n private _minDate = this.adapter.createDate(defaultMinYear, 1);\n\n get previousDisabled(): boolean {\n return this.compareDate(this.activeDate, this.minDate!) < 0;\n }\n\n get nextDisabled(): boolean {\n return this.compareDate(this.activeDate, this.maxDate!) >= 0;\n }\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange = new EventEmitter<D>();\n @Output() readonly monthSelected = new EventEmitter<D>();\n @Output() readonly yearSelected = new EventEmitter<D>();\n\n constructor(private readonly adapter: DateAdapter<D>) {\n this.monthNames = this.adapter.getMonthNames('long')\n .map((name, i) => ({ name, value: i }));\n }\n\n ngAfterContentInit(): void {\n this.updateYearsArray();\n this.updateSelectedValues();\n }\n\n /** Handles when a new month is selected. */\n onMonthSelected(month: number) {\n const year = this.adapter.getYear(this.activeDate);\n const normalizedDate = this.adapter.createDate(year, month);\n const daysInMonth = this.adapter.getNumDaysInMonth(normalizedDate);\n\n this.activeDate = this.adapter.createDate(\n year,\n month,\n Math.min(this.adapter.getDate(this.activeDate), daysInMonth)\n );\n\n this.monthSelected.emit(this.activeDate);\n this.activeDateChange.emit(this.activeDate);\n }\n\n /** Handles when a new year is selected. */\n onYearSelected(year: number) {\n const month = this.adapter.getMonth(this.activeDate);\n const daysInMonth = this.adapter.getNumDaysInMonth(this.adapter.createDate(year, month));\n\n this.activeDate = this.adapter.createDate(\n year,\n month,\n Math.min(this.adapter.getDate(this.activeDate), daysInMonth)\n );\n\n this.yearSelected.emit(this.activeDate);\n this.activeDateChange.emit(this.activeDate);\n }\n\n selectCurrentDate(): void {\n this.activeDate = this.adapter.today();\n\n this.activeDateChange.emit(this.activeDate);\n }\n\n /** Handles user clicks on the previous button. */\n selectPreviousMonth(): void {\n this.activeDate = this.adapter.addCalendarMonths(this.activeDate, -1);\n\n this.activeDateChange.emit(this.activeDate);\n }\n\n /** Handles user clicks on the next button. */\n selectNextMonth(): void {\n this.activeDate = this.adapter.addCalendarMonths(this.activeDate, 1);\n\n this.activeDateChange.emit(this.activeDate);\n }\n\n private compareDate(first: D, second: D): number {\n const normalizedFirst = this.adapter.createDate(\n this.adapter.getYear(first),\n this.adapter.getMonth(first)\n );\n\n const normalizedSecond = this.adapter.createDate(\n this.adapter.getYear(second),\n this.adapter.getMonth(second)\n );\n\n return this.adapter.compareDate(normalizedFirst, normalizedSecond);\n }\n\n private updateSelectedValues() {\n this.selectedMonth = this.monthNames[this.adapter.getMonth(this.activeDate)].value;\n\n const selectedYear = this.adapter.getYear(this.activeDate);\n this.selectedYear = this.years.includes(selectedYear) ? selectedYear : this.years[0];\n }\n\n private updateYearsArray() {\n const minYear = this.adapter.getYear(this.minDate!);\n const maxYear = this.adapter.getYear(this.maxDate!);\n\n this.years = [];\n\n for (let i: number = minYear; i <= maxYear; i++) {\n this.years.push(i);\n }\n }\n}\n","<div class=\"mc-calendar-header__select-group\">\n <mc-select\n class=\"mc-calendar-header__select\"\n #monthSelect=\"mcSelect\"\n [value]=\"selectedMonth\"\n [panelClass]=\"'mc-calendar-select-panel'\"\n (selectionChange)=\"onMonthSelected($event.value)\">\n\n <button class=\"mc-button_transparent layout-padding-right-xs\"\n mc-button\n mc-select-matcher\n [class.mc-active]=\"monthSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ monthSelect.triggerValue }}\n\n <i class=\"layout-padding-left-3xs\" mc-icon=\"mc-angle-down-S_16\"></i>\n </button>\n\n <mc-option *ngFor=\"let month of monthNames\"\n [mcTooltipDisabled]=\"true\"\n [value]=\"month.value\">\n {{ month.name }}\n </mc-option>\n </mc-select>\n\n <mc-select\n #yearSelect=\"mcSelect\"\n [value]=\"selectedYear\"\n [panelClass]=\"'mc-calendar-select-panel'\"\n (selectionChange)=\"onYearSelected($event.value)\">\n <button class=\"mc-button_transparent layout-padding-right-xs\"\n mc-button\n mc-select-matcher\n [class.mc-active]=\"yearSelect.panelOpen\"\n [tabindex]=\"-1\">\n {{ yearSelect.triggerValue }}\n\n <i class=\"layout-padding-left-3xs\" mc-icon=\"mc-angle-down-S_16\"></i>\n </button>\n\n <mc-option *ngFor=\"let year of years\"\n [mcTooltipDisabled]=\"true\"\n [value]=\"year\">\n {{ year }}\n </mc-option>\n </mc-select>\n</div>\n\n<div class=\"mc-calendar-header__button-group\">\n <button mc-button\n class=\"mc-button_transparent mc-calendar-header__previous-button\"\n [tabindex]=\"-1\"\n [disabled]=\"previousDisabled\"\n (click)=\"selectPreviousMonth()\">\n\n <i mc-icon=\"mc-angle-left-L_16\"></i>\n </button>\n\n <button mc-button\n class=\"mc-button_transparent\"\n [tabindex]=\"-1\"\n (click)=\"selectCurrentDate()\">\n\n <i mc-icon=\"mc-circle-8_16\"></i>\n </button>\n\n <button mc-button\n class=\"mc-button_transparent mc-calendar-header__next-button\"\n [tabindex]=\"-1\"\n [disabled]=\"nextDisabled\"\n (click)=\"selectNextMonth()\">\n\n <i mc-icon=\"mc-angle-right-L_16\"></i>\n </button>\n</div>\n","/** @docs-private */\nexport function createMissingDateImplError(provider: string) {\n return Error(\n `McDatepicker: No provider found for ${provider}. You must import one of the existing ` +\n `modules at your application root or provide a custom implementation or use exists ones.`);\n}\n","// tslint:disable:no-magic-numbers\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewEncapsulation,\n ViewChild\n} from '@angular/core';\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/mosaic/core';\n\nimport { McCalendarBody, McCalendarCell, McCalendarCellCssClasses } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\n\n\nconst DAYS_PER_WEEK = 7;\n\n\n/**\n * An internal component used to display a single month in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-month-view',\n exportAs: 'mcMonthView',\n templateUrl: 'month-view.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McMonthView<D> implements AfterContentInit {\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 oldValue = this._activeDate;\n this._activeDate = value;\n\n if (!this.hasSameMonthAndYear(oldValue, value)) {\n this.init();\n }\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\n set selected(value: D | null) {\n this._selected = value;\n this.selectedDate = this.getDateInCurrentMonth(this._selected);\n }\n\n private _selected: D | null;\n\n /** The minimum selectable date. */\n @Input() minDate: D | null;\n\n /** The maximum selectable date. */\n @Input() maxDate: D | null;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\n\n /** Emits when a new date is selected. */\n @Output() readonly selectedChange: EventEmitter<D | null> = new EventEmitter<D | null>();\n\n /** Emits when any date is selected. */\n @Output() readonly userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when any date is activated. */\n @Output() readonly activeDateChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** The body of calendar table */\n @ViewChild(McCalendarBody, { static: false }) mcCalendarBody: McCalendarBody;\n\n /** Grid of calendar cells representing the dates of the month. */\n weeks: McCalendarCell[][];\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 constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n @Optional() public adapter: DateAdapter<D>\n ) {\n\n if (!this.adapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n const firstDayOfWeek = this.adapter.getFirstDayOfWeek();\n const narrowWeekdays = this.adapter.getDayOfWeekNames('short');\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\n this.weekdays = weekdays\n .slice(firstDayOfWeek)\n .concat(weekdays.slice(0, firstDayOfWeek));\n\n this._activeDate = this.adapter.today();\n }\n\n ngAfterContentInit() {\n this.init();\n }\n\n /** Handles when a new date is selected. */\n dateSelected(date: number) {\n if (this.selectedDate !== date) {\n const selectedYear = this.adapter.getYear(this.activeDate);\n const selectedMonth = this.adapter.getMonth(this.activeDate);\n const selectedDate = this.adapter.createDate(selectedYear, selectedMonth, date);\n\n this.selectedChange.emit(selectedDate);\n }\n\n this.userSelection.emit();\n }\n\n /** Initializes this month view. */\n init() {\n this.selectedDate = this.getDateInCurrentMonth(this.selected);\n this.todayDate = this.getDateInCurrentMonth(this.adapter.today());\n\n const firstOfMonth = this.adapter.createDate(\n this.adapter.getYear(this.activeDate),\n this.adapter.getMonth(this.activeDate)\n );\n\n this.firstWeekOffset = (\n DAYS_PER_WEEK + this.adapter.getDayOfWeek(firstOfMonth) - this.adapter.getFirstDayOfWeek()\n ) % DAYS_PER_WEEK;\n\n this.createWeekCells();\n this.changeDetectorRef.markForCheck();\n }\n\n /** Creates McCalendarCells for the dates in this month. */\n private createWeekCells() {\n const daysInMonth = this.adapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this.adapter.getDateNames();\n\n this.weeks = [[]];\n\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\n const date = this.adapter.createDate(\n this.adapter.getYear(this.activeDate),\n this.adapter.getMonth(this.activeDate),\n i + 1\n );\n const enabled = this.shouldEnableDate(date);\n const cellClasses = this.dateClass ? this.dateClass(date) : undefined;\n\n this.weeks[this.weeks.length - 1]\n .push(new McCalendarCell(i + 1, dateNames[i], enabled, cellClasses));\n }\n }\n\n /** Date filter for the month */\n private shouldEnableDate(date: D): boolean {\n return !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this.adapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this.adapter.compareDate(date, this.maxDate) <= 0);\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 | null): number | null {\n return date && this.hasSameMonthAndYear(date, this.activeDate) ? this.adapter.getDate(date) : null;\n }\n\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n private hasSameMonthAndYear(d1: D | null, d2: D | null): boolean {\n return !!(d1 && d2 && this.adapter.getMonth(d1) === this.adapter.getMonth(d2) &&\n this.adapter.getYear(d1) === this.adapter.getYear(d2));\n }\n}\n","<table class=\"mc-calendar__table\">\n <thead class=\"mc-calendar__table-header\">\n <tr>\n <th *ngFor=\"let day of weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n <tr>\n <th class=\"mc-calendar__table-header-divider\" colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [rows]=\"weeks\"\n [todayValue]=\"todayDate!\"\n [selectedValue]=\"selectedDate!\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"adapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"dateSelected($event)\">\n </tbody>\n</table>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n/** Datepicker data that requires internationalization. */\n@Injectable({ providedIn: 'root' })\nexport class McDatepickerIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the calendar popup (used by screen readers). */\n calendarLabel: string = 'Calendar';\n\n /** A label for the button used to open the calendar popup (used by screen readers). */\n openCalendarLabel: string = 'Open calendar';\n\n /** A label for the previous month button (used by screen readers). */\n prevMonthLabel: string = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n nextMonthLabel: string = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n prevYearLabel: string = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n nextYearLabel: string = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n prevMultiYearLabel: string = 'Previous 20 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n nextMultiYearLabel: string = 'Next 20 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n switchToMonthViewLabel: string = 'Choose date';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n switchToMultiYearViewLabel: string = 'Choose month and year';\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/mosaic/core';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { McCalendarCellCssClasses } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { McDatepickerIntl } from './datepicker-intl';\nimport { McMonthView } from './month-view.component';\n\n\n/**\n * A calendar that is used as part of the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-calendar',\n exportAs: 'mcCalendar',\n templateUrl: 'calendar.html',\n styleUrls: ['calendar.scss'],\n host: {\n class: 'mc-calendar'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendar<D> implements AfterContentInit, OnDestroy, OnChanges {\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\n set startAt(value: D | null) {\n const deserializedValue = this.getValidDateOrNull(this.adapter.deserialize(value));\n\n this._startAt = deserializedValue !== null ?\n this.adapter.clampDate(deserializedValue, this.minDate, this.maxDate) : null;\n }\n\n private _startAt: D | null;\n\n /** The currently selected date. */\n @Input()\n get selected(): D | null {\n return this._selected;\n }\n\n set selected(value: D | null) {\n this._selected = this.adapter.deserialize(value);\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.deserialize(value);\n\n this.startAt = this._startAt;\n }\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\n set maxDate(value: D | null) {\n this._maxDate = this.adapter.deserialize(value);\n\n this.startAt = this._startAt;\n }\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._activeDate;\n }\n\n set activeDate(value: D) {\n this._activeDate = this.adapter.clampDate(value, this.minDate, this.maxDate);\n\n this.stateChanges.next();\n }\n\n private _activeDate: D;\n\n /** Function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\n\n /** Emits when the currently selected date changes. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the year chosen in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits the month chosen in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits when any date is selected. */\n @Output() readonly userSelection: EventEmitter<void> = new EventEmitter<void>();\n\n /** Reference to the current month view component. */\n @ViewChild(McMonthView, { static: false }) monthView: McMonthView<D>;\n\n /**\n * Emits whenever there is a state change that the header may need to respond to.\n */\n stateChanges = new Subject<void>();\n\n private readonly intlChanges: Subscription;\n\n constructor(\n intl: McDatepickerIntl,\n @Optional() private readonly adapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n if (!this.adapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n this.intlChanges = intl.changes.subscribe(() => {\n changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n\n ngAfterContentInit() {\n this.activeDate = this.startAt || this.adapter.today();\n }\n\n ngOnDestroy() {\n this.intlChanges.unsubscribe();\n this.stateChanges.complete();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const change = changes.minDate || changes.maxDate || changes.dateFilter;\n\n if (change && !change.firstChange) {\n if (this.monthView) {\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n // passed down to the view via data bindings which won't be up-to-date when we call `init`.\n this.changeDetectorRef.detectChanges();\n this.monthView.init();\n }\n }\n\n this.stateChanges.next();\n }\n\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n this.monthView.ngAfterContentInit();\n }\n\n /** Handles date selection in the month view. */\n dateSelected(date: D): void {\n if (!this.adapter.sameDate(date, this.selected)) {\n this.selectedChange.emit(date);\n }\n }\n\n userSelected(): void {\n this.userSelection.emit();\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 // todo выглядит как костыль от которого нужно избавиться\n private getValidDateOrNull(obj: any): D | null {\n return (this.adapter.isDateInstance(obj) && this.adapter.isValid(obj)) ? obj : null;\n }\n}\n\n","<mc-calendar-header\n [(activeDate)]=\"activeDate\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"monthSelected.emit(activeDate)\"\n (yearSelected)=\"yearSelected.emit(activeDate)\">\n</mc-calendar-header>\n\n<div class=\"mc-calendar__content\">\n <mc-month-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (selectedChange)=\"dateSelected($event!)\"\n (userSelection)=\"userSelected()\">\n </mc-month-view>\n</div>\n","// tslint:disable:no-empty, deprecation\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n Renderer2\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport {\n UP_ARROW,\n RIGHT_ARROW,\n DOWN_ARROW,\n LEFT_ARROW,\n END,\n PAGE_DOWN,\n HOME,\n PAGE_UP,\n SPACE,\n TAB,\n ESCAPE,\n DELETE,\n BACKSPACE,\n hasModifierKey,\n isHorizontalMovement,\n isLetterKey,\n isVerticalMovement\n} from '@ptsecurity/cdk/keycodes';\nimport {\n DateAdapter,\n MC_DATE_FORMATS,\n McDateFormats,\n validationTooltipHideDelay,\n validationTooltipShowDelay\n} from '@ptsecurity/mosaic/core';\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { McWarningTooltipTrigger } from '@ptsecurity/mosaic/tooltip';\nimport { Subject, Subscription } from 'rxjs';\n\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { McDatepicker } from './datepicker.component';\n\n\n// tslint:disable:naming-convention\nenum DateParts {\n year = 'y',\n month = 'm',\n day = 'd'\n}\n\nexport const MAX_YEAR = 9999;\nconst YEAR_LENGTH = 4;\n\nclass DateDigit {\n maxDays = 31;\n maxMonth = 12;\n\n parse: (value: string) => number;\n\n constructor(public value: DateParts, public start: number, public length: number) {\n if (value === DateParts.day) {\n this.parse = this.parseDay;\n } else if (value === DateParts.month) {\n this.parse = this.parseMonth;\n } else if (value === DateParts.year) {\n this.parse = this.parseYear;\n }\n }\n\n get end(): number {\n return this.start + this.length;\n }\n\n get isDay(): boolean {\n return this.value === DateParts.day;\n }\n\n get isMonth(): boolean {\n return this.value === DateParts.month;\n }\n\n get isYear(): boolean {\n return this.value === DateParts.year;\n }\n\n get fullName(): string {\n if (this.isDay) { return 'date'; }\n\n if (this.isMonth) { return 'month'; }\n\n if (this.isYear) { return 'year'; }\n\n return '';\n }\n\n private parseDay(value: string): number {\n const parsedValue: number = parseInt(value);\n\n if (parsedValue === 0) { return 1; }\n\n if (parsedValue > this.maxDays) { return this.maxDays; }\n\n return parsedValue;\n }\n\n private parseMonth(value: string): number {\n const parsedValue: number = parseInt(value);\n\n if (parsedValue === 0) { return 1; }\n\n if (parsedValue > this.maxMonth) { return this.maxMonth; }\n\n return parsedValue;\n }\n\n private parseYear(value: string): number {\n const parsedValue: number = parseInt(value);\n\n if (parsedValue === 0) { return 1; }\n\n if (parsedValue > MAX_YEAR) { return parseInt(value.substring(0, YEAR_LENGTH)); }\n\n return parsedValue;\n }\n}\n\n/** @docs-private */\nexport const MC_DATEPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => McDatepickerInput),\n multi: true\n};\n\n/** @docs-private */\nexport const MC_DATEPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => McDatepickerInput),\n multi: true\n};\n\n\n/**\n * An event used for datepicker 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 McDatepickerInputEvent instead.\n */\nexport class McDatepickerInputEvent<D> {\n /** The new value for the target datepicker input. */\n value: D | null;\n\n constructor(\n /** Reference to the datepicker input component that emitted the event. */\n public target: McDatepickerInput<D>,\n /** Reference to the native input element associated with the datepicker input. */\n public targetElement: HTMLElement\n ) {\n this.value = this.target.value;\n }\n}\n\nlet uniqueComponentIdSuffix = 0;\n\ninterface DateTimeObject {\n year: number;\n month: number;\n date: number;\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n}\n\n\n/** Directive used to connect an input to a McDatepicker. */\n@Directive({\n selector: 'input[mcDatepicker]',\n exportAs: 'mcDatepickerInput',\n providers: [\n MC_DATEPICKER_VALUE_ACCESSOR,\n MC_DATEPICKER_VALIDATORS,\n { provide: McFormFieldControl, useExisting: McDatepickerInput }\n ],\n host: {\n class: 'mc-input mc-datepicker',\n '[attr.placeholder]': 'placeholder',\n '[attr.required]': 'required',\n '[attr.disabled]': 'disabled || null',\n '[attr.min]': 'min ? toISO8601(min) : null',\n '[attr.max]': 'max ? toISO8601(max) : null',\n '[attr.autocomplete]': '\"off\"',\n\n '(paste)': 'onPaste($event)',\n '(change)': 'onChange()',\n\n '(focus)': 'focusChanged(true)',\n '(blur)': 'onBlur()',\n\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class McDatepickerInput<D> implements McFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {\n\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n readonly errorState: boolean;\n\n controlType: string = 'datepicker';\n\n focused: boolean = false;\n\n datepicker: McDatepicker<D>;\n\n dateFilter: (date: D | null) => boolean;\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 @Input() placeholder: string;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n private _required: boolean;\n\n /** The datepicker that this input is associated with. */\n @Input()\n set mcDatepicker(value: McDatepicker<D>) {\n if (!value) { return; }\n\n this.datepicker = value;\n this.datepicker.registerInput(this);\n this.datepickerSubscription.unsubscribe();\n\n this.datepickerSubscription = this.datepicker.selectedChanged\n .subscribe((selected: D) => {\n const newValue = this.saveTimePart(selected);\n\n this.value = newValue;\n this.cvaOnChange(newValue);\n this.onTouched();\n this.dateChange.emit(new McDatepickerInputEvent(this, this.elementRef.nativeElement));\n });\n }\n\n /** Function that can be used to filter out dates within the datepicker. */\n @Input()\n set mcDatepickerFilter(value: (date: D | null) => boolean) {\n this.dateFilter = value;\n this.validatorOnChange();\n }\n\n /** The value of the input. */\n @Input()\n get value(): D | null {\n return this._value;\n }\n\n set value(value: D | null) {\n let newValue = this.adapter.deserialize(value);\n\n this.lastValueValid = !newValue || this.adapter.isValid(newValue);\n\n newValue = this.getValidDateOrNull(newValue);\n\n const oldDate = this.value;\n this._value = newValue;\n this.formatValue(newValue);\n\n if (!this.adapter.sameDate(oldDate, newValue)) {\n this.valueChange.emit(newValue);\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\n set min(value: D | null) {\n this._min = this.adapter.deserialize(value);\n this.validatorOnChange();\n }\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\n set max(value: D | null) {\n this._max = this.adapter.deserialize(value);\n this.validatorOnChange();\n }\n\n private _max: D | null;\n\n /** Whether the datepicker-input is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this.elementRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n\n private _disabled: boolean = false;\n\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n }\n\n private _id: string;\n\n @Input()\n set mcValidationTooltip(tooltip: McWarningTooltipTrigger) {\n if (!tooltip) { return; }\n\n tooltip.enterDelay = validationTooltipShowDelay;\n tooltip.trigger = 'manual';\n\n tooltip.initListeners();\n\n this.incorrectInput.subscribe(() => {\n if (tooltip.isOpen) { return; }\n\n tooltip.show();\n\n setTimeout(() => tooltip.hide(), validationTooltipHideDelay);\n });\n }\n\n @Output() incorrectInput = new EventEmitter<void>();\n\n /** Emits when a `change` event is fired on this `<input>`. */\n @Output() readonly dateChange = new EventEmitter<McDatepickerInputEvent<D>>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n @Output() readonly dateInput = new EventEmitter<McDatepickerInputEvent<D>>();\n\n get empty(): boolean {\n return !this.viewValue && !this.isBadInput();\n }\n\n get viewValue(): string {\n return this.elementRef.nativeElement.value;\n }\n\n get ngControl(): any {\n return this.control;\n }\n\n get isReadOnly(): boolean {\n return this.elementRef.nativeElement.readOnly;\n }\n\n private get readyForParse(): boolean {\n return !!(this.firstDigit && this.secondDigit && this.thirdDigit);\n }\n\n private get selectionStart(): number | null {\n return this.elementRef.nativeElement.selectionStart;\n }\n\n private set selectionStart(value: number | null) {\n this.elementRef.nativeElement.selectionStart = value;\n }\n\n private get selectionEnd(): number | null {\n return this.elementRef.nativeElement.selectionEnd;\n }\n\n private set selectionEnd(value: number | null) {\n this.elementRef.nativeElement.selectionEnd = value;\n }\n\n private control: AbstractControl;\n private readonly uid = `mc-datepicker-${uniqueComponentIdSuffix++}`;\n\n private datepickerSubscription = 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 /** The combined form control validator for this input. */\n private readonly validator: ValidatorFn | null;\n\n private separator: string;\n\n private firstDigit: DateDigit | null = null;\n private secondDigit: DateDigit | null = null;\n private thirdDigit: DateDigit | null = null;\n\n private separatorPositions: number[];\n\n constructor(\n public elementRef: ElementRef<HTMLInputElement>,\n private readonly renderer: Renderer2,\n @Optional() readonly adapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats\n ) {\n this.validator = Validators.compose([\n this.parseValidator,\n this.minValidator,\n this.maxValidator,\n this.filterValidator\n ]);\n\n if (!this.adapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n this.setFormat(dateFormats.dateInput);\n\n this.localeSubscription = adapter.localeChanges\n .subscribe(this.updateLocaleParams);\n }\n\n onContainerClick() {\n this.focus();\n }\n\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n\n focusChanged(isFocused: boolean): void {\n if (isFocused !== this.focused) {\n this.focused = isFocused;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n // tslint:disable-next-line:no-empty\n onTouched = () => {};\n\n ngOnDestroy() {\n this.datepickerSubscription.unsubscribe();\n this.localeSubscription.unsubscribe();\n this.valueChange.complete();\n this.disabledChange.complete();\n }\n\n /** @docs-private */\n registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n /** @docs-private */\n validate(control: AbstractControl): ValidationErrors | null {\n this.setControl(control);\n\n return this.validator ? this.validator(control) : null;\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(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.isReadOnly) { return; }\n\n const keyCode = event.keyCode;\n\n if (this.isLetterKey(event)) {\n event.preventDefault();\n\n this.incorrectInput.emit();\n } else if (this.isKeyForOpen(event)) {\n event.preventDefault();\n\n this.datepicker?.open();\n } else if (this.isKeyForClose(event)) {\n event.preventDefault();\n\n this.datepicker.close();\n } else if (keyCode === TAB) {\n this.datepicker.close(false);\n } else if (this.isKeyForByPass(event)) {\n return;\n } else if (keyCode === SPACE) {\n this.spaceKeyHandler(event);\n } else if ([UP_ARROW, DOWN_ARROW].includes(keyCode)) {\n event.preventDefault();\n\n this.verticalArrowKeyHandler(keyCode);\n } else if ([LEFT_ARROW, RIGHT_ARROW, HOME, PAGE_UP, END, PAGE_DOWN].includes(keyCode)) {\n event.preventDefault();\n\n this.changeCaretPosition(keyCode);\n } else if (/^\\D$/.test(event.key)) {\n event.preventDefault();\n\n const newValue = this.getNewValue(event.key, this.selectionStart as number);\n const formattedValue = this.replaceSymbols(newValue);\n\n if (newValue !== formattedValue) {\n this.setViewValue(formattedValue, true);\n\n setTimeout(this.onInput);\n } else {\n this.incorrectInput.emit();\n }\n } else {\n setTimeout(this.onInput);\n }\n }\n\n onInput = () => {\n this.correctCursorPosition();\n const formattedValue = this.replaceSymbols(this.viewValue);\n\n const newTimeObj = this.getDateFromString(formattedValue);\n this.lastValueValid = !!newTimeObj;\n\n if (!newTimeObj) {\n if (!this.viewValue) {\n this._value = null;\n this.cvaOnChange(null);\n } else {\n this.control.updateValueAndValidity();\n }\n\n return;\n }\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput), true);\n\n this.selectNextDigitByCursor((this.selectionStart as number));\n\n this.updateValue(newTimeObj);\n }\n\n parseOnBlur = (): any => {\n if (!this.viewValue || !this.readyForParse) { return null; }\n\n const date: DateTimeObject = this.getDefaultValue();\n\n const viewDigits: string[] = this.viewValue\n .split(this.separator)\n .map((value: string) => value)\n .filter((value) => value);\n\n const [firsViewDigit, secondViewDigit, thirdViewDigit] = viewDigits;\n\n // tslint:disable-next-line:no-magic-numbers\n if (viewDigits.length !== 3) {\n this.lastValueValid = false;\n this._value = null;\n\n return setTimeout(() => this.control.updateValueAndValidity());\n }\n\n date[this.firstDigit!.fullName] = this.firstDigit!.parse(firsViewDigit);\n date[this.secondDigit!.fullName] = this.secondDigit!.parse(secondViewDigit);\n date[this.thirdDigit!.fullName] = this.thirdDigit!.parse(thirdViewDigit);\n\n const [digitWithYear, viewDigitWithYear] = [this.firstDigit, this.secondDigit, this.thirdDigit]\n .reduce((acc: any, digit, index) => digit!.value === DateParts.year ? [digit, viewDigits[index]] : acc, []);\n\n // tslint:disable-next-line:no-magic-numbers\n if (viewDigitWithYear.length < 3) {\n // tslint:disable-next-line:no-magic-numbers\n date.year += date.year < 30 ? 2000 : 1900;\n } else if (viewDigitWithYear.length < digitWithYear.length) {\n this.lastValueValid = false;\n this._value = null;\n\n return setTimeout(() => this.control.updateValueAndValidity());\n }\n\n const newTimeObj = this.createDateTime(date);\n\n if (!newTimeObj) {\n this.lastValueValid = false;\n this._value = null;\n this.cvaOnChange(null);\n\n return setTimeout(() => this.control.updateValueAndValidity());\n }\n\n this.lastValueValid = !!newTimeObj;\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput), true);\n\n this.updateValue(newTimeObj);\n }\n\n onChange() {\n this.dateChange.emit(new McDatepickerInputEvent(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 this.parseOnBlur();\n\n this.focusChanged(false);\n\n this.onInput();\n }\n\n onPaste($event) {\n $event.preventDefault();\n\n let rawValue = $event.clipboardData.getData('text');\n\n if (rawValue.match(/^\\d\\D/)) {\n rawValue = `0${rawValue}`;\n }\n rawValue.replace(/[^A-Za-z0-9]+/g, this.separator);\n\n if (/[a-z]/gi.test(rawValue)) {\n this.incorrectInput.emit();\n }\n\n const match: RegExpMatchArray | null = rawValue.match(/^(?<first>\\d+)\\W(?<second>\\d+)\\W(?<third>\\d+)$/);\n\n if (!match?.groups?.first || !match?.groups?.second || !match?.groups?.third) {\n this.setViewValue(rawValue);\n\n return rawValue;\n }\n\n const value = [match.groups.first, match.groups.second, match.groups.third].join(this.separator);\n\n const newTimeObj = this.getDateFromString(value);\n\n if (!newTimeObj) {\n this.setViewValue(value);\n\n return value;\n }\n\n this.setViewValue(this.getTimeStringFromDate(newTimeObj, this.dateFormats.dateInput));\n\n this.updateValue(newTimeObj);\n }\n\n toISO8601(value: D): string {\n return this.adapter.toIso8601(value);\n }\n\n private saveTimePart(selected: D) {\n if (!this.value) { return selected; }\n\n const years = this.adapter.getYear(selected);\n const month = this.adapter.getMonth(selected);\n const day = this.adapter.getDate(selected);\n\n const hours = this.adapter.getHours(this.value);\n const minutes = this.adapter.getMinutes(this.value);\n const seconds = this.adapter.getSeconds(this.value);\n const milliseconds = this.adapter.getMilliseconds(this.value);\n\n return this.adapter.createDateTime(years, month, day, hours, minutes, seconds, milliseconds);\n }\n\n private updateLocaleParams = () => {\n this.setFormat(this.dateFormats.dateInput);\n\n this.value = this.value;\n }\n\n private setFormat(format: string): void {\n // @ts-ignore\n this.separator = format.match(/[aA-zZ]+(?<separator>\\W|\\D)[aA-zZ]+/).groups.separator;\n\n this.separatorPositions = format\n .split('')\n .reduce((acc: any, item, index: number) => this.separator === item ? [...acc, index + 1] : acc, []);\n\n this.getDigitPositions(format);\n }\n\n private updateValue(newValue: D) {\n if (!this.adapter.sameDate(newValue, this.value)) {\n this._value = newValue;\n this.cvaOnChange(newValue);\n this.valueChange.emit(newValue);\n this.dateInput.emit(new McDatepickerInputEvent(this, this.elementRef.nativeElement));\n }\n\n this.control?.updateValueAndValidity({ emitEvent: false });\n }\n\n private isKeyForClose(event: KeyboardEvent): boolean {\n return (event.altKey && event.keyCode === UP_ARROW) || event.keyCode === ESCAPE;\n }\n\n private isKeyForOpen(event: KeyboardEvent): boolean {\n return event.altKey && event.keyCode === DOWN_ARROW;\n }\n\n private isLetterKey(event: KeyboardEvent): boolean {\n return isLetterKey(event) && !event.ctrlKey && !event.metaKey;\n }\n\n private isKeyForByPass(event: KeyboardEvent): boolean {\n return (hasModifierKey(event) && (isVerticalMovement(event) || isHorizontalMovement(event))) ||\n event.ctrlKey || event.metaKey ||\n [DELETE, BACKSPACE, TAB].includes(event.keyCode);\n }\n\n private spaceKeyHandler(event: KeyboardEvent) {\n event.preventDefault();\n\n if (this.selectionStart === this.selectionEnd) {\n const value = this.getNewValue(event.key, this.selectionStart as number);\n this.setViewValue(value);\n\n setTimeout(this.onInput);\n } else if (this.selectionStart !== this.selectionEnd) {\n this.selectNextDigit(this.selectionStart as number, true);\n }\n }\n\n private getNewValue(key: string, position: number) {\n return [this.viewValue.slice(0, position), key, this.viewValue.slice(position)].join('');\n }\n\n private setViewValue(value: string, savePosition: boolean = false) {\n if (savePosition) {\n const selectionStart = this.selectionStart;\n const selectionEnd = this.selectionEnd;\n\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value);\n }\n }\n\n private replaceSymbols(value: string): string {\n return value\n .split(this.separator)\n .map((part: string) => part.replace(/^([0-9]+)\\W$/, '0$1'))\n .join(this.separator);\n }\n\n private getDateFromString(timeString: string): D | null {\n if (!timeString || timeString.length < this.firstDigit!.length) { return null; }\n\n const date = this.getDefaultValue();\n\n const viewDigits: string[] = timeString\n .split(this.separator)\n .map((value: string) => value);\n\n const [firsViewDigit, secondViewDigit, thirdViewDigit] = viewDigits;\n\n\n if (viewDigits.length === 1) {\n if (/\\D/.test(firsViewDigit) || firsViewDigit.length < this.firstDigit!.length) { return null; }\n\n date[this.firstDigit!.fullName] = this.firstDigit!.parse(firsViewDigit);\n\n if (this.firstDigit!.isDay) {\n date.month = 1;\n }\n // tslint:disable-next-line:no-magic-numbers\n } else if (viewDigits.length === 2) {\n if (firsViewDigit.length < this.firstDigit!.length || secondViewDigit.length < this.secondDigit!.length) {\n return null;\n }\n\n date[this.firstDigit!.fullName] = this.firstDigit!.parse(firsViewDigit);\n date[this.secondDigit!.fullName] = this.secondDigit!.parse(secondViewDigit);\n // tslint:disable-next-line:no-magic-numbers\n } else if (viewDigits.length === 3) {\n if (\n firsViewDigit.length < this.firstDigit!.length ||\n secondViewDigit.length < this.secondDigit!.length ||\n thirdViewDigit.length < this.thirdDigit!.length\n ) { return null; }\n\n date[this.firstDigit!.fullName] = this.firstDigit!.parse(firsViewDigit);\n date[this.secondDigit!.fullName] = this.secondDigit!.parse(secondViewDigit);\n date[this.thirdDigit!.fullName] = this.thirdDigit!.parse(thirdViewDigit);\n } else {\n return null;\n }\n\n return this.createDateTime(date);\n }\n\n private getDefaultValue(): DateTimeObject {\n const defaultValue = this.value || this.adapter.today();\n\n return {\n year: this.adapter.getYear(defaultValue),\n month: this.adapter.getMonth(defaultValue),\n date: this.adapter.getDate(defaultValue),\n hours: this.adapter.getHours(defaultValue),\n minutes: this.adapter.getMinutes(defaultValue),\n seconds: this.adapter.getSeconds(defaultValue),\n milliseconds: this.adapter.getMilliseconds(defaultValue)\n };\n }\n\n private getTimeStringFromDate(value: D | null, timeFormat: string): string {\n if (!value || !this.adapter.isValid(value)) { return ''; }\n\n return this.adapter.format(value, timeFormat);\n }\n\n private getDateEditMetrics(cursorPosition: number): [\n modifiedTimePart: DateParts,\n cursorStartPosition: number,\n cursorEndPosition: number\n ] {\n for (const digit of [this.firstDigit, this.secondDigit, this.thirdDigit]) {\n if (cursorPosition >= digit!.start && cursorPosition <= digit!.end) {\n return [digit!.value, digit!.start, digit!.end];\n }\n }\n\n return [this.thirdDigit!.value, this.thirdDigit!.start, this.thirdDigit!.end];\n }\n\n private incrementDate(dateVal: D, whatToIncrement: DateParts): D {\n let year = this.adapter.getYear(dateVal);\n let month = this.adapter.getMonth(dateVal);\n let day = this.adapter.getDate(dateVal);\n\n switch (whatToIncrement) {\n case DateParts.day:\n day++;\n\n if (day > this.adapter.getNumDaysInMonth(dateVal)) {\n day = 1;\n }\n\n break;\n case DateParts.month:\n month++;\n\n // tslint:disable-next-line:no-magic-numbers\n if (month > 11) {\n month = 0;\n }\n\n const lastDay = this.getLastDayFor(year, month);\n\n if (day > lastDay) {\n day = lastDay;\n }\n\n break;\n case DateParts.year:\n year++;\n\n if (year > MAX_YEAR) {\n year = 1;\n }\n\n break;\n default:\n }\n\n return this.createDate(year, month, day);\n }\n\n private getLastDayFor(year: number, month: number): number {\n return this.adapter.getNumDaysInMonth(this.createDate(year, month, 1));\n }\n\n private decrementDate(dateVal: D, whatToDecrement: DateParts): D {\n let year = this.adapter.getYear(dateVal);\n let month = this.adapter.getMonth(dateVal);\n let day = this.adapter.getDate(dateVal);\n\n switch (whatToDecrement) {\n case DateParts.day:\n day--;\n\n if (day < 1) {\n day = this.adapter.getNumDaysInMonth(dateVal);\n }\n\n break;\n case DateParts.month:\n month--;\n\n if (month < 0) {\n // tslint:disable-next-line:no-magic-numbers\n month = 11;\n }\n\n const lastDay = this.getLastDayFor(year, month);\n\n if (day > lastDay) {\n day = lastDay;\n }\n\n break;\n case DateParts.year:\n year--;\n\n if (year < 1) {\n year = MAX_YEAR;\n }\n\n break;\n default:\n }\n\n return this.createDate(year, month, day);\n }\n\n private verticalArrowKeyHandler(keyCode: number): void {\n if (!this.value) { return; }\n\n let changedTime;\n\n const [modifiedTimePart, selectionStart, selectionEnd] = this.getDateEditMetrics(this.selectionStart as number);\n\n if (keyCode === UP_ARROW) {\n changedTime = this.incrementDate(this.value, modifiedTimePart);\n }\n\n if (keyCode === DOWN_ARROW) {\n changedTime = this.decrementDate(this.value, modifiedTimePart);\n }\n\n this.value = changedTime;\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n\n this.cvaOnChange(changedTime);\n\n this.onChange();\n this.stateChanges.next();\n }\n\n private changeCaretPosition(keyCode: number): void {\n if (!this.value) { return; }\n\n let cursorPos = this.selectionStart as number;\n\n if ([HOME, PAGE_UP].includes(keyCode)) {\n cursorPos = 0;\n } else if ([END, PAGE_DOWN].includes(keyCode)) {\n cursorPos = this.viewValue.length;\n } else if (keyCode === LEFT_ARROW) {\n cursorPos = cursorPos === 0 ? this.viewValue.length : cursorPos - 1;\n } else if (keyCode === RIGHT_ARROW) {\n const nextSeparatorPos: number = this.viewValue.indexOf(this.separator, cursorPos);\n\n cursorPos = nextSeparatorPos ? nextSeparatorPos + 1 : 0;\n }\n\n this.selectDigitByCursor(cursorPos);\n }\n\n private selectDigitByCursor(cursorPos: number): void {\n setTimeout(() => {\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(cursorPos);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n });\n }\n\n private selectNextDigitByCursor(cursorPos: number): void {\n setTimeout(() => {\n const [, , endPositionOfCurrentDigit] = this.getDateEditMetrics(cursorPos);\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(endPositionOfCurrentDigit + 1);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n });\n }\n\n private selectNextDigit(cursorPos: number, cycle: boolean = false): void {\n setTimeout(() => {\n const lastValue = cycle ? 0 : cursorPos;\n const nextSeparatorPos: number = this.viewValue.indexOf(this.separator, cursorPos);\n\n const newCursorPos = nextSeparatorPos > 0 ? nextSeparatorPos + 1 : lastValue;\n\n const [, selectionStart, selectionEnd] = this.getDateEditMetrics(newCursorPos);\n\n this.selectionStart = selectionStart;\n this.selectionEnd = selectionEnd;\n });\n }\n\n /** Checks whether the input is invalid based on the native validation. */\n private isBadInput(): boolean {\n const validity = (<HTMLInputElement> this.elementRef.nativeElement).validity;\n\n return validity && validity.badInput;\n }\n\n // tslint:disable-next-line:no-empty\n private cvaOnChange: (value: any) => void = () => {};\n\n // tslint:disable-next-line:no-empty\n private validatorOnChange = () => {};\n\n /** The form control validator for whether the input parses. */\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.focused ||\n this.empty ||\n this.lastValueValid ? null : { mcDatepickerParse: { 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.adapter.deserialize(control.value);\n\n return !this.min || !controlValue || this.adapter.compareDateTime(this.min, controlValue) <= 0 ?\n null :\n { mcDatepickerMin: { 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.adapter.deserialize(control.value);\n\n return !this.max || !controlValue || this.adapter.compareDateTime(this.max, controlValue) >= 0 ?\n null :\n { mcDatepickerMax: { 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.adapter.deserialize(control.value);\n\n return !this.dateFilter || !controlValue || this.dateFilter(controlValue) ?\n null : { mcDatepickerFilter: true };\n }\n\n /** Formats a value and sets it on the input element. */\n private formatValue(value: D | null) {\n const formattedValue = value ? this.adapter.format(value, this.dateFormats.dateInput) : '';\n\n this.setViewValue(formattedValue);\n }\n\n private setControl(control: AbstractControl) {\n if (this.control) { return; }\n\n this.control = control;\n\n this.control.valueChanges\n .subscribe((value) => this._value = value);\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 private getDigitPositions(format: string) {\n this.firstDigit = this.secondDigit = this.thirdDigit = null;\n\n const formatInLowerCase = format.toLowerCase();\n\n formatInLowerCase\n .split('')\n .reduce(\n ({ prev, length, start }: any, value: string, index: number, arr) => {\n if (value === this.separator || (arr.length - 1) === index) {\n if (!this.firstDigit) {\n this.firstDigit = new DateDigit(prev, start, length);\n } else if (!this.secondDigit) {\n this.secondDigit = new DateDigit(prev, start, length);\n } else if (!this.thirdDigit) {\n this.thirdDigit = new DateDigit(prev, start, arr.length - start);\n }\n\n // tslint:disable:no-parameter-reassignment\n length = 0;\n start = index + 1;\n } else {\n length++;\n }\n\n return { prev: value, length, start };\n },\n { length: 0, start: 0 }\n );\n\n if (!this.firstDigit || !this.secondDigit || !this.thirdDigit) {\n Error(`Can' t use this format: ${format}`);\n }\n }\n\n private createDate(year: number, month: number, day: number): D {\n return this.adapter.createDateTime(\n year,\n month,\n day,\n this.adapter.getHours(this.value as D),\n this.adapter.getMinutes(this.value as D),\n this.adapter.getSeconds(this.value as D),\n this.adapter.getMilliseconds(this.value as D)\n );\n }\n\n private createDateTime(value: DateTimeObject): D | null {\n if (Object.values(value).some(isNaN)) { return null; }\n\n return this.adapter.createDateTime(\n value.year,\n value.month - 1,\n value.date,\n value.hours,\n value.minutes,\n value.seconds,\n value.milliseconds\n );\n }\n\n private correctCursorPosition() {\n if (this.selectionStart && this.separatorPositions.includes(this.selectionStart)) {\n this.selectionStart = this.selectionStart - 1;\n }\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewEncapsulation,\n ViewChild\n} from '@angular/core';\nimport { McButton } from '@ptsecurity/mosaic/button';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\n\nimport { McDatepickerIntl } from './datepicker-intl';\nimport { McDatepicker } from './datepicker.component';\n\n\n/** Can be used to override the icon of a `mcDatepickerToggle`. */\n@Directive({\n selector: '[mcDatepickerToggleIcon]'\n})\nexport class McDatepickerToggleIcon {}\n\n\n@Component({\n selector: 'mc-datepicker-toggle',\n templateUrl: 'datepicker-toggle.html',\n styleUrls: ['datepicker-toggle.scss'],\n host: {\n class: 'mc-datepicker-toggle',\n '[class.mc-active]': 'datepicker && datepicker.opened'\n },\n exportAs: 'mcDatepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McDatepickerToggle<D> implements AfterContentInit, OnChanges, OnDestroy {\n /** Whether the toggle button is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined ? this.datepicker.disabled : this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n /** Datepicker instance that the button will toggle. */\n @Input('for') datepicker: McDatepicker<D>;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Custom icon set by the consumer. */\n @ContentChild(McDatepickerToggleIcon, { static: false }) customIcon: McDatepickerToggleIcon;\n\n /** Underlying button element. */\n @ViewChild('button', { static: false }) button: McButton;\n private stateChanges = Subscription.EMPTY;\n\n private _disabled: boolean;\n\n constructor(public intl: McDatepickerIntl, private changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.datepicker) {\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.datepicker && !this.disabled) {\n this.datepicker.open();\n event.stopPropagation();\n }\n }\n\n private watchStateChanges() {\n const datepickerDisabled = this.datepicker ? this.datepicker.disabledChange : observableOf<boolean>();\n\n const inputDisabled = this.datepicker && this.datepicker.datepickerInput ?\n this.datepicker.datepickerInput.disabledChange : observableOf<boolean>();\n\n const datepickerToggled = this.datepicker ?\n merge(this.datepicker.openedStream, this.datepicker.closedStream) :\n observableOf<boolean>();\n\n this.stateChanges.unsubscribe();\n\n this.stateChanges = merge(\n this.intl.changes,\n datepickerDisabled,\n inputDisabled,\n datepickerToggled\n ).subscribe(() => this.changeDetectorRef.markForCheck());\n }\n}\n","<!--todo need simplify this-->\n<button\n #button\n mc-button\n type=\"button\"\n class=\"mc-datepicker-toggle__button\"\n aria-haspopup=\"true\"\n [attr.aria-label]=\"intl.openCalendarLabel\"\n [tabIndex]=\"tabIndex\"\n [disabled]=\"disabled\"\n (click)=\"open($event)\">\n\n <i *ngIf=\"!customIcon\" mc-icon=\"mc-calendar_16\" class=\"mc-datepicker-toggle__default-icon\"></i>\n\n <ng-content select=\"[mcDatepickerToggleIcon]\"></ng-content>\n</button>\n","import {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata\n} from '@angular/animations';\n\n\n/**\n * Animations used by the mosaic datepicker.\n * @docs-private\n */\nexport const mcDatepickerAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n readonly fadeInCalendar: AnimationTriggerMetadata;\n} = {\n /** Transforms the height of the datepicker's calendar. */\n transformPanel: trigger('transformPanel', [\n state('void', style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })),\n transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({\n opacity: 1,\n transform: 'scale(1, 1)'\n }))),\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 // 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\n// todo should be put into polyfils\n// https://github.com/angular/angular/issues/24769\nif (!Element.prototype.matches) {\n Element.prototype.matches = (Element.prototype as any).msMatchesSelector;\n}\n","// tslint:disable:no-unbound-method\n// tslint:disable:no-magic-numbers\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter } from '@ptsecurity/mosaic/core';\nimport { McFormFieldControl } from '@ptsecurity/mosaic/form-field';\nimport { merge, Subject, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { McCalendarCellCssClasses } from './calendar-body.component';\nimport { McCalendar } from './calendar.component';\nimport { mcDatepickerAnimations } from './datepicker-animations';\nimport { createMissingDateImplError } from './datepicker-errors';\nimport { McDatepickerInput } from './datepicker-input.directive';\n\n\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const MC_DATEPICKER_SCROLL_STRATEGY =\n new InjectionToken<() => ScrollStrategy>('mc-datepicker-scroll-strategy');\n\n/** @docs-private */\n// tslint:disable-next-line:naming-convention\nexport function MC_DATEPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** @docs-private */\nexport const MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MC_DATEPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MC_DATEPICKER_SCROLL_STRATEGY_FACTORY\n};\n\n/**\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\n * McCalendar directly as the content so we can control the initial focus. This also gives us a\n * 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: 'mc-datepicker__content',\n exportAs: 'mcDatepickerContent',\n templateUrl: 'datepicker-content.html',\n styleUrls: ['datepicker-content.scss'],\n host: {\n class: 'mc-datepicker__content',\n\n '[@transformPanel]': 'animationState',\n '(@transformPanel.done)': 'animationDone.next()'\n },\n animations: [\n mcDatepickerAnimations.transformPanel,\n mcDatepickerAnimations.fadeInCalendar\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McDatepickerContent<D> implements OnDestroy {\n /** Emits when an animation has finished. */\n readonly animationDone = new Subject<void>();\n\n /** Reference to the datepicker that created the overlay. */\n datepicker: McDatepicker<D>;\n\n /** Current state of the animation. */\n animationState: 'enter' | 'void';\n\n /** Reference to the internal calendar component. */\n @ViewChild(McCalendar) calendar: McCalendar<D>;\n\n private subscriptions = new Subscription();\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n this.subscriptions.add(this.datepicker.stateChanges.subscribe(() => {\n this.changeDetectorRef.markForCheck();\n }));\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.animationDone.complete();\n }\n\n startExitAnimation() {\n this.animationState = 'void';\n this.changeDetectorRef.markForCheck();\n }\n}\n\n\n// TODO: We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"mcDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\n@Component({\n selector: 'mc-datepicker',\n template: '',\n exportAs: 'mcDatepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: McFormFieldControl, useExisting: McDatepicker }]\n})\nexport class McDatepicker<D> implements OnDestroy {\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n private _hasBackdrop: boolean = false;\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.datepickerInput?.value;\n }\n\n set startAt(value: D | null) {\n const deserializedValue = this.dateAdapter.deserialize(value);\n\n this._startAt = deserializedValue !== null ?\n this.dateAdapter.clampDate(deserializedValue, this.minDate, this.maxDate) : null;\n }\n\n private _startAt: D | null;\n\n /** Whether the datepicker pop-up should be disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this.datepickerInput ? this.datepickerInput.disabled : this._disabled;\n }\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\n private _disabled: boolean;\n\n /** Whether the calendar is open. */\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n\n set opened(value: boolean) {\n coerceBooleanProperty(value) ? this.open() : this.close();\n }\n\n private _opened = false;\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 get dateFilter(): (date: D | null) => boolean {\n return this.datepickerInput && this.datepickerInput.dateFilter;\n }\n\n get value(): D | null {\n return this.selected;\n }\n\n /** The minimum selectable date. */\n @Input() minDate: D | null;\n\n /** The maximum selectable date. */\n @Input() maxDate: D | null;\n\n /**\n * Emits selected year in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /**\n * Emits selected month in year view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\n\n /** Classes to be passed to the date picker panel. Supports the same syntax as `ngClass`. */\n @Input() panelClass: string | string[];\n\n /** Function that can be used to add custom CSS classes to dates. */\n @Input() dateClass: (date: D) => McCalendarCellCssClasses;\n\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Emits when the datepicker has been opened. */\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when the datepicker has been closed. */\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Emits when the datepicker is disabled. */\n readonly disabledChange = new Subject<boolean>();\n\n /** Emits new selected date when selected date changes. */\n readonly selectedChanged = new Subject<D>();\n\n /** The id for the datepicker calendar. */\n id: string = `mc-datepicker-${datepickerUid++}`;\n\n /** A reference to the overlay when the calendar is opened as a popup. */\n popupRef: OverlayRef | null;\n\n /** The input element this datepicker is associated with. */\n datepickerInput: McDatepickerInput<D>;\n\n private scrollStrategy: () => ScrollStrategy;\n\n private validSelected: D | null = null;\n\n /** A portal containing the calendar for this datepicker. */\n private calendarPortal: ComponentPortal<McDatepickerContent<D>>;\n\n /** Reference to the component instantiated in popup mode. */\n private popupComponentRef: ComponentRef<McDatepickerContent<D>> | null;\n\n /** The element that was focused before the datepicker was opened. */\n private focusedElementBeforeOpen: HTMLElement | null = null;\n\n /** Subscription to value changes in the associated input element. */\n private inputSubscription = Subscription.EMPTY;\n\n private closeSubscription = Subscription.EMPTY;\n\n constructor(\n private overlay: Overlay,\n private ngZone: NgZone,\n private viewContainerRef: ViewContainerRef,\n @Inject(MC_DATEPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private readonly dateAdapter: DateAdapter<D>,\n @Optional() private dir: Directionality,\n @Optional() @Inject(DOCUMENT) private document: any\n ) {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this.scrollStrategy = scrollStrategy;\n }\n\n ngOnDestroy() {\n this.close();\n this.inputSubscription.unsubscribe();\n this.closeSubscription.unsubscribe();\n this.disabledChange.complete();\n\n this.destroyOverlay();\n }\n\n /** Selects the given date */\n select(date: D): void {\n const oldValue = this.selected;\n this.selected = date;\n\n if (!this.dateAdapter.sameDate(oldValue, this.selected)) {\n this.selectedChanged.next(date);\n }\n }\n\n /** Emits the selected year in multiyear view */\n selectYear(normalizedYear: D): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Emits selected month in year view */\n selectMonth(normalizedMonth: D): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Register an input with this datepicker.\n * @param input The datepicker input to register with this datepicker.\n */\n registerInput(input: McDatepickerInput<D>): void {\n if (this.datepickerInput) {\n throw Error('A McDatepicker can only be associated with a single input.');\n }\n\n this.datepickerInput = input;\n this.inputSubscription = this.datepickerInput.valueChange\n .subscribe((value: D | null) => {\n this.selected = value;\n\n if (this.popupComponentRef) {\n this.popupComponentRef.instance.calendar.monthView?.init();\n this.popupComponentRef.instance.calendar.activeDate = value as D;\n }\n });\n }\n\n /** Open the calendar. */\n open(): void {\n if (this._opened || this.disabled) { return; }\n\n if (!this.datepickerInput) {\n throw Error('Attempted to open an McDatepicker with no associated input.');\n }\n\n if (this.document) {\n this.focusedElementBeforeOpen = this.document.activeElement;\n }\n\n this.openAsPopup();\n\n this._opened = true;\n this.openedStream.emit();\n }\n\n /** Close the calendar. */\n close(restoreFocus: boolean = true): void {\n if (!this._opened) { return; }\n\n if (this.popupComponentRef) {\n const instance = this.popupComponentRef.instance;\n\n instance.startExitAnimation();\n\n instance.animationDone\n .pipe(take(1))\n .subscribe(() => this.destroyOverlay());\n }\n\n if (restoreFocus) {\n this.focusedElementBeforeOpen!.focus();\n }\n\n this._opened = false;\n this.closedStream.emit();\n this.focusedElementBeforeOpen = null;\n }\n\n toggle(): void {\n if (this.datepickerInput.isReadOnly) { return; }\n\n this._opened ? this.close() : this.open();\n }\n\n /** Destroys the current overlay. */\n private destroyOverlay() {\n if (this.popupRef) {\n this.popupRef.dispose();\n this.popupRef = this.popupComponentRef = null;\n }\n }\n\n /** Open the calendar as a popup. */\n private openAsPopup(): void {\n if (!this.calendarPortal) {\n this.calendarPortal = new ComponentPortal<McDatepickerContent<D>>(\n McDatepickerContent, this.viewContainerRef\n );\n }\n\n if (!this.popupRef) {\n this.createPopup();\n }\n\n if (!this.popupRef!.hasAttached()) {\n this.popupComponentRef = this.popupRef!.attach(this.calendarPortal);\n this.popupComponentRef.instance.datepicker = this;\n\n // Update the position once the calendar has rendered.\n this.ngZone.onStable.asObservable()\n .pipe(take(1))\n .subscribe(() => this.popupRef?.updatePosition());\n }\n }\n\n /** Create the popup. */\n private createPopup(): void {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this.createPopupPositionStrategy(),\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass,\n direction: this.dir,\n scrollStrategy: this.scrollStrategy(),\n panelClass: 'mc-datepicker__popup'\n });\n\n this.popupRef = this.overlay.create(overlayConfig);\n\n this.closeSubscription = this.closingActions()\n .subscribe(() => this.close(this.restoreFocus()));\n }\n\n private restoreFocus(): boolean {\n return this.document.activeElement === this.document.body;\n }\n\n private closingActions() {\n return merge(\n this.popupRef!.backdropClick(),\n this.popupRef!.outsidePointerEvents(),\n this.popupRef!.detachments()\n );\n }\n\n /** Create the popup PositionStrategy. */\n private createPopupPositionStrategy(): PositionStrategy {\n return this.overlay.position()\n .flexibleConnectedTo(this.datepickerInput.elementRef)\n .withTransformOriginOn('.mc-datepicker__content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition()\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }\n ]);\n }\n}\n","<mc-calendar [id]=\"datepicker.id\"\n [@fadeInCalendar]=\"'enter'\"\n [ngClass]=\"datepicker.panelClass\"\n [dateClass]=\"datepicker.dateClass\"\n\n [startAt]=\"datepicker.startAt\"\n [minDate]=\"datepicker.minDate\"\n [maxDate]=\"datepicker.maxDate\"\n [dateFilter]=\"datepicker.dateFilter\"\n\n [selected]=\"datepicker.selected\"\n\n (selectedChange)=\"datepicker.select($event)\"\n (yearSelected)=\"datepicker.selectYear($event)\"\n (monthSelected)=\"datepicker.selectMonth($event)\"\n (userSelection)=\"datepicker.close()\">\n</mc-calendar>\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 { McButtonModule } from '@ptsecurity/mosaic/button';\nimport { McIconModule } from '@ptsecurity/mosaic/icon';\nimport { McSelectModule } from '@ptsecurity/mosaic/select';\n\nimport { McCalendarBody } from './calendar-body.component';\nimport { McCalendarHeader } from './calendar-header.component';\nimport { McCalendar } from './calendar.component';\nimport { McDatepickerInput } from './datepicker-input.directive';\nimport { McDatepickerIntl } from './datepicker-intl';\nimport { McDatepickerToggle, McDatepickerToggleIcon } from './datepicker-toggle.component';\nimport {\n McDatepicker,\n McDatepickerContent,\n MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\n} from './datepicker.component';\nimport { McMonthView } from './month-view.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n McButtonModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n McButtonModule,\n McSelectModule,\n McIconModule\n ],\n exports: [\n McCalendar,\n McCalendarBody,\n McDatepicker,\n McDatepickerContent,\n McDatepickerInput,\n McDatepickerToggle,\n McDatepickerToggleIcon,\n McMonthView,\n McCalendarHeader\n ],\n declarations: [\n McCalendar,\n McCalendarBody,\n McDatepicker,\n McDatepickerContent,\n McDatepickerInput,\n McDatepickerToggle,\n McDatepickerToggleIcon,\n McMonthView,\n McCalendarHeader\n ],\n providers: [\n McDatepickerIntl,\n MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\n ]\n})\nexport class McDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3.McCalendarBody","i3.McMonthView","i4.McCalendarHeader","observableOf","i1.McDatepickerIntl","i4","i2.McCalendar","i3","i5"],"mappings":"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"}
|