2020-07-29 23:50:30 +00:00
|
|
|
// Copyright © 2020 Metabolist. All rights reserved.
|
|
|
|
|
|
|
|
import SwiftUI
|
|
|
|
|
|
|
|
struct SidebarNavigation: View {
|
2020-08-02 22:23:01 +00:00
|
|
|
let identity: Identity
|
2020-07-29 23:50:30 +00:00
|
|
|
@EnvironmentObject var sceneViewModel: SceneViewModel
|
|
|
|
|
|
|
|
var sidebar: some View {
|
|
|
|
List(selection: $sceneViewModel.selectedTopLevelNavigation) {
|
|
|
|
ForEach(SceneViewModel.TopLevelNavigation.allCases) { topLevelNavigation in
|
|
|
|
NavigationLink(destination: view(topLevelNavigation: topLevelNavigation)) {
|
|
|
|
Label(topLevelNavigation.title, systemImage: topLevelNavigation.systemImageName)
|
|
|
|
}
|
|
|
|
.accessibility(label: Text(topLevelNavigation.title))
|
|
|
|
.tag(topLevelNavigation)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.listStyle(SidebarListStyle())
|
|
|
|
}
|
|
|
|
|
|
|
|
var body: some View {
|
|
|
|
NavigationView {
|
|
|
|
sidebar
|
|
|
|
.frame(minWidth: 100, idealWidth: 150, maxWidth: 200, maxHeight: .infinity)
|
|
|
|
Text("Content")
|
|
|
|
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private extension SidebarNavigation {
|
|
|
|
func view(topLevelNavigation: SceneViewModel.TopLevelNavigation) -> some View {
|
|
|
|
Group {
|
|
|
|
switch topLevelNavigation {
|
|
|
|
case .timelines:
|
|
|
|
TimelineView()
|
|
|
|
default: Text(topLevelNavigation.title)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-02 22:23:01 +00:00
|
|
|
#if DEBUG
|
2020-07-29 23:50:30 +00:00
|
|
|
struct SidebarNavigation_Previews: PreviewProvider {
|
|
|
|
static var previews: some View {
|
2020-08-02 22:23:01 +00:00
|
|
|
SidebarNavigation(identity: .development)
|
|
|
|
.environmentObject(SceneViewModel.development)
|
2020-07-29 23:50:30 +00:00
|
|
|
}
|
|
|
|
}
|
2020-08-02 22:23:01 +00:00
|
|
|
#endif
|