Skip to content

Commit dc71050

Browse files
committed
[BOOK-247] feat: 기록 화면 내 하단 버튼 항상 하단에 위치하도록 변경
1 parent 4db3fff commit dc71050

File tree

3 files changed

+197
-178
lines changed

3 files changed

+197
-178
lines changed

feature/record/src/main/kotlin/com/ninecraft/booket/feature/record/step/EmotionStep.kt

Lines changed: 63 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -42,74 +42,76 @@ fun EmotionStep(
4242
state: RecordRegisterUiState,
4343
modifier: Modifier = Modifier,
4444
) {
45-
LazyColumn(
45+
Box(
4646
modifier = modifier
4747
.fillMaxSize()
48-
.background(White)
49-
.padding(horizontal = ReedTheme.spacing.spacing5),
48+
.background(White),
5049
) {
51-
item {
52-
Text(
53-
text = stringResource(R.string.emotion_step_title),
54-
color = ReedTheme.colors.contentPrimary,
55-
style = ReedTheme.typography.heading1Bold,
56-
)
57-
}
58-
item {
59-
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing1))
60-
}
61-
item {
62-
Text(
63-
text = stringResource(R.string.emotion_step_description),
64-
color = ReedTheme.colors.contentTertiary,
65-
style = ReedTheme.typography.label1Medium,
66-
)
67-
}
68-
item {
69-
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing10))
70-
}
50+
LazyColumn(
51+
modifier = Modifier
52+
.fillMaxSize()
53+
.padding(horizontal = ReedTheme.spacing.spacing5),
54+
) {
55+
item {
56+
Text(
57+
text = stringResource(R.string.emotion_step_title),
58+
color = ReedTheme.colors.contentPrimary,
59+
style = ReedTheme.typography.heading1Bold,
60+
)
61+
}
62+
item {
63+
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing1))
64+
}
65+
item {
66+
Text(
67+
text = stringResource(R.string.emotion_step_description),
68+
color = ReedTheme.colors.contentTertiary,
69+
style = ReedTheme.typography.label1Medium,
70+
)
71+
}
72+
item {
73+
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing10))
74+
}
7175

72-
val emotionPairs = state.emotionTags.chunked(2)
73-
items(emotionPairs) { pair ->
74-
Row(
75-
modifier = Modifier.fillMaxWidth(),
76-
horizontalArrangement = Arrangement.spacedBy(ReedTheme.spacing.spacing3),
77-
) {
78-
pair.forEach { tag ->
79-
EmotionItem(
80-
emotionTag = tag,
81-
onClick = {
82-
state.eventSink(RecordRegisterUiEvent.OnSelectEmotion(tag))
83-
},
84-
isSelected = state.selectedEmotion == tag,
85-
modifier = Modifier.weight(1f),
86-
)
87-
}
88-
if (pair.size == 1) {
89-
Spacer(modifier = Modifier.weight(1f))
76+
val emotionPairs = state.emotionTags.chunked(2)
77+
items(emotionPairs) { pair ->
78+
Row(
79+
modifier = Modifier.fillMaxWidth(),
80+
horizontalArrangement = Arrangement.spacedBy(ReedTheme.spacing.spacing3),
81+
) {
82+
pair.forEach { tag ->
83+
EmotionItem(
84+
emotionTag = tag,
85+
onClick = {
86+
state.eventSink(RecordRegisterUiEvent.OnSelectEmotion(tag))
87+
},
88+
isSelected = state.selectedEmotion == tag,
89+
modifier = Modifier.weight(1f),
90+
)
91+
}
92+
if (pair.size == 1) {
93+
Spacer(modifier = Modifier.weight(1f))
94+
}
9095
}
96+
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing3))
9197
}
92-
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing3))
93-
}
94-
item {
95-
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing10))
96-
}
97-
item {
98-
ReedButton(
99-
onClick = {
100-
state.eventSink(RecordRegisterUiEvent.OnNextButtonClick)
101-
},
102-
colorStyle = ReedButtonColorStyle.PRIMARY,
103-
sizeStyle = largeButtonStyle,
104-
modifier = Modifier.fillMaxWidth(),
105-
enabled = state.isNextButtonEnabled,
106-
text = stringResource(R.string.record_next_button),
107-
multipleEventsCutterEnabled = state.currentStep == RecordStep.IMPRESSION,
108-
)
109-
}
110-
item {
111-
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing4))
11298
}
99+
100+
ReedButton(
101+
onClick = {
102+
state.eventSink(RecordRegisterUiEvent.OnNextButtonClick)
103+
},
104+
colorStyle = ReedButtonColorStyle.PRIMARY,
105+
sizeStyle = largeButtonStyle,
106+
modifier = Modifier
107+
.fillMaxWidth()
108+
.align(Alignment.BottomCenter)
109+
.padding(horizontal = ReedTheme.spacing.spacing5)
110+
.padding(bottom = ReedTheme.spacing.spacing4),
111+
enabled = state.isNextButtonEnabled,
112+
text = stringResource(R.string.record_next_button),
113+
multipleEventsCutterEnabled = state.currentStep == RecordStep.IMPRESSION,
114+
)
113115
}
114116
}
115117

feature/record/src/main/kotlin/com/ninecraft/booket/feature/record/step/ImpressionStep.kt

Lines changed: 55 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.ninecraft.booket.feature.record.step
22

33
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.layout.Box
45
import androidx.compose.foundation.layout.Column
56
import androidx.compose.foundation.layout.Spacer
67
import androidx.compose.foundation.layout.fillMaxSize
@@ -65,67 +66,74 @@ fun ImpressionStep(
6566
}
6667
}
6768

68-
Column(
69+
Box(
6970
modifier = modifier
7071
.fillMaxSize()
71-
.background(White)
72-
.padding(horizontal = ReedTheme.spacing.spacing5)
73-
.verticalScroll(rememberScrollState()),
72+
.background(White),
7473
) {
75-
Text(
76-
text = stringResource(R.string.impression_step_title),
77-
color = ReedTheme.colors.contentPrimary,
78-
style = ReedTheme.typography.heading1Bold,
79-
)
80-
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing1))
81-
Text(
82-
text = stringResource(R.string.impression_step_description),
83-
color = ReedTheme.colors.contentTertiary,
84-
style = ReedTheme.typography.label1Medium,
85-
)
86-
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing10))
87-
ReedRecordTextField(
88-
recordState = state.impressionState,
89-
recordHintRes = R.string.impression_step_hint,
74+
Column(
9075
modifier = Modifier
91-
.fillMaxWidth()
92-
.focusRequester(focusRequester)
93-
.height(140.dp),
94-
keyboardOptions = KeyboardOptions(
95-
keyboardType = KeyboardType.Text,
96-
imeAction = ImeAction.Default,
97-
),
98-
)
99-
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing3))
100-
ReedButton(
101-
onClick = {
102-
state.eventSink(RecordRegisterUiEvent.OnImpressionGuideButtonClick)
103-
},
104-
colorStyle = ReedButtonColorStyle.STROKE,
105-
sizeStyle = smallRoundedButtonStyle,
106-
modifier = Modifier.align(Alignment.End),
107-
text = stringResource(R.string.impression_step_guide),
108-
leadingIcon = {
109-
Icon(
110-
imageVector = ImageVector.vectorResource(designR.drawable.ic_book_open),
111-
contentDescription = "Impression Guide Icon",
112-
)
113-
},
114-
)
115-
Spacer(modifier = Modifier.weight(1f))
116-
Spacer(modifier = Modifier.height(108.dp))
76+
.fillMaxSize()
77+
.padding(horizontal = ReedTheme.spacing.spacing5)
78+
.verticalScroll(rememberScrollState()),
79+
) {
80+
Text(
81+
text = stringResource(R.string.impression_step_title),
82+
color = ReedTheme.colors.contentPrimary,
83+
style = ReedTheme.typography.heading1Bold,
84+
)
85+
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing1))
86+
Text(
87+
text = stringResource(R.string.impression_step_description),
88+
color = ReedTheme.colors.contentTertiary,
89+
style = ReedTheme.typography.label1Medium,
90+
)
91+
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing10))
92+
ReedRecordTextField(
93+
recordState = state.impressionState,
94+
recordHintRes = R.string.impression_step_hint,
95+
modifier = Modifier
96+
.fillMaxWidth()
97+
.focusRequester(focusRequester)
98+
.height(140.dp),
99+
keyboardOptions = KeyboardOptions(
100+
keyboardType = KeyboardType.Text,
101+
imeAction = ImeAction.Default,
102+
),
103+
)
104+
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing3))
105+
ReedButton(
106+
onClick = {
107+
state.eventSink(RecordRegisterUiEvent.OnImpressionGuideButtonClick)
108+
},
109+
colorStyle = ReedButtonColorStyle.STROKE,
110+
sizeStyle = smallRoundedButtonStyle,
111+
modifier = Modifier.align(Alignment.End),
112+
text = stringResource(R.string.impression_step_guide),
113+
leadingIcon = {
114+
Icon(
115+
imageVector = ImageVector.vectorResource(designR.drawable.ic_book_open),
116+
contentDescription = "Impression Guide Icon",
117+
)
118+
},
119+
)
120+
}
121+
117122
ReedButton(
118123
onClick = {
119124
state.eventSink(RecordRegisterUiEvent.OnNextButtonClick)
120125
},
121126
colorStyle = ReedButtonColorStyle.PRIMARY,
122127
sizeStyle = largeButtonStyle,
123-
modifier = Modifier.fillMaxWidth(),
128+
modifier = Modifier
129+
.fillMaxWidth()
130+
.align(Alignment.BottomCenter)
131+
.padding(horizontal = ReedTheme.spacing.spacing5)
132+
.padding(bottom = ReedTheme.spacing.spacing4),
124133
enabled = state.isNextButtonEnabled,
125134
text = stringResource(R.string.record_next_button),
126135
multipleEventsCutterEnabled = state.currentStep == RecordStep.IMPRESSION,
127136
)
128-
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing4))
129137
}
130138

131139
if (state.isImpressionGuideBottomSheetVisible) {

0 commit comments

Comments
 (0)