Skip to content

Commit fd10362

Browse files
committed
refactor(AppHeader): add reactive toggler class based on breakpoint
1 parent 78029d6 commit fd10362

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

projects/coreui/angular/src/lib/header/app-header.component.html

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<ng-template [ngIf]="mobileSidebarToggler != false">
2-
<button class="navbar-toggler d-lg-none" type="button" appSidebarToggler>
2+
<button class="navbar-toggler {{sidebarTogglerMobileClass}}" type="button" appSidebarToggler>
33
<span class="navbar-toggler-icon"></span>
44
</button>
55
</ng-template>
@@ -21,18 +21,18 @@
2121
</ng-template>
2222
</a>
2323
<ng-template [ngIf]="sidebarToggler != false">
24-
<button class="navbar-toggler d-md-down-none" type="button" [appSidebarToggler]="sidebarToggler">
24+
<button class="navbar-toggler {{sidebarTogglerClass}}" type="button" [appSidebarToggler]="sidebarToggler">
2525
<span class="navbar-toggler-icon"></span>
2626
</button>
2727
</ng-template>
2828
<ng-content></ng-content>
2929
<ng-template [ngIf]="asideMenuToggler != false">
30-
<button class="navbar-toggler d-md-down-none" type="button" [appAsideMenuToggler]="asideMenuToggler">
30+
<button class="navbar-toggler {{asideTogglerClass}}" type="button" [appAsideMenuToggler]="asideMenuToggler">
3131
<span class="navbar-toggler-icon"></span>
3232
</button>
3333
</ng-template>
3434
<ng-template [ngIf]="mobileAsideMenuToggler != false">
35-
<button class="navbar-toggler d-lg-none" type="button" appAsideMenuToggler>
35+
<button class="navbar-toggler {{asideTogglerMobileClass}}" type="button" appAsideMenuToggler>
3636
<span class="navbar-toggler-icon"></span>
3737
</button>
3838
</ng-template>

projects/coreui/angular/src/lib/header/app-header.component.ts

+28-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export class AppHeaderComponent implements OnInit, OnDestroy {
1313
@Input() navbarBrandFull: any;
1414
@Input() navbarBrandMinimized: any;
1515
@Input() navbarBrandText: any = {icon: '🅲', text: '🅲 CoreUI'};
16-
@Input() navbarBrandHref: string = ''; // deprecated, use navbarBrandRouterLink instead
16+
@Input() navbarBrandHref: ''; // deprecated, use navbarBrandRouterLink instead
1717
@Input() navbarBrandRouterLink: any[] | string = '';
1818

1919
@Input() sidebarToggler: string | boolean;
@@ -25,6 +25,12 @@ export class AppHeaderComponent implements OnInit, OnDestroy {
2525
private readonly fixedClass = 'header-fixed';
2626
navbarBrandImg: boolean;
2727

28+
private readonly breakpoints = ['xl', 'lg', 'md', 'sm', 'xs'];
29+
sidebarTogglerClass = 'd-none d-md-block';
30+
sidebarTogglerMobileClass = 'd-lg-none';
31+
asideTogglerClass = 'd-none d-md-block';
32+
asideTogglerMobileClass = 'd-lg-none';
33+
2834
constructor(
2935
@Inject(DOCUMENT) private document: any,
3036
private renderer: Renderer2,
@@ -38,6 +44,10 @@ export class AppHeaderComponent implements OnInit, OnDestroy {
3844
this.isFixed(this.fixed);
3945
this.navbarBrandImg = Boolean(this.navbarBrand || this.navbarBrandFull || this.navbarBrandMinimized);
4046
this.navbarBrandRouterLink = this.navbarBrandRouterLink[0] ? this.navbarBrandRouterLink : this.navbarBrandHref;
47+
this.sidebarTogglerClass = this.setToggerBreakpointClass(<string>this.sidebarToggler);
48+
this.sidebarTogglerMobileClass = this.setToggerMobileBreakpointClass(<string>this.sidebarToggler);
49+
this.asideTogglerClass = this.setToggerBreakpointClass(<string>this.asideMenuToggler);
50+
this.asideTogglerMobileClass = this.setToggerMobileBreakpointClass(<string>this.asideMenuToggler);
4151
}
4252

4353
ngOnDestroy(): void {
@@ -49,4 +59,21 @@ export class AppHeaderComponent implements OnInit, OnDestroy {
4959
this.renderer.addClass(this.document.body, this.fixedClass);
5060
}
5161
}
62+
63+
setToggerBreakpointClass(breakpoint = 'md') {
64+
let togglerClass = 'd-none d-md-block';
65+
if (this.breakpoints.includes(breakpoint)) {
66+
const breakpointIndex = this.breakpoints.indexOf(breakpoint);
67+
togglerClass = `d-none d-${breakpoint}-block`;
68+
}
69+
return togglerClass;
70+
}
71+
72+
setToggerMobileBreakpointClass(breakpoint = 'lg') {
73+
let togglerClass = 'd-lg-none';
74+
if (this.breakpoints.includes(breakpoint)) {
75+
togglerClass = `d-${breakpoint}-none`;
76+
}
77+
return togglerClass;
78+
}
5279
}

0 commit comments

Comments
 (0)