diff --git a/src/app/shared/log-in/methods/password/log-in-password.component.html b/src/app/shared/log-in/methods/password/log-in-password.component.html
index b85752110ff..df5246c3129 100644
--- a/src/app/shared/log-in/methods/password/log-in-password.component.html
+++ b/src/app/shared/log-in/methods/password/log-in-password.component.html
@@ -10,14 +10,26 @@
required
type="email"
[attr.data-test]="'email' | dsBrowserOnly">
-
+
+ [type]="showPassword ? 'text' : 'password'"
+ [attr.data-test]="'password' | dsBrowserOnly"
+ />
+
+
@if ((error | async) && hasError) {
{{ (error | async) | translate }}
diff --git a/src/app/shared/log-in/methods/password/log-in-password.component.scss b/src/app/shared/log-in/methods/password/log-in-password.component.scss
index 955252b51e9..b89449bf6e2 100644
--- a/src/app/shared/log-in/methods/password/log-in-password.component.scss
+++ b/src/app/shared/log-in/methods/password/log-in-password.component.scss
@@ -1,12 +1,14 @@
.form-login .form-control:focus {
z-index: 2;
}
+
.form-login input[type="email"] {
margin-bottom: -1px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
-.form-login input[type="password"] {
+
+.form-login .password-wrapper .form-control {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
@@ -15,3 +17,24 @@
white-space: normal;
padding: .25rem .75rem;
}
+
+.password-toggle {
+ position: absolute;
+ top: 50%;
+ right: 1rem;
+ transform: translateY(-50%);
+ background: transparent;
+ border: none;
+ padding: 0;
+ cursor: pointer;
+ color: #6c757d;
+ z-index: 5;
+
+ &:hover {
+ color: #495057;
+ }
+
+ &:focus {
+ outline: none;
+ }
+}
diff --git a/src/app/shared/log-in/methods/password/log-in-password.component.ts b/src/app/shared/log-in/methods/password/log-in-password.component.ts
index ac47f8f9295..c7c691d07bf 100644
--- a/src/app/shared/log-in/methods/password/log-in-password.component.ts
+++ b/src/app/shared/log-in/methods/password/log-in-password.component.ts
@@ -1,4 +1,7 @@
-import { AsyncPipe } from '@angular/common';
+import {
+ AsyncPipe,
+ NgClass,
+} from '@angular/common';
import {
Component,
Inject,
@@ -64,6 +67,7 @@ import { BrowserOnlyPipe } from '../../../utils/browser-only.pipe';
BrowserOnlyPipe,
BtnDisabledDirective,
FormsModule,
+ NgClass,
ReactiveFormsModule,
RouterLink,
TranslateModule,
@@ -122,6 +126,11 @@ export class LogInPasswordComponent implements OnInit {
*/
canShowDivider$: Observable;
+ /**
+ * Has password visibility.
+ * @type {boolean}
+ */
+ public showPassword = false;
constructor(
@Inject('authMethodProvider') public injectedAuthMethodModel: AuthMethod,
@@ -140,7 +149,6 @@ export class LogInPasswordComponent implements OnInit {
* @method ngOnInit
*/
public ngOnInit() {
-
// set formGroup
this.form = this.formBuilder.group({
email: ['', Validators.required],
@@ -187,6 +195,11 @@ export class LogInPasswordComponent implements OnInit {
return getForgotPasswordRoute();
}
+ togglePasswordVisibility(): void {
+ this.showPassword = !this.showPassword;
+ }
+
+
/**
* Reset error or message.
*/