import { Observable } from 'rxjs/Observable'; import { Routes } from '@angular/router'; import { AtSidenavItem } from './sidenav-item/sidenav-item.model'; import { AtPermissionsService } from '../permissions/permissions.service'; export declare class AtSidenavService { private atPermsService; private _itemsSubject; private atSidenavItems; private atSidenavFlatItems; /** * Observable for AtSidenavItems changes */ atSidenavItemsChange: Observable; private _currentlyOpenSubject; private _currentlyOpen; /** * Observable for AtSidenavItem currently open */ avSidenavCurrentlyOpenChange: Observable; /** * True is Sidenav is collapsed */ isSidenavCollapsed: boolean; private isSidenavCollapsedSubject; /** * Observable for AtSidenav collapsible mode */ sidenavCollapsedChange: Observable; permsApplied: boolean; /** * Service provided with methods that allows you to add, edit and remove items from the sidenav. * A method to create all sidenav items based on app routes. * And utilities to find items, notify for changes and much more. */ constructor(atPermsService: AtPermissionsService); /** * Fix path route adding '/' character * @param path * @returns any */ private fixRoutePath(path); /** * Notify when Sidenav changes to collapsed mode * @param isCollapsed * @internal use only */ toggleSidenavChanged(isCollapsed: boolean): void; applyPerms(perms: string[]): void; replaceUrlParams(url: string, params: any): string; /** * Build menu structure based on Route Data. * @param routes */ buildMenuByRoutes(routes: Routes, replaceParams?: any): void; /** * Add new Menu Item * @param atSidenavItem * @returns The Item added * @throws Will throw an error if the route exist on AtSidenavItems collection. */ addItem(atSidenavItem: AtSidenavItem, notifyChange?: boolean): AtSidenavItem; /** * Add new Child Item * @param parent: Parent Item * @param child: Child Item * @returns The Item added */ addChild(parent: AtSidenavItem, child: AtSidenavItem, notifyChange?: boolean): AtSidenavItem; /** * Update a Sidenav Item * @param route The route to find the Item * @param name Optional, Item display text * @param badge Optional, Item Badge text * @param badgeColor Optional, Item Badge Color * @returns The Item added */ updateItem(route: string, name?: string, badge?: string, badgeColor?: string): AtSidenavItem; /** * Remove a Sidenav Item * @param item */ removeItem(item: AtSidenavItem): void; /** * Get all Sidenav Items on the collection * @returns AtSidenavItem[] */ getAtSidenavItems(): AtSidenavItem[]; /** * Return an array based on AtSidenavItems Tree * @param treeObj AtSidenavItems Tree * @returns AtSidenavItem[] * @internal use only */ flattenTree(): AtSidenavItem[]; /** * True if Sidenav Item is open * @param item * @returns boolean * @internal use only */ isOpen(item: AtSidenavItem): boolean; /** * Toggle currently Sidenav Item open * @param item * @internal use only */ toggleCurrentlyOpen(item: AtSidenavItem): void; /** * Returns all Sidenav Item Parents * @param item * @param currentlyOpen * @returns any * */ getAllParents(item: AtSidenavItem, currentlyOpen?: AtSidenavItem[]): any; /** * Find a Sidenav Item * @param value The search value * @param compareValue AtSidenavItem property to compare for * @returns AtSidenavItem */ findItem(value: string, compareValue?: string): any; /** * Find a Sidenav Item by route * @param route * @param collection * @returns AtSidenavItem */ findItemByRoute(route: string, collection: AtSidenavItem[], exact?: boolean): any; /** * Find a Sidenav Item by name * @param name * @param collection * @returns AtSidenavItem */ findItemByName(name: string, collection: AtSidenavItem[]): AtSidenavItem; /** * Sort AtSidenavItems recursively by property * @param AtSidenavItem[] Sidenav Items Collection * @param propertyName Property to sort * @returns AtSidenavItem[] */ sortAtSidenavItems(array: AtSidenavItem[], propertyName: string): AtSidenavItem[]; /** * Notify currently open AtSidenavItem * @param currentlyOpen * @internal use only */ setCurrentlyOpen(currentlyOpen: AtSidenavItem[]): void; /** * Open parent AtSidenavItem based on the route * @param route * @internal use only */ openAtSidenavItemByRoute(route: string): void; /** * Return currently Sidenav Item open * @returns AtSidenavItem * @internal use only */ readonly currentlyOpen: AtSidenavItem[]; }