Skip to content

Commit 2d5942c

Browse files
authored
fix(material/datepicker): make date filter nullable (#31980)
Makes the date filter function nullable so users can reset it. Fixes #31976.
1 parent c848d24 commit 2d5942c

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
@@ -109,7 +109,7 @@ export class MatCalendar<D> implements AfterContentInit, AfterViewChecked, OnDes
109109
get currentView(): MatCalendarView;
110110
set currentView(value: MatCalendarView);
111111
dateClass: MatCalendarCellClassFunction<D>;
112-
dateFilter: (date: D) => boolean;
112+
dateFilter?: ((date: D) => boolean) | null;
113113
_dateSelected(event: MatCalendarUserEvent<D | null>): void;
114114
_dragEnded(event: MatCalendarUserEvent<DateRange<D> | null>): void;
115115
_dragStarted(event: MatCalendarUserEvent<D>): void;
@@ -373,7 +373,7 @@ export class MatDatepickerContent<S, D = ExtractDateTypeFromSelection<S>> implem
373373
// @public
374374
export interface MatDatepickerControl<D> {
375375
// (undocumented)
376-
dateFilter: DateFilterFn<D>;
376+
dateFilter: DateFilterFn<D> | null | undefined;
377377
// (undocumented)
378378
disabled: boolean;
379379
// (undocumented)
@@ -398,12 +398,12 @@ export class MatDatepickerInput<D> extends MatDatepickerInputBase<D | null, D> i
398398
protected _ariaOwns: i0.WritableSignal<string | null>;
399399
// (undocumented)
400400
protected _assignValueToModel(value: D | null): void;
401-
get dateFilter(): DateFilterFn<D | null>;
402-
set dateFilter(value: DateFilterFn<D | null>);
401+
get dateFilter(): DateFilterFn<D | null> | null | undefined;
402+
set dateFilter(value: DateFilterFn<D | null> | null | undefined);
403403
// (undocumented)
404404
_datepicker: MatDatepickerPanel<MatDatepickerControl<D>, D | null, D>;
405405
getConnectedOverlayOrigin(): ElementRef;
406-
protected _getDateFilter(): DateFilterFn<D | null>;
406+
protected _getDateFilter(): DateFilterFn<D | null> | null | undefined;
407407
_getMaxDate(): D | null;
408408
_getMinDate(): D | null;
409409
getOverlayLabelId(): string | null;
@@ -534,8 +534,8 @@ export class MatDateRangeInput<D> implements MatFormFieldControl<DateRange<D>>,
534534
comparisonEnd: D | null;
535535
comparisonStart: D | null;
536536
controlType: string;
537-
get dateFilter(): DateFilterFn<D>;
538-
set dateFilter(value: DateFilterFn<D>);
537+
get dateFilter(): DateFilterFn<D> | null | undefined;
538+
set dateFilter(value: DateFilterFn<D> | null | undefined);
539539
get describedByIds(): string[];
540540
readonly disableAutomaticLabeling = true;
541541
get disabled(): boolean;
@@ -673,7 +673,7 @@ export class MatMonthView<D> implements AfterContentInit, OnChanges, OnDestroy {
673673
// (undocumented)
674674
_dateAdapter: DateAdapter<D, any>;
675675
dateClass: MatCalendarCellClassFunction<D>;
676-
dateFilter: (date: D) => boolean;
676+
dateFilter: ((date: D) => boolean) | null | undefined;
677677
_dateSelected(event: MatCalendarUserEvent<number>): void;
678678
readonly dragEnded: EventEmitter<MatCalendarUserEvent<DateRange<D> | null>>;
679679
protected _dragEnded(event: MatCalendarUserEvent<D | null>): void;
@@ -731,7 +731,7 @@ export class MatMultiYearView<D> implements AfterContentInit, OnDestroy {
731731
// (undocumented)
732732
_dateAdapter: DateAdapter<D, any>;
733733
dateClass: MatCalendarCellClassFunction<D>;
734-
dateFilter: (date: D) => boolean;
734+
dateFilter: ((date: D) => boolean) | null | undefined;
735735
_focusActiveCell(): void;
736736
_focusActiveCellAfterViewChecked(): void;
737737
// (undocumented)
@@ -820,7 +820,7 @@ export class MatYearView<D> implements AfterContentInit, OnDestroy {
820820
// (undocumented)
821821
_dateAdapter: DateAdapter<D, any>;
822822
dateClass: MatCalendarCellClassFunction<D>;
823-
dateFilter: (date: D) => boolean;
823+
dateFilter: ((date: D) => boolean) | null | undefined;
824824
_focusActiveCell(): void;
825825
_focusActiveCellAfterViewChecked(): void;
826826
_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
@@ -325,7 +325,7 @@ export interface MatDatepickerControl<D> {
325325
min: D | null;
326326
max: D | null;
327327
disabled: boolean;
328-
dateFilter: DateFilterFn<D>;
328+
dateFilter: DateFilterFn<D> | null | undefined;
329329
getConnectedOverlayOrigin(): ElementRef;
330330
getOverlayLabelId(): string | null;
331331
stateChanges: Observable<void>;
@@ -524,7 +524,7 @@ export abstract class MatDatepickerBase<
524524
return this.datepickerInput && this.datepickerInput.max;
525525
}
526526

527-
_getDateFilter(): DateFilterFn<D> {
527+
_getDateFilter(): DateFilterFn<D> | null | undefined {
528528
return this.datepickerInput && this.datepickerInput.dateFilter;
529529
}
530530

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)