1717package  com.example.compose.snippets.adaptivelayouts 
1818
1919import  androidx.compose.foundation.background 
20+ import  androidx.compose.foundation.layout.Column 
21+ import  androidx.compose.foundation.layout.padding 
2022import  androidx.compose.foundation.layout.safeContentPadding 
2123import  androidx.compose.foundation.layout.wrapContentSize 
24+ import  androidx.compose.material.icons.Icons 
25+ import  androidx.compose.material.icons.filled.Close 
2226import  androidx.compose.material3.Button 
27+ import  androidx.compose.material3.Icon 
28+ import  androidx.compose.material3.IconButton 
2329import  androidx.compose.material3.Text 
2430import  androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi 
2531import  androidx.compose.material3.adaptive.layout.AnimatedPane 
@@ -30,13 +36,17 @@ import androidx.compose.material3.adaptive.layout.ThreePaneScaffoldPaneScope
3036import  androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole 
3137import  androidx.compose.material3.adaptive.navigation.BackNavigationBehavior 
3238import  androidx.compose.material3.adaptive.navigation.NavigableSupportingPaneScaffold 
39+ import  androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldNavigator 
3340import  androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldPredictiveBackHandler 
3441import  androidx.compose.material3.adaptive.navigation.rememberSupportingPaneScaffoldNavigator 
3542import  androidx.compose.runtime.Composable 
3643import  androidx.compose.runtime.rememberCoroutineScope 
44+ import  androidx.compose.ui.Alignment 
3745import  androidx.compose.ui.Modifier 
3846import  androidx.compose.ui.graphics.Color 
47+ import  androidx.compose.ui.tooling.preview.Devices.TABLET 
3948import  androidx.compose.ui.tooling.preview.Preview 
49+ import  androidx.compose.ui.unit.dp 
4050import  kotlinx.coroutines.launch 
4151
4252@OptIn(ExperimentalMaterial3AdaptiveApi ::class )
@@ -57,13 +67,20 @@ fun SampleNavigableSupportingPaneScaffoldParts() {
5767    //  [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_params]
5868}
5969
70+ @Composable
71+ @Preview(device =  TABLET )
72+ fun  SampleNavigationSupportingPaneScaffoldFullTabletPreview () {
73+     SampleNavigableSupportingPaneScaffoldFull ()
74+ }
75+ 
6076@OptIn(ExperimentalMaterial3AdaptiveApi ::class )
6177@Composable
6278@Preview
6379fun  SampleNavigableSupportingPaneScaffoldFull () {
6480    //  [START android_compose_adaptivelayouts_sample_supporting_pane_scaffold_full]
6581    val  scaffoldNavigator =  rememberSupportingPaneScaffoldNavigator()
6682    val  scope =  rememberCoroutineScope()
83+     val  backNavigationBehavior =  BackNavigationBehavior .PopUntilScaffoldValueChange 
6784
6885    NavigableSupportingPaneScaffold (
6986        navigator =  scaffoldNavigator,
@@ -92,7 +109,26 @@ fun SampleNavigableSupportingPaneScaffoldFull() {
92109        },
93110        supportingPane =  {
94111            AnimatedPane (modifier =  Modifier .safeContentPadding()) {
95-                 Text (" Supporting pane" 
112+                 Column  {
113+                     //  Allow users to dismiss the supporting pane. Use back navigation to
114+                     //  hide an expanded supporting pane.
115+                     if  (scaffoldNavigator.scaffoldValue[SupportingPaneScaffoldRole .Supporting ] ==  PaneAdaptedValue .Expanded ) {
116+                         //  Material design principles promote the usage of a right-aligned
117+                         //  close (X) button.
118+                         IconButton (
119+                             modifier =   Modifier .align(Alignment .End ).padding(16 .dp),
120+                             onClick =  {
121+                                 scope.launch {
122+                                     scaffoldNavigator.navigateBack(backNavigationBehavior)
123+                                 }
124+                             }
125+                         ) {
126+                             Icon (Icons .Default .Close , contentDescription =  " Close" 
127+                         }
128+                     }
129+                     Text (" Supporting pane" 
130+                 }
131+ 
96132            }
97133        }
98134    )
@@ -124,11 +160,32 @@ fun ThreePaneScaffoldPaneScope.MainPane(
124160@OptIn(ExperimentalMaterial3AdaptiveApi ::class )
125161@Composable
126162fun  ThreePaneScaffoldPaneScope.SupportingPane (
163+     scaffoldNavigator :  ThreePaneScaffoldNavigator <Any >,
127164    modifier :  Modifier  = Modifier ,
165+     backNavigationBehavior :  BackNavigationBehavior  = BackNavigationBehavior .PopUntilScaffoldValueChange ,
128166) {
129-     AnimatedPane (modifier =  modifier.safeContentPadding()) {
130-         //  Supporting pane content
131-         Text (" This is the supporting pane" 
167+     val  scope =  rememberCoroutineScope()
168+     AnimatedPane (modifier =  Modifier .safeContentPadding()) {
169+         Column  {
170+             //  Allow users to dismiss the supporting pane. Use back navigation to
171+             //  hide an expanded supporting pane.
172+             if  (scaffoldNavigator.scaffoldValue[SupportingPaneScaffoldRole .Supporting ] ==  PaneAdaptedValue .Expanded ) {
173+                 //  Material design principles promote the usage of a right-aligned
174+                 //  close (X) button.
175+                 IconButton (
176+                     modifier =   modifier.align(Alignment .End ).padding(16 .dp),
177+                     onClick =  {
178+                         scope.launch {
179+                             scaffoldNavigator.navigateBack(backNavigationBehavior)
180+                         }
181+                     }
182+                 ) {
183+                     Icon (Icons .Default .Close , contentDescription =  " Close" 
184+                 }
185+             }
186+             Text (" Supporting pane" 
187+         }
188+ 
132189    }
133190}
134191//  [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_extracted_panes]
@@ -152,7 +209,7 @@ fun SampleNavigableSupportingPaneScaffoldSimplified() {
152209                }
153210            )
154211        },
155-         supportingPane =  { SupportingPane () },
212+         supportingPane =  { SupportingPane (scaffoldNavigator  =  scaffoldNavigator ) },
156213    )
157214    //  [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_simplified]
158215}
@@ -182,7 +239,7 @@ fun SampleSupportingPaneScaffoldSimplifiedWithPredictiveBackHandler() {
182239                }
183240            )
184241        },
185-         supportingPane =  { SupportingPane () },
242+         supportingPane =  { SupportingPane (scaffoldNavigator  =  scaffoldNavigator ) },
186243    )
187244    //  [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_simplified_with_predictive_back_handler]
188245}
0 commit comments