fix(app): dim non-deep filetree guide lines

This commit is contained in:
David Hill
2026-01-26 18:57:26 +00:00
parent 2be4598011
commit 010ed55590

View File

@@ -33,6 +33,19 @@ export default function FileTree(props: {
const draggable = () => props.draggable ?? true
const tooltip = () => props.tooltip ?? true
const maxOpen = (dir: string, lvl: number): number => {
const expanded = file.tree.state(dir)?.expanded ?? false
if (!expanded) return -1
const nodes = file.tree.children(dir)
const child = nodes.reduce((max, node) => {
if (node.type !== "directory") return max
return Math.max(max, maxOpen(node.path, lvl + 1))
}, -1)
return Math.max(lvl, child)
}
const filter = createMemo(() => {
const allowed = props.allowed
if (!allowed) return
@@ -152,6 +165,7 @@ export default function FileTree(props: {
<For each={nodes()}>
{(node) => {
const expanded = () => file.tree.state(node.path)?.expanded ?? false
const deep = createMemo(() => (node.type === "directory" ? maxOpen(node.path, level) : -1))
const Wrapper = (p: ParentProps) => {
if (!tooltip()) return p.children
return (
@@ -181,7 +195,15 @@ export default function FileTree(props: {
</Node>
</Wrapper>
</Collapsible.Trigger>
<Collapsible.Content class="mt-0.5">
<Collapsible.Content class="relative pt-0.5">
<div
classList={{
"absolute top-0 bottom-0 w-px pointer-events-none bg-border-weak-base": true,
"opacity-100": expanded() && deep() === level,
"opacity-50": !(expanded() && deep() === level),
}}
style={`left: ${Math.max(0, 8 + level * 12 - 4) + 8}px`}
/>
<FileTree
path={node.path}
level={level + 1}