Forms

useTreeExpansion

Composable interno per gestire espansione/collasso dei nodi in TreeSelect.

Composable interno — utilizzato dal componente TreeSelect della libreria.

Firma TypeScript

export function useTreeExpansion(params: UseTreeExpansionParams): UseTreeExpansionResult

export interface UseTreeExpansionParams {
  expandedKeys: () => Record<string | number, boolean>;
}

export interface UseTreeExpansionResult {
  internalExpandedKeys: Ref<Record<string | number, boolean>>;
  isNodeExpanded: (node: TreeNode) => boolean;
  toggleExpand: (node: TreeNode) => { newKeys: Record<string | number, boolean>; wasExpanded: boolean };
  expandAll: (nodes: TreeNode[]) => Record<string | number, boolean>;
  collapseAll: () => Record<string | number, boolean>;
}

Parametri

ParametroTipoDescrizione
params.expandedKeys() => Record<string | number, boolean>Getter reattivo delle chiavi espanse dalle props

Valore di Ritorno

ProprietàTipoDescrizione
internalExpandedKeysRef<Record<...>>Stato interno delle chiavi espanse (sincronizzato con props)
isNodeExpanded(node: TreeNode) => booleanVerifica se un nodo e espanso
toggleExpand(node: TreeNode) => { newKeys, wasExpanded }Toggle espansione; ritorna le nuove chiavi e lo stato precedente
expandAll(nodes: TreeNode[]) => Record<...>Espande tutti i nodi con figli ricorsivamente; ritorna le nuove chiavi
collapseAll() => Record<...>Collassa tutti i nodi; ritorna oggetto vuoto

Esempio

const { isNodeExpanded, toggleExpand, expandAll, collapseAll } = useTreeExpansion({
  expandedKeys: () => props.expandedKeys
})

// Toggle con emit delle nuove chiavi
const onToggle = (node: TreeNode) => {
  const { newKeys, wasExpanded } = toggleExpand(node)
  emit('update:expandedKeys', newKeys)
  emit(wasExpanded ? 'nodeCollapse' : 'nodeExpand', { node })
}

Note

  • I metodi ritornano il nuovo stato invece di emettere eventi direttamente — la responsabilita degli emit resta al componente chiamante.
  • La sincronizzazione con le props esterne avviene tramite watch su params.expandedKeys.
  • toggleExpand e no-op per nodi senza figli o senza key.
  • expandAll raccoglie ricorsivamente tutte le chiavi dei nodi con children.length > 0.