-
v0.35.0 Stable
released this
2026-09-22 14:34:59 +00:00 | 8 commits to main since this releaseBreaking
- The tree leaves
IndexandDataTablefor a component of its own,
TreeIndexat@[secure]/ui/components/TreeIndex.vue(ADR 0012).Index
losesloadTree,move,parentKey,canMove,canParent,rowLabel
andmoveLabels,useIndexQuerylosesloadTreeandtree, and
DataTablelosesparentKey,canMove,canParent,rowLabel,
moveLabels,@moveandannounce(); both are the paged list and the flat
table again.MoveLabels.childOfis replaced bylevel(n, parent), and
treeItemsgives each item adepthandlanesinstead of alaneand
four booleans. To migrate an index that used them, replace<Index>with
<TreeIndex>: pass the tree loader asload(the flatload,
queryOptions,stateandsyncQuerygo, since a Tree Index has no
query), keepcolumnswith thelevelandmovecolumns,parentKey,
move,canParent,rowLabel,moveLabels, selection and row click, and
dropsortablefrom the columns. Thesummaryslot receivestotalonly.
The move request body is unchanged.
Added
TreeIndexcomposes a newTreeTable
(@[secure]/ui/components/TreeTable.vue) the wayIndexcomposes
DataTable: the data-driven tree overTablefor controlled data, taking
rows, the same columns and predicates,v-model:placingand
v-model:selected, and emittingmovewith the intent; it never reorders
rows.TreeIndexshows the tree to any depth: every record is drawn, a row can
be moved into or out of any parent, and the moving row's whole subtree
travels with it. The optionalmaxDepthremoves the destinations a move
would exceed, so a backend that allows two levels never sees a third;
without it any depth is offered. Each row's header cell carries a visually
hidden "Level n, under ." prefix, so a screen reader hears depth and
direct parent while the table stays a plain<table>. Loading, error and
retry, the placing state, the optimistic move with rollback and
announcement are asIndexhad them. Search and filters are a follow-up.
Fixed
- A table no longer stretches the page to its own height. Its visually hidden
content (the caption, a typed column's header text,TreeTable's live
region in theafterslot) is absolutely positioned and was contained by
the page rather than by the table's scroll port, so a long tree made the
window scroll behind the app layout's own scrolling main and left a gap
under the sticky footer. The wrap now contains it.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The tree leaves