UNPKG

@edugouvfr/ngx-dsfr-ext

Version:

NgxDsfrExt est une extension au package @edugouvfr/ngx-dsfr (portage Angular des éléments DSFR)

60 lines (59 loc) 3.09 kB
import { EventEmitter, InputSignal, OnDestroy } from '@angular/core'; import * as i0 from "@angular/core"; export declare class DsfrDropdownPositionDirective implements OnDestroy { autoWidth: boolean; /** Element auquel le dropdown est programmatiquement attaché en cas de appendTo ('body' ou container relatif) */ parentContainer: HTMLElement | undefined; /** Emission après attachement de la dropdown au parentContainer en appendTo */ appendDropdown: EventEmitter<void>; comboBox: InputSignal<HTMLElement>; private readonly dropdownRef; private readonly _renderer; private readonly _unlistenFn; /** * Ajoute l'élément dropdown et le repositionne * /!\ ne pas utiliser un effect() : le cycle de rendu est différent entre angular 17 et angular 19, * le composant ne sera pas encore ajouté dans le DOM en angular 19. */ constructor(); /** A la destruction du composant, supprimer l'élément listbox si il a été ajouté au parent ou body (appendTo) */ ngOnDestroy(): void; private setPosition; /** * Calcul de la position verticale de la dropdown * - selon la place disponible (en dessous / au dessus) * - en valeur absolue selon le container parent (si appendTo) * @param dropdown dropdown a positionner * @param comboBox container auquel rattacher la dropdown visuellement * @param viewportHeight * @returns nouvelle position en string (px/auto) */ private calcPositionY; /** * Calcul de la position horizontale de la dropdown * - selon la place disponible (décalage à gauche éventuel) * - en valeur absolue selon le container parent (si appendTo) * @param dropdown dropdown a positionner * @param comboBox container auquel rattacher la dropdown visuellement * @param viewportWidth * @returns nouvelle position en string (px/auto) */ private calcPositionX; /** * Compute top position relative to parent element (top position, margin/padding, scroll inside parent) * @param element element to move relatively * @param parentElement parent container * @returns new top position */ private computeTopPositionRelative; /** * Ajouter l'element dropdown directement au body ou container spécifié dans le cas de appendTo * Permet d'afficher la dropdown "en dehors" d'un container visuel type modale ou accordéon (pas de scroll) * @param element dropdown */ private appendElement; /** Suppression de la liste rattachée au container appendTo */ private destroyOverlayDropdown; static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDropdownPositionDirective, never>; static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrDropdownPositionDirective, "[dsfrxDropdown]", never, { "autoWidth": { "alias": "autoWidth"; "required": false; }; "parentContainer": { "alias": "parentContainer"; "required": false; }; "comboBox": { "alias": "comboBox"; "required": true; "isSignal": true; }; }, { "appendDropdown": "appendDropdown"; }, never, never, true, never>; }