mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
Merge branch 'w2p-130479_fix-accessibility-issues-for-the-language-toggle-and-recent-submissions'
This commit is contained in:
@@ -7,7 +7,7 @@
|
|||||||
<a
|
<a
|
||||||
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
||||||
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" role="link" tabindex="0">
|
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" tabindex="-1">
|
||||||
<div>
|
<div>
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<a
|
<a
|
||||||
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
||||||
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" role="link" tabindex="0">
|
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" tabindex="-1">
|
||||||
<div>
|
<div>
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<a
|
<a
|
||||||
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
||||||
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" role="link" tabindex="0">
|
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" tabindex="-1">
|
||||||
<div>
|
<div>
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
@if (linkType !== linkTypes.None) {
|
@if (linkType !== linkTypes.None) {
|
||||||
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
||||||
[routerLink]="[itemPageRoute]" class="lead item-list-title dont-break-out" role="link" tabindex="0">
|
[routerLink]="[itemPageRoute]" class="lead item-list-title dont-break-out" tabindex="-1">
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="true">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="true">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
</a>
|
</a>
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
@if (linkType !== linkTypes.None) {
|
@if (linkType !== linkTypes.None) {
|
||||||
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
||||||
[routerLink]="[itemPageRoute]" class="lead item-list-title dont-break-out" role="link" tabindex="0">
|
[routerLink]="[itemPageRoute]" class="lead item-list-title dont-break-out" tabindex="-1">
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="true">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="true">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
</a>
|
</a>
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
<div class="col-3 col-md-2">
|
<div class="col-3 col-md-2">
|
||||||
@if (linkType !== linkTypes.None) {
|
@if (linkType !== linkTypes.None) {
|
||||||
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
||||||
[routerLink]="[itemPageRoute]" class="lead item-list-title dont-break-out" role="link" tabindex="0">
|
[routerLink]="[itemPageRoute]" class="lead item-list-title dont-break-out" tabindex="-1">
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="true">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="true">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
</a>
|
</a>
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<a
|
<a
|
||||||
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
||||||
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" role="link" tabindex="0">
|
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" tabindex="-1">
|
||||||
<div>
|
<div>
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<a
|
<a
|
||||||
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
||||||
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" role="link" tabindex="0">
|
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" tabindex="-1">
|
||||||
<div>
|
<div>
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<a
|
<a
|
||||||
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
[target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
||||||
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" role="link" tabindex="0">
|
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate" tabindex="-1">
|
||||||
<div>
|
<div>
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
@if (linkType !== linkTypes.None) {
|
@if (linkType !== linkTypes.None) {
|
||||||
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
||||||
[routerLink]="[itemPageRoute]" class="dont-break-out" role="link" tabindex="0">
|
[routerLink]="[itemPageRoute]" class="dont-break-out" tabindex="-1">
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async"
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async"
|
||||||
[defaultImage]="'assets/images/orgunit-placeholder.svg'"
|
[defaultImage]="'assets/images/orgunit-placeholder.svg'"
|
||||||
[alt]="'thumbnail.orgunit.alt'"
|
[alt]="'thumbnail.orgunit.alt'"
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
@if (linkType !== linkTypes.None) {
|
@if (linkType !== linkTypes.None) {
|
||||||
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
||||||
[routerLink]="[itemPageRoute]" class="dont-break-out" role="link" tabindex="0">
|
[routerLink]="[itemPageRoute]" class="dont-break-out" tabindex="-1">
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async"
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async"
|
||||||
[defaultImage]="'assets/images/person-placeholder.svg'"
|
[defaultImage]="'assets/images/person-placeholder.svg'"
|
||||||
[alt]="'thumbnail.person.alt'"
|
[alt]="'thumbnail.person.alt'"
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
@if (linkType !== linkTypes.None) {
|
@if (linkType !== linkTypes.None) {
|
||||||
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'"
|
||||||
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
[attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
||||||
[routerLink]="[itemPageRoute]" class="dont-break-out" role="link" tabindex="0">
|
[routerLink]="[itemPageRoute]" class="dont-break-out" tabindex="-1">
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async"
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async"
|
||||||
[defaultImage]="'assets/images/project-placeholder.svg'"
|
[defaultImage]="'assets/images/project-placeholder.svg'"
|
||||||
[alt]="'thumbnail.project.alt'"
|
[alt]="'thumbnail.project.alt'"
|
||||||
|
@@ -2,14 +2,18 @@
|
|||||||
@if (itemRD?.hasSucceeded && itemRD?.payload?.page.length > 0) {
|
@if (itemRD?.hasSucceeded && itemRD?.payload?.page.length > 0) {
|
||||||
<div class="mt-4" [ngClass]="placeholderFontClass" @fadeIn>
|
<div class="mt-4" [ngClass]="placeholderFontClass" @fadeIn>
|
||||||
<div class="d-flex flex-row border-bottom mb-4 pb-4"></div>
|
<div class="d-flex flex-row border-bottom mb-4 pb-4"></div>
|
||||||
<h2> {{'home.recent-submissions.head' | translate}}</h2>
|
<h2> {{ 'home.recent-submissions.head' | translate }}</h2>
|
||||||
@for (item of itemRD?.payload?.page; track item) {
|
<ul class="list-unstyled m-0 p-0">
|
||||||
<div class="my-4">
|
@for (item of itemRD?.payload?.page; track item) {
|
||||||
<ds-listable-object-component-loader [object]="item" [viewMode]="viewMode" class="pb-4">
|
<li class="my-4">
|
||||||
</ds-listable-object-component-loader>
|
<ds-listable-object-component-loader [object]="item" [viewMode]="viewMode" class="pb-4">
|
||||||
</div>
|
</ds-listable-object-component-loader>
|
||||||
}
|
</li>
|
||||||
<button (click)="onLoadMore()" class="btn btn-primary search-button mt-4 float-start ng-tns-c290-40" role="button" tabindex="0"> {{'vocabulary-treeview.load-more' | translate }} ...</button>
|
}
|
||||||
|
</ul>
|
||||||
|
<button (click)="onLoadMore()" class="btn btn-primary search-button mt-4 float-start" role="link" tabindex="0">
|
||||||
|
{{ 'vocabulary-treeview.load-more' | translate }} ...
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@if (itemRD?.hasFailed) {
|
@if (itemRD?.hasFailed) {
|
||||||
|
@@ -1,25 +1,28 @@
|
|||||||
@if (moreThanOneLanguage) {
|
@if (moreThanOneLanguage) {
|
||||||
<div ngbDropdown class="navbar-nav" display="dynamic" placement="bottom-right">
|
<div ngbDropdown class="navbar-nav" display="dynamic" placement="bottom-right">
|
||||||
<a href="javascript:void(0);" role="menuitem"
|
<button role="button"
|
||||||
[attr.aria-label]="'nav.language' |translate"
|
[attr.aria-label]="'nav.language' |translate"
|
||||||
aria-controls="language-menu-list"
|
aria-controls="language-menu-list"
|
||||||
aria-haspopup="menu"
|
aria-haspopup="menu"
|
||||||
[title]="'nav.language' | translate"
|
class="dropdown-toggle"
|
||||||
(click)="$event.preventDefault()" data-toggle="dropdown" ngbDropdownToggle
|
[title]="'nav.language' | translate"
|
||||||
data-test="lang-switch"
|
(click)="$event.preventDefault()" data-toggle="dropdown" ngbDropdownToggle
|
||||||
tabindex="0">
|
data-test="lang-switch"
|
||||||
|
tabindex="0">
|
||||||
<i class="fas fa-globe-asia fa-lg fa-fw"></i>
|
<i class="fas fa-globe-asia fa-lg fa-fw"></i>
|
||||||
</a>
|
</button>
|
||||||
<ul ngbDropdownMenu class="dropdown-menu" [attr.aria-label]="'nav.language' |translate" id="language-menu-list" role="menu">
|
<div ngbDropdownMenu class="dropdown-menu" [attr.aria-label]="'nav.language' |translate" id="language-menu-list"
|
||||||
|
role="listbox">
|
||||||
@for (lang of translate.getLangs(); track lang) {
|
@for (lang of translate.getLangs(); track lang) {
|
||||||
<li class="dropdown-item" tabindex="0" #langSelect
|
<div class="dropdown-item" tabindex="0"
|
||||||
role="menuitem"
|
role="option"
|
||||||
(keyup.enter)="useLang(lang)"
|
(keyup.enter)="useLang(lang)"
|
||||||
(click)="useLang(lang)"
|
(click)="useLang(lang)"
|
||||||
[class.active]="lang === translate.currentLang">
|
[attr.aria-selected]="lang === translate.currentLang"
|
||||||
|
[class.active]="lang === translate.currentLang">
|
||||||
{{ langLabel(lang) }}
|
{{ langLabel(lang) }}
|
||||||
</li>
|
</div>
|
||||||
}
|
}
|
||||||
</ul>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-toggle {
|
.dropdown-toggle {
|
||||||
|
all: unset;
|
||||||
color: var(--ds-header-icon-color);
|
color: var(--ds-header-icon-color);
|
||||||
|
|
||||||
&:hover, &:focus {
|
&:hover, &:focus {
|
||||||
|
@@ -128,7 +128,7 @@ describe('LangSwitchComponent', () => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
it('should define the main A HREF in the UI', (() => {
|
it('should define the main A HREF in the UI', (() => {
|
||||||
expect(langSwitchElement.querySelector('a')).not.toBeNull();
|
expect(langSwitchElement.querySelector('button.dropdown-toggle')).not.toBeNull();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
describe('when selecting a language', () => {
|
describe('when selecting a language', () => {
|
||||||
|
@@ -1,5 +1,10 @@
|
|||||||
@if (showAccessStatus) {
|
@if (showAccessStatus) {
|
||||||
@if ({ status: accessStatus$ | async, date: embargoDate$ | async }; as accessStatus) {
|
@if ((accessStatus$ | async); as status) {
|
||||||
<span [class]="'badge bg-secondary dont-break-out access-status-list-element-badge ' + accessStatusClass">{{ accessStatus.status | translate: {date: accessStatus.date} }}</span>
|
@let date = embargoDate$ | async;
|
||||||
|
<span [class]="'badge bg-secondary dont-break-out access-status-list-element-badge ' + accessStatusClass">
|
||||||
|
<span class="sr-only">{{ 'listelement.badge.access-status' | translate }}</span>
|
||||||
|
{{ status | translate: { date: date } }}
|
||||||
|
<span class="sr-only">, </span>
|
||||||
|
</span>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,7 @@ import { TruncatePipe } from '../../../../utils/truncate.pipe';
|
|||||||
import { AccessStatusObject } from './access-status.model';
|
import { AccessStatusObject } from './access-status.model';
|
||||||
import { AccessStatusBadgeComponent } from './access-status-badge.component';
|
import { AccessStatusBadgeComponent } from './access-status-badge.component';
|
||||||
|
|
||||||
describe('ItemAccessStatusBadgeComponent', () => {
|
describe('AccessStatusBadgeComponent', () => {
|
||||||
let component: AccessStatusBadgeComponent;
|
let component: AccessStatusBadgeComponent;
|
||||||
let fixture: ComponentFixture<AccessStatusBadgeComponent>;
|
let fixture: ComponentFixture<AccessStatusBadgeComponent>;
|
||||||
|
|
||||||
@@ -100,17 +100,17 @@ describe('ItemAccessStatusBadgeComponent', () => {
|
|||||||
|
|
||||||
function lookForAccessStatusBadgeForItem(status: string) {
|
function lookForAccessStatusBadgeForItem(status: string) {
|
||||||
const badge = fixture.debugElement.query(By.css('span.badge'));
|
const badge = fixture.debugElement.query(By.css('span.badge'));
|
||||||
expect(badge.nativeElement.textContent).toEqual(`access-status.${status.toLowerCase()}.listelement.badge`);
|
expect(badge.nativeElement.textContent).toContain(`access-status.${status.toLowerCase()}.listelement.badge`);
|
||||||
}
|
}
|
||||||
|
|
||||||
function lookForAccessStatusBadgeForBitstream() {
|
function lookForAccessStatusBadgeForBitstream() {
|
||||||
const badge = fixture.debugElement.query(By.css('span.badge'));
|
const badge = fixture.debugElement.query(By.css('span.badge'));
|
||||||
expect(badge.nativeElement.textContent).toEqual(`embargo.listelement.badge`);
|
expect(badge.nativeElement.textContent).toContain('embargo.listelement.badge');
|
||||||
}
|
}
|
||||||
|
|
||||||
function lookForNoAccessStatusBadgeForBitstream() {
|
function lookForNoAccessStatusBadgeForBitstream() {
|
||||||
const badge = fixture.debugElement.query(By.css('span.badge'));
|
const badge = fixture.debugElement.query(By.css('span.badge'));
|
||||||
expect(badge.nativeElement.textContent).toEqual(``);
|
expect(badge).toBeNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('init with item', () => {
|
describe('init with item', () => {
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<span [className]="badgeClass">
|
<span [className]="badgeClass">
|
||||||
|
<span class="sr-only">{{ 'mydspace.status' | translate }}</span>
|
||||||
{{('mydspace.status.' + badgeContent) | translate}}
|
{{('mydspace.status.' + badgeContent) | translate}}
|
||||||
|
<span class="sr-only">, </span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -1,10 +1,16 @@
|
|||||||
@if (privateBadge) {
|
@if (privateBadge) {
|
||||||
<div class="private-badge">
|
<div class="private-badge">
|
||||||
<span class="badge bg-danger">{{ "item.badge.private" | translate }}</span>
|
<span class="badge bg-danger">
|
||||||
|
<span class="sr-only">{{ 'item.badge.status' | translate }}</span>
|
||||||
|
{{ "item.badge.private" | translate }}
|
||||||
|
<span class="sr-only">, </span>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@if (withdrawnBadge) {
|
@if (withdrawnBadge) {
|
||||||
<div class="withdrawn-badge">
|
<div class="withdrawn-badge">
|
||||||
|
<span class="sr-only">{{ 'item.badge.status' | translate }}</span>
|
||||||
<span class="badge bg-warning">{{ "item.badge.withdrawn" | translate }}</span>
|
<span class="badge bg-warning">{{ "item.badge.withdrawn" | translate }}</span>
|
||||||
|
<span class="sr-only">, </span>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
@if (typeMessage) {
|
@if (typeMessage) {
|
||||||
<span>
|
<span>
|
||||||
|
<span class="sr-only">{{ 'listelement.badge.dso-type' | translate }}</span>
|
||||||
<span class="badge bg-info">{{ typeMessage | translate }}</span>
|
<span class="badge bg-info">{{ typeMessage | translate }}</span>
|
||||||
|
<span class="sr-only">, </span>
|
||||||
</span>
|
</span>
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
@if (linkType !== linkTypes.None) {
|
@if (linkType !== linkTypes.None) {
|
||||||
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="['/collections/', dso.id]" class="card-img-top" [attr.title]="'search.results.view-result' | translate">
|
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="['/collections/', dso.id]" class="card-img-top" tabindex="-1" [attr.title]="'search.results.view-result' | translate">
|
||||||
<ds-thumbnail [thumbnail]="(dso.logo | async)?.payload" [limitWidth]="false">
|
<ds-thumbnail [thumbnail]="(dso.logo | async)?.payload" [limitWidth]="false">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
</a>
|
</a>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
<div class="card">
|
<div class="card">
|
||||||
@if (linkType !== linkTypes.None) {
|
@if (linkType !== linkTypes.None) {
|
||||||
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="['/communities/', dso.id]" class="card-img-top" [attr.title]="'search.results.view-result' | translate">
|
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="['/communities/', dso.id]" class="card-img-top" tabindex="-1" [attr.title]="'search.results.view-result' | translate">
|
||||||
<ds-thumbnail [thumbnail]="(dso.logo | async)?.payload" [limitWidth]="false">
|
<ds-thumbnail [thumbnail]="(dso.logo | async)?.payload" [limitWidth]="false">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
</a>
|
</a>
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
</div>
|
</div>
|
||||||
@if (linkType !== linkTypes.None) {
|
@if (linkType !== linkTypes.None) {
|
||||||
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null" [routerLink]="[itemPageRoute]"
|
||||||
class="card-img-top full-width" [attr.title]="'search.results.view-result' | translate">
|
class="card-img-top full-width" tabindex="-1" [attr.title]="'search.results.view-result' | translate">
|
||||||
<div>
|
<div>
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="false">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
<div class="col-3 col-md-2">
|
<div class="col-3 col-md-2">
|
||||||
@if (linkType !== linkTypes.None) {
|
@if (linkType !== linkTypes.None) {
|
||||||
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
<a [target]="(linkType === linkTypes.ExternalLink) ? '_blank' : '_self'" [attr.rel]="(linkType === linkTypes.ExternalLink) ? 'noopener noreferrer' : null"
|
||||||
[routerLink]="[itemPageRoute]" class="dont-break-out" role="button" tabindex="0">
|
[routerLink]="[itemPageRoute]" class="dont-break-out" tabindex="-1">
|
||||||
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="true">
|
<ds-thumbnail [thumbnail]="dso?.thumbnail | async" [limitWidth]="true">
|
||||||
</ds-thumbnail>
|
</ds-thumbnail>
|
||||||
</a>
|
</a>
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
<ds-loading
|
<ds-loading
|
||||||
message="{{'loading.search-results' | translate}}"></ds-loading>
|
message="{{'loading.search-results' | translate}}"></ds-loading>
|
||||||
}
|
}
|
||||||
@if ((isLoading$ | async) !== true && entriesRD?.payload?.page?.length === 0) {
|
@if ((isLoading$ | async) !== true && entriesRD?.payload?.page?.length === 0 && routeData?.query?.length > 0) {
|
||||||
<div data-test="empty-external-entry-list">
|
<div data-test="empty-external-entry-list">
|
||||||
<ds-alert [type]="AlertType.Info">{{ 'search.results.empty' | translate }}</ds-alert>
|
<ds-alert [type]="AlertType.Info">{{ 'search.results.empty' | translate }}</ds-alert>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -503,6 +503,12 @@ describe('SubmissionImportExternalComponent test suite', () => {
|
|||||||
if (param === 'entity') {
|
if (param === 'entity') {
|
||||||
return observableOf('Publication');
|
return observableOf('Publication');
|
||||||
}
|
}
|
||||||
|
if (param === 'query') {
|
||||||
|
return observableOf('test');
|
||||||
|
}
|
||||||
|
if (param === 'sourceId') {
|
||||||
|
return observableOf('pubmed');
|
||||||
|
}
|
||||||
return observableOf({});
|
return observableOf({});
|
||||||
});
|
});
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
@@ -33,6 +33,8 @@
|
|||||||
|
|
||||||
"error-page.orcid.generic-error": "An error occurred during login via ORCID. Make sure you have shared your ORCID account email address with DSpace. If the error persists, contact the administrator",
|
"error-page.orcid.generic-error": "An error occurred during login via ORCID. Make sure you have shared your ORCID account email address with DSpace. If the error persists, contact the administrator",
|
||||||
|
|
||||||
|
"listelement.badge.access-status": "Access status:",
|
||||||
|
|
||||||
"access-status.embargo.listelement.badge": "Embargo",
|
"access-status.embargo.listelement.badge": "Embargo",
|
||||||
|
|
||||||
"access-status.metadata.only.listelement.badge": "Metadata only",
|
"access-status.metadata.only.listelement.badge": "Metadata only",
|
||||||
@@ -2251,6 +2253,8 @@
|
|||||||
|
|
||||||
"item.edit.authorizations.title": "Edit item's Policies",
|
"item.edit.authorizations.title": "Edit item's Policies",
|
||||||
|
|
||||||
|
"item.badge.status": "Item status:",
|
||||||
|
|
||||||
"item.badge.private": "Non-discoverable",
|
"item.badge.private": "Non-discoverable",
|
||||||
|
|
||||||
"item.badge.withdrawn": "Withdrawn",
|
"item.badge.withdrawn": "Withdrawn",
|
||||||
@@ -3591,6 +3595,8 @@
|
|||||||
|
|
||||||
"mydspace.show.supervisedWorkspace": "Supervised items",
|
"mydspace.show.supervisedWorkspace": "Supervised items",
|
||||||
|
|
||||||
|
"mydspace.status": "My DSpace status:",
|
||||||
|
|
||||||
"mydspace.status.mydspaceArchived": "Archived",
|
"mydspace.status.mydspaceArchived": "Archived",
|
||||||
|
|
||||||
"mydspace.status.mydspaceValidation": "Validation",
|
"mydspace.status.mydspaceValidation": "Validation",
|
||||||
@@ -3655,6 +3661,8 @@
|
|||||||
|
|
||||||
"nav.user.description": "User profile bar",
|
"nav.user.description": "User profile bar",
|
||||||
|
|
||||||
|
"listelement.badge.dso-type": "Item type:",
|
||||||
|
|
||||||
"none.listelement.badge": "Item",
|
"none.listelement.badge": "Item",
|
||||||
|
|
||||||
"publication-claim.title": "Publication claim",
|
"publication-claim.title": "Publication claim",
|
||||||
|
Reference in New Issue
Block a user