TP-58679 | Sohan Reddy | Custom renderer Implementation (#410)
Co-authored-by: Kishan Kumar <kishan.kumar@navi.com>
This commit is contained in:
committed by
GitHub
parent
1a6db5060a
commit
9bffb2f738
@@ -15,6 +15,7 @@ import androidx.compose.ui.text.font.FontWeight
|
||||
import com.navi.alfred.AlfredManager
|
||||
import com.navi.uitron.IUiTronDependencyProvider
|
||||
import com.navi.uitron.model.UiTronConfig
|
||||
import com.navi.uitron.model.ui.OutlinedTextFieldValueTransformation
|
||||
import com.navi.uitron.utils.EMPTY
|
||||
import com.navi.uitron.utils.SPACE
|
||||
|
||||
@@ -64,6 +65,13 @@ class UiTronDependencyProvider : IUiTronDependencyProvider {
|
||||
}
|
||||
}
|
||||
|
||||
override fun getTransformedText(
|
||||
value: String?,
|
||||
data: OutlinedTextFieldValueTransformation?
|
||||
): String {
|
||||
return value.orEmpty()
|
||||
}
|
||||
|
||||
override fun numberToWords(amount: String): String {
|
||||
try {
|
||||
val number = amount.toDouble().toInt().toString()
|
||||
|
||||
@@ -12,6 +12,7 @@ import android.view.View
|
||||
import androidx.compose.ui.text.font.FontFamily
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import com.navi.uitron.model.UiTronConfig
|
||||
import com.navi.uitron.model.ui.OutlinedTextFieldValueTransformation
|
||||
|
||||
interface IUiTronDependencyProvider {
|
||||
|
||||
@@ -19,6 +20,11 @@ interface IUiTronDependencyProvider {
|
||||
|
||||
fun getFontWeight(fontWeight: String?): FontWeight
|
||||
|
||||
fun getTransformedText(
|
||||
value: String? = null,
|
||||
data: OutlinedTextFieldValueTransformation? = null,
|
||||
): String
|
||||
|
||||
enum class FontWeightEnum {
|
||||
TT_MEDIUM,
|
||||
TT_BOLD,
|
||||
|
||||
@@ -16,7 +16,7 @@ import java.lang.reflect.Type
|
||||
/**
|
||||
* Copyright © 2022 by Navi Technologies Private Limited All rights reserved. Strictly confidential
|
||||
*/
|
||||
class ComposePropertyDeserializer : JsonDeserializer<BaseProperty> {
|
||||
open class ComposePropertyDeserializer : JsonDeserializer<BaseProperty> {
|
||||
override fun deserialize(
|
||||
json: JsonElement?,
|
||||
typeOfT: Type?,
|
||||
|
||||
@@ -81,7 +81,10 @@ data class OutlinedTextFieldValueTransformation(
|
||||
val currentDateFormat: String? = null,
|
||||
val targetDateFormat: String? = null,
|
||||
val prefixText: String? = null,
|
||||
val suffixText: String? = null
|
||||
val suffixText: String? = null,
|
||||
val maxDisplayLength: Int? = null,
|
||||
val decimalPlaces: Int? = null,
|
||||
val useVerboseFormat: Boolean? = null
|
||||
)
|
||||
|
||||
data class TextFieldIconData(val leadingIcon: UiTronView, val trailingIcon: UiTronView)
|
||||
|
||||
@@ -12,7 +12,7 @@ package com.navi.uitron.model.ui
|
||||
* precision
|
||||
* @param letterSpacing in sp
|
||||
*/
|
||||
data class TextProperty(
|
||||
open class TextProperty(
|
||||
var fontFamily: String? = null,
|
||||
var fontWeight: String? = null,
|
||||
var fontSize: Int? = null,
|
||||
@@ -47,6 +47,7 @@ data class TextProperty(
|
||||
textProperty?.maxLines?.let { maxLines = it }
|
||||
textProperty?.textBrushData?.let { textBrushData = it }
|
||||
textProperty?.valueTransformation?.let { valueTransformation = it }
|
||||
textProperty?.textShadow?.let { textShadow = it }
|
||||
textProperty?.includeFontPadding?.let { includeFontPadding = it }
|
||||
}
|
||||
|
||||
|
||||
@@ -131,7 +131,11 @@ class AnimatedVisibilityRenderer(
|
||||
if (childrenView.data.isNullOrEmpty()) {
|
||||
uiTronRenderer.Render(composeViews = listOf(childrenView))
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(composeViews = listOf(childrenView))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -177,7 +177,11 @@ class BoxRenderer(
|
||||
)
|
||||
)
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(
|
||||
composeViews = listOf(childrenView),
|
||||
boxConstraintsToModifier(
|
||||
|
||||
@@ -167,7 +167,13 @@ class CardRenderer(
|
||||
) {
|
||||
childrenComposeViews.forEach {
|
||||
if (it.data.isNullOrEmpty()) uiTronRenderer.Render(composeViews = listOf(it))
|
||||
else UiTronRenderer(it.data, uiTronViewModel).Render(composeViews = listOf(it))
|
||||
else
|
||||
UiTronRenderer(
|
||||
it.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(composeViews = listOf(it))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,7 +178,11 @@ class ColumnRenderer(
|
||||
)
|
||||
)
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(
|
||||
composeViews = listOf(childrenView),
|
||||
constraintsToModifier(
|
||||
@@ -206,7 +210,11 @@ class ColumnRenderer(
|
||||
)
|
||||
)
|
||||
} else {
|
||||
UiTronRenderer(childComposeView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childComposeView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(
|
||||
composeViews = listOf(childComposeView),
|
||||
constraintsToModifier(
|
||||
|
||||
@@ -396,7 +396,11 @@ class CustomTextFieldRenderer(private val uiTronRenderer: UiTronRenderer) :
|
||||
) {
|
||||
borderColor = property.colors?.errorBorderColor
|
||||
property.errorView?.let {
|
||||
UiTronRenderer(it.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
it.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(composeViews = it.parentComposeView.orEmpty())
|
||||
}
|
||||
uiTronViewModel.handle[property.errorMessageLayoutId.getDataId()] =
|
||||
@@ -411,7 +415,11 @@ class CustomTextFieldRenderer(private val uiTronRenderer: UiTronRenderer) :
|
||||
getTransformedText(property.successTextTransformation, inputValue)
|
||||
if (successText.isNotNullAndNotEmpty()) {
|
||||
property.successView?.let {
|
||||
UiTronRenderer(it.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
it.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(composeViews = it.parentComposeView.orEmpty())
|
||||
}
|
||||
uiTronViewModel.handle[property.successMessageLayoutId.getDataId()] =
|
||||
|
||||
@@ -66,7 +66,12 @@ class DialogRenderer(
|
||||
if (it.data.isNullOrEmpty()) {
|
||||
uiTronRenderer.Render(composeViews = listOf(it))
|
||||
} else {
|
||||
UiTronRenderer(it.data, uiTronViewModel).Render(composeViews = listOf(it))
|
||||
UiTronRenderer(
|
||||
it.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(composeViews = listOf(it))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,7 +127,11 @@ class DropdownRenderer(
|
||||
if (it.data.isNullOrEmpty()) {
|
||||
uiTronRenderer.Render(composeViews = listOf(it))
|
||||
} else {
|
||||
UiTronRenderer(it.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
it.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(composeViews = listOf(it))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +144,11 @@ class GridRenderer(
|
||||
if (childrenView.data.isNullOrEmpty()) {
|
||||
uiTronRenderer.Render(listOf(childrenView))
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(listOf(childrenView))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,7 +143,11 @@ class LazyColumnRenderer(
|
||||
if (childrenView.data.isNullOrEmpty()) {
|
||||
uiTronRenderer.Render(listOf(childrenView))
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(listOf(childrenView))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,12 @@ class LazyGridRenderer(
|
||||
if (childrenView.data.isNullOrEmpty()) {
|
||||
uiTronRenderer.Render(listOf(childrenView))
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel).Render(listOf(childrenView))
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(listOf(childrenView))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,7 +147,11 @@ class LazyRowRenderer(
|
||||
if (childrenView.data.isNullOrEmpty()) {
|
||||
uiTronRenderer.Render(listOf(childrenView))
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(listOf(childrenView))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,7 +275,11 @@ class OutlinedTextFieldRenderer(
|
||||
outlinedTextFieldData.errorMessage.isNullOrBlank().not()
|
||||
) {
|
||||
property.errorView?.let {
|
||||
UiTronRenderer(it.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
it.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(composeViews = it.parentComposeView.orEmpty())
|
||||
}
|
||||
uiTronViewModel.handle[property.errorMessageLayoutId.getDataId()] =
|
||||
@@ -285,7 +289,11 @@ class OutlinedTextFieldRenderer(
|
||||
getTransformedText(property.successTextTransformation, inputValue)
|
||||
if (successText.isNotNullAndNotEmpty()) {
|
||||
property.successView?.let {
|
||||
UiTronRenderer(it.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
it.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(composeViews = it.parentComposeView.orEmpty())
|
||||
}
|
||||
uiTronViewModel.handle[property.successMessageLayoutId.getDataId()] =
|
||||
|
||||
@@ -169,7 +169,11 @@ class PagerRenderer(
|
||||
if (childrenView.data.isNullOrEmpty()) {
|
||||
uiTronRenderer.Render(listOf(childrenView))
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(listOf(childrenView))
|
||||
}
|
||||
}
|
||||
@@ -242,7 +246,11 @@ class PagerRenderer(
|
||||
if (childrenView.data.isNullOrEmpty()) {
|
||||
uiTronRenderer.Render(listOf(childrenView))
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(listOf(childrenView))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,7 +178,11 @@ class RowRenderer(
|
||||
)
|
||||
)
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(
|
||||
listOf(childrenView),
|
||||
constraintsToModifier(
|
||||
@@ -205,7 +209,11 @@ class RowRenderer(
|
||||
)
|
||||
)
|
||||
} else {
|
||||
UiTronRenderer(childrenView.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
childrenView.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(
|
||||
listOf(childrenView),
|
||||
constraintsToModifier(
|
||||
|
||||
@@ -177,7 +177,11 @@ class ScratchCardRenderer(
|
||||
if (it.data.isNullOrEmpty()) {
|
||||
uiTronRenderer.Render(composeViews = listOf(it))
|
||||
} else {
|
||||
UiTronRenderer(it.data, uiTronViewModel)
|
||||
UiTronRenderer(
|
||||
it.data,
|
||||
uiTronViewModel,
|
||||
uiTronRenderer.customUiTronRenderer
|
||||
)
|
||||
.Render(composeViews = listOf(it))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,8 @@ import com.navi.uitron.viewmodel.UiTronViewModel
|
||||
|
||||
class UiTronRenderer(
|
||||
private val dataMap: MutableMap<String, UiTronData?>?,
|
||||
private val uiTronViewModel: UiTronViewModel
|
||||
private val uiTronViewModel: UiTronViewModel,
|
||||
val customUiTronRenderer: CustomUiTronRenderer? = null
|
||||
) {
|
||||
|
||||
private val uiTronRenderingFactory by lazy {
|
||||
@@ -44,6 +45,24 @@ class UiTronRenderer(
|
||||
uiTronRenderer = this
|
||||
)
|
||||
)
|
||||
?: run {
|
||||
customUiTronRenderer?.Render(
|
||||
composeView = composeView,
|
||||
modifier = modifier ?: Modifier,
|
||||
dataMap = dataMap,
|
||||
uiTronViewModel = uiTronViewModel
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface CustomUiTronRenderer {
|
||||
@Composable
|
||||
fun Render(
|
||||
composeView: UiTronView,
|
||||
modifier: Modifier,
|
||||
dataMap: Map<String, UiTronData?>?,
|
||||
uiTronViewModel: UiTronViewModel
|
||||
)
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import com.google.gson.JsonSerializer
|
||||
import com.navi.uitron.model.ui.*
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class ComposePropertySerializer : JsonSerializer<BaseProperty> {
|
||||
open class ComposePropertySerializer : JsonSerializer<BaseProperty> {
|
||||
override fun serialize(
|
||||
src: BaseProperty?,
|
||||
typeOfSrc: Type?,
|
||||
|
||||
@@ -419,7 +419,10 @@ fun getTransformedText(
|
||||
}
|
||||
.toString()
|
||||
}
|
||||
else -> null
|
||||
else -> {
|
||||
UiTronSdkManager.getDependencyProvider()
|
||||
.getTransformedText(value = inputText, data = valueTransformation)
|
||||
}
|
||||
}
|
||||
} ?: return null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user