Browse Source

Merge pull request #1112 from vector-im/feature/bma/fixButtonTheme

Fix button theme
pull/1126/head
Benoit Marty 1 year ago committed by GitHub
parent
commit
6822e6dacb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 48
      libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt
  2. BIN
      tests/uitests/src/test/snapshots/images/ui_S_t[l.designsystem.theme.components_null_Buttons_TextButtonLarge_0_null,NEXUS_5,1.0,en].png
  3. BIN
      tests/uitests/src/test/snapshots/images/ui_S_t[l.designsystem.theme.components_null_Buttons_TextButtonMedium_0_null,NEXUS_5,1.0,en].png

48
libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/theme/components/Button.kt

@ -23,6 +23,7 @@ import androidx.compose.foundation.layout.Column @@ -23,6 +23,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.padding
@ -133,32 +134,46 @@ internal fun ButtonInternal( @@ -133,32 +134,46 @@ internal fun ButtonInternal(
ButtonSize.Large -> 48.dp
}
val hasStartDrawable = showProgress || leadingIcon != null
val contentPadding = when (size) {
ButtonSize.Medium -> {
when (style) {
ButtonStyle.Text -> PaddingValues(horizontal = 12.dp, vertical = 10.dp)
else -> PaddingValues(horizontal = 16.dp, vertical = 10.dp)
}
ButtonSize.Medium -> when (style) {
ButtonStyle.Filled,
ButtonStyle.Outlined -> if (hasStartDrawable)
PaddingValues(start = 16.dp, top = 10.dp, end = 24.dp, bottom = 10.dp)
else
PaddingValues(start = 24.dp, top = 10.dp, end = 24.dp, bottom = 10.dp)
ButtonStyle.Text -> if (hasStartDrawable)
PaddingValues(start = 12.dp, top = 10.dp, end = 16.dp, bottom = 10.dp)
else
PaddingValues(start = 12.dp, top = 10.dp, end = 12.dp, bottom = 10.dp)
}
ButtonSize.Large -> {
when (style) {
ButtonStyle.Text -> PaddingValues(horizontal = 16.dp, vertical = 13.dp)
else -> PaddingValues(horizontal = 24.dp, vertical = 13.dp)
}
ButtonSize.Large -> when (style) {
ButtonStyle.Filled,
ButtonStyle.Outlined -> if (hasStartDrawable)
PaddingValues(start = 24.dp, top = 13.dp, end = 32.dp, bottom = 13.dp)
else
PaddingValues(start = 32.dp, top = 13.dp, end = 32.dp, bottom = 13.dp)
ButtonStyle.Text -> if (hasStartDrawable)
PaddingValues(start = 12.dp, top = 13.dp, end = 16.dp, bottom = 13.dp)
else
PaddingValues(start = 16.dp, top = 13.dp, end = 16.dp, bottom = 13.dp)
}
}
val shape = when (style) {
ButtonStyle.Filled, ButtonStyle.Outlined -> RoundedCornerShape(percent = 50)
ButtonStyle.Filled,
ButtonStyle.Outlined -> RoundedCornerShape(percent = 50)
ButtonStyle.Text -> RectangleShape
}
val border = when (style) {
ButtonStyle.Filled, ButtonStyle.Text -> null
ButtonStyle.Filled -> null
ButtonStyle.Outlined -> BorderStroke(
width = 1.dp,
color = ElementTheme.colors.borderInteractiveSecondary
)
ButtonStyle.Text -> null
}
val textStyle = when (size) {
@ -166,11 +181,6 @@ internal fun ButtonInternal( @@ -166,11 +181,6 @@ internal fun ButtonInternal(
ButtonSize.Large -> ElementTheme.typography.fontBodyLgMedium
}
val internalPadding = when {
style == ButtonStyle.Text -> if (leadingIcon != null) PaddingValues(start = 8.dp) else PaddingValues(0.dp)
else -> PaddingValues(horizontal = 8.dp)
}
androidx.compose.material3.Button(
onClick = {
if (!showProgress) {
@ -195,6 +205,7 @@ internal fun ButtonInternal( @@ -195,6 +205,7 @@ internal fun ButtonInternal(
color = LocalContentColor.current,
strokeWidth = 2.dp,
)
Spacer(modifier = Modifier.width(8.dp))
}
leadingIcon != null -> {
androidx.compose.material.Icon(
@ -203,15 +214,14 @@ internal fun ButtonInternal( @@ -203,15 +214,14 @@ internal fun ButtonInternal(
tint = LocalContentColor.current,
modifier = Modifier.size(20.dp),
)
Spacer(modifier = Modifier.width(8.dp))
}
else -> Unit
}
Text(
text = text,
style = textStyle,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier.padding(internalPadding),
)
}
}

BIN
tests/uitests/src/test/snapshots/images/ui_S_t[l.designsystem.theme.components_null_Buttons_TextButtonLarge_0_null,NEXUS_5,1.0,en].png (Stored with Git LFS)

Binary file not shown.

BIN
tests/uitests/src/test/snapshots/images/ui_S_t[l.designsystem.theme.components_null_Buttons_TextButtonMedium_0_null,NEXUS_5,1.0,en].png (Stored with Git LFS)

Binary file not shown.
Loading…
Cancel
Save