src/lib/layout/layout.component.ts
| changeDetection | ChangeDetectionStrategy.OnPush |
| selector | rxap-layout |
| imports |
HeaderComponent
MatSidenavModule
AsyncPipe
MatIconModule
MatButtonModule
RouterLink
NgIf
FooterComponent
MatMenuModule
NgOptimizedImage
NavigationComponent
RouterOutlet
NgStyle
NgClass
SidenavComponent
ReleaseInfoComponent
SidenavFooterDirective
NavigationProgressBarComponent
|
| styleUrls | ./layout.component.scss |
| templateUrl | ./layout.component.html |
Properties |
|
| Public Readonly logoHeight |
Type : Signal<number>
|
Default value : computed(() => this.logoService.height())
|
|
Defined in src/lib/layout/layout.component.ts:64
|
| Protected Readonly logoService |
Default value : inject(LogoService)
|
|
Defined in src/lib/layout/layout.component.ts:61
|
| Public Readonly logoSrc |
Type : Signal<string>
|
Default value : computed(() => this.logoService.src())
|
|
Defined in src/lib/layout/layout.component.ts:62
|
| Public Readonly logoWidth |
Type : Signal<number>
|
Default value : computed(() => this.logoService.width())
|
|
Defined in src/lib/layout/layout.component.ts:63
|
import {
AsyncPipe,
NgClass,
NgIf,
NgOptimizedImage,
NgStyle,
} from '@angular/common';
import {
ChangeDetectionStrategy,
Component,
computed,
inject,
Signal,
} from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { MatMenuModule } from '@angular/material/menu';
import { MatSidenavModule } from '@angular/material/sidenav';
import {
RouterLink,
RouterOutlet,
} from '@angular/router';
import { FooterComponent } from '../footer/footer.component';
import { HeaderComponent } from '../header/header.component';
import { LogoService } from '../logo.service';
import { NavigationProgressBarComponent } from '../navigation-progress-bar/navigation-progress-bar.component';
import { NavigationComponent } from '../navigation/navigation.component';
import { ReleaseInfoComponent } from '../release-info/release-info.component';
import { SidenavFooterDirective } from '../sidenav/sidenav-footer.directive';
import { SidenavComponent } from '../sidenav/sidenav.component';
@Component({
selector: 'rxap-layout',
templateUrl: './layout.component.html',
styleUrls: ['./layout.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [
HeaderComponent,
MatSidenavModule,
AsyncPipe,
MatIconModule,
MatButtonModule,
RouterLink,
NgIf,
FooterComponent,
MatMenuModule,
NgOptimizedImage,
NavigationComponent,
RouterOutlet,
NgStyle,
NgClass,
SidenavComponent,
ReleaseInfoComponent,
SidenavFooterDirective,
NavigationProgressBarComponent,
]
})
export class LayoutComponent {
protected readonly logoService = inject(LogoService);
public readonly logoSrc: Signal<string> = computed(() => this.logoService.src());
public readonly logoWidth: Signal<number> = computed(() => this.logoService.width());
public readonly logoHeight: Signal<number> = computed(() => this.logoService.height());
}
<rxap-header class="z-10 w-full fixed top-0"></rxap-header>
<rxap-navigation-progress-bar></rxap-navigation-progress-bar>
<rxap-sidenav>
<router-outlet></router-outlet>
<ng-template rxapSidenavFooter>
<img
[src]="logoSrc()"
[routerLink]="['/']"
[width]="logoWidth()"
[height]="logoHeight()"
alt="logo"
class="grow-0 mx-16 cursor-pointer"
/>
<div class="grow-0 px-16 mt-4">
<rxap-release-info></rxap-release-info>
</div>
</ng-template>
</rxap-sidenav>
<rxap-footer class="z-10 w-full fixed bottom-0"></rxap-footer>
./layout.component.scss