diff --git a/src/app/cdk/platform-info/browserlist.regexp.ts b/src/app/cdk/platform-info/browserlist.regexp.ts index 545a90290e..bf8c4aa5cf 100644 --- a/src/app/cdk/platform-info/browserlist.regexp.ts +++ b/src/app/cdk/platform-info/browserlist.regexp.ts @@ -1,3 +1,2 @@ // tslint:disable-next-line: max-line-length -export const BROWSERLIST_REGEXP = - /((CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(13[_.]4|13[_.]([5-9]|\d{2,})|13[_.]7|13[_.]([8-9]|\d{2,})|(1[4-9]|[2-9]\d|\d{3,})[_.]\d+|14[_.]0|14[_.]([1-9]|\d{2,})|14[_.]4|14[_.]([5-9]|\d{2,})|14[_.]8|14[_.](9|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})[_.]\d+|15[_.]0|15[_.]([1-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[_.]\d+|16[_.]0|16[_.]([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})[_.]\d+|17[_.]0|17[_.]([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})[_.]\d+)(?:[_.]\d+)?)|((?:Chrome).*OPR\/(74|(7[5-9]|[8-9]\d|\d{3,}))\.\d+\.\d+)|(Edge\/(80|(8[1-9]|9\d|\d{3,})|83|(8[4-9]|9\d|\d{3,}))(?:\.\d+)?)|((Chromium|Chrome)\/(80|(8[1-9]|9\d|\d{3,})|83|(8[4-9]|9\d|\d{3,}))\.\d+(?:\.\d+)?)|(Version\/(13\.1|13\.([2-9]|\d{2,})|(1[4-9]|[2-9]\d|\d{3,})\.\d+|14\.0|14\.([1-9]|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})\.\d+|15\.0|15\.([1-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+|16\.0|16\.([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})\.\d+|17\.0|17\.([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})\.\d+)(?:\.\d+)? Safari\/)|(Firefox\/(78|(79|[8-9]\d|\d{3,}))\.\d+\.\d+)|(Firefox\/(78|(79|[8-9]\d|\d{3,}))\.\d+(pre|[ab]\d+[a-z]*)?)/ +export const BROWSERLIST_REGEXP = /((CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS)[ +]+(13[_.]4|13[_.]([5-9]|\d{2,})|13[_.]7|13[_.]([8-9]|\d{2,})|(1[4-9]|[2-9]\d|\d{3,})[_.]\d+|14[_.]0|14[_.]([1-9]|\d{2,})|14[_.]4|14[_.]([5-9]|\d{2,})|14[_.]8|14[_.](9|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})[_.]\d+|15[_.]0|15[_.]([1-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})[_.]\d+|16[_.]0|16[_.]([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})[_.]\d+|17[_.]0|17[_.]([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})[_.]\d+)(?:[_.]\d+)?)|((?:Chrome).*OPR\/(74|(7[5-9]|[8-9]\d|\d{3,}))\.\d+\.\d+)|(Edge\/(80|(8[1-9]|9\d|\d{3,})|83|(8[4-9]|9\d|\d{3,}))(?:\.\d+)?)|((Chromium|Chrome)\/(80|(8[1-9]|9\d|\d{3,})|83|(8[4-9]|9\d|\d{3,}))\.\d+(?:\.\d+)?)|(Version\/(13\.1|13\.([2-9]|\d{2,})|(1[4-9]|[2-9]\d|\d{3,})\.\d+|14\.0|14\.([1-9]|\d{2,})|(1[5-9]|[2-9]\d|\d{3,})\.\d+|15\.0|15\.([1-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+|16\.0|16\.([1-9]|\d{2,})|(1[7-9]|[2-9]\d|\d{3,})\.\d+|17\.0|17\.([1-9]|\d{2,})|(1[8-9]|[2-9]\d|\d{3,})\.\d+)(?:\.\d+)? Safari\/)|(Firefox\/(78|(79|[8-9]\d|\d{3,}))\.\d+\.\d+)|(Firefox\/(78|(79|[8-9]\d|\d{3,}))\.\d+(pre|[ab]\d+[a-z]*)?)/ diff --git a/src/app/institutional/institutional.module.ts b/src/app/institutional/institutional.module.ts index 220c2b2981..67ce73a752 100644 --- a/src/app/institutional/institutional.module.ts +++ b/src/app/institutional/institutional.module.ts @@ -10,6 +10,7 @@ import { MatLegacyButtonModule as MatButtonModule } from '@angular/material/lega import { MatLegacyProgressBarModule as MatProgressBarModule } from '@angular/material/legacy-progress-bar' import { InstitutionalRoutingModule } from './institutional-routing.module' import { A11yLinkModule } from '../cdk/a11y-link/a11y-link.module' +import { MatLegacyProgressSpinnerModule as MatProgressSpinnerModule } from '@angular/material/legacy-progress-spinner' @NgModule({ declarations: [InstitutionalComponent], @@ -25,6 +26,7 @@ import { A11yLinkModule } from '../cdk/a11y-link/a11y-link.module' MatProgressBarModule, InstitutionalRoutingModule, A11yLinkModule, + MatProgressSpinnerModule ], }) export class InstitutionalModule {} diff --git a/src/app/institutional/pages/institutional/institutional.component.html b/src/app/institutional/pages/institutional/institutional.component.html index 4937d5393f..57bb4691b2 100644 --- a/src/app/institutional/pages/institutional/institutional.component.html +++ b/src/app/institutional/pages/institutional/institutional.component.html @@ -8,69 +8,120 @@ mode="indeterminate" > - Access through your institution + +
+ + + +
+

+ Access through your institution +

+ + Sign in with email/iD and password +
-

+

- You may sign into the ORCID Registry using institutional + You may sign in to the ORCID Registry using institutional accounts you already have, like one from your university. If - you don't already have an ORCID iD, you will be prompted to - create one. + you don’t have an ORCID iD, you will be prompted to create + one. - Learn more about different ways to sign in to ORCID. -

-

- Use a suggested selection -

+

+ Suggested organization +

-

- Or enter your organization's name -

-
-
- institution logo
+ + + Organization + - Organization's name - - - {{ option }} - + +
+ {{ option }} +
+
+ +
+ + + + Cancel institutional sign in +
@@ -143,3 +200,20 @@ + + + + +institution logo diff --git a/src/app/institutional/pages/institutional/institutional.component.scss b/src/app/institutional/pages/institutional/institutional.component.scss index 09f95330e2..43f3cb1611 100644 --- a/src/app/institutional/pages/institutional/institutional.component.scss +++ b/src/app/institutional/pages/institutional/institutional.component.scss @@ -1,5 +1,36 @@ :host { width: 100%; + margin-top: 64px; + + ::ng-deep { + .mat-card-header { + width: unset !important; + padding: 24px 64px 0 64px !important; + .mat-card-title { + margin-bottom: 0; + } + } + .mat-card-content { + margin: 24px 64px 64px 64px !important; + } + } +} +.handset { + :host { + ::ng-deep { + .mat-card-header { + padding: 0 0 0 0 !important; + } + .mat-card-content { + margin: 0 0 0 0 !important; + } + } + } +} + +mat-error { + margin-top: 8px; + font-size: 12px; } button { @@ -26,13 +57,161 @@ img { .institutional-logo { display: block; + display: FLEX; + flex-direction: COLUMN; + align-items: CENTER; .institution-name { display: block; - padding: 10px; - margin-bottom: 10px; + padding-top: 24px; + margin: 0; + } + .institution-name-link { + display: block; + padding-top: 16px; + margin: 0; } img { cursor: pointer; - margin: 12px 0 24px 0; + margin: 12px 0 0px 0; + } +} + +.icon { + margin-bottom: 32px; + display: flex; + gap: 16px; + justify-content: center; + .arrow-icon { + width: 32px; + } + + img { + width: 64px; + } +} + +.step-actions { + display: flex; + flex-direction: column; + justify-content: space-between; + width: 100%; + margin-top: 32px; + gap: 16px; + border-top: 1px solid; + padding-top: 32px; + align-items: center; + + button { + height: 40px; + font-size: 16px; + min-width: 100%; + a { + font-style: italic; + font-size: 14px; + } + a.skip-step { + font-style: normal; + font-size: 14px; + } + } +} + +a { + text-decoration: underline; + font-weight: normal; +} + +.italic { + font-style: italic; +} + +.header-container { + margin-top: 64px; + display: flex; + flex-direction: column; +} + +h1 { + font-weight: 400; + padding: 0; + margin: 0; + margin-bottom: 8px; +} + +.first-paragrapah { + margin-top: 32px; +} + +mat-label.orc-font-small-print { + font-weight: bold; + display: block; + margin-bottom: 8px; + + label { + font-weight: normal; + } +} + +.input-label { + margin-top: 32px; +} + +:host { + ::ng-deep .mat-form-field-suffix { + button { + height: 24px; + mat-icon { + font-size: 18px; + line-height: 1.5 !important; + } + } } + ::ng-deep .mat-form-field-subscript-wrapper { + padding: 0 !important; + } +} + +.mat-option { + min-height: 64px; + line-height: 32px; + height: auto; + margin-bottom: 8px; + white-space: normal; + line-height: 1.4; + + .title { + display: flex; + width: 100%; + font-weight: 500; + } +} + +.bold { + font-weight: 700; +} + +.institutional-logo { + padding: 0; + .divider { + display: flex; + justify-content: center; + align-items: center; + margin-bottom: 44px; + margin-top: 60px; + width: 100%; + border-bottom: 1px solid; + span { + background-color: white; + padding: 5px 10px; + position: absolute; + } + } +} + +h2 { + margin-top: 32px; +} + +.institutional-logo-placeholder { + display: none; } diff --git a/src/app/institutional/pages/institutional/institutional.component.scss-theme.scss b/src/app/institutional/pages/institutional/institutional.component.scss-theme.scss index 663cb13ef6..b9e489b02a 100644 --- a/src/app/institutional/pages/institutional/institutional.component.scss-theme.scss +++ b/src/app/institutional/pages/institutional/institutional.component.scss-theme.scss @@ -1,5 +1,5 @@ -@import '~@angular/material/theming'; -@import '../../../../assets/scss/material.orcid-theme'; +@use '@angular/material' as mat; +@import 'src/assets/scss/material.orcid-theme.scss'; @mixin institutional-theme($theme) { $primary: map-get($theme, primary); @@ -7,6 +7,24 @@ $warn: map-get($theme, accent); $foreground: map-get($theme, foreground); $background: map-get($theme, background); + + .step-actions { + border-color: mat.get-color-from-palette($background, ui-background-light); + } + .institutional-logo .divider { + border-color: mat.get-color-from-palette($background, ui-background-light); + } + .error { + color: map-get($foreground, 'state-warning-dark'); + } + + .step-actions { + button { + color: $orcid-light-primary-text; + background: mat.get-color-from-palette($primary, 700); + } + } + } @include institutional-theme($orcid-app-theme); diff --git a/src/app/institutional/pages/institutional/institutional.component.ts b/src/app/institutional/pages/institutional/institutional.component.ts index b5206c1c19..ddb9dbb1c2 100644 --- a/src/app/institutional/pages/institutional/institutional.component.ts +++ b/src/app/institutional/pages/institutional/institutional.component.ts @@ -13,7 +13,7 @@ import { import { MatLegacyAutocompleteTrigger as MatAutocompleteTrigger } from '@angular/material/legacy-autocomplete' import { Router } from '@angular/router' import { CookieService } from 'ngx-cookie-service' -import { Observable } from 'rxjs' +import { Observable, Subject } from 'rxjs' import { first, map, startWith, tap } from 'rxjs/operators' import { PlatformInfoService } from 'src/app/cdk/platform-info' import { ApplicationRoutes } from 'src/app/constants' @@ -30,7 +30,10 @@ import { @Component({ selector: 'app-institutional', templateUrl: './institutional.component.html', - styleUrls: ['./institutional.component.scss'], + styleUrls: [ + './institutional.component.scss', + './institutional.component.scss-theme.scss', + ], preserveWhitespaces: true, }) export class InstitutionalComponent implements OnInit { @@ -49,6 +52,7 @@ export class InstitutionalComponent implements OnInit { userSelectedInstitutions = [] as Institutional[] labelInstitution = $localize`:@@institutional.ariaLabelInstitution:Institution` labelClear = $localize`:@@institutional.ariaLabelClear:Clear` + placeholderInstitution = $localize`:@@institutional.placeholderTypeYourOrganization:Type your organization name` @ViewChild(MatAutocompleteTrigger) autocomplete: MatAutocompleteTrigger institutionFormControl = new UntypedFormControl('', [Validators.required]) @@ -56,6 +60,9 @@ export class InstitutionalComponent implements OnInit { institutionalForm = new UntypedFormGroup({ institution: this.institutionFormControl, }) + displayDefaultImage: boolean + imageLoadingTimeOut: boolean + imageLoadingFinish: boolean constructor( @Inject(WINDOW) private window: Window, @@ -194,6 +201,12 @@ export class InstitutionalComponent implements OnInit { for (const inst of institutions) { this._disco.getInstitutionBaseOnID(atob(inst)).subscribe((res) => { this.userSelectedInstitutions.push(res) + setTimeout(() => { + if (!this.imageLoadingFinish) { + this.imageLoadingFinish = true + this.imageLoadingTimeOut = true + } + }, 4000) }) } } @@ -213,4 +226,20 @@ export class InstitutionalComponent implements OnInit { navigateTo(val) { this.window.location.href = val } + + handleImgError(ev: any) { + this.displayDefaultImage = true + this.imageLoadingFinish = true + } + imgLoading(ev: any) { + this.imageLoadingFinish = true + } + + get institutionFormTouched() { + return this.institutionalForm.controls['institution'].touched + } + + get institutionFormEmails() { + return this.institutionalForm.controls['institution'] + } } diff --git a/src/app/link-account/pages/link-account/link-account.component.html b/src/app/link-account/pages/link-account/link-account.component.html index 9336489237..743e060bec 100644 --- a/src/app/link-account/pages/link-account/link-account.component.html +++ b/src/app/link-account/pages/link-account/link-account.component.html @@ -7,13 +7,31 @@ *ngIf="loading || signingLoading" mode="indeterminate" > + + - - Link your - {{ entityDisplayName }} - - account to your ORCID record - + +
+ +
+

+ + Link your + + {{ entityDisplayName }} + + account to your ORCID record + +

+

+ + You are signed into + + {{ entityDisplayName }} +

@@ -23,82 +41,70 @@ signInData && !signInData.unsupportedInstitution && !loading " > -

- - You are signed into - - {{ entityDisplayName }} - - as - - - {{ - signInData.email - ? signInData.email - : signInData.firstName + ' ' + signInData.lastName - }} - -

- To finish linking this + To link your {{ entityDisplayName }} - account to ORCID, sign into your ORCID iD below. You will only - need to complete this step once. After your account is linked, - you will be able to access your ORCID record with your + account please sign in to ORCID below. You will only need to + do this once. Once the accounts are linked you will be able to + sign in to your ORCID record with your {{ entityDisplayName }} - account. Questions? + account. + +

+ +

+ + If you have any questions + Visit our knowledge base + > + please visit the ORCID help centre

+ - - +
+ + + + Cancel linking + +
diff --git a/src/app/link-account/pages/link-account/link-account.component.scss b/src/app/link-account/pages/link-account/link-account.component.scss index 140341ce6b..1d77726b9c 100644 --- a/src/app/link-account/pages/link-account/link-account.component.scss +++ b/src/app/link-account/pages/link-account/link-account.component.scss @@ -1,5 +1,29 @@ :host { width: 100%; + ::ng-deep { + .mat-card-header { + width: unset !important; + padding: 24px 64px 0 64px !important; + .mat-card-title { + margin-bottom: 0; + } + } + .mat-card-content { + margin: 24px 64px 64px 64px !important; + } + } +} +.handset { + :host { + ::ng-deep { + .mat-card-header { + padding: 0 0 0 0 !important; + } + .mat-card-content { + margin: 0 0 0 0 !important; + } + } + } } mat-card-title { @@ -23,3 +47,54 @@ button { margin-top: 24px; margin-bottom: 4px; } + +:host { + width: 100%; + margin-top: 64px; +} + +.header-container { + margin-top: 64px; + display: flex; + flex-direction: column; +} + +.icon { + margin-bottom: 32px; + display: flex; + gap: 16px; + justify-content: center; + + img { + width: 64px; + } +} + +h1 { + font-weight: 400; + padding: 0; + margin: 0; + margin-bottom: 8px; +} + +a { + font-weight: 400; +} + +.center-content { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + margin-top: 9px; + a { + width: 100%; + text-align: center; + display: block; + margin-top: 24px; + } +} + +.middle-text { + margin: 24px 0; +} diff --git a/src/app/link-account/pages/link-account/link-account.component.scss-theme.scss b/src/app/link-account/pages/link-account/link-account.component.scss-theme.scss index e8f3d7cffb..e55606ffd0 100644 --- a/src/app/link-account/pages/link-account/link-account.component.scss-theme.scss +++ b/src/app/link-account/pages/link-account/link-account.component.scss-theme.scss @@ -7,8 +7,9 @@ $warn: map-get($theme, accent); $foreground: map-get($theme, foreground); $background: map-get($theme, background); - .display-1 { - color: mat.get-color-from-palette($primary); + button { + color: $orcid-light-primary-text; + background: mat.get-color-from-palette($primary, 700); } } diff --git a/src/assets/vectors/institutional-generic-logo.svg b/src/assets/vectors/institutional-generic-logo.svg new file mode 100644 index 0000000000..cd7001381c --- /dev/null +++ b/src/assets/vectors/institutional-generic-logo.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/vectors/organization-no-logo.svg b/src/assets/vectors/organization-no-logo.svg new file mode 100644 index 0000000000..fc484d3585 --- /dev/null +++ b/src/assets/vectors/organization-no-logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/vectors/translucent-arrow.svg b/src/assets/vectors/translucent-arrow.svg new file mode 100644 index 0000000000..8aaaa7ad93 --- /dev/null +++ b/src/assets/vectors/translucent-arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/locale/properties/institutional/institutional.en.properties b/src/locale/properties/institutional/institutional.en.properties index 918ec444b3..199afcb30c 100644 --- a/src/locale/properties/institutional/institutional.en.properties +++ b/src/locale/properties/institutional/institutional.en.properties @@ -1,12 +1,20 @@ institutional.title=Access through your institution -institutional.account=You may sign into the ORCID Registry using institutional accounts you already have, like one from your university. If you don't already have an ORCID iD, you will be prompted to create one. +institutional.account=You may sign in to the ORCID Registry using institutional accounts you already have, like one from your university. If you don’t have an ORCID iD, you will be prompted to create one. institutional.learn=Learn more about different ways to sign in to ORCID. -institution.organization=Organization's name -institution.organizationRequired=Organization's name is required -institution.invalidInstitution=Invalid Organization Name +institution.organization=Organization +institution.organizationRequired=Please enter an organization name +institution.invalidInstitution=We can’t identify this organization. Please try entering the organization name again. institutional.goBack=Go back -institutional.continue=CONTINUE +institutional.continue=Continue institutional.ariaLabelInstitution=Institution institutional.ariaLabelClear=Clear institutional.suggested=Use a suggested selection institutional.orEnterOrgName=Or enter your organization's name +institutional.signWithEmailid=Sign in with email/iD and password +institutional.suggestedOrgs=Suggested organization +institutional.signInWithThisOrganization=Sign in with this organization +institutional.or=OR +institutional.organization=Organization +institutional.cancelInstituional=Cancel institutional sign in +institutional.suggestedOrg=Suggested organization +institutional.placeholderTypeYourOrganization=Type your organization name diff --git a/src/locale/properties/institutional/institutional.lr.properties b/src/locale/properties/institutional/institutional.lr.properties index b54bbfd68f..d8a4ff79cf 100644 --- a/src/locale/properties/institutional/institutional.lr.properties +++ b/src/locale/properties/institutional/institutional.lr.properties @@ -10,3 +10,11 @@ institutional.ariaLabelInstitution=LR institutional.ariaLabelClear=LR institutional.orEnterOrgName=LR institutional.suggested=LR +institutional.signWithEmailid=LR +institutional.suggestedOrgs=LR +institutional.signInWithThisOrganization=LR +institutional.or=LR +institutional.organization=LR +institutional.cancelInstituional=LR +institutional.suggestedOrg=LR +institutional.placeholderTypeYourOrganization=LR diff --git a/src/locale/properties/institutional/institutional.rl.properties b/src/locale/properties/institutional/institutional.rl.properties index 324c455150..ece90a3d33 100644 --- a/src/locale/properties/institutional/institutional.rl.properties +++ b/src/locale/properties/institutional/institutional.rl.properties @@ -10,3 +10,11 @@ institutional.ariaLabelInstitution=RL institutional.ariaLabelClear=RL institutional.orEnterOrgName=RL institutional.suggested=RL +institutional.signWithEmailid=RL +institutional.suggestedOrgs=RL +institutional.signInWithThisOrganization=RL +institutional.or=RL +institutional.organization=RL +institutional.cancelInstituional=RL +institutional.suggestedOrg=RL +institutional.placeholderTypeYourOrganization=RL diff --git a/src/locale/properties/institutional/institutional.xx.properties b/src/locale/properties/institutional/institutional.xx.properties index a2d3a039f4..55299833ce 100644 --- a/src/locale/properties/institutional/institutional.xx.properties +++ b/src/locale/properties/institutional/institutional.xx.properties @@ -10,3 +10,11 @@ institutional.ariaLabelInstitution=X institutional.ariaLabelClear=X institutional.orEnterOrgName=X institutional.suggested=X +institutional.signWithEmailid=X +institutional.suggestedOrgs=X +institutional.signInWithThisOrganization=X +institutional.or=X +institutional.organization=X +institutional.cancelInstituional=X +institutional.suggestedOrg=X +institutional.placeholderTypeYourOrganization=X diff --git a/src/locale/properties/linking/linking.en.properties b/src/locale/properties/linking/linking.en.properties index 0195956e1c..d3de76b629 100644 --- a/src/locale/properties/linking/linking.en.properties +++ b/src/locale/properties/linking/linking.en.properties @@ -2,10 +2,12 @@ linking.title.1=Link your linking.title.2=account to your ORCID record linking.signed=You are signed into linking.as=as -linking.finish=To finish linking this -linking.account=account to ORCID, sign into your ORCID iD below. You will only need to complete this step once. After your account is linked, you will be able to access your ORCID record with your -linking.questions=account. Questions? -linking.knowledgebase=Visit our knowledge base +linking.finish=To link your +linking.account=account please sign in to ORCID below. You will only need to do this once. Once the accounts are linked you will be able to sign in to your ORCID record with your +linking.questions=account. +linking.knowledgebase=please visit the ORCID help centre linking.button.1=Sign in and link your linking.button.2=account linking.cancel=Cancel and go back +linking.ifYOuHaveQuestions=If you have any questions +linking.cancelLinking=Cancel linking diff --git a/src/locale/properties/linking/linking.lr.properties b/src/locale/properties/linking/linking.lr.properties index e4a46af396..a1d67c2c08 100644 --- a/src/locale/properties/linking/linking.lr.properties +++ b/src/locale/properties/linking/linking.lr.properties @@ -9,3 +9,5 @@ linking.account=LR linking.button.1=LR linking.button.2=LR linking.cancel=LR +linking.ifYOuHaveQuestions=LR +linking.cancelLinking=LR diff --git a/src/locale/properties/linking/linking.rl.properties b/src/locale/properties/linking/linking.rl.properties index d4b517f892..71c84aae9d 100644 --- a/src/locale/properties/linking/linking.rl.properties +++ b/src/locale/properties/linking/linking.rl.properties @@ -9,3 +9,5 @@ linking.account=RL linking.button.1=RL linking.button.2=RL linking.cancel=RL +linking.ifYOuHaveQuestions=RL +linking.cancelLinking=RL diff --git a/src/locale/properties/linking/linking.xx.properties b/src/locale/properties/linking/linking.xx.properties index 0db76f3fc2..28ef611eaa 100644 --- a/src/locale/properties/linking/linking.xx.properties +++ b/src/locale/properties/linking/linking.xx.properties @@ -9,3 +9,5 @@ linking.account=X linking.button.1=X linking.button.2=X linking.cancel=X +linking.ifYOuHaveQuestions=X +linking.cancelLinking=X diff --git a/yarn.lock b/yarn.lock index 2b2de1597d..f4840e6106 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5945,9 +5945,27 @@ blocking-proxy@^1.0.0: dependencies: minimist "^1.2.0" -body-parser@1.20.2, body-parser@^1.19.0: +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.19.0: version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== dependencies: bytes "3.1.2" @@ -6818,10 +6836,10 @@ cookie@0.3.1: resolved "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz" integrity sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw== -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== cookie@~0.4.1: version "0.4.2" @@ -7671,9 +7689,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== ejs@^3.1.8: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + version "3.1.9" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" @@ -7878,13 +7896,12 @@ es-to-primitive@^1.2.1: is-symbol "^1.0.2" es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@~0.10.14: - version "0.10.64" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" - integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== + version "0.10.62" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== dependencies: es6-iterator "^2.0.3" es6-symbol "^3.1.3" - esniff "^2.0.1" next-tick "^1.1.0" es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3: @@ -8085,16 +8102,6 @@ eslint-scope@5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -esniff@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" - integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== - dependencies: - d "^1.0.1" - es5-ext "^0.10.62" - event-emitter "^0.3.5" - type "^2.7.2" - esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" @@ -8262,16 +8269,16 @@ exponential-backoff@^3.1.1: integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== express@^4.17.3: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + version "4.18.2" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.1" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.6.0" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" @@ -8734,9 +8741,9 @@ flush-write-stream@^1.0.2: readable-stream "^2.3.6" follow-redirects@^1.0.0: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + version "1.15.3" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== for-each@^0.3.3: version "0.3.3" @@ -10079,14 +10086,14 @@ invert-kv@^1.0.0: integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== ip@^1.1.8: - version "1.1.9" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.9.tgz#8dfbcc99a754d07f425310b86a99546b1151e396" - integrity sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ== + version "1.1.8" + resolved "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== ip@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.1.tgz#e8f3595d33a3ea66490204234b77636965307105" - integrity sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ== + version "2.0.0" + resolved "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz" + integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== ipaddr.js@1.9.1: version "1.9.1" @@ -12330,9 +12337,9 @@ node-releases@^2.0.13: integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== nodemailer@^6.9.9: - version "6.9.9" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.9.tgz#4549bfbf710cc6addec5064dd0f19874d24248d9" - integrity sha512-dexTll8zqQoVJEZPwQAKzxxtFn0qTnjdQTchoU6Re9BUUGBJiOy3YMn/0ShTW6J5M0dfQ1NeDeRTTl4oIWgQMA== + version "6.9.14" + resolved "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.14.tgz" + integrity sha512-Dobp/ebDKBvz91sbtRKhcznLThrKxKt97GI2FAlAyy+fk19j73Uz3sBXolVtmcXjaorivqsbbbjDY+Jkt4/bQA== nopt@^6.0.0: version "6.0.0" @@ -13687,6 +13694,16 @@ raven@^2.2.1: timed-out "4.0.1" uuid "3.3.2" +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + raw-body@2.5.2: version "2.5.2" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" @@ -15094,7 +15111,7 @@ streamx@^2.15.0: fast-fifo "^1.1.0" queue-tick "^1.0.1" -"string-width-cjs@npm:string-width@^4.2.0": +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -15112,15 +15129,6 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz" @@ -15188,7 +15196,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -15209,13 +15217,6 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" @@ -15371,9 +15372,9 @@ tar-stream@^3.1.5: streamx "^2.15.0" tar@^6.1.11, tar@^6.1.2, tar@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + version "6.2.0" + resolved "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -16474,9 +16475,9 @@ webidl-conversions@^6.1.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-dev-middleware@6.1.1: +webpack-dev-middleware@6.1.1, webpack-dev-middleware@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz#6bbc257ec83ae15522de7a62f995630efde7cc3d" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz" integrity sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ== dependencies: colorette "^2.0.10" @@ -16486,9 +16487,9 @@ webpack-dev-middleware@6.1.1: schema-utils "^4.0.0" webpack-dev-middleware@^5.3.1: - version "5.3.4" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" - integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== + version "5.3.3" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: colorette "^2.0.10" memfs "^3.4.3" @@ -16496,17 +16497,6 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-middleware@^6.1.1: - version "6.1.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz#79f4103f8c898564c9e96c3a9c2422de50f249bc" - integrity sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw== - dependencies: - colorette "^2.0.10" - memfs "^3.4.12" - mime-types "^2.1.31" - range-parser "^1.2.1" - schema-utils "^4.0.0" - webpack-dev-server@4.15.1: version "4.15.1" resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz" @@ -16794,7 +16784,7 @@ workerpool@6.2.0: resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz" integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -16820,15 +16810,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"