import { ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { BehaviorSubject, Observable } from 'rxjs'; import { BasicUxElementComponent, BasicUxElementComponentChanges } from '../../basic-ux-element.component'; import { NgInailCommonConfig } from '../../../../ng-inail-common.config'; import * as i0 from "@angular/core"; export declare type CheckFn = () => boolean; export declare type GetStringFn = () => string; export declare type MenuItemShowMode = 'auto'; type CollapseMode = 'show' | 'hide' | 'toggle'; export interface MenuItem { id?: string; label: string | GetStringFn; title?: string | GetStringFn; ariaLabel?: string | GetStringFn; link?: string | GetStringFn; linkRegex?: string | GetStringFn; queryParams?: { [k: string]: any; }; callback?: Function; activeLinks?: string[]; show?: boolean | CheckFn | MenuItemShowMode; show$?: Observable; collapsible?: boolean; collapsed?: boolean; subItems?: MenuItem[]; parent?: MenuItem; } export interface MenuComponentChanges extends BasicUxElementComponentChanges { } export declare class MenuComponent extends BasicUxElementComponent implements OnInit, OnChanges, OnDestroy { router: Router; private cdr; private libConfig; /** * Elemento parent del menu. * ( Questo input non deve essere passato, serve internamente per far funzionare il menu ) */ parent: MenuItem; /** * Elemento parent del menu. * ( Questo input non deve essere passato, serve internamente per far funzionare il menu ) */ innerMenu: boolean; /** * id dell'elemento che si vuole attivare. * Se specificato fa diventare bold la voce di menu associata */ activeItem: string; /** * Emette l'elemento del menu * che corrisponde all'url corrente. */ emitCurrent: Observable; /** * Collassa il menu * Se passato in input un id collassa lo specifico elemento. */ collapse: Observable; /** * Espande le voci di menu di primo livello. * Se specificato un id espande il ramo del menu * che porta all'elemento con l'id specificato. */ show: Observable; /** * Espande tutte le voci del menu * comprese quelle dei livelli annidati */ showAll: Observable; /** * Effettua il toggle dell'elemento specificato tramite id */ toggle: Observable; /** * Elementi del menu */ items: MenuItem[]; originalItems: MenuItem[]; /** * */ reinit: Observable; /** * Se true disabilita la sovrascrittura della proprieta * link negli elementi del menu * quando la proprieta linkRegex matcha * con l'url corrente */ disableLinkOverwriting: boolean; /** * Se true indica che le voci del menu sono collassabili. * Questa impostazione viene sovrascritta se specificato diversamente * negli elementi del menu */ collapsible: boolean; /** * Indica lo stato iniziale del menu, se colassato o espanso. * Questa impostazione viene sovrascritta se specificato diversamente * negli elementi del menu */ collapsed: boolean; /** * Se true abilita l'effetto fisarmonica * sulle voci di menu espandibili. */ collapseOther: boolean; /** * Se true espande automaticamente il percorso * verso un elemento * quando questo si riferisce all'url corrente */ expandAutomatically: boolean; /** * Emette l'oggetto MenuItem associato alla voce di menu sulla quale si e' cliccato. */ itemClick: EventEmitter; /** * Emette la voce di menu che corrisponde * con l'url corrente * dopo un evento di routing */ currentItem: EventEmitter; menu: ElementRef; inizializzazioneCompletata: boolean; mostraItem: EventEmitter; menuHeight$: BehaviorSubject; emitMenuHeight: () => void; constructor(router: Router, cdr: ChangeDetectorRef, libConfig: NgInailCommonConfig); ngOnChanges(changes: MenuComponentChanges): void; ngOnInit(): void; ngOnDestroy(): void; isCollapsible: () => boolean; isCollapsed: () => boolean; isItemCollapsible: (item: MenuItem) => boolean; isItemCollapsed: (item: MenuItem) => boolean; hasSubItems: (item: MenuItem) => boolean; isActive: (item: MenuItem) => boolean; /** * Verifica che l'elemento in input * sia associato all'url corrente * * @param item */ isCurrentPageItem: (item: MenuItem) => boolean; /** * Restituisce true se l'elemento * deve essere visualizzato * * @param item */ showItem: (item: MenuItem) => boolean; /** * Restituisce true se l'elemento * deve essere visualizzato in automatico * quando corrisponde all'url corrente * o se uno dei suoi nodi figli * e' un elemento che deve essere visualizzato in automatico. * * @param item */ isAutoShowItem: (item: MenuItem) => boolean; getPropertyValue: (property: string | GetStringFn) => string; getItemLink: (item: MenuItem) => string; getItemLinkRegex: (item: MenuItem) => string; getItemLabel: (item: MenuItem) => string; getItemTitle: (item: MenuItem) => string; getItemAriaLabel: (item: MenuItem) => string; /** * Verifica che l'url dato in input * sia quello corrente * * @param url */ isCurrentUrl: (url: string) => boolean; /** * Inizializza gli elementi del menu * * @private */ private inizializzaItems; /** * Sovrascrive la proprieta link degli elementi del menu * se la proprieta linkRegex matcha con l'url corrente. */ private impostaUrlEffettivi; /** * Sovrascrive la proprieta link dell'elemento del menu * se la proprieta linkRegex matcha con l'url corrente. */ private impostaUrlEffettivo; /** * Emette l'elemento * associato all'url corrente */ private emitCurrentItem; /** * Ricerca l'elemento di menu inerente * l'url corrente * * @param items */ private findCurrentItem; /** * * @param id * @param items */ private findItem; /** * * @param id */ private espandiPercorso; private espandiMenu; private collassaMenu; private setCollapsedMenu; espandiItem: (item: MenuItem) => void; collassaItem: (item: MenuItem) => void; toggleItem: (item: MenuItem) => void; setCollapsed(item: MenuItem, mode: CollapseMode): void; private deleteParent; private setParent; private toLightItem; itemOnClick(item: MenuItem): void; /** * Effetto fisarmonica * * @param item */ private doCollapseOther; /** * * @param currentItem * @param item */ currentItemHandler(currentItem: MenuItem, item: MenuItem): void; collapsedOnChange(): void; itemOnArrowDown(): void; itemOnArrowUp(): void; get focusableItems(): any; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } export {};