NTP-20431 | Added LineHeight style to TextStyle (#678)

This commit is contained in:
Aparna Vadlamani
2025-01-28 19:04:09 +05:30
committed by GitHub
parent d53fa6fbe8
commit 37a79f1d55
4 changed files with 49 additions and 0 deletions

View File

@@ -29,6 +29,8 @@ open class TextProperty(
var valueTransformation: OutlinedTextFieldValueTransformation? = null,
var textShadow: TextShadow? = null,
var includeFontPadding: Boolean? = null,
var lineHeightAlignment: String? = null,
var lineHeightTrimStyle: String? = null,
) : BaseProperty() {
override fun copyNonNullFrom(property: BaseProperty?) {
super.copyNonNullFrom(property)
@@ -49,6 +51,8 @@ open class TextProperty(
textProperty?.valueTransformation?.let { valueTransformation = it }
textProperty?.textShadow?.let { textShadow = it }
textProperty?.includeFontPadding?.let { includeFontPadding = it }
textProperty?.lineHeightAlignment?.let { lineHeightAlignment = it }
textProperty?.lineHeightTrimStyle?.let { lineHeightTrimStyle = it }
}
data class TextShadow(

View File

@@ -356,6 +356,20 @@ enum class ContentAlignmentType {
BottomEnd,
}
enum class LineHeightAlignmentType {
Center,
Top,
Bottom,
Proportional,
}
enum class LineHeightTrimType {
Both,
None,
FirstLineTop,
LastLineBottom,
}
enum class ContentScaleType {
Crop,
FillBounds,

View File

@@ -20,6 +20,7 @@ import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.text.PlatformTextStyle
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.text.style.LineHeightStyle
import androidx.compose.ui.unit.TextUnit
import androidx.compose.ui.unit.em
import androidx.compose.ui.unit.sp
@@ -41,6 +42,8 @@ import com.navi.uitron.utils.customClickable
import com.navi.uitron.utils.customCombinedClick
import com.navi.uitron.utils.customOffset
import com.navi.uitron.utils.dpToPx
import com.navi.uitron.utils.getLineHeightAlignment
import com.navi.uitron.utils.getLineHeightTrimStyle
import com.navi.uitron.utils.getText
import com.navi.uitron.utils.getTextAlignment
import com.navi.uitron.utils.getTextDecoration
@@ -160,6 +163,11 @@ class TextRenderer : Renderer<TextProperty> {
PlatformTextStyle(
includeFontPadding = property.includeFontPadding.orTrue()
),
lineHeightStyle =
LineHeightStyle(
alignment = getLineHeightAlignment(property.lineHeightAlignment),
trim = getLineHeightTrimStyle(property.lineHeightTrimStyle),
),
),
modifier =
if (UiTronSdkManager.isModifierBuilderEnabled()) {

View File

@@ -76,6 +76,7 @@ import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.text.PlatformTextStyle
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.style.LineHeightStyle
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextDecoration
import androidx.compose.ui.text.style.TextOverflow
@@ -120,6 +121,8 @@ 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.LineHeightAlignmentType
import com.navi.uitron.model.ui.LineHeightTrimType
import com.navi.uitron.model.ui.Offset as UiTronOffset
import com.navi.uitron.model.ui.OutlinedTextFieldKeyBoardOptions
import com.navi.uitron.model.ui.OutlinedTextFieldTextStyle
@@ -665,6 +668,26 @@ fun String?.toDoubleWithSafe(): Double {
}
}
fun getLineHeightAlignment(alignment: String?): LineHeightStyle.Alignment {
return when (alignment) {
LineHeightAlignmentType.Center.name -> LineHeightStyle.Alignment.Center
LineHeightAlignmentType.Top.name -> LineHeightStyle.Alignment.Top
LineHeightAlignmentType.Proportional.name -> LineHeightStyle.Alignment.Proportional
LineHeightAlignmentType.Bottom.name -> LineHeightStyle.Alignment.Bottom
else -> LineHeightStyle.Alignment.Center
}
}
fun getLineHeightTrimStyle(trimStyle: String?): LineHeightStyle.Trim {
return when (trimStyle) {
LineHeightTrimType.None.name -> LineHeightStyle.Trim.None
LineHeightTrimType.Both.name -> LineHeightStyle.Trim.Both
LineHeightTrimType.LastLineBottom.name -> LineHeightStyle.Trim.LastLineBottom
LineHeightTrimType.FirstLineTop.name -> LineHeightStyle.Trim.FirstLineTop
else -> LineHeightStyle.Trim.None
}
}
fun getTextAlignment(textAlignment: String?): TextAlign {
return when (textAlignment) {
TextAlign.Start.toString() -> TextAlign.Start