Dedupe common LazyColumn with action at bottom layout

This commit is contained in:
arkon
2023-12-30 20:07:45 -05:00
parent 901b77f55c
commit 1cdaa761b7
5 changed files with 122 additions and 145 deletions

View File

@ -0,0 +1,52 @@
package tachiyomi.presentation.core.components
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.material3.Button
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
@Composable
fun LazyColumnWithAction(
contentPadding: PaddingValues,
actionLabel: String,
onClickAction: () -> Unit,
modifier: Modifier = Modifier,
actionEnabled: Boolean = true,
content: LazyListScope.() -> Unit,
) {
Column(
modifier = modifier
.padding(contentPadding)
.fillMaxSize(),
) {
LazyColumn(
modifier = Modifier.weight(1f),
content = content,
)
HorizontalDivider()
Button(
modifier = Modifier
.padding(horizontal = 16.dp, vertical = 8.dp)
.fillMaxWidth(),
enabled = actionEnabled,
onClick = onClickAction,
) {
Text(
text = actionLabel,
color = MaterialTheme.colorScheme.onPrimary,
)
}
}
}

View File

@ -1,6 +1,7 @@
package tachiyomi.presentation.core.components
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyItemScope
@ -16,7 +17,7 @@ import tachiyomi.presentation.core.i18n.stringResource
@Composable
fun LazyItemScope.SectionCard(
titleRes: StringResource? = null,
content: @Composable () -> Unit,
content: @Composable ColumnScope.() -> Unit,
) {
if (titleRes != null) {
Text(