diff --git a/app/src/main/res/raw/mock.json b/app/src/main/res/raw/mock.json index f260c9b..cbb3161 100644 --- a/app/src/main/res/raw/mock.json +++ b/app/src/main/res/raw/mock.json @@ -2515,13 +2515,13 @@ "data": { "dob_new": { "viewType": "MultiSectionTextField", - "value": "", + "inputText": "2000-06-25", "hint": [ "DD", "MM", "YYYY" ], - "dateFormat": "ddMMyyyy", + "dateFormat": "yyyy-MM-dd", "dateSeparator": " - ", "onValueChangeAction": { "actions": [ @@ -10043,8 +10043,7 @@ "data": { "dob_new": { "viewType": "MultiSectionTextField", - "value": "", - "dateFormat": "ddMMyyyy", + "inputText": "1234123412341234", "hint": [ "XXXX", "XXXX", diff --git a/navi-uitron/src/main/java/com/navi/uitron/render/MultiSectionTextFieldRenderer.kt b/navi-uitron/src/main/java/com/navi/uitron/render/MultiSectionTextFieldRenderer.kt index 05f1def..8430253 100644 --- a/navi-uitron/src/main/java/com/navi/uitron/render/MultiSectionTextFieldRenderer.kt +++ b/navi-uitron/src/main/java/com/navi/uitron/render/MultiSectionTextFieldRenderer.kt @@ -27,6 +27,9 @@ import com.navi.uitron.utils.ShapeUtil import com.navi.uitron.viewmodel.UiTronViewModel import getBorderStrokeBrushData import getDataId +import getFormattedDate +import getFormattedMonth +import getFormattedYear import getInputId import getInteractionType import getKeyboardOptions @@ -87,11 +90,18 @@ class MultiSectionTextFieldRenderer() : Renderer mutableStateOf(property.textFieldPropertyList.sumOf { it.maxChar ?: 0 }) } - val inputList: List = if (totalChar.value == inputText.length) { - splitStringIntoUnequalParts(inputText, defaultMaxCharList) - } else { - defaultMaxCharList.map { "" } - } + val inputList: List = + if (multiSectionTextFieldData?.dateFormat.isNotNullAndNotEmpty()) { + listOf( + getFormattedDate(inputText, multiSectionTextFieldData?.dateFormat), + getFormattedMonth(inputText, multiSectionTextFieldData?.dateFormat), + getFormattedYear(inputText, multiSectionTextFieldData?.dateFormat) + ) + } else if (totalChar.value == inputText.length) { + splitStringIntoUnequalParts(inputText, defaultMaxCharList) + } else { + defaultMaxCharList.map { "" } + } val inputValues = remember { (0 until property.textFieldPropertyList.size).map { @@ -194,15 +204,11 @@ class MultiSectionTextFieldRenderer() : Renderer focusRequesters .getOrNull(index + 1) ?.requestFocus() - if (index < property.textFieldPropertyList.size - 1 && - maxCharList[index + 1] > inputValues[index + 1].value.text.length && - inputValues[index + 1].value.text.isEmpty() - ) { - inputValues[index + 1].value = - TextFieldValue( - text = lastInput + inputValues[index + 1].value.text, - selection = TextRange(maxCharList[index + 1]) - ) + if (index < property.textFieldPropertyList.size - 1 && maxCharList[index + 1] > inputValues[index + 1].value.text.length && inputValues[index + 1].value.text.isEmpty()) { + inputValues[index + 1].value = TextFieldValue( + text = lastInput + inputValues[index + 1].value.text, + selection = TextRange(maxCharList[index + 1]) + ) } } }