TP-40997 | Clear focus of cursor of CustomTextFieldRenderer on update data action (#178)
This commit is contained in:
@@ -15,9 +15,9 @@ import androidx.compose.ui.focus.onFocusChanged
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.SolidColor
|
||||
import androidx.compose.ui.layout.layoutId
|
||||
import androidx.compose.ui.platform.LocalFocusManager
|
||||
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
||||
import androidx.compose.ui.text.*
|
||||
import androidx.compose.ui.text.input.TextFieldValue
|
||||
import androidx.compose.ui.text.input.VisualTransformation
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
@@ -79,11 +79,10 @@ class CustomTextFieldRenderer(
|
||||
val isTextTransformedValueEdited = remember {
|
||||
mutableStateOf(false)
|
||||
}
|
||||
var cursorSelection by remember { mutableStateOf(TextRange.Zero) }
|
||||
|
||||
val focusManager = LocalFocusManager.current
|
||||
var inputValue by remember(customTextFieldData?.inputText) {
|
||||
if (isTextTransformedValueEdited.value.not()) {
|
||||
cursorSelection = TextRange(customTextFieldData?.inputText.orEmpty().length)
|
||||
focusManager.clearFocus()
|
||||
}
|
||||
val input = onInputValueChange(
|
||||
input = customTextFieldData?.inputText.orEmpty(),
|
||||
@@ -92,7 +91,7 @@ class CustomTextFieldRenderer(
|
||||
uiTronViewModel = uiTronViewModel,
|
||||
isTextTransformedValueUpdated = isTextTransformedValueEdited
|
||||
)
|
||||
mutableStateOf(TextFieldValue(text = input, selection = cursorSelection))
|
||||
mutableStateOf(input)
|
||||
}
|
||||
var isFocused by remember {
|
||||
mutableStateOf(false)
|
||||
@@ -206,17 +205,14 @@ class CustomTextFieldRenderer(
|
||||
value = inputValue,
|
||||
onValueChange = { input ->
|
||||
val editedInput = onInputValueChange(
|
||||
input = input.text,
|
||||
input = input,
|
||||
property = property,
|
||||
customTextFieldData = customTextFieldData,
|
||||
uiTronViewModel = uiTronViewModel,
|
||||
isTextTransformedValueUpdated = mutableStateOf(false)
|
||||
)
|
||||
if (input.text != inputValue.text) {
|
||||
isTextTransformedValueEdited.value = true
|
||||
}
|
||||
cursorSelection = TextRange(input.selection.start)
|
||||
inputValue = TextFieldValue(text = editedInput, selection = cursorSelection)
|
||||
isTextTransformedValueEdited.value = true
|
||||
inputValue = editedInput
|
||||
},
|
||||
singleLine = property.singleLine ?: false,
|
||||
visualTransformation = property.visualTransformation?.getVisualTransformation()
|
||||
@@ -226,7 +222,7 @@ class CustomTextFieldRenderer(
|
||||
property.cursorColor?.hexToComposeColor ?: Color.Gray
|
||||
)
|
||||
)
|
||||
if (inputValue.text.isEmpty()) {
|
||||
if (inputValue.isEmpty()) {
|
||||
property.hintStyle?.let {
|
||||
TextRenderer().Render(
|
||||
property = it,
|
||||
@@ -254,7 +250,7 @@ class CustomTextFieldRenderer(
|
||||
}
|
||||
uiTronViewModel.handle[property.errorMessageLayoutId.getDataId()] =
|
||||
TextData(customTextFieldData.errorMessage)
|
||||
} else if (inputValue.text.isNotNullAndNotEmpty()) {
|
||||
} else if (inputValue.isNotNullAndNotEmpty()) {
|
||||
if (isFocused) {
|
||||
borderColor = property.colors?.focusedBorderColor
|
||||
} else {
|
||||
@@ -262,7 +258,7 @@ class CustomTextFieldRenderer(
|
||||
}
|
||||
val successText = getTransformedText(
|
||||
property.successTextTransformation,
|
||||
inputValue.text
|
||||
inputValue
|
||||
)
|
||||
if (successText.isNotNullAndNotEmpty()) {
|
||||
property.successView?.let {
|
||||
|
||||
Reference in New Issue
Block a user