@@ -2,11 +2,14 @@ package com.firebase.ui.auth.compose.ui.method_picker
2
2
3
3
import androidx.compose.foundation.Image
4
4
import androidx.compose.foundation.layout.Box
5
+ import androidx.compose.foundation.layout.BoxWithConstraints
5
6
import androidx.compose.foundation.layout.Column
6
7
import androidx.compose.foundation.layout.fillMaxSize
8
+ import androidx.compose.foundation.layout.fillMaxWidth
7
9
import androidx.compose.foundation.layout.padding
8
10
import androidx.compose.foundation.layout.safeDrawingPadding
9
11
import androidx.compose.foundation.lazy.LazyColumn
12
+ import androidx.compose.foundation.lazy.itemsIndexed
10
13
import androidx.compose.runtime.Composable
11
14
import androidx.compose.ui.Alignment
12
15
import androidx.compose.ui.Modifier
@@ -61,14 +64,12 @@ fun AuthMethodPicker(
61
64
62
65
Column (
63
66
modifier = modifier
64
- .fillMaxSize()
65
- .safeDrawingPadding(),
66
- horizontalAlignment = Alignment .CenterHorizontally
67
67
) {
68
68
logo?.let {
69
69
Image (
70
70
modifier = Modifier
71
- .weight(0.4f ),
71
+ .weight(0.4f )
72
+ .align(Alignment .CenterHorizontally ),
72
73
painter = it.painter,
73
74
contentDescription = if (inPreview) " "
74
75
else stringResource(R .string.fui_auth_method_picker_logo)
@@ -77,26 +78,33 @@ fun AuthMethodPicker(
77
78
if (customLayout != null ) {
78
79
customLayout(providers, onProviderSelected)
79
80
} else {
80
- LazyColumn (
81
+ BoxWithConstraints (
81
82
modifier = Modifier
82
- .fillMaxSize()
83
- .weight(1f )
84
- .testTag(" AuthMethodPicker LazyColumn" ),
85
- horizontalAlignment = Alignment .CenterHorizontally ,
83
+ .weight(1f ),
86
84
) {
87
- items(providers.size) { index ->
88
- val provider = providers[index]
89
- Box (
90
- modifier = Modifier
91
- .padding(bottom = 16 .dp)
92
- ) {
93
- AuthProviderButton (
94
- onClick = {
95
- onProviderSelected(provider)
96
- },
97
- provider = provider,
98
- stringProvider = DefaultAuthUIStringProvider (context)
99
- )
85
+ val paddingWidth = maxWidth.value * 0.23
86
+ LazyColumn (
87
+ modifier = Modifier
88
+ .fillMaxSize()
89
+ .padding(horizontal = paddingWidth.dp)
90
+ .testTag(" AuthMethodPicker LazyColumn" ),
91
+ horizontalAlignment = Alignment .CenterHorizontally ,
92
+ ) {
93
+ itemsIndexed(providers) { index, provider ->
94
+ Box (
95
+ modifier = Modifier
96
+ .padding(bottom = if (index < providers.lastIndex) 16 .dp else 0 .dp)
97
+ ) {
98
+ AuthProviderButton (
99
+ modifier = Modifier
100
+ .fillMaxWidth(),
101
+ onClick = {
102
+ onProviderSelected(provider)
103
+ },
104
+ provider = provider,
105
+ stringProvider = DefaultAuthUIStringProvider (context)
106
+ )
107
+ }
100
108
}
101
109
}
102
110
}
@@ -118,46 +126,51 @@ fun AuthMethodPicker(
118
126
@Preview(showBackground = true )
119
127
@Composable
120
128
fun PreviewAuthMethodPicker () {
121
- AuthMethodPicker (
122
- providers = listOf (
123
- AuthProvider .Email (
124
- actionCodeSettings = null ,
125
- passwordValidationRules = emptyList()
126
- ),
127
- AuthProvider .Phone (
128
- defaultNumber = null ,
129
- defaultCountryCode = null ,
130
- allowedCountries = null ,
131
- ),
132
- AuthProvider .Google (
133
- scopes = emptyList(),
134
- serverClientId = null
135
- ),
136
- AuthProvider .Facebook (),
137
- AuthProvider .Twitter (
138
- customParameters = emptyMap()
139
- ),
140
- AuthProvider .Github (
141
- customParameters = emptyMap()
142
- ),
143
- AuthProvider .Microsoft (
144
- tenant = null ,
145
- customParameters = emptyMap()
146
- ),
147
- AuthProvider .Yahoo (
148
- customParameters = emptyMap()
149
- ),
150
- AuthProvider .Apple (
151
- locale = null ,
152
- customParameters = emptyMap()
129
+ Column (
130
+ modifier = Modifier
131
+ .fillMaxSize()
132
+ ) {
133
+ AuthMethodPicker (
134
+ providers = listOf (
135
+ AuthProvider .Email (
136
+ actionCodeSettings = null ,
137
+ passwordValidationRules = emptyList()
138
+ ),
139
+ AuthProvider .Phone (
140
+ defaultNumber = null ,
141
+ defaultCountryCode = null ,
142
+ allowedCountries = null ,
143
+ ),
144
+ AuthProvider .Google (
145
+ scopes = emptyList(),
146
+ serverClientId = null
147
+ ),
148
+ AuthProvider .Facebook (),
149
+ AuthProvider .Twitter (
150
+ customParameters = emptyMap()
151
+ ),
152
+ AuthProvider .Github (
153
+ customParameters = emptyMap()
154
+ ),
155
+ AuthProvider .Microsoft (
156
+ tenant = null ,
157
+ customParameters = emptyMap()
158
+ ),
159
+ AuthProvider .Yahoo (
160
+ customParameters = emptyMap()
161
+ ),
162
+ AuthProvider .Apple (
163
+ locale = null ,
164
+ customParameters = emptyMap()
165
+ ),
166
+ AuthProvider .Anonymous ,
153
167
),
154
- AuthProvider .Anonymous ,
155
- ),
156
- logo = AuthUIAsset .Resource (R .drawable.fui_ic_check_circle_black_128dp),
157
- onProviderSelected = { provider ->
168
+ logo = AuthUIAsset .Resource (R .drawable.fui_ic_check_circle_black_128dp),
169
+ onProviderSelected = { provider ->
158
170
159
- },
160
- termsOfServiceUrl = " https://example.com/terms" ,
161
- privacyPolicyUrl = " https://example.com/privacy"
162
- )
171
+ },
172
+ termsOfServiceUrl = " https://example.com/terms" ,
173
+ privacyPolicyUrl = " https://example.com/privacy"
174
+ )
175
+ }
163
176
}
0 commit comments