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")
+}