Skip to content

Commit efee6b8

Browse files
authored
Merge pull request #17474 from wordpress-mobile/issue/17467-fix-migration-screens-w-large-fonts
Fix large font size accessibility issue on migration screens by making the content scrollable
2 parents be7d7eb + f03af63 commit efee6b8

File tree

8 files changed

+77
-33
lines changed

8 files changed

+77
-33
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.wordpress.android.ui.main.jetpack.migration.compose.components
2+
3+
import androidx.compose.foundation.layout.Column
4+
import androidx.compose.foundation.layout.ColumnScope
5+
import androidx.compose.foundation.layout.padding
6+
import androidx.compose.material.Divider
7+
import androidx.compose.runtime.Composable
8+
import androidx.compose.ui.Modifier
9+
import androidx.compose.ui.res.colorResource
10+
import androidx.compose.ui.unit.dp
11+
import org.wordpress.android.R.color
12+
13+
@Composable
14+
fun ButtonsColumn(
15+
modifier: Modifier = Modifier,
16+
content: @Composable ColumnScope.() -> Unit
17+
) {
18+
Column(
19+
modifier = modifier.padding(bottom = 50.dp)
20+
) {
21+
Divider(
22+
color = colorResource(color.gray_10),
23+
thickness = 0.5.dp,
24+
)
25+
content()
26+
}
27+
}

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/compose/components/Message.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ import androidx.compose.material.Text
55
import androidx.compose.runtime.Composable
66
import androidx.compose.ui.Modifier
77
import androidx.compose.ui.res.colorResource
8+
import androidx.compose.ui.res.dimensionResource
89
import androidx.compose.ui.text.TextStyle
910
import androidx.compose.ui.unit.dp
1011
import androidx.compose.ui.unit.sp
1112
import org.wordpress.android.R.color
13+
import org.wordpress.android.R.dimen
1214

1315
@Composable
1416
fun Message(
@@ -21,6 +23,7 @@ fun Message(
2123
style = TextStyle(letterSpacing = (-0.01).sp),
2224
color = colorResource(color.gray_50),
2325
modifier = modifier
26+
.padding(horizontal = dimensionResource(dimen.jp_migration_padding_horizontal))
2427
.padding(top = 20.dp, bottom = 30.dp)
2528
)
2629
}

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/compose/components/ScreenIcon.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ import androidx.compose.foundation.layout.padding
77
import androidx.compose.foundation.layout.width
88
import androidx.compose.runtime.Composable
99
import androidx.compose.ui.Modifier
10+
import androidx.compose.ui.res.dimensionResource
1011
import androidx.compose.ui.res.painterResource
1112
import androidx.compose.ui.res.stringResource
1213
import androidx.compose.ui.unit.dp
1314
import org.wordpress.android.R
15+
import org.wordpress.android.R.dimen
1416

1517
@Composable
1618
fun ScreenIcon(
@@ -21,6 +23,7 @@ fun ScreenIcon(
2123
painter = painterResource(iconRes),
2224
contentDescription = stringResource(R.string.icon_desc),
2325
modifier = modifier
26+
.padding(horizontal = dimensionResource(dimen.jp_migration_padding_horizontal))
2427
.padding(top = 34.dp)
2528
.width(123.dp)
2629
.height(65.dp)

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/compose/components/SiteList.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ private fun SiteListItem(uiState: SiteListItemUiState, isDimmed: Boolean) = with
101101
private fun SiteListHeader(uiState: UiState.Content.Welcome) = with(uiState) {
102102
Column(
103103
modifier = Modifier
104-
.padding(horizontal = dimensionResource(R.dimen.jp_migration_padding_horizontal))
105104
.dimmed(uiState.isProcessing)
106105
) {
107106
ScreenIcon(iconRes = screenIconRes)

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/compose/components/Subtitle.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import androidx.compose.foundation.layout.padding
44
import androidx.compose.material.Text
55
import androidx.compose.runtime.Composable
66
import androidx.compose.ui.Modifier
7+
import androidx.compose.ui.res.dimensionResource
78
import androidx.compose.ui.text.TextStyle
89
import androidx.compose.ui.unit.dp
910
import androidx.compose.ui.unit.sp
11+
import org.wordpress.android.R.dimen
1012

1113
@Composable
1214
fun Subtitle(
@@ -18,6 +20,7 @@ fun Subtitle(
1820
fontSize = 17.sp,
1921
style = TextStyle(letterSpacing = (-0.01).sp),
2022
modifier = modifier
23+
.padding(horizontal = dimensionResource(dimen.jp_migration_padding_horizontal))
2124
.padding(top = 20.dp)
2225
)
2326
}

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/compose/components/Title.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import androidx.compose.foundation.layout.padding
44
import androidx.compose.material.Text
55
import androidx.compose.runtime.Composable
66
import androidx.compose.ui.Modifier
7+
import androidx.compose.ui.res.dimensionResource
78
import androidx.compose.ui.text.font.FontWeight
89
import androidx.compose.ui.unit.dp
10+
import org.wordpress.android.R.dimen
911
import org.wordpress.android.ui.compose.unit.FontSize
1012

1113
@Composable
@@ -18,6 +20,7 @@ fun Title(
1820
fontSize = FontSize.ExtraExtraExtraLarge.value,
1921
fontWeight = FontWeight.Bold,
2022
modifier = modifier
23+
.padding(horizontal = dimensionResource(dimen.jp_migration_padding_horizontal))
2124
.padding(top = 30.dp)
2225
)
2326
}

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/compose/state/DoneStep.kt

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@ package org.wordpress.android.ui.main.jetpack.migration.compose.state
22

33
import android.content.res.Configuration
44
import androidx.compose.foundation.Image
5-
import androidx.compose.foundation.layout.Arrangement
65
import androidx.compose.foundation.layout.Column
6+
import androidx.compose.foundation.layout.Spacer
7+
import androidx.compose.foundation.layout.fillMaxSize
78
import androidx.compose.foundation.layout.fillMaxWidth
89
import androidx.compose.foundation.layout.padding
910
import androidx.compose.foundation.layout.size
11+
import androidx.compose.foundation.rememberScrollState
12+
import androidx.compose.foundation.verticalScroll
1013
import androidx.compose.material.Text
1114
import androidx.compose.runtime.Composable
1215
import androidx.compose.ui.Alignment
1316
import androidx.compose.ui.Modifier
1417
import androidx.compose.ui.res.colorResource
15-
import androidx.compose.ui.res.dimensionResource
1618
import androidx.compose.ui.res.painterResource
1719
import androidx.compose.ui.res.stringResource
1820
import androidx.compose.ui.text.style.TextAlign
@@ -21,60 +23,66 @@ import androidx.compose.ui.tooling.preview.Preview
2123
import androidx.compose.ui.unit.dp
2224
import androidx.compose.ui.unit.sp
2325
import org.wordpress.android.R
24-
import org.wordpress.android.R.dimen
2526
import org.wordpress.android.ui.compose.theme.AppTheme
2627
import org.wordpress.android.ui.compose.utils.htmlToAnnotatedString
2728
import org.wordpress.android.ui.compose.utils.uiStringText
2829
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.ActionButton.DonePrimaryButton
2930
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.UiState
31+
import org.wordpress.android.ui.main.jetpack.migration.compose.components.ButtonsColumn
3032
import org.wordpress.android.ui.main.jetpack.migration.compose.components.PrimaryButton
3133
import org.wordpress.android.ui.main.jetpack.migration.compose.components.ScreenIcon
3234
import org.wordpress.android.ui.main.jetpack.migration.compose.components.Subtitle
3335
import org.wordpress.android.ui.main.jetpack.migration.compose.components.Title
3436

3537
@Composable
3638
fun DoneStep(uiState: UiState.Content.Done) = with(uiState) {
37-
Column {
39+
Column(
40+
modifier = Modifier.fillMaxSize()
41+
) {
42+
val scrollState = rememberScrollState()
3843
Column(
39-
modifier = Modifier.padding(horizontal = dimensionResource(dimen.jp_migration_padding_horizontal))
44+
modifier = Modifier
45+
.verticalScroll(scrollState)
46+
.weight(1f)
4047
) {
4148
ScreenIcon(iconRes = screenIconRes)
4249
Title(text = uiStringText(title))
4350
Subtitle(text = uiStringText(subtitle))
44-
}
45-
Column(
46-
verticalArrangement = Arrangement.Center,
47-
horizontalAlignment = Alignment.CenterHorizontally,
48-
modifier = Modifier
49-
.weight(1f)
50-
.fillMaxWidth()
51-
) {
51+
52+
Spacer(modifier = Modifier.weight(0.5f))
5253
Image(
5354
painter = painterResource(deleteWpIcon),
5455
contentDescription = stringResource(R.string.jp_migration_remove_wp_app_icon_content_description),
5556
modifier = Modifier
56-
.padding(bottom = 10.dp)
57+
.padding(top = 10.dp, bottom = 10.dp)
5758
.size(70.dp)
59+
.align(Alignment.CenterHorizontally)
5860
)
5961
Text(
6062
text = htmlToAnnotatedString(uiStringText(message)),
6163
textAlign = TextAlign.Center,
6264
fontSize = 14.sp,
6365
lineHeight = 18.sp,
6466
color = colorResource(R.color.gray_50),
65-
modifier = Modifier.fillMaxWidth(0.75f)
67+
modifier = Modifier
68+
.fillMaxWidth(0.75f)
69+
.align(Alignment.CenterHorizontally)
70+
.padding(bottom = 10.dp)
71+
)
72+
Spacer(modifier = Modifier.weight(0.5f))
73+
}
74+
ButtonsColumn {
75+
PrimaryButton(
76+
text = uiStringText(primaryActionButton.text),
77+
onClick = primaryActionButton.onClick,
6678
)
6779
}
68-
PrimaryButton(
69-
text = uiStringText(primaryActionButton.text),
70-
onClick = primaryActionButton.onClick,
71-
modifier = Modifier.padding(bottom = 50.dp),
72-
)
7380
}
7481
}
7582

7683
@Preview(showBackground = true, device = Devices.PIXEL_4_XL)
7784
@Preview(showBackground = true, device = Devices.PIXEL_4_XL, uiMode = Configuration.UI_MODE_NIGHT_YES)
85+
@Preview(showBackground = true, device = Devices.PIXEL_4_XL, fontScale = 2f)
7886
@Composable
7987
private fun PreviewDoneStep() {
8088
AppTheme {

WordPress/src/main/java/org/wordpress/android/ui/main/jetpack/migration/compose/state/NotificationsStep.kt

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
11
package org.wordpress.android.ui.main.jetpack.migration.compose.state
22

33
import android.content.res.Configuration
4-
import androidx.compose.foundation.layout.Box
54
import androidx.compose.foundation.layout.Column
65
import androidx.compose.foundation.layout.fillMaxSize
7-
import androidx.compose.foundation.layout.padding
6+
import androidx.compose.foundation.rememberScrollState
7+
import androidx.compose.foundation.verticalScroll
88
import androidx.compose.runtime.Composable
9-
import androidx.compose.ui.Alignment
109
import androidx.compose.ui.Modifier
11-
import androidx.compose.ui.res.dimensionResource
1210
import androidx.compose.ui.tooling.preview.Devices
1311
import androidx.compose.ui.tooling.preview.Preview
14-
import androidx.compose.ui.unit.dp
15-
import org.wordpress.android.R.dimen
1612
import org.wordpress.android.ui.compose.theme.AppTheme
1713
import org.wordpress.android.ui.compose.utils.uiStringText
1814
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.ActionButton.NotificationsPrimaryButton
1915
import org.wordpress.android.ui.main.jetpack.migration.JetpackMigrationViewModel.UiState
16+
import org.wordpress.android.ui.main.jetpack.migration.compose.components.ButtonsColumn
2017
import org.wordpress.android.ui.main.jetpack.migration.compose.components.Message
2118
import org.wordpress.android.ui.main.jetpack.migration.compose.components.PrimaryButton
2219
import org.wordpress.android.ui.main.jetpack.migration.compose.components.ScreenIcon
@@ -25,31 +22,32 @@ import org.wordpress.android.ui.main.jetpack.migration.compose.components.Title
2522

2623
@Composable
2724
fun NotificationsStep(uiState: UiState.Content.Notifications) = with(uiState) {
28-
Box(
25+
Column(
2926
modifier = Modifier.fillMaxSize()
3027
) {
28+
val scrollState = rememberScrollState()
3129
Column(
32-
modifier = Modifier.padding(horizontal = dimensionResource(dimen.jp_migration_padding_horizontal))
30+
modifier = Modifier
31+
.verticalScroll(scrollState)
32+
.weight(1f)
3333
) {
3434
ScreenIcon(iconRes = screenIconRes)
3535
Title(text = uiStringText(title))
3636
Subtitle(text = uiStringText(subtitle))
3737
Message(text = uiStringText(message))
3838
}
39-
Column(
40-
modifier = Modifier.align(Alignment.BottomCenter)
41-
) {
39+
ButtonsColumn {
4240
PrimaryButton(
4341
text = uiStringText(primaryActionButton.text),
4442
onClick = primaryActionButton.onClick,
45-
modifier = Modifier.padding(bottom = 50.dp),
4643
)
4744
}
4845
}
4946
}
5047

5148
@Preview(showBackground = true, device = Devices.PIXEL_4_XL)
5249
@Preview(showBackground = true, device = Devices.PIXEL_4_XL, uiMode = Configuration.UI_MODE_NIGHT_YES)
50+
@Preview(showBackground = true, device = Devices.PIXEL_4_XL, fontScale = 2f)
5351
@Composable
5452
private fun PreviewNotificationsStep() {
5553
AppTheme {

0 commit comments

Comments
 (0)