ChWebsiteApp/CHDataManagement/Views/Posts/PagePickerView.swift
2024-11-20 13:53:44 +01:00

62 lines
1.7 KiB
Swift

import SwiftUI
struct PagePickerView: View {
@Binding var showPagePicker: Bool
@Binding var selectedPage: Page?
@EnvironmentObject
private var content: Content
@Environment(\.language)
private var language
@State
private var newSelection: Page?
init(showPagePicker: Binding<Bool>, selectedPage: Binding<Page?>) {
self._showPagePicker = showPagePicker
self._selectedPage = selectedPage
self.newSelection = selectedPage.wrappedValue
// TODO: Fix assignment not working
}
var body: some View {
VStack {
Text("Select a page to link to")
List(content.pages, selection: $newSelection) { page in
let loc = page.localized(in: language)
Text("\(loc.title) (\(page.id))")
.tag(page)
}
.frame(minHeight: 300)
HStack {
Button("Use selection") {
DispatchQueue.main.async {
self.selectedPage = self.newSelection
}
showPagePicker = false
}
Button("Remove page", role: .destructive) {
DispatchQueue.main.async {
self.selectedPage = nil
}
showPagePicker = false
}
Button("Cancel", role: .cancel) {
showPagePicker = false
}
}
}
.navigationTitle("Pick a page")
.padding()
}
}
#Preview {
PagePickerView(showPagePicker: .constant(true),
selectedPage: .constant(nil))
.environmentObject(Content.mock)
}