fix(compose): adjust APSAppBar API and add previews

This commit is contained in:
Harsh Shandilya 2024-05-28 15:03:31 +05:30
parent 6239809964
commit c33d1100b7

View file

@ -1,8 +1,11 @@
package app.passwordstore.ui package app.passwordstore.ui
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.TopAppBarDefaults
@ -11,7 +14,11 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow import androidx.compose.ui.draw.shadow
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.graphics.vector.rememberVectorPainter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import app.passwordstore.ui.compose.preview.DevicePreviews
import app.passwordstore.ui.compose.preview.ThemePreviews
import app.passwordstore.ui.compose.theme.APSTheme
@Composable @Composable
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@ -19,14 +26,14 @@ public fun APSAppBar(
title: String, title: String,
backgroundColor: Color, backgroundColor: Color,
navigationIcon: Painter?, navigationIcon: Painter?,
onNavigationIconClick: (() -> Unit)?,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
onNavigationIconClick: (() -> Unit) = {},
) { ) {
TopAppBar( TopAppBar(
title = { Text(text = title) }, title = { Text(text = title) },
navigationIcon = { navigationIcon = {
if (navigationIcon != null) { if (navigationIcon != null) {
IconButton(onClick = { onNavigationIconClick?.invoke() }) { IconButton(onClick = { onNavigationIconClick.invoke() }) {
Icon( Icon(
painter = navigationIcon, painter = navigationIcon,
contentDescription = null, contentDescription = null,
@ -38,3 +45,16 @@ public fun APSAppBar(
modifier = modifier.shadow(8.dp), modifier = modifier.shadow(8.dp),
) )
} }
@ThemePreviews
@DevicePreviews
@Composable
private fun APSAppBarPreview() {
APSTheme {
APSAppBar(
title = "Preview",
backgroundColor = MaterialTheme.colorScheme.surface,
navigationIcon = rememberVectorPainter(Icons.AutoMirrored.Filled.ArrowBack),
)
}
}