@ptsecurity/mosaic 12.0.2 → 12.2.2
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 +475 -101
- package/_visual.scss +131 -13
- package/bundles/ptsecurity-mosaic-autocomplete.umd.js +18 -20
- package/bundles/ptsecurity-mosaic-autocomplete.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-button-toggle.umd.js +15 -17
- package/bundles/ptsecurity-mosaic-button-toggle.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-button.umd.js +17 -19
- package/bundles/ptsecurity-mosaic-button.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-card.umd.js +11 -13
- package/bundles/ptsecurity-mosaic-card.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-checkbox.umd.js +14 -16
- package/bundles/ptsecurity-mosaic-checkbox.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-core.umd.js +259 -172
- package/bundles/ptsecurity-mosaic-core.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-datepicker.umd.js +47 -48
- package/bundles/ptsecurity-mosaic-datepicker.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-design-tokens.umd.js +231 -26
- package/bundles/ptsecurity-mosaic-design-tokens.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-divider.umd.js +11 -13
- package/bundles/ptsecurity-mosaic-divider.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-dropdown.umd.js +67 -59
- package/bundles/ptsecurity-mosaic-dropdown.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-form-field.umd.js +737 -738
- package/bundles/ptsecurity-mosaic-form-field.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-icon.umd.js +14 -16
- package/bundles/ptsecurity-mosaic-icon.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-input.umd.js +45 -33
- package/bundles/ptsecurity-mosaic-input.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-link.umd.js +11 -13
- package/bundles/ptsecurity-mosaic-link.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-list.umd.js +177 -89
- package/bundles/ptsecurity-mosaic-list.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-modal.umd.js +52 -44
- package/bundles/ptsecurity-mosaic-modal.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-navbar.umd.js +46 -43
- package/bundles/ptsecurity-mosaic-navbar.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-popover.umd.js +215 -34
- package/bundles/ptsecurity-mosaic-popover.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-progress-bar.umd.js +12 -14
- package/bundles/ptsecurity-mosaic-progress-bar.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-progress-spinner.umd.js +12 -14
- package/bundles/ptsecurity-mosaic-progress-spinner.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-radio.umd.js +14 -16
- package/bundles/ptsecurity-mosaic-radio.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-select.umd.js +22 -24
- package/bundles/ptsecurity-mosaic-select.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-sidebar.umd.js +17 -19
- package/bundles/ptsecurity-mosaic-sidebar.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-sidepanel.umd.js +62 -58
- package/bundles/ptsecurity-mosaic-sidepanel.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-splitter.umd.js +31 -21
- package/bundles/ptsecurity-mosaic-splitter.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-table.umd.js +11 -13
- package/bundles/ptsecurity-mosaic-table.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tabs.umd.js +150 -74
- package/bundles/ptsecurity-mosaic-tabs.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tags.umd.js +28 -29
- package/bundles/ptsecurity-mosaic-tags.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-textarea.umd.js +12 -14
- package/bundles/ptsecurity-mosaic-textarea.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-timepicker.umd.js +16 -17
- package/bundles/ptsecurity-mosaic-timepicker.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-toggle.umd.js +11 -13
- package/bundles/ptsecurity-mosaic-toggle.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tooltip.umd.js +72 -23
- package/bundles/ptsecurity-mosaic-tooltip.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tree-select.umd.js +24 -29
- package/bundles/ptsecurity-mosaic-tree-select.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic-tree.umd.js +1018 -261
- package/bundles/ptsecurity-mosaic-tree.umd.js.map +1 -1
- package/bundles/ptsecurity-mosaic.umd.js +2 -2
- package/core/option/action.d.ts +42 -0
- package/core/option/index.d.ts +1 -0
- package/core/option/option-module.d.ts +4 -3
- package/core/pop-up/pop-up-trigger.d.ts +9 -12
- package/design-tokens/style-dictionary/build.js +6 -0
- package/design-tokens/style-dictionary/configs/index.js +2 -1
- package/design-tokens/tokens/components/badge.json5 +177 -7
- package/design-tokens/tokens/components/list.json5 +0 -4
- package/design-tokens/tokens/components/tree.json5 +3 -3
- package/design-tokens/tokens/properties/globals.json5 +1 -1
- package/design-tokens/tokens/properties/typography.json5 +16 -0
- package/design-tokens/tokens.d.ts +115 -13
- package/dropdown/dropdown-item.component.d.ts +1 -0
- package/dropdown/dropdown-trigger.directive.d.ts +3 -8
- package/dropdown/dropdown.component.d.ts +1 -0
- package/esm2015/autocomplete/autocomplete-origin.directive.js +4 -4
- package/esm2015/autocomplete/autocomplete-trigger.directive.js +4 -4
- package/esm2015/autocomplete/autocomplete.component.js +4 -4
- package/esm2015/autocomplete/autocomplete.module.js +5 -5
- package/esm2015/button/button.component.js +10 -10
- package/esm2015/button/button.module.js +5 -5
- package/esm2015/button-toggle/button-toggle.component.js +7 -7
- package/esm2015/button-toggle/button-toggle.module.js +5 -5
- package/esm2015/card/card.component.js +4 -4
- package/esm2015/card/card.module.js +5 -5
- package/esm2015/checkbox/checkbox-module.js +5 -5
- package/esm2015/checkbox/checkbox-required-validator.js +4 -4
- package/esm2015/checkbox/checkbox.js +4 -4
- package/esm2015/core/common-behaviors/common-module.js +5 -5
- package/esm2015/core/error/error-options.js +7 -7
- package/esm2015/core/formatters/date/formatter.js +6 -5
- package/esm2015/core/formatters/index.js +5 -5
- package/esm2015/core/formatters/number/formatter.js +5 -5
- package/esm2015/core/forms/forms-module.js +5 -5
- package/esm2015/core/forms/forms.directive.js +7 -7
- package/esm2015/core/highlight/highlight.pipe.js +4 -4
- package/esm2015/core/highlight/index.js +5 -5
- package/esm2015/core/line/line.js +8 -8
- package/esm2015/core/option/action.js +131 -0
- package/esm2015/core/option/index.js +2 -1
- package/esm2015/core/option/optgroup.js +4 -4
- package/esm2015/core/option/option-module.js +8 -7
- package/esm2015/core/option/option.js +4 -4
- package/esm2015/core/pop-up/pop-up-trigger.js +32 -64
- package/esm2015/core/pop-up/pop-up.js +4 -4
- package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +4 -4
- package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.module.js +5 -5
- package/esm2015/core/services/measure-scrollbar.service.js +4 -4
- package/esm2015/datepicker/calendar-body.component.js +4 -4
- package/esm2015/datepicker/calendar.component.js +7 -7
- package/esm2015/datepicker/datepicker-input.directive.js +6 -5
- package/esm2015/datepicker/datepicker-intl.js +4 -4
- package/esm2015/datepicker/datepicker-module.js +5 -5
- package/esm2015/datepicker/datepicker-toggle.component.js +7 -7
- package/esm2015/datepicker/datepicker.component.js +7 -7
- package/esm2015/datepicker/month-view.component.js +4 -4
- package/esm2015/datepicker/multi-year-view.component.js +4 -4
- package/esm2015/datepicker/year-view.component.js +4 -4
- package/esm2015/design-tokens/tokens.js +116 -14
- package/esm2015/divider/divider.component.js +4 -4
- package/esm2015/divider/divider.module.js +5 -5
- package/esm2015/dropdown/dropdown-content.directive.js +4 -4
- package/esm2015/dropdown/dropdown-item.component.js +11 -4
- package/esm2015/dropdown/dropdown-trigger.directive.js +39 -39
- package/esm2015/dropdown/dropdown.component.js +9 -5
- package/esm2015/dropdown/dropdown.module.js +5 -5
- package/esm2015/form-field/cleaner.js +9 -5
- package/esm2015/form-field/form-field.js +7 -7
- package/esm2015/form-field/form-field.module.js +5 -5
- package/esm2015/form-field/hint.js +4 -4
- package/esm2015/form-field/prefix.js +4 -4
- package/esm2015/form-field/stepper.js +4 -4
- package/esm2015/form-field/suffix.js +4 -4
- package/esm2015/icon/icon.component.js +7 -7
- package/esm2015/icon/icon.module.js +5 -5
- package/esm2015/input/input-number-validators.js +28 -14
- package/esm2015/input/input-number.js +4 -4
- package/esm2015/input/input.js +7 -7
- package/esm2015/input/input.module.js +5 -5
- package/esm2015/link/link.component.js +4 -4
- package/esm2015/link/link.module.js +5 -5
- package/esm2015/list/list-selection.component.js +155 -66
- package/esm2015/list/list.component.js +7 -7
- package/esm2015/list/list.module.js +5 -5
- package/esm2015/modal/css-unit.pipe.js +4 -4
- package/esm2015/modal/modal-control.service.js +4 -4
- package/esm2015/modal/modal.component.js +6 -4
- package/esm2015/modal/modal.directive.js +13 -13
- package/esm2015/modal/modal.module.js +9 -7
- package/esm2015/modal/modal.service.js +16 -9
- package/esm2015/navbar/navbar-item.component.js +21 -21
- package/esm2015/navbar/navbar.component.js +7 -7
- package/esm2015/navbar/navbar.module.js +5 -5
- package/esm2015/navbar/vertical-navbar.component.js +14 -9
- package/esm2015/popover/popover-confirm.component.js +116 -0
- package/esm2015/popover/popover.component.js +63 -20
- package/esm2015/popover/popover.module.js +13 -10
- package/esm2015/popover/public-api.js +2 -1
- package/esm2015/progress-bar/progress-bar.component.js +4 -4
- package/esm2015/progress-bar/progress-bar.module.js +5 -5
- package/esm2015/progress-spinner/progress-spinner.component.js +4 -4
- package/esm2015/progress-spinner/progress-spinner.module.js +5 -5
- package/esm2015/radio/radio.component.js +7 -7
- package/esm2015/radio/radio.module.js +5 -5
- package/esm2015/select/select.component.js +14 -14
- package/esm2015/select/select.module.js +5 -5
- package/esm2015/sidebar/sidebar.component.js +10 -10
- package/esm2015/sidebar/sidebar.module.js +5 -5
- package/esm2015/sidepanel/sidepanel-container.component.js +14 -13
- package/esm2015/sidepanel/sidepanel-directives.js +22 -18
- package/esm2015/sidepanel/sidepanel.module.js +12 -8
- package/esm2015/sidepanel/sidepanel.service.js +6 -5
- package/esm2015/splitter/splitter.component.js +24 -13
- package/esm2015/splitter/splitter.module.js +5 -5
- package/esm2015/table/table.component.js +4 -4
- package/esm2015/table/table.module.js +5 -5
- package/esm2015/tabs/paginated-tab-header.js +5 -5
- package/esm2015/tabs/tab-body.component.js +7 -7
- package/esm2015/tabs/tab-content.directive.js +4 -4
- package/esm2015/tabs/tab-group.component.js +56 -26
- package/esm2015/tabs/tab-header.component.js +4 -4
- package/esm2015/tabs/tab-label-wrapper.directive.js +21 -6
- package/esm2015/tabs/tab-label.directive.js +4 -4
- package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +7 -7
- package/esm2015/tabs/tab.component.js +36 -13
- package/esm2015/tabs/tabs.module.js +5 -5
- package/esm2015/tags/tag-input.js +4 -4
- package/esm2015/tags/tag-list.component.js +4 -4
- package/esm2015/tags/tag.component.js +14 -13
- package/esm2015/tags/tag.module.js +5 -5
- package/esm2015/textarea/textarea.component.js +4 -4
- package/esm2015/textarea/textarea.module.js +5 -5
- package/esm2015/timepicker/timepicker.directive.js +9 -8
- package/esm2015/timepicker/timepicker.module.js +5 -5
- package/esm2015/toggle/toggle.component.js +4 -4
- package/esm2015/toggle/toggle.module.js +5 -5
- package/esm2015/tooltip/tooltip.component.js +55 -16
- package/esm2015/tooltip/tooltip.module.js +5 -5
- package/esm2015/tree/control/base-tree-control.js +60 -0
- package/esm2015/tree/control/flat-tree-control.js +123 -0
- package/esm2015/tree/control/nested-tree-control.js +41 -0
- package/esm2015/tree/control/tree-control.js +2 -0
- package/esm2015/tree/data-source/flat-data-source.js +1 -1
- package/esm2015/tree/node.js +31 -0
- package/esm2015/tree/outlet.js +15 -0
- package/esm2015/tree/padding.directive.js +90 -23
- package/esm2015/tree/public-api.js +9 -2
- package/esm2015/tree/toggle.js +46 -52
- package/esm2015/tree/tree-base.js +243 -0
- package/esm2015/tree/tree-errors.js +36 -0
- package/esm2015/tree/tree-option.component.js +75 -32
- package/esm2015/tree/tree-selection.component.js +122 -73
- package/esm2015/tree/tree.js +23 -0
- package/esm2015/tree/tree.module.js +24 -13
- package/esm2015/tree-select/tree-select.component.js +11 -12
- package/esm2015/tree-select/tree-select.module.js +5 -9
- package/fesm2015/ptsecurity-mosaic-autocomplete.js +13 -13
- package/fesm2015/ptsecurity-mosaic-autocomplete.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-button-toggle.js +10 -10
- package/fesm2015/ptsecurity-mosaic-button-toggle.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-button.js +13 -13
- package/fesm2015/ptsecurity-mosaic-button.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-card.js +7 -7
- package/fesm2015/ptsecurity-mosaic-card.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-checkbox.js +10 -10
- package/fesm2015/ptsecurity-mosaic-checkbox.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-core.js +231 -140
- package/fesm2015/ptsecurity-mosaic-core.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-datepicker.js +42 -41
- package/fesm2015/ptsecurity-mosaic-datepicker.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-design-tokens.js +116 -14
- package/fesm2015/ptsecurity-mosaic-design-tokens.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-divider.js +7 -7
- package/fesm2015/ptsecurity-mosaic-divider.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-dropdown.js +63 -52
- package/fesm2015/ptsecurity-mosaic-dropdown.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-form-field.js +30 -27
- package/fesm2015/ptsecurity-mosaic-form-field.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-icon.js +10 -10
- package/fesm2015/ptsecurity-mosaic-icon.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-input.js +40 -26
- package/fesm2015/ptsecurity-mosaic-input.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-link.js +7 -7
- package/fesm2015/ptsecurity-mosaic-link.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-list.js +164 -76
- package/fesm2015/ptsecurity-mosaic-list.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-modal.js +46 -35
- package/fesm2015/ptsecurity-mosaic-modal.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-navbar.js +43 -38
- package/fesm2015/ptsecurity-mosaic-navbar.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-popover.js +179 -30
- package/fesm2015/ptsecurity-mosaic-popover.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-progress-bar.js +7 -7
- package/fesm2015/ptsecurity-mosaic-progress-bar.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-progress-spinner.js +7 -7
- package/fesm2015/ptsecurity-mosaic-progress-spinner.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-radio.js +10 -10
- package/fesm2015/ptsecurity-mosaic-radio.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-select.js +17 -17
- package/fesm2015/ptsecurity-mosaic-select.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-sidebar.js +13 -13
- package/fesm2015/ptsecurity-mosaic-sidebar.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-sidepanel.js +50 -41
- package/fesm2015/ptsecurity-mosaic-sidepanel.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-splitter.js +27 -16
- package/fesm2015/ptsecurity-mosaic-splitter.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-table.js +7 -7
- package/fesm2015/ptsecurity-mosaic-table.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tabs.js +240 -174
- package/fesm2015/ptsecurity-mosaic-tabs.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tags.js +23 -22
- package/fesm2015/ptsecurity-mosaic-tags.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-textarea.js +7 -7
- package/fesm2015/ptsecurity-mosaic-textarea.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-timepicker.js +12 -11
- package/fesm2015/ptsecurity-mosaic-timepicker.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-toggle.js +7 -7
- package/fesm2015/ptsecurity-mosaic-toggle.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tooltip.js +57 -18
- package/fesm2015/ptsecurity-mosaic-tooltip.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tree-select.js +14 -18
- package/fesm2015/ptsecurity-mosaic-tree-select.js.map +1 -1
- package/fesm2015/ptsecurity-mosaic-tree.js +874 -190
- package/fesm2015/ptsecurity-mosaic-tree.js.map +1 -1
- package/form-field/cleaner.d.ts +2 -0
- package/input/input-number-validators.d.ts +2 -2
- package/list/list-selection.component.d.ts +28 -6
- package/modal/modal.component.d.ts +2 -0
- package/modal/modal.module.d.ts +1 -1
- package/package.json +5 -5
- package/popover/popover-confirm.component.d.ts +33 -0
- package/popover/popover.component.d.ts +14 -4
- package/popover/popover.module.d.ts +6 -3
- package/popover/public-api.d.ts +1 -0
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/default-theme.css +1 -1
- package/prebuilt-visual/default-visual.css +1 -1
- package/select/select.component.d.ts +2 -7
- package/sidepanel/sidepanel-directives.d.ts +2 -0
- package/sidepanel/sidepanel.module.d.ts +2 -1
- package/splitter/splitter.component.d.ts +6 -3
- package/tabs/tab-group.component.d.ts +11 -4
- package/tabs/tab-label-wrapper.directive.d.ts +7 -1
- package/tabs/tab.component.d.ts +10 -4
- package/tooltip/tooltip.component.d.ts +12 -3
- package/tree/control/base-tree-control.d.ts +40 -0
- package/tree/control/flat-tree-control.d.ts +48 -0
- package/tree/control/nested-tree-control.d.ts +19 -0
- package/tree/control/tree-control.d.ts +44 -0
- package/tree/data-source/flat-data-source.d.ts +2 -1
- package/tree/node.d.ts +34 -0
- package/tree/outlet.d.ts +9 -0
- package/tree/padding.directive.d.ts +35 -7
- package/tree/public-api.d.ts +8 -1
- package/tree/toggle.d.ts +17 -17
- package/tree/tree-base.d.ts +97 -0
- package/tree/tree-errors.d.ts +25 -0
- package/tree/tree-option.component.d.ts +13 -5
- package/tree/tree-selection.component.d.ts +32 -13
- package/tree/tree.d.ts +6 -0
- package/tree/tree.module.d.ts +10 -8
- package/tree-select/tree-select.component.d.ts +2 -7
- package/tree-select/tree-select.module.d.ts +5 -6
- package/esm2015/tree/node.directive.js +0 -19
- package/tree/node.directive.d.ts +0 -7
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ptsecurity-mosaic-datepicker.umd.js","sources":["../../../packages/mosaic/datepicker/calendar-body.component.ts","../../../packages/mosaic/datepicker/calendar-body.html","../../../packages/mosaic/datepicker/datepicker-errors.ts","../../../packages/mosaic/datepicker/month-view.component.ts","../../../packages/mosaic/datepicker/month-view.html","../../../packages/mosaic/datepicker/multi-year-view.component.ts","../../../packages/mosaic/datepicker/multi-year-view.html","../../../packages/mosaic/datepicker/year-view.component.ts","../../../packages/mosaic/datepicker/year-view.html","../../../packages/mosaic/datepicker/datepicker-intl.ts","../../../packages/mosaic/datepicker/calendar.component.ts","../../../packages/mosaic/datepicker/calendar-header.html","../../../packages/mosaic/datepicker/calendar.html","../../../node_modules/tslib/tslib.es6.js","../../../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 ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n NgZone,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\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 ariaLabel: 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 role: 'grid',\n 'aria-readonly': 'true'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendarBody implements OnChanges {\n /** The label for the table. (e.g. \"Jan 2017\"). */\n @Input() label: string;\n\n /** The cells to display in the table. */\n @Input() rows: 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 constructor(private readonly elementRef: ElementRef<HTMLElement>, private readonly ngZone: NgZone) {}\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 /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const activeCell: HTMLElement | null =\n this.elementRef.nativeElement.querySelector('.mc-calendar__body_active');\n\n if (activeCell) {\n activeCell.focus();\n }\n });\n });\n }\n}\n","<!--\n If there's not enough space in the first row, create a separate label row. We mark this row as\n aria-hidden because we don't want it to be read out as one of the weeks in the month.\n-->\n<tr *ngIf=\"firstRowOffset < labelMinRequiredCells\">\n <td class=\"mc-calendar__body-label\" [attr.colspan]=\"numCols\">\n {{ label }}\n </td>\n</tr>\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 {{ firstRowOffset >= labelMinRequiredCells ? label : '' }}\n </td>\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","/** @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 { Directionality } from '@angular/cdk/bidi';\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/cdk/datetime';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE\n} from '@ptsecurity/cdk/keycodes';\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 oldActiveDate = this._activeDate;\n const validDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (!this.hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this.init();\n }\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.selectedDate = this.getDateInCurrentMonth(this._selected);\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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 /** The label for this month (e.g. \"January 2017\"). */\n monthLabel: string;\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 private _activeDate: D;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n @Optional() public dateAdapter: DateAdapter<D>,\n @Optional() private dir?: Directionality\n ) {\n\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n const firstDayOfWeek = this.dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this.dateAdapter.getDayOfWeekNames('short');\n const longWeekdays = this.dateAdapter.getDayOfWeekNames('long');\n\n // Rotate the labels for days of the week based on the configured first day of the week.\n const weekdays = longWeekdays.map((long, i) => {\n return { long, narrow: narrowWeekdays[i] };\n });\n this.weekdays = weekdays\n .slice(firstDayOfWeek)\n .concat(weekdays.slice(0, firstDayOfWeek));\n\n this._activeDate = this.dateAdapter.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.dateAdapter.getYear(this.activeDate);\n const selectedMonth = this.dateAdapter.getMonth(this.activeDate);\n const selectedDate = this.dateAdapter.createDate(selectedYear, selectedMonth, date);\n\n this.selectedChange.emit(selectedDate);\n }\n\n this.userSelection.emit();\n }\n\n /** Handles keydown events on the calendar body when calendar is in month view. */\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this.isRtl();\n\n // tslint:disable-next-line:deprecation\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this.activeDate = this.dateAdapter.addCalendarDays(\n this._activeDate,\n 1 - this.dateAdapter.getDate(this._activeDate)\n );\n break;\n case END:\n this.activeDate = this.dateAdapter.addCalendarDays(\n this._activeDate,\n (this.dateAdapter.getNumDaysInMonth(this._activeDate) - this.dateAdapter.getDate(this._activeDate))\n );\n break;\n case PAGE_UP:\n this.activeDate = event.altKey ?\n this.dateAdapter.addCalendarYears(this._activeDate, -1) :\n this.dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this.activeDate = event.altKey ?\n this.dateAdapter.addCalendarYears(this._activeDate, 1) :\n this.dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n if (!this.dateFilter || this.dateFilter(this._activeDate)) {\n this.dateSelected(this.dateAdapter.getDate(this._activeDate));\n this.userSelection.emit();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this.focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this month view. */\n init() {\n this.selectedDate = this.getDateInCurrentMonth(this.selected);\n this.todayDate = this.getDateInCurrentMonth(this.dateAdapter.today());\n this.monthLabel = this.dateAdapter.getMonthNames('short')[this.dateAdapter.getMonth(this.activeDate)];\n\n this.monthLabel = this.monthLabel[0].toLocaleUpperCase() + this.monthLabel.substr(1);\n\n const firstOfMonth = this.dateAdapter.createDate(\n this.dateAdapter.getYear(this.activeDate),\n this.dateAdapter.getMonth(this.activeDate)\n );\n\n this.firstWeekOffset =\n (DAYS_PER_WEEK + this.dateAdapter.getDayOfWeek(firstOfMonth) -\n this.dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n\n this.createWeekCells();\n this.changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.mcCalendarBody.focusActiveCell();\n }\n\n /** Creates McCalendarCells for the dates in this month. */\n private createWeekCells() {\n const daysInMonth = this.dateAdapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this.dateAdapter.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.dateAdapter.createDate(\n this.dateAdapter.getYear(this.activeDate),\n this.dateAdapter.getMonth(this.activeDate),\n i + 1\n );\n const enabled = this.shouldEnableDate(date);\n const ariaLabel = this.dateAdapter.format(date, this.dateFormats.dateA11yLabel);\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], ariaLabel, 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.dateAdapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateAdapter.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) ?\n this.dateAdapter.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.dateAdapter.getMonth(d1) === this.dateAdapter.getMonth(d2) &&\n this.dateAdapter.getYear(d1) === this.dateAdapter.getYear(d2));\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private isRtl() {\n return this.dir && this.dir.value === 'rtl';\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 [label]=\"monthLabel\"\n [rows]=\"weeks\"\n [todayValue]=\"todayDate\"\n [selectedValue]=\"selectedDate\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"dateAdapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"dateSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n","// tslint:disable:no-magic-numbers\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE\n} from '@ptsecurity/cdk/keycodes';\n\nimport { McCalendarBody, McCalendarCell } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\n\n\nexport const yearsPerPage = 24;\n\nexport const yearsPerRow = 4;\n\n\n/**\n * An internal component used to display a year selector in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-multi-year-view',\n exportAs: 'mcMultiYearView',\n templateUrl: 'multi-year-view.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McMultiYearView<D> implements AfterContentInit {\n /** The date to display in this multi-year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D {\n return this._activeDate;\n }\n\n set activeDate(value: D) {\n const oldActiveDate = this._activeDate;\n const validDate =\n this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (Math.floor(this.dateAdapter.getYear(oldActiveDate) / yearsPerPage) !==\n Math.floor(this.dateAdapter.getYear(this._activeDate) / yearsPerPage)) {\n this.init();\n }\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.selectedYear = this._selected && this.dateAdapter.getYear(this._selected);\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Emits when a new year is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected year. This doesn't imply a change on the selected date */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\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 currently displayed years. */\n years: McCalendarCell[][];\n\n /** The year that today falls on. */\n todayYear: number;\n\n /** The year of the selected date. Null if the selected date is null. */\n selectedYear: number | null;\n private _activeDate: D;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n\n constructor(\n private readonly changeDetectorRef: ChangeDetectorRef,\n @Optional() public dateAdapter: DateAdapter<D>,\n @Optional() private dir?: Directionality\n ) {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this._activeDate = this.dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this.init();\n }\n\n /** Initializes this multi-year view. */\n init() {\n this.todayYear = this.dateAdapter.getYear(this.dateAdapter.today());\n const activeYear = this.dateAdapter.getYear(this._activeDate);\n const activeOffset = activeYear % yearsPerPage;\n this.years = [];\n for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n row.push(activeYear - activeOffset + i);\n if (row.length === yearsPerRow) {\n this.years.push(row.map((year) => this.createCellForYear(year)));\n row = [];\n }\n }\n this.changeDetectorRef.markForCheck();\n }\n\n /** Handles when a new year is selected. */\n onYearSelected(year: number) {\n this.yearSelected.emit(this.dateAdapter.createDate(year));\n const month = this.dateAdapter.getMonth(this.activeDate);\n const daysInMonth =\n this.dateAdapter.getNumDaysInMonth(this.dateAdapter.createDate(year, month));\n this.selectedChange.emit(\n this.dateAdapter.createDate(year, month, Math.min(this.dateAdapter.getDate(this.activeDate), daysInMonth))\n );\n }\n\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this.isRtl();\n\n // tslint:disable-next-line:deprecation\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this.activeDate = this.dateAdapter.addCalendarYears(\n this._activeDate,\n -this.dateAdapter.getYear(this._activeDate) % yearsPerPage\n );\n break;\n case END:\n this.activeDate = this.dateAdapter.addCalendarYears(\n this._activeDate,\n yearsPerPage - this.dateAdapter.getYear(this._activeDate) % yearsPerPage - 1\n );\n break;\n case PAGE_UP:\n this.activeDate =\n this.dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this.dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n this.onYearSelected(this.dateAdapter.getYear(this._activeDate));\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this.focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n getActiveCell(): number {\n return this.dateAdapter.getYear(this.activeDate) % yearsPerPage;\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.mcCalendarBody.focusActiveCell();\n }\n\n /** Creates an McCalendarCell for the given year. */\n private createCellForYear(year: number) {\n const yearName = this.dateAdapter.getYearName(this.dateAdapter.createDate(year));\n\n return new McCalendarCell(year, yearName, yearName, this.shouldEnableYear(year));\n }\n\n /** Whether the given year is enabled. */\n private shouldEnableYear(year: number) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined || year === null ||\n (this.maxDate && year > this.dateAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this.dateAdapter.getYear(this.minDate))) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this.dateAdapter.createDate(year);\n\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this.dateAdapter.getYear(date) === year;\n date = this.dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private isRtl() {\n return this.dir && this.dir.value === 'rtl';\n }\n}\n","<table class=\"mc-calendar__table\">\n <thead class=\"mc-calendar__table-header\">\n <tr>\n <th class=\"mc-calendar__table-header-divider\" colspan=\"4\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [rows]=\"years\"\n [todayValue]=\"todayYear\"\n [selectedValue]=\"selectedYear\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"getActiveCell()\"\n (selectedValueChange)=\"onYearSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n","import { Directionality } from '@angular/cdk/bidi';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE\n} from '@ptsecurity/cdk/keycodes';\n\nimport { McCalendarBody, McCalendarCell } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\n\n\n/**\n * An internal component used to display a single year in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-year-view',\n exportAs: 'mcYearView',\n templateUrl: 'year-view.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McYearView<D> implements AfterContentInit {\n /** The date to display in this year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D {\n return this._activeDate;\n }\n\n set activeDate(value: D) {\n const oldActiveDate = this._activeDate;\n const validDate =\n this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (this.dateAdapter.getYear(oldActiveDate) !== this.dateAdapter.getYear(this._activeDate)) {\n this.init();\n }\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.selectedMonth = this.getMonthInCurrentYear(this._selected);\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Emits when a new month is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected month. This doesn't imply a change on the selected date */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\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 months of the year. */\n months: McCalendarCell[][];\n\n /** The label for this year (e.g. \"2017\"). */\n yearLabel: string;\n\n /** The month in this year that today falls on. Null if today is in a different year. */\n todayMonth: number | null;\n\n /**\n * The month in this year that the selected Date falls on.\n * Null if the selected Date is in a different year.\n */\n selectedMonth: number | null;\n private _activeDate: D;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n @Optional() public dateAdapter: DateAdapter<D>,\n @Optional() private dir?: Directionality\n ) {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n this._activeDate = this.dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this.init();\n }\n\n /** Handles when a new month is selected. */\n onMonthSelected(month: number) {\n const year = this.dateAdapter.getYear(this.activeDate);\n\n const normalizedDate = this.dateAdapter.createDate(year, month);\n\n this.monthSelected.emit(normalizedDate);\n\n const daysInMonth = this.dateAdapter.getNumDaysInMonth(normalizedDate);\n\n this.selectedChange.emit(\n this.dateAdapter.createDate(\n year,\n month,\n Math.min(this.dateAdapter.getDate(this.activeDate), daysInMonth)\n )\n );\n }\n\n /** Handles keydown events on the calendar body when calendar is in year view. */\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this.isRtl();\n\n const VERTICAL_SHIFT = 4;\n const PAGE_SHIFT = 10;\n const MAX_MONTH_INDEX = 11;\n\n // tslint:disable-next-line:deprecation\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, -VERTICAL_SHIFT);\n break;\n case DOWN_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, VERTICAL_SHIFT);\n break;\n case HOME:\n this.activeDate = this.dateAdapter.addCalendarMonths(\n this._activeDate,\n -this.dateAdapter.getMonth(this._activeDate)\n );\n break;\n case END:\n this.activeDate = this.dateAdapter.addCalendarMonths(\n this._activeDate,\n MAX_MONTH_INDEX - this.dateAdapter.getMonth(this._activeDate)\n );\n break;\n case PAGE_UP:\n this.activeDate =\n this.dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -PAGE_SHIFT : -1);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this.dateAdapter.addCalendarYears(this._activeDate, event.altKey ? PAGE_SHIFT : 1);\n break;\n case ENTER:\n case SPACE:\n this.onMonthSelected(this.dateAdapter.getMonth(this._activeDate));\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this.focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this year view. */\n init() {\n this.selectedMonth = this.getMonthInCurrentYear(this.selected);\n this.todayMonth = this.getMonthInCurrentYear(this.dateAdapter.today());\n this.yearLabel = this.dateAdapter.getYearName(this.activeDate);\n\n const monthNames = this.dateAdapter.getMonthNames('short');\n\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n // tslint:disable-next-line:no-magic-numbers\n this.months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]\n .map((row) => row.map((month) => this.createCellForMonth(month, monthNames[month])));\n\n this.changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.mcCalendarBody.focusActiveCell();\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private getMonthInCurrentYear(date: D | null) {\n return date && this.dateAdapter.getYear(date) === this.dateAdapter.getYear(this.activeDate) ?\n this.dateAdapter.getMonth(date) : null;\n }\n\n /** Creates an McCalendarCell for the given month. */\n private createCellForMonth(month: number, monthName: string) {\n const ariaLabel = this.dateAdapter.format(\n this.dateAdapter.createDate(this.dateAdapter.getYear(this.activeDate), month),\n this.dateFormats.monthYearA11yLabel\n );\n\n const newMonthName = monthName[0].toLocaleUpperCase() + monthName.substr(1);\n\n return new McCalendarCell(\n month, newMonthName, ariaLabel, this.shouldEnableMonth(month));\n }\n\n /** Whether the given month is enabled. */\n private shouldEnableMonth(month: number) {\n\n const activeYear = this.dateAdapter.getYear(this.activeDate);\n\n if (month === undefined || month === null ||\n this.isYearAndMonthAfterMaxDate(activeYear, month) ||\n this.isYearAndMonthBeforeMinDate(activeYear, month)) {\n return false;\n }\n\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfMonth = this.dateAdapter.createDate(activeYear, month);\n\n // If any date in the month is enabled count the month as enabled.\n for (let date = firstOfMonth; this.dateAdapter.getMonth(date) === month;\n date = this.dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is after this.maxDate, considering\n * just the month and year of this.maxDate\n */\n private isYearAndMonthAfterMaxDate(year: number, month: number) {\n if (this.maxDate) {\n const maxYear = this.dateAdapter.getYear(this.maxDate);\n const maxMonth = this.dateAdapter.getMonth(this.maxDate);\n\n return year > maxYear || (year === maxYear && month > maxMonth);\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is before this.minDate, considering\n * just the month and year of this.minDate\n */\n private isYearAndMonthBeforeMinDate(year: number, month: number) {\n if (this.minDate) {\n const minYear = this.dateAdapter.getYear(this.minDate);\n const minMonth = this.dateAdapter.getMonth(this.minDate);\n\n return year < minYear || (year === minYear && month < minMonth);\n }\n\n return false;\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private isRtl() {\n return this.dir && this.dir.value === 'rtl';\n }\n}\n","<table class=\"mc-calendar__table\">\n <thead class=\"mc-calendar__table-header\">\n <tr>\n <th class=\"mc-calendar__table-header-divider\" colspan=\"4\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [label]=\"yearLabel\"\n [rows]=\"months\"\n [todayValue]=\"todayMonth\"\n [selectedValue]=\"selectedMonth\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"dateAdapter.getMonth(activeDate)\"\n (selectedValueChange)=\"onMonthSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($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 { ComponentPortal, ComponentType, Portal } from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\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/cdk/datetime';\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';\nimport { McMultiYearView, yearsPerPage } from './multi-year-view.component';\nimport { McYearView } from './year-view.component';\n\n\n/**\n * Possible views for the calendar.\n * @docs-private\n */\nexport enum McCalendarView {\n Month = 'month',\n Year = 'year',\n MultiYear = 'multi-year'\n}\n\n/** Default header for McCalendar */\n@Component({\n selector: 'mc-calendar-header',\n templateUrl: 'calendar-header.html',\n exportAs: 'mcCalendarHeader',\n host: {\n class: 'mc-calendar-header'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendarHeader<D> {\n constructor(\n private readonly intl: McDatepickerIntl,\n @Inject(forwardRef(() => McCalendar)) public calendar: McCalendar<D>,\n @Optional() private readonly dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n changeDetectorRef: ChangeDetectorRef\n ) {\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n /** The label for the current calendar view. */\n get periodButtonText(): string {\n if (this.calendar.currentView === McCalendarView.Month) {\n const label = this.dateAdapter.format(this.calendar.activeDate, this.dateFormats.monthYearLabel);\n\n return (label[0].toLocaleUpperCase() + label.substr(1)).replace('.', '');\n }\n\n if (this.calendar.currentView === McCalendarView.Year) {\n return this.dateAdapter.getYearName(this.calendar.activeDate);\n }\n\n const activeYear = this.dateAdapter.getYear(this.calendar.activeDate);\n const firstYearInView = this.dateAdapter.getYearName(\n // tslint:disable-next-line:no-magic-numbers\n this.dateAdapter.createDate(activeYear - activeYear % 24)\n );\n const lastYearInView = this.dateAdapter.getYearName(\n // tslint:disable-next-line:no-magic-numbers\n this.dateAdapter.createDate(activeYear + yearsPerPage - 1 - activeYear % 24)\n );\n\n return `${firstYearInView} \\u2013 ${lastYearInView}`;\n }\n\n get periodButtonLabel(): string {\n return this.calendar.currentView === McCalendarView.Month ?\n this.intl.switchToMultiYearViewLabel : this.intl.switchToMonthViewLabel;\n }\n\n /** The label for the previous button. */\n get prevButtonLabel(): string {\n return {\n [McCalendarView.Month]: this.intl.prevMonthLabel,\n [McCalendarView.Year]: this.intl.prevYearLabel,\n [McCalendarView.MultiYear]: this.intl.prevMultiYearLabel\n }[this.calendar.currentView];\n }\n\n /** The label for the next button. */\n get nextButtonLabel(): string {\n return {\n [McCalendarView.Month]: this.intl.nextMonthLabel,\n [McCalendarView.Year]: this.intl.nextYearLabel,\n [McCalendarView.MultiYear]: this.intl.nextMultiYearLabel\n }[this.calendar.currentView];\n }\n\n /** Handles user clicks on the period label. */\n currentPeriodClicked(): void {\n if (([McCalendarView.Month, McCalendarView.MultiYear] as McCalendarView[]).includes(this.calendar.currentView)) {\n this.calendar.currentView = McCalendarView.Year;\n } else if (this.calendar.currentView === McCalendarView.Year) {\n this.calendar.currentView = McCalendarView.Month;\n }\n }\n\n /** Handles user clicks on the previous button. */\n previousClicked(): void {\n if (this.calendar.currentView === McCalendarView.Month) {\n this.calendar.activeDate = this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1);\n } else {\n this.calendar.activeDate = this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView === McCalendarView.Year ? -1 : -yearsPerPage\n );\n }\n }\n\n /** Handles user clicks on the next button. */\n nextClicked(): void {\n if (this.calendar.currentView === McCalendarView.Month) {\n this.calendar.activeDate = this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1);\n } else {\n this.calendar.activeDate = this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView === McCalendarView.Year ? 1 : yearsPerPage\n );\n }\n }\n\n /** Whether the previous period button is enabled. */\n previousEnabled(): boolean {\n if (!this.calendar.minDate) { return true; }\n\n return !this.calendar.minDate || !this.isSameView(this.calendar.activeDate, this.calendar.minDate);\n }\n\n /** Whether the next period button is enabled. */\n nextEnabled(): boolean {\n return !this.calendar.maxDate || !this.isSameView(this.calendar.activeDate, this.calendar.maxDate);\n }\n\n /** Whether the two dates represent the same view in the current view mode (month or year). */\n private isSameView(firstDate: D, secondDate: D): boolean {\n const firstYear = this.dateAdapter.getYear(firstDate);\n const secondYear = this.dateAdapter.getYear(secondDate);\n\n const firstMonth = this.dateAdapter.getMonth(firstDate);\n const secondMonth = this.dateAdapter.getMonth(secondDate);\n\n if (this.calendar.currentView === McCalendarView.Month) {\n return firstYear === secondYear && firstMonth === secondMonth;\n }\n\n if (this.calendar.currentView === McCalendarView.Year) { return firstYear === secondYear; }\n\n // Otherwise we are in 'multi-year' view.\n return Math.floor(firstYear / yearsPerPage) === Math.floor(secondYear / yearsPerPage);\n }\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, AfterViewChecked, 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 this._startAt = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n get activeDate(): D {\n return this.clampedActiveDate;\n }\n\n set activeDate(value: D) {\n this.clampedActiveDate = this.dateAdapter.clampDate(value, this.minDate, this.maxDate);\n this.stateChanges.next();\n }\n\n /** Whether the calendar is in month view. */\n get currentView(): McCalendarView {\n return this._currentView;\n }\n\n set currentView(value: McCalendarView) {\n this._currentView = value;\n this.moveFocusOnNextTick = true;\n }\n\n /** An input indicating the type of the header component, if set. */\n @Input() headerComponent: ComponentType<any>;\n\n /** A portal containing the header component type for this calendar. */\n calendarHeaderPortal: Portal<any>;\n\n /** Whether the calendar should be started in month or year view. */\n @Input() startView: McCalendarView = McCalendarView.Month;\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 /** Reference to the current year view component. */\n @ViewChild(McYearView, {static: false}) yearView: McYearView<D>;\n\n /** Reference to the current multi-year view component. */\n @ViewChild(McMultiYearView, {static: false}) multiYearView: McMultiYearView<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 /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private moveFocusOnNextTick = false;\n private _startAt: D | null;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n private clampedActiveDate: D;\n private _currentView: McCalendarView;\n\n constructor(\n intl: McDatepickerIntl,\n @Optional() private readonly dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n if (!this.dateAdapter) {\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.calendarHeaderPortal = new ComponentPortal(this.headerComponent || McCalendarHeader);\n this.activeDate = this.startAt || this.dateAdapter.today();\n\n // Assign to the private property since we don't want to move focus on init.\n this._currentView = this.startView;\n }\n\n ngAfterViewChecked() {\n if (this.moveFocusOnNextTick) {\n this.moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\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 const view = this.getCurrentViewComponent();\n\n if (view) {\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 view.init();\n }\n }\n\n this.stateChanges.next();\n }\n\n focusActiveCell() {\n this.getCurrentViewComponent().focusActiveCell();\n }\n\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n const view = this.currentView === McCalendarView.Month ? this.monthView :\n (this.currentView === McCalendarView.Year ? this.yearView : this.multiYearView);\n\n view.ngAfterContentInit();\n }\n\n /** Handles date selection in the month view. */\n dateSelected(date: D): void {\n if (!this.dateAdapter.sameDate(date, this.selected)) {\n this.selectedChange.emit(date);\n }\n }\n\n /** Handles year selection in the multiyear view. */\n yearSelectedInMultiYearView(normalizedYear: D) {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Handles month selection in the year view. */\n monthSelectedInYearView(normalizedMonth: D) {\n this.monthSelected.emit(normalizedMonth);\n }\n\n userSelected(): void {\n this.userSelection.emit();\n }\n\n /** Handles year/month selection in the multi-year/year views. */\n goToDateInView(date: D, view: McCalendarView | string): void {\n this.activeDate = date;\n this.currentView = view as McCalendarView;\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Returns the component instance that corresponds to the current calendar view. */\n private getCurrentViewComponent() {\n return this.monthView || this.yearView || this.multiYearView;\n }\n}\n","<button mc-button\n [tabindex]=\"'-1'\"\n class=\"mc-button_transparent mc-calendar__period-button\"\n (click)=\"currentPeriodClicked()\">\n {{ periodButtonText }}\n\n <i class=\"mc mc-icon\"\n [class.mc-angle-up-M_16]=\"calendar.currentView !== 'month'\"\n [class.mc-angle-down-M_16]=\"calendar.currentView === 'month'\">\n </i>\n</button>\n\n<div class=\"mc-calendar-spacer\"></div>\n\n<button mc-button\n [tabindex]=\"'-1'\"\n class=\"mc-button_transparent mc-calendar__previous-button\"\n [disabled]=\"!previousEnabled()\"\n (click)=\"previousClicked()\">\n\n <i mc-icon=\"mc-angle-left-L_16\"></i>\n</button>\n\n<button mc-button\n [tabindex]=\"'-1'\"\n class=\"mc-button_transparent mc-calendar__next-button\"\n [disabled]=\"!nextEnabled()\"\n (click)=\"nextClicked()\">\n\n <i mc-icon=\"mc-angle-right-L_16\"></i>\n</button>\n","<ng-template [cdkPortalOutlet]=\"calendarHeaderPortal\"></ng-template>\n\n<div class=\"mc-calendar__content\" [ngSwitch]=\"currentView\">\n <mc-month-view\n *ngSwitchCase=\"'month'\"\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\n <mc-year-view\n *ngSwitchCase=\"'year'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"monthSelectedInYearView($event)\"\n (selectedChange)=\"goToDateInView($event, 'multi-year')\">\n </mc-year-view>\n\n <mc-multi-year-view\n *ngSwitchCase=\"'multi-year'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (yearSelected)=\"yearSelectedInMultiYearView($event)\"\n (selectedChange)=\"goToDateInView($event, 'month')\">\n </mc-multi-year-view>\n</div>\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","// @ts-nocheck\n\n// tslint:disable:no-empty\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 { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\nimport {\n BACKSPACE,\n DELETE,\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 hasModifierKey,\n isHorizontalMovement,\n isLetterKey,\n isVerticalMovement\n} from '@ptsecurity/cdk/keycodes';\nimport { validationTooltipHideDelay, validationTooltipShowDelay } 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;\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\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 MAX_YEAR; }\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\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 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 this.value = selected;\n this.cvaOnChange(selected);\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.dateAdapter.deserialize(value);\n\n this.lastValueValid = !newValue || this.dateAdapter.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.dateAdapter.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.getValidDateOrNull(this.dateAdapter.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.getValidDateOrNull(this.dateAdapter.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 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;\n private secondDigit: DateDigit;\n private thirdDigit: DateDigit;\n\n private separatorPositions: number[];\n\n constructor(\n public elementRef: ElementRef<HTMLInputElement>,\n private readonly renderer: Renderer2,\n @Optional() private readonly dateAdapter: 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.dateAdapter) {\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 = dateAdapter.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 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 // tslint:disable-next-line: deprecation\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 }\n this.control.updateValueAndValidity({ emitEvent: false });\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 = () => {\n if (!this.viewValue) { return null; }\n\n const date = 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, 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.getValidDateOrNull(this.dateAdapter.createDateTime(\n date.year, date.month - 1, date.date, date.hours, date.minutes, date.seconds, date.milliseconds\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\n onPaste($event) {\n $event.preventDefault();\n\n const rawValue = $event.clipboardData.getData('text');\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.dateAdapter.toIso8601(value);\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 this.separator = format.match(/[aA-zZ]+(?<separator>\\W|\\D)[aA-zZ]+/)!.groups.separator;\n this.separatorPositions = format\n .split('')\n .reduce((acc, 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.dateAdapter.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 // tslint:disable-next-line: deprecation\n return (event.altKey && event.keyCode === UP_ARROW) || event.keyCode === ESCAPE;\n }\n\n private isKeyForOpen(event: KeyboardEvent): boolean {\n // tslint:disable-next-line: deprecation\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 // tslint:disable-next-line: deprecation\n return (hasModifierKey(event) && (isVerticalMovement(event.keyCode) || isHorizontalMovement(event.keyCode))) ||\n event.ctrlKey ||\n event.metaKey;\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 if (viewDigits.length === 1) {\n if (firsViewDigit.length < this.firstDigit.length) { return null; }\n\n\n date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);\n date.month = 1;\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.getValidDateOrNull(this.dateAdapter.createDateTime(\n date.year, date.month - 1, date.date, date.hours, date.minutes, date.seconds, date.milliseconds\n ));\n }\n\n private getDefaultValue() {\n const defaultValue = this.value || this.dateAdapter.today();\n\n return {\n year: this.dateAdapter.getYear(defaultValue),\n month: this.dateAdapter.getMonth(defaultValue),\n date: this.dateAdapter.getDate(defaultValue),\n hours: this.dateAdapter.getHours(defaultValue),\n minutes: this.dateAdapter.getMinutes(defaultValue),\n seconds: this.dateAdapter.getSeconds(defaultValue),\n milliseconds: this.dateAdapter.getMilliseconds(defaultValue)\n };\n }\n\n private getTimeStringFromDate(value: D | null, timeFormat: string): string {\n if (!value || !this.dateAdapter.isValid(value)) { return ''; }\n\n return this.dateAdapter.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.dateAdapter.getYear(dateVal);\n let month = this.dateAdapter.getMonth(dateVal);\n let day = this.dateAdapter.getDate(dateVal);\n\n switch (whatToIncrement) {\n case DateParts.day:\n day++;\n\n if (day > this.dateAdapter.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.dateAdapter.getNumDaysInMonth(this.createDate(year, month, 1));\n }\n\n private decrementDate(dateVal: D, whatToDecrement: DateParts): D {\n let year = this.dateAdapter.getYear(dateVal);\n let month = this.dateAdapter.getMonth(dateVal);\n let day = this.dateAdapter.getDate(dateVal);\n\n switch (whatToDecrement) {\n case DateParts.day:\n day--;\n\n if (day < 1) {\n day = this.dateAdapter.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 private cvaOnChange: (value: any) => void = () => {};\n\n private validatorOnChange = () => {};\n\n /** The form control validator for whether the input parses. */\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.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.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.min || !controlValue ||\n this.dateAdapter.compareDate(this.min, controlValue) <= 0) ?\n null : { 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.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.max || !controlValue ||\n this.dateAdapter.compareDate(this.max, controlValue) >= 0) ?\n null : { 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.getValidDateOrNull(this.dateAdapter.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.dateAdapter.format(value, this.dateFormats.dateInput) : '';\n\n this.setViewValue(formattedValue);\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n private setControl(control: AbstractControl) {\n if (!this.control) {\n this.control = control;\n }\n }\n\n private getDigitPositions(format: string) {\n const formatInLowerCase = format.toLowerCase();\n\n formatInLowerCase\n .split('')\n .reduce(\n ({ prev, length, start }, 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.dateAdapter.createDateTime(\n year,\n month,\n day,\n this.dateAdapter.getHours(this.value as D),\n this.dateAdapter.getMinutes(this.value as D),\n this.dateAdapter.getSeconds(this.value as D),\n this.dateAdapter.getMilliseconds(this.value as D)\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();\n\n const inputDisabled = this.datepicker && this.datepicker.datepickerInput ?\n this.datepicker.datepickerInput.disabledChange : observableOf();\n\n const datepickerToggled = this.datepicker ?\n merge(this.datepicker.openedStream, this.datepicker.closedStream) :\n observableOf();\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 [attr.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, ComponentType } 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/cdk/datetime';\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, McCalendarView } 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 ? this.datepickerInput.value : null);\n }\n\n set startAt(value: D | null) {\n this._startAt = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\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 /** The minimum selectable date. */\n get minDate(): D | null {\n return this.datepickerInput && this.datepickerInput.min;\n }\n\n /** The maximum selectable date. */\n get maxDate(): D | null {\n return this.datepickerInput && this.datepickerInput.max;\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 /** An input indicating the type of the custom header component for the calendar, if set. */\n @Input() calendarHeaderComponent: ComponentType<any>;\n\n /** The view that the calendar should start in. */\n @Input() startView: McCalendarView = McCalendarView.Month;\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 /** 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 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 private scrollStrategy: () => ScrollStrategy;\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 instance.startExitAnimation();\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 /**\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n}\n","<mc-calendar [id]=\"datepicker.id\"\n [ngClass]=\"datepicker.panelClass\"\n [startAt]=\"datepicker.startAt\"\n [startView]=\"datepicker.startView\"\n [minDate]=\"datepicker.minDate\"\n [maxDate]=\"datepicker.maxDate\"\n [dateFilter]=\"datepicker.dateFilter\"\n [headerComponent]=\"datepicker.calendarHeaderComponent\"\n [selected]=\"datepicker.selected\"\n [dateClass]=\"datepicker.dateClass\"\n [@fadeInCalendar]=\"'enter'\"\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';\n\nimport { McCalendarBody } from './calendar-body.component';\nimport { McCalendar, McCalendarHeader } 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';\nimport { McMultiYearView } from './multi-year-view.component';\nimport { McYearView } from './year-view.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n McButtonModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n McIconModule\n ],\n exports: [\n McCalendar,\n McCalendarBody,\n McDatepicker,\n McDatepickerContent,\n McDatepickerInput,\n McDatepickerToggle,\n McDatepickerToggleIcon,\n McMonthView,\n McYearView,\n McMultiYearView,\n McCalendarHeader,\n McButtonModule\n ],\n declarations: [\n McCalendar,\n McCalendarBody,\n McDatepicker,\n McDatepickerContent,\n McDatepickerInput,\n McDatepickerToggle,\n McDatepickerToggleIcon,\n McMonthView,\n McYearView,\n McMultiYearView,\n McCalendarHeader\n ],\n providers: [\n McDatepickerIntl,\n MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\n ],\n entryComponents: [\n McDatepickerContent,\n McCalendarHeader\n ]\n})\nexport class McDatepickerModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EventEmitter","take","Component","ViewEncapsulation","ChangeDetectionStrategy","Input","Output","LEFT_ARROW","RIGHT_ARROW","UP_ARROW","DOWN_ARROW","HOME","END","PAGE_UP","PAGE_DOWN","ENTER","SPACE","MC_DATE_FORMATS","Optional","Inject","ViewChild","Subject","Injectable","McCalendarView","forwardRef","ComponentPortal","NG_VALUE_ACCESSOR","NG_VALIDATORS","Subscription","Validators","coerceBooleanProperty","validationTooltipShowDelay","validationTooltipHideDelay","TAB","ESCAPE","isLetterKey","hasModifierKey","isVerticalMovement","isHorizontalMovement","McFormFieldControl","Directive","observableOf","merge","ContentChild","trigger","state","style","transition","animate","InjectionToken","Overlay","OverlayConfig","DOCUMENT","CommonModule","McButtonModule","OverlayModule","A11yModule","PortalModule","McIconModule","NgModule"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"ptsecurity-mosaic-datepicker.umd.js","sources":["../../../packages/mosaic/datepicker/calendar-body.component.ts","../../../packages/mosaic/datepicker/calendar-body.html","../../../packages/mosaic/datepicker/datepicker-errors.ts","../../../packages/mosaic/datepicker/month-view.component.ts","../../../packages/mosaic/datepicker/month-view.html","../../../packages/mosaic/datepicker/multi-year-view.component.ts","../../../packages/mosaic/datepicker/multi-year-view.html","../../../packages/mosaic/datepicker/year-view.component.ts","../../../packages/mosaic/datepicker/year-view.html","../../../packages/mosaic/datepicker/datepicker-intl.ts","../../../packages/mosaic/datepicker/calendar.component.ts","../../../packages/mosaic/datepicker/calendar-header.html","../../../packages/mosaic/datepicker/calendar.html","../../../node_modules/tslib/tslib.es6.js","../../../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 ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n NgZone,\n OnChanges,\n SimpleChanges\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\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 ariaLabel: 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 role: 'grid',\n 'aria-readonly': 'true'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendarBody implements OnChanges {\n /** The label for the table. (e.g. \"Jan 2017\"). */\n @Input() label: string;\n\n /** The cells to display in the table. */\n @Input() rows: 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 constructor(private readonly elementRef: ElementRef<HTMLElement>, private readonly ngZone: NgZone) {}\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 /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const activeCell: HTMLElement | null =\n this.elementRef.nativeElement.querySelector('.mc-calendar__body_active');\n\n if (activeCell) {\n activeCell.focus();\n }\n });\n });\n }\n}\n","<!--\n If there's not enough space in the first row, create a separate label row. We mark this row as\n aria-hidden because we don't want it to be read out as one of the weeks in the month.\n-->\n<tr *ngIf=\"firstRowOffset < labelMinRequiredCells\">\n <td class=\"mc-calendar__body-label\" [attr.colspan]=\"numCols\">\n {{ label }}\n </td>\n</tr>\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 {{ firstRowOffset >= labelMinRequiredCells ? label : '' }}\n </td>\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","/** @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 { Directionality } from '@angular/cdk/bidi';\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/cdk/datetime';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE\n} from '@ptsecurity/cdk/keycodes';\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 oldActiveDate = this._activeDate;\n const validDate = this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (!this.hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this.init();\n }\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.selectedDate = this.getDateInCurrentMonth(this._selected);\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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 /** The label for this month (e.g. \"January 2017\"). */\n monthLabel: string;\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 private _activeDate: D;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n @Optional() public dateAdapter: DateAdapter<D>,\n @Optional() private dir?: Directionality\n ) {\n\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n const firstDayOfWeek = this.dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this.dateAdapter.getDayOfWeekNames('short');\n const longWeekdays = this.dateAdapter.getDayOfWeekNames('long');\n\n // Rotate the labels for days of the week based on the configured first day of the week.\n const weekdays = longWeekdays.map((long, i) => {\n return { long, narrow: narrowWeekdays[i] };\n });\n this.weekdays = weekdays\n .slice(firstDayOfWeek)\n .concat(weekdays.slice(0, firstDayOfWeek));\n\n this._activeDate = this.dateAdapter.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.dateAdapter.getYear(this.activeDate);\n const selectedMonth = this.dateAdapter.getMonth(this.activeDate);\n const selectedDate = this.dateAdapter.createDate(selectedYear, selectedMonth, date);\n\n this.selectedChange.emit(selectedDate);\n }\n\n this.userSelection.emit();\n }\n\n /** Handles keydown events on the calendar body when calendar is in month view. */\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this.isRtl();\n\n // tslint:disable-next-line:deprecation\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this.activeDate = this.dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this.activeDate = this.dateAdapter.addCalendarDays(\n this._activeDate,\n 1 - this.dateAdapter.getDate(this._activeDate)\n );\n break;\n case END:\n this.activeDate = this.dateAdapter.addCalendarDays(\n this._activeDate,\n (this.dateAdapter.getNumDaysInMonth(this._activeDate) - this.dateAdapter.getDate(this._activeDate))\n );\n break;\n case PAGE_UP:\n this.activeDate = event.altKey ?\n this.dateAdapter.addCalendarYears(this._activeDate, -1) :\n this.dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this.activeDate = event.altKey ?\n this.dateAdapter.addCalendarYears(this._activeDate, 1) :\n this.dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n if (!this.dateFilter || this.dateFilter(this._activeDate)) {\n this.dateSelected(this.dateAdapter.getDate(this._activeDate));\n this.userSelection.emit();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this.focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this month view. */\n init() {\n this.selectedDate = this.getDateInCurrentMonth(this.selected);\n this.todayDate = this.getDateInCurrentMonth(this.dateAdapter.today());\n this.monthLabel = this.dateAdapter.getMonthNames('short')[this.dateAdapter.getMonth(this.activeDate)];\n\n this.monthLabel = this.monthLabel[0].toLocaleUpperCase() + this.monthLabel.substr(1);\n\n const firstOfMonth = this.dateAdapter.createDate(\n this.dateAdapter.getYear(this.activeDate),\n this.dateAdapter.getMonth(this.activeDate)\n );\n\n this.firstWeekOffset =\n (DAYS_PER_WEEK + this.dateAdapter.getDayOfWeek(firstOfMonth) -\n this.dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n\n this.createWeekCells();\n this.changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.mcCalendarBody.focusActiveCell();\n }\n\n /** Creates McCalendarCells for the dates in this month. */\n private createWeekCells() {\n const daysInMonth = this.dateAdapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this.dateAdapter.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.dateAdapter.createDate(\n this.dateAdapter.getYear(this.activeDate),\n this.dateAdapter.getMonth(this.activeDate),\n i + 1\n );\n const enabled = this.shouldEnableDate(date);\n const ariaLabel = this.dateAdapter.format(date, this.dateFormats.dateA11yLabel);\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], ariaLabel, 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.dateAdapter.compareDate(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateAdapter.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) ?\n this.dateAdapter.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.dateAdapter.getMonth(d1) === this.dateAdapter.getMonth(d2) &&\n this.dateAdapter.getYear(d1) === this.dateAdapter.getYear(d2));\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private isRtl() {\n return this.dir && this.dir.value === 'rtl';\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 [label]=\"monthLabel\"\n [rows]=\"weeks\"\n [todayValue]=\"todayDate!\"\n [selectedValue]=\"selectedDate!\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"dateAdapter.getDate(activeDate) - 1\"\n (selectedValueChange)=\"dateSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n","// tslint:disable:no-magic-numbers\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE\n} from '@ptsecurity/cdk/keycodes';\n\nimport { McCalendarBody, McCalendarCell } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\n\n\nexport const yearsPerPage = 24;\n\nexport const yearsPerRow = 4;\n\n\n/**\n * An internal component used to display a year selector in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-multi-year-view',\n exportAs: 'mcMultiYearView',\n templateUrl: 'multi-year-view.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McMultiYearView<D> implements AfterContentInit {\n /** The date to display in this multi-year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D {\n return this._activeDate;\n }\n\n set activeDate(value: D) {\n const oldActiveDate = this._activeDate;\n const validDate =\n this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (Math.floor(this.dateAdapter.getYear(oldActiveDate) / yearsPerPage) !==\n Math.floor(this.dateAdapter.getYear(this._activeDate) / yearsPerPage)) {\n this.init();\n }\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.selectedYear = this._selected && this.dateAdapter.getYear(this._selected);\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Emits when a new year is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected year. This doesn't imply a change on the selected date */\n @Output() readonly yearSelected: EventEmitter<D> = new EventEmitter<D>();\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 currently displayed years. */\n years: McCalendarCell[][];\n\n /** The year that today falls on. */\n todayYear: number;\n\n /** The year of the selected date. Null if the selected date is null. */\n selectedYear: number | null;\n private _activeDate: D;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n\n constructor(\n private readonly changeDetectorRef: ChangeDetectorRef,\n @Optional() public dateAdapter: DateAdapter<D>,\n @Optional() private dir?: Directionality\n ) {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n this._activeDate = this.dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this.init();\n }\n\n /** Initializes this multi-year view. */\n init() {\n this.todayYear = this.dateAdapter.getYear(this.dateAdapter.today());\n const activeYear = this.dateAdapter.getYear(this._activeDate);\n const activeOffset = activeYear % yearsPerPage;\n this.years = [];\n for (let i = 0, row: number[] = []; i < yearsPerPage; i++) {\n row.push(activeYear - activeOffset + i);\n if (row.length === yearsPerRow) {\n this.years.push(row.map((year) => this.createCellForYear(year)));\n row = [];\n }\n }\n this.changeDetectorRef.markForCheck();\n }\n\n /** Handles when a new year is selected. */\n onYearSelected(year: number) {\n this.yearSelected.emit(this.dateAdapter.createDate(year));\n const month = this.dateAdapter.getMonth(this.activeDate);\n const daysInMonth =\n this.dateAdapter.getNumDaysInMonth(this.dateAdapter.createDate(year, month));\n this.selectedChange.emit(\n this.dateAdapter.createDate(year, month, Math.min(this.dateAdapter.getDate(this.activeDate), daysInMonth))\n );\n }\n\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this.isRtl();\n\n // tslint:disable-next-line:deprecation\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this.activeDate = this.dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this.activeDate = this.dateAdapter.addCalendarYears(\n this._activeDate,\n -this.dateAdapter.getYear(this._activeDate) % yearsPerPage\n );\n break;\n case END:\n this.activeDate = this.dateAdapter.addCalendarYears(\n this._activeDate,\n yearsPerPage - this.dateAdapter.getYear(this._activeDate) % yearsPerPage - 1\n );\n break;\n case PAGE_UP:\n this.activeDate =\n this.dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this.dateAdapter.addCalendarYears(\n this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n this.onYearSelected(this.dateAdapter.getYear(this._activeDate));\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this.focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n getActiveCell(): number {\n return this.dateAdapter.getYear(this.activeDate) % yearsPerPage;\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.mcCalendarBody.focusActiveCell();\n }\n\n /** Creates an McCalendarCell for the given year. */\n private createCellForYear(year: number) {\n const yearName = this.dateAdapter.getYearName(this.dateAdapter.createDate(year));\n\n return new McCalendarCell(year, yearName, yearName, this.shouldEnableYear(year));\n }\n\n /** Whether the given year is enabled. */\n private shouldEnableYear(year: number) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined || year === null ||\n (this.maxDate && year > this.dateAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this.dateAdapter.getYear(this.minDate))) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this.dateAdapter.createDate(year);\n\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this.dateAdapter.getYear(date) === year;\n date = this.dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private isRtl() {\n return this.dir && this.dir.value === 'rtl';\n }\n}\n","<table class=\"mc-calendar__table\">\n <thead class=\"mc-calendar__table-header\">\n <tr>\n <th class=\"mc-calendar__table-header-divider\" colspan=\"4\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [rows]=\"years\"\n [todayValue]=\"todayYear\"\n [selectedValue]=\"selectedYear!\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"getActiveCell()\"\n (selectedValueChange)=\"onYearSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n","import { Directionality } from '@angular/cdk/bidi';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW,\n SPACE\n} from '@ptsecurity/cdk/keycodes';\n\nimport { McCalendarBody, McCalendarCell } from './calendar-body.component';\nimport { createMissingDateImplError } from './datepicker-errors';\n\n\n/**\n * An internal component used to display a single year in the datepicker.\n * @docs-private\n */\n@Component({\n selector: 'mc-year-view',\n exportAs: 'mcYearView',\n templateUrl: 'year-view.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McYearView<D> implements AfterContentInit {\n /** The date to display in this year view (everything other than the year is ignored). */\n @Input()\n get activeDate(): D {\n return this._activeDate;\n }\n\n set activeDate(value: D) {\n const oldActiveDate = this._activeDate;\n const validDate =\n this.getValidDateOrNull(this.dateAdapter.deserialize(value)) || this.dateAdapter.today();\n this._activeDate = this.dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n\n if (this.dateAdapter.getYear(oldActiveDate) !== this.dateAdapter.getYear(this._activeDate)) {\n this.init();\n }\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n this.selectedMonth = this.getMonthInCurrentYear(this._selected);\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /** A function used to filter which dates are selectable. */\n @Input() dateFilter: (date: D) => boolean;\n\n /** Emits when a new month is selected. */\n @Output() readonly selectedChange: EventEmitter<D> = new EventEmitter<D>();\n\n /** Emits the selected month. This doesn't imply a change on the selected date */\n @Output() readonly monthSelected: EventEmitter<D> = new EventEmitter<D>();\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 months of the year. */\n months: McCalendarCell[][];\n\n /** The label for this year (e.g. \"2017\"). */\n yearLabel: string;\n\n /** The month in this year that today falls on. Null if today is in a different year. */\n todayMonth: number | null;\n\n /**\n * The month in this year that the selected Date falls on.\n * Null if the selected Date is in a different year.\n */\n selectedMonth: number | null;\n private _activeDate: D;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n @Optional() public dateAdapter: DateAdapter<D>,\n @Optional() private dir?: Directionality\n ) {\n if (!this.dateAdapter) {\n throw createMissingDateImplError('DateAdapter');\n }\n\n if (!this.dateFormats) {\n throw createMissingDateImplError('MC_DATE_FORMATS');\n }\n\n this._activeDate = this.dateAdapter.today();\n }\n\n ngAfterContentInit() {\n this.init();\n }\n\n /** Handles when a new month is selected. */\n onMonthSelected(month: number) {\n const year = this.dateAdapter.getYear(this.activeDate);\n\n const normalizedDate = this.dateAdapter.createDate(year, month);\n\n this.monthSelected.emit(normalizedDate);\n\n const daysInMonth = this.dateAdapter.getNumDaysInMonth(normalizedDate);\n\n this.selectedChange.emit(\n this.dateAdapter.createDate(\n year,\n month,\n Math.min(this.dateAdapter.getDate(this.activeDate), daysInMonth)\n )\n );\n }\n\n /** Handles keydown events on the calendar body when calendar is in year view. */\n handleCalendarBodyKeydown(event: KeyboardEvent): void {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n\n const oldActiveDate = this._activeDate;\n const isRtl = this.isRtl();\n\n const VERTICAL_SHIFT = 4;\n const PAGE_SHIFT = 10;\n const MAX_MONTH_INDEX = 11;\n\n // tslint:disable-next-line:deprecation\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, -VERTICAL_SHIFT);\n break;\n case DOWN_ARROW:\n this.activeDate = this.dateAdapter.addCalendarMonths(this._activeDate, VERTICAL_SHIFT);\n break;\n case HOME:\n this.activeDate = this.dateAdapter.addCalendarMonths(\n this._activeDate,\n -this.dateAdapter.getMonth(this._activeDate)\n );\n break;\n case END:\n this.activeDate = this.dateAdapter.addCalendarMonths(\n this._activeDate,\n MAX_MONTH_INDEX - this.dateAdapter.getMonth(this._activeDate)\n );\n break;\n case PAGE_UP:\n this.activeDate =\n this.dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -PAGE_SHIFT : -1);\n break;\n case PAGE_DOWN:\n this.activeDate =\n this.dateAdapter.addCalendarYears(this._activeDate, event.altKey ? PAGE_SHIFT : 1);\n break;\n case ENTER:\n case SPACE:\n this.onMonthSelected(this.dateAdapter.getMonth(this._activeDate));\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n\n if (this.dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n\n this.focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n\n /** Initializes this year view. */\n init() {\n this.selectedMonth = this.getMonthInCurrentYear(this.selected);\n this.todayMonth = this.getMonthInCurrentYear(this.dateAdapter.today());\n this.yearLabel = this.dateAdapter.getYearName(this.activeDate);\n\n const monthNames = this.dateAdapter.getMonthNames('short');\n\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n // tslint:disable-next-line:no-magic-numbers\n this.months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]\n .map((row) => row.map((month) => this.createCellForMonth(month, monthNames[month])));\n\n this.changeDetectorRef.markForCheck();\n }\n\n /** Focuses the active cell after the microtask queue is empty. */\n focusActiveCell() {\n this.mcCalendarBody.focusActiveCell();\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private getMonthInCurrentYear(date: D | null) {\n return date && this.dateAdapter.getYear(date) === this.dateAdapter.getYear(this.activeDate) ?\n this.dateAdapter.getMonth(date) : null;\n }\n\n /** Creates an McCalendarCell for the given month. */\n private createCellForMonth(month: number, monthName: string) {\n const ariaLabel = this.dateAdapter.format(\n this.dateAdapter.createDate(this.dateAdapter.getYear(this.activeDate), month),\n this.dateFormats.monthYearA11yLabel\n );\n\n const newMonthName = monthName[0].toLocaleUpperCase() + monthName.substr(1);\n\n return new McCalendarCell(\n month, newMonthName, ariaLabel, this.shouldEnableMonth(month));\n }\n\n /** Whether the given month is enabled. */\n private shouldEnableMonth(month: number) {\n\n const activeYear = this.dateAdapter.getYear(this.activeDate);\n\n if (month === undefined || month === null ||\n this.isYearAndMonthAfterMaxDate(activeYear, month) ||\n this.isYearAndMonthBeforeMinDate(activeYear, month)) {\n return false;\n }\n\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfMonth = this.dateAdapter.createDate(activeYear, month);\n\n // If any date in the month is enabled count the month as enabled.\n for (let date = firstOfMonth; this.dateAdapter.getMonth(date) === month;\n date = this.dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is after this.maxDate, considering\n * just the month and year of this.maxDate\n */\n private isYearAndMonthAfterMaxDate(year: number, month: number) {\n if (this.maxDate) {\n const maxYear = this.dateAdapter.getYear(this.maxDate);\n const maxMonth = this.dateAdapter.getMonth(this.maxDate);\n\n return year > maxYear || (year === maxYear && month > maxMonth);\n }\n\n return false;\n }\n\n /**\n * Tests whether the combination month/year is before this.minDate, considering\n * just the month and year of this.minDate\n */\n private isYearAndMonthBeforeMinDate(year: number, month: number) {\n if (this.minDate) {\n const minYear = this.dateAdapter.getYear(this.minDate);\n const minMonth = this.dateAdapter.getMonth(this.minDate);\n\n return year < minYear || (year === minYear && month < minMonth);\n }\n\n return false;\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Determines whether the user has the RTL layout direction. */\n private isRtl() {\n return this.dir && this.dir.value === 'rtl';\n }\n}\n","<table class=\"mc-calendar__table\">\n <thead class=\"mc-calendar__table-header\">\n <tr>\n <th class=\"mc-calendar__table-header-divider\" colspan=\"4\"></th>\n </tr>\n </thead>\n <tbody mc-calendar-body\n [label]=\"yearLabel\"\n [rows]=\"months\"\n [todayValue]=\"todayMonth!\"\n [selectedValue]=\"selectedMonth!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"dateAdapter.getMonth(activeDate)\"\n (selectedValueChange)=\"onMonthSelected($event)\"\n (keydown)=\"handleCalendarBodyKeydown($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 { ComponentPortal, ComponentType, Portal } from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n forwardRef,\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/cdk/datetime';\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';\nimport { McMultiYearView, yearsPerPage } from './multi-year-view.component';\nimport { McYearView } from './year-view.component';\n\n\n/**\n * Possible views for the calendar.\n * @docs-private\n */\nexport enum McCalendarView {\n Month = 'month',\n Year = 'year',\n MultiYear = 'multi-year'\n}\n\n/** Default header for McCalendar */\n@Component({\n selector: 'mc-calendar-header',\n templateUrl: 'calendar-header.html',\n exportAs: 'mcCalendarHeader',\n host: {\n class: 'mc-calendar-header'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class McCalendarHeader<D> {\n constructor(\n private readonly intl: McDatepickerIntl,\n @Inject(forwardRef(() => McCalendar)) public calendar: McCalendar<D>,\n @Optional() private readonly dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n changeDetectorRef: ChangeDetectorRef\n ) {\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\n }\n\n /** The label for the current calendar view. */\n get periodButtonText(): string {\n if (this.calendar.currentView === McCalendarView.Month) {\n const label = this.dateAdapter.format(this.calendar.activeDate, this.dateFormats.monthYearLabel);\n\n return (label[0].toLocaleUpperCase() + label.substr(1)).replace('.', '');\n }\n\n if (this.calendar.currentView === McCalendarView.Year) {\n return this.dateAdapter.getYearName(this.calendar.activeDate);\n }\n\n const activeYear = this.dateAdapter.getYear(this.calendar.activeDate);\n const firstYearInView = this.dateAdapter.getYearName(\n // tslint:disable-next-line:no-magic-numbers\n this.dateAdapter.createDate(activeYear - activeYear % 24)\n );\n const lastYearInView = this.dateAdapter.getYearName(\n // tslint:disable-next-line:no-magic-numbers\n this.dateAdapter.createDate(activeYear + yearsPerPage - 1 - activeYear % 24)\n );\n\n return `${firstYearInView} \\u2013 ${lastYearInView}`;\n }\n\n get periodButtonLabel(): string {\n return this.calendar.currentView === McCalendarView.Month ?\n this.intl.switchToMultiYearViewLabel : this.intl.switchToMonthViewLabel;\n }\n\n /** The label for the previous button. */\n get prevButtonLabel(): string {\n return {\n [McCalendarView.Month]: this.intl.prevMonthLabel,\n [McCalendarView.Year]: this.intl.prevYearLabel,\n [McCalendarView.MultiYear]: this.intl.prevMultiYearLabel\n }[this.calendar.currentView];\n }\n\n /** The label for the next button. */\n get nextButtonLabel(): string {\n return {\n [McCalendarView.Month]: this.intl.nextMonthLabel,\n [McCalendarView.Year]: this.intl.nextYearLabel,\n [McCalendarView.MultiYear]: this.intl.nextMultiYearLabel\n }[this.calendar.currentView];\n }\n\n /** Handles user clicks on the period label. */\n currentPeriodClicked(): void {\n if (([McCalendarView.Month, McCalendarView.MultiYear] as McCalendarView[]).includes(this.calendar.currentView)) {\n this.calendar.currentView = McCalendarView.Year;\n } else if (this.calendar.currentView === McCalendarView.Year) {\n this.calendar.currentView = McCalendarView.Month;\n }\n }\n\n /** Handles user clicks on the previous button. */\n previousClicked(): void {\n if (this.calendar.currentView === McCalendarView.Month) {\n this.calendar.activeDate = this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1);\n } else {\n this.calendar.activeDate = this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView === McCalendarView.Year ? -1 : -yearsPerPage\n );\n }\n }\n\n /** Handles user clicks on the next button. */\n nextClicked(): void {\n if (this.calendar.currentView === McCalendarView.Month) {\n this.calendar.activeDate = this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1);\n } else {\n this.calendar.activeDate = this.dateAdapter.addCalendarYears(\n this.calendar.activeDate,\n this.calendar.currentView === McCalendarView.Year ? 1 : yearsPerPage\n );\n }\n }\n\n /** Whether the previous period button is enabled. */\n previousEnabled(): boolean {\n if (!this.calendar.minDate) { return true; }\n\n return !this.calendar.minDate || !this.isSameView(this.calendar.activeDate, this.calendar.minDate);\n }\n\n /** Whether the next period button is enabled. */\n nextEnabled(): boolean {\n return !this.calendar.maxDate || !this.isSameView(this.calendar.activeDate, this.calendar.maxDate);\n }\n\n /** Whether the two dates represent the same view in the current view mode (month or year). */\n private isSameView(firstDate: D, secondDate: D): boolean {\n const firstYear = this.dateAdapter.getYear(firstDate);\n const secondYear = this.dateAdapter.getYear(secondDate);\n\n const firstMonth = this.dateAdapter.getMonth(firstDate);\n const secondMonth = this.dateAdapter.getMonth(secondDate);\n\n if (this.calendar.currentView === McCalendarView.Month) {\n return firstYear === secondYear && firstMonth === secondMonth;\n }\n\n if (this.calendar.currentView === McCalendarView.Year) { return firstYear === secondYear; }\n\n // Otherwise we are in 'multi-year' view.\n return Math.floor(firstYear / yearsPerPage) === Math.floor(secondYear / yearsPerPage);\n }\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, AfterViewChecked, 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 this._startAt = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\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.getValidDateOrNull(this.dateAdapter.deserialize(value));\n }\n\n /**\n * The current active date. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n get activeDate(): D {\n return this.clampedActiveDate;\n }\n\n set activeDate(value: D) {\n this.clampedActiveDate = this.dateAdapter.clampDate(value, this.minDate, this.maxDate);\n this.stateChanges.next();\n }\n\n /** Whether the calendar is in month view. */\n get currentView(): McCalendarView {\n return this._currentView;\n }\n\n set currentView(value: McCalendarView) {\n this._currentView = value;\n this.moveFocusOnNextTick = true;\n }\n\n /** An input indicating the type of the header component, if set. */\n @Input() headerComponent: ComponentType<any>;\n\n /** A portal containing the header component type for this calendar. */\n calendarHeaderPortal: Portal<any>;\n\n /** Whether the calendar should be started in month or year view. */\n @Input() startView: McCalendarView = McCalendarView.Month;\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 /** Reference to the current year view component. */\n @ViewChild(McYearView, {static: false}) yearView: McYearView<D>;\n\n /** Reference to the current multi-year view component. */\n @ViewChild(McMultiYearView, {static: false}) multiYearView: McMultiYearView<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 /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private moveFocusOnNextTick = false;\n private _startAt: D | null;\n private _selected: D | null;\n private _minDate: D | null;\n private _maxDate: D | null;\n private clampedActiveDate: D;\n private _currentView: McCalendarView;\n\n constructor(\n intl: McDatepickerIntl,\n @Optional() private readonly dateAdapter: DateAdapter<D>,\n @Optional() @Inject(MC_DATE_FORMATS) private readonly dateFormats: McDateFormats,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n if (!this.dateAdapter) {\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.calendarHeaderPortal = new ComponentPortal(this.headerComponent || McCalendarHeader);\n this.activeDate = this.startAt || this.dateAdapter.today();\n\n // Assign to the private property since we don't want to move focus on init.\n this._currentView = this.startView;\n }\n\n ngAfterViewChecked() {\n if (this.moveFocusOnNextTick) {\n this.moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\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 const view = this.getCurrentViewComponent();\n\n if (view) {\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 view.init();\n }\n }\n\n this.stateChanges.next();\n }\n\n focusActiveCell() {\n this.getCurrentViewComponent().focusActiveCell();\n }\n\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n const view = this.currentView === McCalendarView.Month ? this.monthView :\n (this.currentView === McCalendarView.Year ? this.yearView : this.multiYearView);\n\n view.ngAfterContentInit();\n }\n\n /** Handles date selection in the month view. */\n dateSelected(date: D): void {\n if (!this.dateAdapter.sameDate(date, this.selected)) {\n this.selectedChange.emit(date);\n }\n }\n\n /** Handles year selection in the multiyear view. */\n yearSelectedInMultiYearView(normalizedYear: D) {\n this.yearSelected.emit(normalizedYear);\n }\n\n /** Handles month selection in the year view. */\n monthSelectedInYearView(normalizedMonth: D) {\n this.monthSelected.emit(normalizedMonth);\n }\n\n userSelected(): void {\n this.userSelection.emit();\n }\n\n /** Handles year/month selection in the multi-year/year views. */\n goToDateInView(date: D, view: McCalendarView | string): void {\n this.activeDate = date;\n this.currentView = view as McCalendarView;\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n /** Returns the component instance that corresponds to the current calendar view. */\n private getCurrentViewComponent() {\n return this.monthView || this.yearView || this.multiYearView;\n }\n}\n","<button mc-button\n [tabindex]=\"'-1'\"\n class=\"mc-button_transparent mc-calendar__period-button\"\n (click)=\"currentPeriodClicked()\">\n {{ periodButtonText }}\n\n <i class=\"mc mc-icon\"\n [class.mc-angle-up-M_16]=\"calendar.currentView !== 'month'\"\n [class.mc-angle-down-M_16]=\"calendar.currentView === 'month'\">\n </i>\n</button>\n\n<div class=\"mc-calendar-spacer\"></div>\n\n<button mc-button\n [tabindex]=\"'-1'\"\n class=\"mc-button_transparent mc-calendar__previous-button\"\n [disabled]=\"!previousEnabled()\"\n (click)=\"previousClicked()\">\n\n <i mc-icon=\"mc-angle-left-L_16\"></i>\n</button>\n\n<button mc-button\n [tabindex]=\"'-1'\"\n class=\"mc-button_transparent mc-calendar__next-button\"\n [disabled]=\"!nextEnabled()\"\n (click)=\"nextClicked()\">\n\n <i mc-icon=\"mc-angle-right-L_16\"></i>\n</button>\n","<ng-template [cdkPortalOutlet]=\"calendarHeaderPortal\"></ng-template>\n\n<div class=\"mc-calendar__content\" [ngSwitch]=\"currentView\">\n <mc-month-view\n *ngSwitchCase=\"'month'\"\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\n <mc-year-view\n *ngSwitchCase=\"'year'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (monthSelected)=\"monthSelectedInYearView($event)\"\n (selectedChange)=\"goToDateInView($event, 'multi-year')\">\n </mc-year-view>\n\n <mc-multi-year-view\n *ngSwitchCase=\"'multi-year'\"\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n (yearSelected)=\"yearSelectedInMultiYearView($event)\"\n (selectedChange)=\"goToDateInView($event, 'month')\">\n </mc-multi-year-view>\n</div>\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","// @ts-nocheck\n\n// tslint:disable:no-empty\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 { DateAdapter, MC_DATE_FORMATS, McDateFormats } from '@ptsecurity/cdk/datetime';\nimport {\n BACKSPACE,\n DELETE,\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 hasModifierKey,\n isHorizontalMovement,\n isLetterKey,\n isVerticalMovement\n} from '@ptsecurity/cdk/keycodes';\nimport { validationTooltipHideDelay, validationTooltipShowDelay } 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;\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\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 MAX_YEAR; }\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\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 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 this.value = selected;\n this.cvaOnChange(selected);\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.dateAdapter.deserialize(value);\n\n this.lastValueValid = !newValue || this.dateAdapter.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.dateAdapter.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.getValidDateOrNull(this.dateAdapter.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.getValidDateOrNull(this.dateAdapter.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 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;\n private secondDigit: DateDigit;\n private thirdDigit: DateDigit;\n\n private separatorPositions: number[];\n\n constructor(\n public elementRef: ElementRef<HTMLInputElement>,\n private readonly renderer: Renderer2,\n @Optional() private readonly dateAdapter: 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.dateAdapter) {\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 = dateAdapter.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 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 // tslint:disable-next-line: deprecation\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 }\n this.control.updateValueAndValidity({ emitEvent: false });\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 = () => {\n if (!this.viewValue) { return null; }\n\n const date = 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, 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.getValidDateOrNull(this.dateAdapter.createDateTime(\n date.year, date.month - 1, date.date, date.hours, date.minutes, date.seconds, date.milliseconds\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\n onPaste($event) {\n $event.preventDefault();\n\n const rawValue = $event.clipboardData.getData('text');\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.dateAdapter.toIso8601(value);\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 this.separator = format.match(/[aA-zZ]+(?<separator>\\W|\\D)[aA-zZ]+/)!.groups.separator;\n this.separatorPositions = format\n .split('')\n .reduce((acc, 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.dateAdapter.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 // tslint:disable-next-line: deprecation\n return (event.altKey && event.keyCode === UP_ARROW) || event.keyCode === ESCAPE;\n }\n\n private isKeyForOpen(event: KeyboardEvent): boolean {\n // tslint:disable-next-line: deprecation\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 // tslint:disable-next-line: deprecation\n return (hasModifierKey(event) && (isVerticalMovement(event.keyCode) || isHorizontalMovement(event.keyCode))) ||\n event.ctrlKey ||\n event.metaKey;\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 if (viewDigits.length === 1) {\n if (firsViewDigit.length < this.firstDigit.length) { return null; }\n\n\n date[this.firstDigit.fullName] = this.firstDigit.parse(firsViewDigit);\n date.month = 1;\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.getValidDateOrNull(this.dateAdapter.createDateTime(\n date.year, date.month - 1, date.date, date.hours, date.minutes, date.seconds, date.milliseconds\n ));\n }\n\n private getDefaultValue() {\n const defaultValue = this.value || this.dateAdapter.today();\n\n return {\n year: this.dateAdapter.getYear(defaultValue),\n month: this.dateAdapter.getMonth(defaultValue),\n date: this.dateAdapter.getDate(defaultValue),\n hours: this.dateAdapter.getHours(defaultValue),\n minutes: this.dateAdapter.getMinutes(defaultValue),\n seconds: this.dateAdapter.getSeconds(defaultValue),\n milliseconds: this.dateAdapter.getMilliseconds(defaultValue)\n };\n }\n\n private getTimeStringFromDate(value: D | null, timeFormat: string): string {\n if (!value || !this.dateAdapter.isValid(value)) { return ''; }\n\n return this.dateAdapter.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.dateAdapter.getYear(dateVal);\n let month = this.dateAdapter.getMonth(dateVal);\n let day = this.dateAdapter.getDate(dateVal);\n\n switch (whatToIncrement) {\n case DateParts.day:\n day++;\n\n if (day > this.dateAdapter.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.dateAdapter.getNumDaysInMonth(this.createDate(year, month, 1));\n }\n\n private decrementDate(dateVal: D, whatToDecrement: DateParts): D {\n let year = this.dateAdapter.getYear(dateVal);\n let month = this.dateAdapter.getMonth(dateVal);\n let day = this.dateAdapter.getDate(dateVal);\n\n switch (whatToDecrement) {\n case DateParts.day:\n day--;\n\n if (day < 1) {\n day = this.dateAdapter.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 private cvaOnChange: (value: any) => void = () => {};\n\n private validatorOnChange = () => {};\n\n /** The form control validator for whether the input parses. */\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.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.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.min || !controlValue ||\n this.dateAdapter.compareDate(this.min, controlValue) <= 0) ?\n null : { 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.getValidDateOrNull(this.dateAdapter.deserialize(control.value));\n\n return (!this.max || !controlValue ||\n this.dateAdapter.compareDate(this.max, controlValue) >= 0) ?\n null : { 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.getValidDateOrNull(this.dateAdapter.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.dateAdapter.format(value, this.dateFormats.dateInput) : '';\n\n this.setViewValue(formattedValue);\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n\n private setControl(control: AbstractControl) {\n if (!this.control) {\n this.control = control;\n }\n }\n\n private getDigitPositions(format: string) {\n const formatInLowerCase = format.toLowerCase();\n\n formatInLowerCase\n .split('')\n .reduce(\n ({ prev, length, start }, 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.dateAdapter.createDateTime(\n year,\n month,\n day,\n this.dateAdapter.getHours(this.value as D),\n this.dateAdapter.getMinutes(this.value as D),\n this.dateAdapter.getSeconds(this.value as D),\n this.dateAdapter.getMilliseconds(this.value as D)\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();\n\n const inputDisabled = this.datepicker && this.datepicker.datepickerInput ?\n this.datepicker.datepickerInput.disabledChange : observableOf();\n\n const datepickerToggled = this.datepicker ?\n merge(this.datepicker.openedStream, this.datepicker.closedStream) :\n observableOf();\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 [attr.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, ComponentType } 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/cdk/datetime';\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, McCalendarView } 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 ? this.datepickerInput.value : null);\n }\n\n set startAt(value: D | null) {\n this._startAt = this.getValidDateOrNull(this.dateAdapter.deserialize(value));\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 /** The minimum selectable date. */\n get minDate(): D | null {\n return this.datepickerInput && this.datepickerInput.min;\n }\n\n /** The maximum selectable date. */\n get maxDate(): D | null {\n return this.datepickerInput && this.datepickerInput.max;\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 /** An input indicating the type of the custom header component for the calendar, if set. */\n @Input() calendarHeaderComponent: ComponentType<any>;\n\n /** The view that the calendar should start in. */\n @Input() startView: McCalendarView = McCalendarView.Month;\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 /** 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 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 private scrollStrategy: () => ScrollStrategy;\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 instance.startExitAnimation();\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 /**\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.dateAdapter.isDateInstance(obj) && this.dateAdapter.isValid(obj)) ? obj : null;\n }\n}\n","<mc-calendar [id]=\"datepicker.id\"\n [ngClass]=\"datepicker.panelClass\"\n [startAt]=\"datepicker.startAt\"\n [startView]=\"datepicker.startView\"\n [minDate]=\"datepicker.minDate\"\n [maxDate]=\"datepicker.maxDate\"\n [dateFilter]=\"datepicker.dateFilter\"\n [headerComponent]=\"datepicker.calendarHeaderComponent\"\n [selected]=\"datepicker.selected\"\n [dateClass]=\"datepicker.dateClass\"\n [@fadeInCalendar]=\"'enter'\"\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';\n\nimport { McCalendarBody } from './calendar-body.component';\nimport { McCalendar, McCalendarHeader } 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';\nimport { McMultiYearView } from './multi-year-view.component';\nimport { McYearView } from './year-view.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n McButtonModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n McIconModule\n ],\n exports: [\n McCalendar,\n McCalendarBody,\n McDatepicker,\n McDatepickerContent,\n McDatepickerInput,\n McDatepickerToggle,\n McDatepickerToggleIcon,\n McMonthView,\n McYearView,\n McMultiYearView,\n McCalendarHeader,\n McButtonModule\n ],\n declarations: [\n McCalendar,\n McCalendarBody,\n McDatepicker,\n McDatepickerContent,\n McDatepickerInput,\n McDatepickerToggle,\n McDatepickerToggleIcon,\n McMonthView,\n McYearView,\n McMultiYearView,\n McCalendarHeader\n ],\n providers: [\n McDatepickerIntl,\n MC_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\n ],\n entryComponents: [\n McDatepickerContent,\n McCalendarHeader\n ]\n})\nexport class McDatepickerModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["EventEmitter","take","Component","ViewEncapsulation","ChangeDetectionStrategy","Input","Output","LEFT_ARROW","RIGHT_ARROW","UP_ARROW","DOWN_ARROW","HOME","END","PAGE_UP","PAGE_DOWN","ENTER","SPACE","MC_DATE_FORMATS","Optional","Inject","ViewChild","Subject","Injectable","McCalendarView","forwardRef","ComponentPortal","NG_VALUE_ACCESSOR","NG_VALIDATORS","Subscription","Validators","coerceBooleanProperty","validationTooltipShowDelay","validationTooltipHideDelay","TAB","ESCAPE","isLetterKey","hasModifierKey","isVerticalMovement","isHorizontalMovement","McFormFieldControl","Directive","observableOf","merge","ContentChild","trigger","state","style","transition","animate","InjectionToken","Overlay","OverlayConfig","DOCUMENT","CommonModule","McButtonModule","OverlayModule","A11yModule","PortalModule","McIconModule","NgModule"],"mappings":"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"}
|