twigs-ios/Twigs/SidebarBudgetView.swift

80 lines
2.8 KiB
Swift
Raw Normal View History

2021-12-08 03:21:46 +00:00
//
// SidebarBudgetView.swift
// Twigs
//
// Created by William Brawner on 12/7/21.
// Copyright © 2021 William Brawner. All rights reserved.
//
import SwiftUI
2022-01-03 17:56:43 +00:00
import TwigsCore
2021-12-08 03:21:46 +00:00
struct SidebarBudgetView: View {
@EnvironmentObject var dataStore: DataStore
2021-12-08 03:21:46 +00:00
@State var isSelectingBudget = true
@State var hasSelectedBudget = false
@State var tabSelection: Int? = 0
@ViewBuilder
var mainView: some View {
if case let .success(budget) = self.dataStore.budget {
2021-12-08 03:21:46 +00:00
NavigationView {
List {
NavigationLink(
tag: 0,
selection: $tabSelection,
destination: { BudgetDetailsView(budget: budget).navigationBarTitle("overview")
},
label: { Label("overview", systemImage: "chart.line.uptrend.xyaxis") }
2021-12-08 03:21:46 +00:00
)
.keyboardShortcut("1")
2021-12-08 03:21:46 +00:00
NavigationLink(
tag: 1,
selection: $tabSelection,
destination: { TransactionListView<EmptyView>().navigationBarTitle("transactions") },
label: { Label("transactions", systemImage: "dollarsign.circle") })
.keyboardShortcut("2")
2021-12-08 03:21:46 +00:00
NavigationLink(
tag: 2,
selection: $tabSelection,
destination: { CategoryListView(budget).navigationBarTitle("categories") },
label: { Label("categories", systemImage: "chart.pie") })
.keyboardShortcut("3")
2021-12-08 03:21:46 +00:00
NavigationLink(
tag: 3,
selection: $tabSelection,
destination: { RecurringTransactionsListView().navigationBarTitle("recurring_transactions") },
label: { Label("recurring_transactions", systemImage: "arrow.triangle.2.circlepath") })
.keyboardShortcut("4")
2023-01-04 04:29:18 +00:00
Divider()
2021-12-08 03:21:46 +00:00
BudgetListsView()
}
.navigationTitle(budget.name)
if self.tabSelection ?? 0 > 0 {
EmptyView()
2023-01-04 04:29:18 +00:00
EmptyView()
}
}
2021-12-08 03:21:46 +00:00
} else {
ActivityIndicator(isAnimating: .constant(true), style: .large)
}
}
@ViewBuilder
var body: some View {
mainView
.sheet(isPresented: $dataStore.showLogin,
content: {
LoginView()
.environmentObject(dataStore)
})
2021-12-08 03:21:46 +00:00
.interactiveDismissDisabled(true)
}
}
//struct SidebarBudgetView_Previews: PreviewProvider {
// static var previews: some View {
// SidebarBudgetView()
// }
//}