Skip to content

Commit afe7600

Browse files
authored
Feature/hma 7953 android add preview annotations to compose sample app screens (#195)
* HMRC Preview added * Preview added in screens * Preview added in SeparatedViewContainerScreen * Preview added in SelectRowViewScreen * Preview added in SelectRowViewScreen * Preview added in ColorsListScreen * HMRCPreview template is added * PR issue resolved
1 parent e0cce3b commit afe7600

26 files changed

+456
-29
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* Copyright 2024 HM Revenue & Customs
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package uk.gov.hmrc.components.compose.ui.theme
17+
18+
import android.content.res.Configuration
19+
import androidx.compose.ui.tooling.preview.Devices
20+
import androidx.compose.ui.tooling.preview.Preview
21+
22+
/**
23+
* Device previews for light and dark mode
24+
*/
25+
@Preview(
26+
name = "Phone - Light",
27+
device = Devices.PIXEL_4,
28+
uiMode = Configuration.UI_MODE_NIGHT_NO,
29+
showBackground = true,
30+
)
31+
@Preview(
32+
name = "Phone - Dark",
33+
device = Devices.PIXEL_4,
34+
uiMode = Configuration.UI_MODE_NIGHT_YES,
35+
showBackground = true,
36+
)
37+
@Preview(
38+
name = "Tablet - Light",
39+
device = Devices.PIXEL_C,
40+
uiMode = Configuration.UI_MODE_NIGHT_NO,
41+
showBackground = true,
42+
)
43+
@Preview(
44+
name = "Tablet - Dark",
45+
device = Devices.PIXEL_C,
46+
uiMode = Configuration.UI_MODE_NIGHT_YES,
47+
showBackground = true,
48+
)
49+
@Preview(
50+
name = "Large Font mode",
51+
uiMode = Configuration.UI_MODE_NIGHT_NO,
52+
fontScale = 2f,
53+
showBackground = true,
54+
)
55+
annotation class HmrcAllDevicePreview

sample-compose-fragments/src/main/java/uk/gov/hmrc/sample_compose_fragments/presentation/screens/atoms/ButtonScreen.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ import androidx.compose.foundation.layout.height
2020
import androidx.compose.runtime.Composable
2121
import androidx.compose.ui.Modifier
2222
import androidx.compose.ui.res.stringResource
23-
import androidx.compose.ui.tooling.preview.Preview
2423
import uk.gov.hmrc.components.compose.atom.button.IconButton
2524
import uk.gov.hmrc.components.compose.atom.button.PrimaryButton
2625
import uk.gov.hmrc.components.compose.atom.button.SecondaryButton
27-
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme
2826
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme.dimensions
27+
import uk.gov.hmrc.components.compose.ui.theme.HmrcAllDevicePreview
2928
import uk.gov.hmrc.sample_compose_components.R
29+
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.HmrcPreview
3030
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ScreenScrollViewColumn
3131

3232
@Composable
@@ -46,10 +46,10 @@ fun ButtonScreen() {
4646
}
4747
}
4848

49-
@Preview(showBackground = true)
49+
@HmrcAllDevicePreview()
5050
@Composable
5151
fun ButtonScreenPreview() {
52-
HmrcTheme {
52+
HmrcPreview {
5353
ButtonScreen()
5454
}
55-
}
55+
}

sample-compose-fragments/src/main/java/uk/gov/hmrc/sample_compose_fragments/presentation/screens/atoms/DividerScreen.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ import androidx.compose.ui.Modifier
2424
import androidx.compose.ui.res.stringResource
2525
import uk.gov.hmrc.components.compose.atom.divider.HmrcDivider
2626
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme
27+
import uk.gov.hmrc.components.compose.ui.theme.HmrcAllDevicePreview
2728
import uk.gov.hmrc.sample_compose_components.R
29+
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.HmrcPreview
2830
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ScreenScrollViewColumn
2931

3032
object DividerScreen {
@@ -62,3 +64,11 @@ object DividerScreen {
6264
}
6365

6466
}
67+
68+
@HmrcAllDevicePreview()
69+
@Composable
70+
fun DividerScreenPreview() {
71+
HmrcPreview {
72+
DividerScreen()
73+
}
74+
}

sample-compose-fragments/src/main/java/uk/gov/hmrc/sample_compose_fragments/presentation/screens/atoms/TextScreen.kt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import androidx.compose.foundation.layout.padding
1919
import androidx.compose.runtime.Composable
2020
import androidx.compose.ui.Modifier
2121
import androidx.compose.ui.res.stringResource
22-
import androidx.compose.ui.tooling.preview.Preview
2322
import uk.gov.hmrc.components.compose.atom.bullet.BulletedTextView
2423
import uk.gov.hmrc.components.compose.atom.heading.Heading3
2524
import uk.gov.hmrc.components.compose.atom.heading.Heading4
@@ -33,7 +32,9 @@ import uk.gov.hmrc.components.compose.atom.text.H5Text
3332
import uk.gov.hmrc.components.compose.atom.text.InfoText
3433
import uk.gov.hmrc.components.compose.atom.text.LinkText
3534
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme
35+
import uk.gov.hmrc.components.compose.ui.theme.HmrcAllDevicePreview
3636
import uk.gov.hmrc.sample_compose_components.R
37+
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.HmrcPreview
3738
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ScreenScrollViewColumn
3839

3940
@Composable
@@ -44,12 +45,18 @@ fun TextScreen() {
4445
text = stringResource(id = R.string.text_h3),
4546
modifier = Modifier.padding(top = HmrcTheme.dimensions.hmrcSpacing16)
4647
)
47-
Heading4(text = stringResource(id = R.string.text_heading4), modifier = Modifier.padding(top = HmrcTheme.dimensions.hmrcSpacing16))
48+
Heading4(
49+
text = stringResource(id = R.string.text_heading4),
50+
modifier = Modifier.padding(top = HmrcTheme.dimensions.hmrcSpacing16)
51+
)
4852
H4Text(
4953
text = stringResource(id = R.string.text_h4),
5054
modifier = Modifier.padding(top = HmrcTheme.dimensions.hmrcSpacing16)
5155
)
52-
Heading5(text = stringResource(id = R.string.text_heading5), modifier = Modifier.padding(top = HmrcTheme.dimensions.hmrcSpacing16))
56+
Heading5(
57+
text = stringResource(id = R.string.text_heading5),
58+
modifier = Modifier.padding(top = HmrcTheme.dimensions.hmrcSpacing16)
59+
)
5360
H5Text(
5461
text = stringResource(id = R.string.text_h5),
5562
modifier = Modifier.padding(top = HmrcTheme.dimensions.hmrcSpacing16)
@@ -85,10 +92,10 @@ fun TextScreen() {
8592
}
8693
}
8794

88-
@Preview
95+
@HmrcAllDevicePreview
8996
@Composable
9097
fun TextScreenPreview() {
91-
HmrcTheme {
98+
HmrcPreview {
9299
TextScreen()
93100
}
94101
}

sample-compose-fragments/src/main/java/uk/gov/hmrc/sample_compose_fragments/presentation/screens/colors/ColorsListScreen.kt

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import androidx.compose.foundation.layout.heightIn
2626
import androidx.compose.foundation.layout.padding
2727
import androidx.compose.foundation.layout.widthIn
2828
import androidx.compose.foundation.lazy.LazyColumn
29+
import androidx.compose.foundation.lazy.LazyListState
2930
import androidx.compose.foundation.lazy.items
3031
import androidx.compose.foundation.lazy.rememberLazyListState
3132
import androidx.compose.material3.Text
@@ -41,18 +42,29 @@ import uk.gov.hmrc.components.compose.organism.HmrcCardView
4142
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme
4243
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme.colors
4344
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme.typography
45+
import uk.gov.hmrc.components.compose.ui.theme.HmrcAllDevicePreview
4446
import uk.gov.hmrc.sample_compose_fragments.data.model.ColorItem
47+
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.HmrcPreview
4548
import uk.gov.hmrc.sample_compose_fragments.presentation.viewModel.ColorsViewModel
4649

4750
@Composable
4851
fun ColorsListScreen(viewModel: ColorsViewModel) {
4952
val listItems by viewModel.colorItems.collectAsStateWithLifecycle()
50-
val listState = rememberLazyListState()
53+
ColorsListScreen(listItems)
54+
}
5155

56+
@Composable
57+
fun ColorsListScreen(
58+
listItems: List<ColorItem>,
59+
listState: LazyListState = rememberLazyListState()
60+
) {
5261
LazyColumn(
5362
modifier = Modifier.fillMaxSize(1F),
5463
state = listState,
55-
contentPadding = PaddingValues(top = HmrcTheme.dimensions.hmrcSpacing8, bottom = HmrcTheme.dimensions.hmrcSpacing8)
64+
contentPadding = PaddingValues(
65+
top = HmrcTheme.dimensions.hmrcSpacing8,
66+
bottom = HmrcTheme.dimensions.hmrcSpacing8
67+
)
5668
) {
5769
items(listItems) { item ->
5870
ListItem(item = item)
@@ -73,7 +85,9 @@ fun ListItem(item: ColorItem) {
7385
.align(alignment = Alignment.CenterVertically),
7486
)
7587
Text(
76-
modifier = Modifier.padding(start = HmrcTheme.dimensions.hmrcSpacing16).align(alignment = Alignment.CenterVertically),
88+
modifier = Modifier
89+
.padding(start = HmrcTheme.dimensions.hmrcSpacing16)
90+
.align(alignment = Alignment.CenterVertically),
7791
text = "${item.colorName} (${item.color.hexToString()})",
7892
style = typography.h5
7993
)
@@ -82,3 +96,11 @@ fun ListItem(item: ColorItem) {
8296
}
8397

8498
private fun Color.hexToString(): String = String.format("#%08X", toArgb())
99+
100+
@HmrcAllDevicePreview
101+
@Composable
102+
fun ColorsListScreenPreview() {
103+
HmrcPreview {
104+
ColorsListScreen(listItems = ColorItem.values().asList())
105+
}
106+
}

sample-compose-fragments/src/main/java/uk/gov/hmrc/sample_compose_fragments/presentation/screens/molecules/BoldTitleBodyViewScreen.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ import androidx.compose.ui.res.stringResource
2222
import uk.gov.hmrc.components.compose.molecule.titleBody.BoldTitleBodyView
2323
import uk.gov.hmrc.components.compose.organism.HmrcCardView
2424
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme
25+
import uk.gov.hmrc.components.compose.ui.theme.HmrcAllDevicePreview
2526
import uk.gov.hmrc.sample_compose_components.R
2627
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ExamplesSlot
28+
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.HmrcPreview
2729
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.PlaceholderSlot
2830
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ScreenScrollViewColumn
2931

@@ -57,3 +59,10 @@ fun BoldTitleBodyViewScreen() {
5759
}
5860
}
5961

62+
@HmrcAllDevicePreview
63+
@Composable
64+
fun BoldTitleBodyViewScreenPreview() {
65+
HmrcPreview {
66+
BoldTitleBodyViewScreen()
67+
}
68+
}

sample-compose-fragments/src/main/java/uk/gov/hmrc/sample_compose_fragments/presentation/screens/molecules/BottomSheetViewScreen.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ import uk.gov.hmrc.components.compose.molecule.selectrow.SelectRowView
2121
import uk.gov.hmrc.components.compose.molecule.titleBody.H5TitleBodyView
2222
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme
2323
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme.dimensions
24+
import uk.gov.hmrc.components.compose.ui.theme.HmrcAllDevicePreview
2425
import uk.gov.hmrc.sample_compose_components.R
2526
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ExamplesSlot
27+
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.HmrcPreview
2628
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ScreenScrollViewColumn
2729

2830
@Composable
@@ -327,7 +329,7 @@ fun CustomPaddingBottomSheet(
327329
)
328330
Spacer(modifier = Modifier.height(dimensions.hmrcSpacing16))
329331
TextInputView(
330-
onInputValueChange = { },
332+
onInputValueChange = { },
331333
errorText = "",
332334
labelText = stringResource(id = R.string.text_input_placeholder_label),
333335
hintText = stringResource(id = R.string.text_input_placeholder_hint),
@@ -346,3 +348,11 @@ fun CustomPaddingBottomSheet(
346348
)
347349
}
348350
}
351+
352+
@HmrcAllDevicePreview
353+
@Composable
354+
internal fun BottomSheetViewScreenPreview() {
355+
HmrcPreview {
356+
BottomSheetViewScreen()
357+
}
358+
}

sample-compose-fragments/src/main/java/uk/gov/hmrc/sample_compose_fragments/presentation/screens/molecules/CurrencyInputViewScreen.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@ import uk.gov.hmrc.components.compose.atom.text.BodyText
2929
import uk.gov.hmrc.components.compose.molecule.input.CurrencyInputView
3030
import uk.gov.hmrc.components.compose.organism.HmrcCardView
3131
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme
32+
import uk.gov.hmrc.components.compose.ui.theme.HmrcAllDevicePreview
3233
import uk.gov.hmrc.sample_compose_components.R
3334
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ExamplesSlot
35+
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.HmrcPreview
3436
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.PlaceholderSlot
3537
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ScreenScrollViewColumn
3638
import uk.gov.hmrc.sample_compose_fragments.presentation.viewModel.CurrencyInputViewModel
@@ -132,3 +134,11 @@ fun CurrencyInputViewScreen() {
132134
}
133135
}
134136
}
137+
138+
@HmrcAllDevicePreview
139+
@Composable
140+
private fun CurrencyInputViewScreenPreview() {
141+
HmrcPreview {
142+
CurrencyInputViewScreen()
143+
}
144+
}

sample-compose-fragments/src/main/java/uk/gov/hmrc/sample_compose_fragments/presentation/screens/molecules/DonutChartViewScreen.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme
4242
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme.dimensions
4343
import uk.gov.hmrc.components.compose.ui.theme.LocalOrientationMode
4444
import uk.gov.hmrc.components.compose.ui.theme.Orientation
45+
import uk.gov.hmrc.components.compose.ui.theme.HmrcAllDevicePreview
4546
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ExamplesSlot
47+
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.HmrcPreview
4648
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.PlaceholderSlot
4749
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ScreenScrollViewColumn
4850

@@ -224,4 +226,10 @@ fun DonutChartViewScreen() {
224226
}
225227
}
226228

227-
229+
@HmrcAllDevicePreview
230+
@Composable
231+
internal fun DonutChartViewScreenPreview() {
232+
HmrcPreview {
233+
DonutChartViewScreen()
234+
}
235+
}

sample-compose-fragments/src/main/java/uk/gov/hmrc/sample_compose_fragments/presentation/screens/molecules/H4TitleBodyViewScreen.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,10 @@ import androidx.compose.ui.res.stringResource
2222
import uk.gov.hmrc.components.compose.molecule.titleBody.H4TitleBodyView
2323
import uk.gov.hmrc.components.compose.organism.HmrcCardView
2424
import uk.gov.hmrc.components.compose.ui.theme.HmrcTheme
25+
import uk.gov.hmrc.components.compose.ui.theme.HmrcAllDevicePreview
2526
import uk.gov.hmrc.sample_compose_components.R
2627
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ExamplesSlot
28+
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.HmrcPreview
2729
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.PlaceholderSlot
2830
import uk.gov.hmrc.sample_compose_fragments.presentation.screens.sampletemplate.ScreenScrollViewColumn
2931

@@ -56,3 +58,11 @@ fun H4TitleBodyViewScreen() {
5658
}
5759
}
5860
}
61+
62+
@HmrcAllDevicePreview
63+
@Composable
64+
internal fun H4TitleBodyViewScreenPreview() {
65+
HmrcPreview {
66+
H4TitleBodyViewScreen()
67+
}
68+
}

0 commit comments

Comments
 (0)