OnCue/OnCue/View/NewProjectForm.swift

76 lines
2.3 KiB
Swift

//
// NewProjectForm.swift
// OnCue
//
// Created by Pradyun Setti on 22/06/2024.
//
import SwiftUI
struct NewProjectForm: View {
@State private var newProjectName = ""
@State private var chosenColor = Color.clear
@Environment(\.dismiss) var dismiss
let completionHandler: (String, String) -> Void
let availColours: [String] = {
var c = Constants.colors.map { $0.toHex()! }
c.insert("Theme", at: 0)
return c
}()
var body: some View {
NavigationView {
Form {
TextField("Project Name", text: $newProjectName)
Section {
HStack {
ForEach(Constants.colors, id: \.self) { color in
if chosenColor == color {
ZStack {
Circle()
.foregroundStyle(color)
Image(systemName: "checkmark")
}
.onTapGesture { chooseColour(color) }
} else {
Circle()
.foregroundStyle(color)
.onTapGesture { chooseColour(color) }
}
}
}
} header: { Text("Project Colour") } footer: { Text("Leave unselected to use theme colour in settings" )}
}
.navigationTitle("Add New Project")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
ToolbarItem(placement: .topBarLeading) {
Button("Cancel", role: .cancel) { dismiss() }
.foregroundStyle(.red)
}
ToolbarItem(placement: .topBarTrailing) {
Button("Done") {
completionHandler(newProjectName, chosenColor.toHex() ?? "FF0000")
dismiss()
}
}
}
}
}
private func chooseColour(_ color: Color) {
if color == chosenColor {
chosenColor = .clear
} else {
chosenColor = color
}
}
}
#Preview {
NewProjectForm { name, color in }
}