mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-23 03:32:13 -04:00
Add up and down navigation for search results
This commit is contained in:
parent
7e5a66184c
commit
e40ae723e8
@ -22,6 +22,7 @@ struct SearchResults: View {
|
||||
@Environment(\.dismissSearch) private var dismissSearch
|
||||
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
|
||||
@Environment(\.managedObjectContext) private var managedObjectContext
|
||||
@Environment(\.isSearching) private var isSearching
|
||||
@EnvironmentObject private var viewModel: SearchViewModel
|
||||
@EnvironmentObject private var navigation: NavigationViewModel
|
||||
@FocusState private var focusedSearchItem: URL? // macOS only
|
||||
@ -35,6 +36,17 @@ struct SearchResults: View {
|
||||
|
||||
var body: some View {
|
||||
Group {
|
||||
#if os(macOS)
|
||||
// Special hidden button to enable down key response when
|
||||
// search is active, to go to search results
|
||||
if isSearching, focusedSearchItem == nil {
|
||||
Button(action: {
|
||||
focusedSearchItem = viewModel.results.first?.url
|
||||
}, label: {})
|
||||
.hidden()
|
||||
.keyboardShortcut(.downArrow, modifiers: [])
|
||||
}
|
||||
#endif
|
||||
if zimFiles.isEmpty {
|
||||
Message(text: LocalString.search_result_zimfile_empty_message)
|
||||
} else if horizontalSizeClass == .regular {
|
||||
@ -120,7 +132,10 @@ struct SearchResults: View {
|
||||
case .down: nextIndex = viewModel.results.index(after: index)
|
||||
default: nextIndex = viewModel.results.startIndex
|
||||
}
|
||||
if (viewModel.results.startIndex..<viewModel.results.endIndex).contains(nextIndex) {
|
||||
if nextIndex < viewModel.results.startIndex {
|
||||
$focusedSearchItem.wrappedValue = nil
|
||||
NotificationCenter.default.post(name: .zimSearch, object: nil)
|
||||
} else if (viewModel.results.startIndex..<viewModel.results.endIndex).contains(nextIndex) {
|
||||
$focusedSearchItem.wrappedValue = viewModel.results[nextIndex].url
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user