line-gestao-frontend/src/app/app.ts

67 lines
1.8 KiB
TypeScript

// src/app/app.ts
import { Component, Inject, PLATFORM_ID } from '@angular/core';
import { Router, NavigationEnd, RouterOutlet } from '@angular/router';
import { CommonModule } from '@angular/common';
import { Header } from './components/header/header';
import { FooterComponent } from './components/footer/footer';
@Component({
selector: 'app-root',
standalone: true,
imports: [
CommonModule,
RouterOutlet,
Header,
FooterComponent
],
templateUrl: './app.html',
styleUrls: ['./app.scss'],
})
export class AppComponent {
isFullScreenPage = false;
hideFooter = false;
// ✅ páginas que devem esconder header/footer (tela cheia)
private readonly fullScreenRoutes = ['/login', '/register'];
// ✅ rotas internas (LOGADO) que devem esconder footer
private readonly loggedPrefixes = [
'/geral',
'/mureg',
'/faturamento',
'/dadosusuarios',
'/vigencia',
'/trocanumero',
'/dashboard', // ✅ ADICIONADO: esconde footer na página de dashboard
'/notificacoes',
];
constructor(
private router: Router,
@Inject(PLATFORM_ID) private platformId: object
) {
this.router.events.subscribe((event) => {
if (event instanceof NavigationEnd) {
const rawUrl = event.urlAfterRedirects || event.url;
// remove query/hash e barra final
let url = rawUrl.split('?')[0].split('#')[0];
url = url.replace(/\/+$/, '');
this.isFullScreenPage = this.fullScreenRoutes.includes(url);
const isLoggedRoute = this.loggedPrefixes.some(
(p) => url === p || url.startsWith(p + '/')
);
// ✅ footer some ao logar + também no login/register
this.hideFooter = isLoggedRoute || this.isFullScreenPage;
}
});
}
}
// ✅ SSR espera importar { App } de './app/app'
export { AppComponent as App };