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="col-12">
<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>
<button class="mr-auto btn btn-success addEPerson-button"
@@ -13,9 +13,9 @@
</div>
</div>
<h3 id="search" class="border-bottom pb-2">{{labelPrefix + 'search.head' | translate}}
</h3>
<h2 id="search" class="border-bottom pb-2">
{{labelPrefix + 'search.head' | translate}}
</h2>
<form [formGroup]="searchForm" (ngSubmit)="search(searchForm.value)" class="d-flex justify-content-between">
<div>
<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>
<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 #editHeader>
<h2 class="border-bottom pb-2">{{messagePrefix + '.edit' | translate}}</h2>
<h1 class="border-bottom pb-2">{{messagePrefix + '.edit' | translate}}</h1>
</ng-template>
<ds-form [formId]="formId"
@@ -45,7 +45,7 @@
<ds-themed-loading [showMessage]="false" *ngIf="!formGroup"></ds-themed-loading>
<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>

View File

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

View File

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

View File

@@ -2,7 +2,7 @@
<div class="groups-registry row">
<div class="col-12">
<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>
<button class="mr-auto btn btn-success"
[routerLink]="'create'">
@@ -12,7 +12,7 @@
</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">
<div class="flex-grow-1 mr-3">
<div class="form-group input-group">

View File

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

View File

@@ -1,5 +1,5 @@
<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>
<div class="form-group">
<div class="form-check">

View File

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

View File

@@ -2,7 +2,7 @@
<div class="bitstream-formats row">
<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="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="row">
<div class="col-12 mb-4">
<h2 id="sub-header"
class="border-bottom pb-2">{{'admin.registries.bitstream-formats.edit.head' | translate:{format: (bitstreamFormatRD$ | async)?.payload.shortDescription} }}</h2>
<h1 id="sub-header"
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>

View File

@@ -8,7 +8,7 @@
<div class="container">
<div class="row">
<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>

View File

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

View File

@@ -2,7 +2,7 @@
<div class="row">
<ng-container *ngVar="(dsoRD$ | async)?.payload as dso">
<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>
<div class="form-group row">
<div class="col text-right space-children-mr">

View File

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

View File

@@ -18,7 +18,7 @@
<span class="d-none d-sm-inline">&nbsp;{{"item.edit.metadata.save-button" | translate}}</span>
</button>
</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">
<input type="checkbox" class="form-check-input" id="externalSourceCheck"
[checked]="(contentSource?.harvestType !== harvestTypeNone)" (change)="changeExternalSource()">

View File

@@ -2,7 +2,7 @@
<div class="row">
<div class="col-12" *ngVar="(itemRD$ | async) as itemRD">
<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>
<button [routerLink]="getCollectionEditUrl(collection)" class="btn btn-outline-secondary">{{ 'collection.edit.template.cancel' | translate }}</button>
</ng-container>

View File

@@ -2,7 +2,7 @@
<div class="row">
<ng-container *ngVar="(dsoRD$ | async)?.payload as dso">
<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>
<div class="form-group row">
<div class="col text-right space-children-mr">

View File

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

View File

@@ -1,7 +1,7 @@
<div class="row row-offcanvas row-offcanvas-right">
<div class="col-xs-12 col-sm-12 col-md-9">
<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>
<fieldset class="col p-0">
<div class="row">

View File

@@ -1,5 +1,5 @@
<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">
<span>{{'bitstream-request-a-copy.alert.canDownload1' | translate}}</span>
<a [routerLink]="getBitstreamLink()">{{'bitstream-request-a-copy.alert.canDownload2'| translate}}</a>

View File

@@ -1,7 +1,7 @@
<div class="container">
<div class="row">
<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">
<ul class="nav nav-tabs justify-content-start" role="tablist">
<li *ngFor="let page of pages" class="nav-item" role="presentation">

View File

@@ -1,5 +1,5 @@
<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
*ngIf="dsoRD$ | async as dsoRD"
[dsoHandle]="dsoRD?.payload.handle"

View File

@@ -2,7 +2,7 @@
<div class="row">
<div class="col-12">
<h2>{{headerMessage | translate: {id: item.handle} }}</h2>
<h1>{{headerMessage | translate: {id: item.handle} }}</h1>
<p>{{descriptionMessage | translate}}</p>
<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', () => {
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');
const description = fixture.debugElement.query(By.css('p')).nativeElement;
expect(description.innerHTML).toContain('item.edit.delete.description');

View File

@@ -1,7 +1,7 @@
<div class="container">
<div class="row">
<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>
<div class="row">
<div class="col-12">

View File

@@ -80,7 +80,7 @@ describe('ItemPrivateComponent', () => {
});
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');
const description = fixture.debugElement.query(By.css('p')).nativeElement;
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', () => {
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');
const description = fixture.debugElement.query(By.css('p')).nativeElement;
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', () => {
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');
const description = fixture.debugElement.query(By.css('p')).nativeElement;
expect(description.innerHTML).toContain('item.edit.reinstate.description');

View File

@@ -1,10 +1,10 @@
<h5>
<h2 class="h4">
{{getRelationshipMessageKey() | async | translate}}
<button class="ml-2 btn btn-success" [disabled]="(hasChanges | async)" (click)="openLookup()">
<i class="fas fa-plus"></i>
<span class="d-none d-sm-inline">&nbsp;{{"item.edit.relationships.edit.buttons.add" | translate}}</span>
</button>
</h5>
</h2>
<ng-container *ngVar="updates$ | async as updates">
<ng-container *ngIf="updates && !(loading$ | async)">
<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', () => {
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');
const description = fixture.debugElement.query(By.css('p')).nativeElement;
expect(description.innerHTML).toContain('item.edit.withdraw.description');

View File

@@ -1,7 +1,7 @@
<div class="container">
<div class="row">
<div class="col-12">
<h2>{{headerMessage | translate: {id: item.handle} }}</h2>
<h1>{{headerMessage | translate: {id: item.handle} }}</h1>
<p>{{descriptionMessage | translate}}</p>
<ds-modify-item-overview [item]="item"></ds-modify-item-overview>
<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', () => {
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');
const description = fixture.debugElement.query(By.css('p')).nativeElement;

View File

@@ -1,5 +1,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>
</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>
<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>
@@ -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-queue *ngIf="isLinkedToOrcid()" [item]="(item | async)"></ds-orcid-queue>
</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>

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
<div class="container">
<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 class="d-flex justify-content-end">
<button *ngIf="processBulkDeleteService.hasSelected()" class="btn btn-primary mr-2"

View File

@@ -1,7 +1,7 @@
<ng-container *ngVar="(user$ | async) as user">
<div class="container" *ngIf="user">
<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-header">{{'profile.card.researcher' | translate}}</div>
<div class="card-body">
@@ -34,7 +34,7 @@
<ng-container *ngVar="(groupsRD$ | async)?.payload?.page as groups">
<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">
<li *ngFor="let group of groups" class="list-group-item">{{ dsoNameService.getName(group) }}</li>
</ul>
@@ -43,7 +43,7 @@
<ng-container *ngVar="(specialGroupsRD$ | async)?.payload?.page as 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">
<li *ngFor="let specialGroup of specialGroups" class="list-group-item">
{{ dsoNameService.getName(specialGroup) }}

View File

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

View File

@@ -13,9 +13,9 @@
<div>
<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 }}
</h4>
</h2>
<ui-switch
[ariaLabel]="(state.bitstream.toggleStatus ? 'access-control-item-toggle.disable' : 'access-control-item-toggle.enable') | translate"
[(ngModel)]="state.item.toggleStatus"
@@ -51,7 +51,7 @@
</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
#itemAccessCmp
@@ -67,9 +67,9 @@
<div>
<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}}
</h4>
</h2>
<ui-switch
[ariaLabel]="(state.bitstream.toggleStatus ? 'access-control-bitstream-toggle.disable' : 'access-control-bitstream-toggle.enable') | translate"
[(ngModel)]="state.bitstream.toggleStatus"
@@ -142,7 +142,7 @@
</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
#bitstreamAccessCmp

View File

@@ -1,5 +1,5 @@
<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>
<div *ngIf="objects?.hasSucceeded && !objects?.isLoading && objects?.payload?.page.length > 0" @fadeIn>
<div *ngIf="shouldDisplayResetButton$ |async" class="mb-2 reset">

View File

@@ -3,9 +3,9 @@
<div class="card-body d-flex flex-column"
*ngVar="group$ | async as group">
<h5 class="w-100">
<h2 class="h4 w-100">
{{ roleName$ | async }}
</h5>
</h2>
<div class="mt-2 mb-2">
<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="col-12">
<div class="d-flex justify-content-between border-bottom">
<h2>{{ type + '.edit.head' | translate }}</h2>
<div>
<h1>{{ type + '.edit.head' | translate }}</h1>
<div class="my-auto">
<a class="btn btn-danger"
[routerLink]="((type === 'community') ? '/communities/' : '/collections/') + (dsoRD$ | async)?.payload.uuid + '/delete'">
<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">
<h2 class="d-inline-block h6" *ngIf="title">{{ title | translate }}</h2>
<div class="d-inline-block px-2"><a href="{{getHandle()}}">{{getHandle()}}</a></div>
</div>
<p *ngIf="content" class="d-flex flex-wrap gapx-2 text-break">
<span class="mb-0" *ngIf="title">{{ title | translate }}</span>
<a [href]="getHandle()">{{getHandle()}}</a>
</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">
<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"
[isProcessing]="isProcessing()"

View File

@@ -1,5 +1,5 @@
<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"
aria-labelledby="configuration-switch"

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
<div class="container">
<div class="row">
<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
[initExternalSourceData]="reload$.value"
(externalSourceData) = "getExternalSourceData($event)">
@@ -11,7 +11,7 @@
<div class="row" *ngIf="reload$.value.entity">
<div *ngIf="reload$.value.sourceId !== ''" class="col-md-12">
<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
[objects]="entriesRD"
[selectionConfig]="{ repeatable: repeatable, listId: listId }"
@@ -25,15 +25,15 @@
<ds-themed-loading *ngIf="(isLoading$ | async)"
message="{{'loading.search-results' | translate}}"></ds-themed-loading>
<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 *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>
</ng-container>
</div>
<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>
</ds-alert>
</div>

View File

@@ -23,6 +23,7 @@ import { PageInfo } from '../../core/shared/page-info.model';
import { hasValue, isNotEmpty } from '../../shared/empty.util';
import { getFinishedRemoteData } from '../../core/shared/operators';
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.
@@ -92,6 +93,8 @@ export class SubmissionImportExternalComponent implements OnInit, OnDestroy {
private retrieveExternalSourcesSub: Subscription;
public readonly AlertType = AlertType;
/**
* Initialize the component variables.
* @param {SearchConfigurationService} searchConfigService

View File

@@ -1,7 +1,7 @@
<div class="container">
<div class="row">
<div class="col-md-12 m-40">
<h2>{{'subscriptions.title' | translate}}</h2>
<h1>{{'subscriptions.title' | translate}}</h1>
<div class="row">
<div class="col-md-12 m-40">
<ds-themed-loading *ngIf="loading$ | async"></ds-themed-loading>
@@ -34,7 +34,7 @@
</div>
</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 }}
</ds-alert>

View File

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

View File

@@ -1,5 +1,5 @@
<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 class="form-group">
<div class="row mb-2">

View File

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

View File

@@ -12,6 +12,14 @@ $fa-font-path: "^assets/fonts" !default;
/* Images */
$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: true;