Skip to content

Commit e43dcab

Browse files
committed
fix(material/datepicker): make date filter nullable (#31980)
Makes the date filter function nullable so users can reset it. Fixes #31976. (cherry picked from commit 2d5942c)
1 parent de3f9e5 commit e43dcab

File tree

9 files changed

+21
-21
lines changed

9 files changed

+21
-21
lines changed

goldens/material/datepicker/index.api.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ export class MatCalendar<D> implements AfterContentInit, AfterViewChecked, OnDes
132132
get currentView(): MatCalendarView;
133133
set currentView(value: MatCalendarView);
134134
dateClass: MatCalendarCellClassFunction<D>;
135-
dateFilter: (date: D) => boolean;
135+
dateFilter?: ((date: D) => boolean) | null;
136136
_dateSelected(event: MatCalendarUserEvent<D | null>): void;
137137
_dragEnded(event: MatCalendarUserEvent<DateRange<D> | null>): void;
138138
_dragStarted(event: MatCalendarUserEvent<D>): void;
@@ -402,7 +402,7 @@ export class MatDatepickerContent<S, D = ExtractDateTypeFromSelection<S>> implem
402402
// @public
403403
export interface MatDatepickerControl<D> {
404404
// (undocumented)
405-
dateFilter: DateFilterFn<D>;
405+
dateFilter: DateFilterFn<D> | null | undefined;
406406
// (undocumented)
407407
disabled: boolean;
408408
// (undocumented)
@@ -427,12 +427,12 @@ export class MatDatepickerInput<D> extends MatDatepickerInputBase<D | null, D> i
427427
protected _ariaOwns: i0.WritableSignal<string | null>;
428428
// (undocumented)
429429
protected _assignValueToModel(value: D | null): void;
430-
get dateFilter(): DateFilterFn<D | null>;
431-
set dateFilter(value: DateFilterFn<D | null>);
430+
get dateFilter(): DateFilterFn<D | null> | null | undefined;
431+
set dateFilter(value: DateFilterFn<D | null> | null | undefined);
432432
// (undocumented)
433433
_datepicker: MatDatepickerPanel<MatDatepickerControl<D>, D | null, D>;
434434
getConnectedOverlayOrigin(): ElementRef;
435-
protected _getDateFilter(): DateFilterFn<D | null>;
435+
protected _getDateFilter(): DateFilterFn<D | null> | null | undefined;
436436
_getMaxDate(): D | null;
437437
_getMinDate(): D | null;
438438
getOverlayLabelId(): string | null;
@@ -563,8 +563,8 @@ export class MatDateRangeInput<D> implements MatFormFieldControl<DateRange<D>>,
563563
comparisonEnd: D | null;
564564
comparisonStart: D | null;
565565
controlType: string;
566-
get dateFilter(): DateFilterFn<D>;
567-
set dateFilter(value: DateFilterFn<D>);
566+
get dateFilter(): DateFilterFn<D> | null | undefined;
567+
set dateFilter(value: DateFilterFn<D> | null | undefined);
568568
get describedByIds(): string[];
569569
readonly disableAutomaticLabeling = true;
570570
get disabled(): boolean;
@@ -702,7 +702,7 @@ export class MatMonthView<D> implements AfterContentInit, OnChanges, OnDestroy {
702702
// (undocumented)
703703
_dateAdapter: DateAdapter<D, any>;
704704
dateClass: MatCalendarCellClassFunction<D>;
705-
dateFilter: (date: D) => boolean;
705+
dateFilter: ((date: D) => boolean) | null | undefined;
706706
_dateSelected(event: MatCalendarUserEvent<number>): void;
707707
readonly dragEnded: EventEmitter<MatCalendarUserEvent<DateRange<D> | null>>;
708708
protected _dragEnded(event: MatCalendarUserEvent<D | null>): void;
@@ -760,7 +760,7 @@ export class MatMultiYearView<D> implements AfterContentInit, OnDestroy {
760760
// (undocumented)
761761
_dateAdapter: DateAdapter<D, any>;
762762
dateClass: MatCalendarCellClassFunction<D>;
763-
dateFilter: (date: D) => boolean;
763+
dateFilter: ((date: D) => boolean) | null | undefined;
764764
_focusActiveCell(): void;
765765
_focusActiveCellAfterViewChecked(): void;
766766
// (undocumented)
@@ -849,7 +849,7 @@ export class MatYearView<D> implements AfterContentInit, OnDestroy {
849849
// (undocumented)
850850
_dateAdapter: DateAdapter<D, any>;
851851
dateClass: MatCalendarCellClassFunction<D>;
852-
dateFilter: (date: D) => boolean;
852+
dateFilter: ((date: D) => boolean) | null | undefined;
853853
_focusActiveCell(): void;
854854
_focusActiveCellAfterViewChecked(): void;
855855
_handleCalendarBodyKeydown(event: KeyboardEvent): void;

src/material/datepicker/calendar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ export class MatCalendar<D> implements AfterContentInit, AfterViewChecked, OnDes
327327
private _maxDate: D | null;
328328

329329
/** Function used to filter which dates are selectable. */
330-
@Input() dateFilter: (date: D) => boolean;
330+
@Input() dateFilter?: ((date: D) => boolean) | null;
331331

332332
/** Function that can be used to add custom CSS classes to dates. */
333333
@Input() dateClass: MatCalendarCellClassFunction<D>;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ export class MatDateRangeInput<D>
154154
get dateFilter() {
155155
return this._dateFilter;
156156
}
157-
set dateFilter(value: DateFilterFn<D>) {
157+
set dateFilter(value: DateFilterFn<D> | null | undefined) {
158158
const start = this._startInput;
159159
const end = this._endInput;
160160
const wasMatchingStart = start && start._matchesFilter(start.value);
@@ -169,7 +169,7 @@ export class MatDateRangeInput<D>
169169
end._validatorOnChange();
170170
}
171171
}
172-
private _dateFilter: DateFilterFn<D>;
172+
private _dateFilter?: DateFilterFn<D> | null;
173173

174174
/** The minimum valid date. */
175175
@Input()

src/material/datepicker/datepicker-base.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ export interface MatDatepickerControl<D> {
346346
min: D | null;
347347
max: D | null;
348348
disabled: boolean;
349-
dateFilter: DateFilterFn<D>;
349+
dateFilter: DateFilterFn<D> | null | undefined;
350350
getConnectedOverlayOrigin(): ElementRef;
351351
getOverlayLabelId(): string | null;
352352
stateChanges: Observable<void>;
@@ -545,7 +545,7 @@ export abstract class MatDatepickerBase<
545545
return this.datepickerInput && this.datepickerInput.max;
546546
}
547547

548-
_getDateFilter(): DateFilterFn<D> {
548+
_getDateFilter(): DateFilterFn<D> | null | undefined {
549549
return this.datepickerInput && this.datepickerInput.dateFilter;
550550
}
551551

src/material/datepicker/datepicker-input-base.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ export abstract class MatDatepickerInputBase<S, D = ExtractDateTypeFromSelection
203203
abstract _getMaxDate(): D | null;
204204

205205
/** Gets the date filter function. Used for validation. */
206-
protected abstract _getDateFilter(): DateFilterFn<D> | undefined;
206+
protected abstract _getDateFilter(): DateFilterFn<D> | null | undefined;
207207

208208
/** Registers a date selection model with the input. */
209209
_registerModel(model: MatDateSelectionModel<S, D>): void {

src/material/datepicker/datepicker-input.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,15 +119,15 @@ export class MatDatepickerInput<D>
119119
get dateFilter() {
120120
return this._dateFilter;
121121
}
122-
set dateFilter(value: DateFilterFn<D | null>) {
122+
set dateFilter(value: DateFilterFn<D | null> | null | undefined) {
123123
const wasMatchingValue = this._matchesFilter(this.value);
124124
this._dateFilter = value;
125125

126126
if (this._matchesFilter(this.value) !== wasMatchingValue) {
127127
this._validatorOnChange();
128128
}
129129
}
130-
private _dateFilter: DateFilterFn<D | null>;
130+
private _dateFilter: DateFilterFn<D | null> | null | undefined;
131131

132132
/** The combined form control validator for this input. */
133133
protected _validator: ValidatorFn | null;

src/material/datepicker/month-view.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ export class MatMonthView<D> implements AfterContentInit, OnChanges, OnDestroy {
141141
private _maxDate: D | null;
142142

143143
/** Function used to filter which dates are selectable. */
144-
@Input() dateFilter: (date: D) => boolean;
144+
@Input() dateFilter: ((date: D) => boolean) | null | undefined;
145145

146146
/** Function that can be used to add custom CSS classes to dates. */
147147
@Input() dateClass: MatCalendarCellClassFunction<D>;

src/material/datepicker/multi-year-view.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ export class MatMultiYearView<D> implements AfterContentInit, OnDestroy {
133133
private _maxDate: D | null;
134134

135135
/** A function used to filter which dates are selectable. */
136-
@Input() dateFilter: (date: D) => boolean;
136+
@Input() dateFilter: ((date: D) => boolean) | null | undefined;
137137

138138
/** Function that can be used to add custom CSS classes to date cells. */
139139
@Input() dateClass: MatCalendarCellClassFunction<D>;

src/material/datepicker/year-view.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export class MatYearView<D> implements AfterContentInit, OnDestroy {
122122
private _maxDate: D | null;
123123

124124
/** A function used to filter which dates are selectable. */
125-
@Input() dateFilter: (date: D) => boolean;
125+
@Input() dateFilter: ((date: D) => boolean) | null | undefined;
126126

127127
/** Function that can be used to add custom CSS classes to date cells. */
128128
@Input() dateClass: MatCalendarCellClassFunction<D>;

0 commit comments

Comments
 (0)