diff --git a/appview/filetree/filetree.go b/appview/filetree/filetree.go index 01fb56b3..03961a74 100644 --- a/appview/filetree/filetree.go +++ b/appview/filetree/filetree.go @@ -10,21 +10,23 @@ type FileTreeNode struct { Name string Path string IsDirectory bool + Level int Children map[string]*FileTreeNode } -// NewNode creates a new node -func newNode(name, path string, isDir bool) *FileTreeNode { +// newNode creates a new node +func newNode(name, path string, isDir bool, level int) *FileTreeNode { return &FileTreeNode{ Name: name, Path: path, IsDirectory: isDir, + Level: level, Children: make(map[string]*FileTreeNode), } } func FileTree(files []string) *FileTreeNode { - rootNode := newNode("", "", true) + rootNode := newNode("", "", true, 0) sort.Strings(files) @@ -49,9 +51,10 @@ func FileTree(files []string) *FileTreeNode { } isDir := i < len(parts)-1 + level := i + 1 if _, exists := currentNode.Children[part]; !exists { - currentNode.Children[part] = newNode(part, currentPath, isDir) + currentNode.Children[part] = newNode(part, currentPath, isDir, level) } currentNode = currentNode.Children[part] diff --git a/appview/pages/templates/repo/fragments/fileTree.html b/appview/pages/templates/repo/fragments/fileTree.html index b6c6e3a7..186cffdd 100644 --- a/appview/pages/templates/repo/fragments/fileTree.html +++ b/appview/pages/templates/repo/fragments/fileTree.html @@ -1,9 +1,18 @@ {{ define "repo/fragments/fileTree" }} + {{/* tailwind safelist: + group/level-1 group/level-2 group/level-3 group/level-4 group/level-5 group/level-6 + group/level-7 group/level-8 group/level-9 group/level-10 group/level-11 group/level-12 + group-open/level-1:hidden group-open/level-2:hidden group-open/level-3:hidden group-open/level-4:hidden group-open/level-5:hidden group-open/level-6:hidden + group-open/level-7:hidden group-open/level-8:hidden group-open/level-9:hidden group-open/level-10:hidden group-open/level-11:hidden group-open/level-12:hidden + group-open/level-1:block group-open/level-2:block group-open/level-3:block group-open/level-4:block group-open/level-5:block group-open/level-6:block + group-open/level-7:block group-open/level-8:block group-open/level-9:block group-open/level-10:block group-open/level-11:block group-open/level-12:block + */}} {{ if and .Name .IsDirectory }} -
+
- - {{ i "folder" "flex-shrink-0 size-4 fill-current" }} + + {{ i "folder" (printf "flex-shrink-0 size-4 group-open/level-%d:hidden" .Level)}} + {{ i "folder-open" (printf "flex-shrink-0 size-4 hidden group-open/level-%d:block" .Level)}} {{ .Name }}