fix textfield stuff in player edition

add better way to copy paste
paca_championship
Raz 1 year ago
parent 176df45214
commit 8cf59a31c8
  1. 28
      PadelClub/Views/Components/CopyPasteButtonView.swift
  2. 50
      PadelClub/Views/Player/PlayerDetailView.swift

@ -11,13 +11,29 @@ struct CopyPasteButtonView: View {
let pasteValue: String? let pasteValue: String?
@State private var copied: Bool = false @State private var copied: Bool = false
@ViewBuilder
var body: some View { var body: some View {
Button { if let pasteValue {
let pasteboard = UIPasteboard.general Button {
pasteboard.string = pasteValue let pasteboard = UIPasteboard.general
copied = true pasteboard.string = pasteValue
} label: { copied = true
Label(copied ? "copié" : "copier", systemImage: "doc.on.doc").symbolVariant(copied ? .fill : .none) } label: {
Label(copied ? "copié" : "copier", systemImage: "doc.on.doc").symbolVariant(copied ? .fill : .none)
}
}
}
}
struct PasteButtonView: View {
@Binding var text: String
@ViewBuilder
var body: some View {
PasteButton(payloadType: String.self) { strings in
if let pasteboard = strings.first {
text = pasteboard
}
} }
} }
} }

@ -113,7 +113,9 @@ struct PlayerDetailView: View {
Section { Section {
LabeledContent { LabeledContent {
TextField("Licence", text: $licenceId) TextField("Licence", text: $licenceId)
.focused($focusedField, equals: ._licenceId)
.keyboardType(.alphabet) .keyboardType(.alphabet)
.textContentType(nil)
.multilineTextAlignment(.trailing) .multilineTextAlignment(.trailing)
.autocorrectionDisabled() .autocorrectionDisabled()
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)
@ -122,16 +124,23 @@ struct PlayerDetailView: View {
_save() _save()
} }
} label: { } label: {
Text("Licence") Menu {
CopyPasteButtonView(pasteValue: player.licenceId)
PasteButtonView(text: $licenceId)
.onChange(of: licenceId) {
player.licenceId = licenceId
_save()
}
} label: {
Text("Licence")
}
} }
} footer: {
CopyPasteButtonView(pasteValue: player.licenceId?.strippedLicense)
}
Section {
LabeledContent { LabeledContent {
TextField("Téléphone", text: $phoneNumber) TextField("Téléphone", text: $phoneNumber)
.focused($focusedField, equals: ._phoneNumber)
.keyboardType(.namePhonePad) .keyboardType(.namePhonePad)
.textContentType(nil)
.multilineTextAlignment(.trailing) .multilineTextAlignment(.trailing)
.autocorrectionDisabled() .autocorrectionDisabled()
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)
@ -140,16 +149,23 @@ struct PlayerDetailView: View {
_save() _save()
} }
} label: { } label: {
Text("Téléphone") Menu {
CopyPasteButtonView(pasteValue: player.phoneNumber)
PasteButtonView(text: $phoneNumber)
.onChange(of: phoneNumber) {
player.phoneNumber = phoneNumber
_save()
}
} label: {
Text("Téléphone")
}
} }
} footer: {
CopyPasteButtonView(pasteValue: player.phoneNumber)
}
Section {
LabeledContent { LabeledContent {
TextField("Email", text: $email) TextField("Email", text: $email)
.focused($focusedField, equals: ._email)
.keyboardType(.emailAddress) .keyboardType(.emailAddress)
.textContentType(nil)
.multilineTextAlignment(.trailing) .multilineTextAlignment(.trailing)
.autocorrectionDisabled() .autocorrectionDisabled()
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)
@ -158,12 +174,18 @@ struct PlayerDetailView: View {
_save() _save()
} }
} label: { } label: {
Text("Email") Menu {
CopyPasteButtonView(pasteValue: player.email)
PasteButtonView(text: $email)
.onChange(of: email) {
player.email = email
_save()
}
} label: {
Text("Email")
}
} }
} footer: {
CopyPasteButtonView(pasteValue: player.email)
} }
} }
.toolbar { .toolbar {
ToolbarItem(placement: .topBarTrailing) { ToolbarItem(placement: .topBarTrailing) {

Loading…
Cancel
Save