Замена BasicTextField на AppleEmojiTextField для улучшения ввода названия группы с поддержкой эмодзи и улучшенной логикой отображения.
All checks were successful
Android Kernel Build / build (push) Successful in 16h10m51s
All checks were successful
Android Kernel Build / build (push) Successful in 16h10m51s
This commit is contained in:
@@ -26,7 +26,6 @@ import androidx.compose.foundation.layout.padding
|
|||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.foundation.text.BasicTextField
|
|
||||||
import androidx.compose.material3.CircularProgressIndicator
|
import androidx.compose.material3.CircularProgressIndicator
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.FloatingActionButton
|
import androidx.compose.material3.FloatingActionButton
|
||||||
@@ -54,9 +53,7 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.draw.clip
|
import androidx.compose.ui.draw.clip
|
||||||
import androidx.compose.ui.focus.FocusRequester
|
import androidx.compose.ui.focus.FocusRequester
|
||||||
import androidx.compose.ui.focus.focusRequester
|
import androidx.compose.ui.focus.focusRequester
|
||||||
import androidx.compose.ui.focus.onFocusChanged
|
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.graphics.SolidColor
|
|
||||||
import androidx.compose.ui.graphics.toArgb
|
import androidx.compose.ui.graphics.toArgb
|
||||||
import androidx.compose.ui.layout.ContentScale
|
import androidx.compose.ui.layout.ContentScale
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
@@ -66,7 +63,6 @@ import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
|||||||
import androidx.compose.ui.platform.LocalView
|
import androidx.compose.ui.platform.LocalView
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.text.font.FontWeight
|
import androidx.compose.ui.text.font.FontWeight
|
||||||
import androidx.compose.ui.text.TextStyle
|
|
||||||
import androidx.compose.ui.text.style.TextAlign
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
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
|
||||||
@@ -79,6 +75,7 @@ import com.rosetta.messenger.data.GroupRepository
|
|||||||
import com.rosetta.messenger.network.GroupStatus
|
import com.rosetta.messenger.network.GroupStatus
|
||||||
import com.rosetta.messenger.network.SearchUser
|
import com.rosetta.messenger.network.SearchUser
|
||||||
import com.rosetta.messenger.repository.AvatarRepository
|
import com.rosetta.messenger.repository.AvatarRepository
|
||||||
|
import com.rosetta.messenger.ui.components.AppleEmojiTextField
|
||||||
import com.rosetta.messenger.ui.components.KeyboardHeightProvider
|
import com.rosetta.messenger.ui.components.KeyboardHeightProvider
|
||||||
import com.rosetta.messenger.ui.components.OptimizedEmojiPicker
|
import com.rosetta.messenger.ui.components.OptimizedEmojiPicker
|
||||||
import com.rosetta.messenger.ui.components.AppleEmojiText
|
import com.rosetta.messenger.ui.components.AppleEmojiText
|
||||||
@@ -441,46 +438,31 @@ fun GroupSetupScreen(
|
|||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Box(modifier = Modifier.weight(1f)) {
|
Box(modifier = Modifier.weight(1f)) {
|
||||||
BasicTextField(
|
AppleEmojiTextField(
|
||||||
value = title,
|
value = title,
|
||||||
onValueChange = { newValue -> title = newValue.take(80) },
|
onValueChange = { newValue -> title = newValue.take(80) },
|
||||||
singleLine = true,
|
textColor = primaryTextColor,
|
||||||
textStyle = TextStyle(
|
textSize = 18f,
|
||||||
color = primaryTextColor,
|
hint = "Group name",
|
||||||
fontSize = 18.sp,
|
hintColor = secondaryTextColor.copy(alpha = 0.88f),
|
||||||
fontWeight = FontWeight.Medium
|
|
||||||
),
|
|
||||||
cursorBrush = SolidColor(accentColor),
|
|
||||||
enabled = !isLoading,
|
|
||||||
modifier =
|
modifier =
|
||||||
Modifier
|
Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.focusRequester(nameFocusRequester)
|
.focusRequester(nameFocusRequester)
|
||||||
.onFocusChanged { focusState ->
|
.padding(vertical = 2.dp),
|
||||||
if (focusState.isFocused &&
|
onViewCreated = { editText ->
|
||||||
|
editText.isSingleLine = true
|
||||||
|
editText.maxLines = 1
|
||||||
|
editText.setHorizontallyScrolling(true)
|
||||||
|
},
|
||||||
|
onFocusChanged = { hasFocus ->
|
||||||
|
if (hasFocus &&
|
||||||
showEmojiKeyboard &&
|
showEmojiKeyboard &&
|
||||||
!coordinator.isTransitioning
|
!coordinator.isTransitioning
|
||||||
) {
|
) {
|
||||||
coordinator.closeEmoji(hideEmoji = { showEmojiKeyboard = false })
|
coordinator.closeEmoji(hideEmoji = { showEmojiKeyboard = false })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding(vertical = 2.dp),
|
|
||||||
decorationBox = { innerTextField ->
|
|
||||||
Box(
|
|
||||||
modifier = Modifier.fillMaxWidth(),
|
|
||||||
contentAlignment = Alignment.CenterStart
|
|
||||||
) {
|
|
||||||
if (title.isBlank()) {
|
|
||||||
Text(
|
|
||||||
text = "Group name",
|
|
||||||
color = secondaryTextColor.copy(alpha = 0.88f),
|
|
||||||
fontSize = 18.sp,
|
|
||||||
fontWeight = FontWeight.Normal
|
|
||||||
)
|
|
||||||
}
|
|
||||||
innerTextField()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user