@angular/material 11.0.3 → 11.1.1
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/LICENSE +1 -1
- package/_theming.scss +392 -351
- package/autocomplete/_autocomplete-theme.scss +4 -5
- package/autocomplete/autocomplete.d.ts +7 -1
- package/autocomplete/index.metadata.json +1 -1
- package/autocomplete/testing/autocomplete-harness.d.ts +29 -15
- package/badge/_badge-theme.scss +2 -3
- package/bottom-sheet/_bottom-sheet-theme.scss +4 -5
- package/bundles/material-autocomplete-testing.umd.js +54 -36
- package/bundles/material-autocomplete-testing.umd.js.map +1 -1
- package/bundles/material-autocomplete-testing.umd.min.js +2 -2
- package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
- package/bundles/material-autocomplete.umd.js +32 -10
- package/bundles/material-autocomplete.umd.js.map +1 -1
- package/bundles/material-autocomplete.umd.min.js +3 -3
- package/bundles/material-autocomplete.umd.min.js.map +1 -1
- package/bundles/material-badge-testing.umd.js +9 -1
- package/bundles/material-badge-testing.umd.js.map +1 -1
- package/bundles/material-badge-testing.umd.min.js +1 -1
- package/bundles/material-badge-testing.umd.min.js.map +1 -1
- package/bundles/material-badge.umd.js +9 -1
- package/bundles/material-badge.umd.js.map +1 -1
- package/bundles/material-badge.umd.min.js +3 -3
- package/bundles/material-badge.umd.min.js.map +1 -1
- package/bundles/material-bottom-sheet-testing.umd.js +9 -1
- package/bundles/material-bottom-sheet-testing.umd.js.map +1 -1
- package/bundles/material-bottom-sheet-testing.umd.min.js +1 -1
- package/bundles/material-bottom-sheet-testing.umd.min.js.map +1 -1
- package/bundles/material-bottom-sheet.umd.js +9 -1
- package/bundles/material-bottom-sheet.umd.js.map +1 -1
- package/bundles/material-bottom-sheet.umd.min.js +1 -1
- package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
- package/bundles/material-button-testing.umd.js +9 -1
- package/bundles/material-button-testing.umd.js.map +1 -1
- package/bundles/material-button-testing.umd.min.js +1 -1
- package/bundles/material-button-testing.umd.min.js.map +1 -1
- package/bundles/material-button-toggle-testing.umd.js +9 -1
- package/bundles/material-button-toggle-testing.umd.js.map +1 -1
- package/bundles/material-button-toggle-testing.umd.min.js +1 -1
- package/bundles/material-button-toggle-testing.umd.min.js.map +1 -1
- package/bundles/material-button-toggle.umd.js +9 -1
- package/bundles/material-button-toggle.umd.js.map +1 -1
- package/bundles/material-button-toggle.umd.min.js +1 -1
- package/bundles/material-button-toggle.umd.min.js.map +1 -1
- package/bundles/material-button.umd.js +17 -5
- package/bundles/material-button.umd.js.map +1 -1
- package/bundles/material-button.umd.min.js +1 -1
- package/bundles/material-button.umd.min.js.map +1 -1
- package/bundles/material-card-testing.umd.js +9 -1
- package/bundles/material-card-testing.umd.js.map +1 -1
- package/bundles/material-card-testing.umd.min.js +1 -1
- package/bundles/material-card-testing.umd.min.js.map +1 -1
- package/bundles/material-checkbox-testing.umd.js +73 -64
- package/bundles/material-checkbox-testing.umd.js.map +1 -1
- package/bundles/material-checkbox-testing.umd.min.js +2 -2
- package/bundles/material-checkbox-testing.umd.min.js.map +1 -1
- package/bundles/material-checkbox.umd.js +15 -3
- package/bundles/material-checkbox.umd.js.map +1 -1
- package/bundles/material-checkbox.umd.min.js +2 -2
- package/bundles/material-checkbox.umd.min.js.map +1 -1
- package/bundles/material-chips-testing.umd.js +189 -29
- package/bundles/material-chips-testing.umd.js.map +1 -1
- package/bundles/material-chips-testing.umd.min.js +2 -2
- package/bundles/material-chips-testing.umd.min.js.map +1 -1
- package/bundles/material-chips.umd.js +9 -1
- package/bundles/material-chips.umd.js.map +1 -1
- package/bundles/material-chips.umd.min.js +4 -4
- package/bundles/material-chips.umd.min.js.map +1 -1
- package/bundles/material-core-testing.umd.js +14 -3
- package/bundles/material-core-testing.umd.js.map +1 -1
- package/bundles/material-core-testing.umd.min.js +1 -1
- package/bundles/material-core-testing.umd.min.js.map +1 -1
- package/bundles/material-core.umd.js +55 -14
- package/bundles/material-core.umd.js.map +1 -1
- package/bundles/material-core.umd.min.js +16 -8
- package/bundles/material-core.umd.min.js.map +1 -1
- package/bundles/material-datepicker-testing.umd.js +24 -12
- package/bundles/material-datepicker-testing.umd.js.map +1 -1
- package/bundles/material-datepicker-testing.umd.min.js +1 -1
- package/bundles/material-datepicker-testing.umd.min.js.map +1 -1
- package/bundles/material-datepicker.umd.js +256 -84
- package/bundles/material-datepicker.umd.js.map +1 -1
- package/bundles/material-datepicker.umd.min.js +20 -12
- package/bundles/material-datepicker.umd.min.js.map +1 -1
- package/bundles/material-dialog-testing.umd.js +9 -1
- package/bundles/material-dialog-testing.umd.js.map +1 -1
- package/bundles/material-dialog-testing.umd.min.js +1 -1
- package/bundles/material-dialog-testing.umd.min.js.map +1 -1
- package/bundles/material-dialog.umd.js +10 -2
- package/bundles/material-dialog.umd.js.map +1 -1
- package/bundles/material-dialog.umd.min.js +8 -8
- package/bundles/material-dialog.umd.min.js.map +1 -1
- package/bundles/material-divider-testing.umd.js +9 -1
- package/bundles/material-divider-testing.umd.js.map +1 -1
- package/bundles/material-divider-testing.umd.min.js +2 -2
- package/bundles/material-divider-testing.umd.min.js.map +1 -1
- package/bundles/material-expansion-testing.umd.js +9 -1
- package/bundles/material-expansion-testing.umd.js.map +1 -1
- package/bundles/material-expansion-testing.umd.min.js +1 -1
- package/bundles/material-expansion-testing.umd.min.js.map +1 -1
- package/bundles/material-expansion.umd.js +15 -3
- package/bundles/material-expansion.umd.js.map +1 -1
- package/bundles/material-expansion.umd.min.js +3 -3
- package/bundles/material-expansion.umd.min.js.map +1 -1
- package/bundles/material-form-field-testing-control.umd.js +9 -1
- package/bundles/material-form-field-testing-control.umd.js.map +1 -1
- package/bundles/material-form-field-testing-control.umd.min.js +1 -1
- package/bundles/material-form-field-testing-control.umd.min.js.map +1 -1
- package/bundles/material-form-field-testing.umd.js +41 -30
- package/bundles/material-form-field-testing.umd.js.map +1 -1
- package/bundles/material-form-field-testing.umd.min.js +3 -3
- package/bundles/material-form-field-testing.umd.min.js.map +1 -1
- package/bundles/material-form-field.umd.js +10 -2
- package/bundles/material-form-field.umd.js.map +1 -1
- package/bundles/material-form-field.umd.min.js +1 -1
- package/bundles/material-form-field.umd.min.js.map +1 -1
- package/bundles/material-grid-list-testing.umd.js +15 -5
- package/bundles/material-grid-list-testing.umd.js.map +1 -1
- package/bundles/material-grid-list-testing.umd.min.js +2 -2
- package/bundles/material-grid-list-testing.umd.min.js.map +1 -1
- package/bundles/material-grid-list.umd.js +9 -1
- package/bundles/material-grid-list.umd.js.map +1 -1
- package/bundles/material-grid-list.umd.min.js +1 -1
- package/bundles/material-grid-list.umd.min.js.map +1 -1
- package/bundles/material-icon-testing.umd.js +12 -2
- package/bundles/material-icon-testing.umd.js.map +1 -1
- package/bundles/material-icon-testing.umd.min.js +2 -2
- package/bundles/material-icon-testing.umd.min.js.map +1 -1
- package/bundles/material-icon.umd.js +46 -2
- package/bundles/material-icon.umd.js.map +1 -1
- package/bundles/material-icon.umd.min.js +3 -3
- package/bundles/material-icon.umd.min.js.map +1 -1
- package/bundles/material-input-testing.umd.js +19 -8
- package/bundles/material-input-testing.umd.js.map +1 -1
- package/bundles/material-input-testing.umd.min.js +1 -1
- package/bundles/material-input-testing.umd.min.js.map +1 -1
- package/bundles/material-input.umd.js +9 -1
- package/bundles/material-input.umd.js.map +1 -1
- package/bundles/material-input.umd.min.js +1 -1
- package/bundles/material-input.umd.min.js.map +1 -1
- package/bundles/material-list-testing.umd.js +62 -57
- package/bundles/material-list-testing.umd.js.map +1 -1
- package/bundles/material-list-testing.umd.min.js +1 -1
- package/bundles/material-list-testing.umd.min.js.map +1 -1
- package/bundles/material-list.umd.js +9 -1
- package/bundles/material-list.umd.js.map +1 -1
- package/bundles/material-list.umd.min.js +1 -1
- package/bundles/material-list.umd.min.js.map +1 -1
- package/bundles/material-menu-testing.umd.js +94 -67
- package/bundles/material-menu-testing.umd.js.map +1 -1
- package/bundles/material-menu-testing.umd.min.js +2 -2
- package/bundles/material-menu-testing.umd.min.js.map +1 -1
- package/bundles/material-menu.umd.js +18 -6
- package/bundles/material-menu.umd.js.map +1 -1
- package/bundles/material-menu.umd.min.js +3 -3
- package/bundles/material-menu.umd.min.js.map +1 -1
- package/bundles/material-paginator-testing.umd.js +50 -34
- package/bundles/material-paginator-testing.umd.js.map +1 -1
- package/bundles/material-paginator-testing.umd.min.js +2 -2
- package/bundles/material-paginator-testing.umd.min.js.map +1 -1
- package/bundles/material-paginator.umd.js +9 -1
- package/bundles/material-paginator.umd.js.map +1 -1
- package/bundles/material-paginator.umd.min.js +1 -1
- package/bundles/material-paginator.umd.min.js.map +1 -1
- package/bundles/material-progress-bar-testing.umd.js +9 -1
- package/bundles/material-progress-bar-testing.umd.js.map +1 -1
- package/bundles/material-progress-bar-testing.umd.min.js +1 -1
- package/bundles/material-progress-bar-testing.umd.min.js.map +1 -1
- package/bundles/material-progress-bar.umd.js +9 -1
- package/bundles/material-progress-bar.umd.js.map +1 -1
- package/bundles/material-progress-bar.umd.min.js +1 -1
- package/bundles/material-progress-bar.umd.min.js.map +1 -1
- package/bundles/material-progress-spinner-testing.umd.js +9 -1
- package/bundles/material-progress-spinner-testing.umd.js.map +1 -1
- package/bundles/material-progress-spinner-testing.umd.min.js +1 -1
- package/bundles/material-progress-spinner-testing.umd.min.js.map +1 -1
- package/bundles/material-progress-spinner.umd.js +9 -1
- package/bundles/material-progress-spinner.umd.js.map +1 -1
- package/bundles/material-progress-spinner.umd.min.js +2 -2
- package/bundles/material-progress-spinner.umd.min.js.map +1 -1
- package/bundles/material-radio-testing.umd.js +88 -63
- package/bundles/material-radio-testing.umd.js.map +1 -1
- package/bundles/material-radio-testing.umd.min.js +2 -2
- package/bundles/material-radio-testing.umd.min.js.map +1 -1
- package/bundles/material-radio.umd.js +18 -5
- package/bundles/material-radio.umd.js.map +1 -1
- package/bundles/material-radio.umd.min.js +1 -1
- package/bundles/material-radio.umd.min.js.map +1 -1
- package/bundles/material-select-testing.umd.js +73 -51
- package/bundles/material-select-testing.umd.js.map +1 -1
- package/bundles/material-select-testing.umd.min.js +2 -2
- package/bundles/material-select-testing.umd.min.js.map +1 -1
- package/bundles/material-select.umd.js +9 -1
- package/bundles/material-select.umd.js.map +1 -1
- package/bundles/material-select.umd.min.js +4 -4
- package/bundles/material-select.umd.min.js.map +1 -1
- package/bundles/material-sidenav-testing.umd.js +175 -28
- package/bundles/material-sidenav-testing.umd.js.map +1 -1
- package/bundles/material-sidenav-testing.umd.min.js +2 -2
- package/bundles/material-sidenav-testing.umd.min.js.map +1 -1
- package/bundles/material-sidenav.umd.js +9 -1
- package/bundles/material-sidenav.umd.js.map +1 -1
- package/bundles/material-sidenav.umd.min.js +1 -1
- package/bundles/material-sidenav.umd.min.js.map +1 -1
- package/bundles/material-slide-toggle-testing.umd.js +9 -1
- package/bundles/material-slide-toggle-testing.umd.js.map +1 -1
- package/bundles/material-slide-toggle-testing.umd.min.js +1 -1
- package/bundles/material-slide-toggle-testing.umd.min.js.map +1 -1
- package/bundles/material-slide-toggle.umd.js +16 -3
- package/bundles/material-slide-toggle.umd.js.map +1 -1
- package/bundles/material-slide-toggle.umd.min.js +3 -3
- package/bundles/material-slide-toggle.umd.min.js.map +1 -1
- package/bundles/material-slider-testing.umd.js +15 -4
- package/bundles/material-slider-testing.umd.js.map +1 -1
- package/bundles/material-slider-testing.umd.min.js +2 -2
- package/bundles/material-slider-testing.umd.min.js.map +1 -1
- package/bundles/material-slider.umd.js +9 -1
- package/bundles/material-slider.umd.js.map +1 -1
- package/bundles/material-slider.umd.min.js +1 -1
- package/bundles/material-slider.umd.min.js.map +1 -1
- package/bundles/material-snack-bar-testing.umd.js +29 -12
- package/bundles/material-snack-bar-testing.umd.js.map +1 -1
- package/bundles/material-snack-bar-testing.umd.min.js +2 -2
- package/bundles/material-snack-bar-testing.umd.min.js.map +1 -1
- package/bundles/material-snack-bar.umd.js +20 -2
- package/bundles/material-snack-bar.umd.js.map +1 -1
- package/bundles/material-snack-bar.umd.min.js +1 -1
- package/bundles/material-snack-bar.umd.min.js.map +1 -1
- package/bundles/material-sort-testing.umd.js +9 -1
- package/bundles/material-sort-testing.umd.js.map +1 -1
- package/bundles/material-sort-testing.umd.min.js +1 -1
- package/bundles/material-sort-testing.umd.min.js.map +1 -1
- package/bundles/material-sort.umd.js +19 -5
- package/bundles/material-sort.umd.js.map +1 -1
- package/bundles/material-sort.umd.min.js +2 -2
- package/bundles/material-sort.umd.min.js.map +1 -1
- package/bundles/material-stepper-testing.umd.js +9 -1
- package/bundles/material-stepper-testing.umd.js.map +1 -1
- package/bundles/material-stepper-testing.umd.min.js +2 -2
- package/bundles/material-stepper-testing.umd.min.js.map +1 -1
- package/bundles/material-stepper.umd.js +16 -3
- package/bundles/material-stepper.umd.js.map +1 -1
- package/bundles/material-stepper.umd.min.js +3 -3
- package/bundles/material-stepper.umd.min.js.map +1 -1
- package/bundles/material-table-testing.umd.js +26 -17
- package/bundles/material-table-testing.umd.js.map +1 -1
- package/bundles/material-table-testing.umd.min.js +2 -2
- package/bundles/material-table-testing.umd.min.js.map +1 -1
- package/bundles/material-table.umd.js +66 -39
- package/bundles/material-table.umd.js.map +1 -1
- package/bundles/material-table.umd.min.js +3 -3
- package/bundles/material-table.umd.min.js.map +1 -1
- package/bundles/material-tabs-testing.umd.js +11 -3
- package/bundles/material-tabs-testing.umd.js.map +1 -1
- package/bundles/material-tabs-testing.umd.min.js +1 -1
- package/bundles/material-tabs-testing.umd.min.js.map +1 -1
- package/bundles/material-tabs.umd.js +10 -2
- package/bundles/material-tabs.umd.js.map +1 -1
- package/bundles/material-tabs.umd.min.js +5 -5
- package/bundles/material-tabs.umd.min.js.map +1 -1
- package/bundles/material-toolbar-testing.umd.js +11 -2
- package/bundles/material-toolbar-testing.umd.js.map +1 -1
- package/bundles/material-toolbar-testing.umd.min.js +2 -2
- package/bundles/material-toolbar-testing.umd.min.js.map +1 -1
- package/bundles/material-toolbar.umd.js +9 -1
- package/bundles/material-toolbar.umd.js.map +1 -1
- package/bundles/material-toolbar.umd.min.js +2 -2
- package/bundles/material-toolbar.umd.min.js.map +1 -1
- package/bundles/material-tooltip-testing.umd.js +9 -1
- package/bundles/material-tooltip-testing.umd.js.map +1 -1
- package/bundles/material-tooltip-testing.umd.min.js +1 -1
- package/bundles/material-tooltip-testing.umd.min.js.map +1 -1
- package/bundles/material-tooltip.umd.js +35 -7
- package/bundles/material-tooltip.umd.js.map +1 -1
- package/bundles/material-tooltip.umd.min.js +3 -3
- package/bundles/material-tooltip.umd.min.js.map +1 -1
- package/bundles/material-tree-testing.umd.js +10 -2
- package/bundles/material-tree-testing.umd.js.map +1 -1
- package/bundles/material-tree-testing.umd.min.js +1 -1
- package/bundles/material-tree-testing.umd.min.js.map +1 -1
- package/bundles/material-tree.umd.js +12 -3
- package/bundles/material-tree.umd.js.map +1 -1
- package/bundles/material-tree.umd.min.js +3 -3
- package/bundles/material-tree.umd.min.js.map +1 -1
- package/button/_button-base.scss +2 -2
- package/button/_button-theme.scss +10 -11
- package/button/index.metadata.json +1 -1
- package/button-toggle/_button-toggle-theme.scss +9 -10
- package/card/_card-theme.scss +5 -6
- package/checkbox/_checkbox-theme.scss +2 -3
- package/checkbox/testing/checkbox-harness.d.ts +21 -16
- package/chips/_chips-theme.scss +4 -5
- package/chips/testing/chip-harness-filters.d.ts +11 -3
- package/chips/testing/chip-harness.d.ts +5 -5
- package/chips/testing/chip-list-harness.d.ts +15 -12
- package/chips/testing/chip-listbox-harness.d.ts +34 -0
- package/chips/testing/chip-option-harness.d.ts +29 -0
- package/chips/testing/public-api.d.ts +3 -1
- package/core/_core.scss +6 -6
- package/core/color/_all-color.scss +2 -1
- package/core/datetime/date-formats.d.ts +1 -0
- package/core/density/private/_all-density.scss +34 -0
- package/core/density/{_index.scss → private/_compatibility.scss} +11 -8
- package/core/focus-indicators/_focus-indicators.scss +3 -4
- package/core/index.metadata.json +1 -1
- package/core/option/_optgroup-theme.scss +2 -3
- package/core/option/_option-theme.scss +2 -3
- package/core/option/index.d.ts +1 -0
- package/core/option/optgroup.d.ts +4 -0
- package/core/option/option-parent.d.ts +22 -0
- package/core/option/option.d.ts +2 -14
- package/core/ripple/_ripple.scss +2 -3
- package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +2 -3
- package/core/style/_elevation.scss +2 -18
- package/core/style/_form-common.scss +2 -2
- package/core/style/_private.scss +40 -0
- package/core/style/_vendor-prefixes.scss +3 -3
- package/core/testing/option-harness.d.ts +2 -0
- package/core/theming/_all-theme.scss +3 -2
- package/core/theming/_theming.scss +148 -38
- package/core/typography/_all-typography.scss +1 -1
- package/core/typography/_typography.scss +39 -9
- package/datepicker/_datepicker-theme.scss +15 -16
- package/datepicker/date-range-input-parts.d.ts +2 -3
- package/datepicker/date-range-input.d.ts +5 -4
- package/datepicker/date-selection-model.d.ts +10 -0
- package/datepicker/datepicker-actions.d.ts +33 -0
- package/datepicker/datepicker-base.d.ts +52 -9
- package/datepicker/datepicker-input-base.d.ts +5 -10
- package/datepicker/datepicker-input.d.ts +9 -8
- package/datepicker/datepicker-toggle.d.ts +4 -2
- package/datepicker/index.metadata.json +1 -1
- package/datepicker/public-api.d.ts +1 -0
- package/datepicker/year-view.d.ts +1 -1
- package/dialog/_dialog-theme.scss +4 -5
- package/divider/_divider-theme.scss +2 -3
- package/esm2015/autocomplete/autocomplete-trigger.js +11 -3
- package/esm2015/autocomplete/autocomplete.js +11 -4
- package/esm2015/autocomplete/testing/autocomplete-harness.js +27 -19
- package/esm2015/button/button.js +10 -5
- package/esm2015/checkbox/checkbox.js +8 -3
- package/esm2015/checkbox/testing/checkbox-harness.js +31 -36
- package/esm2015/chips/testing/chip-harness-filters.js +1 -1
- package/esm2015/chips/testing/chip-harness.js +6 -6
- package/esm2015/chips/testing/chip-list-harness.js +19 -16
- package/esm2015/chips/testing/chip-listbox-harness.js +49 -0
- package/esm2015/chips/testing/chip-option-harness.js +54 -0
- package/esm2015/chips/testing/public-api.js +4 -2
- package/esm2015/core/common-behaviors/common-module.js +1 -1
- package/esm2015/core/datetime/date-formats.js +1 -1
- package/esm2015/core/option/index.js +2 -1
- package/esm2015/core/option/optgroup.js +32 -7
- package/esm2015/core/option/option-parent.js +13 -0
- package/esm2015/core/option/option.js +5 -8
- package/esm2015/core/testing/option-harness.js +7 -2
- package/esm2015/core/version.js +1 -1
- package/esm2015/datepicker/calendar-body.js +1 -1
- package/esm2015/datepicker/date-range-input-parts.js +14 -16
- package/esm2015/datepicker/date-range-input.js +11 -4
- package/esm2015/datepicker/date-range-picker.js +3 -2
- package/esm2015/datepicker/date-selection-model.js +24 -1
- package/esm2015/datepicker/datepicker-actions.js +89 -0
- package/esm2015/datepicker/datepicker-base.js +69 -26
- package/esm2015/datepicker/datepicker-input-base.js +15 -27
- package/esm2015/datepicker/datepicker-input.js +11 -5
- package/esm2015/datepicker/datepicker-module.js +8 -1
- package/esm2015/datepicker/datepicker-toggle.js +7 -10
- package/esm2015/datepicker/datepicker.js +5 -2
- package/esm2015/datepicker/month-view.js +4 -3
- package/esm2015/datepicker/public-api.js +2 -1
- package/esm2015/datepicker/testing/date-range-input-harness.js +4 -4
- package/esm2015/datepicker/testing/datepicker-input-harness.js +3 -3
- package/esm2015/datepicker/testing/datepicker-trigger-harness-base.js +3 -3
- package/esm2015/datepicker/year-view.js +1 -1
- package/esm2015/dialog/dialog-ref.js +2 -2
- package/esm2015/expansion/expansion-panel-header.js +8 -3
- package/esm2015/expansion/expansion-panel.js +1 -1
- package/esm2015/form-field/form-field.js +2 -2
- package/esm2015/form-field/testing/form-field-harness.js +14 -9
- package/esm2015/grid-list/testing/grid-list-harness.js +6 -5
- package/esm2015/icon/icon-registry.js +39 -3
- package/esm2015/icon/testing/fake-icon-registry.js +4 -2
- package/esm2015/input/testing/input-harness.js +3 -3
- package/esm2015/input/testing/native-select-harness.js +7 -5
- package/esm2015/list/selection-list.js +1 -1
- package/esm2015/list/testing/list-harness-base.js +5 -4
- package/esm2015/list/testing/list-item-harness-base.js +5 -4
- package/esm2015/list/testing/selection-list-harness.js +8 -5
- package/esm2015/menu/menu-item.js +3 -3
- package/esm2015/menu/menu-trigger.js +10 -4
- package/esm2015/menu/menu.js +1 -1
- package/esm2015/menu/testing/menu-harness.js +44 -32
- package/esm2015/paginator/testing/paginator-harness.js +27 -25
- package/esm2015/radio/radio.js +10 -5
- package/esm2015/radio/testing/radio-harness.js +40 -29
- package/esm2015/select/testing/select-harness.js +36 -28
- package/esm2015/sidenav/testing/drawer-container-harness.js +41 -0
- package/esm2015/sidenav/testing/drawer-content-harness.js +23 -0
- package/esm2015/sidenav/testing/drawer-harness-filters.js +1 -1
- package/esm2015/sidenav/testing/drawer-harness.js +19 -13
- package/esm2015/sidenav/testing/public-api.js +6 -2
- package/esm2015/sidenav/testing/sidenav-container-harness.js +41 -0
- package/esm2015/sidenav/testing/sidenav-content-harness.js +23 -0
- package/esm2015/sidenav/testing/sidenav-harness.js +4 -4
- package/esm2015/slide-toggle/slide-toggle.js +8 -3
- package/esm2015/slider/testing/slider-harness.js +5 -5
- package/esm2015/snack-bar/snack-bar-container.js +12 -2
- package/esm2015/snack-bar/testing/snack-bar-harness.js +19 -12
- package/esm2015/sort/sort-header.js +11 -5
- package/esm2015/stepper/step-header.js +8 -3
- package/esm2015/table/table-data-source.js +34 -21
- package/esm2015/table/table.js +1 -1
- package/esm2015/table/testing/cell-harness.js +3 -3
- package/esm2015/table/testing/row-harness.js +5 -5
- package/esm2015/table/testing/table-harness.js +8 -8
- package/esm2015/tabs/tab-body.js +3 -3
- package/esm2015/tabs/testing/tab-group-harness.js +3 -3
- package/esm2015/tabs/testing/tab-nav-bar-harness.js +3 -3
- package/esm2015/toolbar/testing/toolbar-harness.js +3 -3
- package/esm2015/tooltip/tooltip.js +28 -7
- package/esm2015/tree/node.js +4 -3
- package/esm2015/tree/padding.js +1 -1
- package/esm2015/tree/testing/tree-harness.js +2 -2
- package/esm2015/tree/toggle.js +1 -1
- package/esm2015/tree/tree.js +1 -1
- package/expansion/_expansion-theme.scss +10 -11
- package/expansion/index.metadata.json +1 -1
- package/fesm2015/autocomplete/testing.js +26 -18
- package/fesm2015/autocomplete/testing.js.map +1 -1
- package/fesm2015/autocomplete.js +20 -6
- package/fesm2015/autocomplete.js.map +1 -1
- package/fesm2015/button.js +9 -4
- package/fesm2015/button.js.map +1 -1
- package/fesm2015/checkbox/testing.js +30 -35
- package/fesm2015/checkbox/testing.js.map +1 -1
- package/fesm2015/checkbox.js +7 -2
- package/fesm2015/checkbox.js.map +1 -1
- package/fesm2015/chips/testing.js +120 -21
- package/fesm2015/chips/testing.js.map +1 -1
- package/fesm2015/core/testing.js +6 -1
- package/fesm2015/core/testing.js.map +1 -1
- package/fesm2015/core.js +45 -13
- package/fesm2015/core.js.map +1 -1
- package/fesm2015/datepicker/testing.js +5 -5
- package/fesm2015/datepicker/testing.js.map +1 -1
- package/fesm2015/datepicker.js +281 -120
- package/fesm2015/datepicker.js.map +1 -1
- package/fesm2015/dialog.js +1 -1
- package/fesm2015/dialog.js.map +1 -1
- package/fesm2015/expansion.js +7 -2
- package/fesm2015/expansion.js.map +1 -1
- package/fesm2015/form-field/testing.js +13 -8
- package/fesm2015/form-field/testing.js.map +1 -1
- package/fesm2015/form-field.js +1 -1
- package/fesm2015/form-field.js.map +1 -1
- package/fesm2015/grid-list/testing.js +5 -4
- package/fesm2015/grid-list/testing.js.map +1 -1
- package/fesm2015/grid-list.js.map +1 -1
- package/fesm2015/icon/testing.js +3 -1
- package/fesm2015/icon/testing.js.map +1 -1
- package/fesm2015/icon.js +38 -2
- package/fesm2015/icon.js.map +1 -1
- package/fesm2015/input/testing.js +7 -5
- package/fesm2015/input/testing.js.map +1 -1
- package/fesm2015/list/testing.js +13 -8
- package/fesm2015/list/testing.js.map +1 -1
- package/fesm2015/list.js.map +1 -1
- package/fesm2015/menu/testing.js +45 -33
- package/fesm2015/menu/testing.js.map +1 -1
- package/fesm2015/menu.js +12 -6
- package/fesm2015/menu.js.map +1 -1
- package/fesm2015/paginator/testing.js +26 -24
- package/fesm2015/paginator/testing.js.map +1 -1
- package/fesm2015/paginator.js.map +1 -1
- package/fesm2015/progress-spinner.js.map +1 -1
- package/fesm2015/radio/testing.js +39 -28
- package/fesm2015/radio/testing.js.map +1 -1
- package/fesm2015/radio.js +9 -4
- package/fesm2015/radio.js.map +1 -1
- package/fesm2015/select/testing.js +36 -28
- package/fesm2015/select/testing.js.map +1 -1
- package/fesm2015/sidenav/testing.js +139 -15
- package/fesm2015/sidenav/testing.js.map +1 -1
- package/fesm2015/sidenav.js.map +1 -1
- package/fesm2015/slide-toggle.js +7 -2
- package/fesm2015/slide-toggle.js.map +1 -1
- package/fesm2015/slider/testing.js +4 -4
- package/fesm2015/slider/testing.js.map +1 -1
- package/fesm2015/snack-bar/testing.js +18 -11
- package/fesm2015/snack-bar/testing.js.map +1 -1
- package/fesm2015/snack-bar.js +11 -1
- package/fesm2015/snack-bar.js.map +1 -1
- package/fesm2015/sort.js +10 -4
- package/fesm2015/sort.js.map +1 -1
- package/fesm2015/stepper.js +7 -2
- package/fesm2015/stepper.js.map +1 -1
- package/fesm2015/table/testing.js +11 -11
- package/fesm2015/table/testing.js.map +1 -1
- package/fesm2015/table.js +35 -22
- package/fesm2015/table.js.map +1 -1
- package/fesm2015/tabs/testing.js +3 -3
- package/fesm2015/tabs/testing.js.map +1 -1
- package/fesm2015/tabs.js +2 -2
- package/fesm2015/tabs.js.map +1 -1
- package/fesm2015/toolbar/testing.js +2 -2
- package/fesm2015/toolbar/testing.js.map +1 -1
- package/fesm2015/tooltip.js +27 -7
- package/fesm2015/tooltip.js.map +1 -1
- package/fesm2015/tree/testing.js +1 -1
- package/fesm2015/tree/testing.js.map +1 -1
- package/fesm2015/tree.js +3 -2
- package/fesm2015/tree.js.map +1 -1
- package/form-field/_form-field-fill-theme.scss +4 -5
- package/form-field/_form-field-legacy-theme.scss +5 -6
- package/form-field/_form-field-outline-theme.scss +4 -5
- package/form-field/_form-field-standard-theme.scss +5 -6
- package/form-field/_form-field-theme.scss +8 -9
- package/form-field/index.metadata.json +1 -1
- package/grid-list/_grid-list-theme.scss +2 -3
- package/icon/_icon-theme.scss +2 -3
- package/icon/icon-registry.d.ts +23 -0
- package/icon/index.metadata.json +1 -1
- package/icon/testing/fake-icon-registry.d.ts +1 -0
- package/icon/testing/index.metadata.json +1 -1
- package/input/_input-theme.scss +3 -4
- package/list/_list-theme.scss +2 -3
- package/list/index.metadata.json +1 -1
- package/list/selection-list.d.ts +6 -1
- package/list/testing/list-harness-base.d.ts +1 -1
- package/list/testing/list-item-harness-base.d.ts +2 -2
- package/list/testing/selection-list-harness.d.ts +2 -1
- package/menu/_menu-theme.scss +4 -5
- package/menu/index.metadata.json +1 -1
- package/menu/menu-trigger.d.ts +1 -1
- package/menu/testing/menu-harness.d.ts +39 -26
- package/package.json +2 -2
- package/paginator/_paginator-theme.scss +7 -8
- package/paginator/testing/paginator-harness.d.ts +32 -19
- package/prebuilt-themes/deeppurple-amber.css +1 -1
- package/prebuilt-themes/indigo-pink.css +1 -1
- package/prebuilt-themes/pink-bluegrey.css +1 -1
- package/prebuilt-themes/purple-green.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +2 -3
- package/progress-spinner/_progress-spinner-theme.scss +2 -3
- package/radio/_radio-theme.scss +2 -3
- package/radio/index.metadata.json +1 -1
- package/radio/radio.d.ts +2 -2
- package/radio/testing/radio-harness.d.ts +39 -24
- package/schematics/ng-add/fonts/material-fonts.js +7 -5
- package/schematics/ng-add/index.js +1 -1
- package/select/_select-theme.scss +5 -6
- package/select/testing/select-harness.d.ts +28 -16
- package/sidenav/_sidenav-theme.scss +4 -5
- package/sidenav/testing/drawer-container-harness.d.ts +30 -0
- package/sidenav/testing/drawer-content-harness.d.ts +21 -0
- package/sidenav/testing/drawer-harness-filters.d.ts +6 -0
- package/sidenav/testing/drawer-harness.d.ts +13 -7
- package/sidenav/testing/public-api.d.ts +5 -1
- package/sidenav/testing/sidenav-container-harness.d.ts +30 -0
- package/sidenav/testing/sidenav-content-harness.d.ts +21 -0
- package/sidenav/testing/sidenav-harness.d.ts +3 -3
- package/slide-toggle/_slide-toggle-theme.scss +4 -5
- package/slide-toggle/slide-toggle.d.ts +2 -2
- package/slider/_slider-theme.scss +2 -3
- package/snack-bar/_snack-bar-theme.scss +4 -5
- package/snack-bar/index.metadata.json +1 -1
- package/snack-bar/snack-bar-container.d.ts +5 -0
- package/snack-bar/testing/snack-bar-harness.d.ts +7 -4
- package/sort/_sort-theme.scss +2 -3
- package/sort/index.metadata.json +1 -1
- package/sort/sort-header.d.ts +2 -1
- package/stepper/_stepper-theme.scss +7 -8
- package/stepper/step-header.d.ts +2 -2
- package/table/_table-theme.scss +2 -3
- package/table/index.metadata.json +1 -1
- package/table/table-data-source.d.ts +31 -20
- package/table/testing/cell-harness.d.ts +2 -2
- package/tabs/_tabs-common.scss +2 -2
- package/tabs/_tabs-theme.scss +14 -9
- package/tabs/index.metadata.json +1 -1
- package/tabs/tab-body.d.ts +3 -3
- package/toolbar/_toolbar-theme.scss +8 -9
- package/tooltip/_tooltip-theme.scss +2 -3
- package/tooltip/index.metadata.json +1 -1
- package/tooltip/tooltip.d.ts +10 -1
- package/tree/_tree-theme.scss +7 -8
- package/tree/index.metadata.json +1 -1
- package/tree/node.d.ts +7 -6
- package/tree/padding.d.ts +1 -1
- package/tree/toggle.d.ts +1 -1
- package/tree/tree.d.ts +1 -1
- package/core/density/_all-density.scss +0 -19
- package/core/style/_noop-animation.scss +0 -22
- package/core/theming/_check-duplicate-styles.scss +0 -106
package/fesm2015/datepicker.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
2
2
|
import { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
|
|
3
|
-
import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
|
|
3
|
+
import { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';
|
|
4
4
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
5
|
-
import { ɵɵdefineInjectable, Injectable, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, NgZone, Input, Output, Directive, Optional, SkipSelf, InjectionToken, ChangeDetectorRef, Inject, ViewChild, forwardRef, ViewContainerRef, Attribute, ContentChild, InjectFlags, Injector, Self, NgModule } from '@angular/core';
|
|
5
|
+
import { ɵɵdefineInjectable, Injectable, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, NgZone, Input, Output, Directive, Optional, SkipSelf, InjectionToken, ChangeDetectorRef, Inject, ViewChild, forwardRef, ViewContainerRef, Attribute, ContentChild, InjectFlags, Injector, Self, TemplateRef, NgModule } from '@angular/core';
|
|
6
6
|
import { MatButtonModule } from '@angular/material/button';
|
|
7
7
|
import { MatDialog, MatDialogModule } from '@angular/material/dialog';
|
|
8
8
|
import { CdkScrollableModule } from '@angular/cdk/scrolling';
|
|
@@ -327,7 +327,7 @@ MatCalendarBody.decorators = [
|
|
|
327
327
|
exportAs: 'matCalendarBody',
|
|
328
328
|
encapsulation: ViewEncapsulation.None,
|
|
329
329
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
330
|
-
styles: [".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\"\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:dotted 2px}[dir=rtl] .mat-calendar-body-label{text-align:right}@media(hover: none){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:transparent}}\n"]
|
|
330
|
+
styles: [".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\"\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.cdk-high-contrast-active .mat-calendar-body-disabled{opacity:.5}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.mat-datepicker-dialog .mat-dialog-container{position:relative;overflow:visible}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:dotted 2px}[dir=rtl] .mat-calendar-body-label{text-align:right}@media(hover: none){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:transparent}}\n"]
|
|
331
331
|
},] }
|
|
332
332
|
];
|
|
333
333
|
MatCalendarBody.ctorParameters = () => [
|
|
@@ -415,6 +415,17 @@ class MatDateSelectionModel {
|
|
|
415
415
|
_isValidDateInstance(date) {
|
|
416
416
|
return this._adapter.isDateInstance(date) && this._adapter.isValid(date);
|
|
417
417
|
}
|
|
418
|
+
/**
|
|
419
|
+
* Clones the selection model.
|
|
420
|
+
* @deprecated To be turned into an abstract method.
|
|
421
|
+
* @breaking-change 12.0.0
|
|
422
|
+
*/
|
|
423
|
+
clone() {
|
|
424
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
425
|
+
throw Error('Not implemented');
|
|
426
|
+
}
|
|
427
|
+
return null;
|
|
428
|
+
}
|
|
418
429
|
}
|
|
419
430
|
MatDateSelectionModel.decorators = [
|
|
420
431
|
{ type: Directive }
|
|
@@ -446,6 +457,12 @@ class MatSingleDateSelectionModel extends MatDateSelectionModel {
|
|
|
446
457
|
isComplete() {
|
|
447
458
|
return this.selection != null;
|
|
448
459
|
}
|
|
460
|
+
/** Clones the selection model. */
|
|
461
|
+
clone() {
|
|
462
|
+
const clone = new MatSingleDateSelectionModel(this._adapter);
|
|
463
|
+
clone.updateSelection(this.selection, this);
|
|
464
|
+
return clone;
|
|
465
|
+
}
|
|
449
466
|
}
|
|
450
467
|
MatSingleDateSelectionModel.decorators = [
|
|
451
468
|
{ type: Injectable }
|
|
@@ -500,6 +517,12 @@ class MatRangeDateSelectionModel extends MatDateSelectionModel {
|
|
|
500
517
|
isComplete() {
|
|
501
518
|
return this.selection.start != null && this.selection.end != null;
|
|
502
519
|
}
|
|
520
|
+
/** Clones the selection model. */
|
|
521
|
+
clone() {
|
|
522
|
+
const clone = new MatRangeDateSelectionModel(this._adapter);
|
|
523
|
+
clone.updateSelection(this.selection, this);
|
|
524
|
+
return clone;
|
|
525
|
+
}
|
|
503
526
|
}
|
|
504
527
|
MatRangeDateSelectionModel.decorators = [
|
|
505
528
|
{ type: Injectable }
|
|
@@ -756,8 +779,9 @@ class MatMonthView {
|
|
|
756
779
|
_init() {
|
|
757
780
|
this._setRanges(this.selected);
|
|
758
781
|
this._todayDate = this._getCellCompareValue(this._dateAdapter.today());
|
|
759
|
-
this._monthLabel =
|
|
760
|
-
this._dateAdapter.
|
|
782
|
+
this._monthLabel = this._dateFormats.display.monthLabel
|
|
783
|
+
? this._dateAdapter.format(this.activeDate, this._dateFormats.display.monthLabel)
|
|
784
|
+
: this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)]
|
|
761
785
|
.toLocaleUpperCase();
|
|
762
786
|
let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);
|
|
763
787
|
this._firstWeekOffset =
|
|
@@ -1802,7 +1826,7 @@ const _MatDatepickerContentMixinBase = mixinColor(MatDatepickerContentBase);
|
|
|
1802
1826
|
* @docs-private
|
|
1803
1827
|
*/
|
|
1804
1828
|
class MatDatepickerContent extends _MatDatepickerContentMixinBase {
|
|
1805
|
-
constructor(elementRef, _changeDetectorRef,
|
|
1829
|
+
constructor(elementRef, _changeDetectorRef, _globalModel, _dateAdapter, _rangeSelectionStrategy,
|
|
1806
1830
|
/**
|
|
1807
1831
|
* @deprecated `intl` argument to become required.
|
|
1808
1832
|
* @breaking-change 12.0.0
|
|
@@ -1810,7 +1834,7 @@ class MatDatepickerContent extends _MatDatepickerContentMixinBase {
|
|
|
1810
1834
|
intl) {
|
|
1811
1835
|
super(elementRef);
|
|
1812
1836
|
this._changeDetectorRef = _changeDetectorRef;
|
|
1813
|
-
this.
|
|
1837
|
+
this._globalModel = _globalModel;
|
|
1814
1838
|
this._dateAdapter = _dateAdapter;
|
|
1815
1839
|
this._rangeSelectionStrategy = _rangeSelectionStrategy;
|
|
1816
1840
|
this._subscriptions = new Subscription();
|
|
@@ -1818,11 +1842,19 @@ class MatDatepickerContent extends _MatDatepickerContentMixinBase {
|
|
|
1818
1842
|
this._animationState = 'enter';
|
|
1819
1843
|
/** Emits when an animation has finished. */
|
|
1820
1844
|
this._animationDone = new Subject();
|
|
1845
|
+
/** Portal with projected action buttons. */
|
|
1846
|
+
this._actionsPortal = null;
|
|
1821
1847
|
// @breaking-change 12.0.0 Remove fallback for `intl`.
|
|
1822
1848
|
this._closeButtonText = (intl === null || intl === void 0 ? void 0 : intl.closeCalendarLabel) || 'Close calendar';
|
|
1823
1849
|
}
|
|
1850
|
+
ngOnInit() {
|
|
1851
|
+
// If we have actions, clone the model so that we have the ability to cancel the selection,
|
|
1852
|
+
// otherwise update the global model directly. Note that we want to assign this as soon as
|
|
1853
|
+
// possible, but `_actionsPortal` isn't available in the constructor so we do it in `ngOnInit`.
|
|
1854
|
+
this._model = this._actionsPortal ? this._globalModel.clone() : this._globalModel;
|
|
1855
|
+
}
|
|
1824
1856
|
ngAfterViewInit() {
|
|
1825
|
-
this._subscriptions.add(this.datepicker.
|
|
1857
|
+
this._subscriptions.add(this.datepicker.stateChanges.subscribe(() => {
|
|
1826
1858
|
this._changeDetectorRef.markForCheck();
|
|
1827
1859
|
}));
|
|
1828
1860
|
this._calendar.focusActiveCell();
|
|
@@ -1848,7 +1880,8 @@ class MatDatepickerContent extends _MatDatepickerContentMixinBase {
|
|
|
1848
1880
|
!this._dateAdapter.sameDate(value, selection))) {
|
|
1849
1881
|
this._model.add(value);
|
|
1850
1882
|
}
|
|
1851
|
-
|
|
1883
|
+
// Delegate closing the popup to the actions.
|
|
1884
|
+
if ((!this._model || this._model.isComplete()) && !this._actionsPortal) {
|
|
1852
1885
|
this.datepicker.close();
|
|
1853
1886
|
}
|
|
1854
1887
|
}
|
|
@@ -1859,11 +1892,17 @@ class MatDatepickerContent extends _MatDatepickerContentMixinBase {
|
|
|
1859
1892
|
_getSelected() {
|
|
1860
1893
|
return this._model.selection;
|
|
1861
1894
|
}
|
|
1895
|
+
/** Applies the current pending selection to the global model. */
|
|
1896
|
+
_applyPendingSelection() {
|
|
1897
|
+
if (this._model !== this._globalModel) {
|
|
1898
|
+
this._globalModel.updateSelection(this._model.selection, this);
|
|
1899
|
+
}
|
|
1900
|
+
}
|
|
1862
1901
|
}
|
|
1863
1902
|
MatDatepickerContent.decorators = [
|
|
1864
1903
|
{ type: Component, args: [{
|
|
1865
1904
|
selector: 'mat-datepicker-content',
|
|
1866
|
-
template: "<div
|
|
1905
|
+
template: "<div\n cdkTrapFocus\n class=\"mat-datepicker-content-container\"\n [class.mat-datepicker-content-container-with-actions]=\"_actionsPortal\">\n <mat-calendar\n [id]=\"datepicker.id\"\n [ngClass]=\"datepicker.panelClass\"\n [startAt]=\"datepicker.startAt\"\n [startView]=\"datepicker.startView\"\n [minDate]=\"datepicker._getMinDate()\"\n [maxDate]=\"datepicker._getMaxDate()\"\n [dateFilter]=\"datepicker._getDateFilter()\"\n [headerComponent]=\"datepicker.calendarHeaderComponent\"\n [selected]=\"_getSelected()\"\n [dateClass]=\"datepicker.dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n [@fadeInCalendar]=\"'enter'\"\n (yearSelected)=\"datepicker._selectYear($event)\"\n (monthSelected)=\"datepicker._selectMonth($event)\"\n (viewChanged)=\"datepicker._viewChanged($event)\"\n (_userSelection)=\"_handleUserSelection($event)\"></mat-calendar>\n\n <ng-template [cdkPortalOutlet]=\"_actionsPortal\"></ng-template>\n\n <!-- Invisible close button for screen reader users. -->\n <button\n type=\"button\"\n mat-raised-button\n [color]=\"color || 'primary'\"\n class=\"mat-datepicker-close-button\"\n [class.cdk-visually-hidden]=\"!_closeButtonFocused\"\n (focus)=\"_closeButtonFocused = true\"\n (blur)=\"_closeButtonFocused = false\"\n (click)=\"datepicker.close()\">{{ _closeButtonText }}</button>\n</div>\n",
|
|
1867
1906
|
host: {
|
|
1868
1907
|
'class': 'mat-datepicker-content',
|
|
1869
1908
|
'[@transformPanel]': '_animationState',
|
|
@@ -1878,7 +1917,7 @@ MatDatepickerContent.decorators = [
|
|
|
1878
1917
|
encapsulation: ViewEncapsulation.None,
|
|
1879
1918
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1880
1919
|
inputs: ['color'],
|
|
1881
|
-
styles: [".mat-datepicker-content{display:block;border-radius:4px}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.mat-datepicker-content-touch{display:block;max-height:80vh;overflow:auto;margin:-24px}.mat-datepicker-content-touch .mat-
|
|
1920
|
+
styles: [".mat-datepicker-content{display:block;border-radius:4px}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{display:block;max-height:80vh;overflow:auto;margin:-24px}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}\n"]
|
|
1882
1921
|
},] }
|
|
1883
1922
|
];
|
|
1884
1923
|
MatDatepickerContent.ctorParameters = () => [
|
|
@@ -1937,7 +1976,7 @@ class MatDatepickerBase {
|
|
|
1937
1976
|
/** Unique class that will be added to the backdrop so that the test harnesses can look it up. */
|
|
1938
1977
|
this._backdropHarnessClass = `${this.id}-backdrop`;
|
|
1939
1978
|
/** Emits when the datepicker's state changes. */
|
|
1940
|
-
this.
|
|
1979
|
+
this.stateChanges = new Subject();
|
|
1941
1980
|
if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
1942
1981
|
throw createMissingDateImplError('DateAdapter');
|
|
1943
1982
|
}
|
|
@@ -1947,7 +1986,7 @@ class MatDatepickerBase {
|
|
|
1947
1986
|
get startAt() {
|
|
1948
1987
|
// If an explicit startAt is set we start there, otherwise we start at whatever the currently
|
|
1949
1988
|
// selected value is.
|
|
1950
|
-
return this._startAt || (this.
|
|
1989
|
+
return this._startAt || (this.datepickerInput ? this.datepickerInput.getStartValue() : null);
|
|
1951
1990
|
}
|
|
1952
1991
|
set startAt(value) {
|
|
1953
1992
|
this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
|
|
@@ -1955,7 +1994,7 @@ class MatDatepickerBase {
|
|
|
1955
1994
|
/** Color palette to use on the datepicker's calendar. */
|
|
1956
1995
|
get color() {
|
|
1957
1996
|
return this._color ||
|
|
1958
|
-
(this.
|
|
1997
|
+
(this.datepickerInput ? this.datepickerInput.getThemePalette() : undefined);
|
|
1959
1998
|
}
|
|
1960
1999
|
set color(value) {
|
|
1961
2000
|
this._color = value;
|
|
@@ -1970,14 +2009,14 @@ class MatDatepickerBase {
|
|
|
1970
2009
|
}
|
|
1971
2010
|
/** Whether the datepicker pop-up should be disabled. */
|
|
1972
2011
|
get disabled() {
|
|
1973
|
-
return this._disabled === undefined && this.
|
|
1974
|
-
this.
|
|
2012
|
+
return this._disabled === undefined && this.datepickerInput ?
|
|
2013
|
+
this.datepickerInput.disabled : !!this._disabled;
|
|
1975
2014
|
}
|
|
1976
2015
|
set disabled(value) {
|
|
1977
2016
|
const newValue = coerceBooleanProperty(value);
|
|
1978
2017
|
if (newValue !== this._disabled) {
|
|
1979
2018
|
this._disabled = newValue;
|
|
1980
|
-
this.
|
|
2019
|
+
this.stateChanges.next(undefined);
|
|
1981
2020
|
}
|
|
1982
2021
|
}
|
|
1983
2022
|
/**
|
|
@@ -1995,14 +2034,14 @@ class MatDatepickerBase {
|
|
|
1995
2034
|
}
|
|
1996
2035
|
/** The minimum selectable date. */
|
|
1997
2036
|
_getMinDate() {
|
|
1998
|
-
return this.
|
|
2037
|
+
return this.datepickerInput && this.datepickerInput.min;
|
|
1999
2038
|
}
|
|
2000
2039
|
/** The maximum selectable date. */
|
|
2001
2040
|
_getMaxDate() {
|
|
2002
|
-
return this.
|
|
2041
|
+
return this.datepickerInput && this.datepickerInput.max;
|
|
2003
2042
|
}
|
|
2004
2043
|
_getDateFilter() {
|
|
2005
|
-
return this.
|
|
2044
|
+
return this.datepickerInput && this.datepickerInput.dateFilter;
|
|
2006
2045
|
}
|
|
2007
2046
|
ngOnChanges(changes) {
|
|
2008
2047
|
const positionChange = changes['xPosition'] || changes['yPosition'];
|
|
@@ -2012,13 +2051,13 @@ class MatDatepickerBase {
|
|
|
2012
2051
|
this._popupRef.updatePosition();
|
|
2013
2052
|
}
|
|
2014
2053
|
}
|
|
2015
|
-
this.
|
|
2054
|
+
this.stateChanges.next(undefined);
|
|
2016
2055
|
}
|
|
2017
2056
|
ngOnDestroy() {
|
|
2018
2057
|
this._destroyPopup();
|
|
2019
2058
|
this.close();
|
|
2020
2059
|
this._inputStateChanges.unsubscribe();
|
|
2021
|
-
this.
|
|
2060
|
+
this.stateChanges.complete();
|
|
2022
2061
|
}
|
|
2023
2062
|
/** Selects the given date */
|
|
2024
2063
|
select(date) {
|
|
@@ -2041,22 +2080,41 @@ class MatDatepickerBase {
|
|
|
2041
2080
|
* @param input The datepicker input to register with this datepicker.
|
|
2042
2081
|
* @returns Selection model that the input should hook itself up to.
|
|
2043
2082
|
*/
|
|
2044
|
-
|
|
2045
|
-
if (this.
|
|
2083
|
+
registerInput(input) {
|
|
2084
|
+
if (this.datepickerInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
2046
2085
|
throw Error('A MatDatepicker can only be associated with a single input.');
|
|
2047
2086
|
}
|
|
2048
2087
|
this._inputStateChanges.unsubscribe();
|
|
2049
|
-
this.
|
|
2088
|
+
this.datepickerInput = input;
|
|
2050
2089
|
this._inputStateChanges =
|
|
2051
|
-
input.stateChanges.subscribe(() => this.
|
|
2090
|
+
input.stateChanges.subscribe(() => this.stateChanges.next(undefined));
|
|
2052
2091
|
return this._model;
|
|
2053
2092
|
}
|
|
2093
|
+
/**
|
|
2094
|
+
* Registers a portal containing action buttons with the datepicker.
|
|
2095
|
+
* @param portal Portal to be registered.
|
|
2096
|
+
*/
|
|
2097
|
+
registerActions(portal) {
|
|
2098
|
+
if (this._actionsPortal && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
2099
|
+
throw Error('A MatDatepicker can only be associated with a single actions row.');
|
|
2100
|
+
}
|
|
2101
|
+
this._actionsPortal = portal;
|
|
2102
|
+
}
|
|
2103
|
+
/**
|
|
2104
|
+
* Removes a portal containing action buttons from the datepicker.
|
|
2105
|
+
* @param portal Portal to be removed.
|
|
2106
|
+
*/
|
|
2107
|
+
removeActions(portal) {
|
|
2108
|
+
if (portal === this._actionsPortal) {
|
|
2109
|
+
this._actionsPortal = null;
|
|
2110
|
+
}
|
|
2111
|
+
}
|
|
2054
2112
|
/** Open the calendar. */
|
|
2055
2113
|
open() {
|
|
2056
2114
|
if (this._opened || this.disabled) {
|
|
2057
2115
|
return;
|
|
2058
2116
|
}
|
|
2059
|
-
if (!this.
|
|
2117
|
+
if (!this.datepickerInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
2060
2118
|
throw Error('Attempted to open an MatDatepicker with no associated input.');
|
|
2061
2119
|
}
|
|
2062
2120
|
if (this._document) {
|
|
@@ -2103,6 +2161,12 @@ class MatDatepickerBase {
|
|
|
2103
2161
|
completeClose();
|
|
2104
2162
|
}
|
|
2105
2163
|
}
|
|
2164
|
+
/** Applies the current pending selection on the popup to the model. */
|
|
2165
|
+
_applyPendingSelection() {
|
|
2166
|
+
var _a, _b;
|
|
2167
|
+
const instance = ((_a = this._popupComponentRef) === null || _a === void 0 ? void 0 : _a.instance) || ((_b = this._dialogRef) === null || _b === void 0 ? void 0 : _b.componentInstance);
|
|
2168
|
+
instance === null || instance === void 0 ? void 0 : instance._applyPendingSelection();
|
|
2169
|
+
}
|
|
2106
2170
|
/** Open the calendar as a dialog. */
|
|
2107
2171
|
_openAsDialog() {
|
|
2108
2172
|
// Usually this would be handled by `open` which ensures that we can only have one overlay
|
|
@@ -2128,7 +2192,9 @@ class MatDatepickerBase {
|
|
|
2128
2192
|
maxWidth: '80vw',
|
|
2129
2193
|
maxHeight: '',
|
|
2130
2194
|
position: {},
|
|
2131
|
-
|
|
2195
|
+
// Disable the dialog's automatic focus capturing, because it'll go to the close button
|
|
2196
|
+
// automatically. The calendar will move focus on its own once it renders.
|
|
2197
|
+
autoFocus: false,
|
|
2132
2198
|
// `MatDialog` has focus restoration built in, however we want to disable it since the
|
|
2133
2199
|
// datepicker also has focus restoration for dropdown mode. We want to do this, in order
|
|
2134
2200
|
// to ensure that the timing is consistent between dropdown and dialog modes since `MatDialog`
|
|
@@ -2156,11 +2222,12 @@ class MatDatepickerBase {
|
|
|
2156
2222
|
_forwardContentValues(instance) {
|
|
2157
2223
|
instance.datepicker = this;
|
|
2158
2224
|
instance.color = this.color;
|
|
2225
|
+
instance._actionsPortal = this._actionsPortal;
|
|
2159
2226
|
}
|
|
2160
2227
|
/** Create the popup. */
|
|
2161
2228
|
_createPopup() {
|
|
2162
2229
|
const positionStrategy = this._overlay.position()
|
|
2163
|
-
.flexibleConnectedTo(this.
|
|
2230
|
+
.flexibleConnectedTo(this.datepickerInput.getConnectedOverlayOrigin())
|
|
2164
2231
|
.withTransformOriginOn('.mat-datepicker-content')
|
|
2165
2232
|
.withFlexibleDimensions(false)
|
|
2166
2233
|
.withViewportMargin(8)
|
|
@@ -2177,7 +2244,7 @@ class MatDatepickerBase {
|
|
|
2177
2244
|
this._popupRef.overlayElement.setAttribute('role', 'dialog');
|
|
2178
2245
|
merge(this._popupRef.backdropClick(), this._popupRef.detachments(), this._popupRef.keydownEvents().pipe(filter(event => {
|
|
2179
2246
|
// Closing on alt + up is only valid when there's an input associated with the datepicker.
|
|
2180
|
-
return (event.keyCode === ESCAPE && !hasModifierKey(event)) || (this.
|
|
2247
|
+
return (event.keyCode === ESCAPE && !hasModifierKey(event)) || (this.datepickerInput &&
|
|
2181
2248
|
hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW);
|
|
2182
2249
|
}))).subscribe(event => {
|
|
2183
2250
|
if (event) {
|
|
@@ -2280,7 +2347,10 @@ MatDatepicker.decorators = [
|
|
|
2280
2347
|
exportAs: 'matDatepicker',
|
|
2281
2348
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2282
2349
|
encapsulation: ViewEncapsulation.None,
|
|
2283
|
-
providers: [
|
|
2350
|
+
providers: [
|
|
2351
|
+
MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER,
|
|
2352
|
+
{ provide: MatDatepickerBase, useExisting: MatDatepicker },
|
|
2353
|
+
]
|
|
2284
2354
|
},] }
|
|
2285
2355
|
];
|
|
2286
2356
|
|
|
@@ -2317,8 +2387,6 @@ class MatDatepickerInputBase {
|
|
|
2317
2387
|
this.dateChange = new EventEmitter();
|
|
2318
2388
|
/** Emits when an `input` event is fired on this `<input>`. */
|
|
2319
2389
|
this.dateInput = new EventEmitter();
|
|
2320
|
-
/** Emits when the value changes (either due to user input or programmatic change). */
|
|
2321
|
-
this._valueChange = new EventEmitter();
|
|
2322
2390
|
/** Emits when the internal state has changed */
|
|
2323
2391
|
this.stateChanges = new Subject();
|
|
2324
2392
|
this._onTouched = () => { };
|
|
@@ -2365,7 +2433,7 @@ class MatDatepickerInputBase {
|
|
|
2365
2433
|
}
|
|
2366
2434
|
// Update the displayed date when the locale changes.
|
|
2367
2435
|
this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {
|
|
2368
|
-
this.
|
|
2436
|
+
this._assignValueProgrammatically(this.value);
|
|
2369
2437
|
});
|
|
2370
2438
|
}
|
|
2371
2439
|
/** The value of the input. */
|
|
@@ -2373,15 +2441,7 @@ class MatDatepickerInputBase {
|
|
|
2373
2441
|
return this._model ? this._getValueFromModel(this._model.selection) : this._pendingValue;
|
|
2374
2442
|
}
|
|
2375
2443
|
set value(value) {
|
|
2376
|
-
|
|
2377
|
-
this._lastValueValid = this._isValidValue(value);
|
|
2378
|
-
value = this._dateAdapter.getValidDateOrNull(value);
|
|
2379
|
-
const oldDate = this.value;
|
|
2380
|
-
this._assignValue(value);
|
|
2381
|
-
this._formatValue(value);
|
|
2382
|
-
if (!this._dateAdapter.sameDate(oldDate, value)) {
|
|
2383
|
-
this._valueChange.emit(value);
|
|
2384
|
-
}
|
|
2444
|
+
this._assignValueProgrammatically(value);
|
|
2385
2445
|
}
|
|
2386
2446
|
/** Whether the datepicker-input is disabled. */
|
|
2387
2447
|
get disabled() { return !!this._disabled || this._parentDisabled(); }
|
|
@@ -2415,22 +2475,14 @@ class MatDatepickerInputBase {
|
|
|
2415
2475
|
this._assignValue(this._pendingValue);
|
|
2416
2476
|
}
|
|
2417
2477
|
this._valueChangesSubscription = this._model.selectionChanged.subscribe(event => {
|
|
2418
|
-
if (event
|
|
2478
|
+
if (this._shouldHandleChangeEvent(event)) {
|
|
2419
2479
|
const value = this._getValueFromModel(event.selection);
|
|
2420
2480
|
this._lastValueValid = this._isValidValue(value);
|
|
2421
2481
|
this._cvaOnChange(value);
|
|
2422
2482
|
this._onTouched();
|
|
2423
2483
|
this._formatValue(value);
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
// good way of distinguishing it at the moment.
|
|
2427
|
-
if (this._canEmitChangeEvent(event)) {
|
|
2428
|
-
this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));
|
|
2429
|
-
this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));
|
|
2430
|
-
}
|
|
2431
|
-
if (this._outsideValueChanged) {
|
|
2432
|
-
this._outsideValueChanged();
|
|
2433
|
-
}
|
|
2484
|
+
this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));
|
|
2485
|
+
this.dateChange.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));
|
|
2434
2486
|
}
|
|
2435
2487
|
});
|
|
2436
2488
|
}
|
|
@@ -2445,7 +2497,6 @@ class MatDatepickerInputBase {
|
|
|
2445
2497
|
ngOnDestroy() {
|
|
2446
2498
|
this._valueChangesSubscription.unsubscribe();
|
|
2447
2499
|
this._localeSubscription.unsubscribe();
|
|
2448
|
-
this._valueChange.complete();
|
|
2449
2500
|
this.stateChanges.complete();
|
|
2450
2501
|
}
|
|
2451
2502
|
/** @docs-private */
|
|
@@ -2458,7 +2509,7 @@ class MatDatepickerInputBase {
|
|
|
2458
2509
|
}
|
|
2459
2510
|
// Implemented as part of ControlValueAccessor.
|
|
2460
2511
|
writeValue(value) {
|
|
2461
|
-
this.value
|
|
2512
|
+
this._assignValueProgrammatically(value);
|
|
2462
2513
|
}
|
|
2463
2514
|
// Implemented as part of ControlValueAccessor.
|
|
2464
2515
|
registerOnChange(fn) {
|
|
@@ -2487,7 +2538,6 @@ class MatDatepickerInputBase {
|
|
|
2487
2538
|
if (!this._dateAdapter.sameDate(date, this.value)) {
|
|
2488
2539
|
this._assignValue(date);
|
|
2489
2540
|
this._cvaOnChange(date);
|
|
2490
|
-
this._valueChange.emit(date);
|
|
2491
2541
|
this.dateInput.emit(new MatDatepickerInputEvent(this, this._elementRef.nativeElement));
|
|
2492
2542
|
}
|
|
2493
2543
|
else {
|
|
@@ -2540,6 +2590,14 @@ class MatDatepickerInputBase {
|
|
|
2540
2590
|
_parentDisabled() {
|
|
2541
2591
|
return false;
|
|
2542
2592
|
}
|
|
2593
|
+
/** Programmatically assigns a value to the input. */
|
|
2594
|
+
_assignValueProgrammatically(value) {
|
|
2595
|
+
value = this._dateAdapter.deserialize(value);
|
|
2596
|
+
this._lastValueValid = this._isValidValue(value);
|
|
2597
|
+
value = this._dateAdapter.getValidDateOrNull(value);
|
|
2598
|
+
this._assignValue(value);
|
|
2599
|
+
this._formatValue(value);
|
|
2600
|
+
}
|
|
2543
2601
|
/** Gets whether a value matches the current date filter. */
|
|
2544
2602
|
_matchesFilter(value) {
|
|
2545
2603
|
const filter = this._getDateFilter();
|
|
@@ -2604,13 +2662,15 @@ class MatDatepickerInput extends MatDatepickerInputBase {
|
|
|
2604
2662
|
constructor(elementRef, dateAdapter, dateFormats, _formField) {
|
|
2605
2663
|
super(elementRef, dateAdapter, dateFormats);
|
|
2606
2664
|
this._formField = _formField;
|
|
2665
|
+
this._closedSubscription = Subscription.EMPTY;
|
|
2607
2666
|
this._validator = Validators.compose(super._getValidators());
|
|
2608
2667
|
}
|
|
2609
2668
|
/** The datepicker that this input is associated with. */
|
|
2610
2669
|
set matDatepicker(datepicker) {
|
|
2611
2670
|
if (datepicker) {
|
|
2612
2671
|
this._datepicker = datepicker;
|
|
2613
|
-
this.
|
|
2672
|
+
this._closedSubscription = datepicker.closedStream.subscribe(() => this._onTouched());
|
|
2673
|
+
this._registerModel(datepicker.registerInput(this));
|
|
2614
2674
|
}
|
|
2615
2675
|
}
|
|
2616
2676
|
/** The minimum valid date. */
|
|
@@ -2655,6 +2715,10 @@ class MatDatepickerInput extends MatDatepickerInputBase {
|
|
|
2655
2715
|
getStartValue() {
|
|
2656
2716
|
return this.value;
|
|
2657
2717
|
}
|
|
2718
|
+
ngOnDestroy() {
|
|
2719
|
+
super.ngOnDestroy();
|
|
2720
|
+
this._closedSubscription.unsubscribe();
|
|
2721
|
+
}
|
|
2658
2722
|
/** Opens the associated datepicker. */
|
|
2659
2723
|
_openPopup() {
|
|
2660
2724
|
if (this._datepicker) {
|
|
@@ -2681,8 +2745,8 @@ class MatDatepickerInput extends MatDatepickerInputBase {
|
|
|
2681
2745
|
_getDateFilter() {
|
|
2682
2746
|
return this._dateFilter;
|
|
2683
2747
|
}
|
|
2684
|
-
|
|
2685
|
-
return
|
|
2748
|
+
_shouldHandleChangeEvent(event) {
|
|
2749
|
+
return event.source !== this;
|
|
2686
2750
|
}
|
|
2687
2751
|
}
|
|
2688
2752
|
MatDatepickerInput.decorators = [
|
|
@@ -2775,9 +2839,9 @@ class MatDatepickerToggle {
|
|
|
2775
2839
|
}
|
|
2776
2840
|
}
|
|
2777
2841
|
_watchStateChanges() {
|
|
2778
|
-
const datepickerStateChanged = this.datepicker ? this.datepicker.
|
|
2779
|
-
const inputStateChanged = this.datepicker && this.datepicker.
|
|
2780
|
-
this.datepicker.
|
|
2842
|
+
const datepickerStateChanged = this.datepicker ? this.datepicker.stateChanges : of();
|
|
2843
|
+
const inputStateChanged = this.datepicker && this.datepicker.datepickerInput ?
|
|
2844
|
+
this.datepicker.datepickerInput.stateChanges : of();
|
|
2781
2845
|
const datepickerToggled = this.datepicker ?
|
|
2782
2846
|
merge(this.datepicker.openedStream, this.datepicker.closedStream) :
|
|
2783
2847
|
of();
|
|
@@ -2788,18 +2852,15 @@ class MatDatepickerToggle {
|
|
|
2788
2852
|
MatDatepickerToggle.decorators = [
|
|
2789
2853
|
{ type: Component, args: [{
|
|
2790
2854
|
selector: 'mat-datepicker-toggle',
|
|
2791
|
-
template: "<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"datepicker ? 'dialog' : null\"\n [attr.aria-label]=\"_intl.openCalendarLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\"\n (click)=\"_open($event)\">\n\n <svg\n *ngIf=\"!_customIcon\"\n class=\"mat-datepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"/>\n </svg>\n\n <ng-content select=\"[matDatepickerToggleIcon]\"></ng-content>\n</button>\n",
|
|
2855
|
+
template: "<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"datepicker ? 'dialog' : null\"\n [attr.aria-label]=\"ariaLabel || _intl.openCalendarLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\"\n (click)=\"_open($event)\">\n\n <svg\n *ngIf=\"!_customIcon\"\n class=\"mat-datepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"/>\n </svg>\n\n <ng-content select=\"[matDatepickerToggleIcon]\"></ng-content>\n</button>\n",
|
|
2792
2856
|
host: {
|
|
2793
2857
|
'class': 'mat-datepicker-toggle',
|
|
2794
|
-
|
|
2795
|
-
// consumer may have provided, while still being able to receive focus.
|
|
2796
|
-
'[attr.tabindex]': 'disabled ? null : -1',
|
|
2858
|
+
'[attr.tabindex]': 'null',
|
|
2797
2859
|
'[class.mat-datepicker-toggle-active]': 'datepicker && datepicker.opened',
|
|
2798
2860
|
'[class.mat-accent]': 'datepicker && datepicker.color === "accent"',
|
|
2799
2861
|
'[class.mat-warn]': 'datepicker && datepicker.color === "warn"',
|
|
2800
2862
|
// Used by the test harness to tie this toggle to its datepicker.
|
|
2801
2863
|
'[attr.data-mat-calendar]': 'datepicker ? datepicker.id : null',
|
|
2802
|
-
'(focus)': '_button.focus()',
|
|
2803
2864
|
},
|
|
2804
2865
|
exportAs: 'matDatepickerToggle',
|
|
2805
2866
|
encapsulation: ViewEncapsulation.None,
|
|
@@ -2815,6 +2876,7 @@ MatDatepickerToggle.ctorParameters = () => [
|
|
|
2815
2876
|
MatDatepickerToggle.propDecorators = {
|
|
2816
2877
|
datepicker: [{ type: Input, args: ['for',] }],
|
|
2817
2878
|
tabIndex: [{ type: Input }],
|
|
2879
|
+
ariaLabel: [{ type: Input, args: ['aria-label',] }],
|
|
2818
2880
|
disabled: [{ type: Input }],
|
|
2819
2881
|
disableRipple: [{ type: Input }],
|
|
2820
2882
|
_customIcon: [{ type: ContentChild, args: [MatDatepickerToggleIcon,] }],
|
|
@@ -2844,11 +2906,6 @@ class MatDateRangeInputPartBase extends MatDatepickerInputBase {
|
|
|
2844
2906
|
this._injector = _injector;
|
|
2845
2907
|
this._parentForm = _parentForm;
|
|
2846
2908
|
this._parentFormGroup = _parentFormGroup;
|
|
2847
|
-
this._outsideValueChanged = () => {
|
|
2848
|
-
// Whenever the value changes outside the input we need to revalidate, because
|
|
2849
|
-
// the validation state of each of the inputs depends on the other one.
|
|
2850
|
-
this._validatorOnChange();
|
|
2851
|
-
};
|
|
2852
2909
|
}
|
|
2853
2910
|
ngOnInit() {
|
|
2854
2911
|
// We need the date input to provide itself as a `ControlValueAccessor` and a `Validator`, while
|
|
@@ -2906,6 +2963,15 @@ class MatDateRangeInputPartBase extends MatDatepickerInputBase {
|
|
|
2906
2963
|
_parentDisabled() {
|
|
2907
2964
|
return this._rangeInput._groupDisabled;
|
|
2908
2965
|
}
|
|
2966
|
+
_shouldHandleChangeEvent({ source }) {
|
|
2967
|
+
return source !== this._rangeInput._startInput && source !== this._rangeInput._endInput;
|
|
2968
|
+
}
|
|
2969
|
+
_assignValueProgrammatically(value) {
|
|
2970
|
+
super._assignValueProgrammatically(value);
|
|
2971
|
+
const opposite = (this === this._rangeInput._startInput ? this._rangeInput._endInput :
|
|
2972
|
+
this._rangeInput._startInput);
|
|
2973
|
+
opposite === null || opposite === void 0 ? void 0 : opposite._validatorOnChange();
|
|
2974
|
+
}
|
|
2909
2975
|
}
|
|
2910
2976
|
MatDateRangeInputPartBase.decorators = [
|
|
2911
2977
|
{ type: Directive }
|
|
@@ -2939,9 +3005,6 @@ class MatStartDate extends _MatDateRangeInputBase {
|
|
|
2939
3005
|
null : { 'matStartDateInvalid': { 'end': end, 'actual': start } };
|
|
2940
3006
|
};
|
|
2941
3007
|
this._validator = Validators.compose([...super._getValidators(), this._startValidator]);
|
|
2942
|
-
this._canEmitChangeEvent = (event) => {
|
|
2943
|
-
return event.source !== this._rangeInput._endInput;
|
|
2944
|
-
};
|
|
2945
3008
|
}
|
|
2946
3009
|
ngOnInit() {
|
|
2947
3010
|
// Normally this happens automatically, but it seems to break if not added explicitly when all
|
|
@@ -2968,7 +3031,6 @@ class MatStartDate extends _MatDateRangeInputBase {
|
|
|
2968
3031
|
if (this._model) {
|
|
2969
3032
|
const range = new DateRange(value, this._model.selection.end);
|
|
2970
3033
|
this._model.updateSelection(range, this);
|
|
2971
|
-
this._cvaOnChange(value);
|
|
2972
3034
|
}
|
|
2973
3035
|
}
|
|
2974
3036
|
_formatValue(value) {
|
|
@@ -3006,7 +3068,8 @@ MatStartDate.decorators = [
|
|
|
3006
3068
|
],
|
|
3007
3069
|
// These need to be specified explicitly, because some tooling doesn't
|
|
3008
3070
|
// seem to pick them up from the base class. See #20932.
|
|
3009
|
-
outputs: ['dateChange', 'dateInput']
|
|
3071
|
+
outputs: ['dateChange', 'dateInput'],
|
|
3072
|
+
inputs: ['errorStateMatcher']
|
|
3010
3073
|
},] }
|
|
3011
3074
|
];
|
|
3012
3075
|
MatStartDate.ctorParameters = () => [
|
|
@@ -3035,9 +3098,6 @@ class MatEndDate extends _MatDateRangeInputBase {
|
|
|
3035
3098
|
null : { 'matEndDateInvalid': { 'start': start, 'actual': end } };
|
|
3036
3099
|
};
|
|
3037
3100
|
this._validator = Validators.compose([...super._getValidators(), this._endValidator]);
|
|
3038
|
-
this._canEmitChangeEvent = (event) => {
|
|
3039
|
-
return event.source !== this._rangeInput._startInput;
|
|
3040
|
-
};
|
|
3041
3101
|
}
|
|
3042
3102
|
ngOnInit() {
|
|
3043
3103
|
// Normally this happens automatically, but it seems to break if not added explicitly when all
|
|
@@ -3064,7 +3124,6 @@ class MatEndDate extends _MatDateRangeInputBase {
|
|
|
3064
3124
|
if (this._model) {
|
|
3065
3125
|
const range = new DateRange(this._model.selection.start, value);
|
|
3066
3126
|
this._model.updateSelection(range, this);
|
|
3067
|
-
this._cvaOnChange(value);
|
|
3068
3127
|
}
|
|
3069
3128
|
}
|
|
3070
3129
|
_onKeydown(event) {
|
|
@@ -3097,7 +3156,8 @@ MatEndDate.decorators = [
|
|
|
3097
3156
|
],
|
|
3098
3157
|
// These need to be specified explicitly, because some tooling doesn't
|
|
3099
3158
|
// seem to pick them up from the base class. See #20932.
|
|
3100
|
-
outputs: ['dateChange', 'dateInput']
|
|
3159
|
+
outputs: ['dateChange', 'dateInput'],
|
|
3160
|
+
inputs: ['errorStateMatcher']
|
|
3101
3161
|
},] }
|
|
3102
3162
|
];
|
|
3103
3163
|
MatEndDate.ctorParameters = () => [
|
|
@@ -3111,41 +3171,6 @@ MatEndDate.ctorParameters = () => [
|
|
|
3111
3171
|
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_FORMATS,] }] }
|
|
3112
3172
|
];
|
|
3113
3173
|
|
|
3114
|
-
/**
|
|
3115
|
-
* @license
|
|
3116
|
-
* Copyright Google LLC All Rights Reserved.
|
|
3117
|
-
*
|
|
3118
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
3119
|
-
* found in the LICENSE file at https://angular.io/license
|
|
3120
|
-
*/
|
|
3121
|
-
// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit
|
|
3122
|
-
// template reference variables (e.g. #d vs #d="matDateRangePicker"). We can change this to a
|
|
3123
|
-
// directive if angular adds support for `exportAs: '$implicit'` on directives.
|
|
3124
|
-
/** Component responsible for managing the date range picker popup/dialog. */
|
|
3125
|
-
class MatDateRangePicker extends MatDatepickerBase {
|
|
3126
|
-
_forwardContentValues(instance) {
|
|
3127
|
-
super._forwardContentValues(instance);
|
|
3128
|
-
const input = this._datepickerInput;
|
|
3129
|
-
if (input) {
|
|
3130
|
-
instance.comparisonStart = input.comparisonStart;
|
|
3131
|
-
instance.comparisonEnd = input.comparisonEnd;
|
|
3132
|
-
}
|
|
3133
|
-
}
|
|
3134
|
-
}
|
|
3135
|
-
MatDateRangePicker.decorators = [
|
|
3136
|
-
{ type: Component, args: [{
|
|
3137
|
-
selector: 'mat-date-range-picker',
|
|
3138
|
-
template: '',
|
|
3139
|
-
exportAs: 'matDateRangePicker',
|
|
3140
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3141
|
-
encapsulation: ViewEncapsulation.None,
|
|
3142
|
-
providers: [
|
|
3143
|
-
MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER,
|
|
3144
|
-
MAT_CALENDAR_RANGE_STRATEGY_PROVIDER,
|
|
3145
|
-
]
|
|
3146
|
-
},] }
|
|
3147
|
-
];
|
|
3148
|
-
|
|
3149
3174
|
/**
|
|
3150
3175
|
* @license
|
|
3151
3176
|
* Copyright Google LLC All Rights Reserved.
|
|
@@ -3160,6 +3185,7 @@ class MatDateRangeInput {
|
|
|
3160
3185
|
this._elementRef = _elementRef;
|
|
3161
3186
|
this._dateAdapter = _dateAdapter;
|
|
3162
3187
|
this._formField = _formField;
|
|
3188
|
+
this._closedSubscription = Subscription.EMPTY;
|
|
3163
3189
|
/** Unique ID for the input. */
|
|
3164
3190
|
this.id = `mat-date-range-input-${nextUniqueId++}`;
|
|
3165
3191
|
/** Whether the control is focused. */
|
|
@@ -3206,8 +3232,14 @@ class MatDateRangeInput {
|
|
|
3206
3232
|
get rangePicker() { return this._rangePicker; }
|
|
3207
3233
|
set rangePicker(rangePicker) {
|
|
3208
3234
|
if (rangePicker) {
|
|
3209
|
-
this._model = rangePicker.
|
|
3235
|
+
this._model = rangePicker.registerInput(this);
|
|
3210
3236
|
this._rangePicker = rangePicker;
|
|
3237
|
+
this._closedSubscription.unsubscribe();
|
|
3238
|
+
this._closedSubscription = rangePicker.closedStream.subscribe(() => {
|
|
3239
|
+
var _a, _b;
|
|
3240
|
+
(_a = this._startInput) === null || _a === void 0 ? void 0 : _a._onTouched();
|
|
3241
|
+
(_b = this._endInput) === null || _b === void 0 ? void 0 : _b._onTouched();
|
|
3242
|
+
});
|
|
3211
3243
|
this._registerModel(this._model);
|
|
3212
3244
|
}
|
|
3213
3245
|
}
|
|
@@ -3320,6 +3352,7 @@ class MatDateRangeInput {
|
|
|
3320
3352
|
}
|
|
3321
3353
|
}
|
|
3322
3354
|
ngOnDestroy() {
|
|
3355
|
+
this._closedSubscription.unsubscribe();
|
|
3323
3356
|
this.stateChanges.complete();
|
|
3324
3357
|
}
|
|
3325
3358
|
/** Gets the date at which the calendar should start. */
|
|
@@ -3428,6 +3461,128 @@ MatDateRangeInput.propDecorators = {
|
|
|
3428
3461
|
_endInput: [{ type: ContentChild, args: [MatEndDate,] }]
|
|
3429
3462
|
};
|
|
3430
3463
|
|
|
3464
|
+
/**
|
|
3465
|
+
* @license
|
|
3466
|
+
* Copyright Google LLC All Rights Reserved.
|
|
3467
|
+
*
|
|
3468
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
3469
|
+
* found in the LICENSE file at https://angular.io/license
|
|
3470
|
+
*/
|
|
3471
|
+
// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit
|
|
3472
|
+
// template reference variables (e.g. #d vs #d="matDateRangePicker"). We can change this to a
|
|
3473
|
+
// directive if angular adds support for `exportAs: '$implicit'` on directives.
|
|
3474
|
+
/** Component responsible for managing the date range picker popup/dialog. */
|
|
3475
|
+
class MatDateRangePicker extends MatDatepickerBase {
|
|
3476
|
+
_forwardContentValues(instance) {
|
|
3477
|
+
super._forwardContentValues(instance);
|
|
3478
|
+
const input = this.datepickerInput;
|
|
3479
|
+
if (input) {
|
|
3480
|
+
instance.comparisonStart = input.comparisonStart;
|
|
3481
|
+
instance.comparisonEnd = input.comparisonEnd;
|
|
3482
|
+
}
|
|
3483
|
+
}
|
|
3484
|
+
}
|
|
3485
|
+
MatDateRangePicker.decorators = [
|
|
3486
|
+
{ type: Component, args: [{
|
|
3487
|
+
selector: 'mat-date-range-picker',
|
|
3488
|
+
template: '',
|
|
3489
|
+
exportAs: 'matDateRangePicker',
|
|
3490
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3491
|
+
encapsulation: ViewEncapsulation.None,
|
|
3492
|
+
providers: [
|
|
3493
|
+
MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER,
|
|
3494
|
+
MAT_CALENDAR_RANGE_STRATEGY_PROVIDER,
|
|
3495
|
+
{ provide: MatDatepickerBase, useExisting: MatDateRangePicker },
|
|
3496
|
+
]
|
|
3497
|
+
},] }
|
|
3498
|
+
];
|
|
3499
|
+
|
|
3500
|
+
/**
|
|
3501
|
+
* @license
|
|
3502
|
+
* Copyright Google LLC All Rights Reserved.
|
|
3503
|
+
*
|
|
3504
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
3505
|
+
* found in the LICENSE file at https://angular.io/license
|
|
3506
|
+
*/
|
|
3507
|
+
/** Button that will close the datepicker and assign the current selection to the data model. */
|
|
3508
|
+
class MatDatepickerApply {
|
|
3509
|
+
constructor(_datepicker) {
|
|
3510
|
+
this._datepicker = _datepicker;
|
|
3511
|
+
}
|
|
3512
|
+
_applySelection() {
|
|
3513
|
+
this._datepicker._applyPendingSelection();
|
|
3514
|
+
this._datepicker.close();
|
|
3515
|
+
}
|
|
3516
|
+
}
|
|
3517
|
+
MatDatepickerApply.decorators = [
|
|
3518
|
+
{ type: Directive, args: [{
|
|
3519
|
+
selector: '[matDatepickerApply], [matDateRangePickerApply]',
|
|
3520
|
+
host: { '(click)': '_applySelection()' }
|
|
3521
|
+
},] }
|
|
3522
|
+
];
|
|
3523
|
+
MatDatepickerApply.ctorParameters = () => [
|
|
3524
|
+
{ type: MatDatepickerBase }
|
|
3525
|
+
];
|
|
3526
|
+
/** Button that will close the datepicker and discard the current selection. */
|
|
3527
|
+
class MatDatepickerCancel {
|
|
3528
|
+
constructor(_datepicker) {
|
|
3529
|
+
this._datepicker = _datepicker;
|
|
3530
|
+
}
|
|
3531
|
+
}
|
|
3532
|
+
MatDatepickerCancel.decorators = [
|
|
3533
|
+
{ type: Directive, args: [{
|
|
3534
|
+
selector: '[matDatepickerCancel], [matDateRangePickerCancel]',
|
|
3535
|
+
host: { '(click)': '_datepicker.close()' }
|
|
3536
|
+
},] }
|
|
3537
|
+
];
|
|
3538
|
+
MatDatepickerCancel.ctorParameters = () => [
|
|
3539
|
+
{ type: MatDatepickerBase }
|
|
3540
|
+
];
|
|
3541
|
+
/**
|
|
3542
|
+
* Container that can be used to project a row of action buttons
|
|
3543
|
+
* to the bottom of a datepicker or date range picker.
|
|
3544
|
+
*/
|
|
3545
|
+
class MatDatepickerActions {
|
|
3546
|
+
constructor(_datepicker, _viewContainerRef) {
|
|
3547
|
+
this._datepicker = _datepicker;
|
|
3548
|
+
this._viewContainerRef = _viewContainerRef;
|
|
3549
|
+
}
|
|
3550
|
+
ngAfterViewInit() {
|
|
3551
|
+
this._portal = new TemplatePortal(this._template, this._viewContainerRef);
|
|
3552
|
+
this._datepicker.registerActions(this._portal);
|
|
3553
|
+
}
|
|
3554
|
+
ngOnDestroy() {
|
|
3555
|
+
var _a;
|
|
3556
|
+
this._datepicker.removeActions(this._portal);
|
|
3557
|
+
// Needs to be null checked since we initialize it in `ngAfterViewInit`.
|
|
3558
|
+
if (this._portal && this._portal.isAttached) {
|
|
3559
|
+
(_a = this._portal) === null || _a === void 0 ? void 0 : _a.detach();
|
|
3560
|
+
}
|
|
3561
|
+
}
|
|
3562
|
+
}
|
|
3563
|
+
MatDatepickerActions.decorators = [
|
|
3564
|
+
{ type: Component, args: [{
|
|
3565
|
+
selector: 'mat-datepicker-actions, mat-date-range-picker-actions',
|
|
3566
|
+
template: `
|
|
3567
|
+
<ng-template>
|
|
3568
|
+
<div class="mat-datepicker-actions">
|
|
3569
|
+
<ng-content></ng-content>
|
|
3570
|
+
</div>
|
|
3571
|
+
</ng-template>
|
|
3572
|
+
`,
|
|
3573
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3574
|
+
encapsulation: ViewEncapsulation.None,
|
|
3575
|
+
styles: [".mat-datepicker-actions{display:flex;justify-content:flex-end;align-items:center;padding:0 8px 8px 8px}.mat-datepicker-actions .mat-button-base+.mat-button-base{margin-left:8px}[dir=rtl] .mat-datepicker-actions .mat-button-base+.mat-button-base{margin-left:0;margin-right:8px}\n"]
|
|
3576
|
+
},] }
|
|
3577
|
+
];
|
|
3578
|
+
MatDatepickerActions.ctorParameters = () => [
|
|
3579
|
+
{ type: MatDatepickerBase },
|
|
3580
|
+
{ type: ViewContainerRef }
|
|
3581
|
+
];
|
|
3582
|
+
MatDatepickerActions.propDecorators = {
|
|
3583
|
+
_template: [{ type: ViewChild, args: [TemplateRef,] }]
|
|
3584
|
+
};
|
|
3585
|
+
|
|
3431
3586
|
/**
|
|
3432
3587
|
* @license
|
|
3433
3588
|
* Copyright Google LLC All Rights Reserved.
|
|
@@ -3465,6 +3620,9 @@ MatDatepickerModule.decorators = [
|
|
|
3465
3620
|
MatStartDate,
|
|
3466
3621
|
MatEndDate,
|
|
3467
3622
|
MatDateRangePicker,
|
|
3623
|
+
MatDatepickerActions,
|
|
3624
|
+
MatDatepickerCancel,
|
|
3625
|
+
MatDatepickerApply
|
|
3468
3626
|
],
|
|
3469
3627
|
declarations: [
|
|
3470
3628
|
MatCalendar,
|
|
@@ -3482,6 +3640,9 @@ MatDatepickerModule.decorators = [
|
|
|
3482
3640
|
MatStartDate,
|
|
3483
3641
|
MatEndDate,
|
|
3484
3642
|
MatDateRangePicker,
|
|
3643
|
+
MatDatepickerActions,
|
|
3644
|
+
MatDatepickerCancel,
|
|
3645
|
+
MatDatepickerApply
|
|
3485
3646
|
],
|
|
3486
3647
|
providers: [
|
|
3487
3648
|
MatDatepickerIntl,
|
|
@@ -3506,5 +3667,5 @@ MatDatepickerModule.decorators = [
|
|
|
3506
3667
|
* Generated bundle index. Do not edit.
|
|
3507
3668
|
*/
|
|
3508
3669
|
|
|
3509
|
-
export { DateRange, DefaultMatCalendarRangeStrategy, MAT_DATEPICKER_SCROLL_STRATEGY, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_DATEPICKER_VALIDATORS, MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATE_RANGE_SELECTION_STRATEGY, MAT_RANGE_DATE_SELECTION_MODEL_FACTORY, MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER, MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY, MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER, MatCalendar, MatCalendarBody, MatCalendarCell, MatCalendarHeader, MatDateRangeInput, MatDateRangePicker, MatDateSelectionModel, MatDatepicker, MatDatepickerContent, MatDatepickerInput, MatDatepickerInputEvent, MatDatepickerIntl, MatDatepickerModule, MatDatepickerToggle, MatDatepickerToggleIcon, MatEndDate, MatMonthView, MatMultiYearView, MatRangeDateSelectionModel, MatSingleDateSelectionModel, MatStartDate, MatYearView, matDatepickerAnimations, yearsPerPage, yearsPerRow, MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY as ɵangular_material_src_material_datepicker_datepicker_a, MAT_CALENDAR_RANGE_STRATEGY_PROVIDER as ɵangular_material_src_material_datepicker_datepicker_b, MatDatepickerBase as ɵangular_material_src_material_datepicker_datepicker_c, MatDatepickerInputBase as ɵangular_material_src_material_datepicker_datepicker_d, MAT_DATE_RANGE_INPUT_PARENT as ɵangular_material_src_material_datepicker_datepicker_e };
|
|
3670
|
+
export { DateRange, DefaultMatCalendarRangeStrategy, MAT_DATEPICKER_SCROLL_STRATEGY, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, MAT_DATEPICKER_VALIDATORS, MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATE_RANGE_SELECTION_STRATEGY, MAT_RANGE_DATE_SELECTION_MODEL_FACTORY, MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER, MAT_SINGLE_DATE_SELECTION_MODEL_FACTORY, MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER, MatCalendar, MatCalendarBody, MatCalendarCell, MatCalendarHeader, MatDateRangeInput, MatDateRangePicker, MatDateSelectionModel, MatDatepicker, MatDatepickerActions, MatDatepickerApply, MatDatepickerCancel, MatDatepickerContent, MatDatepickerInput, MatDatepickerInputEvent, MatDatepickerIntl, MatDatepickerModule, MatDatepickerToggle, MatDatepickerToggleIcon, MatEndDate, MatMonthView, MatMultiYearView, MatRangeDateSelectionModel, MatSingleDateSelectionModel, MatStartDate, MatYearView, matDatepickerAnimations, yearsPerPage, yearsPerRow, MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY as ɵangular_material_src_material_datepicker_datepicker_a, MAT_CALENDAR_RANGE_STRATEGY_PROVIDER as ɵangular_material_src_material_datepicker_datepicker_b, MatDatepickerBase as ɵangular_material_src_material_datepicker_datepicker_c, MatDatepickerInputBase as ɵangular_material_src_material_datepicker_datepicker_d, MAT_DATE_RANGE_INPUT_PARENT as ɵangular_material_src_material_datepicker_datepicker_e };
|
|
3510
3671
|
//# sourceMappingURL=datepicker.js.map
|