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