metatext/macOS/SidebarNavigation.swift
2020-07-31 00:13:54 -07:00

48 lines
1.4 KiB
Swift

// Copyright © 2020 Metabolist. All rights reserved.
import SwiftUI
struct SidebarNavigation: View {
@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)
}
}
}
}
struct SidebarNavigation_Previews: PreviewProvider {
static var previews: some View {
SidebarNavigation()
}
}