diff --git a/MacNearFuture/Views/ArchiveView.swift b/MacNearFuture/Views/ArchiveView.swift index ac0af6c..6f6eab3 100644 --- a/MacNearFuture/Views/ArchiveView.swift +++ b/MacNearFuture/Views/ArchiveView.swift @@ -19,6 +19,14 @@ struct ArchiveView: View { ScrollView { ForEach(filteredEvents) { event in EventListView(viewModel: viewModel, event: event) + .contextMenu() { + Button(role: .destructive) { + viewModel.removeEvent(event) + } label: { + Label("Delete", systemImage: "trash") + .tint(.red ) + } + } } } .scrollContentBackground(.hidden) diff --git a/MacNearFuture/Views/HomeView.swift b/MacNearFuture/Views/HomeView.swift index f21b7c5..ddc9d01 100644 --- a/MacNearFuture/Views/HomeView.swift +++ b/MacNearFuture/Views/HomeView.swift @@ -34,6 +34,14 @@ struct HomeView: View { if filteredEvents.contains(event) { EventListView(viewModel: viewModel, event: event) .id(event) + .contextMenu() { + Button(role: .destructive) { + viewModel.removeEvent(event) + } label: { + Label("Delete", systemImage: "trash") + .tint(.red) + } + } } } } diff --git a/NearFuture/Views/Archive/ArchiveView.swift b/NearFuture/Views/Archive/ArchiveView.swift index 8f0fae4..e58c21a 100644 --- a/NearFuture/Views/Archive/ArchiveView.swift +++ b/NearFuture/Views/Archive/ArchiveView.swift @@ -35,9 +35,17 @@ struct ArchiveView: View { ) } label: { EventListView(viewModel: viewModel, event: event) - .id(event.complete) + .id(event) } .transition(.moveAndFadeReversed) + .contextMenu() { + Button(role: .destructive) { + viewModel.removeEvent(event) + } label: { + Label("Delete", systemImage: "trash") + .tint(.red) + } + } } .padding(.horizontal) } diff --git a/NearFuture/Views/Home/EventListView.swift b/NearFuture/Views/Home/EventListView.swift index 754f7cf..681916b 100644 --- a/NearFuture/Views/Home/EventListView.swift +++ b/NearFuture/Views/Home/EventListView.swift @@ -90,19 +90,6 @@ struct EventListView: View { .onTapGesture { openWindow(value: event.id) } - .contextMenu() { - Button(role: .destructive) { - let eventToModify = viewModel.events.firstIndex() { currEvent in - currEvent.id == event.id - } - if let eventToModify = eventToModify { - viewModel.events.remove(at: eventToModify) - viewModel.saveEvents() - } - } label: { - Label("Delete", systemImage: "trash") - } - } } #else var body: some View { @@ -176,13 +163,6 @@ struct EventListView: View { ) .clipShape(RoundedRectangle(cornerRadius: 15)) .fixedSize(horizontal: false, vertical: true) - .contextMenu() { - Button(role: .destructive) { - viewModel.removeEvent(event) - } label: { - Label("Delete", systemImage: "trash") - } - } .swipeActions(edge: .trailing, allowsFullSwipe: true) { Button(role: .destructive) { viewModel.removeEvent(event) diff --git a/NearFuture/Views/Home/HomeView.swift b/NearFuture/Views/Home/HomeView.swift index 8f77c9e..cdbeb90 100644 --- a/NearFuture/Views/Home/HomeView.swift +++ b/NearFuture/Views/Home/HomeView.swift @@ -59,9 +59,17 @@ struct HomeView: View { ) } label: { EventListView(viewModel: viewModel, event: event) - .id(event.complete) + .id(event) } .transition(.moveAndFade) + .contextMenu() { + Button(role: .destructive) { + viewModel.removeEvent(event) + } label: { + Label("Delete", systemImage: "trash") + .tint(.red) + } + } } .padding(.horizontal) // } diff --git a/Shared/Extensions.swift b/Shared/Extensions.swift index 049e4c4..38b5c2f 100644 --- a/Shared/Extensions.swift +++ b/Shared/Extensions.swift @@ -22,14 +22,14 @@ extension View { extension AnyTransition { static var moveAndFade: AnyTransition { .asymmetric( - insertion: .move(edge: .leading), + insertion: .opacity, removal: .move(edge: .trailing) ) .combined(with: .opacity) } static var moveAndFadeReversed: AnyTransition { .asymmetric( - insertion: .move(edge: .trailing), + insertion: .opacity, removal: .move(edge: .leading) ) .combined(with: .opacity) diff --git a/Shared/Model/SymbolsPicker/SymbolsLoader.swift b/Shared/Model/SymbolsPicker/SymbolsLoader.swift index abff58c..3e89c1c 100644 --- a/Shared/Model/SymbolsPicker/SymbolsLoader.swift +++ b/Shared/Model/SymbolsPicker/SymbolsLoader.swift @@ -8,7 +8,7 @@ import Foundation class SymbolsLoader: ObservableObject { - @Published var allSymbols: [String] = [] + private var allSymbols: [String] = [] init() { self.allSymbols = getAllSymbols() @@ -16,7 +16,7 @@ class SymbolsLoader: ObservableObject { func getSymbols(_ searched: String) -> [String] { if searched.isEmpty { - return allSymbols + return [] } else { return allSymbols.filter() { $0.localizedCaseInsensitiveContains(searched) } } diff --git a/Shared/Model/SymbolsPicker/SymbolsPicker.swift b/Shared/Model/SymbolsPicker/SymbolsPicker.swift index 92f988d..3289d07 100644 --- a/Shared/Model/SymbolsPicker/SymbolsPicker.swift +++ b/Shared/Model/SymbolsPicker/SymbolsPicker.swift @@ -31,7 +31,17 @@ struct SymbolsPicker: View { NavigationStack { GeometryReader { geo in ScrollView { - if symbols.isEmpty { + if searchInput.isEmpty { + HStack { + Image(systemName: "magnifyingglass") + .resizable().scaledToFit() + .frame(width: 30) + Text("Start a Search") + .font(.title) + .bold() + } + .padding() + } else if symbols.isEmpty { HStack { Image(systemName: "magnifyingglass") .resizable().scaledToFit()