-
Notifications
You must be signed in to change notification settings - Fork 6.8k
Description
I am trying to use the mat-sidenav with the mat-tab-group and there appears to be an issue with the pagination controls for the mat-tab-group. The test app will create 3 default tabs. If you add enough tabs so that there is just enough space to show the tabs without the tab pagination controls being displayed (based on your screen width), then open the sidenav by clicking the Toggle Sidenav button, the pagination controls do not appear in the tab control. Clicking the Add Tab button to add one more tab will force the tab control to reevaluate the horizontal space and then display the pagination controls for the tab control.
It appears that that the tab control is not aware that the horizontal space has decreased, because the sidenav is open, and does not show the pagination controls. The opposite is also true that if the pagination controls are displayed when the sidenav is open, when the sidenav is closed and there is enough horizontal space that the tab control no longer needs the pagination controls they do not disappear.
The desired behavior would be that the tab control will display or not display its pagination controls when necessary as the sidenav is open and closed.
<mat-sidenav-container fxFill>
<mat-sidenav #sidenav mode="side">
<div style="height: 100%; width: 300px; background-color: lightblue;">
<p>Sidenav</p>
</div>
</mat-sidenav>
<mat-sidenav-content>
<div fxLayout="column" fxFill>
<div fxFlex="0 1 0%" fxLayoutGap="5px" style="padding: 5px">
<button mat-stroked-button (click)="sidenav.toggle()">Toggle Sidenav</button>
<button mat-stroked-button (click)="addTab()">Add Tab</button>
</div>
<div fxFlex="1 1 0%">
<mat-tab-group>
<mat-tab *ngFor="let tab of tabs" label="{{tab.label}}">
<span>Tab content for {{tab.label}}</span>
</mat-tab>
</mat-tab-group>
</div>
</div>
</mat-sidenav-content>
</mat-sidenav-container>
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
tabs: any[] = [{label: "tab1"}, {label: "tab2"}, {label: "tab3"}]
addTab() {
this.tabs.push({label: "tab" + (this.tabs.length + 1)})
}
}