@@ -21,6 +21,8 @@ import Avatar from '../../atoms/avatar/Avatar';
2121import ContextMenu , { MenuItem , MenuHeader } from '../../atoms/context-menu/ContextMenu' ;
2222
2323import ChevronBottomIC from '../../../../public/res/ic/outlined/chevron-bottom.svg' ;
24+ import EyeIC from '../../../../public/res/ic/outlined/eye.svg' ;
25+ import EyeBlindIC from '../../../../public/res/ic/outlined/eye-blind.svg' ;
2426import CinnySvg from '../../../../public/res/svg/cinny.svg' ;
2527import SSOButtons from '../../molecules/sso-buttons/SSOButtons' ;
2628
@@ -162,6 +164,7 @@ Homeserver.propTypes = {
162164
163165function Login ( { loginFlow, baseUrl } ) {
164166 const [ typeIndex , setTypeIndex ] = useState ( 0 ) ;
167+ const [ passVisible , setPassVisible ] = useState ( false ) ;
165168 const loginTypes = [ 'Username' , 'Email' ] ;
166169 const isPassword = loginFlow ?. filter ( ( flow ) => flow . type === 'm.login.password' ) [ 0 ] ;
167170 const ssoProviders = loginFlow ?. filter ( ( flow ) => flow . type === 'm.login.sso' ) [ 0 ] ;
@@ -242,7 +245,10 @@ function Login({ loginFlow, baseUrl }) {
242245 { errors . username && < Text className = "auth-form__error" variant = "b3" > { errors . username } </ Text > }
243246 { typeIndex === 1 && < Input values = { values . email } name = "email" onChange = { handleChange } label = "Email" type = "email" required /> }
244247 { errors . email && < Text className = "auth-form__error" variant = "b3" > { errors . email } </ Text > }
245- < Input values = { values . password } name = "password" onChange = { handleChange } label = "Password" type = "password" required />
248+ < div className = "auth-form__pass-eye-wrapper" >
249+ < Input values = { values . password } name = "password" onChange = { handleChange } label = "Password" type = { passVisible ? 'text' : 'password' } required />
250+ < IconButton onClick = { ( ) => setPassVisible ( ! passVisible ) } src = { passVisible ? EyeIC : EyeBlindIC } size = "extra-small" />
251+ </ div >
246252 { errors . password && < Text className = "auth-form__error" variant = "b3" > { errors . password } </ Text > }
247253 { errors . other && < Text className = "auth-form__error" variant = "b3" > { errors . other } </ Text > }
248254 < div className = "auth-form__btns" >
@@ -275,6 +281,8 @@ let sid;
275281let clientSecret ;
276282function Register ( { registerInfo, loginFlow, baseUrl } ) {
277283 const [ process , setProcess ] = useState ( { } ) ;
284+ const [ passVisible , setPassVisible ] = useState ( false ) ;
285+ const [ cPassVisible , setCPassVisible ] = useState ( false ) ;
278286 const formRef = useRef ( ) ;
279287
280288 const ssoProviders = loginFlow ?. filter ( ( flow ) => flow . type === 'm.login.sso' ) [ 0 ] ;
@@ -444,9 +452,15 @@ function Register({ registerInfo, loginFlow, baseUrl }) {
444452 < form className = "auth-form" ref = { formRef } onSubmit = { handleSubmit } >
445453 < Input values = { values . username } name = "username" onChange = { handleChange } label = "Username" type = "username" required />
446454 { errors . username && < Text className = "auth-form__error" variant = "b3" > { errors . username } </ Text > }
447- < Input values = { values . password } name = "password" onChange = { handleChange } label = "Password" type = "password" required />
455+ < div className = "auth-form__pass-eye-wrapper" >
456+ < Input values = { values . password } name = "password" onChange = { handleChange } label = "Password" type = { passVisible ? 'text' : 'password' } required />
457+ < IconButton onClick = { ( ) => setPassVisible ( ! passVisible ) } src = { passVisible ? EyeIC : EyeBlindIC } size = "extra-small" />
458+ </ div >
448459 { errors . password && < Text className = "auth-form__error" variant = "b3" > { errors . password } </ Text > }
449- < Input values = { values . confirmPassword } name = "confirmPassword" onChange = { handleChange } label = "Confirm password" type = "password" required />
460+ < div className = "auth-form__pass-eye-wrapper" >
461+ < Input values = { values . confirmPassword } name = "confirmPassword" onChange = { handleChange } label = "Confirm password" type = { cPassVisible ? 'text' : 'password' } required />
462+ < IconButton onClick = { ( ) => setCPassVisible ( ! cPassVisible ) } src = { cPassVisible ? EyeIC : EyeBlindIC } size = "extra-small" />
463+ </ div >
450464 { errors . confirmPassword && < Text className = "auth-form__error" variant = "b3" > { errors . confirmPassword } </ Text > }
451465 { isEmail && < Input values = { values . email } name = "email" onChange = { handleChange } label = { `Email${ isEmailRequired ? '' : ' (optional)' } ` } type = "email" required = { isEmailRequired } /> }
452466 { errors . email && < Text className = "auth-form__error" variant = "b3" > { errors . email } </ Text > }
0 commit comments