From acd0e02da1a177d01544c0ea2ec059fc8f270af3 Mon Sep 17 00:00:00 2001 From: kwzr Date: Wed, 29 Mar 2023 00:45:46 +0900 Subject: [PATCH 1/3] wip --- catalog/src/main/AndroidManifest.xml | 3 + .../catalog/compose/CatalogComposeActivity.kt | 5 + .../CharcoalDropdownComposeActivity.kt | 108 +++++++++++++++ .../component/dropdown/CharcoalDropdown.kt | 127 ++++++++++++++++++ .../component/textfield/CharcoalTextField.kt | 61 +++++++++ 5 files changed, 304 insertions(+) create mode 100644 catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CharcoalDropdownComposeActivity.kt create mode 100644 charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt create mode 100644 charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt diff --git a/catalog/src/main/AndroidManifest.xml b/catalog/src/main/AndroidManifest.xml index 321abbe..aae73a5 100644 --- a/catalog/src/main/AndroidManifest.xml +++ b/catalog/src/main/AndroidManifest.xml @@ -55,6 +55,9 @@ + \ No newline at end of file diff --git a/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CatalogComposeActivity.kt b/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CatalogComposeActivity.kt index fa45432..45a679e 100644 --- a/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CatalogComposeActivity.kt +++ b/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CatalogComposeActivity.kt @@ -52,6 +52,9 @@ class CatalogComposeActivity : AppCompatActivity() { RedirectPattern.Typography -> startActivity( CharcoalTypographyComposeActivity.createIntent(this) ) + RedirectPattern.Dropdown -> startActivity( + CharcoalDropdownComposeActivity.createIntent(this) + ) } } @@ -66,6 +69,7 @@ private sealed class RedirectPattern { object TopAppBar : RedirectPattern() object RadioButton : RedirectPattern() object Typography : RedirectPattern() + object Dropdown : RedirectPattern() } @Composable @@ -111,6 +115,7 @@ private fun BodyContent( ContentColumn(text = "TopAppBar", onClick = { onRedirect(RedirectPattern.TopAppBar) }) ContentColumn(text = "RadioButton", onClick = { onRedirect(RedirectPattern.RadioButton) }) ContentColumn(text = "Typography", onClick = { onRedirect(RedirectPattern.Typography) }) + ContentColumn(text = "Dropdown", onClick = { onRedirect(RedirectPattern.Dropdown) }) } } diff --git a/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CharcoalDropdownComposeActivity.kt b/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CharcoalDropdownComposeActivity.kt new file mode 100644 index 0000000..c00afc0 --- /dev/null +++ b/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CharcoalDropdownComposeActivity.kt @@ -0,0 +1,108 @@ +package net.pixiv.charcoal.android.catalog.compose + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import androidx.activity.compose.setContent +import androidx.appcompat.app.AppCompatActivity +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.ui.Modifier +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.tooling.preview.Preview +import net.pixiv.charcoal.android.compose.component.dropdown.CharcoalDropdown1 +import net.pixiv.charcoal.android.compose.component.dropdown.CharcoalDropdown2 +import net.pixiv.charcoal.android.compose.component.textfield.CharcoalTextField +import net.pixiv.charcoal.android.compose.component.topAppBar.CharcoalTopAppBar +import net.pixiv.charcoal.android.compose.theme.CharcoalTheme + +class CharcoalDropdownComposeActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + DropdownCatalog( + onNavigationClick = { finish() }, + ) + } + } + + companion object { + fun createIntent(context: Context): Intent { + return Intent(context, CharcoalDropdownComposeActivity::class.java) + } + } +} + +@Composable +private fun DropdownCatalog( + onNavigationClick: (() -> Unit), +) { + var selectedOption by remember { mutableStateOf("Apple") } + var options by remember { mutableStateOf(mutableListOf("Apple", "Orange", "Banana")) } + + var text by remember { mutableStateOf("Hoge") } + + CharcoalTheme { + Scaffold( + topBar = { + CharcoalTopAppBar( + title = { Text(text = "CharcoalDropdown") }, + navigationIcon = { + IconButton(onClick = { onNavigationClick() }) { + Icon( + imageVector = Icons.Filled.ArrowBack, + contentDescription = null + ) + } + } + ) + } + ) { + Column { + CharcoalDropdown1( + selectedOption = selectedOption, + options = options, + onValueChange = { index -> + selectedOption = options[index] + } + ) + CharcoalDropdown2( + selectedOption = selectedOption, + options = options, + onValueChange = { index -> + selectedOption = options[index] + } + ) + TextField( + modifier = Modifier + .fillMaxWidth() + .weight(1.0f), + value = text, + onValueChange = { value -> text = value}, + textStyle = CharcoalTheme.typography.regular14, + colors = TextFieldDefaults.textFieldColors(backgroundColor = CharcoalTheme.colorToken.surface3) + ) + CharcoalTextField( + modifier = Modifier + .fillMaxWidth() + .weight(1.0f), + value = text, + onValueChange = { value -> text = value} + ) + } + } + } +} + +@Preview +@Composable +private fun Preview() { + DropdownCatalog(onNavigationClick = {}) +} diff --git a/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt new file mode 100644 index 0000000..fa6f735 --- /dev/null +++ b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt @@ -0,0 +1,127 @@ +package net.pixiv.charcoal.android.compose.component.dropdown + +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material.DropdownMenuItem +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.ExposedDropdownMenuBox +import androidx.compose.material.ExposedDropdownMenuDefaults +import androidx.compose.material.LocalTextStyle +import androidx.compose.material.Text +import androidx.compose.material.TextField +import androidx.compose.material.TextFieldDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.TextStyle +import net.pixiv.charcoal.android.compose.component.textfield.CharcoalTextField +import net.pixiv.charcoal.android.compose.theme.CharcoalTheme + +@Composable +@OptIn(ExperimentalMaterialApi::class) +fun CharcoalDropdown1( + selectedOption: String, + options: List, + onValueChange: (Int) -> Unit, + textStyle: TextStyle = CharcoalTheme.typography.regular14 +) { + var expanded by remember { mutableStateOf(false) } + + CompositionLocalProvider(LocalTextStyle provides textStyle ) { + ExposedDropdownMenuBox( + modifier = Modifier.fillMaxWidth(), + expanded = expanded, + onExpandedChange = { + expanded = !expanded + } + ) { + TextField( + modifier = Modifier.fillMaxWidth(), + readOnly = true, + value = selectedOption, + onValueChange = { }, + trailingIcon = { + ExposedDropdownMenuDefaults.TrailingIcon( + expanded = expanded + ) + }, + colors = TextFieldDefaults.textFieldColors(backgroundColor = CharcoalTheme.colorToken.surface3) + ) + ExposedDropdownMenu( + modifier = Modifier.fillMaxWidth(), + expanded = expanded, + onDismissRequest = { + expanded = false + } + ) { + options.forEachIndexed { index, selectionOption -> + DropdownMenuItem( + modifier = Modifier.fillMaxWidth(), + onClick = { + onValueChange(index) + expanded = false + } + ) { + Text(text = selectionOption) + } + } + } + } + } +} + +@Composable +@OptIn(ExperimentalMaterialApi::class) +fun CharcoalDropdown2( + selectedOption: String, + options: List, + onValueChange: (Int) -> Unit, + textStyle: TextStyle = CharcoalTheme.typography.regular14 +) { + var expanded by remember { mutableStateOf(false) } + + CompositionLocalProvider(LocalTextStyle provides textStyle ) { + ExposedDropdownMenuBox( + modifier = Modifier.fillMaxWidth(), + expanded = expanded, + onExpandedChange = { + expanded = !expanded + } + ) { + CharcoalTextField( + modifier = Modifier.fillMaxWidth(), + readOnly = true, + value = selectedOption, + onValueChange = { }, +// trailingIcon = { +// ExposedDropdownMenuDefaults.TrailingIcon( +// expanded = expanded +// ) +// }, +// colors = TextFieldDefaults.textFieldColors(backgroundColor = CharcoalTheme.colorToken.surface3) + ) + ExposedDropdownMenu( + modifier = Modifier.fillMaxWidth(), + expanded = expanded, + onDismissRequest = { + expanded = false + } + ) { + options.forEachIndexed { index, selectionOption -> + DropdownMenuItem( + modifier = Modifier.fillMaxWidth(), + onClick = { + onValueChange(index) + expanded = false + } + ) { + Text(text = selectionOption) + } + } + } + } + } +} \ No newline at end of file diff --git a/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt new file mode 100644 index 0000000..3334c0f --- /dev/null +++ b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt @@ -0,0 +1,61 @@ +package net.pixiv.charcoal.android.compose.component.textfield + +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.text.BasicTextField +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.text.TextLayoutResult +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.VisualTransformation +import net.pixiv.charcoal.android.compose.theme.CharcoalTheme + +@Composable +fun CharcoalTextField( + value: String, + onValueChange: (String) -> Unit, + modifier: Modifier = Modifier, + enabled: Boolean = true, + readOnly: Boolean = false, + textStyle: TextStyle = TextStyle.Default, + textColor: Color = CharcoalTheme.colorToken.text2, + keyboardOptions: KeyboardOptions = KeyboardOptions.Default, + keyboardActions: KeyboardActions = KeyboardActions.Default, + singleLine: Boolean = false, + maxLines: Int = Int.MAX_VALUE, + visualTransformation: VisualTransformation = VisualTransformation.None, + onTextLayout: (TextLayoutResult) -> Unit = {}, + interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, + cursorBrush: Brush = SolidColor(CharcoalTheme.colorToken.brand), + decorationBox: @Composable (innerTextField: @Composable () -> Unit) -> Unit = + @Composable { innerTextField -> innerTextField() } +) { + val internalTextStyle by remember { + mutableStateOf(textStyle.copy(color = textColor)) + } + + BasicTextField( + value = value, + onValueChange = onValueChange, + modifier = modifier, + enabled = enabled, + readOnly = readOnly, + textStyle = internalTextStyle, + keyboardOptions = keyboardOptions, + keyboardActions = keyboardActions, + singleLine = singleLine, + maxLines = maxLines, + visualTransformation = visualTransformation, + onTextLayout = onTextLayout, + interactionSource = interactionSource, + cursorBrush = cursorBrush, + decorationBox = decorationBox + ) +} From 3cde303088484980d2391709abf2c9aa779c7556 Mon Sep 17 00:00:00 2001 From: kwzr Date: Wed, 29 Mar 2023 01:35:11 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E3=82=B9=E3=82=BF=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=82=92=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CharcoalDropdownComposeActivity.kt | 16 +++-- .../component/dropdown/CharcoalDropdown.kt | 16 ++--- .../component/textfield/CharcoalTextField.kt | 62 ++++++++++++++----- 3 files changed, 67 insertions(+), 27 deletions(-) diff --git a/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CharcoalDropdownComposeActivity.kt b/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CharcoalDropdownComposeActivity.kt index c00afc0..53894b9 100644 --- a/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CharcoalDropdownComposeActivity.kt +++ b/catalog/src/main/java/net/pixiv/charcoal/android/catalog/compose/CharcoalDropdownComposeActivity.kt @@ -5,8 +5,10 @@ import android.content.Intent import android.os.Bundle import androidx.activity.compose.setContent import androidx.appcompat.app.AppCompatActivity +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding import androidx.compose.material.* import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack @@ -17,6 +19,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp import net.pixiv.charcoal.android.compose.component.dropdown.CharcoalDropdown1 import net.pixiv.charcoal.android.compose.component.dropdown.CharcoalDropdown2 import net.pixiv.charcoal.android.compose.component.textfield.CharcoalTextField @@ -45,7 +48,7 @@ private fun DropdownCatalog( onNavigationClick: (() -> Unit), ) { var selectedOption by remember { mutableStateOf("Apple") } - var options by remember { mutableStateOf(mutableListOf("Apple", "Orange", "Banana")) } + val options = listOf("Apple", "Orange", "Banana") var text by remember { mutableStateOf("Hoge") } @@ -65,7 +68,10 @@ private fun DropdownCatalog( ) } ) { - Column { + Column( + modifier = Modifier.padding(8.dp), + verticalArrangement = Arrangement.spacedBy(16.dp) + ) { CharcoalDropdown1( selectedOption = selectedOption, options = options, @@ -85,7 +91,7 @@ private fun DropdownCatalog( .fillMaxWidth() .weight(1.0f), value = text, - onValueChange = { value -> text = value}, + onValueChange = { value -> text = value }, textStyle = CharcoalTheme.typography.regular14, colors = TextFieldDefaults.textFieldColors(backgroundColor = CharcoalTheme.colorToken.surface3) ) @@ -94,7 +100,9 @@ private fun DropdownCatalog( .fillMaxWidth() .weight(1.0f), value = text, - onValueChange = { value -> text = value} + onValueChange = { value -> text = value }, + textStyle = CharcoalTheme.typography.regular14, + colors = TextFieldDefaults.textFieldColors(backgroundColor = CharcoalTheme.colorToken.surface3) ) } } diff --git a/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt index fa6f735..b864f2c 100644 --- a/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt +++ b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt @@ -1,6 +1,7 @@ package net.pixiv.charcoal.android.compose.component.dropdown import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.material.DropdownMenuItem import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.ExposedDropdownMenuBox @@ -17,6 +18,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.dp import net.pixiv.charcoal.android.compose.component.textfield.CharcoalTextField import net.pixiv.charcoal.android.compose.theme.CharcoalTheme @@ -92,16 +94,16 @@ fun CharcoalDropdown2( } ) { CharcoalTextField( - modifier = Modifier.fillMaxWidth(), + modifier = Modifier.fillMaxWidth().height(40.dp), readOnly = true, value = selectedOption, onValueChange = { }, -// trailingIcon = { -// ExposedDropdownMenuDefaults.TrailingIcon( -// expanded = expanded -// ) -// }, -// colors = TextFieldDefaults.textFieldColors(backgroundColor = CharcoalTheme.colorToken.surface3) + trailingIcon = { + ExposedDropdownMenuDefaults.TrailingIcon( + expanded = expanded + ) + }, + colors = TextFieldDefaults.textFieldColors(backgroundColor = CharcoalTheme.colorToken.surface3) ) ExposedDropdownMenu( modifier = Modifier.fillMaxWidth(), diff --git a/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt index 3334c0f..db9363e 100644 --- a/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt +++ b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt @@ -1,20 +1,24 @@ package net.pixiv.charcoal.android.compose.component.textfield +import androidx.compose.foundation.background import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.foundation.shape.ZeroCornerSize import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.* +import androidx.compose.material.TextFieldDefaults.indicatorLine import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Brush -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.SolidColor -import androidx.compose.ui.text.TextLayoutResult +import androidx.compose.ui.graphics.* import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.unit.dp import net.pixiv.charcoal.android.compose.theme.CharcoalTheme @Composable @@ -26,36 +30,62 @@ fun CharcoalTextField( readOnly: Boolean = false, textStyle: TextStyle = TextStyle.Default, textColor: Color = CharcoalTheme.colorToken.text2, + label: @Composable (() -> Unit)? = null, + placeholder: @Composable (() -> Unit)? = null, + leadingIcon: @Composable (() -> Unit)? = null, + trailingIcon: @Composable (() -> Unit)? = null, + isError: Boolean = false, + visualTransformation: VisualTransformation = VisualTransformation.None, keyboardOptions: KeyboardOptions = KeyboardOptions.Default, - keyboardActions: KeyboardActions = KeyboardActions.Default, + keyboardActions: KeyboardActions = KeyboardActions(), singleLine: Boolean = false, maxLines: Int = Int.MAX_VALUE, - visualTransformation: VisualTransformation = VisualTransformation.None, - onTextLayout: (TextLayoutResult) -> Unit = {}, interactionSource: MutableInteractionSource = remember { MutableInteractionSource() }, - cursorBrush: Brush = SolidColor(CharcoalTheme.colorToken.brand), - decorationBox: @Composable (innerTextField: @Composable () -> Unit) -> Unit = - @Composable { innerTextField -> innerTextField() } + shape: Shape = + MaterialTheme.shapes.small.copy(bottomEnd = ZeroCornerSize, bottomStart = ZeroCornerSize), + colors: TextFieldColors = TextFieldDefaults.textFieldColors() ) { val internalTextStyle by remember { mutableStateOf(textStyle.copy(color = textColor)) } + @OptIn(ExperimentalMaterialApi::class) BasicTextField( value = value, + modifier = modifier + .background(colors.backgroundColor(enabled).value, shape) + .indicatorLine(enabled, isError, interactionSource, colors) + .defaultMinSize( + minWidth = TextFieldDefaults.MinWidth, + minHeight = TextFieldDefaults.MinHeight + ), onValueChange = onValueChange, - modifier = modifier, enabled = enabled, readOnly = readOnly, textStyle = internalTextStyle, + cursorBrush = SolidColor(CharcoalTheme.colorToken.brand), + visualTransformation = visualTransformation, keyboardOptions = keyboardOptions, keyboardActions = keyboardActions, + interactionSource = interactionSource, singleLine = singleLine, maxLines = maxLines, - visualTransformation = visualTransformation, - onTextLayout = onTextLayout, - interactionSource = interactionSource, - cursorBrush = cursorBrush, - decorationBox = decorationBox + decorationBox = @Composable { innerTextField -> + TextFieldDefaults.TextFieldDecorationBox( + value = value, + visualTransformation = visualTransformation, + innerTextField = innerTextField, + placeholder = placeholder, + label = label, + leadingIcon = leadingIcon, + trailingIcon = trailingIcon, + singleLine = singleLine, + enabled = enabled, + isError = isError, + interactionSource = interactionSource, + colors = colors, + contentPadding = PaddingValues(8.dp) + ) + } ) } From 2ae84b01e9e37cf6c11984f7f5727709ae0830bf Mon Sep 17 00:00:00 2001 From: kwzr Date: Wed, 29 Mar 2023 16:07:52 +0900 Subject: [PATCH 3/3] =?UTF-8?q?singleLine=E3=81=A0=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E3=82=8940dp=E3=81=AB=E3=81=99=E3=82=8B=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=E3=82=92CharcoalTextField=E5=86=85=E9=83=A8=E3=81=AB=E3=82=82?= =?UTF-8?q?=E3=81=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/compose/component/dropdown/CharcoalDropdown.kt | 4 +--- .../android/compose/component/textfield/CharcoalTextField.kt | 4 +++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt index b864f2c..a5297f5 100644 --- a/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt +++ b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/dropdown/CharcoalDropdown.kt @@ -1,7 +1,6 @@ package net.pixiv.charcoal.android.compose.component.dropdown import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.material.DropdownMenuItem import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.ExposedDropdownMenuBox @@ -18,7 +17,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.unit.dp import net.pixiv.charcoal.android.compose.component.textfield.CharcoalTextField import net.pixiv.charcoal.android.compose.theme.CharcoalTheme @@ -94,7 +92,7 @@ fun CharcoalDropdown2( } ) { CharcoalTextField( - modifier = Modifier.fillMaxWidth().height(40.dp), + modifier = Modifier.fillMaxWidth(), readOnly = true, value = selectedOption, onValueChange = { }, diff --git a/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt index db9363e..288e935 100644 --- a/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt +++ b/charcoal-android-compose/src/main/java/net/pixiv/charcoal/android/compose/component/textfield/CharcoalTextField.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.background import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.foundation.layout.height import androidx.compose.foundation.shape.ZeroCornerSize import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.KeyboardActions @@ -45,6 +46,7 @@ fun CharcoalTextField( MaterialTheme.shapes.small.copy(bottomEnd = ZeroCornerSize, bottomStart = ZeroCornerSize), colors: TextFieldColors = TextFieldDefaults.textFieldColors() ) { + val internalModifier = if (singleLine) modifier.height(40.dp) else modifier val internalTextStyle by remember { mutableStateOf(textStyle.copy(color = textColor)) } @@ -52,7 +54,7 @@ fun CharcoalTextField( @OptIn(ExperimentalMaterialApi::class) BasicTextField( value = value, - modifier = modifier + modifier = internalModifier .background(colors.backgroundColor(enabled).value, shape) .indicatorLine(enabled, isError, interactionSource, colors) .defaultMinSize(