PUI-44 feat(tree-index)!: build TreeIndex to any depth and drop the tree from Index and DataTable #114
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/PUI-44-build-treeindex-to-any-depth-and-remove-the-tree-f"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
TreeIndex is its own component (ADR 0012, Goal Tree Index, milestone 31, page 45).
TreeTableat@pienter/ui/components/TreeTable.vue: the data-driven tree overTable, the wayDataTableis for flat rows. Controlledrowsandv-model:placing; draws the lanes, level cue, move buttons and zones; emits themoveintent.TreeIndexat@pienter/ui/components/TreeIndex.vue: composesTreeTable, loads the whole tree in manual order, shows loading, error and retry, owns the placing state and the optimisticmovewith rollback and announcement, renders any depth with an optionalmaxDepth, and names depth and direct parent in a hidden "Level n, under parent" row-header prefix. Plain<table>, notreegrid, no collapse.IndexandDataTableloseloadTree,move,parentKey,canMove,canParent,rowLabelandmoveLabels;useIndexQuerylosesloadTreeandtree. They are the paged list and the flat table again.utils/treewalks any depth (treeItems,applyMove,moveTo);MoveLabels.childOfbecomeslevel(n, parent).TreeIndexstories (Default with play, Max Depth, Read Only, Load Failed) andTreeTablestories (Default with play, Max Depth, Selectable, Read Only, Loading); the DataTable Tree story is gone. AUDIT.md for tree-table, tree-index, index and table; CONVENTIONS.md; ADR 0012 consequence line clarified.TreeIndexwith three seeded third-level pages; search and filters return with PUI-42.examples/CMS_PLAYGROUND.mdupdated.Breaking (
feat!), migration under## Unreleasedinpackages/ui/CHANGELOG.md. The move request body is unchanged.Also
fix(table):.pui-table-wrapisposition: relative, so the table's visually hidden content (caption, typed header labels, the live region in theafterslot) no longer stretches the page to the table's height. That made a long tree scroll the window behind the app layout's own scrolling main and left a gap under the sticky footer.Checks: typecheck, lint, format:check, bun test (164), build:vue, build:storybook. Browser: three-level tree at rest, pointer and keyboard moves, Escape with focus return, rejected move under Contact rolled back and announced, TreeIndex Default and Max Depth and TreeTable Default story plays pass.
Follow-ups in the Goal: PUI-42 (dimming search and filters), PUI-43 (Tree contract section and schema). Out of scope: PUI-76, the Button label contrast axe flags in these stories.
Refs: PUI-44