UNPKG

@angulogic/ng-sidebar

Version:

angular sidebar - standalone components

120 lines (119 loc) 4.53 kB
import { MenuData, SidebarData, SidebarModel } from './sidebar.model'; import { Router } from '@angular/router'; import { HttpClient } from '@angular/common/http'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; /** * Service responsible for managing sidebar state, configurations, and behaviors. * It handles sidebar initialization, resizing, menu interactions, and theme changes. * * @export * @class NgSidebarService */ export declare class NgSidebarService { router: Router; private http; /** * Tracks whether auto-positioning is enabled. * @default false */ autoPositionActive: boolean; /** * Indicates whether the sidebar is currently being resized. * @default false */ isResizing: boolean; /** * Stores the complete sidebar configuration and data. */ sidebarData: SidebarModel; /** * MutationObserver to monitor sidebar style changes for auto-positioning. */ private observer; /** * Sidebar genişliğini tutan observable. */ sidebarWidth$: BehaviorSubject<number>; /** * Initializes the sidebar service and listens for route changes. * * @param {Router} router - Angular Router for detecting navigation events. * @param {HttpClient} http - Angular HttpClient for loading assets (e.g., SVG icons). */ constructor(router: Router, http: HttpClient); /** * Initializes the sidebar configuration with default values if not provided. * * @param {Partial<SidebarModel> & { sidebarData: SidebarData[] }} data - Sidebar data with optional configurations. * @returns {SidebarModel} - The complete SidebarModel with default values applied. */ initilazeSidebarData(data: Partial<SidebarModel> & { sidebarData: SidebarData[]; }): SidebarModel; /** * Enables automatic positioning of the sidebar. * It observes the sidebar's width and updates the CSS variable `--sidebar-width` dynamically. */ setAutoPosition(): void; /** * Animates the width update of the sidebar. * * @param {HTMLElement} divElement - The sidebar element whose width is being updated. * @param {number} startTime - The start time of the animation. * @param {number} duration - The duration of the width animation in milliseconds. */ updateWidth(divElement: HTMLElement, startTime: number, duration: number): void; /** * Disables automatic positioning of the sidebar. * Stops observing style changes and resets CSS modifications. */ destroyAutoPosition(): void; /** * Handles sidebar resizing using mouse events. * * @param {SidebarModel} sidebarData - The sidebar configuration object. */ resize(sidebarData: SidebarModel): void; /** * Initializes menu data by assigning default values if not provided. * * @param {MenuData[]} menuData - The menu data array to initialize. * @returns {MenuData[]} - The processed menu data with default values applied. */ private initializeMenuData; /** * Searches for menu items by name within the sidebar data. * * @param {SidebarModel} data - The sidebar configuration containing menu data. * @param {string} searchValue - The search query entered by the user. * @returns {MenuData[]} - An array of matching menu items. */ searchByName(data: SidebarModel, searchValue: string): MenuData[]; /** * Updates the active state of menu items based on the current route. * * @param {MenuData[]} menuData - The menu data array to update. * @param {string} currentRoute - The current active route. */ updateActiveState(menuData: MenuData[], currentRoute: string): void; /** * Toggles the sidebar theme between 'light' and 'dark'. * Updates the `theme` property in `sidebarData.options`. */ changeTheme(): void; /** * Loads an SVG file from the given path. * * @param {string} path - The file path of the SVG to load. * @returns {Promise<string>} - A promise resolving to the SVG content. */ loadSvg(path: string): Promise<string>; /** * Toggles the sidebar's expanded or collapsed state. * Triggers the appropriate expand/collapse event if provided. */ toggleSidebar(): Promise<void>; static ɵfac: i0.ɵɵFactoryDeclaration<NgSidebarService, never>; static ɵprov: i0.ɵɵInjectableDeclaration<NgSidebarService>; }