2022-06-25 22:03:48 +07:00
|
|
|
package eu.kanade.presentation.components
|
|
|
|
|
|
|
|
import androidx.compose.foundation.BorderStroke
|
|
|
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
|
|
|
import androidx.compose.foundation.layout.Arrangement
|
|
|
|
import androidx.compose.foundation.layout.PaddingValues
|
|
|
|
import androidx.compose.foundation.layout.Row
|
|
|
|
import androidx.compose.foundation.layout.RowScope
|
|
|
|
import androidx.compose.foundation.layout.defaultMinSize
|
|
|
|
import androidx.compose.foundation.layout.padding
|
|
|
|
import androidx.compose.material3.ButtonColors
|
|
|
|
import androidx.compose.material3.ButtonDefaults
|
|
|
|
import androidx.compose.material3.ButtonElevation
|
|
|
|
import androidx.compose.material3.LocalContentColor
|
|
|
|
import androidx.compose.material3.MaterialTheme
|
|
|
|
import androidx.compose.material3.ProvideTextStyle
|
|
|
|
import androidx.compose.runtime.Composable
|
|
|
|
import androidx.compose.runtime.CompositionLocalProvider
|
|
|
|
import androidx.compose.runtime.remember
|
|
|
|
import androidx.compose.ui.Alignment
|
|
|
|
import androidx.compose.ui.Modifier
|
|
|
|
import androidx.compose.ui.graphics.Shape
|
|
|
|
import androidx.compose.ui.unit.dp
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
fun TextButton(
|
|
|
|
onClick: () -> Unit,
|
|
|
|
modifier: Modifier = Modifier,
|
|
|
|
onLongClick: (() -> Unit)? = null,
|
|
|
|
enabled: Boolean = true,
|
|
|
|
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
|
|
|
elevation: ButtonElevation? = null,
|
2022-07-29 23:13:40 -04:00
|
|
|
shape: Shape = ButtonDefaults.textShape,
|
2022-06-25 22:03:48 +07:00
|
|
|
border: BorderStroke? = null,
|
|
|
|
colors: ButtonColors = ButtonDefaults.textButtonColors(),
|
|
|
|
contentPadding: PaddingValues = ButtonDefaults.TextButtonContentPadding,
|
|
|
|
content: @Composable RowScope.() -> Unit,
|
|
|
|
) =
|
|
|
|
Button(
|
|
|
|
onClick = onClick,
|
|
|
|
modifier = modifier,
|
|
|
|
onLongClick = onLongClick,
|
|
|
|
enabled = enabled,
|
|
|
|
interactionSource = interactionSource,
|
|
|
|
elevation = elevation,
|
|
|
|
shape = shape,
|
|
|
|
border = border,
|
|
|
|
colors = colors,
|
|
|
|
contentPadding = contentPadding,
|
|
|
|
content = content,
|
|
|
|
)
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
fun Button(
|
|
|
|
onClick: () -> Unit,
|
|
|
|
modifier: Modifier = Modifier,
|
|
|
|
onLongClick: (() -> Unit)? = null,
|
|
|
|
enabled: Boolean = true,
|
|
|
|
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
|
|
|
|
elevation: ButtonElevation? = ButtonDefaults.buttonElevation(),
|
2022-07-29 23:13:40 -04:00
|
|
|
shape: Shape = ButtonDefaults.textShape,
|
2022-06-25 22:03:48 +07:00
|
|
|
border: BorderStroke? = null,
|
|
|
|
colors: ButtonColors = ButtonDefaults.buttonColors(),
|
|
|
|
contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
|
|
|
|
content: @Composable RowScope.() -> Unit,
|
|
|
|
) {
|
|
|
|
val containerColor = colors.containerColor(enabled).value
|
|
|
|
val contentColor = colors.contentColor(enabled).value
|
|
|
|
val shadowElevation = elevation?.shadowElevation(enabled, interactionSource)?.value ?: 0.dp
|
|
|
|
val tonalElevation = elevation?.tonalElevation(enabled, interactionSource)?.value ?: 0.dp
|
|
|
|
|
|
|
|
Surface(
|
|
|
|
onClick = onClick,
|
|
|
|
modifier = modifier,
|
|
|
|
onLongClick = onLongClick,
|
|
|
|
shape = shape,
|
|
|
|
color = containerColor,
|
|
|
|
contentColor = contentColor,
|
|
|
|
tonalElevation = tonalElevation,
|
|
|
|
shadowElevation = shadowElevation,
|
|
|
|
border = border,
|
|
|
|
interactionSource = interactionSource,
|
|
|
|
enabled = enabled,
|
|
|
|
) {
|
|
|
|
CompositionLocalProvider(LocalContentColor provides contentColor) {
|
|
|
|
ProvideTextStyle(value = MaterialTheme.typography.labelLarge) {
|
|
|
|
Row(
|
|
|
|
Modifier.defaultMinSize(
|
|
|
|
minWidth = ButtonDefaults.MinWidth,
|
|
|
|
minHeight = ButtonDefaults.MinHeight,
|
|
|
|
)
|
|
|
|
.padding(contentPadding),
|
|
|
|
horizontalArrangement = Arrangement.Center,
|
|
|
|
verticalAlignment = Alignment.CenterVertically,
|
|
|
|
content = content,
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|