@@ -6,6 +6,11 @@ import androidx.compose.foundation.layout.fillMaxSize
6
6
import androidx.compose.foundation.layout.fillMaxWidth
7
7
import androidx.compose.foundation.layout.padding
8
8
import androidx.compose.foundation.text.KeyboardOptions
9
+ import androidx.compose.material.icons.Icons
10
+ import androidx.compose.material.icons.filled.Visibility
11
+ import androidx.compose.material.icons.filled.VisibilityOff
12
+ import androidx.compose.material3.Icon
13
+ import androidx.compose.material3.IconButton
9
14
import androidx.compose.material3.OutlinedTextField
10
15
import androidx.compose.material3.Surface
11
16
import androidx.compose.material3.Text
@@ -16,6 +21,8 @@ import androidx.compose.runtime.saveable.rememberSaveable
16
21
import androidx.compose.ui.Alignment
17
22
import androidx.compose.ui.Modifier
18
23
import androidx.compose.ui.text.input.KeyboardType
24
+ import androidx.compose.ui.text.input.PasswordVisualTransformation
25
+ import androidx.compose.ui.text.input.VisualTransformation
19
26
import androidx.compose.ui.unit.dp
20
27
import androidx.navigation.NavController
21
28
@@ -87,6 +94,11 @@ fun ClauInput(
87
94
labelId : String ,
88
95
clauVisible : MutableState <Boolean >
89
96
) {
97
+ // Condicional per ocultar o mostrar la clau
98
+ val visualTransformation = if (clauVisible.value)
99
+ VisualTransformation .None
100
+ else PasswordVisualTransformation ()
101
+
90
102
OutlinedTextField (
91
103
value = clauState.value,
92
104
onValueChange = {clauState.value = it},
@@ -98,9 +110,35 @@ fun ClauInput(
98
110
modifier = Modifier
99
111
.padding(bottom = 10 .dp, start = 10 .dp, end = 10 .dp)
100
112
.fillMaxWidth(),
113
+ visualTransformation = visualTransformation,
114
+ // Icona per mostrar o ocultar la clau
115
+ trailingIcon = {
116
+ // Aquesta icona només tindrà que apareixer quan el camp tingui algún caràcter
117
+ if (clauState.value.isNotBlank()){
118
+ PasswordVisibleIcon (clauVisible)
119
+ } else null
120
+ }
101
121
)
102
122
}
103
123
124
+ @Composable
125
+ fun PasswordVisibleIcon (
126
+ clauVisible : MutableState <Boolean >
127
+ ) {
128
+ val image =
129
+ if (clauVisible.value)
130
+ Icons .Default .VisibilityOff
131
+ else
132
+ Icons .Default .Visibility
133
+ IconButton (onClick = {
134
+ clauVisible.value = ! clauVisible.value
135
+ }) {
136
+ Icon (
137
+ imageVector = image,
138
+ contentDescription = " " )
139
+ }
140
+ }
141
+
104
142
// Creem la funció per la entrada del email
105
143
@Composable
106
144
fun EmailInput (
0 commit comments