From cdcec763150f7ba734f55a05fde3b68df9ee04ab Mon Sep 17 00:00:00 2001 From: Jean-Philippe <112860634+jpbarbaud@users.noreply.github.com> Date: Tue, 14 May 2024 17:10:01 +0200 Subject: [PATCH] Add WindowEditTextDefaults to WindowEditText --- .../edittext/windowed/WindowEditText.kt | 26 ++++++++----------- .../windowed/WindowEditTextDefaults.kt | 18 +++++++++++++ 2 files changed, 29 insertions(+), 15 deletions(-) create mode 100644 library-compose/src/main/java/com/spendesk/grapes/compose/edittext/windowed/WindowEditTextDefaults.kt diff --git a/library-compose/src/main/java/com/spendesk/grapes/compose/edittext/windowed/WindowEditText.kt b/library-compose/src/main/java/com/spendesk/grapes/compose/edittext/windowed/WindowEditText.kt index b2558dc0..7b6cd56f 100644 --- a/library-compose/src/main/java/com/spendesk/grapes/compose/edittext/windowed/WindowEditText.kt +++ b/library-compose/src/main/java/com/spendesk/grapes/compose/edittext/windowed/WindowEditText.kt @@ -38,19 +38,15 @@ import com.spendesk.grapes.compose.theme.GrapesTheme * @since 04/07/2022 */ -private const val DefaultWindowLength = 4 -private const val DefaultMaxLength = 12 -private val ForbiddenCharRegex = "\\D".toRegex() - @Composable fun WindowEditText( text: String, onTextChange: (String) -> Unit, modifier: Modifier = Modifier, - windowLength: Int = DefaultWindowLength, - maxLength: Int = DefaultMaxLength, - cursorColor: Color = GrapesTheme.colors.mainWhite, - textStyle: TextStyle = GrapesTheme.typography.bodyM.copy(letterSpacing = 3.sp, color = GrapesTheme.colors.mainWhite, fontSize = 18.sp, fontFeatureSettings = "tnum"), + windowLength: Int = WindowEditTextDefaults.DefaultWindowLength, + maxLength: Int = WindowEditTextDefaults.DefaultMaxLength, + cursorColor: Color = Color.White, + textStyle: TextStyle = WindowEditTextDefaults.defaultTextStyle(), hintChar: Char = '0', separatorChar: Char = '-', ) { @@ -70,10 +66,10 @@ fun WindowEditText( text = text, onTextChange = onTextChange, modifier = modifier - .padding(16.dp) + .padding(GrapesTheme.dimensions.spacing3) .fillMaxWidth() .background(GrapesTheme.colors.primaryDark, RoundedCornerShape(12.dp)) - .padding(vertical = 16.dp), + .padding(vertical = GrapesTheme.dimensions.spacing3), windowLength = windowLength, maxLength = maxLength, cursorColor = cursorColor, @@ -88,10 +84,10 @@ internal fun WindowEditTextBase( text: String, onTextChange: (String) -> Unit, modifier: Modifier = Modifier, - windowLength: Int = DefaultWindowLength, - maxLength: Int = DefaultMaxLength, - cursorColor: Color = GrapesTheme.colors.mainWhite, - textStyle: TextStyle = GrapesTheme.typography.bodyM.copy(letterSpacing = 3.sp, color = GrapesTheme.colors.mainWhite, fontSize = 18.sp, fontFeatureSettings = "tnum"), + windowLength: Int = WindowEditTextDefaults.DefaultWindowLength, + maxLength: Int = WindowEditTextDefaults.DefaultMaxLength, + cursorColor: Color = Color.White, + textStyle: TextStyle = WindowEditTextDefaults.defaultTextStyle(), hint: AnnotatedString = AnnotatedString("0"), separator: AnnotatedString = AnnotatedString("-"), ) { @@ -117,7 +113,7 @@ internal fun WindowEditTextBase( } private fun sanitizeWindowedEditTextContent(text: String, maxLength: Int): String { - return text.replace(ForbiddenCharRegex, "").run { + return text.replace(WindowEditTextDefaults.ForbiddenCharRegex, "").run { if (this.length > maxLength) { this.substring(0 until maxLength) } else { diff --git a/library-compose/src/main/java/com/spendesk/grapes/compose/edittext/windowed/WindowEditTextDefaults.kt b/library-compose/src/main/java/com/spendesk/grapes/compose/edittext/windowed/WindowEditTextDefaults.kt new file mode 100644 index 00000000..f365e855 --- /dev/null +++ b/library-compose/src/main/java/com/spendesk/grapes/compose/edittext/windowed/WindowEditTextDefaults.kt @@ -0,0 +1,18 @@ +package com.spendesk.grapes.compose.edittext.windowed + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.unit.sp +import com.spendesk.grapes.compose.theme.GrapesTheme + +@Immutable +object WindowEditTextDefaults { + const val DefaultWindowLength = 4 + const val DefaultMaxLength = 12 + internal val ForbiddenCharRegex = "\\D".toRegex() + + @Composable + fun defaultTextStyle(): TextStyle = GrapesTheme.typography.bodyM.copy(letterSpacing = 3.sp, color = Color.White, fontSize = 18.sp, fontFeatureSettings = "tnum") +}