@@ -2,11 +2,13 @@ package com.firebase.ui.auth.compose.ui.method_picker
22
33import androidx.compose.foundation.Image
44import androidx.compose.foundation.layout.Box
5+ import androidx.compose.foundation.layout.BoxWithConstraints
56import androidx.compose.foundation.layout.Column
67import androidx.compose.foundation.layout.fillMaxSize
8+ import androidx.compose.foundation.layout.fillMaxWidth
79import androidx.compose.foundation.layout.padding
8- import androidx.compose.foundation.layout.safeDrawingPadding
910import androidx.compose.foundation.lazy.LazyColumn
11+ import androidx.compose.foundation.lazy.itemsIndexed
1012import androidx.compose.runtime.Composable
1113import androidx.compose.ui.Alignment
1214import androidx.compose.ui.Modifier
@@ -29,8 +31,8 @@ import com.firebase.ui.auth.compose.ui.components.AuthProviderButton
2931 * ```kotlin
3032 * AuthMethodPicker(
3133 * providers = listOf(
32- * AuthProvider.Google(),
33- * AuthProvider.Email(),
34+ * AuthProvider.Google(),
35+ * AuthProvider.Email(),
3436 * ),
3537 * onProviderSelected = { provider -> /* ... */ }
3638 * )
@@ -61,14 +63,12 @@ fun AuthMethodPicker(
6163
6264 Column (
6365 modifier = modifier
64- .fillMaxSize()
65- .safeDrawingPadding(),
66- horizontalAlignment = Alignment .CenterHorizontally
6766 ) {
6867 logo?.let {
6968 Image (
7069 modifier = Modifier
71- .weight(0.4f ),
70+ .weight(0.4f )
71+ .align(Alignment .CenterHorizontally ),
7272 painter = it.painter,
7373 contentDescription = if (inPreview) " "
7474 else stringResource(R .string.fui_auth_method_picker_logo)
@@ -77,26 +77,32 @@ fun AuthMethodPicker(
7777 if (customLayout != null ) {
7878 customLayout(providers, onProviderSelected)
7979 } else {
80- LazyColumn (
80+ BoxWithConstraints (
8181 modifier = Modifier
82- .fillMaxSize()
83- .weight(1f )
84- .testTag(" AuthMethodPicker LazyColumn" ),
85- horizontalAlignment = Alignment .CenterHorizontally ,
82+ .weight(1f ),
8683 ) {
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- )
84+ val paddingWidth = maxWidth.value * 0.23
85+ LazyColumn (
86+ modifier = Modifier
87+ .padding(horizontal = paddingWidth.dp)
88+ .testTag(" AuthMethodPicker LazyColumn" ),
89+ horizontalAlignment = Alignment .CenterHorizontally ,
90+ ) {
91+ itemsIndexed(providers) { index, provider ->
92+ Box (
93+ modifier = Modifier
94+ .padding(bottom = if (index < providers.lastIndex) 16 .dp else 0 .dp)
95+ ) {
96+ AuthProviderButton (
97+ modifier = Modifier
98+ .fillMaxWidth(),
99+ onClick = {
100+ onProviderSelected(provider)
101+ },
102+ provider = provider,
103+ stringProvider = DefaultAuthUIStringProvider (context)
104+ )
105+ }
100106 }
101107 }
102108 }
@@ -118,46 +124,51 @@ fun AuthMethodPicker(
118124@Preview(showBackground = true )
119125@Composable
120126fun 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()
127+ Column (
128+ modifier = Modifier
129+ .fillMaxSize()
130+ ) {
131+ AuthMethodPicker (
132+ providers = listOf (
133+ AuthProvider .Email (
134+ actionCodeSettings = null ,
135+ passwordValidationRules = emptyList()
136+ ),
137+ AuthProvider .Phone (
138+ defaultNumber = null ,
139+ defaultCountryCode = null ,
140+ allowedCountries = null ,
141+ ),
142+ AuthProvider .Google (
143+ scopes = emptyList(),
144+ serverClientId = null
145+ ),
146+ AuthProvider .Facebook (),
147+ AuthProvider .Twitter (
148+ customParameters = emptyMap()
149+ ),
150+ AuthProvider .Github (
151+ customParameters = emptyMap()
152+ ),
153+ AuthProvider .Microsoft (
154+ tenant = null ,
155+ customParameters = emptyMap()
156+ ),
157+ AuthProvider .Yahoo (
158+ customParameters = emptyMap()
159+ ),
160+ AuthProvider .Apple (
161+ locale = null ,
162+ customParameters = emptyMap()
163+ ),
164+ AuthProvider .Anonymous ,
153165 ),
154- AuthProvider .Anonymous ,
155- ),
156- logo = AuthUIAsset .Resource (R .drawable.fui_ic_check_circle_black_128dp),
157- onProviderSelected = { provider ->
166+ logo = AuthUIAsset .Resource (R .drawable.fui_ic_check_circle_black_128dp),
167+ onProviderSelected = { provider ->
158168
159- },
160- termsOfServiceUrl = " https://example.com/terms" ,
161- privacyPolicyUrl = " https://example.com/privacy"
162- )
169+ },
170+ termsOfServiceUrl = " https://example.com/terms" ,
171+ privacyPolicyUrl = " https://example.com/privacy"
172+ )
173+ }
163174}
0 commit comments