Fix cursor location changing issue on toggle password (#561)

This commit is contained in:
Yuan Chao 2021-11-29 05:30:32 +08:00 committed by GitHub
parent d02fcd082e
commit 920ec05fbb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 5 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

View File

@ -1,5 +1,6 @@
import { Directive, OnInit } from '@angular/core';
import { Directive, NgZone, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { take } from 'rxjs/operators';
import { ApiService } from 'jslib-common/abstractions/api.service';
import { CryptoService } from 'jslib-common/abstractions/crypto.service';
@ -51,7 +52,7 @@ export class LockComponent implements OnInit {
protected storageService: StorageService, protected vaultTimeoutService: VaultTimeoutService,
protected environmentService: EnvironmentService, protected stateService: StateService,
protected apiService: ApiService, private logService: LogService,
private keyConnectorService: KeyConnectorService) { }
private keyConnectorService: KeyConnectorService, private ngZone: NgZone) { }
async ngOnInit() {
this.pinSet = await this.vaultTimeoutService.isPinLockSet();
@ -185,7 +186,12 @@ export class LockComponent implements OnInit {
togglePassword() {
this.showPassword = !this.showPassword;
document.getElementById(this.pinLock ? 'pin' : 'masterPassword').focus();
const input = document.getElementById(this.pinLock ? 'pin' : 'masterPassword');
if (this.ngZone.isStable) {
input.focus();
} else {
this.ngZone.onStable.pipe(take(1)).subscribe(() => input.focus());
}
}
private async setKeyAndContinue(key: SymmetricCryptoKey) {

View File

@ -1,11 +1,14 @@
import {
Directive,
Input,
NgZone,
OnInit,
} from '@angular/core';
import { Router } from '@angular/router';
import { take } from 'rxjs/operators';
import { AuthResult } from 'jslib-common/models/domain/authResult';
import { AuthService } from 'jslib-common/abstractions/auth.service';
@ -51,7 +54,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit
protected stateService: StateService, environmentService: EnvironmentService,
protected passwordGenerationService: PasswordGenerationService,
protected cryptoFunctionService: CryptoFunctionService, private storageService: StorageService,
protected logService: LogService) {
protected logService: LogService, private ngZone: NgZone) {
super(environmentService, i18nService, platformUtilsService);
}
@ -132,7 +135,11 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit
togglePassword() {
this.showPassword = !this.showPassword;
document.getElementById('masterPassword').focus();
if (this.ngZone.isStable) {
document.getElementById('masterPassword').focus();
} else {
this.ngZone.onStable.pipe(take(1)).subscribe(() => document.getElementById('masterPassword').focus());
}
}
async launchSsoBrowser(clientId: string, ssoRedirectUri: string) {