Skip to content

Commit a721167

Browse files
committed
Add ModalBottomSheet3Sample sample
1 parent 14ab142 commit a721167

File tree

1 file changed

+42
-3
lines changed

1 file changed

+42
-3
lines changed

compose/mpp/demo/src/commonMain/kotlin/androidx/compose/mpp/demo/PopupAndDialog.kt

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import androidx.compose.material3.DropdownMenu as DropdownMenu3
66
import androidx.compose.material3.DropdownMenuItem as DropdownMenuItem3
77
import androidx.compose.material3.ExposedDropdownMenuBox as ExposedDropdownMenuBox3
88
import androidx.compose.material3.ExposedDropdownMenuDefaults as ExposedDropdownMenuDefaults3
9-
import androidx.compose.material3.TextField as TextField3
109
import androidx.compose.material3.Text as Text3
10+
import androidx.compose.material3.TextField as TextField3
1111
import androidx.compose.foundation.background
1212
import androidx.compose.foundation.border
1313
import androidx.compose.foundation.horizontalScroll
@@ -20,6 +20,7 @@ import androidx.compose.foundation.layout.fillMaxSize
2020
import androidx.compose.foundation.layout.padding
2121
import androidx.compose.foundation.layout.size
2222
import androidx.compose.foundation.layout.width
23+
import androidx.compose.foundation.lazy.LazyColumn
2324
import androidx.compose.foundation.rememberScrollState
2425
import androidx.compose.foundation.shape.RoundedCornerShape
2526
import androidx.compose.foundation.verticalScroll
@@ -35,11 +36,16 @@ import androidx.compose.material.Surface
3536
import androidx.compose.material.Text
3637
import androidx.compose.material.TextField
3738
import androidx.compose.material3.ExperimentalMaterial3Api
39+
import androidx.compose.material3.ListItem
40+
import androidx.compose.material3.ModalBottomSheet
41+
import androidx.compose.material3.rememberModalBottomSheetState
3842
import androidx.compose.mpp.demo.textfield.android.loremIpsum
3943
import androidx.compose.runtime.Composable
4044
import androidx.compose.runtime.getValue
4145
import androidx.compose.runtime.mutableStateOf
4246
import androidx.compose.runtime.remember
47+
import androidx.compose.runtime.rememberCoroutineScope
48+
import androidx.compose.runtime.saveable.rememberSaveable
4349
import androidx.compose.runtime.setValue
4450
import androidx.compose.ui.Alignment
4551
import androidx.compose.ui.Modifier
@@ -50,6 +56,7 @@ import androidx.compose.ui.window.Dialog
5056
import androidx.compose.ui.window.DialogProperties
5157
import androidx.compose.ui.window.Popup
5258
import androidx.compose.ui.window.PopupProperties
59+
import kotlinx.coroutines.launch
5360

5461
@Composable
5562
fun PopupAndDialog() {
@@ -63,6 +70,7 @@ fun PopupAndDialog() {
6370
DialogSamples()
6471
AlertDialogSample()
6572
AlertDialog3Sample()
73+
ModalBottomSheet3Sample()
6674
DropdownMenuSample()
6775
DropdownMenu3Sample()
6876
ExposedDropdownMenuSample()
@@ -301,6 +309,37 @@ private fun DialogSample(
301309
}
302310
}
303311

312+
@OptIn(ExperimentalMaterial3Api::class)
313+
@Composable
314+
private fun ModalBottomSheet3Sample() {
315+
var openBottomSheet by rememberSaveable { mutableStateOf(false) }
316+
val scope = rememberCoroutineScope()
317+
val bottomSheetState = rememberModalBottomSheetState()
318+
Button3(onClick = { openBottomSheet = true }) {
319+
Text3(text = "ModalBottomSheet3")
320+
}
321+
if (openBottomSheet) {
322+
ModalBottomSheet(
323+
onDismissRequest = { openBottomSheet = false },
324+
sheetState = bottomSheetState
325+
) {
326+
Button3(onClick = {
327+
scope.launch {
328+
bottomSheetState.hide()
329+
openBottomSheet = false
330+
}
331+
}) {
332+
Text3("Hide")
333+
}
334+
LazyColumn {
335+
items(30) {
336+
ListItem({ Text("Item $it") })
337+
}
338+
}
339+
}
340+
}
341+
}
342+
304343
@Composable
305344
private fun DropdownMenuSample() {
306345
val horizontalScrollState = rememberScrollState()
@@ -374,7 +413,7 @@ private fun DropdownMenu3Sample() {
374413

375414
@OptIn(ExperimentalMaterialApi::class)
376415
@Composable
377-
fun ExposedDropdownMenuSample() {
416+
private fun ExposedDropdownMenuSample() {
378417
val options = List(5) { "Item $it" }
379418
var expanded by remember { mutableStateOf(false) }
380419
var selectedOptionText by remember { mutableStateOf(options[0]) }
@@ -410,7 +449,7 @@ fun ExposedDropdownMenuSample() {
410449

411450
@OptIn(ExperimentalMaterial3Api::class)
412451
@Composable
413-
fun ExposedDropdownMenu3Sample() {
452+
private fun ExposedDropdownMenu3Sample() {
414453
val options = List(5) { "Item $it" }
415454
var expanded by remember { mutableStateOf(false) }
416455
var selectedOptionText by remember { mutableStateOf(options[0]) }

0 commit comments

Comments
 (0)