feat(menu): refactor menu handling to use labels directly and remove unused functions
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
<div class="sidebar-container">
|
||||
<h2 class="sidebar-title">MI CUENTA</h2>
|
||||
<h2 class="sidebar-title">{{ menu()?.label }}</h2>
|
||||
<div class="divider"></div>
|
||||
<nav class="sidebar-nav" aria-label="Secciones de mi cuenta">
|
||||
@for (menu of submenues(); track menu.code) {
|
||||
<a [routerLink]="menu.route" routerLinkActive="active" class="nav-link">
|
||||
{{ menuLabel(menu) }}
|
||||
{{ menu.label }}
|
||||
</a>
|
||||
}
|
||||
</nav>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
font-weight: bold;
|
||||
color: #1a1a1a;
|
||||
margin-bottom: 12px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.divider {
|
||||
height: 1px;
|
||||
|
||||
@@ -26,13 +26,15 @@ describe('AccountSidebar', () => {
|
||||
{
|
||||
id: 1,
|
||||
code: 'account',
|
||||
label: 'Mi cuenta',
|
||||
parent_menu_code: null,
|
||||
content_type: 'dynamic',
|
||||
route: '/mi-cuenta',
|
||||
submenues: [
|
||||
{
|
||||
id: 2,
|
||||
code: 'profile',
|
||||
code: 'account.profile',
|
||||
label: 'Datos personales',
|
||||
parent_menu_code: 'account',
|
||||
content_type: 'dynamic',
|
||||
route: '/mi-cuenta/datos-personales',
|
||||
@@ -40,7 +42,8 @@ describe('AccountSidebar', () => {
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
code: 'purchases',
|
||||
code: 'account.purchases',
|
||||
label: 'Mis compras',
|
||||
parent_menu_code: 'account',
|
||||
content_type: 'dynamic',
|
||||
route: '/mi-cuenta/compras',
|
||||
@@ -68,6 +71,7 @@ describe('AccountSidebar', () => {
|
||||
const element = fixture.nativeElement as HTMLElement;
|
||||
const links = Array.from(element.querySelectorAll<HTMLAnchorElement>('.nav-link'));
|
||||
|
||||
expect(element.querySelector('.sidebar-title')?.textContent?.trim()).toBe('Mi cuenta');
|
||||
expect(links.map((link) => link.textContent?.trim())).toEqual([
|
||||
'Datos personales',
|
||||
'Mis compras',
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import { Component, computed, inject } from '@angular/core';
|
||||
import { RouterLink, RouterLinkActive } from '@angular/router';
|
||||
|
||||
import { findMenu, getMenuLabel } from '../../../../../../core/services/menu.utils';
|
||||
import { Menu } from '../../../../../../core/services/tenant.interface';
|
||||
import { findMenu } from '../../../../../../core/services/menu.utils';
|
||||
import { TenantService } from '../../../../../../core/services/tenant.service';
|
||||
|
||||
@Component({
|
||||
@@ -15,11 +14,8 @@ import { TenantService } from '../../../../../../core/services/tenant.service';
|
||||
export class AccountSidebar {
|
||||
private readonly tenantService = inject(TenantService);
|
||||
|
||||
protected readonly submenues = computed(
|
||||
() => findMenu(this.tenantService.tenant()?.menues ?? [], 'account')?.submenues ?? [],
|
||||
protected readonly menu = computed(() =>
|
||||
findMenu(this.tenantService.tenant()?.menues ?? [], 'account'),
|
||||
);
|
||||
|
||||
protected menuLabel(menu: Menu): string {
|
||||
return getMenuLabel(menu);
|
||||
}
|
||||
protected readonly submenues = computed(() => this.menu()?.submenues ?? []);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user