@@ -3,12 +3,18 @@ package com.cherrish.android.presentation.calendar.procedure
33import androidx.activity.compose.BackHandler
44import androidx.compose.foundation.background
55import androidx.compose.foundation.layout.Column
6+ import androidx.compose.foundation.layout.Spacer
67import androidx.compose.foundation.layout.fillMaxSize
78import androidx.compose.foundation.layout.fillMaxWidth
9+ import androidx.compose.foundation.layout.height
10+ import androidx.compose.foundation.layout.imePadding
811import androidx.compose.foundation.layout.navigationBarsPadding
912import androidx.compose.foundation.layout.padding
1013import androidx.compose.foundation.lazy.rememberLazyListState
14+ import androidx.compose.foundation.rememberScrollState
15+ import androidx.compose.foundation.verticalScroll
1116import androidx.compose.material3.ExperimentalMaterial3Api
17+ import androidx.compose.material3.Scaffold
1218import androidx.compose.material3.rememberModalBottomSheetState
1319import androidx.compose.runtime.Composable
1420import androidx.compose.runtime.LaunchedEffect
@@ -143,127 +149,157 @@ fun ProcedureScreen(
143149
144150 BackHandler { onBackClick() }
145151
146- Column (
152+ Scaffold (
147153 modifier = modifier
148154 .fillMaxSize()
149155 .background(CherrishTheme .colors.gray0)
150156 .navigationBarsPadding()
151- .padding(top = 44 .dp, bottom = 20 .dp),
152- horizontalAlignment = Alignment .CenterHorizontally
153- ) {
154- BackAndCloseTopAppBar (
155- title = uiState.title,
156- onBackClick = onBackClick,
157- onCloseClick = onCloseClick
158- )
159-
160- if (uiState.showStepProgressBar) {
161- StepProgressBar (
162- totalStep = uiState.totalSteps,
163- currentStep = uiState.currentStepIndex,
157+ .padding(top = 44 .dp),
158+ containerColor = CherrishTheme .colors.gray0,
159+ bottomBar = {
160+ CherrishButton (
161+ text = if (uiState.step == ProcedureStep .Downtime ) " 완료" else " 다음" ,
162+ onClick = onNextClick,
163+ enabled = uiState.isNextEnabled,
164164 modifier = Modifier
165165 .fillMaxWidth()
166- .padding(horizontal = 26 .dp)
167- .padding(top = 20 .dp)
166+ .padding(horizontal = 24 .dp)
167+ .padding(vertical = 20 .dp)
168+ .background(CherrishTheme .colors.gray0)
168169 )
169170 }
170-
171+ ) { innerPadding ->
171172 Column (
172173 modifier = Modifier
173- .fillMaxWidth ()
174- .padding(top = uiState.contentTopPadding)
175- .weight( 1f )
174+ .fillMaxSize ()
175+ .imePadding(),
176+ horizontalAlignment = Alignment . CenterHorizontally
176177 ) {
177- when (uiState.flow) {
178- ProcedureFlow .Entry -> {
179- ExistenceContent (
180- selectedIndex = uiState.existenceSelectedIndex,
181- onItemClick = onExistenceClick,
178+ BackAndCloseTopAppBar (
179+ title = uiState.title,
180+ onBackClick = onBackClick,
181+ onCloseClick = onCloseClick
182+ )
183+
184+ Column (
185+ modifier = Modifier
186+ .weight(1f )
187+ .fillMaxWidth()
188+ ) {
189+ if (uiState.showStepProgressBar) {
190+ StepProgressBar (
191+ totalStep = uiState.totalSteps,
192+ currentStep = uiState.currentStepIndex,
182193 modifier = Modifier
194+ .fillMaxWidth()
183195 .padding(horizontal = 26 .dp)
184- .padding(bottom = 10 .dp)
196+ .padding(top = 20 .dp)
185197 )
186198 }
187199
188- ProcedureFlow .NoTreat , ProcedureFlow .Treat -> {
189- when (uiState.step) {
190- ProcedureStep .Category -> {
191- CategoryContent (
192- worries = uiState.worries,
193- selectedWorryId = uiState.selectedWorryId,
194- onWorryClick = onWorryClick,
200+ Column (
201+ modifier = Modifier .fillMaxWidth()
202+ ) {
203+ when (uiState.flow) {
204+ ProcedureFlow .Entry -> {
205+ ExistenceContent (
206+ selectedIndex = uiState.existenceSelectedIndex,
207+ onItemClick = onExistenceClick,
195208 modifier = Modifier
209+ .padding(top = uiState.contentTopPadding)
196210 .padding(horizontal = 26 .dp)
197211 .padding(bottom = 10 .dp)
198212 )
199213 }
200214
201- ProcedureStep .RecoverySchedule -> {
202- RecoveryScheduleContent (
203- selectedIndex = uiState.recoverySelectedIndex,
204- onItemClick = onRecoveryOptionClick,
205- year = uiState.year,
206- month = uiState.month,
207- day = uiState.day,
208- onYearChange = onYearChange,
209- onMonthChange = onMonthChange,
210- onDayChange = onDayChange,
211- errorMessage = uiState.dateErrorMessage,
212- modifier = Modifier .padding(horizontal = 26 .dp)
213- )
214- }
215+ ProcedureFlow .NoTreat , ProcedureFlow .Treat -> {
216+ when (uiState.step) {
217+ ProcedureStep .Category -> {
218+ CategoryContent (
219+ worries = uiState.worries,
220+ selectedWorryId = uiState.selectedWorryId,
221+ onWorryClick = onWorryClick,
222+ modifier = Modifier
223+ .padding(top = uiState.contentTopPadding)
224+ .padding(horizontal = 26 .dp)
225+ .padding(bottom = 10 .dp)
226+ )
227+ }
215228
216- ProcedureStep .Filtering -> {
217- FilteringContent (
218- name = uiState.selectedWorryName,
219- cardItems = uiState.procedureItems,
220- selectedCardIds = uiState.selectedProcedureCardIds,
221- onCardClick = onProcedureCardClick,
222- bottomPadding = uiState.lazyColumnBottomPadding,
223- modifier = Modifier .fillMaxWidth()
224- )
225- }
229+ ProcedureStep .RecoverySchedule -> {
230+ Column (
231+ modifier = Modifier
232+ .fillMaxWidth()
233+ .verticalScroll(rememberScrollState())
234+ ) {
235+ RecoveryScheduleContent (
236+ selectedIndex = uiState.recoverySelectedIndex,
237+ onItemClick = onRecoveryOptionClick,
238+ year = uiState.year,
239+ month = uiState.month,
240+ day = uiState.day,
241+ onYearChange = onYearChange,
242+ onMonthChange = onMonthChange,
243+ onDayChange = onDayChange,
244+ errorMessage = uiState.dateErrorMessage,
245+ modifier = Modifier
246+ .padding(top = uiState.contentTopPadding)
247+ .padding(horizontal = 26 .dp)
248+ )
249+ }
250+ }
226251
227- ProcedureStep .FilteringWithSearch -> {
228- FilteringWithSearchContent (
229- cardItems = uiState.procedureItems,
230- selectedCardIds = uiState.selectedProcedureCardIds,
231- onCardClick = onProcedureCardClick,
232- onSearchAction = onSearchAction,
233- query = uiState.searchQuery,
234- searchedQuery = uiState.searchedQuery,
235- onQueryChange = onSearchableQueryChange,
236- bottomContentPadding = uiState.lazyColumnBottomPadding,
237- modifier = Modifier
238- .fillMaxWidth()
239- .padding(horizontal = 24 .dp)
240- )
241- }
252+ ProcedureStep .Filtering -> {
253+ FilteringContent (
254+ name = uiState.selectedWorryName,
255+ cardItems = uiState.procedureItems,
256+ selectedCardIds = uiState.selectedProcedureCardIds,
257+ onCardClick = onProcedureCardClick,
258+ bottomPadding = uiState.lazyColumnBottomPadding,
259+ modifier = Modifier .fillMaxWidth()
260+ .padding(top = uiState.contentTopPadding)
261+ )
262+ }
242263
243- ProcedureStep .Downtime -> {
244- DowntimeContent (
245- cardItems = uiState.selectedProcedureCardItems,
246- selectedCardIds =
247- uiState.procedureDowntimeMap.keys.toImmutableList(),
248- onCardClick = onDowntimeClick,
249- activeCardId = uiState.selectedProcedureForDowntime?.id,
250- isDowntimeBottomSheetVisible = uiState.showDowntimeBottomSheet,
251- modifier = Modifier .fillMaxWidth()
252- )
264+ ProcedureStep .FilteringWithSearch -> {
265+ FilteringWithSearchContent (
266+ cardItems = uiState.procedureItems,
267+ selectedCardIds = uiState.selectedProcedureCardIds,
268+ onCardClick = onProcedureCardClick,
269+ onSearchAction = onSearchAction,
270+ query = uiState.searchQuery,
271+ searchedQuery = uiState.searchedQuery,
272+ onQueryChange = onSearchableQueryChange,
273+ bottomContentPadding = uiState.lazyColumnBottomPadding,
274+ modifier = Modifier
275+ .fillMaxWidth()
276+ .padding(top = uiState.contentTopPadding)
277+ .padding(horizontal = 24 .dp)
278+ )
279+ }
280+
281+ ProcedureStep .Downtime -> {
282+ DowntimeContent (
283+ cardItems = uiState.selectedProcedureCardItems,
284+ selectedCardIds = uiState.procedureDowntimeMap.keys
285+ .toImmutableList(),
286+ onCardClick = onDowntimeClick,
287+ activeCardId = uiState.selectedProcedureForDowntime?.id,
288+ isDowntimeBottomSheetVisible = uiState
289+ .showDowntimeBottomSheet,
290+ modifier = Modifier
291+ .fillMaxWidth()
292+ .padding(top = uiState.contentTopPadding)
293+ )
294+ }
295+ }
253296 }
254297 }
255298 }
256299 }
300+
301+ Spacer (modifier = Modifier .height(innerPadding.calculateBottomPadding()))
257302 }
258- CherrishButton (
259- text = " 다음" ,
260- onClick = onNextClick,
261- enabled = uiState.isNextEnabled,
262- modifier = Modifier
263- .fillMaxWidth()
264- .padding(horizontal = 24 .dp)
265- .padding(top = 24 .dp)
266- )
267303 }
268304
269305 SelectedProcedureBottomSheet (
0 commit comments