Skip to content

Commit 13223df

Browse files
authored
fix(sidenav): make focus-trap occupy full height of sidenav (#2145)
* fix(sidenav) make `focus-trap` occupy full height of sidenav * add class to sidenav focus-trap * prefix focus-trap class
1 parent 4adee46 commit 13223df

File tree

5 files changed

+19
-7
lines changed

5 files changed

+19
-7
lines changed

src/demo-app/sidenav/sidenav-demo.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.demo-sidenav-layout {
22
border: 3px solid black;
33

4-
md-sidenav {
4+
.md-sidenav-focus-trap > .cdk-focus-trap-content {
55
padding: 10px;
66
}
77
}

src/demo-app/sidenav/sidenav-demo.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import {Component} from '@angular/core';
1+
import {Component, ViewEncapsulation} from '@angular/core';
22

33

44
@Component({
55
moduleId: module.id,
66
selector: 'sidenav-demo',
77
templateUrl: 'sidenav-demo.html',
88
styleUrls: ['sidenav-demo.css'],
9+
encapsulation: ViewEncapsulation.None,
910
})
1011
export class SidenavDemo {
1112
side = 'start';

src/lib/core/a11y/focus-trap.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<div *ngIf="!disabled" tabindex="0" (focus)="focusLastTabbableElement()"></div>
2-
<div #trappedContent><ng-content></ng-content></div>
2+
<div #trappedContent class="cdk-focus-trap-content"><ng-content></ng-content></div>
33
<div *ngIf="!disabled" tabindex="0" (focus)="focusFirstTabbableElement()"></div>

src/lib/sidenav/sidenav.scss

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,6 @@ md-sidenav {
109109
min-width: 5%;
110110
outline: 0;
111111

112-
// TODO(kara): revisit scrolling behavior for sidenavs
113-
overflow-y: auto;
114-
115112
@include md-sidenav-transition(0, -100%);
116113

117114
&.md-sidenav-side {
@@ -136,6 +133,16 @@ md-sidenav {
136133
}
137134
}
138135

136+
.md-sidenav-focus-trap {
137+
height: 100%;
138+
139+
> .cdk-focus-trap-content {
140+
box-sizing: border-box;
141+
height: 100%;
142+
overflow-y: auto; // TODO(kara): revisit scrolling behavior for sidenavs
143+
}
144+
}
145+
139146
.md-sidenav-invalid {
140147
display: none;
141148
}

src/lib/sidenav/sidenav.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@ export class MdSidenavToggleResult {
4646
@Component({
4747
moduleId: module.id,
4848
selector: 'md-sidenav, mat-sidenav',
49-
template: '<focus-trap [disabled]="isFocusTrapDisabled"><ng-content></ng-content></focus-trap>',
49+
// TODO(mmalerba): move template to separate file.
50+
template: `
51+
<focus-trap class="md-sidenav-focus-trap" [disabled]="isFocusTrapDisabled">
52+
<ng-content></ng-content>
53+
</focus-trap>`,
5054
host: {
5155
'(transitionend)': '_onTransitionEnd($event)',
5256
'(keydown)': 'handleKeydown($event)',

0 commit comments

Comments
 (0)