Skip to content

Commit 71341b5

Browse files
committed
Remove Anyview and extract menuItem to a component
1 parent e57232e commit 71341b5

File tree

3 files changed

+49
-14
lines changed

3 files changed

+49
-14
lines changed

CodeEdit.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
D72E1A8327E3B0D400EB11B9 /* WelcomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72E1A8227E3B0D400EB11B9 /* WelcomeView.swift */; };
5454
D72E1A8727E4242900EB11B9 /* RecentProjectsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72E1A8627E4242900EB11B9 /* RecentProjectsView.swift */; };
5555
D72E1A8927E44D7C00EB11B9 /* WelcomeWindowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72E1A8827E44D7C00EB11B9 /* WelcomeWindowView.swift */; };
56+
D76D11CA27EF191C009FE61F /* BreadcrumbsMenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D76D11C927EF191C009FE61F /* BreadcrumbsMenuItem.swift */; };
5657
D7ACE43C27ECCA2F0059FAF2 /* BreadcrumbsMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7ACE43B27ECCA2F0059FAF2 /* BreadcrumbsMenu.swift */; };
5758
D7E201AE27E8B3C000CB86D0 /* String+Ranges.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7E201AD27E8B3C000CB86D0 /* String+Ranges.swift */; };
5859
D7E201B027E8C07300CB86D0 /* FindNavigatorSearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7E201AF27E8C07300CB86D0 /* FindNavigatorSearchBar.swift */; };
@@ -133,6 +134,7 @@
133134
D72E1A8227E3B0D400EB11B9 /* WelcomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeView.swift; sourceTree = "<group>"; };
134135
D72E1A8627E4242900EB11B9 /* RecentProjectsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecentProjectsView.swift; sourceTree = "<group>"; };
135136
D72E1A8827E44D7C00EB11B9 /* WelcomeWindowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeWindowView.swift; sourceTree = "<group>"; };
137+
D76D11C927EF191C009FE61F /* BreadcrumbsMenuItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BreadcrumbsMenuItem.swift; sourceTree = "<group>"; };
136138
D7ACE43B27ECCA2F0059FAF2 /* BreadcrumbsMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BreadcrumbsMenu.swift; sourceTree = "<group>"; };
137139
D7E201AD27E8B3C000CB86D0 /* String+Ranges.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Ranges.swift"; sourceTree = "<group>"; };
138140
D7E201AF27E8C07300CB86D0 /* FindNavigatorSearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FindNavigatorSearchBar.swift; sourceTree = "<group>"; };
@@ -233,6 +235,7 @@
233235
2875A46C27E3BE5B007805F8 /* BreadcrumbsView.swift */,
234236
286620A427E4AB6900E18C2B /* BreadcrumbsComponent.swift */,
235237
D7ACE43B27ECCA2F0059FAF2 /* BreadcrumbsMenu.swift */,
238+
D76D11C927EF191C009FE61F /* BreadcrumbsMenuItem.swift */,
236239
);
237240
path = Breadcrumbs;
238241
sourceTree = "<group>";
@@ -579,6 +582,7 @@
579582
B6EE989227E887C600CDD8AB /* InspectorSidebarToolbar.swift in Sources */,
580583
B673FDAD27E8296A00795864 /* PressActionsModifier.swift in Sources */,
581584
043C321427E31FF6006AE443 /* CodeEditDocumentController.swift in Sources */,
585+
D76D11CA27EF191C009FE61F /* BreadcrumbsMenuItem.swift in Sources */,
582586
04660F6427E3ACAF00477777 /* Appearances.swift in Sources */,
583587
2859B94127EB5BC00069BE88 /* TerminalSettingsView.swift in Sources */,
584588
04540D5E27DD08C300E91B77 /* WorkspaceView.swift in Sources */,

CodeEdit/Breadcrumbs/BreadcrumbsMenu.swift

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,24 @@ struct BreadcrumbsMenu: View {
2929
self.parentFileItem = parentFileItem
3030
}
3131

32+
@ViewBuilder
3233
private func menuItem(_ item: WorkspaceClient.FileItem) -> some View {
3334
if let children = item.children?.sortItems(foldersOnTop: true), !children.isEmpty {
3435
// Folder
35-
return AnyView(
36-
Menu {
37-
ForEach(children) { item in
38-
menuItem(item)
39-
}
40-
} label: {
41-
BreadcrumbsComponent(item.fileName, systemImage: "folder.fill")
42-
}
43-
.menuIndicator(.hidden)
44-
.menuStyle(.borderlessButton)
45-
)
36+
ForEach(children, id: \.self) { child in
37+
BreadcrumbsMenu(workspace,
38+
title: child.fileName,
39+
systemImage: child.fileIcon,
40+
color: item.iconColor,
41+
parentFileItem: child.parent)
42+
}
4643
} else {
4744
// File
48-
return AnyView(Button {
45+
Button {
4946
workspace.openFile(item: item)
5047
} label: {
5148
BreadcrumbsComponent(item.fileName, systemImage: item.fileIcon, color: item.iconColor)
52-
})
49+
}
5350
}
5451
}
5552

@@ -60,7 +57,7 @@ struct BreadcrumbsMenu: View {
6057
Menu {
6158
if let siblings = parentFileItem?.children?.sortItems(foldersOnTop: true) {
6259
ForEach(siblings, id: \.self) { item in
63-
menuItem(item)
60+
BreadcrumbsMenuItem(workspace: workspace, fileItem: item)
6461
}
6562
}
6663
} label: {
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//
2+
// BreadcrumbsMenuItem.swift
3+
// CodeEdit
4+
//
5+
// Created by Ziyuan Zhao on 2022/3/26.
6+
//
7+
8+
import SwiftUI
9+
import WorkspaceClient
10+
11+
struct BreadcrumbsMenuItem: View {
12+
@ObservedObject var workspace: WorkspaceDocument
13+
var fileItem: WorkspaceClient.FileItem
14+
15+
var body: some View {
16+
if let children = fileItem.children?.sortItems(foldersOnTop: true), !children.isEmpty {
17+
// Folder
18+
Menu {
19+
ForEach(children, id: \.self) { child in
20+
BreadcrumbsMenuItem(workspace: workspace, fileItem: child)
21+
}
22+
} label: {
23+
BreadcrumbsComponent(fileItem.fileName, systemImage: fileItem.fileIcon, color: fileItem.iconColor)
24+
}
25+
} else {
26+
// File
27+
Button {
28+
workspace.openFile(item: fileItem)
29+
} label: {
30+
BreadcrumbsComponent(fileItem.fileName, systemImage: fileItem.fileIcon, color: fileItem.iconColor)
31+
}
32+
}
33+
}
34+
}

0 commit comments

Comments
 (0)