mirror of
https://github.com/neon443/NearFuture.git
synced 2026-03-11 06:49:12 +00:00
fix editing events on mac and ios
toolbar label()s instead of buton("label")s
fix event add/delete/tick animation
fix event complete progress on ios and mac and that it just spazzed out
browsing true for symbols browsing (not picking)
This commit is contained in:
@@ -44,12 +44,7 @@ struct NearFutureApp: App {
|
||||
viewModel.events.first(where: {$0.id == eventID}) ?? viewModel.template
|
||||
},
|
||||
set: { newValue in
|
||||
if let eventIndex = viewModel.events.firstIndex(where: {
|
||||
$0.id == eventID
|
||||
}) {
|
||||
viewModel.events[eventIndex] = newValue
|
||||
}
|
||||
viewModel.saveEvents()
|
||||
viewModel.editEvent(newValue)
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
@@ -37,7 +37,8 @@ struct ContentView: View {
|
||||
}
|
||||
NavigationLink {
|
||||
SymbolsPicker(
|
||||
selection: $symbolSearchInput
|
||||
selection: .constant(""),
|
||||
browsing: true
|
||||
)
|
||||
} label: {
|
||||
Image(systemName: "star.circle")
|
||||
|
||||
@@ -23,18 +23,31 @@ struct ArchiveView: View {
|
||||
} else {
|
||||
ScrollView {
|
||||
ForEach(filteredEvents) { event in
|
||||
NavigationLink() {
|
||||
EditEventView(
|
||||
viewModel: viewModel,
|
||||
event: Binding(
|
||||
get: { event },
|
||||
set: { newValue in
|
||||
viewModel.editEvent(newValue)
|
||||
}
|
||||
)
|
||||
)
|
||||
} label: {
|
||||
EventListView(viewModel: viewModel, event: event)
|
||||
.transition(.moveAndFadeReversed)
|
||||
.id(event.complete)
|
||||
}
|
||||
.transition(.moveAndFadeReversed)
|
||||
}
|
||||
.padding(.horizontal)
|
||||
}
|
||||
.animation(.default, value: filteredEvents)
|
||||
}
|
||||
}
|
||||
.transition(.opacity)
|
||||
.scrollContentBackground(.hidden)
|
||||
.toolbar {
|
||||
ToolbarItem(placement: .topBarTrailing) {
|
||||
ToolbarItem(placement: .primaryAction) {
|
||||
AddEventButton(showingAddEventView: $showAddEvent)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,8 @@ struct ContentView: View {
|
||||
}
|
||||
.tag(Tab.archive)
|
||||
SymbolsPicker(
|
||||
selection: .constant("")
|
||||
selection: .constant(""),
|
||||
browsing: true
|
||||
)
|
||||
.tabItem {
|
||||
Label("Symbols", systemImage: "star.circle")
|
||||
|
||||
@@ -155,10 +155,7 @@ struct AddEventView: View {
|
||||
bye.toggle()
|
||||
resetAddEventView()
|
||||
} label: {
|
||||
Text("Save")
|
||||
.font(.headline)
|
||||
.cornerRadius(10)
|
||||
.buttonStyle(BorderedProminentButtonStyle())
|
||||
Label("Save", systemImage: "checkmark")
|
||||
}
|
||||
.tint(.accent)
|
||||
.modifier(hapticSuccess(trigger: bye))
|
||||
@@ -184,9 +181,7 @@ struct AddEventView: View {
|
||||
viewModel.editEvent(event)
|
||||
dismiss()
|
||||
} label: {
|
||||
Text("Done")
|
||||
.bold()
|
||||
.foregroundStyle(.blue)
|
||||
Label("Done", systemImage: "checkmark")
|
||||
}
|
||||
.disabled(event.name == "")
|
||||
}
|
||||
|
||||
@@ -80,7 +80,6 @@ struct EventListView: View {
|
||||
event: $event
|
||||
)
|
||||
}
|
||||
.transition(.opacity)
|
||||
.fixedSize(horizontal: false, vertical: true)
|
||||
}
|
||||
.onHover { isHovering in
|
||||
@@ -170,7 +169,6 @@ struct EventListView: View {
|
||||
event: $event
|
||||
)
|
||||
}
|
||||
.transition(.opacity)
|
||||
.padding(.vertical, 5)
|
||||
.overlay(
|
||||
RoundedRectangle(cornerRadius: 15)
|
||||
|
||||
@@ -48,12 +48,20 @@ struct HomeView: View {
|
||||
// LazyVStack {
|
||||
ForEach(filteredEvents) { event in
|
||||
NavigationLink() {
|
||||
|
||||
EditEventView(
|
||||
viewModel: viewModel,
|
||||
event: Binding(
|
||||
get: { event },
|
||||
set: { newValue in
|
||||
viewModel.editEvent(newValue)
|
||||
}
|
||||
)
|
||||
)
|
||||
} label: {
|
||||
EventListView(viewModel: viewModel, event: event)
|
||||
.transition(.moveAndFade)
|
||||
.id(event.complete)
|
||||
}
|
||||
.transition(.moveAndFade)
|
||||
}
|
||||
.padding(.horizontal)
|
||||
// }
|
||||
@@ -77,7 +85,7 @@ struct HomeView: View {
|
||||
)
|
||||
}
|
||||
.toolbar {
|
||||
ToolbarItem(placement: .topBarTrailing) {
|
||||
ToolbarItem(placement: .primaryAction) {
|
||||
AddEventButton(showingAddEventView: $showingAddEventView)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,11 +40,11 @@ struct CompleteEventButton: View {
|
||||
let elapsed = Date().timeIntervalSince(completeStartTime)
|
||||
progress = min(1, elapsed)
|
||||
|
||||
if progress > 1 {
|
||||
timer.invalidate()
|
||||
progress = 0
|
||||
if progress >= 1 {
|
||||
withAnimation { completeInProgress = false }
|
||||
viewModel.completeEvent(&event)
|
||||
timer.invalidate()
|
||||
progress = 0
|
||||
}
|
||||
}
|
||||
RunLoop.main.add(timer!, forMode: .common)
|
||||
|
||||
@@ -14,6 +14,7 @@ struct SymbolsPicker: View {
|
||||
@FocusState var searchfocuesd: Bool
|
||||
|
||||
@State var searchInput: String = ""
|
||||
@State var browsing: Bool = false
|
||||
@Environment(\.dismiss) var dismiss
|
||||
|
||||
var symbols: [String] {
|
||||
@@ -69,9 +70,13 @@ struct SymbolsPicker: View {
|
||||
.searchable(text: $searchInput)
|
||||
.toolbar {
|
||||
ToolbarItem(placement: .cancellationAction) {
|
||||
Button("Cancel") {
|
||||
if !browsing {
|
||||
Button() {
|
||||
searchInput = ""
|
||||
dismiss()
|
||||
} label: {
|
||||
Label("Cancel", systemImage: "xmark")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user