feat: Add emoji picker functionality to MessageInputBar and hide keyboard when picker is open

This commit is contained in:
k1ngsterr1
2026-01-10 20:30:37 +05:00
parent 97fcdadf63
commit 69ed43d26e

View File

@@ -16,10 +16,12 @@ import androidx.compose.material.icons.filled.*
import androidx.compose.material3.* import androidx.compose.material3.*
import androidx.compose.runtime.* import androidx.compose.runtime.*
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -391,6 +393,7 @@ private fun MessageBubble(
* + Плавная анимация самолетика * + Плавная анимация самолетика
* + Эмодзи пикер * + Эмодзи пикер
*/ */
@OptIn(ExperimentalComposeUiApi::class)
@Composable @Composable
private fun MessageInputBar( private fun MessageInputBar(
value: String, value: String,
@@ -403,6 +406,14 @@ private fun MessageInputBar(
) { ) {
// Состояние эмодзи пикера // Состояние эмодзи пикера
var showEmojiPicker by remember { mutableStateOf(false) } var showEmojiPicker by remember { mutableStateOf(false) }
val keyboardController = LocalSoftwareKeyboardController.current
// Скрываем клавиатуру когда открыт эмодзи пикер
LaunchedEffect(showEmojiPicker) {
if (showEmojiPicker) {
keyboardController?.hide()
}
}
// Цвета для glass morphism эффекта // Цвета для glass morphism эффекта
val glassBackground = if (isDarkTheme) val glassBackground = if (isDarkTheme)