Forms
useTreeExpansion
Composable interno per gestire espansione/collasso dei nodi in TreeSelect.
Composable interno — utilizzato dal componente
TreeSelectdella 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
| Parametro | Tipo | Descrizione |
|---|---|---|
params.expandedKeys | () => Record<string | number, boolean> | Getter reattivo delle chiavi espanse dalle props |
Valore di Ritorno
| Proprietà | Tipo | Descrizione |
|---|---|---|
internalExpandedKeys | Ref<Record<...>> | Stato interno delle chiavi espanse (sincronizzato con props) |
isNodeExpanded | (node: TreeNode) => boolean | Verifica 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
watchsuparams.expandedKeys. toggleExpande no-op per nodi senza figli o senzakey.expandAllraccoglie ricorsivamente tutte le chiavi dei nodi conchildren.length > 0.