76 lines
2.3 KiB
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 }
|
|
}
|