67 lines
1.8 KiB
TypeScript
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 };
|