Tree — OutfitKit

GitHub

Tree

Árbol jerárquico con nodos expandibles. Compón .tree-node con .tree-row (caret + icono + .label + .meta) y .tree-children recursivo. La interactividad se enchufa con Datastar.

Importante · scope de signals. Datastar v1 trata todos los signals como globales. Si dos nodos declaran data-signals="{open: false}", comparten el mismo $open y se abren/cierran a la vez. Cada nodo debe usar un namespace único: data-signals="{n40: {open: false}}" y referenciar $n40.open. El macro tree_node ya lo hace; pásale node_id explícito para garantizar unicidad.

Plan contable PGC 2007

📁 4 · Acreedores y deudores 142 cuentas
📁 40 · Proveedores 38
📄 400 — Proveedores −12.483,90 €
📄 401 — Efectos comerciales a pagar −2.140,00 €
📄 410 — Acreedores por servicios −864,32 €
📁 43 · Clientes 62
📁 5 · Cuentas financieras 29
📁 6 · Compras y gastos 88
📁 7 · Ventas e ingresos 41

Variant dense · file tree

📁 outfitkit
📁 css
📄 tokens.css
📄 navigation.css
📄 forms.css
📄 README.md

API · tree

PropTipoDefaultDescripción
variant"default"|"dense""default"Densidad reducida (rows 24px, etc).
attrsdict{}Atributos HTML extra (p.ej. data-signals).
(slot)Nodos .ok-tree-node con .ok-tree-row y .ok-tree-children recursivo. Recomendado: usar tree_node y tree_leaf.

API · tree_node

Nodo expandible con toggle Datastar ya cableado: signal local open bajo namespace único $<node_id>.open (evita el leak global de signals en Datastar v1), aria-expanded y data-state reactivos, y caret con data-rotated para la animación de giro. Importar con {% from "tree.jinja" import tree_node, tree_leaf %}.

PropTipoDefaultDescripción
labelstr""Etiqueta visible (HTML permitido).
iconstr""Icono (emoji o SVG inline).
metastr""Texto meta a la derecha.
expandedboolFalseEstado inicial.
icon_kind"folder"|"file""folder"Aplica .ok-tree-icon--folder o --file.
node_idstr|NoneNoneRecomendado. Namespace único para el signal open (evita el leak global de Datastar v1). Si se omite, se genera uno aleatorio por render.
attrsdict{}Atributos HTML extra en el nodo.
(slot)Hijos del nodo (recursivos).

API · tree_leaf

PropTipoDefaultDescripción
labelstr""Etiqueta visible.
iconstr""Icono.
metastr""Texto meta a la derecha.
selectedboolFalseMarca aria-selected="true" estático.
valuestr|NoneNoneSi se proporciona, cablea selección reactiva contra el signal $sel del ancestro.
attrsdict{}Atributos extra en la fila.