diff --git a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/saved/SavedMovieScreen.kt b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/saved/SavedMovieScreen.kt index b07b3aa..623d100 100644 --- a/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/saved/SavedMovieScreen.kt +++ b/apps/vbox/client/shared/src/commonMain/kotlin/ru/shadowsparky/vbox/shared/presentation/saved/SavedMovieScreen.kt @@ -9,21 +9,18 @@ import androiddev.apps.vbox.client.shared.generated.resources.user_tags_filter_d import androidx.compose.foundation.clickable 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.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.items +import androidx.compose.material3.AlertDialog import androidx.compose.material3.Checkbox import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.ModalBottomSheet import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults -import androidx.compose.material3.rememberModalBottomSheetState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -72,7 +69,7 @@ fun SavedMovieScreen(comp: SavedMovieScreenComponent, route: Route, onNavigate: onNavigate = onNavigate, content = { if (filterBottomSheetVisible) { - FilterBottomSheet( + FilterDialog( comp.filterTag, tags, { filterBottomSheetVisible = false }, @@ -100,50 +97,48 @@ private fun SavedMovieContent(comp: SavedMovieScreenComponent, paddingValues: Pa @OptIn(ExperimentalMaterial3Api::class) @Composable -private fun FilterBottomSheet( +private fun FilterDialog( filterTag: String?, allTags: List?, onDismiss: () -> Unit, onFilterBy: (String?) -> Unit ) { allTags ?: return - ModalBottomSheet( + AlertDialog( onDismissRequest = onDismiss, - sheetState = rememberModalBottomSheetState(true) - ) { - LazyColumn(modifier = Modifier.padding(8.dp)) { - item { - Text( - text = stringResource(Res.string.user_tags), - style = MaterialTheme.typography.titleLarge - ) - } - item { - Spacer(Modifier.height(8.dp)) - } - item { - FilterItemCheckBox( - filterTag == null, - stringResource(Res.string.user_tags_filter_disable) - ) { - onFilterBy(null) - onDismiss() + title = { + Text( + text = stringResource(Res.string.user_tags), + style = MaterialTheme.typography.titleLarge + ) + }, + text = { + LazyColumn(modifier = Modifier.fillMaxWidth()) { + item { + FilterItemCheckBox( + isChecked = filterTag == null, + name = stringResource(Res.string.user_tags_filter_disable) + ) { + onFilterBy(null) + onDismiss() + } + } + items( + items = allTags.filter { it.id != null }, + key = { tag -> tag.id ?: tag.tag } + ) { tag -> + FilterItemCheckBox( + isChecked = filterTag == tag.tag, + name = tag.tag + ) { + onFilterBy(tag.tag) + onDismiss() + } } } - items( - items = allTags.filter { it.id != null }, - key = { tag -> tag.id ?: tag.tag } - ) { tag -> - FilterItemCheckBox( - filterTag == tag.tag, - tag.tag - ) { - onFilterBy(tag.tag) - onDismiss() - } - } - } - } + }, + confirmButton = {} + ) } @Composable @@ -155,13 +150,12 @@ private fun FilterItemCheckBox( Row( modifier = Modifier .fillMaxWidth() - .clickable { onFilterChanged() } - .padding(vertical = 4.dp), + .clickable { onFilterChanged() }, verticalAlignment = Alignment.CenterVertically ) { Text( text = name, - modifier = Modifier.weight(1f), + modifier = Modifier.weight(1f).padding(start = 8.dp), style = MaterialTheme.typography.bodyLarge ) Checkbox(