UNPKG

@edugouvfr/ngx-dsfr-ext

Version:

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

143 lines (142 loc) 6.26 kB
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; import { AfterViewInit, ElementRef, OnInit } from '@angular/core'; import { AbstractSelectComponent } from '../shared/components'; import { DsfrSelectionMode } from '../shared/models/selection-mode.type'; import { TreeFocusable } from '../shared/utils/tree/tree-focus-manager'; import { TreeSelectable } from '../shared/utils/tree/tree-select-manager'; import { DsfrNode, DsfrViewNode } from '../shared/utils/tree/tree.model'; import * as i0 from "@angular/core"; export declare class DsfrTreeselectComponent extends AbstractSelectComponent<DsfrViewNode> implements OnInit, AfterViewInit, TreeFocusable, TreeSelectable { /** Stratégie de sélection, uniquement en mode single. Par défaut seules les feuilles sont sélectionnables.*/ selectionStrategy: 'leaf' | 'all'; /** @internal */ viewport: CdkVirtualScrollViewport; /** @internal*/ listbox: ElementRef; /** @internal*/ isAllSelected: boolean; protected visibleNodes: DsfrViewNode[]; protected countFilteredOptions: number; protected countLeaves: number; protected countFilteredLeaves: number; private treeFocusManager; private treeSelectManager; private firstNodeElt; /** @internal Equivalent a options */ get nodes(): DsfrNode[]; /** @internal Synonyme de value, mais plus explicite. */ get options(): any[] | undefined; /** @internal */ get selectionMode(): DsfrSelectionMode; /** Personnalisation de la fonction de recherche pour filtrer les options. Fonction à 2 arguments : node (DsfrNode) et texte cherché (string) */ set searchFn(fn: (n: DsfrNode, text: string) => boolean); /** Liste des options (DsfrNode[]) disponibles. */ set options(val: any[] | undefined); /** Mode de sélection. Checkbox par défaut. */ set selectionMode(mode: DsfrSelectionMode); ngOnInit(): void; /** Positionne un tabindex de 0 sur le premier élément de la liste si aucun n'est sélectionné */ ngAfterViewInit(): void; /** * Mise a jour de la valeur de selectedOptions et value programmatiquement (ex. à l'init reactive form) * @param value * @internal */ writeValue(value: any): void; /** @internal */ notifySelectEvent(node: DsfrNode): void; /** Mise a jour de l'état des checkbox selon leur id, nécessaire avec le tri en virtualScroll (perte du binding) * @internal */ updateIndeterminate(node: DsfrNode): void; /** * Selection/Deselection du noeud * Mise a jour de la liste des noeuds sélectionnés * @internal */ doNodeDefaultAction(node: DsfrNode, event: Event): void; /** @internal */ findFocusElement(): HTMLElement; /** @internal */ findFirstSelectedNode(): HTMLElement; /** * Clic sur une option en mode tag supprimable. * Déselection option et mise a jour des parents. * @internal */ clearOption(event: { nativeEvent: Event; option: DsfrNode; }): void; /** * Trouver tous les noeuds <li> visibles * @internal */ findVisibleNodesElt(): HTMLElement[]; /** @internal */ selectAll(): void; /** @internal */ clearAllOptions(): void; /** @internal */ expandAll(): void; /** @internal */ collapseAll(): void; /** @internal */ handleListFocus(): void; /** * Au clic sur le label ou la checkbox * Sélection ou déselection des noeuds * @internal */ onOptionClick(event: Event, node: DsfrNode): void; /** * Filtrer les options selon la fonction de recherche * @internal */ onSearch(): void; /** * Au clic sur les boutons flèches plier/déplier les noeuds * @internal */ onNodeButton(node: DsfrNode): void; /** * Interaction clavier avec un des noeuds * @internal */ onNodeKeydown(node: DsfrNode, event: KeyboardEvent): void; /** @internal */ trackById(index: number, item: DsfrNode): string | undefined; /** @internal */ isCheckboxMode(): boolean; /** @internal */ isSelectable(): boolean; /** @internal */ isSelected(n: DsfrNode): boolean; /** Surcharge de compareWith par défaut pour utiliser les id */ protected _compareWith: (o1: any, o2: any) => boolean; /** Mise a jour selectedOptions puis value */ private updateValueSelected; /** Fonction de recherche par défaut */ private _searchFn; /** * Filtre visuellement les nœuds en appliquant `hidden` en fonction du résultat de la recherche. * - nœud parent visible : correspond à la recherche ou au moins un de ses enfants est visible. * - nœud enfant visible : correspond à la recherche ou un de ses ancêtres correspond à la recherche. * @param node Le nœud à filtrer de manière récursive. * @returns `true` si le nœud est visible, sinon `false`. */ private updateNodeVisibility; /** * Filtrer physiquement les noeuds dans le cadre du virtualScroll * /!\ Le virtualScroll ne permet pas d'utiliser la propriété hidden * Identique à updateNodeVisibility mais supprime au lieu d'utiliser la propriété hidden * @param node Le nœud à filtrer de manière récursive. * @returns le noeud si match, null sinon */ private filterNodes; /** * Parcours d'arbre pour mettre a jour la valeur selected des nodes à l'init, * selon les valeurs sélectionnées programmatiquement * @param nodes arbre complet * @param value tableau non-vide des noeuds sélectionnés */ private setSelectedNodes; /** * Calcule si toutes les options visibles et non-disabled sont sélectionnées */ private areAllOptionsSelected; static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTreeselectComponent, never>; static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTreeselectComponent, "dsfr-ext-treeselect, dsfrx-treeselect", never, { "selectionStrategy": { "alias": "selectionStrategy"; "required": false; }; "searchFn": { "alias": "searchFn"; "required": false; }; "options": { "alias": "options"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; }, {}, never, ["[label]"], true, never>; }