File tree Expand file tree Collapse file tree 5 files changed +38
-6
lines changed
Expand file tree Collapse file tree 5 files changed +38
-6
lines changed Original file line number Diff line number Diff line change 1919 </ div >
2020 </ div >
2121 < div *ngIf ="(isAuthenticated | async) && (showAuth | async) " class ="nav-item ">
22- < div ngbDropdown display ="dynamic " placement ="bottom-right " class ="d-inline-block " @fadeInOut >
22+ < div ngbDropdown #loggedInDrop =" ngbDropdown " display ="dynamic " placement ="bottom-right " class ="d-inline-block " @fadeInOut >
2323 < a href ="javascript:void(0); "
2424 role ="menuitem "
2525 [attr.aria-label] ="'nav.user-profile-menu-and-logout' | translate "
3030 ngbDropdownToggle >
3131 < i class ="fas fa-user-circle fa-lg fa-fw "> </ i > </ a >
3232 < div id ="logoutDropdownMenu " ngbDropdownMenu >
33- < ds-user-menu [inExpandableNavbar] ="false "> </ ds-user-menu >
33+ < ds-user-menu [inExpandableNavbar] ="false " (changedRoute) =" loggedInDrop.close() " > </ ds-user-menu >
3434 </ div >
3535 </ div >
3636 </ div >
Original file line number Diff line number Diff line change 11import {
22 Component ,
3+ EventEmitter ,
34 Input ,
5+ Output ,
46} from '@angular/core' ;
57
68import { ThemedComponent } from '../../theme-support/themed.component' ;
@@ -23,7 +25,12 @@ export class ThemedUserMenuComponent extends ThemedComponent<UserMenuComponent>{
2325 */
2426 @Input ( ) inExpandableNavbar : boolean ;
2527
26- protected inAndOutputNames : ( keyof UserMenuComponent & keyof this) [ ] = [ 'inExpandableNavbar' ] ;
28+ /**
29+ * Emits an event when the route changes
30+ */
31+ @Output ( ) changedRoute : EventEmitter < any > = new EventEmitter < any > ( ) ;
32+
33+ protected inAndOutputNames : ( keyof UserMenuComponent & keyof this) [ ] = [ 'inExpandableNavbar' , 'changedRoute' ] ;
2734
2835 protected getComponentName ( ) : string {
2936 return 'UserMenuComponent' ;
Original file line number Diff line number Diff line change 66 {{dsoNameService.getName(user$ | async)}}< br >
77 < span class ="text-muted "> {{(user$ | async)?.email}}</ span >
88 </ li >
9- < li class ="ds-menu-item-wrapper " role ="presentation ">
9+ < li class ="ds-menu-item-wrapper " role ="presentation " (click) =" onMenuItemClick() " >
1010 < a class ="ds-menu-item " role ="menuitem "
1111 [routerLink] ="[profileRoute] "
1212 routerLinkActive ="active "> {{'nav.profile' | translate}}</ a >
1313 </ li >
14- < li class ="ds-menu-item-wrapper " role ="presentation ">
14+ < li class ="ds-menu-item-wrapper " role ="presentation " (click) =" onMenuItemClick() " >
1515 < a class ="ds-menu-item " role ="menuitem "
1616 [routerLink] ="[mydspaceRoute] "
1717 routerLinkActive ="active "> {{'nav.mydspace' | translate}}</ a >
1818 </ li >
19- < li class ="ds-menu-item-wrapper " role ="presentation ">
19+ < li class ="ds-menu-item-wrapper " role ="presentation " (click) =" onMenuItemClick() " >
2020 < a class ="ds-menu-item " role ="menuitem "
2121 [routerLink] ="[subscriptionsRoute] "
2222 routerLinkActive ="active "> {{'nav.subscriptions' | translate}}</ a >
Original file line number Diff line number Diff line change @@ -203,6 +203,17 @@ describe('UserMenuComponent', () => {
203203 expect ( components ) . toBeFalsy ( ) ;
204204 } ) ;
205205
206+ it ( 'should call onMenuItemClick when li is clicked' , ( ) => {
207+ spyOn ( component , 'onMenuItemClick' ) ;
208+ const lis = fixture . debugElement . queryAll ( By . css ( '.ds-menu-item-wrapper' ) ) ;
209+ const secondLi = lis [ 1 ] ;
210+ secondLi . triggerEventHandler ( 'click' , {
211+ preventDefault : ( ) => { /**/
212+ } ,
213+ } ) ;
214+ expect ( component . onMenuItemClick ) . toHaveBeenCalled ( ) ;
215+ } ) ;
216+
206217 } ) ;
207218
208219} ) ;
Original file line number Diff line number Diff line change @@ -5,8 +5,10 @@ import {
55} from '@angular/common' ;
66import {
77 Component ,
8+ EventEmitter ,
89 Input ,
910 OnInit ,
11+ Output ,
1012} from '@angular/core' ;
1113import {
1214 RouterLink ,
@@ -49,6 +51,11 @@ export class UserMenuComponent implements OnInit {
4951 */
5052 @Input ( ) inExpandableNavbar = false ;
5153
54+ /**
55+ * Emits an event when the route changes
56+ */
57+ @Output ( ) changedRoute : EventEmitter < any > = new EventEmitter < any > ( ) ;
58+
5259 /**
5360 * True if the authentication is loading.
5461 * @type {Observable<boolean> }
@@ -96,4 +103,11 @@ export class UserMenuComponent implements OnInit {
96103 this . user$ = this . authService . getAuthenticatedUserFromStore ( ) ;
97104
98105 }
106+
107+ /**
108+ * Emits an event when the menu item is clicked
109+ */
110+ onMenuItemClick ( ) {
111+ this . changedRoute . emit ( ) ;
112+ }
99113}
You can’t perform that action at this time.
0 commit comments