From e39245a35dc2ef79db9f619f42a27196b2656245 Mon Sep 17 00:00:00 2001 From: Gael-Android <84790707+Gael-Android@users.noreply.github.com> Date: Sun, 19 Jan 2025 19:56:38 +0900 Subject: [PATCH] =?UTF-8?q?Divider=20=EC=A0=9C=EC=9E=91=20(#16)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add : width를 nullable로 하는 버전 생성 * add : fillMaxWidth인 divider와 너비를 지정할 수 있는 Divider분리 * chore : 프리뷰수정 * chore : 리뷰 반영 --- .idea/deploymentTargetSelector.xml | 16 +++++ .idea/git_toolbox_blame.xml | 6 ++ .idea/gradle.xml | 21 ++++++ .idea/runConfigurations.xml | 13 ++++ .../com/yourssu/handy/demo/DividerPreview.kt | 31 +++++++++ .../com/yourssu/handy/compose/Divider.kt | 65 +++++++++++++++++++ 6 files changed, 152 insertions(+) create mode 100644 .idea/deploymentTargetSelector.xml create mode 100644 .idea/git_toolbox_blame.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 app/src/main/kotlin/com/yourssu/handy/demo/DividerPreview.kt create mode 100644 compose/src/main/kotlin/com/yourssu/handy/compose/Divider.kt diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 00000000..5394540f --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/git_toolbox_blame.xml b/.idea/git_toolbox_blame.xml new file mode 100644 index 00000000..7dc12496 --- /dev/null +++ b/.idea/git_toolbox_blame.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..a4253118 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 00000000..931b96c3 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/kotlin/com/yourssu/handy/demo/DividerPreview.kt b/app/src/main/kotlin/com/yourssu/handy/demo/DividerPreview.kt new file mode 100644 index 00000000..c7fbb740 --- /dev/null +++ b/app/src/main/kotlin/com/yourssu/handy/demo/DividerPreview.kt @@ -0,0 +1,31 @@ +package com.yourssu.handy.demo + +import androidx.compose.foundation.layout.Column +import androidx.compose.runtime.Composable +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.yourssu.handy.compose.Divider +import com.yourssu.handy.compose.DividerThickness +import com.yourssu.handy.compose.HandyTheme +import com.yourssu.handy.compose.Text + +@Preview(showBackground = true) +@Composable +fun DividerExample() { + Column { + Text("Section 1") + Divider( + dividerThickness = DividerThickness.TWO, + width = 100.dp, + color = HandyTheme.colors.bgBasicBlack + ) + Text("Section 2") + Divider( + dividerThickness = DividerThickness.FOUR, + width = 200.dp, + color = HandyTheme.colors.bgBasicBlack + ) + Text("Section 3") + Divider(dividerThickness = DividerThickness.EIGHT, color = HandyTheme.colors.bgBasicBlack) + } +} diff --git a/compose/src/main/kotlin/com/yourssu/handy/compose/Divider.kt b/compose/src/main/kotlin/com/yourssu/handy/compose/Divider.kt new file mode 100644 index 00000000..3f52cc10 --- /dev/null +++ b/compose/src/main/kotlin/com/yourssu/handy/compose/Divider.kt @@ -0,0 +1,65 @@ +package com.yourssu.handy.compose + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp + +/** + * Divider의 두께를 정의하는 enum class + */ +enum class DividerThickness( + val size: Dp +) { + ONE(1.dp), + TWO(2.dp), + FOUR(4.dp), + EIGHT(8.dp), +} + +/** + * width를 지정할 수 있는 Divider + * @param width Divider의 너비 + * @param color Divider의 색상 + * @param dividerThickness Divider의 두께 + */ +@Composable +fun Divider( + dividerThickness: DividerThickness, + modifier: Modifier = Modifier, + width: Dp = 0.dp, + color: Color = HandyTheme.colors.bgBasicStrong, +) { + Box( + modifier = modifier + .width(width) + .height(dividerThickness.size) + .background(color) + ) +} + +/** + * width를 지정할 수 없는 Divider + * 기본적으로 fillMaxWidth를 사용 + * @param color Divider의 색상 + * @param dividerThickness Divider의 두께 + */ +@Composable +fun Divider( + dividerThickness: DividerThickness, + modifier: Modifier = Modifier, + color: Color = HandyTheme.colors.bgBasicStrong, +) { + Box( + modifier = modifier + .fillMaxWidth() + .height(dividerThickness.size) + .background(color) + ) +} \ No newline at end of file