Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into ui/#53-basic-dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
arinming committed Jul 12, 2024
2 parents 45e3c59 + 97777a2 commit d2c0fdd
Show file tree
Hide file tree
Showing 7 changed files with 277 additions and 60 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
package com.terning.core.designsystem.component.item

import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.terning.core.R
import com.terning.core.designsystem.theme.CalBlue1
import com.terning.core.designsystem.theme.CalBlue2
import com.terning.core.designsystem.theme.CalGreen1
import com.terning.core.designsystem.theme.CalGreen2
import com.terning.core.designsystem.theme.CalOrange1
import com.terning.core.designsystem.theme.CalOrange2
import com.terning.core.designsystem.theme.CalPink
import com.terning.core.designsystem.theme.CalPurple
import com.terning.core.designsystem.theme.CalRed
import com.terning.core.designsystem.theme.CalYellow
import com.terning.core.extension.noRippleClickable

@Composable
fun ColorPalette(
modifier: Modifier = Modifier,
onColorSelected:(Color) -> Unit = {}
) {
val colorList = listOf(
CalRed,
CalOrange2,
CalGreen1,
CalBlue1,
CalPurple,
CalOrange1,
CalYellow,
CalGreen2,
CalBlue2,
CalPink
)

RadioButtonGroups(
modifier = modifier.size(251.dp, 84.dp),
options = colorList,
gridCellCount = 5,
onOptionSelected = { color ->
onColorSelected(color)
},
buttonComposable = {
color, isSelected, onOptionSelected ->
ColorButton(
color = color,
isSelected = isSelected,
onColorSelected = onOptionSelected)
},
verticalArrangementSpace = 6.dp,
horizontalArrangementSpace = 14.dp,
)
}

@Composable
internal fun ColorButton(
modifier: Modifier = Modifier,
color: Color,
isSelected: Boolean,
onColorSelected: (Color) -> Unit
) {
Box(modifier = modifier.size(39.dp)) {
Box(
modifier = Modifier
.size(39.dp)
.background(shape = CircleShape, color = color)
.noRippleClickable {
onColorSelected(color)
},
contentAlignment = Alignment.Center
) {
if (isSelected) {
Image(
painter = painterResource(id = R.drawable.ic_color_check),
contentDescription = ""
)
}
}
}
}


@Preview(showBackground = true)
@Composable
fun ColorPalettePreview() {
ColorPalette()
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.terning.core.designsystem.component.item

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.lazy.grid.GridCells
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
import androidx.compose.foundation.lazy.grid.items
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.Modifier
import androidx.compose.ui.unit.Dp

@Composable
fun <T> RadioButtonGroups(
options: List<T>,
buttonComposable: @Composable (T, Boolean, (T) -> Unit) -> Unit,
gridCellCount: Int,
verticalArrangementSpace: Dp,
horizontalArrangementSpace: Dp,
modifier: Modifier = Modifier,
onOptionSelected: (T) -> Unit = {},

) {
var selectedOption by remember { mutableStateOf(options[0]) }

LazyVerticalGrid(
columns = GridCells.Fixed(gridCellCount),
verticalArrangement = Arrangement.spacedBy(verticalArrangementSpace),
horizontalArrangement = Arrangement.spacedBy(horizontalArrangementSpace),
modifier = modifier
) {
items(options) { option ->
buttonComposable(
option,
(selectedOption == option),
) {
selectedOption = option
onOptionSelected(option)
}
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ val BackgroundColor = Color(0x4C000000)
// Calendar Color
val CalRed = Color(0xFFED4E54)
val CalOrange1 = Color(0xFFEE7647)
val CalOrange2 = Color(0xFF5397F3)
val CalOrange2 = Color(0xFFF3A649)
val CalYellow = Color(0xFFF5E660)
val CalGreen1 = Color(0xFFC4E953)
val CalGreen2 = Color(0xFF84D558)
val CalBlue1 = Color(0xFF45D0CC)
val CalBlue2 = Color(0xFF4119F2)
val CalBlue2 = Color(0xFF4AA9F2)
val CalPurple = Color(0xFF9B64E2)
val CalPink = Color(0xFFF260AC)

Expand Down
9 changes: 9 additions & 0 deletions core/src/main/res/drawable/ic_color_check.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="13dp"
android:viewportWidth="16"
android:viewportHeight="13">
<path
android:pathData="M14.698,0.197C14.448,0.247 14.202,0.381 14.049,0.608L7.196,10.743C6.994,11.041 6.732,11.046 6.475,10.793L2.671,7.047C2.282,6.665 1.63,6.667 1.239,7.052C0.849,7.437 0.846,8.079 1.235,8.461L5.039,12.208C6.184,13.334 7.94,13.155 8.845,11.821L15.734,1.711C16.04,1.258 15.913,0.627 15.457,0.326C15.228,0.176 14.949,0.147 14.698,0.197Z"
android:fillColor="#ffffff"/>
</vector>
99 changes: 84 additions & 15 deletions feature/src/main/java/com/terning/feature/home/home/HomeRoute.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,71 @@ package com.terning.feature.home.home

import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.terning.core.designsystem.component.bottomsheet.SortingBottomSheet
import com.terning.core.designsystem.component.button.SortingButton
import com.terning.core.designsystem.component.item.InternItem
import com.terning.core.designsystem.component.topappbar.LogoTopAppBar
import com.terning.core.designsystem.theme.Black
import com.terning.core.designsystem.theme.Grey150
import com.terning.core.designsystem.theme.Grey200
import com.terning.core.designsystem.theme.TerningTheme
import com.terning.core.designsystem.theme.White
import com.terning.core.extension.customShadow
import com.terning.feature.R
import com.terning.feature.home.home.component.HomeFilteringScreen
import com.terning.feature.home.home.component.HomeTodayIntern

@Composable
fun HomeRoute() {
HomeScreen()
val currentSortBy: MutableState<Int> = remember {
mutableStateOf(0)
}

HomeScreen(currentSortBy)
}

@OptIn(ExperimentalFoundationApi::class)
@Composable
fun HomeScreen() {
fun HomeScreen(
currentSortBy: MutableState<Int>,
modifier: Modifier = Modifier,
) {
var sheetState by remember { mutableStateOf(false) }

if (sheetState) {
SortingBottomSheet(
onDismiss = {
sheetState = false
},
currentSortBy = currentSortBy.value,
newSortBy = currentSortBy
)
}

Scaffold(
modifier = Modifier,
topBar = {
Expand All @@ -40,7 +76,9 @@ fun HomeScreen() {
LazyColumn(
modifier = Modifier
.fillMaxSize()
.padding(top = paddingValues.calculateTopPadding())
.padding(top = paddingValues.calculateTopPadding()),
contentPadding = PaddingValues(2.dp),
verticalArrangement = Arrangement.spacedBy(12.dp)
) {
item {
Column(
Expand All @@ -49,9 +87,10 @@ fun HomeScreen() {
) {
Text(
text = stringResource(
id = R.string.home_today_title,"๋‚จ์ง€์šฐ"),
id = R.string.home_today_title, "๋‚จ์ง€์šฐ"
),
modifier = Modifier
.padding(top = 11.dp)
.padding(top = 11.dp, bottom = 19.dp)
.padding(horizontal = 24.dp),
style = TerningTheme.typography.title1,
color = Black,
Expand All @@ -69,7 +108,7 @@ fun HomeScreen() {
style = TerningTheme.typography.detail2,
color = Black,
modifier = Modifier
.padding(top = 25.dp)
.padding(top = 9.dp)
.padding(horizontal = 24.dp),
)

Expand All @@ -95,19 +134,49 @@ fun HomeScreen() {
modifier = Modifier
.fillMaxWidth(),
)

Row(
modifier = Modifier
.fillMaxWidth(),
horizontalArrangement = Arrangement.End,
) {
SortingButton(
sortBy = currentSortBy.value,
onCLick = { sheetState = true },
modifier = Modifier
.padding(vertical = 4.dp)
)
Spacer(modifier = Modifier.padding(9.dp))
}
}
}

items(10) {
TerningPostItem(
imageUrl = "https://reqres.in/img/faces/7-image.jpg",
title = "[Someone] ์ฝ˜ํ…์ธ  ๋งˆ์ผ€ํ„ฐ ๋Œ€ํ•™์ƒ ์ธํ„ด ์ฑ„์šฉ",
dateDeadline = "2",
workingPeriod = "2๊ฐœ์›”",
isScraped = false,
)
items(itemCount) {
Box(
modifier = modifier
.height(92.dp)
.padding(horizontal = 24.dp)
.customShadow(
color = Grey200,
shadowRadius = 10.dp,
shadowWidth = 2.dp
)
.background(
color = White,
shape = RoundedCornerShape(10.dp)
)
) {
InternItem(
imageUrl = "https://reqres.in/img/faces/7-image.jpg",
title = "[Someone] ์ฝ˜ํ…์ธ  ๋งˆ์ผ€ํ„ฐ ๋Œ€ํ•™์ƒ ์ธํ„ด ์ฑ„์šฉ",
dateDeadline = "2",
workingPeriod = "2",
isScraped = false,
)
}
}
}

}
}

private const val itemCount = 10
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,24 @@ package com.terning.feature.home.home.component
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.terning.core.designsystem.theme.CalYellow

@Composable
fun HomeTodayIntern() {
LazyRow(
horizontalArrangement = Arrangement.spacedBy(12.dp),
contentPadding = PaddingValues(horizontal = 24.dp),
modifier = Modifier
.fillMaxWidth()
.padding(top = 19.dp),
.fillMaxWidth(),
) {
items(5) {
HomeTodayInternItem("[์œ ํ•œํ‚ด๋ฒŒ๋ฆฌ] ๊ทธ๋ฆฐ์บ ํ”„ w.๋Œ€ํ•™์ƒ ์ˆฒํ™œ๋™๊ฐ€ ๋ชจ์ง‘")
items(todayInternItemCount) {
HomeTodayInternItem("[์œ ํ•œํ‚ด๋ฒŒ๋ฆฌ] ๊ทธ๋ฆฐ์บ ํ”„ w.๋Œ€ํ•™์ƒ ์ˆฒํ™œ๋™๊ฐ€ ๋ชจ์ง‘", CalYellow)
}
}
}

private const val todayInternItemCount = 5
Loading

0 comments on commit d2c0fdd

Please sign in to comment.