design: update DropdownMenu to better match figma

This commit is contained in:
ganfra 2025-11-05 10:16:51 +01:00
parent 08227d4403
commit fb1e83fdf9

View file

@ -10,8 +10,10 @@ package io.element.android.libraries.designsystem.theme.components
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.PopupProperties import androidx.compose.ui.window.PopupProperties
@ -24,22 +26,24 @@ fun DropdownMenu(
expanded: Boolean, expanded: Boolean,
onDismissRequest: () -> Unit, onDismissRequest: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
// By default add a 16.dp offset to the menu offset: DpOffset = DpOffset(x = 0.dp, y = 0.dp),
offset: DpOffset = DpOffset(x = 16.dp, y = 0.dp),
properties: PopupProperties = PopupProperties(focusable = true), properties: PopupProperties = PopupProperties(focusable = true),
minWidth: Dp = DropdownMenuDefaults.minWidth,
content: @Composable ColumnScope.() -> Unit content: @Composable ColumnScope.() -> Unit
) { ) {
// Note: the internal shape corner radius should be 8dp, but there is a 4p value hardcoded in the internal Surface component
androidx.compose.material3.DropdownMenu( androidx.compose.material3.DropdownMenu(
expanded = expanded, expanded = expanded,
onDismissRequest = onDismissRequest, onDismissRequest = onDismissRequest,
modifier = modifier modifier = modifier
.background(color = ElementTheme.colors.bgCanvasDefault) .background(color = ElementTheme.colors.bgCanvasDefaultLevel1)
.widthIn(min = minMenuWidth), .widthIn(min = minWidth),
shape = RoundedCornerShape(8.dp),
offset = offset, offset = offset,
properties = properties, properties = properties,
content = content content = content
) )
} }
private val minMenuWidth = 200.dp object DropdownMenuDefaults {
val minWidth = 200.dp
}