Update drawer

This commit is contained in:
Sad Ellie 2023-10-13 11:50:35 +03:00
parent 9e80613794
commit 4e28cdecc5
2 changed files with 39 additions and 11 deletions

View File

@ -19,7 +19,7 @@
package com.sadellie.unitto.core.ui.common package com.sadellie.unitto.core.ui.common
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.automirrored.outlined.MenuOpen import androidx.compose.material.icons.outlined.Menu
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@ -35,7 +35,7 @@ import com.sadellie.unitto.core.base.R
fun MenuButton(onClick: () -> Unit) { fun MenuButton(onClick: () -> Unit) {
IconButton(onClick = onClick) { IconButton(onClick = onClick) {
Icon( Icon(
Icons.AutoMirrored.Outlined.MenuOpen, Icons.Outlined.Menu,
contentDescription = stringResource(R.string.open_menu_description) contentDescription = stringResource(R.string.open_menu_description)
) )
} }

View File

@ -18,38 +18,66 @@
package com.sadellie.unitto.core.ui.common package com.sadellie.unitto.core.ui.common
import androidx.compose.animation.AnimatedContent
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalDrawerSheet import androidx.compose.material3.ModalDrawerSheet
import androidx.compose.material3.NavigationDrawerItemDefaults import androidx.compose.material3.NavigationDrawerItemDefaults
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.sadellie.unitto.core.base.R import com.sadellie.unitto.core.base.R
import com.sadellie.unitto.core.base.TopLevelDestinations import com.sadellie.unitto.core.base.TopLevelDestinations
import com.sadellie.unitto.core.ui.model.DrawerItems import com.sadellie.unitto.core.ui.model.DrawerItems
import kotlinx.coroutines.delay
@Composable @Composable
fun UnittoDrawerSheet( fun UnittoDrawerSheet(
modifier: Modifier, modifier: Modifier,
tabs: List<DrawerItems>, tabs: List<DrawerItems>,
currentDestination: String?, currentDestination: String?,
onItemClick: (TopLevelDestinations) -> Unit onItemClick: (TopLevelDestinations) -> Unit,
) { ) {
var showHello by remember { mutableStateOf(false) }
val interactionSource = remember {
MutableInteractionSource()
}
LaunchedEffect(showHello) {
if (showHello) {
delay(2000)
showHello = false
}
}
ModalDrawerSheet( ModalDrawerSheet(
modifier = modifier modifier = modifier
) { ) {
Text( AnimatedContent(
text = stringResource(R.string.app_name).uppercase(), targetState = showHello,
modifier = Modifier.padding(horizontal = 28.dp, vertical = 24.dp), modifier = Modifier.clickable(
style = MaterialTheme.typography.titleLarge.copy(fontWeight = FontWeight.Medium, letterSpacing = 2.sp), interactionSource = interactionSource,
color = MaterialTheme.colorScheme.primary indication = null,
) onClick = { showHello = true }
)
) { hello ->
Text(
text = if (hello) stringResource(R.string.hello_label) else stringResource(R.string.app_name).uppercase(),
modifier = Modifier.padding(horizontal = 28.dp, vertical = 24.dp),
style = MaterialTheme.typography.titleLarge,
color = MaterialTheme.colorScheme.primary
)
}
tabs.forEach { drawerItem -> tabs.forEach { drawerItem ->
val selected = drawerItem.destination.start == currentDestination val selected = drawerItem.destination.start == currentDestination