Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.into.websoso.core.designsystem.theme.WebsosoTheme
import com.into.websoso.core.designsystem.theme.White
import com.into.websoso.feature.collection.component.CollectionCreateAppBar
import com.into.websoso.feature.collection.component.CollectionAppBar
import com.into.websoso.feature.collection.component.CollectionDescriptionInput
import com.into.websoso.feature.collection.component.CollectionNameInput
import com.into.websoso.feature.collection.component.CollectionNovelSection
Expand All @@ -24,6 +24,7 @@ import com.into.websoso.feature.collection.component.CollectionPrivacySetting
@Composable
internal fun CollectionCreateScreen(
onNavigateBack: () -> Unit,
onNavigateToNovelSearch: () -> Unit,
modifier: Modifier = Modifier,
) {
var isPrivate by rememberSaveable { mutableStateOf(false) }
Expand All @@ -36,7 +37,10 @@ internal fun CollectionCreateScreen(
.background(White)
.statusBarsPadding(),
) {
CollectionCreateAppBar(onNavigateBack = onNavigateBack)
CollectionAppBar(
actionLabel = "완료",
onNavigateBack = onNavigateBack,
)
CollectionPrivacySetting(
isPrivate = isPrivate,
onPrivateChange = { isPrivate = it },
Expand All @@ -60,6 +64,7 @@ internal fun CollectionCreateScreen(
),
)
CollectionNovelSection(
onAddNovelClick = onNavigateToNovelSearch,
modifier = Modifier.padding(
start = 20.dp,
top = 30.dp,
Expand All @@ -73,6 +78,9 @@ internal fun CollectionCreateScreen(
@Composable
private fun CollectionCreateScreenPreview() {
WebsosoTheme {
CollectionCreateScreen(onNavigateBack = {})
CollectionCreateScreen(
onNavigateBack = {},
onNavigateToNovelSearch = {},
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import androidx.navigation.compose.rememberNavController

private const val COLLECTION_ROUTE = "collection"
private const val COLLECTION_CREATE_ROUTE = "collection/create"
private const val COLLECTION_NOVEL_SEARCH_ROUTE = "collection/create/novel-search"

@Composable
fun CollectionNavHost(
Expand All @@ -32,6 +33,14 @@ fun CollectionNavHost(
composable(route = COLLECTION_CREATE_ROUTE) {
CollectionCreateScreen(
onNavigateBack = navController::popBackStack,
onNavigateToNovelSearch = {
navController.navigate(COLLECTION_NOVEL_SEARCH_ROUTE)
},
)
}
composable(route = COLLECTION_NOVEL_SEARCH_ROUTE) {
CollectionNovelSearchScreen(
onNavigateBack = navController::popBackStack,
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.into.websoso.feature.collection

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.into.websoso.core.designsystem.theme.WebsosoTheme
import com.into.websoso.core.designsystem.theme.White
import com.into.websoso.feature.collection.component.CollectionAppBar
import com.into.websoso.feature.collection.component.CollectionNovelSearchField

@Composable
internal fun CollectionNovelSearchScreen(
onNavigateBack: () -> Unit,
modifier: Modifier = Modifier,
) {
var searchQuery by rememberSaveable(stateSaver = TextFieldValue.Saver) {
mutableStateOf(TextFieldValue())
}
val searchFocusRequester = remember { FocusRequester() }
val keyboardController = LocalSoftwareKeyboardController.current

LaunchedEffect(Unit) {
searchFocusRequester.requestFocus()
keyboardController?.show()
}

Column(
modifier = modifier
.fillMaxSize()
.background(White)
.statusBarsPadding(),
) {
CollectionAppBar(
title = "작품 리스트",
actionLabel = "완료",
onNavigateBack = onNavigateBack,
isActionEnabled = false,
)
CollectionNovelSearchField(
value = searchQuery,
onValueChange = { searchQuery = it },
onClearClick = { searchQuery = TextFieldValue() },
focusRequester = searchFocusRequester,
modifier = Modifier.padding(
start = 20.dp,
top = 10.dp,
end = 20.dp,
),
)
}
}

@Preview(showBackground = true)
@Composable
private fun CollectionNovelSearchScreenPreview() {
WebsosoTheme {
CollectionNovelSearchScreen(onNavigateBack = {})
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@ fun CollectionScreen(
.background(White)
.statusBarsPadding(),
) {
CollectionAppBar(onNavigateBack = onNavigateBack)
CollectionAppBar(
title = "컬렉션",
onNavigateBack = onNavigateBack,
)
CollectionTabRow(
selectedTab = selectedTab,
onTabSelected = { selectedTab = it },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,18 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.into.websoso.core.designsystem.theme.Black
import com.into.websoso.core.designsystem.theme.Gray100
import com.into.websoso.core.designsystem.theme.Primary100
import com.into.websoso.core.designsystem.theme.WebsosoTheme
import com.into.websoso.core.designsystem.theme.White
import com.into.websoso.core.resource.R.drawable.ic_navigate_left

@Composable
internal fun CollectionAppBar(
title: String? = null,
actionLabel: String? = null,
onNavigateBack: () -> Unit,
isActionEnabled: Boolean = false,
modifier: Modifier = Modifier,
) {
Box(
Expand All @@ -45,18 +50,34 @@ internal fun CollectionAppBar(
modifier = Modifier.size(24.dp),
)
}
Text(
text = "컬렉션",
color = Black,
style = WebsosoTheme.typography.title2,
)
title?.let {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

null을 허용할 필요가있을까요?

Text(
text = it,
color = Black,
style = WebsosoTheme.typography.title2,
)
}
actionLabel?.let {
Text(
text = it,
color = if (isActionEnabled) Primary100 else Gray100,
style = WebsosoTheme.typography.title2,
modifier = Modifier
.align(Alignment.CenterEnd)
.padding(horizontal = 20.dp),
)
}
}
}

@Preview(showBackground = true)
@Composable
private fun CollectionAppBarPreview() {
WebsosoTheme {
CollectionAppBar(onNavigateBack = {})
CollectionAppBar(
title = "작품 리스트",
actionLabel = "완료",
onNavigateBack = {},
)
}
}

This file was deleted.

Loading
Loading