@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
TypeScript
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>;
}