Skip to content

Commit b15fe6d

Browse files
authored
refactor(datepicker): remove circular dependencies (#19629)
Adjusts a couple of types in order to avoid circular dependencies.
1 parent 37e2171 commit b15fe6d

File tree

6 files changed

+21
-22
lines changed

6 files changed

+21
-22
lines changed

goldens/ts-circular-deps.json

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,6 @@
4040
"src/cdk/testing/private/e2e/actions.ts",
4141
"src/cdk/testing/private/e2e/query.ts"
4242
],
43-
[
44-
"src/material/datepicker/date-range-input.ts",
45-
"src/material/datepicker/date-range-picker.ts"
46-
],
47-
[
48-
"src/material/datepicker/datepicker-input.ts",
49-
"src/material/datepicker/datepicker.ts"
50-
],
5143
[
5244
"src/material/grid-list/grid-list.ts",
5345
"src/material/grid-list/tile-styler.ts"

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import {
3434
import {MatDatepickerControl} from './datepicker-base';
3535
import {createMissingDateImplError} from './datepicker-errors';
3636
import {DateFilterFn} from './datepicker-input-base';
37-
import {MatDateRangePicker} from './date-range-picker';
37+
import {MatDateRangePicker, MatDateRangePickerInput} from './date-range-picker';
3838
import {DateRange, MatDateSelectionModel} from './date-selection-model';
3939

4040
let nextUniqueId = 0;
@@ -60,7 +60,8 @@ let nextUniqueId = 0;
6060
]
6161
})
6262
export class MatDateRangeInput<D> implements MatFormFieldControl<DateRange<D>>,
63-
MatDatepickerControl<D>, MatDateRangeInputParent<D>, AfterContentInit, OnDestroy {
63+
MatDatepickerControl<D>, MatDateRangeInputParent<D>, MatDateRangePickerInput<D>,
64+
AfterContentInit, OnDestroy {
6465
/** Current value of the range input. */
6566
get value() {
6667
return this._model ? this._model.selection : null;

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,18 @@
77
*/
88

99
import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';
10-
import {MatDatepickerBase, MatDatepickerContent} from './datepicker-base';
11-
import {MatDateRangeInput} from './date-range-input';
10+
import {MatDatepickerBase, MatDatepickerContent, MatDatepickerControl} from './datepicker-base';
1211
import {MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER, DateRange} from './date-selection-model';
1312

13+
/**
14+
* Input that can be associated with a date range picker.
15+
* @docs-private
16+
*/
17+
export interface MatDateRangePickerInput<D> extends MatDatepickerControl<D> {
18+
comparisonStart: D|null;
19+
comparisonEnd: D|null;
20+
}
21+
1422
// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit
1523
// template reference variables (e.g. #d vs #d="matDateRangePicker"). We can change this to a
1624
// directive if angular adds support for `exportAs: '$implicit'` on directives.
@@ -23,9 +31,8 @@ import {MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER, DateRange} from './date-selecti
2331
encapsulation: ViewEncapsulation.None,
2432
providers: [MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER]
2533
})
26-
export class MatDateRangePicker<D>
27-
extends MatDatepickerBase<MatDateRangeInput<D>, DateRange<D>, D> {
28-
34+
export class MatDateRangePicker<D> extends MatDatepickerBase<MatDateRangePickerInput<D>,
35+
DateRange<D>, D> {
2936
protected _forwardContentValues(instance: MatDatepickerContent<DateRange<D>, D>) {
3037
super._forwardContentValues(instance);
3138

src/material/datepicker/datepicker.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
*/
88

99
import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';
10-
import {MatDatepickerBase} from './datepicker-base';
11-
import {MatDatepickerInput} from './datepicker-input';
10+
import {MatDatepickerBase, MatDatepickerControl} from './datepicker-base';
1211
import {MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER} from './date-selection-model';
1312

1413
// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit
@@ -23,5 +22,5 @@ import {MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER} from './date-selection-model';
2322
encapsulation: ViewEncapsulation.None,
2423
providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER]
2524
})
26-
export class MatDatepicker<D> extends MatDatepickerBase<MatDatepickerInput<D>, D | null, D> {
25+
export class MatDatepicker<D> extends MatDatepickerBase<MatDatepickerControl<D>, D | null, D> {
2726
}

src/material/datepicker/public-api.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export * from './datepicker-toggle';
3131
export * from './month-view';
3232
export * from './year-view';
3333
export * from './date-range-input';
34-
export * from './date-range-picker';
34+
export {MatDateRangePicker} from './date-range-picker';
3535
export * from './date-selection-model';
3636
export {MatStartDate, MatEndDate} from './date-range-input-parts';
3737
export {MatMultiYearView, yearsPerPage, yearsPerRow} from './multi-year-view';

tools/public_api_guard/material/datepicker.d.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ export interface MatCalendarUserEvent<D> {
174174

175175
export declare type MatCalendarView = 'month' | 'year' | 'multi-year';
176176

177-
export declare class MatDatepicker<D> extends MatDatepickerBase<MatDatepickerInput<D>, D | null, D> {
177+
export declare class MatDatepicker<D> extends MatDatepickerBase<MatDatepickerControl<D>, D | null, D> {
178178
static ɵcmp: i0.ɵɵComponentDefWithMeta<MatDatepicker<any>, "mat-datepicker", ["matDatepicker"], {}, {}, never, never>;
179179
static ɵfac: i0.ɵɵFactoryDef<MatDatepicker<any>, never>;
180180
}
@@ -285,7 +285,7 @@ export declare class MatDatepickerToggleIcon {
285285
static ɵfac: i0.ɵɵFactoryDef<MatDatepickerToggleIcon, never>;
286286
}
287287

288-
export declare class MatDateRangeInput<D> implements MatFormFieldControl<DateRange<D>>, MatDatepickerControl<D>, MatDateRangeInputParent<D>, AfterContentInit, OnDestroy {
288+
export declare class MatDateRangeInput<D> implements MatFormFieldControl<DateRange<D>>, MatDatepickerControl<D>, MatDateRangeInputParent<D>, MatDateRangePickerInput<D>, AfterContentInit, OnDestroy {
289289
_ariaDescribedBy: string | null;
290290
_disabledChange: Subject<boolean>;
291291
_endInput: MatEndDate<D>;
@@ -336,7 +336,7 @@ export declare class MatDateRangeInput<D> implements MatFormFieldControl<DateRan
336336
static ɵfac: i0.ɵɵFactoryDef<MatDateRangeInput<any>, [null, null, { optional: true; self: true; }, { optional: true; }, { optional: true; }]>;
337337
}
338338

339-
export declare class MatDateRangePicker<D> extends MatDatepickerBase<MatDateRangeInput<D>, DateRange<D>, D> {
339+
export declare class MatDateRangePicker<D> extends MatDatepickerBase<MatDateRangePickerInput<D>, DateRange<D>, D> {
340340
protected _forwardContentValues(instance: MatDatepickerContent<DateRange<D>, D>): void;
341341
static ɵcmp: i0.ɵɵComponentDefWithMeta<MatDateRangePicker<any>, "mat-date-range-picker", ["matDateRangePicker"], {}, {}, never, never>;
342342
static ɵfac: i0.ɵɵFactoryDef<MatDateRangePicker<any>, never>;

0 commit comments

Comments
 (0)