Skip to content

Commit 2356436

Browse files
committed
moneymong-305 feature: MDSTextField Title 영역 AnnotatedString 인자 받을 수 있도록 수정
1 parent 06bcd68 commit 2356436

4 files changed

Lines changed: 89 additions & 4 deletions

File tree

core/design-system/src/main/java/com/moneymong/moneymong/design_system/component/textfield/BaseTextField.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.compose.foundation.text.KeyboardOptions
99
import androidx.compose.runtime.Composable
1010
import androidx.compose.ui.Modifier
1111
import androidx.compose.ui.platform.LocalFocusManager
12+
import androidx.compose.ui.text.AnnotatedString
1213
import androidx.compose.ui.text.input.TextFieldValue
1314
import androidx.compose.ui.text.input.VisualTransformation
1415
import androidx.compose.ui.unit.dp
@@ -22,7 +23,7 @@ internal fun MDSBaseTextField(
2223
modifier: Modifier = Modifier,
2324
value: TextFieldValue,
2425
onValueChange: (TextFieldValue) -> Unit,
25-
title: String,
26+
title: AnnotatedString,
2627
placeholder: String,
2728
isFilled: Boolean,
2829
isError: Boolean = false,

core/design-system/src/main/java/com/moneymong/moneymong/design_system/component/textfield/NumberTextField.kt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import androidx.compose.runtime.setValue
1414
import androidx.compose.ui.Modifier
1515
import androidx.compose.ui.focus.onFocusChanged
1616
import androidx.compose.ui.platform.LocalFocusManager
17+
import androidx.compose.ui.text.AnnotatedString
1718
import androidx.compose.ui.text.input.KeyboardType
1819
import androidx.compose.ui.text.input.TextFieldValue
1920
import androidx.compose.ui.text.input.VisualTransformation
@@ -41,6 +42,38 @@ fun MDSNumberTextField(
4142
keyboardActions: KeyboardActions = KeyboardActions.Default,
4243
) {
4344

45+
MDSBaseTextField(
46+
modifier = modifier,
47+
value = value,
48+
onValueChange = { original ->
49+
onValueChange(original.copy(text = original.text.filter { char -> char.isDigit() }))
50+
},
51+
title = AnnotatedString(text = title),
52+
placeholder = placeholder,
53+
isFilled = isFilled,
54+
singleLine = singleLine,
55+
icon = MDSTextFieldIcons.Clear,
56+
onIconClick = onIconClick,
57+
visualTransformation = visualTransformation,
58+
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
59+
keyboardActions = keyboardActions,
60+
)
61+
}
62+
63+
@Composable
64+
fun MDSNumberTextField(
65+
modifier: Modifier = Modifier,
66+
value: TextFieldValue,
67+
onValueChange: (TextFieldValue) -> Unit,
68+
title: AnnotatedString,
69+
placeholder: String,
70+
isFilled: Boolean,
71+
onIconClick: (() -> Unit),
72+
singleLine: Boolean = true,
73+
visualTransformation: VisualTransformation = VisualTransformation.None,
74+
keyboardActions: KeyboardActions = KeyboardActions.Default,
75+
) {
76+
4477
MDSBaseTextField(
4578
modifier = modifier,
4679
value = value,

core/design-system/src/main/java/com/moneymong/moneymong/design_system/component/textfield/TextField.kt

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,15 @@ import androidx.compose.runtime.setValue
1212
import androidx.compose.ui.Modifier
1313
import androidx.compose.ui.focus.onFocusChanged
1414
import androidx.compose.ui.platform.LocalFocusManager
15+
import androidx.compose.ui.text.AnnotatedString
16+
import androidx.compose.ui.text.SpanStyle
17+
import androidx.compose.ui.text.buildAnnotatedString
1518
import androidx.compose.ui.text.input.TextFieldValue
1619
import androidx.compose.ui.text.input.VisualTransformation
20+
import androidx.compose.ui.text.withStyle
1721
import androidx.compose.ui.tooling.preview.Preview
1822
import com.moneymong.moneymong.design_system.component.textfield.util.MDSTextFieldIcons
23+
import com.moneymong.moneymong.design_system.theme.Red03
1924

2025

2126
@Composable
@@ -38,6 +43,46 @@ fun MDSTextField(
3843
keyboardActions: KeyboardActions = KeyboardActions.Default
3944
) {
4045

46+
MDSBaseTextField(
47+
modifier = modifier,
48+
value = value,
49+
onValueChange = onValueChange,
50+
title = AnnotatedString(text = title),
51+
placeholder = placeholder,
52+
isFilled = isFilled,
53+
isError = isError,
54+
helperText = helperText,
55+
maxCount = maxCount,
56+
singleLine = singleLine,
57+
minLines = minLines,
58+
icon = icon,
59+
onIconClick = onIconClick,
60+
visualTransformation = visualTransformation,
61+
keyboardOptions = keyboardOptions,
62+
keyboardActions = keyboardActions
63+
)
64+
}
65+
66+
@Composable
67+
fun MDSTextField(
68+
modifier: Modifier = Modifier,
69+
value: TextFieldValue,
70+
onValueChange: (TextFieldValue) -> Unit,
71+
title: AnnotatedString,
72+
placeholder: String,
73+
isFilled: Boolean,
74+
isError: Boolean = false,
75+
helperText: String? = null,
76+
maxCount: Int? = null,
77+
singleLine: Boolean,
78+
minLines: Int = 1,
79+
icon: MDSTextFieldIcons? = null,
80+
onIconClick: (() -> Unit) = {},
81+
visualTransformation: VisualTransformation = VisualTransformation.None,
82+
keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
83+
keyboardActions: KeyboardActions = KeyboardActions.Default
84+
) {
85+
4186
MDSBaseTextField(
4287
modifier = modifier,
4388
value = value,
@@ -78,7 +123,12 @@ fun MDSTextFieldPreview() {
78123
.onFocusChanged { isFilled = !it.isFocused },
79124
value = userInput,
80125
onValueChange = { userInput = it },
81-
title = "title",
126+
title = buildAnnotatedString {
127+
append("title")
128+
withStyle(style = SpanStyle(color = Red03)) {
129+
append("*")
130+
}
131+
},
82132
placeholder = "placeholder",
83133
isFilled = isFilled,
84134
isError = isError,

core/design-system/src/main/java/com/moneymong/moneymong/design_system/component/textfield/util/TextFieldContainer.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import androidx.compose.material3.Text
1414
import androidx.compose.runtime.Composable
1515
import androidx.compose.ui.Modifier
1616
import androidx.compose.ui.res.painterResource
17+
import androidx.compose.ui.text.AnnotatedString
1718
import androidx.compose.ui.text.style.TextAlign
1819
import androidx.compose.ui.unit.dp
1920
import com.moneymong.moneymong.design_system.theme.Body2
@@ -24,7 +25,7 @@ import com.moneymong.moneymong.design_system.theme.Caption
2425
internal fun MDSTextFieldContainer(
2526
modifier: Modifier = Modifier,
2627
state: MDSTextFieldState,
27-
title: String,
28+
title: AnnotatedString,
2829
count: Int,
2930
placeholder: String,
3031
icon: MDSTextFieldIcons?,
@@ -59,7 +60,7 @@ internal fun MDSTextFieldContainer(
5960

6061
@Composable
6162
private fun MDSTextFieldContainerTop(
62-
title: String,
63+
title: AnnotatedString,
6364
state: MDSTextFieldState
6465
) {
6566
Text(

0 commit comments

Comments
 (0)