Fixed accessibility issues about header ordering

This commit is contained in:
Alexandre Vryghem
2023-12-03 17:43:16 +01:00
parent 30fe424cc5
commit 5566c99625
58 changed files with 116 additions and 105 deletions

View File

@@ -2,7 +2,7 @@
<div class="epeople-registry row"> <div class="epeople-registry row">
<div class="col-12"> <div class="col-12">
<div class="d-flex justify-content-between border-bottom mb-3"> <div class="d-flex justify-content-between border-bottom mb-3">
<h2 id="header" class="pb-2">{{labelPrefix + 'head' | translate}}</h2> <h1 id="header" class="pb-2">{{labelPrefix + 'head' | translate}}</h1>
<div> <div>
<button class="mr-auto btn btn-success addEPerson-button" <button class="mr-auto btn btn-success addEPerson-button"
@@ -13,9 +13,9 @@
</div> </div>
</div> </div>
<h3 id="search" class="border-bottom pb-2">{{labelPrefix + 'search.head' | translate}} <h2 id="search" class="border-bottom pb-2">
{{labelPrefix + 'search.head' | translate}}
</h3> </h2>
<form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)" class="d-flex justify-content-between"> <form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)" class="d-flex justify-content-between">
<div> <div>
<select name="scope" id="scope" formControlName="scope" class="form-control" aria-label="Search scope"> <select name="scope" id="scope" formControlName="scope" class="form-control" aria-label="Search scope">

View File

@@ -5,11 +5,11 @@
<div *ngIf="epersonService.getActiveEPerson() | async; then editHeader; else createHeader"></div> <div *ngIf="epersonService.getActiveEPerson() | async; then editHeader; else createHeader"></div>
<ng-template #createHeader> <ng-template #createHeader>
<h2 class="border-bottom pb-2">{{messagePrefix + '.create' | translate}}</h2> <h1 class="border-bottom pb-2">{{messagePrefix + '.create' | translate}}</h1>
</ng-template> </ng-template>
<ng-template #editHeader> <ng-template #editHeader>
<h2 class="border-bottom pb-2">{{messagePrefix + '.edit' | translate}}</h2> <h1 class="border-bottom pb-2">{{messagePrefix + '.edit' | translate}}</h1>
</ng-template> </ng-template>
<ds-form [formId]="formId" <ds-form [formId]="formId"
@@ -45,7 +45,7 @@
<ds-themed-loading [showMessage]="false" *ngIf="!formGroup"></ds-themed-loading> <ds-themed-loading [showMessage]="false" *ngIf="!formGroup"></ds-themed-loading>
<div *ngIf="epersonService.getActiveEPerson() | async"> <div *ngIf="epersonService.getActiveEPerson() | async">
<h5>{{messagePrefix + '.groupsEPersonIsMemberOf' | translate}}</h5> <h2>{{messagePrefix + '.groupsEPersonIsMemberOf' | translate}}</h2>
<ds-themed-loading [showMessage]="false" *ngIf="!(groups | async)"></ds-themed-loading> <ds-themed-loading [showMessage]="false" *ngIf="!(groups | async)"></ds-themed-loading>

View File

@@ -5,11 +5,11 @@
<div *ngIf="groupDataService.getActiveGroup() | async; then editHeader; else createHeader"></div> <div *ngIf="groupDataService.getActiveGroup() | async; then editHeader; else createHeader"></div>
<ng-template #createHeader> <ng-template #createHeader>
<h2 class="border-bottom pb-2">{{messagePrefix + '.head.create' | translate}}</h2> <h1 class="border-bottom pb-2">{{messagePrefix + '.head.create' | translate}}</h1>
</ng-template> </ng-template>
<ng-template #editHeader> <ng-template #editHeader>
<h2 class="border-bottom pb-2"> <h1 class="border-bottom pb-2">
<span <span
*dsContextHelp="{ *dsContextHelp="{
content: 'admin.access-control.groups.form.tooltip.editGroupPage', content: 'admin.access-control.groups.form.tooltip.editGroupPage',
@@ -20,7 +20,7 @@
> >
{{messagePrefix + '.head.edit' | translate}} {{messagePrefix + '.head.edit' | translate}}
</span> </span>
</h2> </h1>
</ng-template> </ng-template>
<ds-alert *ngIf="groupBeingEdited?.permanent" [type]="AlertTypeEnum.Warning" <ds-alert *ngIf="groupBeingEdited?.permanent" [type]="AlertTypeEnum.Warning"
@@ -39,9 +39,8 @@
<button (click)="onCancel()" type="button" <button (click)="onCancel()" type="button"
class="btn btn-outline-secondary"><i class="fas fa-arrow-left"></i> {{messagePrefix + '.return' | translate}}</button> class="btn btn-outline-secondary"><i class="fas fa-arrow-left"></i> {{messagePrefix + '.return' | translate}}</button>
</div> </div>
<div after *ngIf="(canEdit$ | async) && !groupBeingEdited.permanent" class="btn-group"> <div after *ngIf="(canEdit$ | async) && !groupBeingEdited?.permanent" class="btn-group">
<button class="btn btn-danger delete-button" [disabled]="!(canEdit$ | async) || groupBeingEdited.permanent" <button (click)="delete()" class="btn btn-danger delete-button" type="button">
(click)="delete()" type="button">
<i class="fa fa-trash"></i> {{ messagePrefix + '.actions.delete' | translate}} <i class="fa fa-trash"></i> {{ messagePrefix + '.actions.delete' | translate}}
</button> </button>
</div> </div>

View File

@@ -1,7 +1,7 @@
<ng-container> <ng-container>
<h3 class="border-bottom pb-2">{{messagePrefix + '.head' | translate}}</h3> <h2 class="border-bottom pb-2">{{messagePrefix + '.head' | translate}}</h2>
<h4>{{messagePrefix + '.headMembers' | translate}}</h4> <h3>{{messagePrefix + '.headMembers' | translate}}</h3>
<ds-pagination *ngIf="(ePeopleMembersOfGroup | async)?.totalElements > 0" <ds-pagination *ngIf="(ePeopleMembersOfGroup | async)?.totalElements > 0"
[paginationOptions]="config" [paginationOptions]="config"
@@ -55,7 +55,7 @@
{{messagePrefix + '.no-members-yet' | translate}} {{messagePrefix + '.no-members-yet' | translate}}
</div> </div>
<h4 id="search" class="border-bottom pb-2"> <h3 id="search" class="border-bottom pb-2">
<span <span
*dsContextHelp="{ *dsContextHelp="{
content: 'admin.access-control.groups.form.tooltip.editGroup.addEpeople', content: 'admin.access-control.groups.form.tooltip.editGroup.addEpeople',
@@ -66,7 +66,7 @@
> >
{{messagePrefix + '.search.head' | translate}} {{messagePrefix + '.search.head' | translate}}
</span> </span>
</h4> </h3>
<form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)" class="d-flex justify-content-between"> <form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)" class="d-flex justify-content-between">
<div class="flex-grow-1 mr-3"> <div class="flex-grow-1 mr-3">

View File

@@ -2,7 +2,7 @@
<div class="groups-registry row"> <div class="groups-registry row">
<div class="col-12"> <div class="col-12">
<div class="d-flex justify-content-between border-bottom mb-3"> <div class="d-flex justify-content-between border-bottom mb-3">
<h2 id="header" class="pb-2">{{messagePrefix + 'head' | translate}}</h2> <h1 id="header" class="pb-2">{{messagePrefix + 'head' | translate}}</h1>
<div> <div>
<button class="mr-auto btn btn-success" <button class="mr-auto btn btn-success"
[routerLink]="'create'"> [routerLink]="'create'">
@@ -12,7 +12,7 @@
</div> </div>
</div> </div>
<h3 id="search" class="border-bottom pb-2">{{messagePrefix + 'search.head' | translate}}</h3> <h2 id="search" class="border-bottom pb-2">{{messagePrefix + 'search.head' | translate}}</h2>
<form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)" class="d-flex justify-content-between"> <form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)" class="d-flex justify-content-between">
<div class="flex-grow-1 mr-3"> <div class="flex-grow-1 mr-3">
<div class="form-group input-group"> <div class="form-group input-group">

View File

@@ -1,4 +1,4 @@
<div class="container"> <div class="container">
<h2>{{'admin.curation-tasks.header' |translate }}</h2> <h1>{{'admin.curation-tasks.header' |translate }}</h1>
<ds-curation-form></ds-curation-form> <ds-curation-form></ds-curation-form>
</div> </div>

View File

@@ -1,5 +1,5 @@
<div class="container"> <div class="container">
<h2 id="header">{{'admin.metadata-import.page.header' | translate}}</h2> <h1 id="header">{{'admin.metadata-import.page.header' | translate}}</h1>
<p>{{'admin.metadata-import.page.help' | translate}}</p> <p>{{'admin.metadata-import.page.help' | translate}}</p>
<div class="form-group"> <div class="form-group">
<div class="form-check"> <div class="form-check">

View File

@@ -1,8 +1,8 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<h2 id="sub-header" <h1 id="sub-header"
class="border-bottom pb-2">{{ 'admin.registries.bitstream-formats.create.new' | translate }}</h2> class="border-bottom pb-2">{{ 'admin.registries.bitstream-formats.create.new' | translate }}</h1>
<ds-bitstream-format-form (updatedFormat)="createBitstreamFormat($event)"></ds-bitstream-format-form> <ds-bitstream-format-form (updatedFormat)="createBitstreamFormat($event)"></ds-bitstream-format-form>

View File

@@ -2,7 +2,7 @@
<div class="bitstream-formats row"> <div class="bitstream-formats row">
<div class="col-12"> <div class="col-12">
<h2 id="header" class="border-bottom pb-2">{{'admin.registries.bitstream-formats.head' | translate}}</h2> <h1 id="header" class="border-bottom pb-2">{{'admin.registries.bitstream-formats.head' | translate}}</h1>
<p id="description">{{'admin.registries.bitstream-formats.description' | translate}}</p> <p id="description">{{'admin.registries.bitstream-formats.description' | translate}}</p>
<p id="create-new" class="mb-2"><a [routerLink]="'add'" class="btn btn-success">{{'admin.registries.bitstream-formats.create.new' | translate}}</a></p> <p id="create-new" class="mb-2"><a [routerLink]="'add'" class="btn btn-success">{{'admin.registries.bitstream-formats.create.new' | translate}}</a></p>

View File

@@ -1,8 +1,8 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 mb-4"> <div class="col-12 mb-4">
<h2 id="sub-header" <h1 id="sub-header"
class="border-bottom pb-2">{{'admin.registries.bitstream-formats.edit.head' | translate:{format: (bitstreamFormatRD$ | async)?.payload.shortDescription} }}</h2> class="border-bottom pb-2">{{'admin.registries.bitstream-formats.edit.head' | translate:{format: (bitstreamFormatRD$ | async)?.payload.shortDescription} }}</h1>
<ds-bitstream-format-form [bitstreamFormat]="(bitstreamFormatRD$ | async)?.payload" (updatedFormat)="updateFormat($event)"></ds-bitstream-format-form> <ds-bitstream-format-form [bitstreamFormat]="(bitstreamFormatRD$ | async)?.payload" (updatedFormat)="updateFormat($event)"></ds-bitstream-format-form>

View File

@@ -8,7 +8,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h3>{{dsoNameService.getName(bitstreamRD?.payload)}} <span class="text-muted">({{bitstreamRD?.payload?.sizeBytes | dsFileSize}})</span></h3> <h1 class="h2">{{dsoNameService.getName(bitstreamRD?.payload)}} <span class="text-muted">({{bitstreamRD?.payload?.sizeBytes | dsFileSize}})</span></h1>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,4 +1,5 @@
<div class="container"> <div class="container">
<h1>{{ ('browse.taxonomy_' + vocabularyName + '.title') | translate }}</h1>
<div class="mb-3"> <div class="mb-3">
<ds-vocabulary-treeview [vocabularyOptions]=vocabularyOptions <ds-vocabulary-treeview [vocabularyOptions]=vocabularyOptions
[multiSelect]="true" [multiSelect]="true"

View File

@@ -2,7 +2,7 @@
<div class="row"> <div class="row">
<ng-container *ngVar="(dsoRD$ | async)?.payload as dso"> <ng-container *ngVar="(dsoRD$ | async)?.payload as dso">
<div class="col-12 pb-4"> <div class="col-12 pb-4">
<h2 id="header" class="border-bottom pb-2">{{ 'collection.delete.head' | translate}}</h2> <h1 id="header" class="border-bottom pb-2">{{ 'collection.delete.head' | translate}}</h1>
<p class="pb-2">{{ 'collection.delete.text' | translate:{ dso: dsoNameService.getName(dso) } }}</p> <p class="pb-2">{{ 'collection.delete.text' | translate:{ dso: dsoNameService.getName(dso) } }}</p>
<div class="form-group row"> <div class="form-group row">
<div class="col text-right space-children-mr"> <div class="col text-right space-children-mr">

View File

@@ -1,5 +1,5 @@
<div class="container"> <div class="container">
<h3>{{'collection.curate.header' |translate:{collection: (collectionName$ |async)} }}</h3> <h2>{{'collection.curate.header' |translate:{collection: (collectionName$ |async)} }}</h2>
<ds-curation-form <ds-curation-form
[dsoHandle]="(dsoRD$|async)?.payload.handle" [dsoHandle]="(dsoRD$|async)?.payload.handle"
></ds-curation-form> ></ds-curation-form>

View File

@@ -18,7 +18,7 @@
<span class="d-none d-sm-inline">&nbsp;{{"item.edit.metadata.save-button" | translate}}</span> <span class="d-none d-sm-inline">&nbsp;{{"item.edit.metadata.save-button" | translate}}</span>
</button> </button>
</div> </div>
<h4>{{ 'collection.edit.tabs.source.head' | translate }}</h4> <h2>{{ 'collection.edit.tabs.source.head' | translate }}</h2>
<div *ngIf="contentSource" class="form-check mb-4"> <div *ngIf="contentSource" class="form-check mb-4">
<input type="checkbox" class="form-check-input" id="externalSourceCheck" <input type="checkbox" class="form-check-input" id="externalSourceCheck"
[checked]="(contentSource?.harvestType !== harvestTypeNone)" (change)="changeExternalSource()"> [checked]="(contentSource?.harvestType !== harvestTypeNone)" (change)="changeExternalSource()">

View File

@@ -2,7 +2,7 @@
<div class="row"> <div class="row">
<div class="col-12" *ngVar="(itemRD$ | async) as itemRD"> <div class="col-12" *ngVar="(itemRD$ | async) as itemRD">
<ng-container *ngIf="itemRD?.hasSucceeded"> <ng-container *ngIf="itemRD?.hasSucceeded">
<h2 class="border-bottom">{{ 'collection.edit.template.head' | translate:{ collection: dsoNameService.getName(collection) } }}</h2> <h1 class="border-bottom">{{ 'collection.edit.template.head' | translate:{ collection: dsoNameService.getName(collection) } }}</h1>
<ds-themed-dso-edit-metadata [updateDataService]="itemTemplateService" [dso]="itemRD?.payload"></ds-themed-dso-edit-metadata> <ds-themed-dso-edit-metadata [updateDataService]="itemTemplateService" [dso]="itemRD?.payload"></ds-themed-dso-edit-metadata>
<button [routerLink]="getCollectionEditUrl(collection)" class="btn btn-outline-secondary">{{ 'collection.edit.template.cancel' | translate }}</button> <button [routerLink]="getCollectionEditUrl(collection)" class="btn btn-outline-secondary">{{ 'collection.edit.template.cancel' | translate }}</button>
</ng-container> </ng-container>

View File

@@ -2,7 +2,7 @@
<div class="row"> <div class="row">
<ng-container *ngVar="(dsoRD$ | async)?.payload as dso"> <ng-container *ngVar="(dsoRD$ | async)?.payload as dso">
<div class="col-12 pb-4"> <div class="col-12 pb-4">
<h2 id="header" class="border-bottom pb-2">{{ 'community.delete.head' | translate}}</h2> <h1 id="header" class="border-bottom pb-2">{{ 'community.delete.head' | translate}}</h1>
<p class="pb-2">{{ 'community.delete.text' | translate:{ dso: dsoNameService.getName(dso) } }}</p> <p class="pb-2">{{ 'community.delete.text' | translate:{ dso: dsoNameService.getName(dso) } }}</p>
<div class="form-group row"> <div class="form-group row">
<div class="col text-right space-children-mr"> <div class="col text-right space-children-mr">

View File

@@ -1,5 +1,5 @@
<div class="container"> <div class="container">
<h3>{{'community.curate.header' |translate:{community: (communityName$ |async)} }}</h3> <h2>{{'community.curate.header' |translate:{community: (communityName$ |async)} }}</h2>
<ds-curation-form <ds-curation-form
[dsoHandle]="(dsoRD$|async)?.payload.handle" [dsoHandle]="(dsoRD$|async)?.payload.handle"
></ds-curation-form> ></ds-curation-form>

View File

@@ -1,7 +1,7 @@
<div class="row row-offcanvas row-offcanvas-right"> <div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-12 col-md-9"> <div class="col-xs-12 col-sm-12 col-md-9">
<form class="primary" [formGroup]="feedbackForm" (ngSubmit)="createFeedback()"> <form class="primary" [formGroup]="feedbackForm" (ngSubmit)="createFeedback()">
<h2>{{ 'info.feedback.head' | translate }}</h2> <h1>{{ 'info.feedback.head' | translate }}</h1>
<p>{{ 'info.feedback.info' | translate }}</p> <p>{{ 'info.feedback.info' | translate }}</p>
<fieldset class="col p-0"> <fieldset class="col p-0">
<div class="row"> <div class="row">

View File

@@ -1,5 +1,5 @@
<div class="container"> <div class="container">
<h3 class="mb-4">{{'bitstream-request-a-copy.header' | translate}}</h3> <h1 class="mb-4">{{'bitstream-request-a-copy.header' | translate}}</h1>
<div *ngIf="canDownload$|async" class="alert alert-success"> <div *ngIf="canDownload$|async" class="alert alert-success">
<span>{{'bitstream-request-a-copy.alert.canDownload1' | translate}}</span> <span>{{'bitstream-request-a-copy.alert.canDownload1' | translate}}</span>
<a [routerLink]="getBitstreamLink()">{{'bitstream-request-a-copy.alert.canDownload2'| translate}}</a> <a [routerLink]="getBitstreamLink()">{{'bitstream-request-a-copy.alert.canDownload2'| translate}}</a>

View File

@@ -1,7 +1,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h2 class="border-bottom">{{'item.edit.head' | translate}}</h2> <h1 class="border-bottom">{{'item.edit.head' | translate}}</h1>
<div class="pt-2"> <div class="pt-2">
<ul class="nav nav-tabs justify-content-start" role="tablist"> <ul class="nav nav-tabs justify-content-start" role="tablist">
<li *ngFor="let page of pages" class="nav-item" role="presentation"> <li *ngFor="let page of pages" class="nav-item" role="presentation">

View File

@@ -1,5 +1,5 @@
<div class="container mt-3"> <div class="container mt-3">
<h3>{{'item.edit.curate.title' |translate:{item: (itemName$ |async)} }}</h3> <h2>{{'item.edit.curate.title' |translate:{item: (itemName$ |async)} }}</h2>
<ds-curation-form <ds-curation-form
*ngIf="dsoRD$ | async as dsoRD" *ngIf="dsoRD$ | async as dsoRD"
[dsoHandle]="dsoRD?.payload.handle" [dsoHandle]="dsoRD?.payload.handle"

View File

@@ -2,7 +2,7 @@
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h2>{{headerMessage | translate: {id: item.handle} }}</h2> <h1>{{headerMessage | translate: {id: item.handle} }}</h1>
<p>{{descriptionMessage | translate}}</p> <p>{{descriptionMessage | translate}}</p>
<ds-modify-item-overview [item]="item"></ds-modify-item-overview> <ds-modify-item-overview [item]="item"></ds-modify-item-overview>

View File

@@ -171,7 +171,7 @@ describe('ItemDeleteComponent', () => {
}); });
it('should render a page with messages based on the \'delete\' messageKey', () => { it('should render a page with messages based on the \'delete\' messageKey', () => {
const header = fixture.debugElement.query(By.css('h2')).nativeElement; const header = fixture.debugElement.query(By.css('h1')).nativeElement;
expect(header.innerHTML).toContain('item.edit.delete.header'); expect(header.innerHTML).toContain('item.edit.delete.header');
const description = fixture.debugElement.query(By.css('p')).nativeElement; const description = fixture.debugElement.query(By.css('p')).nativeElement;
expect(description.innerHTML).toContain('item.edit.delete.description'); expect(description.innerHTML).toContain('item.edit.delete.description');

View File

@@ -1,7 +1,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h2>{{'item.edit.move.head' | translate: {id: (itemRD$ | async)?.payload?.handle} }}</h2> <h1>{{'item.edit.move.head' | translate: {id: (itemRD$ | async)?.payload?.handle} }}</h1>
<p>{{'item.edit.move.description' | translate}}</p> <p>{{'item.edit.move.description' | translate}}</p>
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">

View File

@@ -80,7 +80,7 @@ describe('ItemPrivateComponent', () => {
}); });
it('should render a page with messages based on the \'private\' messageKey', () => { it('should render a page with messages based on the \'private\' messageKey', () => {
const header = fixture.debugElement.query(By.css('h2')).nativeElement; const header = fixture.debugElement.query(By.css('h1')).nativeElement;
expect(header.innerHTML).toContain('item.edit.private.header'); expect(header.innerHTML).toContain('item.edit.private.header');
const description = fixture.debugElement.query(By.css('p')).nativeElement; const description = fixture.debugElement.query(By.css('p')).nativeElement;
expect(description.innerHTML).toContain('item.edit.private.description'); expect(description.innerHTML).toContain('item.edit.private.description');

View File

@@ -74,7 +74,7 @@ describe('ItemPublicComponent', () => {
}); });
it('should render a page with messages based on the \'public\' messageKey', () => { it('should render a page with messages based on the \'public\' messageKey', () => {
const header = fixture.debugElement.query(By.css('h2')).nativeElement; const header = fixture.debugElement.query(By.css('h1')).nativeElement;
expect(header.innerHTML).toContain('item.edit.public.header'); expect(header.innerHTML).toContain('item.edit.public.header');
const description = fixture.debugElement.query(By.css('p')).nativeElement; const description = fixture.debugElement.query(By.css('p')).nativeElement;
expect(description.innerHTML).toContain('item.edit.public.description'); expect(description.innerHTML).toContain('item.edit.public.description');

View File

@@ -76,7 +76,7 @@ describe('ItemReinstateComponent', () => {
}); });
it('should render a page with messages based on the \'reinstate\' messageKey', () => { it('should render a page with messages based on the \'reinstate\' messageKey', () => {
const header = fixture.debugElement.query(By.css('h2')).nativeElement; const header = fixture.debugElement.query(By.css('h1')).nativeElement;
expect(header.innerHTML).toContain('item.edit.reinstate.header'); expect(header.innerHTML).toContain('item.edit.reinstate.header');
const description = fixture.debugElement.query(By.css('p')).nativeElement; const description = fixture.debugElement.query(By.css('p')).nativeElement;
expect(description.innerHTML).toContain('item.edit.reinstate.description'); expect(description.innerHTML).toContain('item.edit.reinstate.description');

View File

@@ -1,10 +1,10 @@
<h5> <h2 class="h4">
{{getRelationshipMessageKey() | async | translate}} {{getRelationshipMessageKey() | async | translate}}
<button class="ml-2 btn btn-success" [disabled]="(hasChanges | async)" (click)="openLookup()"> <button class="ml-2 btn btn-success" [disabled]="(hasChanges | async)" (click)="openLookup()">
<i class="fas fa-plus"></i> <i class="fas fa-plus"></i>
<span class="d-none d-sm-inline">&nbsp;{{"item.edit.relationships.edit.buttons.add" | translate}}</span> <span class="d-none d-sm-inline">&nbsp;{{"item.edit.relationships.edit.buttons.add" | translate}}</span>
</button> </button>
</h5> </h2>
<ng-container *ngVar="updates$ | async as updates"> <ng-container *ngVar="updates$ | async as updates">
<ng-container *ngIf="updates && !(loading$ | async)"> <ng-container *ngIf="updates && !(loading$ | async)">
<ng-container *ngVar="updates | dsObjectValues as updateValues"> <ng-container *ngVar="updates | dsObjectValues as updateValues">

View File

@@ -74,7 +74,7 @@ describe('ItemWithdrawComponent', () => {
}); });
it('should render a page with messages based on the \'withdraw\' messageKey', () => { it('should render a page with messages based on the \'withdraw\' messageKey', () => {
const header = fixture.debugElement.query(By.css('h2')).nativeElement; const header = fixture.debugElement.query(By.css('h1')).nativeElement;
expect(header.innerHTML).toContain('item.edit.withdraw.header'); expect(header.innerHTML).toContain('item.edit.withdraw.header');
const description = fixture.debugElement.query(By.css('p')).nativeElement; const description = fixture.debugElement.query(By.css('p')).nativeElement;
expect(description.innerHTML).toContain('item.edit.withdraw.description'); expect(description.innerHTML).toContain('item.edit.withdraw.description');

View File

@@ -1,7 +1,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h2>{{headerMessage | translate: {id: item.handle} }}</h2> <h1>{{headerMessage | translate: {id: item.handle} }}</h1>
<p>{{descriptionMessage | translate}}</p> <p>{{descriptionMessage | translate}}</p>
<ds-modify-item-overview [item]="item"></ds-modify-item-overview> <ds-modify-item-overview [item]="item"></ds-modify-item-overview>
<div class="space-children-mr"> <div class="space-children-mr">

View File

@@ -111,7 +111,7 @@ describe('AbstractSimpleItemActionComponent', () => {
}); });
it('should render a page with messages based on the provided messageKey', () => { it('should render a page with messages based on the provided messageKey', () => {
const header = fixture.debugElement.query(By.css('h2')).nativeElement; const header = fixture.debugElement.query(By.css('h1')).nativeElement;
expect(header.innerHTML).toContain('item.edit.myEditAction.header'); expect(header.innerHTML).toContain('item.edit.myEditAction.header');
const description = fixture.debugElement.query(By.css('p')).nativeElement; const description = fixture.debugElement.query(By.css('p')).nativeElement;

View File

@@ -1,5 +1,5 @@
<div class="container mb-5"> <div class="container mb-5">
<h2>{{'person.orcid.registry.auth' | translate}}</h2> <h1>{{'person.orcid.registry.auth' | translate}}</h1>
<ng-container *ngIf="(isLinkedToOrcid() | async); then orcidLinked; else orcidNotLinked"></ng-container> <ng-container *ngIf="(isLinkedToOrcid() | async); then orcidLinked; else orcidNotLinked"></ng-container>
</div> </div>

View File

@@ -1,13 +1,3 @@
<div *ngIf="!(processingConnection | async) && (item | async)" class="container">
<div class="button-row bottom mb-3">
<div class="text-right">
<a [routerLink]="getItemPage()" role="button" class="btn btn-outline-secondary" data-test="back-button">
<i class="fas fa-arrow-left"></i> {{'item.orcid.return' | translate}}
</a>
</div>
</div>
</div>
<ds-loading *ngIf="(processingConnection | async)" [message]="'person.page.orcid.link.processing' | translate"></ds-loading> <ds-loading *ngIf="(processingConnection | async)" [message]="'person.page.orcid.link.processing' | translate"></ds-loading>
<div class="container" *ngIf="!(processingConnection | async) && !(connectionStatus | async)" data-test="error-box"> <div class="container" *ngIf="!(processingConnection | async) && !(connectionStatus | async)" data-test="error-box">
<ds-alert [type]="'alert-danger'">{{'person.page.orcid.link.error.message' | translate}}</ds-alert> <ds-alert [type]="'alert-danger'">{{'person.page.orcid.link.error.message' | translate}}</ds-alert>
@@ -17,3 +7,13 @@
<ds-orcid-sync-setting *ngIf="isLinkedToOrcid()" [item]="(item | async)" (settingsUpdated)="updateItem()" data-test="orcid-sync-setting"></ds-orcid-sync-setting> <ds-orcid-sync-setting *ngIf="isLinkedToOrcid()" [item]="(item | async)" (settingsUpdated)="updateItem()" data-test="orcid-sync-setting"></ds-orcid-sync-setting>
<ds-orcid-queue *ngIf="isLinkedToOrcid()" [item]="(item | async)"></ds-orcid-queue> <ds-orcid-queue *ngIf="isLinkedToOrcid()" [item]="(item | async)"></ds-orcid-queue>
</ng-container> </ng-container>
<div *ngIf="!(processingConnection | async) && (item | async)" class="container">
<div class="button-row bottom mb-3">
<div class="text-right">
<a [routerLink]="getItemPage()" role="button" class="btn btn-outline-secondary" data-test="back-button">
<i class="fas fa-arrow-left"></i> {{'item.orcid.return' | translate}}
</a>
</div>
</div>
</div>

View File

@@ -1,2 +1,2 @@
<h4 class="mt-4">{{title | translate}}</h4> <h2 class="h3 mt-4">{{title | translate}}</h2>
<ng-content></ng-content> <ng-content></ng-content>

View File

@@ -1,9 +1,9 @@
<div class="container" *ngIf="(processRD$ | async)?.payload as process"> <div class="container" *ngIf="(processRD$ | async)?.payload as process">
<div class="row"> <div class="row">
<div class="col-10"> <div class="col-10">
<h2 class="flex-grow-1"> <h1 class="flex-grow-1">
{{ 'process.detail.title' | translate:{ id: process?.processId, name: process?.scriptName } }} {{ 'process.detail.title' | translate:{ id: process?.processId, name: process?.scriptName } }}
</h2> </h1>
</div> </div>
<div *ngIf="refreshCounter$ | async as seconds" class="col-2 refresh-counter"> <div *ngIf="refreshCounter$ | async as seconds" class="col-2 refresh-counter">
Refreshing in {{ seconds }}s <i class="fas fa-sync-alt fa-spin"></i> Refreshing in {{ seconds }}s <i class="fas fa-sync-alt fa-spin"></i>

View File

@@ -1,8 +1,8 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<h2 class="col-12"> <h1 class="col-12">
{{headerKey | translate}} {{headerKey | translate}}
</h2> </h1>
<div class="col-12 col-md-6 mb-2"> <div class="col-12 col-md-6 mb-2">
<form #form="ngForm" (ngSubmit)="submitForm(form)"> <form #form="ngForm" (ngSubmit)="submitForm(form)">
<ds-scripts-select [script]="selectedScript" (select)="selectedScript = $event; parameters = undefined"></ds-scripts-select> <ds-scripts-select [script]="selectedScript" (select)="selectedScript = $event; parameters = undefined"></ds-scripts-select>
@@ -12,7 +12,7 @@
</form> </form>
</div> </div>
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-script-help [script]="selectedScript"></ds-script-help> <ds-script-help *ngIf="selectedScript" [script]="selectedScript"></ds-script-help>
</div> </div>
</div> </div>

View File

@@ -1,5 +1,5 @@
<div class="text-secondary"> <div class="text-secondary">
<h3>{{script?.name}}</h3> <h2>{{script?.name}}</h2>
<span>{{script?.description}}</span> <span>{{script?.description}}</span>
<table class="table-borderless mt-3"> <table class="table-borderless mt-3">

View File

@@ -1,6 +1,6 @@
<div class="container"> <div class="container">
<div class="d-flex"> <div class="d-flex">
<h2 class="flex-grow-1">{{'process.overview.title' | translate}}</h2> <h1 class="flex-grow-1">{{'process.overview.title' | translate}}</h1>
</div> </div>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
<button *ngIf="processBulkDeleteService.hasSelected()" class="btn btn-primary mr-2" <button *ngIf="processBulkDeleteService.hasSelected()" class="btn btn-primary mr-2"

View File

@@ -1,7 +1,7 @@
<ng-container *ngVar="(user$ | async) as user"> <ng-container *ngVar="(user$ | async) as user">
<div class="container" *ngIf="user"> <div class="container" *ngIf="user">
<ng-container *ngIf="isResearcherProfileEnabled() | async"> <ng-container *ngIf="isResearcherProfileEnabled() | async">
<h3 class="mb-4">{{'profile.head' | translate}}</h3> <h2 class="mb-4">{{'profile.head' | translate}}</h2>
<div class="card mb-4"> <div class="card mb-4">
<div class="card-header">{{'profile.card.researcher' | translate}}</div> <div class="card-header">{{'profile.card.researcher' | translate}}</div>
<div class="card-body"> <div class="card-body">
@@ -34,7 +34,7 @@
<ng-container *ngVar="(groupsRD$ | async)?.payload?.page as groups"> <ng-container *ngVar="(groupsRD$ | async)?.payload?.page as groups">
<div *ngIf="groups?.length > 0"> <div *ngIf="groups?.length > 0">
<h3 class="mt-4">{{'profile.groups.head' | translate}}</h3> <h2 class="mt-4">{{'profile.groups.head' | translate}}</h2>
<ul class="list-group list-group-flush"> <ul class="list-group list-group-flush">
<li *ngFor="let group of groups" class="list-group-item">{{ dsoNameService.getName(group) }}</li> <li *ngFor="let group of groups" class="list-group-item">{{ dsoNameService.getName(group) }}</li>
</ul> </ul>
@@ -43,7 +43,7 @@
<ng-container *ngVar="(specialGroupsRD$ | async)?.payload?.page as specialGroups"> <ng-container *ngVar="(specialGroupsRD$ | async)?.payload?.page as specialGroups">
<div *ngIf="specialGroups?.length > 0" data-test="specialGroups"> <div *ngIf="specialGroups?.length > 0" data-test="specialGroups">
<h3 class="mt-4">{{'profile.special.groups.head' | translate}}</h3> <h2 class="mt-4">{{'profile.special.groups.head' | translate}}</h2>
<ul class="list-group list-group-flush"> <ul class="list-group list-group-flush">
<li *ngFor="let specialGroup of specialGroups" class="list-group-item"> <li *ngFor="let specialGroup of specialGroups" class="list-group-item">
{{ dsoNameService.getName(specialGroup) }} {{ dsoNameService.getName(specialGroup) }}

View File

@@ -1,5 +1,5 @@
<div class="container"> <div class="container">
<h2>{{MESSAGE_PREFIX + '.header'|translate}}</h2> <h1>{{MESSAGE_PREFIX + '.header'|translate}}</h1>
<p>{{MESSAGE_PREFIX + '.info' | translate}}</p> <p>{{MESSAGE_PREFIX + '.info' | translate}}</p>
<p *ngIf="validMailDomains.length != 0 && typeRequest === TYPE_REQUEST_REGISTER"> <p *ngIf="validMailDomains.length != 0 && typeRequest === TYPE_REQUEST_REGISTER">

View File

@@ -13,9 +13,9 @@
<div> <div>
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<h4 class="mb-0 mr-4"> <h2 class="h3 mb-0 mr-4">
{{ 'access-control-item-header-toggle' | translate }} {{ 'access-control-item-header-toggle' | translate }}
</h4> </h2>
<ui-switch <ui-switch
[ariaLabel]="(state.bitstream.toggleStatus ? 'access-control-item-toggle.disable' : 'access-control-item-toggle.enable') | translate" [ariaLabel]="(state.bitstream.toggleStatus ? 'access-control-item-toggle.disable' : 'access-control-item-toggle.enable') | translate"
[(ngModel)]="state.item.toggleStatus" [(ngModel)]="state.item.toggleStatus"
@@ -51,7 +51,7 @@
</div> </div>
<div> <div>
<h5 class="mt-3">{{'access-control-access-conditions' | translate}}</h5> <h3 class="h4 mt-3">{{'access-control-access-conditions' | translate}}</h3>
<ds-access-control-array-form <ds-access-control-array-form
#itemAccessCmp #itemAccessCmp
@@ -67,9 +67,9 @@
<div> <div>
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<h4 class="mb-0 mr-4"> <h2 class="h3 mb-0 mr-4">
{{'access-control-bitstream-header-toggle' | translate}} {{'access-control-bitstream-header-toggle' | translate}}
</h4> </h2>
<ui-switch <ui-switch
[ariaLabel]="(state.bitstream.toggleStatus ? 'access-control-bitstream-toggle.disable' : 'access-control-bitstream-toggle.enable') | translate" [ariaLabel]="(state.bitstream.toggleStatus ? 'access-control-bitstream-toggle.disable' : 'access-control-bitstream-toggle.enable') | translate"
[(ngModel)]="state.bitstream.toggleStatus" [(ngModel)]="state.bitstream.toggleStatus"
@@ -142,7 +142,7 @@
</div> </div>
<div> <div>
<h5 class="mt-3">{{'access-control-access-conditions' | translate}}</h5> <h3 class="h4 mt-3">{{'access-control-access-conditions' | translate}}</h3>
<ds-access-control-array-form <ds-access-control-array-form
#bitstreamAccessCmp #bitstreamAccessCmp

View File

@@ -1,5 +1,5 @@
<ng-container *ngVar="(objects$ | async) as objects"> <ng-container *ngVar="(objects$ | async) as objects">
<h3 [ngClass]="{'sr-only': parentname }">{{title | translate}}</h3> <h1 [ngClass]="{'sr-only': parentname }">{{title | translate}}</h1>
<ng-container *ngComponentOutlet="getStartsWithComponent(); injector: objectInjector;"></ng-container> <ng-container *ngComponentOutlet="getStartsWithComponent(); injector: objectInjector;"></ng-container>
<div *ngIf="objects?.hasSucceeded && !objects?.isLoading && objects?.payload?.page.length > 0" @fadeIn> <div *ngIf="objects?.hasSucceeded && !objects?.isLoading && objects?.payload?.page.length > 0" @fadeIn>
<div *ngIf="shouldDisplayResetButton$ |async" class="mb-2 reset"> <div *ngIf="shouldDisplayResetButton$ |async" class="mb-2 reset">

View File

@@ -3,9 +3,9 @@
<div class="card-body d-flex flex-column" <div class="card-body d-flex flex-column"
*ngVar="group$ | async as group"> *ngVar="group$ | async as group">
<h5 class="w-100"> <h2 class="h4 w-100">
{{ roleName$ | async }} {{ roleName$ | async }}
</h5> </h2>
<div class="mt-2 mb-2"> <div class="mt-2 mb-2">
<ds-alert [type]="'alert-info'" >{{'comcol-role.edit.' + (comcolRole$ | async)?.name + '.description' | translate}}</ds-alert> <ds-alert [type]="'alert-info'" >{{'comcol-role.edit.' + (comcolRole$ | async)?.name + '.description' | translate}}</ds-alert>

View File

@@ -2,8 +2,8 @@
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<div class="d-flex justify-content-between border-bottom"> <div class="d-flex justify-content-between border-bottom">
<h2>{{ type + '.edit.head' | translate }}</h2> <h1>{{ type + '.edit.head' | translate }}</h1>
<div> <div class="my-auto">
<a class="btn btn-danger" <a class="btn btn-danger"
[routerLink]="((type === 'community') ? '/communities/' : '/collections/') + (dsoRD$ | async)?.payload.uuid + '/delete'"> [routerLink]="((type === 'community') ? '/communities/' : '/collections/') + (dsoRD$ | async)?.payload.uuid + '/delete'">
<i class="fas fa-trash"></i> {{type + '.edit.delete' | translate}}</a> <i class="fas fa-trash"></i> {{type + '.edit.delete' | translate}}</a>

View File

@@ -1,4 +1,4 @@
<div *ngIf="content" class="content-with-optional-title mb-2"> <p *ngIf="content" class="d-flex flex-wrap gapx-2 text-break">
<h2 class="d-inline-block h6" *ngIf="title">{{ title | translate }}</h2> <span class="mb-0" *ngIf="title">{{ title | translate }}</span>
<div class="d-inline-block px-2"><a href="{{getHandle()}}">{{getHandle()}}</a></div> <a [href]="getHandle()">{{getHandle()}}</a>
</div> </p>

View File

@@ -1,5 +0,0 @@
div {
word-break: break-word;
word-wrap: break-word;
overflow-wrap: break-word;
}

View File

@@ -1,5 +1,5 @@
<div class="container"> <div class="container">
<h4 class="mb-3">{{'resource-policies.edit.page.heading' | translate}} {{resourcePolicy.id}}</h4> <h1 class="mb-3">{{'resource-policies.edit.page.heading' | translate}} {{resourcePolicy.id}}</h1>
<ds-resource-policy-form [resourcePolicy]="resourcePolicy" <ds-resource-policy-form [resourcePolicy]="resourcePolicy"
[isProcessing]="isProcessing()" [isProcessing]="isProcessing()"

View File

@@ -1,5 +1,5 @@
<div *ngIf="configurationList?.length > 1" class="search-switch-configuration"> <div *ngIf="configurationList?.length > 1" class="search-switch-configuration">
<h5 id="configuration-switch">{{ 'search.switch-configuration.title' | translate}}</h5> <h3 id="configuration-switch">{{ 'search.switch-configuration.title' | translate}}</h3>
<select class="form-control" <select class="form-control"
aria-labelledby="configuration-switch" aria-labelledby="configuration-switch"

View File

@@ -1,11 +1,11 @@
<div class="container"> <div class="container">
<ng-container *ngVar="(scope$ | async) as scope"> <ng-container *ngVar="(scope$ | async) as scope">
<h2 *ngIf="scope" <h1 *ngIf="scope"
class="header" class="header"
id="{{ scope.id }}"> id="{{ scope.id }}">
{{ 'statistics.header' | translate: { scope: getName(scope) } }} {{ 'statistics.header' | translate: { scope: getName(scope) } }}
</h2> </h1>
</ng-container> </ng-container>
<ng-container *ngVar="reports$ | async as reports"> <ng-container *ngVar="reports$ | async as reports">

View File

@@ -1,9 +1,9 @@
<div *ngIf="hasData" <div *ngIf="hasData"
class="m-1"> class="m-1">
<h3 class="m-1"> <h2 class="m-1">
{{ 'statistics.table.title.' + report.reportType | translate }} {{ 'statistics.table.title.' + report.reportType | translate }}
</h3> </h2>
<table class="table table-striped" [attr.data-test]="report.reportType"> <table class="table table-striped" [attr.data-test]="report.reportType">

View File

@@ -1,7 +1,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<h2 id="header" class="pb-2">{{'submission.import-external.title' + ((label) ? '.' + label : '') | translate}}</h2> <h1 id="header" class="pb-2">{{'submission.import-external.title' + ((label) ? '.' + label : '') | translate}}</h1>
<ds-submission-import-external-searchbar <ds-submission-import-external-searchbar
[initExternalSourceData]="reload$.value" [initExternalSourceData]="reload$.value"
(externalSourceData) = "getExternalSourceData($event)"> (externalSourceData) = "getExternalSourceData($event)">
@@ -11,7 +11,7 @@
<div class="row" *ngIf="reload$.value.entity"> <div class="row" *ngIf="reload$.value.entity">
<div *ngIf="reload$.value.sourceId !== ''" class="col-md-12"> <div *ngIf="reload$.value.sourceId !== ''" class="col-md-12">
<ng-container *ngVar="(entriesRD$ | async) as entriesRD"> <ng-container *ngVar="(entriesRD$ | async) as entriesRD">
<h3 *ngIf="entriesRD && entriesRD?.payload?.page?.length !== 0">{{ 'submission.sections.describe.relationship-lookup.selection-tab.title' | translate}}</h3> <h2 *ngIf="entriesRD && entriesRD?.payload?.page?.length !== 0">{{ 'submission.sections.describe.relationship-lookup.selection-tab.title' | translate}}</h2>
<ds-viewable-collection *ngIf="entriesRD?.hasSucceeded && !(isLoading$ | async) && entriesRD?.payload?.page?.length > 0" @fadeIn <ds-viewable-collection *ngIf="entriesRD?.hasSucceeded && !(isLoading$ | async) && entriesRD?.payload?.page?.length > 0" @fadeIn
[objects]="entriesRD" [objects]="entriesRD"
[selectionConfig]="{ repeatable: repeatable, listId: listId }" [selectionConfig]="{ repeatable: repeatable, listId: listId }"
@@ -25,15 +25,15 @@
<ds-themed-loading *ngIf="(isLoading$ | async)" <ds-themed-loading *ngIf="(isLoading$ | async)"
message="{{'loading.search-results' | translate}}"></ds-themed-loading> message="{{'loading.search-results' | translate}}"></ds-themed-loading>
<div *ngIf="!(isLoading$ | async) && entriesRD?.payload?.page?.length === 0" data-test="empty-external-entry-list"> <div *ngIf="!(isLoading$ | async) && entriesRD?.payload?.page?.length === 0" data-test="empty-external-entry-list">
<ds-alert [type]="'alert-info'">{{ 'search.results.empty' | translate }}</ds-alert> <ds-alert [type]="AlertType.Info">{{ 'search.results.empty' | translate }}</ds-alert>
</div> </div>
<div *ngIf="!(isLoading$ | async) && entriesRD.statusCode === 500" data-test="empty-external-error-500"> <div *ngIf="!(isLoading$ | async) && entriesRD.statusCode === 500" data-test="empty-external-error-500">
<ds-alert [type]="'alert-info'">{{ 'search.results.response.500' | translate }}</ds-alert> <ds-alert [type]="AlertType.Info">{{ 'search.results.response.500' | translate }}</ds-alert>
</div> </div>
</ng-container> </ng-container>
</div> </div>
<div *ngIf="reload$.value.sourceId === ''" class="col-md-12"> <div *ngIf="reload$.value.sourceId === ''" class="col-md-12">
<ds-alert [type]="'alert-info'"> <ds-alert [type]="AlertType.Info">
<p class="lead mb-0">{{'submission.import-external.page.hint' | translate}}</p> <p class="lead mb-0">{{'submission.import-external.page.hint' | translate}}</p>
</ds-alert> </ds-alert>
</div> </div>

View File

@@ -23,6 +23,7 @@ import { PageInfo } from '../../core/shared/page-info.model';
import { hasValue, isNotEmpty } from '../../shared/empty.util'; import { hasValue, isNotEmpty } from '../../shared/empty.util';
import { getFinishedRemoteData } from '../../core/shared/operators'; import { getFinishedRemoteData } from '../../core/shared/operators';
import { NONE_ENTITY_TYPE } from '../../core/shared/item-relationships/item-type.resource-type'; import { NONE_ENTITY_TYPE } from '../../core/shared/item-relationships/item-type.resource-type';
import { AlertType } from 'src/app/shared/alert/alert-type';
/** /**
* This component allows to submit a new workspaceitem importing the data from an external source. * This component allows to submit a new workspaceitem importing the data from an external source.
@@ -92,6 +93,8 @@ export class SubmissionImportExternalComponent implements OnInit, OnDestroy {
private retrieveExternalSourcesSub: Subscription; private retrieveExternalSourcesSub: Subscription;
public readonly AlertType = AlertType;
/** /**
* Initialize the component variables. * Initialize the component variables.
* @param {SearchConfigurationService} searchConfigService * @param {SearchConfigurationService} searchConfigService

View File

@@ -1,7 +1,7 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-12 m-40"> <div class="col-md-12 m-40">
<h2>{{'subscriptions.title' | translate}}</h2> <h1>{{'subscriptions.title' | translate}}</h1>
<div class="row"> <div class="row">
<div class="col-md-12 m-40"> <div class="col-md-12 m-40">
<ds-themed-loading *ngIf="loading$ | async"></ds-themed-loading> <ds-themed-loading *ngIf="loading$ | async"></ds-themed-loading>
@@ -34,7 +34,7 @@
</div> </div>
</ds-pagination> </ds-pagination>
<ds-alert *ngIf="subscriptions?.pageInfo?.totalElements == 0 && !(loading$ | async)" [type]="'alert-info'" data-test="empty-alert"> <ds-alert *ngIf="subscriptions?.pageInfo?.totalElements == 0 && !(loading$ | async)" [type]="AlertType.Info" data-test="empty-alert">
{{ 'subscriptions.table.empty.message' | translate }} {{ 'subscriptions.table.empty.message' | translate }}
</ds-alert> </ds-alert>

View File

@@ -14,6 +14,7 @@ import { EPerson } from '../core/eperson/models/eperson.model';
import { getAllCompletedRemoteData } from '../core/shared/operators'; import { getAllCompletedRemoteData } from '../core/shared/operators';
import { RemoteData } from '../core/data/remote-data'; import { RemoteData } from '../core/data/remote-data';
import { hasValue } from '../shared/empty.util'; import { hasValue } from '../shared/empty.util';
import { AlertType } from '../shared/alert/alert-type';
@Component({ @Component({
selector: 'ds-subscriptions-page', selector: 'ds-subscriptions-page',
@@ -54,6 +55,8 @@ export class SubscriptionsPageComponent implements OnInit, OnDestroy {
*/ */
sub: rxjsSubscription = null; sub: rxjsSubscription = null;
readonly AlertType = AlertType;
constructor( constructor(
private paginationService: PaginationService, private paginationService: PaginationService,
private authService: AuthService, private authService: AuthService,

View File

@@ -1,5 +1,5 @@
<div class="container"> <div class="container">
<h2 id="header">{{'system-wide-alert.form.header' | translate}}</h2> <h1 id="header">{{'system-wide-alert.form.header' | translate}}</h1>
<div [formGroup]="alertForm" [class]="'ng-invalid'"> <div [formGroup]="alertForm" [class]="'ng-invalid'">
<div class="form-group"> <div class="form-group">
<div class="row mb-2"> <div class="row mb-2">

View File

@@ -864,6 +864,8 @@
"browse.startsWith.input": "Filter", "browse.startsWith.input": "Filter",
"browse.taxonomy_srsc.title": "Browsing by Subject Category",
"browse.taxonomy.button": "Browse", "browse.taxonomy.button": "Browse",
"browse.title": "Browsing {{ collection }} by {{ field }}{{ startsWith }} {{ value }}", "browse.title": "Browsing {{ collection }} by {{ field }}{{ startsWith }} {{ value }}",

View File

@@ -12,6 +12,14 @@ $fa-font-path: "^assets/fonts" !default;
/* Images */ /* Images */
$image-path: "../assets/images" !default; $image-path: "../assets/images" !default;
$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
$h1-font-size: $font-size-base * 2.125 !default;
$h2-font-size: $font-size-base * 1.75 !default;
$h3-font-size: $font-size-base * 1.5 !default;
$h4-font-size: $font-size-base * 1.25 !default;
$h5-font-size: $font-size-base * 1.125 !default;
$h6-font-size: $font-size-base !default;
// enable-responsive-font-sizes allows text to scale more naturally across device and viewport sizes // enable-responsive-font-sizes allows text to scale more naturally across device and viewport sizes
$enable-responsive-font-sizes: true; $enable-responsive-font-sizes: true;