diff --git a/.github/workflows/bld_test_rel_tag.yml b/.github/workflows/bld_test_rel_tag.yml
index fabce5eee..f256a4002 100644
--- a/.github/workflows/bld_test_rel_tag.yml
+++ b/.github/workflows/bld_test_rel_tag.yml
@@ -18,6 +18,11 @@ on:
required: false
default: "default"
type: string
+ rel_tag:
+ description: Whether to tag the code
+ type: boolean
+ required: false
+ default: true
workflow_dispatch:
inputs:
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 71e520027..f7e9c0d9a 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -17,16 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-python@v4
+ - uses: actions/setup-python@v5
with:
python-version: '3.10'
- - name: set PY
- run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> "$GITHUB_ENV"
- - uses: actions/cache@v3
- with:
- path: ~/.cache
- key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
- # lockdown all 3rd party repos to git shas
- #- uses: cloudposse/github-action-pre-commit@32acf3179b9eda817c0f549e8057477d320827db
- # migrate to standard pre-commit
- - uses: pre-commit/action@5f528da5c95691c4cf42ff76a4d10854b62cbb82
+ - uses: pre-commit/action@576ff52938d158a24ac7e009dfa94b1455e7df99
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1a3150286..389967293 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,42 @@
+## v2.107.12 - 2024-11-15
+
+[Full Changelog](https://github.com/ORCID/orcid-angular/compare/v2.107.11...v2.107.12)
+
+## v2.107.11 - 2024-11-13
+
+[Full Changelog](https://github.com/ORCID/orcid-angular/compare/v2.107.10...v2.107.11)
+
+## v2.107.10 - 2024-11-13
+
+[Full Changelog](https://github.com/ORCID/orcid-angular/compare/v2.107.9...v2.107.10)
+
+- [#2396](https://github.com/ORCID/orcid-angular/pull/2396): 9497 resolve the issues integrators are having when embedding summaries into iframes
+- [#2393](https://github.com/ORCID/orcid-angular/pull/2393): Bump rollup from 3.29.4 to 3.29.5
+- [#2395](https://github.com/ORCID/orcid-angular/pull/2395): scroll to top on email interstitial
+- [#2394](https://github.com/ORCID/orcid-angular/pull/2394): convert to matrix format and bump all action versions for node version
+
+### Fix
+
+- bump linting action versions
+
+## 2.108.0 - 2024-11-13
+
+[Full Changelog](https://github.com/ORCID/orcid-angular/compare/v2.107.9...2.108.0)
+
+- [#2395](https://github.com/ORCID/orcid-angular/pull/2395): scroll to top on email interstitial
+- [#2394](https://github.com/ORCID/orcid-angular/pull/2394): convert to matrix format and bump all action versions for node version
+
+### Fix
+
+- bump linting action versions
+
+## 2.107.10 - 2024-11-12
+
+[Full Changelog](https://github.com/ORCID/orcid-angular/compare/v2.107.9...2.107.10)
+
+- [#2395](https://github.com/ORCID/orcid-angular/pull/2395): scroll to top on email interstitial
+- [#2394](https://github.com/ORCID/orcid-angular/pull/2394): convert to matrix format and bump all action versions for node version
+
## v2.107.9 - 2024-11-12
[Full Changelog](https://github.com/ORCID/orcid-angular/compare/v2.107.8...v2.107.9)
diff --git a/src/app/cdk/interstitials/share-emails-domains/share-emails-domains.component.spec.ts b/src/app/cdk/interstitials/share-emails-domains/share-emails-domains.component.spec.ts
index fd7032fe5..cb70bcf5b 100644
--- a/src/app/cdk/interstitials/share-emails-domains/share-emails-domains.component.spec.ts
+++ b/src/app/cdk/interstitials/share-emails-domains/share-emails-domains.component.spec.ts
@@ -4,6 +4,8 @@ import { ShareEmailsDomainsComponent } from './share-emails-domains.component'
import { FormBuilder, FormControl, FormGroup } from '@angular/forms'
import { RecordEmailsService } from 'src/app/core/record-emails/record-emails.service'
import { PlatformInfoService } from '../../platform-info'
+import { WINDOW_PROVIDERS } from '../../window'
+import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'
describe('ShareEmailsDomainsComponent', () => {
let component: ShareEmailsDomainsComponent
@@ -28,7 +30,9 @@ describe('ShareEmailsDomainsComponent', () => {
provide: RecordEmailsService,
useValue: {},
},
+ WINDOW_PROVIDERS,
],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
fixture = TestBed.createComponent(ShareEmailsDomainsComponent)
component = fixture.componentInstance
diff --git a/src/app/cdk/interstitials/share-emails-domains/share-emails-domains.component.ts b/src/app/cdk/interstitials/share-emails-domains/share-emails-domains.component.ts
index 37394b38c..be75d51a8 100644
--- a/src/app/cdk/interstitials/share-emails-domains/share-emails-domains.component.ts
+++ b/src/app/cdk/interstitials/share-emails-domains/share-emails-domains.component.ts
@@ -1,9 +1,10 @@
-import { Component, EventEmitter, Input, Output } from '@angular/core'
+import { Component, EventEmitter, Inject, Input, Output } from '@angular/core'
import { PlatformInfoService } from '../../platform-info'
import { AssertionVisibilityString, EmailsEndpoint } from 'src/app/types'
import { FormBuilder, FormControl, FormGroup } from '@angular/forms'
import { RecordEmailsService } from 'src/app/core/record-emails/record-emails.service'
import { error } from 'console'
+import { WINDOW } from '../../window'
@Component({
selector: 'app-share-emails-domains',
@@ -23,12 +24,14 @@ export class ShareEmailsDomainsComponent {
constructor(
public platformInfo: PlatformInfoService,
private fb: FormBuilder,
- private recordEmailsService: RecordEmailsService
+ private recordEmailsService: RecordEmailsService,
+ @Inject(WINDOW) private window: Window
) {}
public loadingEmails = true
@Output() finish = new EventEmitter()
ngOnInit() {
+ this.window.scrollTo(0, 0)
this.userPrivateDomains = this.getTop3MostRecentPrivateDomains(
this.userEmailsJson
)
diff --git a/src/app/cdk/trusted-summary/component/trusted-summary/trusted-summary.component.scss b/src/app/cdk/trusted-summary/component/trusted-summary/trusted-summary.component.scss
index b1b65eadf..5c2863a67 100644
--- a/src/app/cdk/trusted-summary/component/trusted-summary/trusted-summary.component.scss
+++ b/src/app/cdk/trusted-summary/component/trusted-summary/trusted-summary.component.scss
@@ -2,7 +2,6 @@
width: 100%;
display: flex;
justify-content: center;
- height: 100vh;
}
main.stand-alone-mode {
@@ -17,6 +16,7 @@ main.inside-iframe {
align-content: start;
grid-gap: 0;
box-sizing: border-box;
+ height: 100vh;
.panel-body {
padding-top: 16px;
diff --git a/src/app/developer-tools/components/terms-of-use/terms-of-use.component.html b/src/app/developer-tools/components/terms-of-use/terms-of-use.component.html
index cd639f1d4..15b512002 100644
--- a/src/app/developer-tools/components/terms-of-use/terms-of-use.component.html
+++ b/src/app/developer-tools/components/terms-of-use/terms-of-use.component.html
@@ -132,6 +132,25 @@
+
+ No verified email addresses found
+
+
+ You must have at least one verified email address in your ORCID account
+ to register for your Public API credentials. Manage your email addresses
+ in the
+ Emails and domains section of your ORCID record.
+
+
+
warning
diff --git a/src/app/developer-tools/components/terms-of-use/terms-of-use.component.scss b/src/app/developer-tools/components/terms-of-use/terms-of-use.component.scss
index 119a7b114..0746ee38e 100644
--- a/src/app/developer-tools/components/terms-of-use/terms-of-use.component.scss
+++ b/src/app/developer-tools/components/terms-of-use/terms-of-use.component.scss
@@ -45,3 +45,14 @@ h2 {
.mat-button-wrap-text {
margin-bottom: 32px;
}
+
+app-alert-message {
+ line-height: 21px;
+ margin-top: 16px;
+ a {
+ text-decoration: underline;
+ }
+ p {
+ margin-bottom: 0;
+ }
+}
diff --git a/src/app/developer-tools/components/terms-of-use/terms-of-use.component.spec.ts b/src/app/developer-tools/components/terms-of-use/terms-of-use.component.spec.ts
index d89be9998..5830ed280 100644
--- a/src/app/developer-tools/components/terms-of-use/terms-of-use.component.spec.ts
+++ b/src/app/developer-tools/components/terms-of-use/terms-of-use.component.spec.ts
@@ -7,6 +7,8 @@ import { RecordService } from 'src/app/core/record/record.service'
import { of } from 'rxjs'
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'
+import { MatLegacyDialog } from '@angular/material/legacy-dialog'
+import { useAnimation } from '@angular/animations'
describe('TermsOfUseComponent', () => {
let component: TermsOfUseComponent
@@ -19,6 +21,7 @@ describe('TermsOfUseComponent', () => {
{ provide: DeveloperToolsService, useValue: {} },
{ provide: PlatformInfoService, useValue: {} },
{ provide: RecordService, useValue: { getRecord: () => of() } },
+ { provide: MatLegacyDialog, useValue: {} },
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents()
diff --git a/src/app/developer-tools/components/terms-of-use/terms-of-use.component.ts b/src/app/developer-tools/components/terms-of-use/terms-of-use.component.ts
index e0f049baa..0d14e464b 100644
--- a/src/app/developer-tools/components/terms-of-use/terms-of-use.component.ts
+++ b/src/app/developer-tools/components/terms-of-use/terms-of-use.component.ts
@@ -9,9 +9,11 @@ import {
ViewChild,
} from '@angular/core'
import { MatLegacyCheckbox as MatCheckbox } from '@angular/material/legacy-checkbox'
+import { MatLegacyDialog } from '@angular/material/legacy-dialog'
import { Subject } from 'rxjs'
import { takeUntil } from 'rxjs/operators'
import { PlatformInfoService } from 'src/app/cdk/platform-info'
+import { ModalEmailComponent } from 'src/app/cdk/side-bar/modals/modal-email/modal-email.component'
import { DeveloperToolsService } from 'src/app/core/developer-tools/developer-tools.service'
import { RecordService } from 'src/app/core/record/record.service'
@@ -31,10 +33,12 @@ export class TermsOfUseComponent implements OnInit, OnDestroy {
@Output() developerToolsEnable = new EventEmitter()
$destroy = new Subject()
emailAlreadyVerified: boolean
+ hasVerifiedEmailAddress: boolean
constructor(
private developerToolsService: DeveloperToolsService,
private _record: RecordService,
+ private _dialog: MatLegacyDialog,
private _changeDetectorRef: ChangeDetectorRef
) {}
ngOnDestroy(): void {
@@ -50,6 +54,9 @@ export class TermsOfUseComponent implements OnInit, OnDestroy {
const primaryEmail = userRecord?.emails?.emails?.filter(
(email) => email.primary
)[0]
+ this.hasVerifiedEmailAddress = userRecord.emails.emails.some(
+ (email) => email.verified
+ )
if (primaryEmail?.verified) {
this.emailAlreadyVerified = true
this._changeDetectorRef.detectChanges()
@@ -57,6 +64,17 @@ export class TermsOfUseComponent implements OnInit, OnDestroy {
})
}
+ openEmailModal() {
+ return this._dialog
+ .open(ModalEmailComponent, {
+ width: '850px',
+ maxWidth: '99%',
+ // data: this.userRecord,
+ // ariaLabel: getAriaLabel(this.editModalComponent, this.type),
+ })
+ .afterClosed()
+ }
+
registerForPublicApi() {
this.dirty = true
if (!this.checked) {
diff --git a/src/app/environment-banner/environment-banner/environment-banner.component.ts b/src/app/environment-banner/environment-banner/environment-banner.component.ts
index 522b8a7a7..282df0394 100644
--- a/src/app/environment-banner/environment-banner/environment-banner.component.ts
+++ b/src/app/environment-banner/environment-banner/environment-banner.component.ts
@@ -14,12 +14,17 @@ export class EnvironmentBannerComponent implements OnInit {
canDismiss = environment['CAN_DISABLE_TEST_WARNING_BANNER']
@HostBinding('style.display') display = 'none'
labelWarning = $localize`:@@environmentBanner.ariaLabelWarning:Warning, testing website`
+ notInsideIframe: boolean
constructor(
@Inject(WINDOW) private window: Window,
private _cookieService: CookieService
) {
+ this.notInsideIframe = window.self === window.top
this.hostUrl = window.location.host
- if (!this._cookieService.get('testWarningCookie') || !this.canDismiss) {
+ if (
+ (!this._cookieService.get('testWarningCookie') || !this.canDismiss) &&
+ this.notInsideIframe
+ ) {
this.display = 'auto'
}
}
diff --git a/src/locale/properties/developer-tools/developer-tools.en.properties b/src/locale/properties/developer-tools/developer-tools.en.properties
index 11594b966..c5a51af0d 100644
--- a/src/locale/properties/developer-tools/developer-tools.en.properties
+++ b/src/locale/properties/developer-tools/developer-tools.en.properties
@@ -82,3 +82,6 @@ developerTools.publicClientApplicationsAreGranted2=If you need access to an ORCI
developerTools.memberApi=Member API
developerTools.mayBeMoreAppropriate=is available to ORCID member organizations.
developerTools.byRegisteringForPublicApi=By “non-commercial” we mean that you may not charge any re-use fees for the Public API, and you may not make use of the Public API in connection with any revenue-generating product or service.
+developerTools.noVerifiedEmailAddresses=No verified email addresses found
+developerTools.youMustHaveAtLeastOneVerifiedEmail=You must have at least one verified email address in your ORCID account to register for your Public API credentials. Manage your email addresses in the
+developerTools.emailsAndDomainsSection=Emails and domains section of your ORCID record
diff --git a/src/locale/properties/developer-tools/developer-tools.lr.properties b/src/locale/properties/developer-tools/developer-tools.lr.properties
index bb632f179..b33563e4b 100644
--- a/src/locale/properties/developer-tools/developer-tools.lr.properties
+++ b/src/locale/properties/developer-tools/developer-tools.lr.properties
@@ -82,3 +82,6 @@ developerTools.publicClientApplicationsAreGranted2=LR
developerTools.memberApi=LR
developerTools.mayBeMoreAppropriate=LR
developerTools.byRegisteringForPublicApi=LR
+developerTools.noVerifiedEmailAddresses=LR
+developerTools.youMustHaveAtLeastOneVerifiedEmail=LR
+developerTools.emailsAndDomainsSection=LR
diff --git a/src/locale/properties/developer-tools/developer-tools.rl.properties b/src/locale/properties/developer-tools/developer-tools.rl.properties
index ba5794198..97d36bd8d 100644
--- a/src/locale/properties/developer-tools/developer-tools.rl.properties
+++ b/src/locale/properties/developer-tools/developer-tools.rl.properties
@@ -82,3 +82,6 @@ developerTools.publicClientApplicationsAreGranted2=RL
developerTools.memberApi=RL
developerTools.mayBeMoreAppropriate=RL
developerTools.byRegisteringForPublicApi=RL
+developerTools.noVerifiedEmailAddresses=RL
+developerTools.youMustHaveAtLeastOneVerifiedEmail=RL
+developerTools.emailsAndDomainsSection=RL
diff --git a/src/locale/properties/developer-tools/developer-tools.xx.properties b/src/locale/properties/developer-tools/developer-tools.xx.properties
index 55317fc15..f161ce459 100644
--- a/src/locale/properties/developer-tools/developer-tools.xx.properties
+++ b/src/locale/properties/developer-tools/developer-tools.xx.properties
@@ -82,3 +82,6 @@ developerTools.publicClientApplicationsAreGranted2=X
developerTools.memberApi=X
developerTools.mayBeMoreAppropriate=X
developerTools.byRegisteringForPublicApi=X
+developerTools.noVerifiedEmailAddresses=X
+developerTools.youMustHaveAtLeastOneVerifiedEmail=X
+developerTools.emailsAndDomainsSection=X
diff --git a/summary-iframe-implementation-sample.html b/summary-iframe-implementation-sample.html
new file mode 100644
index 000000000..06bdb838f
--- /dev/null
+++ b/summary-iframe-implementation-sample.html
@@ -0,0 +1,247 @@
+
+
+
+
+
+
+
+ ORCID Summary iFrame Display Tester
+
+
+
+
+
ORCID Summary iFrame Display Tester
+
+ This tool allows you to display ORCID IDs within iframes of various
+ sizes. Test how the content adapts to different iframe dimensions.
+