|
|
|
|
@ -31,7 +31,9 @@ struct ClubDetailView: View { |
|
|
|
|
var body: some View { |
|
|
|
|
Form { |
|
|
|
|
Section { |
|
|
|
|
TextField("Nom du club", text: $club.name) |
|
|
|
|
ZStack { |
|
|
|
|
Text(club.name).hidden() |
|
|
|
|
TextEditor(text: $club.name) |
|
|
|
|
.autocorrectionDisabled() |
|
|
|
|
.keyboardType(.alphabet) |
|
|
|
|
.frame(maxWidth: .infinity) |
|
|
|
|
@ -46,8 +48,9 @@ struct ClubDetailView: View { |
|
|
|
|
focusedField = ._acronym |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
LabeledContent { |
|
|
|
|
if acronymMode == .automatic { |
|
|
|
|
if acronymMode == .automatic || displayContext == .lockedForEditing { |
|
|
|
|
Text(club.acronym) |
|
|
|
|
} else { |
|
|
|
|
TextField("Nom court", text: $club.acronym) |
|
|
|
|
@ -82,6 +85,7 @@ struct ClubDetailView: View { |
|
|
|
|
} label: { |
|
|
|
|
Text(acronymMode.rawValue) |
|
|
|
|
} |
|
|
|
|
.disabled(displayContext == .lockedForEditing) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.onChange(of: acronymMode) { |
|
|
|
|
@ -90,6 +94,8 @@ struct ClubDetailView: View { |
|
|
|
|
club.acronym = "" |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} header: { |
|
|
|
|
Text("Nom du club") |
|
|
|
|
} footer: { |
|
|
|
|
if displayContext == .lockedForEditing { |
|
|
|
|
Text("Édition impossible, vous n'êtes pas le créateur de ce club.").foregroundStyle(.logoRed) |
|
|
|
|
@ -156,7 +162,7 @@ struct ClubDetailView: View { |
|
|
|
|
Text(club.city ?? "") |
|
|
|
|
} |
|
|
|
|
Link(destination: federalLink) { |
|
|
|
|
Text("Fiche du club sur tenup") |
|
|
|
|
Text("Voir la fiche du club sur tenup") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -186,6 +192,21 @@ struct ClubDetailView: View { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if displayContext == .edition || displayContext == .lockedForEditing { |
|
|
|
|
let isFavorite = club.isFavorite() |
|
|
|
|
Section { |
|
|
|
|
RowButtonView(isFavorite ? "Mettre en favori" : "Retirer des favoris", role: isFavorite ? nil : .destructive) { |
|
|
|
|
if isFavorite { |
|
|
|
|
dataStore.user.clubs.removeAll(where: { $0 == club.id }) |
|
|
|
|
} else { |
|
|
|
|
dataStore.user.clubs.append(club.id) |
|
|
|
|
} |
|
|
|
|
self.dataStore.saveUser() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if displayContext == .edition { |
|
|
|
|
Section { |
|
|
|
|
RowButtonView("Supprimer ce club", role: .destructive) { |
|
|
|
|
@ -206,20 +227,18 @@ struct ClubDetailView: View { |
|
|
|
|
.navigationTitle(displayContext == .addition ? "Nouveau club" : "Détail du club") |
|
|
|
|
.navigationBarTitleDisplayMode(.inline) |
|
|
|
|
.toolbar(.visible, for: .navigationBar) |
|
|
|
|
.headerProminence(.increased) |
|
|
|
|
.toolbarBackground(.visible, for: .navigationBar) |
|
|
|
|
.toolbar { |
|
|
|
|
if displayContext == .edition || displayContext == .lockedForEditing { |
|
|
|
|
let isFavorite = club.isFavorite() |
|
|
|
|
ToolbarItem(placement: .topBarTrailing) { |
|
|
|
|
BarButtonView("Favori", icon: isFavorite ? "star.fill" : "star") { |
|
|
|
|
if isFavorite { |
|
|
|
|
dataStore.user.clubs.removeAll(where: { $0 == club.id }) |
|
|
|
|
} else { |
|
|
|
|
dataStore.user.clubs.append(club.id) |
|
|
|
|
} |
|
|
|
|
self.dataStore.saveUser() |
|
|
|
|
ToolbarItemGroup(placement: .keyboard) { |
|
|
|
|
if focusedField == ._name { |
|
|
|
|
Spacer() |
|
|
|
|
Button { |
|
|
|
|
focusedField = nil |
|
|
|
|
} label: { |
|
|
|
|
Text("Valider") |
|
|
|
|
} |
|
|
|
|
.tint(isFavorite ? .green : .logoRed) |
|
|
|
|
.buttonStyle(.bordered) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|