fix(app): dim non-deep filetree guide lines
This commit is contained in:
@@ -33,6 +33,19 @@ export default function FileTree(props: {
|
|||||||
const draggable = () => props.draggable ?? true
|
const draggable = () => props.draggable ?? true
|
||||||
const tooltip = () => props.tooltip ?? 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 filter = createMemo(() => {
|
||||||
const allowed = props.allowed
|
const allowed = props.allowed
|
||||||
if (!allowed) return
|
if (!allowed) return
|
||||||
@@ -152,6 +165,7 @@ export default function FileTree(props: {
|
|||||||
<For each={nodes()}>
|
<For each={nodes()}>
|
||||||
{(node) => {
|
{(node) => {
|
||||||
const expanded = () => file.tree.state(node.path)?.expanded ?? false
|
const expanded = () => file.tree.state(node.path)?.expanded ?? false
|
||||||
|
const deep = createMemo(() => (node.type === "directory" ? maxOpen(node.path, level) : -1))
|
||||||
const Wrapper = (p: ParentProps) => {
|
const Wrapper = (p: ParentProps) => {
|
||||||
if (!tooltip()) return p.children
|
if (!tooltip()) return p.children
|
||||||
return (
|
return (
|
||||||
@@ -181,7 +195,15 @@ export default function FileTree(props: {
|
|||||||
</Node>
|
</Node>
|
||||||
</Wrapper>
|
</Wrapper>
|
||||||
</Collapsible.Trigger>
|
</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
|
<FileTree
|
||||||
path={node.path}
|
path={node.path}
|
||||||
level={level + 1}
|
level={level + 1}
|
||||||
|
|||||||
Reference in New Issue
Block a user