Skip to content

Commit 466f4a1

Browse files
committed
Add WindowEditTextDefaults to WindowEditText
1 parent 88c6030 commit 466f4a1

File tree

2 files changed

+30
-15
lines changed

2 files changed

+30
-15
lines changed

library-compose/src/main/java/com/spendesk/grapes/compose/edittext/windowed/WindowEditText.kt

+11-15
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,15 @@ import com.spendesk.grapes.compose.theme.GrapesTheme
3838
* @since 04/07/2022
3939
*/
4040

41-
private const val DefaultWindowLength = 4
42-
private const val DefaultMaxLength = 12
43-
private val ForbiddenCharRegex = "\\D".toRegex()
44-
4541
@Composable
4642
fun WindowEditText(
4743
text: String,
4844
onTextChange: (String) -> Unit,
4945
modifier: Modifier = Modifier,
50-
windowLength: Int = DefaultWindowLength,
51-
maxLength: Int = DefaultMaxLength,
52-
cursorColor: Color = GrapesTheme.colors.mainWhite,
53-
textStyle: TextStyle = GrapesTheme.typography.bodyM.copy(letterSpacing = 3.sp, color = GrapesTheme.colors.mainWhite, fontSize = 18.sp, fontFeatureSettings = "tnum"),
46+
windowLength: Int = WindowEditTextDefaults.DefaultWindowLength,
47+
maxLength: Int = WindowEditTextDefaults.DefaultMaxLength,
48+
cursorColor: Color = Color.White,
49+
textStyle: TextStyle = WindowEditTextDefaults.defaultTextStyle(),
5450
hintChar: Char = '0',
5551
separatorChar: Char = '-',
5652
) {
@@ -70,10 +66,10 @@ fun WindowEditText(
7066
text = text,
7167
onTextChange = onTextChange,
7268
modifier = modifier
73-
.padding(16.dp)
69+
.padding(GrapesTheme.dimensions.spacing3)
7470
.fillMaxWidth()
7571
.background(GrapesTheme.colors.primaryDark, RoundedCornerShape(12.dp))
76-
.padding(vertical = 16.dp),
72+
.padding(vertical = GrapesTheme.dimensions.spacing3),
7773
windowLength = windowLength,
7874
maxLength = maxLength,
7975
cursorColor = cursorColor,
@@ -88,10 +84,10 @@ internal fun WindowEditTextBase(
8884
text: String,
8985
onTextChange: (String) -> Unit,
9086
modifier: Modifier = Modifier,
91-
windowLength: Int = DefaultWindowLength,
92-
maxLength: Int = DefaultMaxLength,
93-
cursorColor: Color = GrapesTheme.colors.mainWhite,
94-
textStyle: TextStyle = GrapesTheme.typography.bodyM.copy(letterSpacing = 3.sp, color = GrapesTheme.colors.mainWhite, fontSize = 18.sp, fontFeatureSettings = "tnum"),
87+
windowLength: Int = WindowEditTextDefaults.DefaultWindowLength,
88+
maxLength: Int = WindowEditTextDefaults.DefaultMaxLength,
89+
cursorColor: Color = Color.White,
90+
textStyle: TextStyle = WindowEditTextDefaults.defaultTextStyle(),
9591
hint: AnnotatedString = AnnotatedString("0"),
9692
separator: AnnotatedString = AnnotatedString("-"),
9793
) {
@@ -117,7 +113,7 @@ internal fun WindowEditTextBase(
117113
}
118114

119115
private fun sanitizeWindowedEditTextContent(text: String, maxLength: Int): String {
120-
return text.replace(ForbiddenCharRegex, "").run {
116+
return text.replace(WindowEditTextDefaults.ForbiddenCharRegex, "").run {
121117
if (this.length > maxLength) {
122118
this.substring(0 until maxLength)
123119
} else {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.spendesk.grapes.compose.edittext.windowed
2+
3+
import androidx.compose.runtime.Composable
4+
import androidx.compose.runtime.Immutable
5+
import androidx.compose.runtime.Stable
6+
import androidx.compose.ui.graphics.Color
7+
import androidx.compose.ui.text.TextStyle
8+
import androidx.compose.ui.unit.sp
9+
import com.spendesk.grapes.compose.theme.GrapesTheme
10+
11+
@Immutable
12+
object WindowEditTextDefaults {
13+
const val DefaultWindowLength = 4
14+
const val DefaultMaxLength = 12
15+
internal val ForbiddenCharRegex = "\\D".toRegex()
16+
17+
@Composable
18+
fun defaultTextStyle(): TextStyle = GrapesTheme.typography.bodyM.copy(letterSpacing = 3.sp, color = Color.White, fontSize = 18.sp, fontFeatureSettings = "tnum")
19+
}

0 commit comments

Comments
 (0)