Small tweaks (#482)

* #449: Hide the keyboard when scrolling during a search.
* Tidy up the reactions picker.
This commit is contained in:
Doug
2023-01-23 18:32:56 +00:00
committed by GitHub
parent e8b48d4897
commit 7e1593d43d
3 changed files with 13 additions and 6 deletions
@@ -22,6 +22,8 @@ struct EmojiPickerHeaderView: View {
var body: some View {
HStack {
Text(title)
.font(.element.subheadline.bold())
.foregroundColor(.element.primaryContent)
.frame(maxWidth: .infinity, alignment: .leading)
}
}
@@ -19,24 +19,27 @@ import SwiftUI
struct EmojiPickerScreen: View {
@ObservedObject var context: EmojiPickerScreenViewModel.Context
@State var searchString = ""
@ScaledMetric(relativeTo: .title) var minimumWidth: Double = 50
var body: some View {
ScrollView {
LazyVGrid(columns: [GridItem(.adaptive(minimum: 45))], spacing: 3) {
LazyVGrid(columns: [GridItem(.adaptive(minimum: minimumWidth))], spacing: 16) {
ForEach(context.viewState.categories) { category in
Section(header: EmojiPickerHeaderView(title: category.name)
.padding(.horizontal, 13)
.padding(.top, 10)) {
ForEach(category.emojis) { emoji in
Text(emoji.value)
.frame(width: 45, height: 45)
.onTapGesture {
context.send(viewAction: .emojiTapped(emoji: emoji))
}
Button {
context.send(viewAction: .emojiTapped(emoji: emoji))
} label: {
Text(emoji.value)
.font(.element.title1)
}
}
}
}
}
.padding(.horizontal, 6)
}
.navigationTitle(ElementL10n.reactions)
.navigationBarTitleDisplayMode(.inline)
@@ -65,5 +68,6 @@ struct EmojiPickerScreen_Previews: PreviewProvider {
NavigationStack {
EmojiPickerScreen(context: EmojiPickerScreenViewModel(emojiProvider: EmojiProvider()).context)
}
.tint(.element.accent)
}
}
@@ -67,6 +67,7 @@ struct HomeScreen: View {
.disableAutocorrection(true)
}
}
.scrollDismissesKeyboard(.immediately)
.disabled(context.viewState.roomListMode == .skeletons)
.animation(.elementDefault, value: context.viewState.showSessionVerificationBanner)
.animation(.elementDefault, value: context.viewState.roomListMode)