Skip to content

Commit f8319a3

Browse files
authored
Merge pull request #87 from YAPP-Github/feature/moneymong-305-장부-텍스트-수정
Feature/moneymong 305 장부 텍스트 수정
2 parents 06bcd68 + e634600 commit f8319a3

6 files changed

Lines changed: 151 additions & 17 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(

feature/ledgerdetail/src/main/java/com/moneymong/moneymong/ledgerdetail/LedgerDetailScreen.kt

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,11 @@ import androidx.compose.ui.layout.ContentScale
3535
import androidx.compose.ui.platform.LocalContext
3636
import androidx.compose.ui.platform.LocalFocusManager
3737
import androidx.compose.ui.res.painterResource
38+
import androidx.compose.ui.text.SpanStyle
39+
import androidx.compose.ui.text.buildAnnotatedString
3840
import androidx.compose.ui.text.input.KeyboardType
3941
import androidx.compose.ui.text.input.TextFieldValue
42+
import androidx.compose.ui.text.withStyle
4043
import androidx.compose.ui.tooling.preview.Preview
4144
import androidx.compose.ui.unit.dp
4245
import androidx.hilt.navigation.compose.hiltViewModel
@@ -68,6 +71,7 @@ import com.moneymong.moneymong.design_system.theme.Gray03
6871
import com.moneymong.moneymong.design_system.theme.Gray06
6972
import com.moneymong.moneymong.design_system.theme.Gray10
7073
import com.moneymong.moneymong.design_system.theme.MMHorizontalSpacing
74+
import com.moneymong.moneymong.design_system.theme.Red03
7175
import com.moneymong.moneymong.design_system.theme.White
7276
import com.moneymong.moneymong.ledgerdetail.view.LedgerDetailTopbarView
7377
import org.orbitmvi.orbit.compose.collectAsState
@@ -203,7 +207,12 @@ fun LedgerDetailScreen(
203207
modifier = Modifier.fillMaxWidth(),
204208
value = state.storeNameValue,
205209
onValueChange = viewModel::onChangeStoreNameValue,
206-
title = "수입·지출 출처",
210+
title = buildAnnotatedString {
211+
append("수입·지출 출처")
212+
withStyle(SpanStyle(color = Red03)) {
213+
append("*")
214+
}
215+
},
207216
placeholder = "",
208217
isFilled = false,
209218
isError = state.isStoreNameError,
@@ -239,7 +248,12 @@ fun LedgerDetailScreen(
239248
modifier = Modifier.fillMaxWidth(),
240249
value = state.totalPriceValue,
241250
onValueChange = viewModel::onChangeTotalPriceValue,
242-
title = "${state.fundTypeText} 금액",
251+
title = buildAnnotatedString {
252+
append("${state.fundTypeText} 금액")
253+
withStyle(SpanStyle(color = Red03)) {
254+
append("*")
255+
}
256+
},
243257
placeholder = "",
244258
isFilled = false,
245259
isError = state.isTotalPriceError,
@@ -276,7 +290,12 @@ fun LedgerDetailScreen(
276290
modifier = Modifier.fillMaxWidth(),
277291
value = state.paymentDateValue,
278292
onValueChange = viewModel::onChangePaymentDateValue,
279-
title = "날짜",
293+
title = buildAnnotatedString {
294+
append("날짜")
295+
withStyle(SpanStyle(color = Red03)) {
296+
append("*")
297+
}
298+
},
280299
placeholder = "2024/01/01",
281300
isFilled = false,
282301
isError = state.isPaymentDateError,
@@ -313,7 +332,12 @@ fun LedgerDetailScreen(
313332
modifier = Modifier.fillMaxWidth(),
314333
value = state.paymentTimeValue,
315334
onValueChange = viewModel::onChangePaymentTimeValue,
316-
title = "시간",
335+
title = buildAnnotatedString {
336+
append("시간")
337+
withStyle(SpanStyle(color = Red03)) {
338+
append("*")
339+
}
340+
},
317341
placeholder = "00:00:00",
318342
isFilled = false,
319343
isError = state.isPaymentTimeError,

feature/ledgermanual/src/main/java/com/moneymong/moneymong/ledgermanual/LedgerManualScreen.kt

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import androidx.compose.runtime.mutableStateOf
3535
import androidx.compose.runtime.remember
3636
import androidx.compose.runtime.setValue
3737
import androidx.compose.ui.Alignment
38-
import androidx.compose.ui.ExperimentalComposeUiApi
3938
import androidx.compose.ui.Modifier
4039
import androidx.compose.ui.draw.clip
4140
import androidx.compose.ui.focus.onFocusChanged
@@ -76,6 +75,7 @@ import com.moneymong.moneymong.design_system.theme.Body3
7675
import com.moneymong.moneymong.design_system.theme.Gray06
7776
import com.moneymong.moneymong.design_system.theme.Gray10
7877
import com.moneymong.moneymong.design_system.theme.MMHorizontalSpacing
78+
import com.moneymong.moneymong.design_system.theme.Red03
7979
import com.moneymong.moneymong.design_system.theme.White
8080
import com.moneymong.moneymong.domain.param.ledger.FundType
8181
import com.moneymong.moneymong.ledgermanual.view.LedgerManualTopbarView
@@ -190,7 +190,12 @@ fun LedgerManualScreen(
190190
.onFocusChanged { isStoreNameFilled = !it.isFocused },
191191
value = state.storeNameValue,
192192
onValueChange = viewModel::onChangeStoreNameValue,
193-
title = "수입·지출 출처",
193+
title = buildAnnotatedString {
194+
append("수입·지출 출처")
195+
withStyle(SpanStyle(color = Red03)) {
196+
append("*")
197+
}
198+
},
194199
placeholder = "점포명을 입력해주세요",
195200
helperText = "20자 이하로 입력해주세요",
196201
maxCount = 20,
@@ -209,7 +214,12 @@ fun LedgerManualScreen(
209214
.onFocusChanged { isTotalPriceFilled = !it.isFocused },
210215
value = state.totalPriceValue,
211216
onValueChange = viewModel::onChangeTotalPriceValue,
212-
title = "금액",
217+
title = buildAnnotatedString {
218+
append("금액")
219+
withStyle(SpanStyle(color = Red03)) {
220+
append("*")
221+
}
222+
},
213223
placeholder = "거래 금액을 입력해주세요",
214224
helperText = "999,999,999,999원 이하로 입력해주세요",
215225
isFilled = isTotalPriceFilled,
@@ -223,7 +233,12 @@ fun LedgerManualScreen(
223233
)
224234
Spacer(modifier = Modifier.height(24.dp))
225235
Text(
226-
text = "거래 유형",
236+
text = buildAnnotatedString {
237+
append("거래 유형")
238+
withStyle(SpanStyle(color = Gray06)) {
239+
append("*")
240+
}
241+
},
227242
style = Body2,
228243
color = Gray06
229244
)
@@ -253,7 +268,12 @@ fun LedgerManualScreen(
253268
.onFocusChanged { isPaymentDateFilled = !it.isFocused },
254269
value = state.paymentDateValue,
255270
onValueChange = viewModel::onChangePaymentDateValue,
256-
title = "날짜",
271+
title = buildAnnotatedString {
272+
append("날짜")
273+
withStyle(SpanStyle(color = Red03)) {
274+
append("*")
275+
}
276+
},
257277
placeholder = "YYYY/MM/DD",
258278
helperText = "올바른 날짜를 입력해주세요",
259279
isFilled = isPaymentDateFilled,
@@ -273,7 +293,12 @@ fun LedgerManualScreen(
273293
.onFocusChanged { isPaymentTimeFilled = !it.isFocused },
274294
value = state.paymentTimeValue,
275295
onValueChange = viewModel::onChangePaymentTimeValue,
276-
title = "시간",
296+
title = buildAnnotatedString {
297+
append("시간")
298+
withStyle(SpanStyle(color = Red03)) {
299+
append("*")
300+
}
301+
},
277302
placeholder = "00:00:00 (24시 단위)",
278303
helperText = "올바른 시간을 입력해주세요",
279304
isFilled = isPaymentTimeFilled,
@@ -287,7 +312,7 @@ fun LedgerManualScreen(
287312
)
288313
Text(
289314
text = buildAnnotatedString {
290-
append("영수증 (선택/최대 12장)\n")
315+
append("영수증 (최대 12장)\n")
291316
withStyle(SpanStyle(color = Blue04)) {
292317
append("*지출일 경우 영수증을 꼭 제출해주세요")
293318
}
@@ -356,7 +381,7 @@ fun LedgerManualScreen(
356381
}
357382
Spacer(modifier = Modifier.height(24.dp))
358383
Text(
359-
text = "증빙 자료 (선택/최대 12장)",
384+
text = "증빙 자료 (최대 12장)",
360385
style = Body2,
361386
color = Gray06
362387
)
@@ -427,7 +452,7 @@ fun LedgerManualScreen(
427452
.onFocusChanged { isMemoFilled = !it.isFocused },
428453
value = state.memoValue,
429454
onValueChange = viewModel::onChangeMemoValue,
430-
title = "메모 (선택)",
455+
title = "메모",
431456
placeholder = "메모할 내용을 입력하세요",
432457
helperText = "300자 이하로 입력해주세요",
433458
maxCount = 300,

0 commit comments

Comments
 (0)