mirror of
https://github.com/akveo/ngx-admin.git
synced 2025-12-17 07:50:12 +01:00
fix(baSidebar): fix current selected menu
This commit is contained in:
parent
9312084fa4
commit
affc122a77
2 changed files with 8 additions and 17 deletions
|
|
@ -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()) {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
@ -50,13 +50,4 @@ export class BaSidebarService {
|
||||||
private _generateRoute(instructions) {
|
private _generateRoute(instructions) {
|
||||||
return instructions.filter(i => typeof i !== 'undefined').length > 0 ? this._router.generate(instructions) : null;
|
return instructions.filter(i => typeof i !== 'undefined').length > 0 ? this._router.generate(instructions) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _resolvePath(instruction, collected) {
|
|
||||||
if (instruction !== null) {
|
|
||||||
collected += instruction.urlPath + '/';
|
|
||||||
return this._resolvePath(instruction.child, collected)
|
|
||||||
} else {
|
|
||||||
return collected.slice(0, -1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue