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