Bugfix for marking current route in menu

This commit is contained in:
Ronny Roos 2016-06-23 18:07:32 +02:00
parent eb3127a4c0
commit 831f40fcf3
2 changed files with 9 additions and 9 deletions

View file

@ -35,7 +35,7 @@ export class BaSidebar {
private _state:AppState) { private _state:AppState) {
this.menuItems = this._sidebarService.getMenuItems(); this.menuItems = this._sidebarService.getMenuItems();
this._onRouteChange = this._router.root.subscribe((path) => this._selectMenuItem(path)); this._onRouteChange = this._router.root.subscribe((path) => this._selectMenuItem());
this._state.subscribe('menu.isCollapsed', (isCollapsed) => { this._state.subscribe('menu.isCollapsed', (isCollapsed) => {
this.isMenuCollapsed = isCollapsed; this.isMenuCollapsed = isCollapsed;
}); });
@ -113,9 +113,9 @@ export class BaSidebar {
return window.innerWidth <= layoutSizes.resWidthCollapseSidebar; return window.innerWidth <= layoutSizes.resWidthCollapseSidebar;
} }
private _selectMenuItem(currentPath = null):void { private _selectMenuItem():void {
let currentMenu = this._sidebarService.setRouter(this._router).selectMenuItem(this.menuItems, currentPath); let currentMenu = this._sidebarService.setRouter(this._router).selectMenuItem(this.menuItems);
this._state.notifyDataChanged('menu.activeLink', currentMenu); this._state.notifyDataChanged('menu.activeLink', currentMenu);
// hide menu after natigation on mobile devises // hide menu after natigation on mobile devises
if (this._shouldMenuCollapse()) { if (this._shouldMenuCollapse()) {

View file

@ -15,19 +15,19 @@ export class BaSidebarService {
return this; return this;
} }
public selectMenuItem(items:Array<any>, currentPath:string) { public selectMenuItem(items:Array<any>) {
let currentMenu; let currentMenu = null;
let assignCurrent = (menu) => (menu.selected ? currentMenu = menu : null); let assignCurrent = (menu) => (menu.selected ? currentMenu = menu : null);
items.forEach((menu: any) => { items.forEach((menu: any) => {
this._selectItem(currentPath, [menu.component], menu); this._selectItem([menu.component], menu);
assignCurrent(menu); assignCurrent(menu);
if (menu.subMenu) { if (menu.subMenu) {
menu.subMenu.forEach((subMenu) => { menu.subMenu.forEach((subMenu) => {
this._selectItem(currentPath, [menu.component, subMenu.component], subMenu, menu); this._selectItem([menu.component, subMenu.component], subMenu, menu);
assignCurrent(subMenu); assignCurrent(subMenu);
}); });
} }
@ -35,9 +35,9 @@ export class BaSidebarService {
return currentMenu; return currentMenu;
} }
private _selectItem(currentPath, instructions, item, parentMenu = null) { private _selectItem(instructions, item, parentMenu = null) {
let route = this._generateRoute(instructions); let route = this._generateRoute(instructions);
item.selected = !item.disabled && this._isCurrent(route) && this._resolvePath(route, '') == currentPath; item.selected = !item.disabled && this._isCurrent(route);
if (parentMenu) { if (parentMenu) {
parentMenu.expanded = parentMenu.expanded || item.selected; parentMenu.expanded = parentMenu.expanded || item.selected;
} }