Skip to content

Commit

Permalink
[feat] :: 잔류 신청 퍼블리싱
Browse files Browse the repository at this point in the history
  • Loading branch information
parkuiery authored Jan 25, 2025
2 parents 6da8db9 + ef0d218 commit 62eb97a
Show file tree
Hide file tree
Showing 16 changed files with 503 additions and 24 deletions.
1 change: 1 addition & 0 deletions composeApp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ kotlin {
implementation(projects.feature.application)
implementation(projects.feature.notice)
implementation(projects.feature.mypage)
implementation(projects.feature.remain)
}
jvmMain.dependencies {
implementation(compose.desktop.currentOs)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import team.aliens.dms.kmp.feature.signup.navigation.navigateToSetPassword
import team.aliens.dms.kmp.feature.signup.navigation.navigateToSignUp
import team.aliens.dms.kmp.feature.signup.navigation.navigateToTerms
import team.aliens.dms.kmp.root.navigateToRoot
import tema.aliens.dms.kmp.feature.remain.navigation.navigateToRemainApplication

internal class DmsNavigator(
val navController: NavHostController,
Expand Down Expand Up @@ -70,6 +71,10 @@ internal class DmsNavigator(
navController.navigateToNoticeDetails(noticeId = noticeId)
}

fun navigateToRemainApplication() {
navController.navigateToRemainApplication()
}

fun popBackStackIfNotHome() {
if (!isSameCurrentDestination()) {
popBackStack()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import team.aliens.dms.kmp.DmsNavigator
import team.aliens.dms.kmp.feature.notice.navigation.noticeDetails
import team.aliens.dms.kmp.root.NAVIGATION_ROOT
import team.aliens.dms.kmp.root.root
import tema.aliens.dms.kmp.feature.remain.navigation.remainApplication

private const val NAVIGATION_MAIN = "main"

Expand All @@ -16,7 +17,12 @@ internal fun NavGraphBuilder.mainNavigation(
route = NAVIGATION_MAIN,
startDestination = NAVIGATION_ROOT,
) {
root(onNoticeDetailsClick = navigator::navigateToNoticeDetails)
root(
onNavigateRemainApplication = navigator::navigateToRemainApplication,
onNavigateOutingApplication = {},
onNoticeDetailsClick = navigator::navigateToNoticeDetails,
)
noticeDetails()
remainApplication()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,16 @@ import androidx.navigation.compose.composable
const val NAVIGATION_ROOT = "root"

fun NavGraphBuilder.root(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
onNoticeDetailsClick: (Long) -> Unit,
) {
composable(NAVIGATION_ROOT) {
Root(onNoticeDetailClick = onNoticeDetailsClick)
Root(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
onNoticeDetailClick = onNoticeDetailsClick,
)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,21 @@ import team.aliens.dms.kmp.ui.BottomNavigationBar

@Composable
internal fun Root(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
onNoticeDetailClick: (Long) -> Unit,
) {
RootScreen(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
onNoticeDetailClick = onNoticeDetailClick,
)
}

@Composable
private fun RootScreen(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
onNoticeDetailClick: (Long) -> Unit,
) {
val navController: NavHostController = rememberNavController()
Expand All @@ -42,7 +48,10 @@ private fun RootScreen(
.padding(bottom = it.calculateBottomPadding()),
) {
home()
application()
application(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
)
notices(onNoticeDetailsClick = onNoticeDetailClick)
myPage()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package team.aliens.dms.kmp.core.designsystem.float

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Icon
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import org.jetbrains.compose.resources.DrawableResource
import org.jetbrains.compose.resources.painterResource
import team.aliens.dms.kmp.core.designsystem.foundation.DmsIcon
import team.aliens.dms.kmp.core.designsystem.foundation.DmsTheme
import team.aliens.dms.kmp.core.designsystem.foundation.DmsTypography
import team.aliens.dms.kmp.core.designsystem.text.DmsText

@Composable
fun DmsFloatingNotice(
modifier: Modifier = Modifier,
text: String,
iconResource: DrawableResource = DmsIcon.Notification,
) {
Row(
modifier = modifier
.fillMaxWidth()
.background(
color = DmsTheme.colors.primary,
shape = RoundedCornerShape(30.dp),
).padding(
horizontal = 22.dp,
vertical = 12.dp,
),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(14.dp),
) {
Icon(
painter = painterResource(iconResource),
contentDescription = null,
)
DmsText(
text = text,
style = DmsTypography.Body3,
color = DmsTheme.colors.onBackground,
)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package team.aliens.dms.kmp.core.designsystem.tag

import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Surface
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import team.aliens.dms.kmp.core.designsystem.foundation.DmsTheme
import team.aliens.dms.kmp.core.designsystem.foundation.DmsTypography
import team.aliens.dms.kmp.core.designsystem.text.DmsText

@Composable
fun DmsTag(
modifier: Modifier = Modifier,
text: String,
contentPadding: PaddingValues = PaddingValues(horizontal = 16.dp, vertical = 6.dp),
shape: Shape = RoundedCornerShape(24.dp),
backgroundColor: Color = DmsTheme.colors.primary,
contentColor: Color = DmsTheme.colors.inversePrimary,
border: BorderStroke? = null,
elevation: Dp = 0.dp,
) {
Surface(
modifier = modifier,
shape = shape,
color = backgroundColor,
contentColor = contentColor,
border = border,
elevation = elevation,
) {
DmsText(
modifier = Modifier.padding(contentPadding),
text = text,
style = DmsTypography.Caption,
color = DmsTheme.colors.inversePrimary,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@ import team.aliens.dms.kmp.feature.application.ui.Application

const val NAVIGATION_APPLICATION = "application"

fun NavGraphBuilder.application() {
fun NavGraphBuilder.application(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
) {
composable(NAVIGATION_APPLICATION) {
Application()
Application(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,25 @@ import team.aliens.dms.kmp.core.designsystem.button.ButtonType
import team.aliens.dms.kmp.core.designsystem.button.DmsButton
import team.aliens.dms.kmp.core.designsystem.foundation.DmsTheme
import team.aliens.dms.kmp.core.designsystem.foundation.DmsTypography
import team.aliens.dms.kmp.core.designsystem.tag.DmsTag
import team.aliens.dms.kmp.core.designsystem.text.DmsText

@Composable
internal fun Application() {
ApplicationScreen()
internal fun Application(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
) {
ApplicationScreen(
onNavigateRemainApplication = onNavigateRemainApplication,
onNavigateOutingApplication = onNavigateOutingApplication,
)
}

@Composable
private fun ApplicationScreen() {
private fun ApplicationScreen(
onNavigateRemainApplication: () -> Unit,
onNavigateOutingApplication: () -> Unit,
) {
Column(
modifier = Modifier
.fillMaxSize()
Expand All @@ -49,14 +59,14 @@ private fun ApplicationScreen() {
title = "잔류",
description = "주말 기숙사 잔류 여부를 확인하고, 잔류 신청을 통해서 잔류 또는 귀가를 신청해 보세요.",
buttonText = "잔류 신청하기",
onButtonClick = { },
onButtonClick = onNavigateRemainApplication,
)
ApplicationCard(
title = "외출",
appliedTitle = "금요 귀가",
description = "기숙사 생활 중 밖으로 나갈 일이 있다면, 외출 신청을 통해서 외출해 보세요.",
buttonText = "외출 신청하기",
onButtonClick = { },
onButtonClick = onNavigateOutingApplication,
)
}
}
Expand Down Expand Up @@ -102,20 +112,7 @@ private fun ApplicationCard(
)
Spacer(modifier = Modifier.weight(1f))
appliedTitle?.let { text ->
DmsText(
modifier = Modifier
.background(
color = DmsTheme.colors.primary,
shape = RoundedCornerShape(24.dp),
)
.padding(
horizontal = 16.dp,
vertical = 6.dp,
),
text = text,
style = DmsTypography.Caption,
color = DmsTheme.colors.inversePrimary,
)
DmsTag(text = text)
}
}
DmsText(
Expand Down
66 changes: 66 additions & 0 deletions feature/outing/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import team.aliens.dms.kmp.buildsrc.ProjectProperties
import team.aliens.dms.kmp.buildsrc.Versions

plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidLibrary)
alias(libs.plugins.jetbrainsCompose)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.ktlint)
}

kotlin {
androidTarget {
compilations.all {
compileTaskProvider.configure {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_17)
}
}
}
}
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64(),
).forEach {
it.binaries.framework {
baseName = "outing"
isStatic = true
}
}

sourceSets {
commonMain.dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material)
implementation(compose.material3)
implementation(compose.ui)
implementation(libs.navigation.compose)

implementation(libs.koin.core)
implementation(libs.koin.compose)
implementation(libs.koin.compose.viewmodel)

implementation(projects.core.designSystem)
implementation(projects.core.common)
}
commonTest.dependencies {
implementation(libs.kotlin.test)
}
}
}

android {
namespace = "team.aliens.dms.kmp.feature.outing"
compileSdk = ProjectProperties.COMPILE_SDK
defaultConfig {
minSdk = ProjectProperties.MIN_SDK
}
compileOptions {
sourceCompatibility = Versions.java
targetCompatibility = Versions.java
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package team.aliens.dms.kmp.feature.outing

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import team.aliens.dms.kmp.core.designsystem.appbar.DmsTopAppBar
import team.aliens.dms.kmp.core.designsystem.foundation.DmsTheme

@Composable
internal fun OutingApplication(
modifier: Modifier = Modifier,
) {}

@Composable
private fun OutingApplicationScreen(
modifier: Modifier = Modifier,
) {
Column(
modifier = modifier
.fillMaxSize()
.background(DmsTheme.colors.background),
verticalArrangement = Arrangement.Center,
) {
DmsTopAppBar(
title = "외출 신청",
onBackPressed = { },
)
}
}
Loading

0 comments on commit 62eb97a

Please sign in to comment.