Skip to content

Commit 7039d3e

Browse files
authored
feat(material/datepicker): remove dependency on dialog (#22383)
Currently the datepicker has a hard dependency on `MatDialog` due to its touch-specific appearance which makes it difficult to use together with the MDC packages, because they have an alternate dialog module. These changes resolve the issue by removing the datepicker's dependency on `MatDialog`. The approach is loosely based on #13019, however I've simplified things a bit to make it more maintainable.
1 parent d030a87 commit 7039d3e

File tree

9 files changed

+142
-199
lines changed

9 files changed

+142
-199
lines changed

src/material/datepicker/BUILD.bazel

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ ng_module(
3535
"//src/cdk/portal",
3636
"//src/material/button",
3737
"//src/material/core",
38-
"//src/material/dialog",
3938
"//src/material/form-field",
4039
"//src/material/input",
4140
"@npm//@angular/animations",
@@ -102,7 +101,6 @@ ng_test_library(
102101
"//src/cdk/scrolling",
103102
"//src/cdk/testing/private",
104103
"//src/material/core",
105-
"//src/material/dialog",
106104
"//src/material/form-field",
107105
"//src/material/input",
108106
"//src/material/testing",

src/material/datepicker/_datepicker-theme.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ $calendar-weekday-table-font-size: 11px !default;
162162
}
163163

164164
.mat-datepicker-content-touch {
165-
@include private.private-theme-elevation(0, $config);
165+
@include private.private-theme-elevation(24, $config);
166166
}
167167

168168
.mat-datepicker-toggle-active {

src/material/datepicker/calendar-body.scss

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,6 @@ $calendar-range-end-body-cell-size:
192192
}
193193
}
194194

195-
// Allows for the screen reader close button to be seen in touch UI mode.
196-
.mat-datepicker-dialog .mat-dialog-container {
197-
position: relative;
198-
overflow: visible;
199-
}
200-
201195
@include a11y.high-contrast(active, off) {
202196
.mat-datepicker-popup:not(:empty),
203197
.mat-calendar-body-selected {

src/material/datepicker/datepicker-animations.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
style,
1212
transition,
1313
trigger,
14+
keyframes,
1415
AnimationTriggerMetadata,
1516
} from '@angular/animations';
1617

@@ -24,14 +25,14 @@ export const matDatepickerAnimations: {
2425
} = {
2526
/** Transforms the height of the datepicker's calendar. */
2627
transformPanel: trigger('transformPanel', [
27-
state('void', style({
28-
opacity: 0,
29-
transform: 'scale(1, 0.8)'
30-
})),
31-
transition('void => enter', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({
32-
opacity: 1,
33-
transform: 'scale(1, 1)'
34-
}))),
28+
transition('void => enter-dropdown', animate('120ms cubic-bezier(0, 0, 0.2, 1)', keyframes([
29+
style({opacity: 0, transform: 'scale(1, 0.8)'}),
30+
style({opacity: 1, transform: 'scale(1, 1)'})
31+
]))),
32+
transition('void => enter-dialog', animate('150ms cubic-bezier(0, 0, 0.2, 1)', keyframes([
33+
style({opacity: 0, transform: 'scale(0.7)'}),
34+
style({transform: 'none', opacity: 1})
35+
]))),
3536
transition('* => void', animate('100ms linear', style({opacity: 0})))
3637
]),
3738

0 commit comments

Comments
 (0)