import { EventEmitter } from '../../stencil-public-runtime'; export interface SelectItem { label: string; value: string | number; disabled?: boolean; created?: boolean; } export declare class SpwCustomSelect { hostElement: HTMLElement; private host; private selectContainer; private defaultValue; private parentScrollContainer; /** Événement émis lorsque la valeur sélectionnée change */ valueChanged: EventEmitter<(string | number)[] | string | number>; /** Événement émis lorsqu'une nouvelle option est créée via le champ de recherche */ optionCreated: EventEmitter; /** Événement émis lorsqu'une option créée est supprimée */ optionRemoved: EventEmitter; internalValue: (string | number)[] | string | number; isOpen: boolean; parsedOptions: SelectItem[]; focusedOptionIndex: number | null; searchText: string; hasSlottedFooter: boolean; dropdownDirection: 'up' | 'down'; hasSelectedValue: boolean; dropdownPosition: { top: number; left: number; width: number; }; /** Valeur actuelle sélectionnée dans le composant, peut être une chaîne, un nombre ou un tableau */ value: (string | number)[] | string | number; /** Label associé au champ de sélection personnalisé */ label: string; /** Placeholder à afficher lorsque aucune option n'est sélectionnée */ placeholder: string; /** Placeholder à afficher dans l'input de recherche si actif */ searchPlaceholder: string; /** Texte à afficher si pas de résultats de recherche */ noResultsText: string; /** Indique si le champ est désactivé et donc non interactif */ disabled: boolean; /** Nom de l'élément dans les formulaires, utilisé pour associer la valeur */ name: string; /** Indique si la sélection est obligatoire dans le formulaire */ required: boolean; /** Liste d'items dynamiques pour générer les options (array d'objets avec label + value) */ items?: SelectItem[]; /** Taille du select, peut être "large" ou "medium" */ size: 'large' | 'medium'; /** Permet la sélection multiple si vrai */ multiple: boolean; /** Active la fonction de recherche dans la liste des items */ isSearch: boolean; /** Texte d'assistance à afficher sous le label */ assistiveText?: string; /** Message d'erreur à afficher sous le champ */ error?: string; /** Message d'indication (hint) à afficher sous le champ */ hint?: string; /** Message de succès à afficher sous le champ */ success?: string; /** Message de warning à afficher sous le champ */ warning?: string; /** Affiche une icône d'erreur si vrai */ showErrorIcon?: boolean; /** Affiche une icône d'indication si vrai */ showHintIcon?: boolean; /** Affiche une icône de succès si vrai */ showSuccessIcon?: boolean; /** Affiche une icône de warning si vrai */ showWarningIcon?: boolean; /** Active le panneau dépliable sur les messages (error, hint, success, warning) */ isExpandable?: boolean; /** Texte du lien pour déplier le message */ expandLabel?: string; /** Texte du lien pour replier le message */ collapseLabel?: string; /** Titre du tooltip */ tooltipTitle?: string; /** Texte du tooltip */ tooltipText?: string; /** Largeur maximale du tooltip */ tooltipMaxWidth?: string; /** Positionnement du tooltip */ tooltipDirection?: 'top' | 'bottom' | 'left' | 'right'; /** Curseur du tooltip */ tooltipCursor?: 'pointer' | 'default' | 'help' | 'disabled'; /** Utilise un positionnement fixed pour le dropdown si nécessité de sortir du contexte (utile dans une modal avec overflow hidden) */ fixedDropdown?: boolean; /** Tag name du composant parent contenant le scroll (ex: 'spw-modal'). Le composant remontera les parents pour trouver ce composant et écouter son scroll interne. */ fixedDropdownParent?: string; /** Indique si le champ peut être effacé avec un bouton */ isClear?: boolean; /** Direction d'ouverture du dropdown */ direction?: 'top' | 'bottom' | 'auto'; /** Permet à l'utilisateur d'ajouter une option si elle n'existe pas dans la liste (nécessite isSearch) */ allowCreate?: boolean; internals: ElementInternals; componentWillLoad(): void; /** Méthode publique pour mettre le focus sur le champ de sélection. */ setFocus(): Promise; /** Réinitialise le champ de sélection */ resetSelect(): Promise; /** Définit la valeur du champ de sélection */ setValue(val: (string | number)[] | string | number): Promise; /** Récupère la valeur actuelle du champ de sélection */ getValue(): Promise<(string | number)[] | string | number>; formResetCallback(): void; componentDidLoad(): void; connectedCallback(): void; disconnectedCallback(): void; private findParentComponent; private findScrollContainerInShadowRoot; private ensureParentScrollListener; private cleanupParentScrollListener; private handleOtherSelectOpened; private handleClickOutside; parseOptions(newValue: SelectItem[]): void; valueChangedHandler(newValue: (string | number)[] | string | number): void; private updateSelectedOption; internalValueChanged(): void; private getFormValue; private toggleDropdown; private notifyOtherSelects; private updateDropdownPosition; private determineDropdownDirection; private openDropdownWithKeyboard; private closeDropdown; private addCreatedOption; private removeCreatedOption; private handleClear; private selectOption; private handleOptionKeyDown; private handleKeyDown; private renderMessages; private get elementClass(); private normalizeString; private getSelectedLabels; private getFilteredOptions; private handleSearchInput; private isSearchVisible; private showPlaceholder; private showCreateButton; render(): any; }