From c8ce13bdf0b7d11a8304ac1a9ba246556d580310 Mon Sep 17 00:00:00 2001 From: easyhak Date: Wed, 6 Nov 2024 11:54:10 +0900 Subject: [PATCH 1/9] =?UTF-8?q?feat:=20label=20select=20ui=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../diary/write/components/LabelItem.kt | 45 ++++++++++ .../write/components/LabelSelectionDialog.kt | 87 +++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt create mode 100644 feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt new file mode 100644 index 00000000..d2e6224e --- /dev/null +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt @@ -0,0 +1,45 @@ +package com.boostcamp.dreamteam.dreamdiary.feature.diary.write.components + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.material3.Checkbox +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Composable +internal fun LabelItem( + modifier: Modifier = Modifier, + label: String, + onCheckChanged: (Boolean) -> Unit, +) { + Row( + modifier = modifier, + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + ) { + Text(text = label) + Checkbox( + checked = false, + onCheckedChange = onCheckChanged, + modifier = Modifier, + ) + } +} + +@Preview(showBackground = true) +@Composable +fun LabelItemPreview() { + LabelItem( + modifier = Modifier + .width(200.dp) + .padding(4.dp), + label = "악몽", + onCheckChanged = {}, + ) +} diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt new file mode 100644 index 00000000..3eb0e929 --- /dev/null +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt @@ -0,0 +1,87 @@ +package com.boostcamp.dreamteam.dreamdiary.feature.diary.write.components + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TextField +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Composable +fun LabelSelectionDialog( + modifier: Modifier = Modifier, + labelList: List = listOf("악몽", "개꿈", "귀신"), +) { + AlertDialog( + title = { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.fillMaxWidth(), + ) { + TextField( + value = "", + onValueChange = {}, + modifier = Modifier.fillMaxWidth(), + label = { Text("검색") }, + trailingIcon = { + Icon( + imageVector = Icons.Default.Add, + contentDescription = "Add Label", + ) + }, + ) + } + }, + text = { + Column(modifier = Modifier.fillMaxWidth()) { + // label list + labelList.forEach { + LabelItem( + modifier = Modifier + .fillMaxWidth() + .padding(start = 8.dp), + label = it, + onCheckChanged = {}, + ) + HorizontalDivider() + } + } + }, + onDismissRequest = { /*TODO*/ }, + confirmButton = { + TextButton( + onClick = { /*TODO*/ }, + ) { + Text("확인") + } + }, + dismissButton = { + TextButton( + onClick = { /*TODO*/ }, + ) { + Text("취소") + } + }, + modifier = modifier, + ) +} + +@Preview(showBackground = true) +@Composable +fun LabelSelectionDialogPreview() { + LabelSelectionDialog( + modifier = Modifier, + labelList = listOf("악몽", "개꿈", "귀신"), + ) +} From 21a74171562f5cb6e282b4cfb0a6fc74bea0a660 Mon Sep 17 00:00:00 2001 From: easyhak Date: Wed, 6 Nov 2024 17:57:09 +0900 Subject: [PATCH 2/9] =?UTF-8?q?feat:=20label=20select=20ui=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20-=20=EA=B2=80=EC=83=89=EC=97=90=20=EB=94=B0?= =?UTF-8?q?=EB=9D=BC=20=EC=95=84=EC=9D=B4=EC=BD=98=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../write/components/LabelSelectionDialog.kt | 129 +++++++++++------- 1 file changed, 79 insertions(+), 50 deletions(-) diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt index 3eb0e929..4ac646b5 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt @@ -1,14 +1,22 @@ package com.boostcamp.dreamteam.dreamdiary.feature.diary.write.components +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add -import androidx.compose.material3.AlertDialog +import androidx.compose.material.icons.filled.Search import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TextField @@ -17,71 +25,92 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Dialog @Composable fun LabelSelectionDialog( + onDismissRequest: () -> Unit, + labelList: List, // 어캐하지 -> check 된 것을 같이 넘길까? + searchValue: String, + isCheckList: List, modifier: Modifier = Modifier, - labelList: List = listOf("악몽", "개꿈", "귀신"), ) { - AlertDialog( - title = { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier.fillMaxWidth(), + Dialog(onDismissRequest = onDismissRequest) { + Surface( + modifier = modifier + .fillMaxWidth(), + shape = MaterialTheme.shapes.medium, + color = MaterialTheme.colorScheme.surface, + ) { + Column( + modifier = Modifier.verticalScroll(rememberScrollState()), ) { - TextField( - value = "", - onValueChange = {}, + Row( + verticalAlignment = Alignment.CenterVertically, modifier = Modifier.fillMaxWidth(), - label = { Text("검색") }, - trailingIcon = { - Icon( - imageVector = Icons.Default.Add, - contentDescription = "Add Label", - ) - }, - ) - } - }, - text = { - Column(modifier = Modifier.fillMaxWidth()) { - // label list - labelList.forEach { - LabelItem( - modifier = Modifier - .fillMaxWidth() - .padding(start = 8.dp), - label = it, - onCheckChanged = {}, + ) { + TextField( + value = searchValue, + onValueChange = {}, + modifier = Modifier.fillMaxWidth(), + label = { Text("검색") }, + trailingIcon = { + if (searchValue.isNotEmpty()) { + Icon( + imageVector = Icons.Default.Add, + contentDescription = "Add Label", + ) + } else { + Icon( + imageVector = Icons.Default.Search, + contentDescription = "Search Label", + ) + } + }, ) - HorizontalDivider() + } + + Spacer(modifier = Modifier.height(8.dp)) + + Column(modifier = Modifier.fillMaxWidth()) { + labelList.forEach { + LabelItem( + modifier = Modifier + .fillMaxWidth() + .padding(start = 8.dp), + label = it, + onCheckChanged = {}, + ) + HorizontalDivider() + } + } + + Spacer(modifier = Modifier.height(16.dp)) + + Row( + modifier = Modifier.align(Alignment.End), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + TextButton(onClick = { onDismissRequest() }) { + Text("취소") + } + TextButton(onClick = { /* TODO: confirm action */ }) { + Text("확인") + } } } - }, - onDismissRequest = { /*TODO*/ }, - confirmButton = { - TextButton( - onClick = { /*TODO*/ }, - ) { - Text("확인") - } - }, - dismissButton = { - TextButton( - onClick = { /*TODO*/ }, - ) { - Text("취소") - } - }, - modifier = modifier, - ) + } + } } @Preview(showBackground = true) @Composable fun LabelSelectionDialogPreview() { LabelSelectionDialog( - modifier = Modifier, + onDismissRequest = {}, labelList = listOf("악몽", "개꿈", "귀신"), + searchValue = "", + isCheckList = listOf(false, false, false), + modifier = Modifier.width(200.dp), ) } From 4be44b9713b5f24ce86984799b99dd19816c13ea Mon Sep 17 00:00:00 2001 From: easyhak Date: Wed, 6 Nov 2024 19:39:32 +0900 Subject: [PATCH 3/9] =?UTF-8?q?feat:=20label=20select=20ui=20=EB=8B=A4?= =?UTF-8?q?=EC=9D=B4=EC=96=BC=EB=A1=9C=EA=B7=B8=20=EA=B5=AC=ED=98=84=20-?= =?UTF-8?q?=20viewmodel=EA=B3=BC=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/diary/write/DiaryWriteScreen.kt | 28 +++++++++++++++++-- .../diary/write/DiaryWriteViewModel.kt | 8 ++++++ .../diary/write/components/LabelItem.kt | 4 ++- .../write/components/LabelSelectionDialog.kt | 26 +++++++++-------- .../diary/write/model/DiaryWriteUiState.kt | 3 ++ 5 files changed, 53 insertions(+), 16 deletions(-) diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt index 3b237366..5be0b87f 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt @@ -8,6 +8,7 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.verticalScroll @@ -26,6 +27,9 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -35,18 +39,21 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.boostcamp.dreamteam.dreamdiary.feature.diary.R +import com.boostcamp.dreamteam.dreamdiary.feature.diary.write.components.LabelSelectionDialog @Composable fun DiaryWriteScreen(viewModel: DiaryWriteViewModel = hiltViewModel()) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() - val (title, content) = uiState + val (title, content, searchValue, labels, selectedLabels) = uiState DiaryWriteScreen( title = title, content = content, + searchValue = searchValue, onTitleChange = viewModel::setTitle, onContentChange = viewModel::setContent, + onSearchValueChange = viewModel::setSearchValue, ) } @@ -55,10 +62,13 @@ fun DiaryWriteScreen(viewModel: DiaryWriteViewModel = hiltViewModel()) { fun DiaryWriteScreen( title: String, content: String, + searchValue: String, onTitleChange: (String) -> Unit, onContentChange: (String) -> Unit, + onSearchValueChange: (String) -> Unit, ) { val scrollState = rememberScrollState() + var isLabelSelectionDialogOpen by remember { mutableStateOf(false) } Scaffold( topBar = { @@ -94,7 +104,7 @@ fun DiaryWriteScreen( ) { Row( modifier = Modifier.clickable { - // TODO + }, verticalAlignment = Alignment.CenterVertically, ) { @@ -119,7 +129,7 @@ fun DiaryWriteScreen( modifier = Modifier .padding(horizontal = 16.dp) .clickable { - // TODO + isLabelSelectionDialogOpen = true }, verticalAlignment = Alignment.CenterVertically, ) { @@ -166,6 +176,16 @@ fun DiaryWriteScreen( }, ) } + if (isLabelSelectionDialogOpen) { + LabelSelectionDialog( + labelList = listOf("악몽", "개꿈", "귀신"), + onDismissRequest = { isLabelSelectionDialogOpen = false }, + searchValue = searchValue, + searchValueChange = onSearchValueChange, + selectedLabels = listOf(true, false, false), + modifier = Modifier.width(400.dp), + ) + } } } @@ -175,7 +195,9 @@ fun PreviewDiaryListScreen() { DiaryWriteScreen( title = "", content = "", + searchValue = "", onTitleChange = {}, onContentChange = {}, + onSearchValueChange = {}, ) } diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteViewModel.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteViewModel.kt index a6c8e9bf..ca78b41d 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteViewModel.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteViewModel.kt @@ -20,4 +20,12 @@ class DiaryWriteViewModel @Inject constructor() : ViewModel() { fun setContent(content: String) { _uiState.value = _uiState.value.copy(content = content) } + + fun setSearchValue(searchValue: String) { + _uiState.value = _uiState.value.copy(searchValue = searchValue) + } + + fun setLabels(labels: List) { + _uiState.value = _uiState.value.copy(labels = labels) + } } diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt index d2e6224e..dbe18d36 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt @@ -16,6 +16,7 @@ import androidx.compose.ui.unit.dp internal fun LabelItem( modifier: Modifier = Modifier, label: String, + isChecked: Boolean, onCheckChanged: (Boolean) -> Unit, ) { Row( @@ -25,7 +26,7 @@ internal fun LabelItem( ) { Text(text = label) Checkbox( - checked = false, + checked = isChecked, onCheckedChange = onCheckChanged, modifier = Modifier, ) @@ -40,6 +41,7 @@ fun LabelItemPreview() { .width(200.dp) .padding(4.dp), label = "악몽", + isChecked = true, onCheckChanged = {}, ) } diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt index 4ac646b5..22a1158d 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt @@ -13,7 +13,6 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Search -import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -30,9 +29,10 @@ import androidx.compose.ui.window.Dialog @Composable fun LabelSelectionDialog( onDismissRequest: () -> Unit, - labelList: List, // 어캐하지 -> check 된 것을 같이 넘길까? + labelList: List, searchValue: String, - isCheckList: List, + searchValueChange: (String) -> Unit, + selectedLabels: List, modifier: Modifier = Modifier, ) { Dialog(onDismissRequest = onDismissRequest) { @@ -51,7 +51,7 @@ fun LabelSelectionDialog( ) { TextField( value = searchValue, - onValueChange = {}, + onValueChange = { searchValueChange(it) }, modifier = Modifier.fillMaxWidth(), label = { Text("검색") }, trailingIcon = { @@ -67,21 +67,22 @@ fun LabelSelectionDialog( ) } }, + singleLine = true, ) } Spacer(modifier = Modifier.height(8.dp)) Column(modifier = Modifier.fillMaxWidth()) { - labelList.forEach { + labelList.forEachIndexed { index, label -> LabelItem( modifier = Modifier .fillMaxWidth() .padding(start = 8.dp), - label = it, - onCheckChanged = {}, + label = label, + isChecked = selectedLabels[index], + onCheckChanged = { !selectedLabels[index] }, ) - HorizontalDivider() } } @@ -91,10 +92,10 @@ fun LabelSelectionDialog( modifier = Modifier.align(Alignment.End), horizontalArrangement = Arrangement.spacedBy(8.dp), ) { - TextButton(onClick = { onDismissRequest() }) { + TextButton(onClick = onDismissRequest) { Text("취소") } - TextButton(onClick = { /* TODO: confirm action */ }) { + TextButton(onClick = { onDismissRequest() }) { Text("확인") } } @@ -110,7 +111,8 @@ fun LabelSelectionDialogPreview() { onDismissRequest = {}, labelList = listOf("악몽", "개꿈", "귀신"), searchValue = "", - isCheckList = listOf(false, false, false), - modifier = Modifier.width(200.dp), + searchValueChange = {}, + selectedLabels = listOf(true, false, false), + modifier = Modifier.width(400.dp), ) } diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/model/DiaryWriteUiState.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/model/DiaryWriteUiState.kt index 8f655ea1..93249e35 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/model/DiaryWriteUiState.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/model/DiaryWriteUiState.kt @@ -3,4 +3,7 @@ package com.boostcamp.dreamteam.dreamdiary.feature.diary.write.model data class DiaryWriteUiState( val title: String = "", val content: String = "", + val searchValue: String = "", + val labels: List = emptyList(), + val selectedLabels: List = emptyList(), ) From 148bf615b0ae62159c689f253dd970b3761182f9 Mon Sep 17 00:00:00 2001 From: easyhak Date: Wed, 6 Nov 2024 19:53:11 +0900 Subject: [PATCH 4/9] =?UTF-8?q?style:=20ktlint=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dreamdiary/feature/diary/write/DiaryWriteScreen.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt index 5be0b87f..9e9cd35f 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt @@ -104,7 +104,6 @@ fun DiaryWriteScreen( ) { Row( modifier = Modifier.clickable { - }, verticalAlignment = Alignment.CenterVertically, ) { @@ -178,7 +177,7 @@ fun DiaryWriteScreen( } if (isLabelSelectionDialogOpen) { LabelSelectionDialog( - labelList = listOf("악몽", "개꿈", "귀신"), + labelList = listOf("악몽", "개꿈", "귀신"), // 라벨 viewmodel에서 가져오기 onDismissRequest = { isLabelSelectionDialogOpen = false }, searchValue = searchValue, searchValueChange = onSearchValueChange, From c1ed391f85986fc32c1c079622934c0a1c45f20d Mon Sep 17 00:00:00 2001 From: easyhak Date: Wed, 6 Nov 2024 20:36:24 +0900 Subject: [PATCH 5/9] fix: backClick, onClickSave --- .../dreamdiary/feature/diary/write/DiaryWriteScreen.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt index 31b7093a..227444f8 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt @@ -93,7 +93,7 @@ fun DiaryWriteScreen( TopAppBar( title = { }, navigationIcon = { - IconButton(onClick = { /*TODO*/ }) { + IconButton(onClick = { onBackClick() }) { Icon( imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = stringResource(R.string.write_back), @@ -101,7 +101,7 @@ fun DiaryWriteScreen( } }, actions = { - IconButton(onClick = { /*TODO*/ }) { + IconButton(onClick = { onClickSave() }) { Icon( imageVector = Icons.Filled.Check, contentDescription = stringResource(R.string.write_save), From 6b6563c9a21430fa9fd90f33d300334cef5f888b Mon Sep 17 00:00:00 2001 From: easyhak Date: Wed, 6 Nov 2024 23:41:35 +0900 Subject: [PATCH 6/9] =?UTF-8?q?fix:=20=EB=A6=AC=EB=B7=B0=20=EB=B0=98?= =?UTF-8?q?=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/diary/write/DiaryWriteScreen.kt | 31 ++++++++-------- .../diary/write/components/LabelItem.kt | 28 ++++++++------- .../write/components/LabelSelectionDialog.kt | 35 ++++++++++--------- 3 files changed, 51 insertions(+), 43 deletions(-) diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt index 227444f8..68c1320e 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt @@ -39,13 +39,14 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.boostcamp.dreamteam.dreamdiary.designsystem.theme.DreamdiaryTheme import com.boostcamp.dreamteam.dreamdiary.feature.diary.R import com.boostcamp.dreamteam.dreamdiary.feature.diary.write.components.LabelSelectionDialog import com.boostcamp.dreamteam.dreamdiary.feature.diary.write.model.DiaryWriteEvent import kotlinx.coroutines.flow.collectLatest @Composable -fun DiaryWriteScreen( +internal fun DiaryWriteScreen( viewModel: DiaryWriteViewModel = hiltViewModel(), onBackClick: () -> Unit, ) { @@ -75,7 +76,7 @@ fun DiaryWriteScreen( @OptIn(ExperimentalMaterial3Api::class) @Composable -fun DiaryWriteScreen( +private fun DiaryWriteScreen( title: String, content: String, searchValue: String, @@ -199,7 +200,7 @@ fun DiaryWriteScreen( labelList = listOf("악몽", "개꿈", "귀신"), onDismissRequest = { isLabelSelectionDialogOpen = false }, searchValue = searchValue, - searchValueChange = onSearchValueChange, + onSearchValueChange = onSearchValueChange, selectedLabels = listOf(true, false, false), modifier = Modifier.width(400.dp), ) @@ -209,15 +210,17 @@ fun DiaryWriteScreen( @Composable @Preview(showBackground = true) -fun PreviewDiaryListScreen() { - DiaryWriteScreen( - title = "", - content = "", - searchValue = "", - onTitleChange = {}, - onContentChange = {}, - onClickSave = {}, - onBackClick = {}, - onSearchValueChange = {}, - ) +private fun PreviewDiaryListScreen() { + DreamdiaryTheme { + DiaryWriteScreen( + title = "", + content = "", + searchValue = "", + onTitleChange = {}, + onContentChange = {}, + onClickSave = {}, + onBackClick = {}, + onSearchValueChange = {}, + ) + } } diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt index dbe18d36..e83eb918 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt @@ -11,13 +11,14 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import com.boostcamp.dreamteam.dreamdiary.designsystem.theme.DreamdiaryTheme @Composable internal fun LabelItem( - modifier: Modifier = Modifier, label: String, isChecked: Boolean, - onCheckChanged: (Boolean) -> Unit, + onCheckChange: (Boolean) -> Unit, + modifier: Modifier = Modifier, ) { Row( modifier = modifier, @@ -27,21 +28,22 @@ internal fun LabelItem( Text(text = label) Checkbox( checked = isChecked, - onCheckedChange = onCheckChanged, - modifier = Modifier, + onCheckedChange = onCheckChange, ) } } @Preview(showBackground = true) @Composable -fun LabelItemPreview() { - LabelItem( - modifier = Modifier - .width(200.dp) - .padding(4.dp), - label = "악몽", - isChecked = true, - onCheckChanged = {}, - ) +private fun LabelItemPreview() { + DreamdiaryTheme { + LabelItem( + modifier = Modifier + .width(200.dp) + .padding(4.dp), + label = "악몽", + isChecked = true, + onCheckChange = {}, + ) + } } diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt index 5b5aae89..a109ee91 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt @@ -25,22 +25,22 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog +import com.boostcamp.dreamteam.dreamdiary.designsystem.theme.DreamdiaryTheme @Composable -fun LabelSelectionDialog( +internal fun LabelSelectionDialog( onDismissRequest: () -> Unit, labelList: List, searchValue: String, - searchValueChange: (String) -> Unit, + onSearchValueChange: (String) -> Unit, selectedLabels: List, modifier: Modifier = Modifier, ) { Dialog(onDismissRequest = onDismissRequest) { Surface( - modifier = modifier - .fillMaxWidth(), shape = MaterialTheme.shapes.medium, color = MaterialTheme.colorScheme.surface, + modifier = modifier, ) { Column( modifier = Modifier.verticalScroll(rememberScrollState()), @@ -51,7 +51,7 @@ fun LabelSelectionDialog( ) { TextField( value = searchValue, - onValueChange = { searchValueChange(it) }, + onValueChange = { onSearchValueChange(it) }, modifier = Modifier.fillMaxWidth(), label = { Text("검색") }, trailingIcon = { @@ -81,7 +81,7 @@ fun LabelSelectionDialog( .padding(start = 8.dp), label = label, isChecked = selectedLabels[index], - onCheckChanged = { !selectedLabels[index] }, + onCheckChange = { !selectedLabels[index] }, ) } } @@ -94,7 +94,7 @@ fun LabelSelectionDialog( ) { TextButton(onClick = { onDismissRequest() - searchValueChange("") + onSearchValueChange("") }) { Text("취소") } @@ -109,13 +109,16 @@ fun LabelSelectionDialog( @Preview(showBackground = true) @Composable -fun LabelSelectionDialogPreview() { - LabelSelectionDialog( - onDismissRequest = {}, - labelList = listOf("악몽", "개꿈", "귀신"), - searchValue = "", - searchValueChange = {}, - selectedLabels = listOf(true, false, false), - modifier = Modifier.width(400.dp), - ) +private fun LabelSelectionDialogPreview() { + DreamdiaryTheme { + LabelSelectionDialog( + onDismissRequest = {}, + labelList = listOf("악몽", "개꿈", "귀신"), + searchValue = "", + onSearchValueChange = {}, + selectedLabels = listOf(true, false, false), + modifier = Modifier.width(400.dp), + ) + } + } From b3d007a38dc9dec0110970a46657f6029bbe94e8 Mon Sep 17 00:00:00 2001 From: easyhak Date: Thu, 7 Nov 2024 10:39:59 +0900 Subject: [PATCH 7/9] =?UTF-8?q?style:=20ktlint=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/diary/write/DiaryWriteScreen.kt | 2 +- .../feature/diary/write/DiaryWriteViewModel.kt | 13 +++++++++++-- .../diary/write/components/LabelSelectionDialog.kt | 1 - .../feature/diary/write/model/DiaryWriteUiState.kt | 10 ++++++++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt index 68c1320e..f06162c5 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt @@ -52,7 +52,7 @@ internal fun DiaryWriteScreen( ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() - val (title, content, searchValue, labels, selectedLabels) = uiState + val (title, content, searchValue, labels) = uiState LaunchedEffect(Unit) { viewModel.event.collectLatest { diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteViewModel.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteViewModel.kt index 12031854..b9ce3c13 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteViewModel.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteViewModel.kt @@ -3,6 +3,7 @@ package com.boostcamp.dreamteam.dreamdiary.feature.diary.write import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.boostcamp.dreamteam.dreamdiary.core.domain.usecase.AddDreamDiaryUseCase +import com.boostcamp.dreamteam.dreamdiary.feature.diary.models.LabelUi import com.boostcamp.dreamteam.dreamdiary.feature.diary.write.model.DiaryWriteEvent import com.boostcamp.dreamteam.dreamdiary.feature.diary.write.model.DiaryWriteUiState import dagger.hilt.android.lifecycle.HiltViewModel @@ -36,8 +37,16 @@ class DiaryWriteViewModel @Inject constructor( _uiState.value = _uiState.value.copy(searchValue = searchValue) } - fun setLabels(labels: List) { - _uiState.value = _uiState.value.copy(labels = labels) + fun toggleLabel(labelUi: LabelUi) { + _uiState.value = _uiState.value.copy( + selectableLabels = _uiState.value.selectableLabels.map { + if (it.label.name == labelUi.name) { + it.copy(isSelected = !it.isSelected) + } else { + it + } + }, + ) } fun addDreamDiary() { diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt index a109ee91..9283c6ac 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt @@ -120,5 +120,4 @@ private fun LabelSelectionDialogPreview() { modifier = Modifier.width(400.dp), ) } - } diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/model/DiaryWriteUiState.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/model/DiaryWriteUiState.kt index 93249e35..2c8a3e12 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/model/DiaryWriteUiState.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/model/DiaryWriteUiState.kt @@ -1,9 +1,15 @@ package com.boostcamp.dreamteam.dreamdiary.feature.diary.write.model +import com.boostcamp.dreamteam.dreamdiary.feature.diary.models.LabelUi + data class DiaryWriteUiState( val title: String = "", val content: String = "", val searchValue: String = "", - val labels: List = emptyList(), - val selectedLabels: List = emptyList(), + val selectableLabels: List = emptyList(), +) + +data class SelectableLabel( + val label: LabelUi, + val isSelected: Boolean, ) From 2c6ed3f9c391f1ca77f7bb8a90c2c0cc769b2e28 Mon Sep 17 00:00:00 2001 From: easyhak Date: Thu, 7 Nov 2024 11:49:43 +0900 Subject: [PATCH 8/9] =?UTF-8?q?style:=20toggle=20check=20label=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/diary/write/DiaryWriteScreen.kt | 20 +++++++++++++---- .../diary/write/components/LabelItem.kt | 7 ++++-- .../write/components/LabelSelectionDialog.kt | 22 ++++++++++++------- 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt index f06162c5..22e03684 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/DiaryWriteScreen.kt @@ -41,8 +41,10 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.boostcamp.dreamteam.dreamdiary.designsystem.theme.DreamdiaryTheme import com.boostcamp.dreamteam.dreamdiary.feature.diary.R +import com.boostcamp.dreamteam.dreamdiary.feature.diary.models.LabelUi import com.boostcamp.dreamteam.dreamdiary.feature.diary.write.components.LabelSelectionDialog import com.boostcamp.dreamteam.dreamdiary.feature.diary.write.model.DiaryWriteEvent +import com.boostcamp.dreamteam.dreamdiary.feature.diary.write.model.SelectableLabel import kotlinx.coroutines.flow.collectLatest @Composable @@ -52,7 +54,7 @@ internal fun DiaryWriteScreen( ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() - val (title, content, searchValue, labels) = uiState + val (title, content, searchValue, selectableLabels) = uiState LaunchedEffect(Unit) { viewModel.event.collectLatest { @@ -66,11 +68,13 @@ internal fun DiaryWriteScreen( title = title, content = content, searchValue = searchValue, + selectableLabels = selectableLabels, onTitleChange = viewModel::setTitle, onContentChange = viewModel::setContent, + onCheckChange = viewModel::toggleLabel, + onSearchValueChange = viewModel::setSearchValue, onClickSave = viewModel::addDreamDiary, onBackClick = onBackClick, - onSearchValueChange = viewModel::setSearchValue, ) } @@ -80,8 +84,10 @@ private fun DiaryWriteScreen( title: String, content: String, searchValue: String, + selectableLabels: List, onTitleChange: (String) -> Unit, onContentChange: (String) -> Unit, + onCheckChange: (labelUi: LabelUi) -> Unit, onSearchValueChange: (String) -> Unit, onClickSave: () -> Unit, onBackClick: () -> Unit, @@ -197,11 +203,11 @@ private fun DiaryWriteScreen( } if (isLabelSelectionDialogOpen) { LabelSelectionDialog( - labelList = listOf("악몽", "개꿈", "귀신"), onDismissRequest = { isLabelSelectionDialogOpen = false }, searchValue = searchValue, onSearchValueChange = onSearchValueChange, - selectedLabels = listOf(true, false, false), + selectableLabels = selectableLabels, + onCheckChange = onCheckChange, modifier = Modifier.width(400.dp), ) } @@ -216,8 +222,14 @@ private fun PreviewDiaryListScreen() { title = "", content = "", searchValue = "", + selectableLabels = listOf( + SelectableLabel(LabelUi("악몽"), isSelected = true), + SelectableLabel(LabelUi("개꿈"), isSelected = false), + SelectableLabel(LabelUi("귀신"), isSelected = false), + ), onTitleChange = {}, onContentChange = {}, + onCheckChange = {}, onClickSave = {}, onBackClick = {}, onSearchValueChange = {}, diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt index e83eb918..b5027c06 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt @@ -12,12 +12,13 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.boostcamp.dreamteam.dreamdiary.designsystem.theme.DreamdiaryTheme +import com.boostcamp.dreamteam.dreamdiary.feature.diary.models.LabelUi @Composable internal fun LabelItem( label: String, isChecked: Boolean, - onCheckChange: (Boolean) -> Unit, + onCheckChange: (LabelUi) -> Unit, modifier: Modifier = Modifier, ) { Row( @@ -28,7 +29,9 @@ internal fun LabelItem( Text(text = label) Checkbox( checked = isChecked, - onCheckedChange = onCheckChange, + onCheckedChange = { isChecked -> + onCheckChange(LabelUi(label)) + }, ) } } diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt index 9283c6ac..3d5f180c 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt @@ -26,14 +26,16 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import com.boostcamp.dreamteam.dreamdiary.designsystem.theme.DreamdiaryTheme +import com.boostcamp.dreamteam.dreamdiary.feature.diary.models.LabelUi +import com.boostcamp.dreamteam.dreamdiary.feature.diary.write.model.SelectableLabel @Composable internal fun LabelSelectionDialog( onDismissRequest: () -> Unit, - labelList: List, searchValue: String, + selectableLabels: List, onSearchValueChange: (String) -> Unit, - selectedLabels: List, + onCheckChange: (labelUi: LabelUi) -> Unit, modifier: Modifier = Modifier, ) { Dialog(onDismissRequest = onDismissRequest) { @@ -74,14 +76,14 @@ internal fun LabelSelectionDialog( Spacer(modifier = Modifier.height(8.dp)) Column(modifier = Modifier.fillMaxWidth()) { - labelList.forEachIndexed { index, label -> + selectableLabels.forEachIndexed { index, selectableLabel -> LabelItem( modifier = Modifier .fillMaxWidth() .padding(start = 8.dp), - label = label, - isChecked = selectedLabels[index], - onCheckChange = { !selectedLabels[index] }, + label = selectableLabel.label.name, + isChecked = selectableLabels[index].isSelected, + onCheckChange = onCheckChange, ) } } @@ -113,10 +115,14 @@ private fun LabelSelectionDialogPreview() { DreamdiaryTheme { LabelSelectionDialog( onDismissRequest = {}, - labelList = listOf("악몽", "개꿈", "귀신"), searchValue = "", onSearchValueChange = {}, - selectedLabels = listOf(true, false, false), + onCheckChange = {}, + selectableLabels = listOf( + SelectableLabel(LabelUi("악몽"), isSelected = true), + SelectableLabel(LabelUi("개꿈"), isSelected = false), + SelectableLabel(LabelUi("귀신"), isSelected = false), + ), modifier = Modifier.width(400.dp), ) } From bbac4a4ed21322407518cab8d7201782875777a1 Mon Sep 17 00:00:00 2001 From: easyhak Date: Thu, 7 Nov 2024 12:06:57 +0900 Subject: [PATCH 9/9] =?UTF-8?q?fix:=20naming=20=EB=B3=80=EA=B2=BD,=20item?= =?UTF-8?q?=20label=20row=EA=B0=80=20=ED=81=B4=EB=A6=AD=EB=90=A0=20?= =?UTF-8?q?=EB=95=8C=20=EC=A0=84=EC=B2=B4=EA=B0=80=20=ED=81=B4=EB=A6=AD?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/diary/write/components/LabelItem.kt | 13 +++++++------ .../diary/write/components/LabelSelectionDialog.kt | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt index b5027c06..19b85e8b 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelItem.kt @@ -1,5 +1,6 @@ package com.boostcamp.dreamteam.dreamdiary.feature.diary.write.components +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding @@ -18,20 +19,20 @@ import com.boostcamp.dreamteam.dreamdiary.feature.diary.models.LabelUi internal fun LabelItem( label: String, isChecked: Boolean, - onCheckChange: (LabelUi) -> Unit, + onLabelClick: (LabelUi) -> Unit, modifier: Modifier = Modifier, ) { Row( - modifier = modifier, + modifier = modifier + .clickable { onLabelClick(LabelUi(label)) } + .padding(8.dp), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, ) { Text(text = label) Checkbox( checked = isChecked, - onCheckedChange = { isChecked -> - onCheckChange(LabelUi(label)) - }, + onCheckedChange = null, ) } } @@ -46,7 +47,7 @@ private fun LabelItemPreview() { .padding(4.dp), label = "악몽", isChecked = true, - onCheckChange = {}, + onLabelClick = {}, ) } } diff --git a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt index 3d5f180c..aae617f0 100644 --- a/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt +++ b/feature/diary/src/main/java/com/boostcamp/dreamteam/dreamdiary/feature/diary/write/components/LabelSelectionDialog.kt @@ -83,7 +83,7 @@ internal fun LabelSelectionDialog( .padding(start = 8.dp), label = selectableLabel.label.name, isChecked = selectableLabels[index].isSelected, - onCheckChange = onCheckChange, + onLabelClick = onCheckChange, ) } }