mirror of
https://github.com/akveo/ngx-admin.git
synced 2025-12-18 08:20:13 +01:00
a bit more of a refactoring
This commit is contained in:
parent
1d6c0554a3
commit
b50775a96a
3 changed files with 27 additions and 12 deletions
|
|
@ -12,7 +12,9 @@ export class ContentTop {
|
||||||
|
|
||||||
constructor(private _state:AppState) {
|
constructor(private _state:AppState) {
|
||||||
this._state.subscribe('menu.activeLink', (activeLink) => {
|
this._state.subscribe('menu.activeLink', (activeLink) => {
|
||||||
|
if (activeLink) {
|
||||||
this.activePageTitle = activeLink.title;
|
this.activePageTitle = activeLink.title;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ export class Sidebar {
|
||||||
|
|
||||||
private _selectMenuItem(currentPath = null) {
|
private _selectMenuItem(currentPath = null) {
|
||||||
|
|
||||||
let currentMenu = this._sidebarService.selectMenuItem(this._router, this.menuItems, currentPath);
|
let currentMenu = this._sidebarService.setRouter(this._router).selectMenuItem(this.menuItems, currentPath);
|
||||||
this._state.notifyDataChanged('menu.activeLink', currentMenu);
|
this._state.notifyDataChanged('menu.activeLink', currentMenu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,38 +4,51 @@ import {menuItems} from '../../../app.menu';
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SidebarService {
|
export class SidebarService {
|
||||||
|
|
||||||
|
private _router;
|
||||||
|
|
||||||
getMenuItems() {
|
getMenuItems() {
|
||||||
return menuItems;
|
return menuItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
selectMenuItem(router, items:Array<any>, currentPath:string) {
|
setRouter(router) {
|
||||||
|
this._router = router;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
selectMenuItem(items:Array<any>, currentPath:string) {
|
||||||
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) => {
|
||||||
|
|
||||||
menu.selected = this._isCurrent(router, this._generateRoute(router, [menu.component]));
|
this._selectItem(currentPath, [menu.component], menu);
|
||||||
menu.expanded = menu.expanded || menu.selected;
|
|
||||||
assignCurrent(menu);
|
assignCurrent(menu);
|
||||||
|
|
||||||
if (menu.subMenu) {
|
if (menu.subMenu) {
|
||||||
menu.subMenu.forEach((subMenu) => {
|
menu.subMenu.forEach((subMenu) => {
|
||||||
let route = this._generateRoute(router, [menu.component, subMenu.component]);
|
this._selectItem(currentPath, [menu.component, subMenu.component], subMenu, menu);
|
||||||
subMenu.selected = !subMenu.disabled && this._isCurrent(router, route) && this._resolvePath(route, '') == currentPath;
|
assignCurrent(subMenu);
|
||||||
assignCurrent(menu);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return currentMenu;
|
return currentMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _isCurrent(router, route) {
|
private _selectItem(currentPath, instructions, item, parentMenu = null) {
|
||||||
return route ? router.isRouteActive(route) : false;
|
let route = this._generateRoute(instructions);
|
||||||
|
item.selected = !item.disabled && this._isCurrent(route) && this._resolvePath(route, '') == currentPath;
|
||||||
|
if (parentMenu) {
|
||||||
|
parentMenu.expanded = parentMenu.expanded || item.selected;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _generateRoute(router, instructions) {
|
private _isCurrent(route) {
|
||||||
return instructions.filter(i => typeof i !== 'undefined').length > 0 ? router.generate(instructions) : null;
|
return route ? this._router.isRouteActive(route) : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private _generateRoute(instructions) {
|
||||||
|
return instructions.filter(i => typeof i !== 'undefined').length > 0 ? this._router.generate(instructions) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _resolvePath(instruction, collected) {
|
private _resolvePath(instruction, collected) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue