diff --git a/WorldBuilder/Views/WorldList/Modifiers/WorldListAreaInsetModifier.swift b/WorldBuilder/Views/WorldList/Modifiers/WorldListAreaInsetModifier.swift index 1c56aa2..8360bfc 100644 --- a/WorldBuilder/Views/WorldList/Modifiers/WorldListAreaInsetModifier.swift +++ b/WorldBuilder/Views/WorldList/Modifiers/WorldListAreaInsetModifier.swift @@ -9,7 +9,7 @@ import SwiftUI import SwiftData struct WorldListAreaInsetModifier : ViewModifier { - let isSelecting : Bool + @Binding var isSelecting : Bool @Binding var selectedWorlds : Set let worlds : [World] @@ -36,9 +36,16 @@ struct WorldListAreaInsetModifier : ViewModifier { Spacer() Button(role: .destructive){ + let shouldExitSelection = worldsToAction.count == worlds.count + for world in worldsToAction { context.delete(world) } + selectedWorlds.removeAll() + + if shouldExitSelection { + isSelecting = false + } }label : { Label("Supprimer", systemImage: "trash") } diff --git a/WorldBuilder/Views/WorldList/Modifiers/WorldListToolbarModifier.swift b/WorldBuilder/Views/WorldList/Modifiers/WorldListToolbarModifier.swift index e3e9370..8ac6dca 100644 --- a/WorldBuilder/Views/WorldList/Modifiers/WorldListToolbarModifier.swift +++ b/WorldBuilder/Views/WorldList/Modifiers/WorldListToolbarModifier.swift @@ -10,19 +10,22 @@ import SwiftUI struct WorldListToolbarModifier : ViewModifier { @Binding var isSelecting : Bool @Binding var selectedWorlds : Set + let worldsIsEmpty : Bool func body(content: Content) -> some View { content .toolbar{ - ToolbarItem(placement: .topBarLeading) { - if isSelecting { - Button("Annuler") { - selectedWorlds.removeAll() - isSelecting = false - } - } else { - Button("Sélectionner") { - isSelecting = true + if !worldsIsEmpty { + ToolbarItem(placement: .topBarLeading) { + if isSelecting { + Button("Annuler") { + selectedWorlds.removeAll() + isSelecting = false + } + } else { + Button("Sélectionner") { + isSelecting = true + } } } } diff --git a/WorldBuilder/Views/WorldList/WorldListView.swift b/WorldBuilder/Views/WorldList/WorldListView.swift index eacf04b..249ddf4 100644 --- a/WorldBuilder/Views/WorldList/WorldListView.swift +++ b/WorldBuilder/Views/WorldList/WorldListView.swift @@ -69,7 +69,7 @@ struct WorldListView: View { .frame(maxHeight: .infinity, alignment: .topLeading) .modifier( WorldListAreaInsetModifier( - isSelecting: isSelecting, + isSelecting: $isSelecting, selectedWorlds: $selectedWorlds, worlds: worlds ) @@ -78,7 +78,8 @@ struct WorldListView: View { .modifier( WorldListToolbarModifier( isSelecting: $isSelecting, - selectedWorlds: $selectedWorlds + selectedWorlds: $selectedWorlds, + worldsIsEmpty: worlds.isEmpty ) ) }