feat: customization placeholderContentColor in TextField

This commit is contained in:
2023-11-28 23:52:43 +08:00
parent 3c8a83e5bc
commit 9435ec65a0

View File

@@ -104,6 +104,7 @@ data class TextFieldColors(
val cursorColor: Color, val cursorColor: Color,
val selectionColors: TextSelectionColors, val selectionColors: TextSelectionColors,
val completionColors: AutoCompleteBoxColors, val completionColors: AutoCompleteBoxColors,
val placeholderContentColor: Color,
val decorInactiveTint: Color, val decorInactiveTint: Color,
val decorActiveTint: Color, val decorActiveTint: Color,
val borderInactiveColor: Color, val borderInactiveColor: Color,
@@ -224,6 +225,7 @@ fun TextField(
decorationBox = { decorationBox = {
TextFieldDecorationBox( TextFieldDecorationBox(
value = value.text, value = value.text,
placeholderContentColor = colors.placeholderContentColor,
placeholder = placeholder, placeholder = placeholder,
innerTextField = it innerTextField = it
) )
@@ -682,13 +684,14 @@ private fun InnerDecorationBox(
@Composable @Composable
private fun TextFieldDecorationBox( private fun TextFieldDecorationBox(
value: String, value: String,
placeholderContentColor: Color,
placeholder: @Composable () -> Unit, placeholder: @Composable () -> Unit,
innerTextField: @Composable () -> Unit innerTextField: @Composable () -> Unit
) { ) {
val animatedAlpha by animateFloatAsState(if (value.isNotEmpty()) 0f else 1f) val animatedAlpha by animateFloatAsState(if (value.isNotEmpty()) 0f else 1f)
Box(modifier = Modifier.alpha(animatedAlpha)) { Box(modifier = Modifier.alpha(animatedAlpha)) {
CompositionLocalProvider( CompositionLocalProvider(
LocalTextStyle provides LocalTextStyle.current.default(LocalColors.current.textSecondary) LocalTextStyle provides LocalTextStyle.current.default(placeholderContentColor)
) { placeholder() } ) { placeholder() }
} }
innerTextField() innerTextField()
@@ -776,6 +779,7 @@ private fun defaultTextFieldColors() = TextFieldColors(
highlightContentColor = LocalColors.current.themePrimary, highlightContentColor = LocalColors.current.themePrimary,
menuColors = DropdownMenu.colors menuColors = DropdownMenu.colors
), ),
placeholderContentColor = LocalColors.current.textSecondary,
decorInactiveTint = LocalColors.current.themeSecondary, decorInactiveTint = LocalColors.current.themeSecondary,
decorActiveTint = LocalColors.current.themePrimary, decorActiveTint = LocalColors.current.themePrimary,
borderInactiveColor = LocalColors.current.themeSecondary, borderInactiveColor = LocalColors.current.themeSecondary,