import { AfterViewInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core'; import { MenuMetadata } from './types'; import * as i0 from "@angular/core"; /** * val-menu * * A side menu component using Ionic IonMenu with customizable logo, * close button, and content projection for menu items. * * @example * * * * * * * @input props - Menu configuration */ export declare class MenuComponent implements AfterViewInit, OnChanges, OnDestroy { private menuCtrl; private i18n; private elementRef; private splitPane?; private splitPaneOriginalStyles; protected readonly isDesktopCollapsed: import("@angular/core").WritableSignal; private touchStartX; private touchStartTime; private readonly EDGE_SWIPE_THRESHOLD; private readonly MIN_SWIPE_DISTANCE; private readonly MAX_SWIPE_DURATION; /** * Menu configuration. */ props: MenuMetadata; ngOnChanges(changes: SimpleChanges): void; ngAfterViewInit(): void; ngOnDestroy(): void; onTouchStart(event: TouchEvent): void; onTouchEnd(event: TouchEvent): void; /** * Close button text - reactive to language changes. */ closeButtonText: import("@angular/core").Signal; /** * Closes the menu. */ closeMenu(): Promise; /** * Expande el rail a pedido de lo que está proyectado adentro. Una sección que * solo agrupa hijos no puede desplegarse en 56px, así que pide lugar en vez * de no hacer nada. */ expandDesktopRail(): void; toggleDesktopCollapse(): void; retractableMenuEnabled(): boolean; desktopCollapseButtonLabel(): string; desktopCollapseIcon(): string; private dragStartX; private dragStartWidth; private dragBounds; private dragging; /** Por debajo de esto no hubo arrastre: fue un click sobre el borde. */ private readonly DRAG_CLICK_SLOP; onEdgePointerDown(event: PointerEvent): void; onEdgePointerMove(event: PointerEvent): void; onEdgePointerUp(event: PointerEvent): void; /** Ancho que corresponde al puntero, acotado a los dos extremos. */ private widthFromPointer; /** * Resuelve un ancho CSS a píxeles midiendo un elemento de sondeo. Hace falta * porque los valores son expresiones (`min(40vw, 22rem)`) que getComputedStyle * devuelve sin resolver cuando viven en una custom property. */ private resolveWidthPx; private menuElement; private collapsedWidthValue; private expandedWidthValue; private applySplitPaneWidth; private syncSplitPaneWidth; /** * Publica el estado del menú en el shell, para que el CONTENIDO pueda * adaptarse. * * El menú ya sabía si estaba abierto o cerrado, pero solo se lo decía a sí * mismo y al ancho del pane: el contenido seguía con el mismo tope, así que * el espacio que dejaba la navegación se volvía aire lateral en vez de * contenido. * * Se marca el `ion-split-pane` porque es el ancestro común del menú y del * contenido; desde ahí `val-container` lo lee con `:host-context` y ninguna * app necesita cablear nada. El atributo se limpia al restaurar (ver * restoreSplitPaneWidth) para no dejar un shell "colapsado" cuando el rail * deja de estar activo. */ private markShellMenuState; private findSplitPane; private captureOriginalSplitPaneStyles; private restoreSplitPaneWidth; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }