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. +

+
+ + +
+ + + +
+ + +
+ + + + +
+ + +
+ + +
+ + + + diff --git a/yarn.lock b/yarn.lock index 54027b35c..24456a326 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14291,9 +14291,9 @@ robots-parser@^2.0.1: integrity sha512-oO8f2SI04dJk3pbj2KOMJ4G6QfPAgqcGmrYGmansIcpRewIPT2ljWEt5I+ip6EgiyaLo+RXkkUWw74M25HDkMA== rollup@^3.25.2: - version "3.29.4" - resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz" - integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== + version "3.29.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.5.tgz#8a2e477a758b520fb78daf04bca4c522c1da8a54" + integrity sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w== optionalDependencies: fsevents "~2.3.2"