Skip to content

Commit cc76495

Browse files
committed
fixed 2nd layer nav link menus
1 parent d2f208e commit cc76495

3 files changed

Lines changed: 20 additions & 24 deletions

File tree

projects/website-angular/src/app/navigation-bar/navigation-bar.component.html

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,14 @@
2626
*ngIf="!navOption.external"
2727
[routerLink]="(windowWidth > 768 || navOption.label == 'Download') ? navOption.link : null"
2828
class="nav-link"
29-
[class.has-dropdown]="
30-
navOption.dropdownLinks && (navOption.dropdownLinks | keyvalue:preserveOrder).length > 0
31-
"
29+
[class.has-dropdown]="hasDropdownLinks(navOption.dropdownLinks)"
3230
>
3331
<mat-icon>
3432
{{ navOption.icon }}
3533
</mat-icon>
3634
{{ navOption.label }}
3735
<mat-icon
38-
*ngIf="
39-
navOption.dropdownLinks && (navOption.dropdownLinks | keyvalue:preserveOrder).length > 0
40-
"
36+
*ngIf="hasDropdownLinks(navOption.dropdownLinks)"
4137
class="dropdown-arrow"
4238
>
4339
keyboard_arrow_down
@@ -47,18 +43,14 @@
4743
*ngIf="navOption.external"
4844
[attr.href]="(windowWidth > 768 || navOption.label == 'Download') ? navOption.link : null"
4945
class="nav-link"
50-
[class.has-dropdown]="
51-
navOption.dropdownLinks && (navOption.dropdownLinks | keyvalue:preserveOrder).length > 0
52-
"
46+
[class.has-dropdown]="hasDropdownLinks(navOption.dropdownLinks)"
5347
>
5448
<mat-icon>
5549
{{ navOption.icon }}
5650
</mat-icon>
5751
{{ navOption.label }}
5852
<mat-icon
59-
*ngIf="
60-
navOption.dropdownLinks && (navOption.dropdownLinks | keyvalue:preserveOrder).length > 0
61-
"
53+
*ngIf="hasDropdownLinks(navOption.dropdownLinks)"
6254
class="dropdown-arrow"
6355
>
6456
keyboard_arrow_down
@@ -67,9 +59,7 @@
6759
</div>
6860

6961
<div
70-
*ngIf="
71-
navOption.dropdownLinks && (navOption.dropdownLinks | keyvalue:preserveOrder).length > 0
72-
"
62+
*ngIf="hasDropdownLinks(navOption.dropdownLinks)"
7363
class="dropdown-menu"
7464
[class.show]="activeDropdown === option.key"
7565
>
@@ -93,13 +83,12 @@
9383
*ngFor="let linkItem of links | keyvalue:preserveOrder"
9484
class="dropdown-item"
9585
[class.nested-dropdown-item]="level > 0"
86+
[class.has-submenu]="hasDropdownLinks(asNavLink(linkItem.value)?.dropdownLinks)"
9687
>
9788
<ng-container *ngIf="asNavLink(linkItem.value) as navLink">
9889
<div
9990
class="dropdown-link-wrapper"
100-
[class.opens-left]="
101-
navLink.dropdownLinks && (navLink.dropdownLinks | keyvalue:preserveOrder).length > 0
102-
"
91+
[class.opens-left]="hasDropdownLinks(navLink.dropdownLinks)"
10392
>
10493
<a
10594
*ngIf="!navLink.external"
@@ -118,15 +107,15 @@
118107
{{ navLink.label }}
119108
</a>
120109
<mat-icon
121-
*ngIf="navLink.dropdownLinks && (navLink.dropdownLinks | keyvalue:preserveOrder).length > 0"
110+
*ngIf="hasDropdownLinks(navLink.dropdownLinks)"
122111
class="nested-arrow"
123112
>
124-
{{ (navLink.dropdownLinks && (navLink.dropdownLinks | keyvalue:preserveOrder).length > 0) ? 'keyboard_arrow_left' : 'keyboard_arrow_right' }}
113+
keyboard_arrow_left
125114
</mat-icon>
126115
</div>
127116

128117
<div
129-
*ngIf="navLink.dropdownLinks && (navLink.dropdownLinks | keyvalue:preserveOrder).length > 0"
118+
*ngIf="hasDropdownLinks(navLink.dropdownLinks)"
130119
class="nested-dropdown-menu"
131120
>
132121
<ng-container

projects/website-angular/src/app/navigation-bar/navigation-bar.component.scss

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,13 +217,15 @@ $shadow: rgba(0, 0, 0, 0.1);
217217
z-index: 999;
218218
}
219219

220-
.dropdown-item:hover .nested-dropdown-menu {
220+
.dropdown-item.has-submenu:hover > .nested-dropdown-menu,
221+
.dropdown-item.has-submenu:focus-within > .nested-dropdown-menu {
221222
opacity: 1;
222223
visibility: visible;
223224
transform: translateX(0);
224225
}
225226

226-
.dropdown-item:hover .nested-arrow {
227+
.dropdown-item.has-submenu:hover > .dropdown-link-wrapper .nested-arrow,
228+
.dropdown-item.has-submenu:focus-within > .dropdown-link-wrapper .nested-arrow {
227229
color: var(--on-primary);
228230
transform: translateX(2px);
229231
}
@@ -265,7 +267,8 @@ $shadow: rgba(0, 0, 0, 0.1);
265267
box-shadow: 0 8px 16px $shadow;
266268
}
267269

268-
.dropdown-item:hover .nested-dropdown-menu {
270+
.dropdown-item.has-submenu:hover > .nested-dropdown-menu,
271+
.dropdown-item.has-submenu:focus-within > .nested-dropdown-menu {
269272
opacity: 1;
270273
visibility: visible;
271274
transform: translateX(0);

projects/website-angular/src/app/navigation-bar/navigation-bar.component.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,10 @@ export class NavigationBarComponent implements OnInit, AfterViewInit {
121121
return value as NavLink;
122122
}
123123

124+
hasDropdownLinks(links: Record<string, NavLink> | undefined): boolean {
125+
return !!links && Object.keys(links).length > 0;
126+
}
127+
124128
@HostListener('window:resize', ['$event']) onResize(event: any) {
125129
this.windowWidth = window.innerWidth;
126130
}

0 commit comments

Comments
 (0)