use dialog instead of bottom sheet in filter saved movies stuff
This commit is contained in:
+17
-23
@@ -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.clickable
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.Spacer
|
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
|
import androidx.compose.material3.AlertDialog
|
||||||
import androidx.compose.material3.Checkbox
|
import androidx.compose.material3.Checkbox
|
||||||
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.MaterialTheme
|
||||||
import androidx.compose.material3.ModalBottomSheet
|
|
||||||
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
|
||||||
import androidx.compose.material3.rememberModalBottomSheetState
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
@@ -72,7 +69,7 @@ fun SavedMovieScreen(comp: SavedMovieScreenComponent, route: Route, onNavigate:
|
|||||||
onNavigate = onNavigate,
|
onNavigate = onNavigate,
|
||||||
content = {
|
content = {
|
||||||
if (filterBottomSheetVisible) {
|
if (filterBottomSheetVisible) {
|
||||||
FilterBottomSheet(
|
FilterDialog(
|
||||||
comp.filterTag,
|
comp.filterTag,
|
||||||
tags,
|
tags,
|
||||||
{ filterBottomSheetVisible = false },
|
{ filterBottomSheetVisible = false },
|
||||||
@@ -100,31 +97,27 @@ private fun SavedMovieContent(comp: SavedMovieScreenComponent, paddingValues: Pa
|
|||||||
|
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
private fun FilterBottomSheet(
|
private fun FilterDialog(
|
||||||
filterTag: String?,
|
filterTag: String?,
|
||||||
allTags: List<TagInfo>?,
|
allTags: List<TagInfo>?,
|
||||||
onDismiss: () -> Unit,
|
onDismiss: () -> Unit,
|
||||||
onFilterBy: (String?) -> Unit
|
onFilterBy: (String?) -> Unit
|
||||||
) {
|
) {
|
||||||
allTags ?: return
|
allTags ?: return
|
||||||
ModalBottomSheet(
|
AlertDialog(
|
||||||
onDismissRequest = onDismiss,
|
onDismissRequest = onDismiss,
|
||||||
sheetState = rememberModalBottomSheetState(true)
|
title = {
|
||||||
) {
|
|
||||||
LazyColumn(modifier = Modifier.padding(8.dp)) {
|
|
||||||
item {
|
|
||||||
Text(
|
Text(
|
||||||
text = stringResource(Res.string.user_tags),
|
text = stringResource(Res.string.user_tags),
|
||||||
style = MaterialTheme.typography.titleLarge
|
style = MaterialTheme.typography.titleLarge
|
||||||
)
|
)
|
||||||
}
|
},
|
||||||
item {
|
text = {
|
||||||
Spacer(Modifier.height(8.dp))
|
LazyColumn(modifier = Modifier.fillMaxWidth()) {
|
||||||
}
|
|
||||||
item {
|
item {
|
||||||
FilterItemCheckBox(
|
FilterItemCheckBox(
|
||||||
filterTag == null,
|
isChecked = filterTag == null,
|
||||||
stringResource(Res.string.user_tags_filter_disable)
|
name = stringResource(Res.string.user_tags_filter_disable)
|
||||||
) {
|
) {
|
||||||
onFilterBy(null)
|
onFilterBy(null)
|
||||||
onDismiss()
|
onDismiss()
|
||||||
@@ -135,15 +128,17 @@ private fun FilterBottomSheet(
|
|||||||
key = { tag -> tag.id ?: tag.tag }
|
key = { tag -> tag.id ?: tag.tag }
|
||||||
) { tag ->
|
) { tag ->
|
||||||
FilterItemCheckBox(
|
FilterItemCheckBox(
|
||||||
filterTag == tag.tag,
|
isChecked = filterTag == tag.tag,
|
||||||
tag.tag
|
name = tag.tag
|
||||||
) {
|
) {
|
||||||
onFilterBy(tag.tag)
|
onFilterBy(tag.tag)
|
||||||
onDismiss()
|
onDismiss()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
confirmButton = {}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@@ -155,13 +150,12 @@ private fun FilterItemCheckBox(
|
|||||||
Row(
|
Row(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.clickable { onFilterChanged() }
|
.clickable { onFilterChanged() },
|
||||||
.padding(vertical = 4.dp),
|
|
||||||
verticalAlignment = Alignment.CenterVertically
|
verticalAlignment = Alignment.CenterVertically
|
||||||
) {
|
) {
|
||||||
Text(
|
Text(
|
||||||
text = name,
|
text = name,
|
||||||
modifier = Modifier.weight(1f),
|
modifier = Modifier.weight(1f).padding(start = 8.dp),
|
||||||
style = MaterialTheme.typography.bodyLarge
|
style = MaterialTheme.typography.bodyLarge
|
||||||
)
|
)
|
||||||
Checkbox(
|
Checkbox(
|
||||||
|
|||||||
Reference in New Issue
Block a user