From c13b7527b6ae9b60757d21a0ac946a5120fa4e42 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Tue, 17 Mar 2026 14:36:46 +0000 Subject: [PATCH] appview/pages: differentiate open/close icons in filetree the giant tailwind safelist is used because nested groups cannot be styled using tailwind, and therefore we need named groups. we pre-populate the source html with up to 12-deep named groups and their variants so that tailwind generates the right css. Signed-off-by: oppiliappan --- appview/filetree/filetree.go | 11 +++++++---- .../pages/templates/repo/fragments/fileTree.html | 15 ++++++++++++--- 2 files changed, 19 insertions(+), 7 deletions(-) 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 }} -- 2.51.2