diff --git a/src/demo-app/datepicker/datepicker-demo.html b/src/demo-app/datepicker/datepicker-demo.html index 8fbf267ed44e..3abeedf1d183 100644 --- a/src/demo-app/datepicker/datepicker-demo.html +++ b/src/demo-app/datepicker/datepicker-demo.html @@ -154,3 +154,13 @@

Datepicker with custom header

+ +

Datepicker with custom header extending the default header

+

+ + Custom calendar header extending default + + + + +

diff --git a/src/demo-app/datepicker/datepicker-demo.ts b/src/demo-app/datepicker/datepicker-demo.ts index a1077573c578..142cb649a183 100644 --- a/src/demo-app/datepicker/datepicker-demo.ts +++ b/src/demo-app/datepicker/datepicker-demo.ts @@ -12,10 +12,12 @@ import { Component, Host, Inject, + ViewChild, + Optional, OnDestroy } from '@angular/core'; import {FormControl} from '@angular/forms'; -import {MatCalendar} from '@angular/material'; +import {MatCalendar, MatCalendarHeader} from '@angular/material'; import {DateAdapter, MAT_DATE_FORMATS, MatDateFormats, ThemePalette} from '@angular/material/core'; import {MatDatepickerInputEvent} from '@angular/material/datepicker'; import {Subject} from 'rxjs'; @@ -53,6 +55,7 @@ export class DatepickerDemo { // pass custom header component type as input customHeader = CustomHeader; + customHeaderNgContent = CustomHeaderNgContent; } // Custom header component for datepicker @@ -98,3 +101,27 @@ export class CustomHeader implements OnDestroy { this._dateAdapter.addCalendarYears(this._calendar.activeDate, 1); } } + +@Component({ + moduleId: module.id, + selector: 'customer-header-ng-content', + template: ` + + + + ` +}) +export class CustomHeaderNgContent { + + @ViewChild(MatCalendarHeader) + header: MatCalendarHeader; + + constructor(@Optional() private _dateAdapter: DateAdapter) {} + + todayClicked() { + let calendar = this.header.calendar; + + calendar.activeDate = this._dateAdapter.today(); + calendar.currentView = 'month'; + } +} diff --git a/src/demo-app/demo-app/demo-module.ts b/src/demo-app/demo-app/demo-module.ts index ba633e837b0d..a1bf00cfe17d 100644 --- a/src/demo-app/demo-app/demo-module.ts +++ b/src/demo-app/demo-app/demo-module.ts @@ -25,7 +25,7 @@ import {CardDemo} from '../card/card-demo'; import {CheckboxDemo, MatCheckboxDemoNestedChecklist} from '../checkbox/checkbox-demo'; import {ChipsDemo} from '../chips/chips-demo'; import {ConnectedOverlayDemo} from '../connected-overlay/connected-overlay-demo'; -import {CustomHeader, DatepickerDemo} from '../datepicker/datepicker-demo'; +import {CustomHeader, CustomHeaderNgContent, DatepickerDemo} from '../datepicker/datepicker-demo'; import {DemoMaterialModule} from '../demo-material-module'; import {ContentElementDialog, DialogDemo, IFrameDialog, JazzDialog} from '../dialog/dialog-demo'; import {DrawerDemo} from '../drawer/drawer-demo'; @@ -92,6 +92,7 @@ import {DragAndDropDemo} from '../drag-drop/drag-drop-demo'; ConnectedOverlayDemo, ContentElementDialog, CustomHeader, + CustomHeaderNgContent, DatepickerDemo, DemoApp, DialogDemo, @@ -138,6 +139,7 @@ import {DragAndDropDemo} from '../drag-drop/drag-drop-demo'; entryComponents: [ ContentElementDialog, CustomHeader, + CustomHeaderNgContent, DemoApp, ExampleBottomSheet, IFrameDialog, diff --git a/src/lib/datepicker/calendar-header.html b/src/lib/datepicker/calendar-header.html index 59a5a1bf8aa9..8c577dcc4f60 100644 --- a/src/lib/datepicker/calendar-header.html +++ b/src/lib/datepicker/calendar-header.html @@ -10,6 +10,8 @@
+ +