From 8cf59a31c8da1620627c86e9cd4acbcd62314711 Mon Sep 17 00:00:00 2001 From: Raz Date: Wed, 9 Oct 2024 16:00:59 +0200 Subject: [PATCH] fix textfield stuff in player edition add better way to copy paste --- .../Components/CopyPasteButtonView.swift | 28 +++++++--- PadelClub/Views/Player/PlayerDetailView.swift | 54 +++++++++++++------ 2 files changed, 60 insertions(+), 22 deletions(-) diff --git a/PadelClub/Views/Components/CopyPasteButtonView.swift b/PadelClub/Views/Components/CopyPasteButtonView.swift index aac21d4..27c6ad2 100644 --- a/PadelClub/Views/Components/CopyPasteButtonView.swift +++ b/PadelClub/Views/Components/CopyPasteButtonView.swift @@ -11,13 +11,29 @@ struct CopyPasteButtonView: View { let pasteValue: String? @State private var copied: Bool = false + @ViewBuilder var body: some View { - Button { - let pasteboard = UIPasteboard.general - pasteboard.string = pasteValue - copied = true - } label: { - Label(copied ? "copié" : "copier", systemImage: "doc.on.doc").symbolVariant(copied ? .fill : .none) + if let pasteValue { + Button { + let pasteboard = UIPasteboard.general + pasteboard.string = pasteValue + copied = true + } 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 + } } } } diff --git a/PadelClub/Views/Player/PlayerDetailView.swift b/PadelClub/Views/Player/PlayerDetailView.swift index 982f11e..c30b70d 100644 --- a/PadelClub/Views/Player/PlayerDetailView.swift +++ b/PadelClub/Views/Player/PlayerDetailView.swift @@ -113,7 +113,9 @@ struct PlayerDetailView: View { Section { LabeledContent { TextField("Licence", text: $licenceId) + .focused($focusedField, equals: ._licenceId) .keyboardType(.alphabet) + .textContentType(nil) .multilineTextAlignment(.trailing) .autocorrectionDisabled() .frame(maxWidth: .infinity) @@ -122,16 +124,23 @@ struct PlayerDetailView: View { _save() } } 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 { TextField("Téléphone", text: $phoneNumber) + .focused($focusedField, equals: ._phoneNumber) .keyboardType(.namePhonePad) + .textContentType(nil) .multilineTextAlignment(.trailing) .autocorrectionDisabled() .frame(maxWidth: .infinity) @@ -140,16 +149,23 @@ struct PlayerDetailView: View { _save() } } 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 { TextField("Email", text: $email) + .focused($focusedField, equals: ._email) .keyboardType(.emailAddress) + .textContentType(nil) .multilineTextAlignment(.trailing) .autocorrectionDisabled() .frame(maxWidth: .infinity) @@ -158,12 +174,18 @@ struct PlayerDetailView: View { _save() } } 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 { ToolbarItem(placement: .topBarTrailing) {