From 00d0ff3afc72435f62aeb6a01ba972c32859f8d4 Mon Sep 17 00:00:00 2001 From: Leonardo Mendoza Date: Thu, 7 May 2026 18:18:32 -0600 Subject: [PATCH 1/8] PD-5529 --- .../form-sign-in/form-sign-in.component.spec.ts | 17 +++++++++++++++++ .../form-sign-in/form-sign-in.component.ts | 11 +++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/app/sign-in/components/form-sign-in/form-sign-in.component.spec.ts b/src/app/sign-in/components/form-sign-in/form-sign-in.component.spec.ts index 19f9113093..d8e3db6204 100644 --- a/src/app/sign-in/components/form-sign-in/form-sign-in.component.spec.ts +++ b/src/app/sign-in/components/form-sign-in/form-sign-in.component.spec.ts @@ -16,10 +16,12 @@ import { OauthService } from '../../../core/oauth/oauth.service' import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core' import { ReactiveFormsModule } from '@angular/forms' +import { Router } from '@angular/router' describe('FormSignInComponent', () => { let component: FormSignInComponent let fixture: ComponentFixture + let router: Router beforeEach(() => { TestBed.configureTestingModule({ @@ -48,10 +50,25 @@ describe('FormSignInComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(FormSignInComponent) component = fixture.componentInstance + router = TestBed.inject(Router) fixture.detectChanges() }) it('should create', () => { expect(component).toBeTruthy() }) + + it('only triggers oauth redirect once per successful flow', () => { + component.isOauthAuthorizationTogglzEnable = false + component.platform = { social: false, institutional: false } as any + component.signInLocal = { params: {} } as any + const routerNavigateSpy = spyOn(router, 'navigate').and.returnValue( + Promise.resolve(true) + ) + + component.oauthAuthorize('https://qa.orcid.org/oauth/authorize') + component.oauthAuthorize('https://qa.orcid.org/oauth/authorize') + + expect(routerNavigateSpy).toHaveBeenCalledTimes(1) + }) }) diff --git a/src/app/sign-in/components/form-sign-in/form-sign-in.component.ts b/src/app/sign-in/components/form-sign-in/form-sign-in.component.ts index e4c3cc9613..d2d2f1c2e4 100644 --- a/src/app/sign-in/components/form-sign-in/form-sign-in.component.ts +++ b/src/app/sign-in/components/form-sign-in/form-sign-in.component.ts @@ -86,6 +86,7 @@ export class FormSignInComponent implements OnInit, OnDestroy { backendErrorsMatcher = new ErrorStateMatcherForPasswordField() emailVerified: boolean invalidVerifyUrl: boolean + private oauthRedirectTriggered = false placeholderUsername = $localize`:@@ngOrcid.signin.username:Email or 16-digit ORCID iD` placeholderPassword = $localize`:@@ngOrcid.signin.yourOrcidPassword:Your ORCID password` @@ -386,9 +387,15 @@ export class FormSignInComponent implements OnInit, OnDestroy { } oauthAuthorize(urlRedirect) { + if (this.oauthRedirectTriggered) { + return + } + this.oauthRedirectTriggered = true + if (this.isOauthAuthorizationTogglzEnable) { - if (this._oauthUrlSessionManager.get()) { - urlRedirect = this._oauthUrlSessionManager.get() + const storedOauthRedirectUrl = this._oauthUrlSessionManager.get() + if (storedOauthRedirectUrl) { + urlRedirect = storedOauthRedirectUrl this._oauthUrlSessionManager.clear() } //add http if not present From 0ccbf5be92f21943cfd6b85f1d928d6d7c8ffe05 Mon Sep 17 00:00:00 2001 From: Leonardo Mendoza Date: Thu, 7 May 2026 18:20:17 -0600 Subject: [PATCH 2/8] PD-5551 --- .../two-factor-recovery-codes.component.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html index 119fabdb49..deda5abf9c 100644 --- a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html +++ b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html @@ -13,9 +13,9 @@

Your 2FA recovery codes

- Recovery codes can be used to access your account when you can’t - receive 2FA codes (for example, if you lose your device). Each code - can only be used once. + Recovery codes can be used to access your ORCID account when you + aren’t able to use your authentication app. Each recovery code can + only be used once.

Date: Thu, 7 May 2026 18:23:46 -0600 Subject: [PATCH 3/8] PD-5550 --- .../two-factor-enable/two-factor-enable.component.html | 6 +++--- .../two-factor-enable/two-factor-enable.component.scss | 3 +++ src/locale/messages.lr.xlf | 2 +- src/locale/messages.rl.xlf | 2 +- src/locale/messages.xlf | 2 +- src/locale/messages.xx.xlf | 2 +- 6 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html index 9e4f681e41..6e70b931d6 100644 --- a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html +++ b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html @@ -86,7 +86,7 @@ i18n="@@ngOrcid.signin.2fa.verificationCodeRequired" class="error-message" > - Authentication code is required + A verification code is required

{{ inputVerificationCode.value?.length || 0 }}/6 @@ -103,7 +103,7 @@ i18n="@@ngOrcid.signin.2fa.badVerificationCodeLength" class="error-message" > - Invalid authentication code length + Invalid verification code length

{{ inputVerificationCode.value?.length || 0 }}/6 @@ -117,7 +117,7 @@ i18n="@@ngOrcid.signin.2fa.badVerificationCode" class="error-message" > - Invalid authentication code + Invalid verification code

{{ inputVerificationCode.value?.length || 0 }}/6 diff --git a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.scss b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.scss index fb49e83a2e..e96a096606 100644 --- a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.scss +++ b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.scss @@ -27,6 +27,9 @@ textarea.text-code { } mat-error { + display: block; + margin-top: var(--orcid-space-s, 8px); + p { margin: 0 !important; } diff --git a/src/locale/messages.lr.xlf b/src/locale/messages.lr.xlf index dc2a0126bf..528d10586c 100644 --- a/src/locale/messages.lr.xlf +++ b/src/locale/messages.lr.xlf @@ -19076,7 +19076,7 @@ LR - Recovery codes can be used to access your account when you can’t receive 2FA codes (for example, if you lose your device). Each code can only be used once. + Recovery codes can be used to access your ORCID account when you aren’t able to use your authentication app. Each recovery code can only be used once. src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html 15,19 diff --git a/src/locale/messages.rl.xlf b/src/locale/messages.rl.xlf index ebdf07a308..575ee49f80 100644 --- a/src/locale/messages.rl.xlf +++ b/src/locale/messages.rl.xlf @@ -19076,7 +19076,7 @@ RL - Recovery codes can be used to access your account when you can’t receive 2FA codes (for example, if you lose your device). Each code can only be used once. + Recovery codes can be used to access your ORCID account when you aren’t able to use your authentication app. Each recovery code can only be used once. src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html 15,19 diff --git a/src/locale/messages.xlf b/src/locale/messages.xlf index 4b1bef4e71..37e350f3d3 100644 --- a/src/locale/messages.xlf +++ b/src/locale/messages.xlf @@ -17091,7 +17091,7 @@ - Recovery codes can be used to access your account when you can’t receive 2FA codes (for example, if you lose your device). Each code can only be used once. + Recovery codes can be used to access your ORCID account when you aren’t able to use your authentication app. Each recovery code can only be used once. src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html 15,19 diff --git a/src/locale/messages.xx.xlf b/src/locale/messages.xx.xlf index 61171f9552..b502b711d6 100644 --- a/src/locale/messages.xx.xlf +++ b/src/locale/messages.xx.xlf @@ -19076,7 +19076,7 @@ X - Recovery codes can be used to access your account when you can’t receive 2FA codes (for example, if you lose your device). Each code can only be used once. + Recovery codes can be used to access your ORCID account when you aren’t able to use your authentication app. Each recovery code can only be used once. src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.html 15,19 From b07d76be7ec5e3d9d417871781578206b7793174 Mon Sep 17 00:00:00 2001 From: Leonardo Mendoza Date: Thu, 7 May 2026 18:26:45 -0600 Subject: [PATCH 4/8] PD-5549 --- .../two-factor-enable/two-factor-enable.component.html | 4 +--- .../two-factor-enable/two-factor-enable.component.spec.ts | 6 +++++- .../two-factor-enable/two-factor-enable.component.ts | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html index 6e70b931d6..96de929fe9 100644 --- a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html +++ b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html @@ -48,9 +48,7 @@ type="button" class="textarea-copy-action" [cdkCopyToClipboard]="textCodeClipboard" - matTooltip="{{ textCodeCopiedTooltip }}" - #textCodeTooltip="matTooltip" - (click)="textCodeTooltip.toggle()" + matTooltip="{{ textCodeTooltip }}" i18n-aria-label="@@account.copySetupCode" aria-label="Copy setup code" > diff --git a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.spec.ts b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.spec.ts index f7af6f784a..8089a05ec9 100644 --- a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.spec.ts +++ b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.spec.ts @@ -118,7 +118,7 @@ describe('TwoFactorEnableComponent', () => { }) it('should call register method when input is filled and submit is triggered', async () => { - component.twoFactorForm.get('verificationCode').setValue('123456') + component.twoFactorForm.get('verificationCode')?.setValue('123456') fixture.detectChanges() await fixture.whenStable() @@ -132,4 +132,8 @@ describe('TwoFactorEnableComponent', () => { component.twoFactorForm.get('verificationCode')?.hasError('invalidCode') ).toBeFalse() }) + + it('should expose static setup code tooltip text', () => { + expect(component.textCodeTooltip).toBe('Copy setup code to clipboard') + }) }) diff --git a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts index 0c90c83b84..64dd7cf933 100644 --- a/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts +++ b/src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts @@ -45,7 +45,7 @@ export class TwoFactorEnableComponent implements OnInit { twoFactorForm: UntypedFormGroup showTextCode = false loading = false - textCodeCopiedTooltip = $localize`:@@account.setupCodeClipboard:Setup code has been copied to the clipboard` + textCodeTooltip = $localize`:@@account.copySetupCodeToClipboard:Copy setup code to clipboard` constructor( private _twoFactorService: TwoFactorAuthenticationService, From 76537e60ce6f87c1c38f54cfdecef5b8d6ca0bdd Mon Sep 17 00:00:00 2001 From: Leonardo Mendoza Date: Thu, 7 May 2026 18:30:41 -0600 Subject: [PATCH 5/8] PD-5547 --- .../two-factor-recovery-codes.component.spec.ts | 12 ++++++++++-- .../two-factor-recovery-codes.component.ts | 14 +++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.spec.ts b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.spec.ts index 7a6cd108d8..56d2f52d1b 100644 --- a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.spec.ts +++ b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.spec.ts @@ -68,17 +68,19 @@ describe('TwoFactorRecoveryCodesComponent', () => { it('should only allow complete when copy/download and checkbox are done', () => { expect(component.canCompleteSetup).toBeFalse() + expect(component.twoFactorForm.get('confirmCodes')?.disabled).toBeTrue() component.markCodesCopied() + expect(component.twoFactorForm.get('confirmCodes')?.enabled).toBeTrue() expect(component.canCompleteSetup).toBeFalse() - component.twoFactorForm.get('confirmCodes').setValue(true) + component.twoFactorForm.get('confirmCodes')?.setValue(true) expect(component.canCompleteSetup).toBeTrue() }) it('should record click and completion events when setup is completed', async () => { component.markCodesCopied() - component.twoFactorForm.get('confirmCodes').setValue(true) + component.twoFactorForm.get('confirmCodes')?.setValue(true) component.completeSetup() await fixture.whenStable() @@ -91,4 +93,10 @@ describe('TwoFactorRecoveryCodesComponent', () => { ) expect(router.navigate).toHaveBeenCalled() }) + + it('should enable confirm checkbox after downloading recovery codes', () => { + expect(component.twoFactorForm.get('confirmCodes')?.disabled).toBeTrue() + component.downloadRecoveryCodes() + expect(component.twoFactorForm.get('confirmCodes')?.enabled).toBeTrue() + }) }) diff --git a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts index 677e406c58..fefe90a3e7 100644 --- a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts +++ b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts @@ -43,7 +43,10 @@ export class TwoFactorRecoveryCodesComponent implements OnInit { this.twoFactorForm = new UntypedFormGroup({ backupCodes: new UntypedFormControl(this.backupCodes, []), - confirmCodes: new UntypedFormControl(false, [Validators.requiredTrue]), + confirmCodes: new UntypedFormControl( + { value: false, disabled: true }, + [Validators.requiredTrue] + ), }) } @@ -55,11 +58,11 @@ export class TwoFactorRecoveryCodesComponent implements OnInit { this.window.document.body.appendChild(link) link.click() this.window.document.body.removeChild(link) - this.hasDownloadedOrCopied = true + this.enableConfirmation() } markCodesCopied() { - this.hasDownloadedOrCopied = true + this.enableConfirmation() } get canCompleteSetup() { @@ -86,4 +89,9 @@ export class TwoFactorRecoveryCodesComponent implements OnInit { } }) } + + private enableConfirmation() { + this.hasDownloadedOrCopied = true + this.twoFactorForm.get('confirmCodes')?.enable({ emitEvent: false }) + } } From c8fd79bcda11fc80fa625db7ef4614e6ce48ecc2 Mon Sep 17 00:00:00 2001 From: Leonardo Mendoza Date: Thu, 7 May 2026 18:37:36 -0600 Subject: [PATCH 6/8] PD-5543 --- .../settings-security-two-factor-auth.component.html | 1 + .../settings-security-two-factor-auth.component.scss | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html index fa6dff8da7..e875eac03b 100644 --- a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html +++ b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html @@ -34,6 +34,7 @@ mat-raised-button color="primary" id="cy-two-factor-enable" + class="two-factor-panel__enable-button" (click)="twoFactor()" i18n="@@account.enableTwoFactorAuth" > diff --git a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss index 34e337e30e..49d698af40 100644 --- a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss +++ b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss @@ -1,3 +1,9 @@ +:host { + display: block; + width: 100%; +} + + .two-factor-panel { display: flex; flex-direction: column; @@ -78,3 +84,8 @@ border-color: var(--orcid-color-state-warning-dark, #d32f2f) !important; color: #fff !important; } + +.two-factor-panel__enable-button { + align-self: flex-start; + width: auto; +} From f903795c7f735b851bb2daaa0345c7c5cea8633b Mon Sep 17 00:00:00 2001 From: Leonardo Mendoza Date: Thu, 7 May 2026 18:41:53 -0600 Subject: [PATCH 7/8] PD-0000 format --- SUPPORTED_BROWSERS.md | 20 ++++---- ...gs-security-two-factor-auth.component.scss | 1 - .../cdk/platform-info/supported-browsers.json | 10 ++-- .../two-factor-recovery-codes.component.ts | 7 ++- src/locale/messages.lr.xlf | 50 +++++++++---------- src/locale/messages.rl.xlf | 50 +++++++++---------- src/locale/messages.xlf | 50 +++++++++---------- src/locale/messages.xx.xlf | 50 +++++++++---------- 8 files changed, 118 insertions(+), 120 deletions(-) diff --git a/SUPPORTED_BROWSERS.md b/SUPPORTED_BROWSERS.md index f906905f42..169077cfb4 100644 --- a/SUPPORTED_BROWSERS.md +++ b/SUPPORTED_BROWSERS.md @@ -2,13 +2,13 @@ > This file is auto-generated from `.browserslistrc` during the prebuild step. Do not edit manually. -| Browser | Minimum version | -| ---------------- | --------------- | -| Android WebView | 145 or newer | -| Apple Safari | 17 or newer | -| Google Chrome | 117 or newer | -| Microsoft Edge | 117 or newer | -| Mozilla Firefox | 116 or newer | -| Opera | 103 or newer | -| Opera Mobile | 80 or newer | -| Samsung Internet | 24 or newer | +| Browser | Minimum version | +|---------|-----------------| +| Android WebView | 145 or newer | +| Apple Safari | 17 or newer | +| Google Chrome | 119 or newer | +| Microsoft Edge | 119 or newer | +| Mozilla Firefox | 119 or newer | +| Opera | 105 or newer | +| Opera Mobile | 80 or newer | +| Samsung Internet | 25 or newer | diff --git a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss index 49d698af40..df1179b232 100644 --- a/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss +++ b/src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.scss @@ -3,7 +3,6 @@ width: 100%; } - .two-factor-panel { display: flex; flex-direction: column; diff --git a/src/app/cdk/platform-info/supported-browsers.json b/src/app/cdk/platform-info/supported-browsers.json index 7b0940b911..af7d12e8aa 100644 --- a/src/app/cdk/platform-info/supported-browsers.json +++ b/src/app/cdk/platform-info/supported-browsers.json @@ -1,10 +1,10 @@ { "chrome": { - "major": 117, + "major": 119, "minor": 0 }, "firefox": { - "major": 116, + "major": 119, "minor": 0 }, "android": { @@ -12,7 +12,7 @@ "minor": 0 }, "edge": { - "major": 117, + "major": 119, "minor": 0 }, "safari": { @@ -24,11 +24,11 @@ "minor": 0 }, "opera": { - "major": 103, + "major": 105, "minor": 0 }, "samsung": { - "major": 24, + "major": 25, "minor": 0 } } diff --git a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts index fefe90a3e7..67c467fb5d 100644 --- a/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts +++ b/src/app/two-factor-setup/components/two-factor-recovery-codes/two-factor-recovery-codes.component.ts @@ -43,10 +43,9 @@ export class TwoFactorRecoveryCodesComponent implements OnInit { this.twoFactorForm = new UntypedFormGroup({ backupCodes: new UntypedFormControl(this.backupCodes, []), - confirmCodes: new UntypedFormControl( - { value: false, disabled: true }, - [Validators.requiredTrue] - ), + confirmCodes: new UntypedFormControl({ value: false, disabled: true }, [ + Validators.requiredTrue, + ]), }) } diff --git a/src/locale/messages.lr.xlf b/src/locale/messages.lr.xlf index 528d10586c..2a23573d52 100644 --- a/src/locale/messages.lr.xlf +++ b/src/locale/messages.lr.xlf @@ -121,7 +121,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 119,121 + 117,119 LR @@ -141,7 +141,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 88,90 + 86,88 LR @@ -161,7 +161,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 105,107 + 103,105 LR @@ -1598,7 +1598,7 @@ Enable two-factor authentication src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 39,41 + 40,42 src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html @@ -1618,7 +1618,7 @@ Sign in with 2FA src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 46 + 47 LR @@ -1626,7 +1626,7 @@ Use your authentication app to generate a verification code whenever you sign in to ORCID. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 50,53 + 51,54 LR @@ -1634,7 +1634,7 @@ Authentication app src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 63,65 + 64,66 LR @@ -1642,7 +1642,7 @@ Account recovery src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 71 + 72 LR @@ -1650,7 +1650,7 @@ Recover access to your ORCID account if you can't use your authentication app. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 75,78 + 76,79 LR @@ -1658,7 +1658,7 @@ 2FA recovery codes src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 88,90 + 89,91 LR @@ -1666,7 +1666,7 @@ You can disable two-factor authentication at any time. Turning 2FA off will reset any account recovery options you have set up. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 95,98 + 96,99 LR @@ -1678,7 +1678,7 @@ src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 105,107 + 106,108 LR @@ -1686,7 +1686,7 @@ Disable two-factor authentication src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 115,117 + 116,118 LR @@ -1938,7 +1938,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 91 + 92 LR @@ -16995,7 +16995,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 463 + 470 src/locale/i18n.pseudo.component.html @@ -17015,7 +17015,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 465 + 472 LR @@ -17027,11 +17027,11 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 466 + 473 src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 487 + 494 src/locale/i18n.pseudo.component.html @@ -18883,7 +18883,7 @@ Email or 16-digit ORCID iD src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 90 + 91 LR @@ -18891,7 +18891,7 @@ Claiming your account src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 484 + 491 LR @@ -18899,7 +18899,7 @@ Thank you for claiming your ORCID record; please complete the process by following the steps in the email we are now sending you. If you don’t receive an email from us, please src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 486 + 493 LR @@ -19039,7 +19039,7 @@ Copy setup code src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 55 + 53 LR @@ -19047,12 +19047,12 @@ Enter the 6-digit verification code from your authentication app src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 62,64 + 60,62 LR - - Setup code has been copied to the clipboard + + Copy setup code to clipboard src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts 48 diff --git a/src/locale/messages.rl.xlf b/src/locale/messages.rl.xlf index 575ee49f80..822be74cf4 100644 --- a/src/locale/messages.rl.xlf +++ b/src/locale/messages.rl.xlf @@ -121,7 +121,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 119,121 + 117,119 RL @@ -141,7 +141,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 88,90 + 86,88 RL @@ -161,7 +161,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 105,107 + 103,105 RL @@ -1598,7 +1598,7 @@ Enable two-factor authentication src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 39,41 + 40,42 src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html @@ -1618,7 +1618,7 @@ Sign in with 2FA src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 46 + 47 RL @@ -1626,7 +1626,7 @@ Use your authentication app to generate a verification code whenever you sign in to ORCID. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 50,53 + 51,54 RL @@ -1634,7 +1634,7 @@ Authentication app src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 63,65 + 64,66 RL @@ -1642,7 +1642,7 @@ Account recovery src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 71 + 72 RL @@ -1650,7 +1650,7 @@ Recover access to your ORCID account if you can't use your authentication app. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 75,78 + 76,79 RL @@ -1658,7 +1658,7 @@ 2FA recovery codes src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 88,90 + 89,91 RL @@ -1666,7 +1666,7 @@ You can disable two-factor authentication at any time. Turning 2FA off will reset any account recovery options you have set up. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 95,98 + 96,99 RL @@ -1678,7 +1678,7 @@ src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 105,107 + 106,108 RL @@ -1686,7 +1686,7 @@ Disable two-factor authentication src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 115,117 + 116,118 RL @@ -1938,7 +1938,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 91 + 92 RL @@ -16995,7 +16995,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 463 + 470 src/locale/i18n.pseudo.component.html @@ -17015,7 +17015,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 465 + 472 RL @@ -17027,11 +17027,11 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 466 + 473 src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 487 + 494 src/locale/i18n.pseudo.component.html @@ -18883,7 +18883,7 @@ Email or 16-digit ORCID iD src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 90 + 91 RL @@ -18891,7 +18891,7 @@ Claiming your account src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 484 + 491 RL @@ -18899,7 +18899,7 @@ Thank you for claiming your ORCID record; please complete the process by following the steps in the email we are now sending you. If you don’t receive an email from us, please src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 486 + 493 RL @@ -19039,7 +19039,7 @@ Copy setup code src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 55 + 53 RL @@ -19047,12 +19047,12 @@ Enter the 6-digit verification code from your authentication app src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 62,64 + 60,62 RL - - Setup code has been copied to the clipboard + + Copy setup code to clipboard src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts 48 diff --git a/src/locale/messages.xlf b/src/locale/messages.xlf index 37e350f3d3..b291d848ba 100644 --- a/src/locale/messages.xlf +++ b/src/locale/messages.xlf @@ -111,7 +111,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 119,121 + 117,119 @@ -130,7 +130,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 88,90 + 86,88 @@ -149,7 +149,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 105,107 + 103,105 @@ -1459,7 +1459,7 @@ Enable two-factor authentication src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 39,41 + 40,42 src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html @@ -1478,49 +1478,49 @@ Sign in with 2FA src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 46 + 47 Use your authentication app to generate a verification code whenever you sign in to ORCID. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 50,53 + 51,54 Authentication app src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 63,65 + 64,66 Account recovery src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 71 + 72 Recover access to your ORCID account if you can't use your authentication app. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 75,78 + 76,79 2FA recovery codes src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 88,90 + 89,91 You can disable two-factor authentication at any time. Turning 2FA off will reset any account recovery options you have set up. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 95,98 + 96,99 @@ -1531,14 +1531,14 @@ src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 105,107 + 106,108 Disable two-factor authentication src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 115,117 + 116,118 @@ -1761,7 +1761,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 91 + 92 @@ -15254,7 +15254,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 463 + 470 src/locale/i18n.pseudo.component.html @@ -15273,7 +15273,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 465 + 472 @@ -15284,11 +15284,11 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 466 + 473 src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 487 + 494 src/locale/i18n.pseudo.component.html @@ -16922,21 +16922,21 @@ Email or 16-digit ORCID iD src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 90 + 91 Claiming your account src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 484 + 491 Thank you for claiming your ORCID record; please complete the process by following the steps in the email we are now sending you. If you don’t receive an email from us, please src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 486 + 493 @@ -17059,18 +17059,18 @@ Copy setup code src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 55 + 53 Enter the 6-digit verification code from your authentication app src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 62,64 + 60,62 - - Setup code has been copied to the clipboard + + Copy setup code to clipboard src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts 48 diff --git a/src/locale/messages.xx.xlf b/src/locale/messages.xx.xlf index b502b711d6..b789169f19 100644 --- a/src/locale/messages.xx.xlf +++ b/src/locale/messages.xx.xlf @@ -121,7 +121,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 119,121 + 117,119 X @@ -141,7 +141,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 88,90 + 86,88 X @@ -161,7 +161,7 @@ src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 105,107 + 103,105 X @@ -1598,7 +1598,7 @@ Enable two-factor authentication src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 39,41 + 40,42 src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html @@ -1618,7 +1618,7 @@ Sign in with 2FA src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 46 + 47 X @@ -1626,7 +1626,7 @@ Use your authentication app to generate a verification code whenever you sign in to ORCID. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 50,53 + 51,54 X @@ -1634,7 +1634,7 @@ Authentication app src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 63,65 + 64,66 X @@ -1642,7 +1642,7 @@ Account recovery src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 71 + 72 X @@ -1650,7 +1650,7 @@ Recover access to your ORCID account if you can't use your authentication app. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 75,78 + 76,79 X @@ -1658,7 +1658,7 @@ 2FA recovery codes src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 88,90 + 89,91 X @@ -1666,7 +1666,7 @@ You can disable two-factor authentication at any time. Turning 2FA off will reset any account recovery options you have set up. src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 95,98 + 96,99 X @@ -1678,7 +1678,7 @@ src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 105,107 + 106,108 X @@ -1686,7 +1686,7 @@ Disable two-factor authentication src/app/account-settings/components/settings-security-two-factor-auth/settings-security-two-factor-auth.component.html - 115,117 + 116,118 X @@ -1938,7 +1938,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 91 + 92 X @@ -16995,7 +16995,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 463 + 470 src/locale/i18n.pseudo.component.html @@ -17015,7 +17015,7 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 465 + 472 X @@ -17027,11 +17027,11 @@ src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 466 + 473 src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 487 + 494 src/locale/i18n.pseudo.component.html @@ -18883,7 +18883,7 @@ Email or 16-digit ORCID iD src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 90 + 91 X @@ -18891,7 +18891,7 @@ Claiming your account src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 484 + 491 X @@ -18899,7 +18899,7 @@ Thank you for claiming your ORCID record; please complete the process by following the steps in the email we are now sending you. If you don’t receive an email from us, please src/app/sign-in/components/form-sign-in/form-sign-in.component.ts - 486 + 493 X @@ -19039,7 +19039,7 @@ Copy setup code src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 55 + 53 X @@ -19047,12 +19047,12 @@ Enter the 6-digit verification code from your authentication app src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.html - 62,64 + 60,62 X - - Setup code has been copied to the clipboard + + Copy setup code to clipboard src/app/two-factor-setup/components/two-factor-enable/two-factor-enable.component.ts 48 From 1ee77e920c8efbf4ca70eabad5fec8f6a492ec76 Mon Sep 17 00:00:00 2001 From: Leonardo Mendoza Date: Thu, 7 May 2026 18:57:35 -0600 Subject: [PATCH 8/8] PD-3931 --- SUPPORTED_BROWSERS.md | 20 +++++++++---------- .../modal-websites.component.ts | 6 +++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/SUPPORTED_BROWSERS.md b/SUPPORTED_BROWSERS.md index 169077cfb4..91e81c363b 100644 --- a/SUPPORTED_BROWSERS.md +++ b/SUPPORTED_BROWSERS.md @@ -2,13 +2,13 @@ > This file is auto-generated from `.browserslistrc` during the prebuild step. Do not edit manually. -| Browser | Minimum version | -|---------|-----------------| -| Android WebView | 145 or newer | -| Apple Safari | 17 or newer | -| Google Chrome | 119 or newer | -| Microsoft Edge | 119 or newer | -| Mozilla Firefox | 119 or newer | -| Opera | 105 or newer | -| Opera Mobile | 80 or newer | -| Samsung Internet | 25 or newer | +| Browser | Minimum version | +| ---------------- | --------------- | +| Android WebView | 145 or newer | +| Apple Safari | 17 or newer | +| Google Chrome | 119 or newer | +| Microsoft Edge | 119 or newer | +| Mozilla Firefox | 119 or newer | +| Opera | 105 or newer | +| Opera Mobile | 80 or newer | +| Samsung Internet | 25 or newer | diff --git a/src/app/cdk/side-bar/modals/modal-websites/modal-websites.component.ts b/src/app/cdk/side-bar/modals/modal-websites/modal-websites.component.ts index 14ccae99af..a7036e32b3 100644 --- a/src/app/cdk/side-bar/modals/modal-websites/modal-websites.component.ts +++ b/src/app/cdk/side-bar/modals/modal-websites/modal-websites.component.ts @@ -152,7 +152,6 @@ export class ModalWebsitesComponent implements OnInit, OnDestroy { websites: [], visibility: this.originalBackendWebsites.visibility, } - this._changeDetectorRef.detach() this.websites.reverse() this.websites .map((value) => value.putCode) @@ -178,15 +177,15 @@ export class ModalWebsitesComponent implements OnInit, OnDestroy { } saveEvent() { - if (this.isSavingWebsites) { + if (this.loadingWebsites || this.isSavingWebsites) { return } + this.isSavingWebsites = true this.websitesForm.markAllAsTouched() this.websitesForm.updateValueAndValidity() if (this.websitesForm.valid) { - this.isSavingWebsites = true this._recordWebsitesService .postWebsites(this.formToBackend(this.websitesForm)) .pipe( @@ -201,6 +200,7 @@ export class ModalWebsitesComponent implements OnInit, OnDestroy { () => {} ) } else { + this.isSavingWebsites = false this._snackBar.showValidationError() } }