Skip to content

Commit dc8c7bb

Browse files
feat(material/datepicker): allow custom pickers with date inputs
1 parent 79b932d commit dc8c7bb

3 files changed

Lines changed: 13 additions & 4 deletions

File tree

src/material/datepicker/date-range-input.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ export class MatDateRangeInput<D> implements MatFormFieldControl<DateRange<D>>,
103103
get rangePicker() { return this._rangePicker; }
104104
set rangePicker(rangePicker: MatDateRangePicker<D>) {
105105
if (rangePicker) {
106-
this._model = rangePicker._registerInput(this);
106+
this._model = rangePicker.registerInput(this);
107107
this._rangePicker = rangePicker;
108108
this._registerModel(this._model!);
109109
}

src/material/datepicker/datepicker-base.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,10 +232,19 @@ export interface MatDatepickerControl<D> {
232232
stateChanges: Observable<void>;
233233
}
234234

235+
/** A picker panel that can be associated with a {@link MatDatepickerControl}. */
236+
export interface MatDatepickerPanel<C extends MatDatepickerControl<D>, S,
237+
D = ExtractDateTypeFromSelection<S>> {
238+
id: string;
239+
opened: boolean;
240+
open(): void;
241+
registerInput(input: C): MatDateSelectionModel<S, D>;
242+
}
243+
235244
/** Base class for a datepicker. */
236245
@Directive()
237246
export abstract class MatDatepickerBase<C extends MatDatepickerControl<D>, S,
238-
D = ExtractDateTypeFromSelection<S>> implements OnDestroy, OnChanges {
247+
D = ExtractDateTypeFromSelection<S>> implements MatDatepickerPanel<C, S, D>, OnDestroy, OnChanges {
239248
private _scrollStrategy: () => ScrollStrategy;
240249
private _inputStateChanges = Subscription.EMPTY;
241250

@@ -450,7 +459,7 @@ export abstract class MatDatepickerBase<C extends MatDatepickerControl<D>, S,
450459
* @param input The datepicker input to register with this datepicker.
451460
* @returns Selection model that the input should hook itself up to.
452461
*/
453-
_registerInput(input: C): MatDateSelectionModel<S, D> {
462+
registerInput(input: C): MatDateSelectionModel<S, D> {
454463
if (this._datepickerInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {
455464
throw Error('A MatDatepicker can only be associated with a single input.');
456465
}

src/material/datepicker/datepicker-input.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ export class MatDatepickerInput<D> extends MatDatepickerInputBase<D | null, D>
7878
set matDatepicker(datepicker: MatDatepicker<D>) {
7979
if (datepicker) {
8080
this._datepicker = datepicker;
81-
this._registerModel(datepicker._registerInput(this));
81+
this._registerModel(datepicker.registerInput(this));
8282
}
8383
}
8484
_datepicker: MatDatepicker<D>;

0 commit comments

Comments
 (0)