Colors, pages, post links
This commit is contained in:
61
CHDataManagement/Views/Posts/PagePickerView.swift
Normal file
61
CHDataManagement/Views/Posts/PagePickerView.swift
Normal file
@ -0,0 +1,61 @@
|
||||
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)
|
||||
}
|
Reference in New Issue
Block a user