Skip to content

Commit b05655e

Browse files
authored
[feature/add-empty-view] Add Empty View in LazyColumn (#19)
* Apply internal modifier to DeleteTaskDialog * Make EmptyTaskView * Fix alpha of background and add item in list
1 parent 74a2e46 commit b05655e

File tree

5 files changed

+88
-1
lines changed

5 files changed

+88
-1
lines changed

core/designsystem/src/main/java/com/conf/mad/todo/designsystem/Color.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ val Pink = Color(0xFFFFD2D2)
1010
val Blue = Color(0xFF5182FF)
1111
val SkyBlue = Color(0xFFE2EFFF)
1212
val LightBlue = Color(0xFFF8FBFF)
13+
val AshBlue = Color(0xFFC9DBF0)
1314

1415
// Gray Scale
1516
val Black = Color(0xFF000000)

feature/home/src/main/java/com/conf/mad/todo/home/HomeScreen.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ import androidx.hilt.navigation.compose.hiltViewModel
1919
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2020
import androidx.navigation.NavGraphBuilder
2121
import androidx.navigation.compose.composable
22+
import com.conf.mad.todo.designsystem.SkyBlue
2223
import com.conf.mad.todo.designsystem.TodoTheme
2324
import com.conf.mad.todo.designsystem.preview.DevicePreview
2425
import com.conf.mad.todo.home.component.DeleteTaskDialog
26+
import com.conf.mad.todo.home.component.EmptyTaskView
2527
import com.conf.mad.todo.home.component.HomeBottomAppBar
2628
import com.conf.mad.todo.home.component.HomeTopAppBar
2729
import com.conf.mad.todo.home.component.TaskItem
@@ -124,6 +126,17 @@ fun HomeScreen(
124126
)
125127
Spacer(modifier = Modifier.height(12.dp))
126128
}
129+
if (todos.isEmpty()) {
130+
item(key = "empty todo view") {
131+
EmptyTaskView(
132+
modifier = Modifier
133+
.background(SkyBlue.copy(alpha = 0.2f))
134+
.fillMaxWidth()
135+
.padding(top = 20.dp)
136+
.height(128.dp)
137+
)
138+
}
139+
}
127140
items(todos, key = { it.id ?: UNDEFINED_ID }) { todo ->
128141
TaskItem(
129142
modifier = Modifier.fillMaxWidth(),
@@ -155,6 +168,17 @@ fun HomeScreen(
155168
)
156169
Spacer(modifier = Modifier.height(12.dp))
157170
}
171+
if (completedTasks.isEmpty()) {
172+
item(key = "empty completed task view") {
173+
EmptyTaskView(
174+
modifier = Modifier
175+
.background(SkyBlue.copy(alpha = 0.2f))
176+
.fillMaxWidth()
177+
.padding(top = 20.dp)
178+
.height(128.dp)
179+
)
180+
}
181+
}
158182
items(completedTasks) { task ->
159183
TaskItem(
160184
modifier = Modifier.fillMaxWidth(),

feature/home/src/main/java/com/conf/mad/todo/home/component/DeleteTaskDialog.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import com.conf.mad.todo.designsystem.TodoTheme
2424
import com.conf.mad.todo.designsystem.preview.DevicePreview
2525

2626
@Composable
27-
fun DeleteTaskDialog(
27+
internal fun DeleteTaskDialog(
2828
onDismissRequest: () -> Unit,
2929
onConfirm: () -> Unit
3030
) {
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.conf.mad.todo.home.component
2+
3+
import androidx.compose.foundation.Image
4+
import androidx.compose.foundation.background
5+
import androidx.compose.foundation.layout.Column
6+
import androidx.compose.foundation.layout.Spacer
7+
import androidx.compose.foundation.layout.fillMaxWidth
8+
import androidx.compose.foundation.layout.height
9+
import androidx.compose.foundation.layout.padding
10+
import androidx.compose.material3.Text
11+
import androidx.compose.runtime.Composable
12+
import androidx.compose.ui.Alignment
13+
import androidx.compose.ui.Modifier
14+
import androidx.compose.ui.res.painterResource
15+
import androidx.compose.ui.unit.dp
16+
import com.conf.mad.todo.designsystem.AshBlue
17+
import com.conf.mad.todo.designsystem.SkyBlue
18+
import com.conf.mad.todo.designsystem.TodoTheme
19+
import com.conf.mad.todo.designsystem.preview.ComponentPreview
20+
import com.conf.mad.todo.home.R
21+
22+
@Composable
23+
internal fun EmptyTaskView(
24+
modifier: Modifier = Modifier,
25+
) {
26+
Column(modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally) {
27+
Image(
28+
painter = painterResource(id = R.drawable.ic_clip),
29+
contentDescription = "Empty View",
30+
modifier = Modifier.padding(vertical = 18.dp)
31+
)
32+
Spacer(modifier = Modifier.height(4.dp))
33+
Text(
34+
text = "투두를 추가해보세요",
35+
style = TodoTheme.typography.medium2,
36+
color = AshBlue
37+
)
38+
}
39+
}
40+
41+
@ComponentPreview
42+
@Composable
43+
private fun EmptyTaskPreview() {
44+
TodoTheme {
45+
EmptyTaskView(
46+
modifier = Modifier
47+
.background(SkyBlue.copy(alpha = 0.3f))
48+
.fillMaxWidth()
49+
.padding(top = 20.dp)
50+
.height(128.dp)
51+
)
52+
}
53+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="72dp"
3+
android:height="19dp"
4+
android:viewportWidth="72"
5+
android:viewportHeight="19">
6+
<path
7+
android:pathData="M59.243,0C67.703,0 71.915,2.988 71.915,8.892V9.504C71.915,15.552 67.703,18.612 59.243,18.612H12.731C10.751,18.612 9.023,18.396 7.475,18.036C5.963,17.64 4.739,17.172 3.803,16.56C2.903,15.984 2.147,15.264 1.535,14.436C0.959,13.608 0.563,12.816 0.347,11.988C0.131,11.196 0.023,10.368 0.023,9.504V8.892C0.023,8.028 0.131,7.2 0.347,6.408C0.563,5.652 0.959,4.824 1.535,4.032C2.111,3.24 2.867,2.52 3.803,1.944C4.703,1.368 5.927,0.9 7.439,0.54C8.987,0.18 10.715,0 12.695,0H59.243ZM65.291,9.288V9.144C65.291,8.028 64.787,7.056 63.743,6.3C62.807,5.58 61.259,5.22 59.171,5.148C59.027,5.148 13.487,5.148 13.343,5.148H13.307C10.931,5.148 9.203,5.544 8.195,6.3C7.187,7.056 6.683,7.992 6.683,9.144V9.288C6.683,10.404 7.187,11.376 8.231,12.168C9.239,12.996 10.931,13.392 13.307,13.392C13.487,13.392 59.063,13.392 59.243,13.392C61.331,13.32 62.807,12.924 63.743,12.168C64.787,11.376 65.291,10.404 65.291,9.288ZM29.723,12.708L34.691,5.868H42.179L37.211,12.708H29.723Z"
8+
android:fillColor="#E2EFFF"/>
9+
</vector>

0 commit comments

Comments
 (0)