From ef4d2f058971da20b34dcc3380d028980b5febe0 Mon Sep 17 00:00:00 2001 From: Wooyoung Myung Date: Sat, 31 Aug 2024 13:06:02 +0900 Subject: [PATCH] =?UTF-8?q?kuring-210=20=ED=95=99=EA=B3=BC=20=ED=81=B4?= =?UTF-8?q?=EB=A6=AD=20=EC=98=81=EC=97=AD=EC=9D=84=20=EB=84=93=ED=9E=98=20?= =?UTF-8?q?(#313)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feature: 학과 아이템 전체를 클릭할 수 있는 기능 추가 * feature: 학과 아이템 전체를 클릭할 수 있도록 구현 --- .../components/DepartmentItems.kt | 88 +++++++------------ 1 file changed, 34 insertions(+), 54 deletions(-) diff --git a/core/designsystem/src/main/java/com/ku_stacks/ku_ring/designsystem/components/DepartmentItems.kt b/core/designsystem/src/main/java/com/ku_stacks/ku_ring/designsystem/components/DepartmentItems.kt index b5884db47..0d1bf91c5 100644 --- a/core/designsystem/src/main/java/com/ku_stacks/ku_ring/designsystem/components/DepartmentItems.kt +++ b/core/designsystem/src/main/java/com/ku_stacks/ku_ring/designsystem/components/DepartmentItems.kt @@ -3,24 +3,12 @@ package com.ku_stacks.ku_ring.designsystem.components import androidx.compose.animation.Crossfade import androidx.compose.foundation.background import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.RowScope -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Icon -import androidx.compose.material.IconButton import androidx.compose.material.Text import androidx.compose.material.minimumInteractiveComponentSize -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.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -65,9 +53,10 @@ fun DepartmentWithAddIcon( BaseDepartment( department = department, modifier = modifier, + onClick = { onAddDepartment(department) } ) { Spacer(modifier = Modifier.weight(1f)) - AddIconButton(onClick = { onAddDepartment(department) }) + AddIcon() } } @@ -80,6 +69,7 @@ fun DepartmentWithCheckOrUncheckIcon( BaseDepartment( department = department, modifier = modifier, + onClick = { onClickDepartment(department) } ) { Spacer(modifier = Modifier.weight(1f)) Crossfade( @@ -87,9 +77,9 @@ fun DepartmentWithCheckOrUncheckIcon( label = "department check/uncheck", ) { if (it) { - CheckIconButton(onClick = { onClickDepartment(department) }) + CheckIcon() } else { - UncheckIconButton(onClick = { onClickDepartment(department) }) + UncheckIcon() } } } @@ -104,12 +94,14 @@ fun DepartmentWithCheckIcon( BaseDepartment( department = department, modifier = modifier, + onClick = { onClickDepartment(department) }, + role = Role.Checkbox, ) { if (department.isSelected) { SelectedDepartmentMark() } Spacer(modifier = Modifier.weight(1f)) - CheckIconButton(onClick = { onClickDepartment(department) }) + CheckIcon() } } @@ -159,67 +151,55 @@ private fun DeleteButton( } @Composable -private fun AddIconButton( - onClick: () -> Unit, +private fun AddIcon( modifier: Modifier = Modifier, contentDescription: String? = null, ) { - IconButton( - onClick = onClick, - modifier = modifier, - ) { - Icon( - painter = painterResource(id = R.drawable.ic_plus_v2), - contentDescription = contentDescription, - tint = KuringTheme.colors.gray300, - ) - } + Icon( + painter = painterResource(id = R.drawable.ic_plus_v2), + contentDescription = contentDescription, + tint = KuringTheme.colors.gray300, + modifier = modifier.minimumInteractiveComponentSize(), + ) } @Composable -private fun CheckIconButton( - onClick: () -> Unit, +private fun CheckIcon( modifier: Modifier = Modifier, contentDescription: String? = null, ) { - IconButton( - onClick = onClick, - modifier = modifier, - ) { - Icon( - painter = painterResource(id = R.drawable.ic_check_circle_fill_v2), - contentDescription = contentDescription, - tint = KuringTheme.colors.mainPrimary, - ) - } + Icon( + painter = painterResource(id = R.drawable.ic_check_circle_fill_v2), + contentDescription = contentDescription, + tint = KuringTheme.colors.mainPrimary, + modifier = modifier.minimumInteractiveComponentSize(), + ) } @Composable -private fun UncheckIconButton( - onClick: () -> Unit, +private fun UncheckIcon( modifier: Modifier = Modifier, contentDescription: String? = null, ) { - IconButton( - onClick = onClick, - modifier = modifier, - ) { - Icon( - painter = painterResource(id = R.drawable.ic_check_circle_fill_2_v2), - contentDescription = contentDescription, - tint = KuringTheme.colors.gray300, - ) - } + Icon( + painter = painterResource(id = R.drawable.ic_check_circle_fill_2_v2), + contentDescription = contentDescription, + tint = KuringTheme.colors.gray300, + modifier = modifier.minimumInteractiveComponentSize(), + ) } @Composable private fun BaseDepartment( department: Department, modifier: Modifier = Modifier, + onClick: (() -> Unit)? = null, + role: Role? = if (onClick == null) null else Role.Button, contents: @Composable RowScope.() -> Unit = {}, ) { Row( modifier = modifier + .clickable(enabled = onClick != null, onClick = { onClick?.invoke() }, role = role) .background(KuringTheme.colors.background) .padding(horizontal = 24.dp), verticalAlignment = Alignment.CenterVertically,