mirror of
https://github.com/bitwarden/android.git
synced 2025-02-17 12:30:00 +03:00
Add underlying pull-to-refresh support to BitwardenScaffold (#610)
This commit is contained in:
parent
d6d179a27f
commit
18af449e1f
2 changed files with 28 additions and 2 deletions
|
@ -1,22 +1,30 @@
|
|||
package com.x8bit.bitwarden.ui.platform.components
|
||||
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.WindowInsets
|
||||
import androidx.compose.foundation.layout.exclude
|
||||
import androidx.compose.foundation.layout.navigationBars
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.FabPosition
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.material3.ScaffoldDefaults
|
||||
import androidx.compose.material3.contentColorFor
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshContainer
|
||||
import androidx.compose.material3.pulltorefresh.PullToRefreshState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
|
||||
/**
|
||||
* Direct passthrough to [Scaffold] but contains a few specific override values. Everything is
|
||||
* still overridable if necessary.
|
||||
*/
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Composable
|
||||
fun BitwardenScaffold(
|
||||
modifier: Modifier = Modifier,
|
||||
|
@ -25,6 +33,7 @@ fun BitwardenScaffold(
|
|||
snackbarHost: @Composable () -> Unit = { },
|
||||
floatingActionButton: @Composable () -> Unit = { },
|
||||
floatingActionButtonPosition: FabPosition = FabPosition.End,
|
||||
pullToRefreshState: PullToRefreshState? = null,
|
||||
containerColor: Color = MaterialTheme.colorScheme.surface,
|
||||
contentColor: Color = contentColorFor(containerColor),
|
||||
contentWindowInsets: WindowInsets = ScaffoldDefaults
|
||||
|
@ -33,7 +42,9 @@ fun BitwardenScaffold(
|
|||
content: @Composable (PaddingValues) -> Unit,
|
||||
) {
|
||||
Scaffold(
|
||||
modifier = modifier,
|
||||
modifier = Modifier
|
||||
.run { pullToRefreshState?.let { nestedScroll(it.nestedScrollConnection) } ?: this }
|
||||
.then(modifier),
|
||||
topBar = topBar,
|
||||
bottomBar = bottomBar,
|
||||
snackbarHost = snackbarHost,
|
||||
|
@ -42,6 +53,19 @@ fun BitwardenScaffold(
|
|||
containerColor = containerColor,
|
||||
contentColor = contentColor,
|
||||
contentWindowInsets = contentWindowInsets,
|
||||
content = content,
|
||||
content = { paddingValues ->
|
||||
Box {
|
||||
content(paddingValues)
|
||||
|
||||
pullToRefreshState?.let {
|
||||
PullToRefreshContainer(
|
||||
state = it,
|
||||
modifier = Modifier
|
||||
.padding(paddingValues)
|
||||
.align(Alignment.TopCenter),
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.navigationBars
|
|||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.statusBars
|
||||
import androidx.compose.material3.BottomAppBar
|
||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||
import androidx.compose.material3.Icon
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.material3.NavigationBarItem
|
||||
|
@ -139,6 +140,7 @@ fun VaultUnlockedNavBarScreen(
|
|||
* Scaffold that contains the bottom nav bar for the [VaultUnlockedNavBarScreen]
|
||||
*/
|
||||
@Composable
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
@Suppress("LongMethod")
|
||||
private fun VaultUnlockedNavBarScaffold(
|
||||
navController: NavHostController,
|
||||
|
|
Loading…
Add table
Reference in a new issue