@edugouvfr/ngx-dsfr-ext
Version:
NgxDsfrExt est une extension au package @edugouvfr/ngx-dsfr (portage Angular des éléments DSFR)
73 lines (72 loc) • 2.96 kB
TypeScript
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { DsfrNode } from './tree.model';
/**
* Interface utilisée par TreeFocusManager
*/
export interface TreeFocusable {
/** Retourne la structure arborescente du composant. */
get nodes(): DsfrNode[];
/** Ouvre tous les nœuds de l'arborescence. */
expandAll(): void;
/** Ferme tous les nœuds de l'arborescence. */
collapseAll(): void;
/** Effectue l'action par défaut (sélection / déselection) sur le nœud courant. */
doNodeDefaultAction(node: DsfrNode, event: Event): void;
/** Recherche la liste des nœuds visibles, ce sont les éléments qui posséderont le tabindex */
findVisibleNodesElt(): HTMLElement[];
/** Retourne l'élément avec focus ou undefined. */
findFocusElement(): HTMLElement | undefined;
}
/**
* TreeFocusManager a pour objectif de :
* - Gérer le focus dans un arbre lié aux événements clavier de navigation,
* - Gérer l'ouverture la fermeture des nœuds
*/
export declare class TreeFocusManager {
currentElt: HTMLElement | undefined;
/** Composant géré par le manager. */
private treeFocusable;
private firstNodeElt;
constructor(treeFocusable: TreeFocusable);
/**
* Initialise le tabindex du 1er élément sur lequel placer un focus
*/
initTabindex(): void;
/** Ouvre tous les nœuds de l'arborescence. */
expandAll(nodes: DsfrNode[]): void;
/** Ferme tous les nœuds de l'arborescence. */
collapseAll(nodes: DsfrNode[]): void;
/**
* Répond à un événement clavier.
* @param currentNode nœud courant (qui possède le focus)
* @event event événement clavier
*/
doKeyEvent(currentNode: DsfrNode, event: KeyboardEvent, isParentSelectable: boolean): void;
/** Bascule l'état ouvert / fermé du nœud. */
doToggleExpand(node: DsfrNode): void;
/**
* Gestion du scroll dans la liste lors de la navigation clavier avec virtualScroll activé
* @param viewport composant de virtualScroll CDK
*/
scrollForVirtualScroll(viewport: CdkVirtualScrollViewport): void;
/** Place le focus sur le 1er élément visible. */
private doFocusFirst;
/** Place le focus sur le dernier élément visible. */
private doFocusLast;
/** Place le focus sur l'élément suivant l'élément courant. */
private doFocusNext;
/** Place le focus sur l'élément précédant le nœud courant. */
private doFocusPrevious;
/** Ferme le nœud. */
private doCollapseNode;
/** Ouvre le nœud. */
private doExpandNode;
/**
* Ouvre / ferme récursivement tous les nœuds nodes et leurs descendants
* @param nodes Liste de nœuds à ouvrir
* @param expand true : ouverture des nœuds, false : fermeture
*/
private setNodesExpanded;
/** Set focus on element and add aria-activedescendant attribute to parent */
private setAriaActiveDescendant;
}