NTP-13754 | Venkat Praneeth Reddy | Lazy row match parent functionality (#646)

This commit is contained in:
Venkat Praneeth Reddy
2024-12-16 14:00:54 +05:30
committed by GitHub
parent d461cf0ae1
commit 82375d11f4
4 changed files with 35 additions and 9 deletions

View File

@@ -7,6 +7,9 @@
package com.navi.uitron.model.ui
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
class LazyRowProperty(
var arrangementData: ArrangementData? = null,
var verticalAlignment: String? = null,
@@ -21,3 +24,5 @@ class LazyRowProperty(
rowProperty?.repeat?.let { repeat = it }
}
}
@Parcelize data class LazyRowConstraints(val fillWidth: Boolean? = null) : Parcelable

View File

@@ -126,7 +126,8 @@ class UiTronShapeData : UiTronShape()
data class ParentConstraints(
var rowConstraints: RowConstraints? = null,
var columnConstraints: ColumnConstraints? = null,
var boxConstraints: BoxConstraints? = null
var boxConstraints: BoxConstraints? = null,
var lazyRowConstraints: LazyRowConstraints? = null
) : Parcelable
@Parcelize

View File

@@ -8,6 +8,7 @@
package com.navi.uitron.render
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
@@ -29,6 +30,7 @@ import com.navi.uitron.modifer.ModifierBuilder
import com.navi.uitron.utils.alfredMaskSensitiveComposable
import com.navi.uitron.utils.applyImpressionTracking
import com.navi.uitron.utils.clip
import com.navi.uitron.utils.constraintsToModifier
import com.navi.uitron.utils.customClickable
import com.navi.uitron.utils.customCombinedClick
import com.navi.uitron.utils.customOffset
@@ -150,15 +152,22 @@ class LazyRowRenderer(
}
) {
items(childrenComposeViews) { childrenView ->
if (childrenView.data.isNullOrEmpty()) {
uiTronRenderer.Render(listOf(childrenView))
} else {
UiTronRenderer(
childrenView.data,
uiTronViewModel,
uiTronRenderer.customUiTronRenderer
Box(
modifier =
constraintsToModifier(
childrenView.property?.parentConstraints?.lazyRowConstraints
)
.Render(listOf(childrenView))
) {
if (childrenView.data.isNullOrEmpty()) {
uiTronRenderer.Render(listOf(childrenView))
} else {
UiTronRenderer(
childrenView.data,
uiTronViewModel,
uiTronRenderer.customUiTronRenderer
)
.Render(listOf(childrenView))
}
}
}
}

View File

@@ -37,6 +37,7 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.lazy.LazyItemScope
import androidx.compose.foundation.lazy.LazyListState
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardOptions
@@ -117,6 +118,7 @@ import com.navi.uitron.model.ui.HorizontalAlignmentType
import com.navi.uitron.model.ui.HorizontalArrangementType
import com.navi.uitron.model.ui.InputTransformationType
import com.navi.uitron.model.ui.InteractionType
import com.navi.uitron.model.ui.LazyRowConstraints
import com.navi.uitron.model.ui.Offset as UiTronOffset
import com.navi.uitron.model.ui.OutlinedTextFieldKeyBoardOptions
import com.navi.uitron.model.ui.OutlinedTextFieldTextStyle
@@ -797,6 +799,15 @@ fun BoxScope.boxConstraintsToModifier(boxConstraints: BoxConstraints?): Modifier
}
}
@SuppressLint("ModifierFactoryExtensionFunction")
fun LazyItemScope.constraintsToModifier(lazyRowConstraints: LazyRowConstraints?): Modifier {
return Modifier.conditional(
lazyRowConstraints?.fillWidth != null && lazyRowConstraints.fillWidth == true
) {
fillParentMaxWidth()
}
}
@Composable
fun getBorderStrokeBrushData(
borderStrokeData: BorderStrokeData?,