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