Autofocus emoji search and send the first result with the return key on macOS. (#3644)

* Autofocus emoji search and send the first result with the return key on macOS.

* Add an extra condition to make sure the user has entered a search string before sending.
This commit is contained in:
Doug
2024-12-20 11:25:05 +00:00
committed by GitHub
parent 888a61ace1
commit 365797c8b7
2 changed files with 45 additions and 4 deletions
@@ -51,6 +51,8 @@ struct EmojiPickerScreen: View {
.toolbar { toolbar }
.isSearching($isSearching)
.searchable(text: $searchString, placement: .navigationBarDrawer(displayMode: .always))
.focusSearchIfHardwareKeyboardAvailable()
.onSubmit(of: .search, sendFirstEmojiOnMac)
.compoundSearchField()
}
.presentationDetents([.medium, .large])
@@ -76,6 +78,15 @@ struct EmojiPickerScreen: View {
}
}
}
func sendFirstEmojiOnMac() {
// No sure-fire way to detect that the submit came from a h/w keyboard on iOS/iPadOS.
guard ProcessInfo.processInfo.isiOSAppOnMac else { return }
if !searchString.isBlank, let emoji = context.viewState.categories.first?.emojis.first {
context.send(viewAction: .emojiTapped(emoji: emoji))
}
}
}
// MARK: - Previews