11@use ' @angular/cdk' ;
22
3+ @use ' ../core/tokens/m2/mat/sidenav' as tokens-mat-sidenav ;
4+ @use ' ../core/tokens/token-utils' ;
35@use ' ../core/style/variables' ;
46@use ' ../core/style/layout-common' ;
7+ @use ' ../core/style/elevation' ;
58
69$drawer-content-z-index : 1 ;
710$drawer-side-drawer-z-index : 2 ;
@@ -25,6 +28,12 @@ $drawer-over-drawer-z-index: 4;
2528 // the application content does not get messed up with our own CSS.
2629 @include drawer-stacking-context ();
2730
31+ @include token-utils .use-tokens (
32+ tokens-mat-sidenav .$prefix , tokens-mat-sidenav .get-token-slots ()) {
33+ @include token-utils .create-token-slot (color , content- text- color);
34+ @include token-utils .create-token-slot (background-color , content- background- color);
35+ }
36+
2837 box-sizing : border-box ;
2938 -webkit-overflow-scrolling : touch ;
3039
@@ -74,6 +83,11 @@ $drawer-over-drawer-z-index: 4;
7483
7584 & .mat-drawer-shown {
7685 visibility : visible ;
86+
87+ @include token-utils .use-tokens (
88+ tokens-mat-sidenav .$prefix , tokens-mat-sidenav .get-token-slots ()) {
89+ @include token-utils .create-token-slot (background-color , scrim- color);
90+ }
7791 }
7892
7993 .mat-drawer-transition & {
@@ -108,7 +122,20 @@ $drawer-over-drawer-z-index: 4;
108122.mat-drawer {
109123 $high-contrast-border : solid 1px currentColor ;
110124
125+ // The elevation of z-16 is noted in the design specifications.
126+ // See https://material.io/design/components/navigation-drawer.html
127+ @include elevation .elevation (16 );
111128 @include drawer-stacking-context ($drawer-over-drawer-z-index );
129+ @include token-utils .create-token-values (
130+ tokens-mat-sidenav .$prefix , tokens-mat-sidenav .get-unthemable-tokens ());
131+
132+ @include token-utils .use-tokens (
133+ tokens-mat-sidenav .$prefix , tokens-mat-sidenav .get-token-slots ()) {
134+ @include token-utils .create-token-slot (color , container- text- color);
135+ @include token-utils .create-token-slot (background-color , container- background- color);
136+ @include token-utils .create-token-slot (border-top-right-radius , container- shape);
137+ @include token-utils .create-token-slot (border-bottom-right-radius , container- shape);
138+ }
112139
113140 display : block ;
114141 position : absolute ;
@@ -120,6 +147,7 @@ $drawer-over-drawer-z-index: 4;
120147 overflow-y : auto ; // TODO(kara): revisit scrolling behavior for drawers
121148 transform : translate3d (-100% , 0 , 0 );
122149
150+
123151 & , [dir = ' rtl' ] & .mat-drawer-end {
124152 @include cdk .high-contrast (active , off) {
125153 border-right : $high-contrast-border ;
@@ -140,15 +168,34 @@ $drawer-over-drawer-z-index: 4;
140168 & .mat-drawer-end {
141169 right : 0 ;
142170 transform : translate3d (100% , 0 , 0 );
171+
172+ @include token-utils .use-tokens (
173+ tokens-mat-sidenav .$prefix , tokens-mat-sidenav .get-token-slots ()) {
174+ @include token-utils .create-token-slot (border-top-left-radius , container- shape);
175+ @include token-utils .create-token-slot (border-bottom-left-radius , container- shape);
176+ border-top-right-radius : 0 ;
177+ border-bottom-right-radius : 0 ;
178+ }
143179 }
144180
145181 [dir = ' rtl' ] & {
146- transform : translate3d (100% , 0 , 0 );
147-
148- & .mat-drawer-end {
149- left : 0 ;
150- right : auto ;
151- transform : translate3d (-100% , 0 , 0 );
182+ @include token-utils .use-tokens (
183+ tokens-mat-sidenav .$prefix , tokens-mat-sidenav .get-token-slots ()) {
184+ @include token-utils .create-token-slot (border-top-left-radius , container- shape);
185+ @include token-utils .create-token-slot (border-bottom-left-radius , container- shape);
186+ border-top-right-radius : 0 ;
187+ border-bottom-right-radius : 0 ;
188+ transform : translate3d (100% , 0 , 0 );
189+
190+ & .mat-drawer-end {
191+ @include token-utils .create-token-slot (border-top-right-radius , container- shape);
192+ @include token-utils .create-token-slot (border-bottom-right-radius , container- shape);
193+ border-top-left-radius : 0 ;
194+ border-bottom-left-radius : 0 ;
195+ left : 0 ;
196+ right : auto ;
197+ transform : translate3d (-100% , 0 , 0 );
198+ }
152199 }
153200 }
154201
@@ -164,6 +211,38 @@ $drawer-over-drawer-z-index: 4;
164211 }
165212}
166213
214+ .mat-drawer-side {
215+ box-shadow : none ;
216+
217+ @include token-utils .use-tokens (
218+ tokens-mat-sidenav .$prefix , tokens-mat-sidenav .get-token-slots ()) {
219+ @include token-utils .create-token-slot (border-right-color , container- divider- color);
220+ border-right-width : 1px ;
221+ border-right-style : solid ;
222+
223+ & .mat-drawer-end {
224+ @include token-utils .create-token-slot (border-left-color , container- divider- color);
225+ border-left-width : 1px ;
226+ border-left-style : solid ;
227+ border-right : none ;
228+ }
229+
230+ [dir = ' rtl' ] & {
231+ @include token-utils .create-token-slot (border-left-color , container- divider- color);
232+ border-left-width : 1px ;
233+ border-left-style : solid ;
234+ border-right : none ; // Clears the default LTR border.
235+
236+ & .mat-drawer-end {
237+ @include token-utils .create-token-slot (border-right-color , container- divider- color);
238+ border-right-width : 1px ;
239+ border-right-style : solid ;
240+ border-left : none ;
241+ }
242+ }
243+ }
244+ }
245+
167246// Note that this div isn't strictly necessary on all browsers, however we need it in
168247// order to avoid a layout issue in Chrome. The issue is that in RTL mode the browser doesn't
169248// account for the sidenav's scrollbar while positioning, which ends up pushing it partially
0 commit comments