MOBILE-4470 chore: ion-button input & textarea now supports ariaLabel
parent
a88147e5b0
commit
ba72120574
|
@ -6,7 +6,7 @@
|
||||||
<!-- Download all courses. -->
|
<!-- Download all courses. -->
|
||||||
<div *ngIf="downloadCoursesEnabled && filteredCourses.length > 0" class="core-button-spinner">
|
<div *ngIf="downloadCoursesEnabled && filteredCourses.length > 0" class="core-button-spinner">
|
||||||
<ion-button *ngIf="!prefetchCoursesData.loading" fill="clear" (click)="prefetchCourses()"
|
<ion-button *ngIf="!prefetchCoursesData.loading" fill="clear" (click)="prefetchCourses()"
|
||||||
[attr.aria-label]="prefetchCoursesData.statusTranslatable | translate">
|
[ariaLabel]="prefetchCoursesData.statusTranslatable | translate">
|
||||||
<ion-icon [name]="prefetchCoursesData.icon" slot="icon-only" aria-hidden="true" />
|
<ion-icon [name]="prefetchCoursesData.icon" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-badge class="core-course-download-courses-progress" *ngIf="prefetchCoursesData.badge" role="progressbar"
|
<ion-badge class="core-course-download-courses-progress" *ngIf="prefetchCoursesData.badge" role="progressbar"
|
||||||
|
@ -85,11 +85,11 @@
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col size="auto" *ngIf="isLayoutSwitcherAvailable">
|
<ion-col size="auto" *ngIf="isLayoutSwitcherAvailable">
|
||||||
<ion-button *ngIf="layout === 'card'" fill="outline" (click)="toggleLayout('list')"
|
<ion-button *ngIf="layout === 'card'" fill="outline" (click)="toggleLayout('list')"
|
||||||
[attr.aria-label]="'addon.block_myoverview.aria:list' | translate">
|
[ariaLabel]="'addon.block_myoverview.aria:list' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-list" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-list" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button *ngIf="layout === 'list'" fill="outline" (click)="toggleLayout('card')"
|
<ion-button *ngIf="layout === 'list'" fill="outline" (click)="toggleLayout('card')"
|
||||||
[attr.aria-label]="'addon.block_myoverview.aria:card' | translate">
|
[ariaLabel]="'addon.block_myoverview.aria:card' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-table-cells-large" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-table-cells-large" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
<ion-button class="ion-margin" expand="block" [attr.aria-label]="'core.save' | translate"
|
<ion-button class="ion-margin" expand="block" [ariaLabel]="'core.save' | translate"
|
||||||
[disabled]="form.invalid || (entry && !hasDataChangedForEdit)" (click)="save()">
|
[disabled]="form.invalid || (entry && !hasDataChangedForEdit)" (click)="save()">
|
||||||
{{ 'core.save' | translate }}
|
{{ 'core.save' | translate }}
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -41,8 +41,8 @@
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
@if (entry.userid === currentUserId && optionsAvailable) {
|
@if (entry.userid === currentUserId && optionsAvailable) {
|
||||||
<ion-button fill="clear" [attr.aria-label]="'core.displayoptions' | translate"
|
<ion-button fill="clear" [ariaLabel]="'core.displayoptions' | translate" (click)="showEntryActionsPopover($event, entry)"
|
||||||
(click)="showEntryActionsPopover($event, entry)" class="entry-options">
|
class="entry-options">
|
||||||
<ion-icon slot="icon-only" aria-hidden="true" name="ellipsis-vertical" />
|
<ion-icon slot="icon-only" aria-hidden="true" name="ellipsis-vertical" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<ion-grid class="ion-no-padding addon-calendar-navigation">
|
<ion-grid class="ion-no-padding addon-calendar-navigation">
|
||||||
<ion-row class="ion-align-items-center">
|
<ion-row class="ion-align-items-center">
|
||||||
<ion-col class="ion-text-start" *ngIf="canNavigate">
|
<ion-col class="ion-text-start" *ngIf="canNavigate">
|
||||||
<ion-button fill="clear" (click)="loadPrevious()" [attr.aria-label]="'addon.calendar.monthprev' | translate">
|
<ion-button fill="clear" (click)="loadPrevious()" [ariaLabel]="'addon.calendar.monthprev' | translate">
|
||||||
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
</h2>
|
</h2>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col class="ion-text-end" *ngIf="canNavigate">
|
<ion-col class="ion-text-end" *ngIf="canNavigate">
|
||||||
<ion-button fill="clear" (click)="loadNext()" [attr.aria-label]="'addon.calendar.monthnext' | translate">
|
<ion-button fill="clear" (click)="loadNext()" [ariaLabel]="'addon.calendar.monthnext' | translate">
|
||||||
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<ion-header class="no-title">
|
<ion-header class="no-title">
|
||||||
<ion-toolbar>
|
<ion-toolbar>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<h1>{{ 'addon.calendar.calendarevents' | translate }}</h1>
|
<h1>{{ 'addon.calendar.calendarevents' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openFilter()" [attr.aria-label]="'core.filter' | translate">
|
<ion-button fill="clear" (click)="openFilter()" [ariaLabel]="'core.filter' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-filter" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-filter" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<core-context-menu>
|
<core-context-menu>
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
<ion-grid class="ion-no-padding safe-area-padding">
|
<ion-grid class="ion-no-padding safe-area-padding">
|
||||||
<ion-row class="ion-align-items-center">
|
<ion-row class="ion-align-items-center">
|
||||||
<ion-col class="ion-text-start">
|
<ion-col class="ion-text-start">
|
||||||
<ion-button fill="clear" (click)="loadPrevious()" [attr.aria-label]="'addon.calendar.dayprev' | translate">
|
<ion-button fill="clear" (click)="loadPrevious()" [ariaLabel]="'addon.calendar.dayprev' | translate">
|
||||||
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
<h2>{{ periodName }}</h2>
|
<h2>{{ periodName }}</h2>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col class="ion-text-end">
|
<ion-col class="ion-text-end">
|
||||||
<ion-button fill="clear" (click)="loadNext()" [attr.aria-label]="'addon.calendar.daynext' | translate">
|
<ion-button fill="clear" (click)="loadNext()" [ariaLabel]="'addon.calendar.daynext' | translate">
|
||||||
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
|
|
@ -117,8 +117,7 @@
|
||||||
<ion-label>
|
<ion-label>
|
||||||
<p class="item-heading">{{ 'addon.calendar.reminders' | translate }}</p>
|
<p class="item-heading">{{ 'addon.calendar.reminders' | translate }}</p>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-button fill="clear" (click)="addReminder()" slot="end"
|
<ion-button fill="clear" (click)="addReminder()" slot="end" [ariaLabel]="'addon.calendar.setnewreminder' | translate">
|
||||||
[attr.aria-label]="'addon.calendar.setnewreminder' | translate">
|
|
||||||
<ion-icon name="fas-plus" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-plus" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-item-divider>
|
</ion-item-divider>
|
||||||
|
@ -126,7 +125,7 @@
|
||||||
<ion-label>
|
<ion-label>
|
||||||
<p>{{ reminder.label }}</p>
|
<p>{{ reminder.label }}</p>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-button fill="clear" (click)="removeReminder(reminder)" [attr.aria-label]="'core.delete' | translate" slot="end">
|
<ion-button fill="clear" (click)="removeReminder(reminder)" [ariaLabel]="'core.delete' | translate" slot="end">
|
||||||
<ion-icon name="fas-trash" color="danger" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-trash" color="danger" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
|
@ -149,7 +149,7 @@
|
||||||
<p class="item-heading">{{ reminder.label }}</p>
|
<p class="item-heading">{{ reminder.label }}</p>
|
||||||
<p *ngIf="reminder.sublabel">{{ reminder.sublabel }}</p>
|
<p *ngIf="reminder.sublabel">{{ reminder.sublabel }}</p>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-button fill="clear" (click)="deleteReminder(reminder.id, $event)" [attr.aria-label]="'core.delete' | translate"
|
<ion-button fill="clear" (click)="deleteReminder(reminder.id, $event)" [ariaLabel]="'core.delete' | translate"
|
||||||
slot="end">
|
slot="end">
|
||||||
<ion-icon name="fas-trash" color="danger" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-trash" color="danger" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<p *ngIf="!showCalendar" class="subheading">{{ 'addon.calendar.upcomingevents' | translate }}</p>
|
<p *ngIf="!showCalendar" class="subheading">{{ 'addon.calendar.upcomingevents' | translate }}</p>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openFilter()" [attr.aria-label]="'core.filter' | translate">
|
<ion-button fill="clear" (click)="openFilter()" [ariaLabel]="'core.filter' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-filter" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-filter" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<core-context-menu>
|
<core-context-menu>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'addon.messages.groupinfo' | translate }}</h1>
|
<h1>{{ 'addon.messages.groupinfo' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<h1>{{ 'addon.messages.contacts' | translate }}</h1>
|
<h1>{{ 'addon.messages.contacts' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="gotoSearch()" [attr.aria-label]="'addon.messages.searchcombined' | translate">
|
<ion-button fill="clear" (click)="gotoSearch()" [ariaLabel]="'addon.messages.searchcombined' | translate">
|
||||||
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<!-- Add an empty context menu so split view pages can add items, otherwise the menu disappears in some cases. -->
|
<!-- Add an empty context menu so split view pages can add items, otherwise the menu disappears in some cases. -->
|
||||||
|
|
|
@ -7,10 +7,10 @@
|
||||||
<h1>{{ 'addon.messages.messages' | translate }}</h1>
|
<h1>{{ 'addon.messages.messages' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="gotoSearch()" [attr.aria-label]="'addon.messages.searchcombined' | translate">
|
<ion-button fill="clear" (click)="gotoSearch()" [ariaLabel]="'addon.messages.searchcombined' | translate">
|
||||||
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button (click)="gotoSettings()" [attr.aria-label]="'addon.messages.messagepreferences' | translate">
|
<ion-button (click)="gotoSettings()" [ariaLabel]="'addon.messages.messagepreferences' | translate">
|
||||||
<ion-icon name="fas-gear" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-gear" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<!-- Add an empty context menu so split view pages can add items, otherwise the menu disappears in some cases. -->
|
<!-- Add an empty context menu so split view pages can add items, otherwise the menu disappears in some cases. -->
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ plugin.name }}</h1>
|
<h1>{{ plugin.name }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -267,7 +267,7 @@
|
||||||
</p>
|
</p>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-button slot="end" *ngIf="feedback!.advancedgrade" (click)="showAdvancedGrade()"
|
<ion-button slot="end" *ngIf="feedback!.advancedgrade" (click)="showAdvancedGrade()"
|
||||||
[attr.aria-label]="'core.showadvanced' |translate">
|
[ariaLabel]="'core.showadvanced' |translate">
|
||||||
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<div slot="end">
|
<div slot="end">
|
||||||
<div class="ion-text-end">
|
<div class="ion-text-end">
|
||||||
<ion-button fill="clear" *ngIf="canEdit" (click)="editComment()" [attr.aria-label]="'core.edit' | translate">
|
<ion-button fill="clear" *ngIf="canEdit" (click)="editComment()" [ariaLabel]="'core.edit' | translate">
|
||||||
<ion-icon name="fas-pen" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-pen" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'addon.mod_book.toc' | translate }}</h1>
|
<h1>{{ 'addon.mod_book.toc' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
</h1>
|
</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button (click)="showToc()" [attr.aria-label]="'addon.mod_book.toc' | translate" aria-haspopup="true" *ngIf="loaded">
|
<ion-button (click)="showToc()" [ariaLabel]="'addon.mod_book.toc' | translate" aria-haspopup="true" *ngIf="loaded">
|
||||||
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'addon.mod_chat.currentusers' | translate }}</h1>
|
<h1>{{ 'addon.mod_chat.currentusers' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
</h1>
|
</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" *ngIf="loaded" (click)="showChatUsers()" [attr.aria-label]="'core.users' | translate">
|
<ion-button fill="clear" *ngIf="loaded" (click)="showChatUsers()" [ariaLabel]="'core.users' | translate">
|
||||||
<ion-icon name="fas-users" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-users" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -1,34 +1,33 @@
|
||||||
<ion-button size="small" *ngIf="action === 'actionsmenu'" fill="clear" (click)="actionsMenu($event)"
|
<ion-button size="small" *ngIf="action === 'actionsmenu'" fill="clear" (click)="actionsMenu($event)"
|
||||||
[attr.aria-label]="'addon.mod_data.actionsmenu' | translate">
|
[ariaLabel]="'addon.mod_data.actionsmenu' | translate">
|
||||||
<ion-icon name="fas-ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button size="small" *ngIf="action === 'more'" fill="clear" (click)="viewEntry()"
|
<ion-button size="small" *ngIf="action === 'more'" fill="clear" (click)="viewEntry()" [ariaLabel]="'addon.mod_data.showmore' | translate">
|
||||||
[attr.aria-label]="'addon.mod_data.showmore' | translate">
|
|
||||||
<ion-icon name="fas-magnifying-glass-plus" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-magnifying-glass-plus" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button size="small" *ngIf="action === 'edit'" fill="clear" (click)="editEntry()" [attr.aria-label]="'core.edit' | translate">
|
<ion-button size="small" *ngIf="action === 'edit'" fill="clear" (click)="editEntry()" [ariaLabel]="'core.edit' | translate">
|
||||||
<ion-icon name="fas-pen" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-pen" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button size="small" *ngIf="action === 'delete' && !entry.deleted" fill="clear" color="danger" (click)="deleteEntry()"
|
<ion-button size="small" *ngIf="action === 'delete' && !entry.deleted" fill="clear" color="danger" (click)="deleteEntry()"
|
||||||
[attr.aria-label]="'core.delete' | translate">
|
[ariaLabel]="'core.delete' | translate">
|
||||||
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button size="small" *ngIf="action === 'delete' && entry.deleted" fill="clear" color="danger" (click)="undoDelete()"
|
<ion-button size="small" *ngIf="action === 'delete' && entry.deleted" fill="clear" color="danger" (click)="undoDelete()"
|
||||||
[attr.aria-label]="'core.restore' | translate">
|
[ariaLabel]="'core.restore' | translate">
|
||||||
<ion-icon name="fas-rotate-left" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-rotate-left" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button size="small" *ngIf="action === 'approve'" fill="clear" (click)="approveEntry()"
|
<ion-button size="small" *ngIf="action === 'approve'" fill="clear" (click)="approveEntry()"
|
||||||
[attr.aria-label]="'addon.mod_data.approve' | translate">
|
[ariaLabel]="'addon.mod_data.approve' | translate">
|
||||||
<ion-icon name="fas-thumbs-up" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-thumbs-up" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button size="small" *ngIf="action === 'disapprove'" fill="clear" (click)="disapproveEntry()"
|
<ion-button size="small" *ngIf="action === 'disapprove'" fill="clear" (click)="disapproveEntry()"
|
||||||
[attr.aria-label]="'addon.mod_data.disapprove' | translate">
|
[ariaLabel]="'addon.mod_data.disapprove' | translate">
|
||||||
<ion-icon name="far-thumbs-down" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="far-thumbs-down" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button *ngIf="canSearch" (click)="showSearch()" [attr.aria-label]="'addon.mod_data.search' | translate">
|
<ion-button *ngIf="canSearch" (click)="showSearch()" [ariaLabel]="'addon.mod_data.search' | translate">
|
||||||
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<core-context-menu>
|
<core-context-menu>
|
||||||
|
@ -10,7 +10,7 @@
|
||||||
(action)="gotoEntry(firstEntry)" />
|
(action)="gotoEntry(firstEntry)" />
|
||||||
</core-context-menu>
|
</core-context-menu>
|
||||||
|
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'addon.mod_data.search' | translate }}</h1>
|
<h1>{{ 'addon.mod_data.search' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
<form (ngSubmit)="searchEntries($event)" [formGroup]="searchForm" #searchFormEl>
|
<form (ngSubmit)="searchEntries($event)" [formGroup]="searchForm" #searchFormEl>
|
||||||
<ion-list class="ion-no-margin">
|
<ion-list class="ion-no-margin">
|
||||||
<ion-item [hidden]="search.searchingAdvanced">
|
<ion-item [hidden]="search.searchingAdvanced">
|
||||||
<ion-input type="text" [attr.aria-label]="'addon.mod_data.search' | translate"
|
<ion-input type="text" [ariaLabel]="'addon.mod_data.search' | translate"
|
||||||
placeholder="{{ 'addon.mod_data.search' | translate}}" name="text" formControlName="text" />
|
placeholder="{{ 'addon.mod_data.search' | translate}}" name="text" formControlName="text" />
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item class="ion-text-wrap">
|
<ion-item class="ion-text-wrap">
|
||||||
|
|
|
@ -48,15 +48,14 @@
|
||||||
<div collapsible-footer *ngIf="entryLoaded && hasPrevious || hasNext" slot="fixed" appearOnBottom>
|
<div collapsible-footer *ngIf="entryLoaded && hasPrevious || hasNext" slot="fixed" appearOnBottom>
|
||||||
<ion-row class="ion-justify-content-between ion-align-items-center ion-no-padding ion-wrap">
|
<ion-row class="ion-justify-content-between ion-align-items-center ion-no-padding ion-wrap">
|
||||||
<ion-col class="ion-text-start ion-no-padding core-navigation-arrow" size="auto">
|
<ion-col class="ion-text-start ion-no-padding core-navigation-arrow" size="auto">
|
||||||
<ion-button [disabled]="!hasPrevious" fill="clear" [attr.aria-label]="'core.previous' | translate"
|
<ion-button [disabled]="!hasPrevious" fill="clear" [ariaLabel]="'core.previous' | translate"
|
||||||
(click)="gotoEntry(offset! -1)">
|
(click)="gotoEntry(offset! -1)">
|
||||||
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col class="ion-text-center" />
|
<ion-col class="ion-text-center" />
|
||||||
<ion-col class="ion-text-end ion-no-padding core-navigation-arrow" size="auto">
|
<ion-col class="ion-text-end ion-no-padding core-navigation-arrow" size="auto">
|
||||||
<ion-button [disabled]="!hasNext" fill="clear" [attr.aria-label]=" 'core.next' | translate"
|
<ion-button [disabled]="!hasNext" fill="clear" [ariaLabel]=" 'core.next' | translate" (click)="gotoEntry(offset! + 1)">
|
||||||
(click)="gotoEntry(offset! + 1)">
|
|
||||||
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" *ngIf="showSearch" (click)="openSearch()" [attr.aria-label]="'core.search' | translate">
|
<ion-button fill="clear" *ngIf="showSearch" (click)="openSearch()" [ariaLabel]="'core.search' | translate">
|
||||||
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<!-- Add an empty context menu so split view pages can add items, otherwise the menu disappears in some cases. -->
|
<!-- Add an empty context menu so split view pages can add items, otherwise the menu disappears in some cases. -->
|
||||||
|
@ -135,7 +135,7 @@
|
||||||
</ion-row>
|
</ion-row>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-button *ngIf="canPin || discussion.canlock || discussion.canfavourite" fill="clear"
|
<ion-button *ngIf="canPin || discussion.canlock || discussion.canfavourite" fill="clear"
|
||||||
[attr.aria-label]="('core.displayoptions' | translate)" (click)="showOptionsMenu($event, discussion)" slot="end">
|
[ariaLabel]="('core.displayoptions' | translate)" (click)="showOptionsMenu($event, discussion)" slot="end">
|
||||||
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
[attr.aria-label]="'addon.mod_forum.unread' | translate">
|
[attr.aria-label]="'addon.mod_forum.unread' | translate">
|
||||||
<ion-icon name="fas-circle" color="primary" aria-hidden="true" />
|
<ion-icon name="fas-circle" color="primary" aria-hidden="true" />
|
||||||
</ion-note>
|
</ion-note>
|
||||||
<ion-button *ngIf="optionsMenuEnabled" fill="clear" [attr.aria-label]="('core.displayoptions' | translate)"
|
<ion-button *ngIf="optionsMenuEnabled" fill="clear" [ariaLabel]="('core.displayoptions' | translate)"
|
||||||
(click)="showOptionsMenu($event)">
|
(click)="showOptionsMenu($event)">
|
||||||
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
[attr.aria-label]="'addon.mod_forum.unread' | translate">
|
[attr.aria-label]="'addon.mod_forum.unread' | translate">
|
||||||
<ion-icon name="fas-circle" color="primary" aria-hidden="true" />
|
<ion-icon name="fas-circle" color="primary" aria-hidden="true" />
|
||||||
</ion-note>
|
</ion-note>
|
||||||
<ion-button *ngIf="optionsMenuEnabled" fill="clear" [attr.aria-label]="('core.displayoptions' | translate)"
|
<ion-button *ngIf="optionsMenuEnabled" fill="clear" [ariaLabel]="('core.displayoptions' | translate)"
|
||||||
(click)="showOptionsMenu($event)">
|
(click)="showOptionsMenu($event)">
|
||||||
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -1,16 +1,15 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button *ngIf="!showLoading && glossary && glossary.browsemodes && glossary.browsemodes.length > 1" (click)="openModePicker($event)"
|
<ion-button *ngIf="!showLoading && glossary && glossary.browsemodes && glossary.browsemodes.length > 1" (click)="openModePicker($event)"
|
||||||
[attr.aria-label]="'addon.mod_glossary.browsemode' | translate">
|
[ariaLabel]="'addon.mod_glossary.browsemode' | translate">
|
||||||
<ion-icon name="fas-sort" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-sort" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button *ngIf="!showLoading && glossary" (click)="toggleSearch()" [attr.aria-label]="'addon.mod_glossary.bysearch' | translate">
|
<ion-button *ngIf="!showLoading && glossary" (click)="toggleSearch()" [ariaLabel]="'addon.mod_glossary.bysearch' | translate">
|
||||||
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button *ngIf="!showLoading" fill="clear" (click)="openModuleSummary()" aria-haspopup="true"
|
<ion-button *ngIf="!showLoading" fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
[attr.aria-label]="'core.info' | translate">
|
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -67,11 +67,10 @@
|
||||||
<ion-item *ngIf="canDelete || canEdit">
|
<ion-item *ngIf="canDelete || canEdit">
|
||||||
<div slot="end">
|
<div slot="end">
|
||||||
<ion-button *ngIf="canDelete" fill="clear" color="danger" (click)="deleteEntry()"
|
<ion-button *ngIf="canDelete" fill="clear" color="danger" (click)="deleteEntry()"
|
||||||
[attr.aria-label]="'addon.mod_glossary.deleteentry' | translate">
|
[ariaLabel]="'addon.mod_glossary.deleteentry' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-trash" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-trash" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button *ngIf="canEdit" fill="clear" (click)="editEntry()"
|
<ion-button *ngIf="canEdit" fill="clear" (click)="editEntry()" [ariaLabel]="'addon.mod_glossary.editentry' | translate">
|
||||||
[attr.aria-label]="'addon.mod_glossary.editentry' | translate">
|
|
||||||
<ion-icon slot="icon-only" name="fas-pen" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-pen" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
(action)="viewAllAttempts()" iconAction="fas-chart-bar" />
|
(action)="viewAllAttempts()" iconAction="fas-chart-bar" />
|
||||||
</core-context-menu>
|
</core-context-menu>
|
||||||
|
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'addon.mod_imscp.toc' | translate }}</h1>
|
<h1>{{ 'addon.mod_imscp.toc' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
</ion-title>
|
</ion-title>
|
||||||
|
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button *ngIf="loaded" (click)="showToc()" aria-haspopup="true" [attr.aria-label]="'addon.mod_imscp.toc' | translate">
|
<ion-button *ngIf="loaded" (click)="showToc()" aria-haspopup="true" [ariaLabel]="'addon.mod_imscp.toc' | translate">
|
||||||
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ pageInstance?.lesson?.name }}</h1>
|
<h1>{{ pageInstance?.lesson?.name }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
</h1>
|
</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" *ngIf="displayMenu || mediaFile" [attr.aria-label]="'addon.mod_lesson.lessonmenu' | translate"
|
<ion-button fill="clear" *ngIf="displayMenu || mediaFile" [ariaLabel]="'addon.mod_lesson.lessonmenu' | translate"
|
||||||
(click)="showMenu()">
|
(click)="showMenu()">
|
||||||
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
<!-- Short answer. -->
|
<!-- Short answer. -->
|
||||||
<ion-item class="ion-text-wrap" *ngSwitchCase="'shortanswer'">
|
<ion-item class="ion-text-wrap" *ngSwitchCase="'shortanswer'">
|
||||||
<ion-input [type]="question.input!.type" placeholder="{{ 'addon.mod_lesson.youranswer' | translate }}"
|
<ion-input [type]="question.input!.type" placeholder="{{ 'addon.mod_lesson.youranswer' | translate }}"
|
||||||
[attr.aria-label]="'addon.mod_lesson.youranswer' | translate" [id]="question.input!.id"
|
[ariaLabel]="'addon.mod_lesson.youranswer' | translate" [id]="question.input!.id"
|
||||||
[formControlName]="question.input!.name" autocorrect="off" [maxlength]="question.input!.maxlength" />
|
[formControlName]="question.input!.name" autocorrect="off" [maxlength]="question.input!.maxlength" />
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'addon.mod_quiz.quiznavigation' | translate }}</h1>
|
<h1>{{ 'addon.mod_quiz.quiznavigation' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ title | translate }}</h1>
|
<h1>{{ title | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -12,11 +12,10 @@
|
||||||
|
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" id="addon-mod_quiz-connection-error-button" [hidden]="!autoSaveError"
|
<ion-button fill="clear" id="addon-mod_quiz-connection-error-button" [hidden]="!autoSaveError"
|
||||||
(click)="showConnectionError($event)" [attr.aria-label]="'addon.mod_quiz.connectionerror' | translate"
|
(click)="showConnectionError($event)" [ariaLabel]="'addon.mod_quiz.connectionerror' | translate" aria-haspopup="dialog">
|
||||||
aria-haspopup="dialog">
|
|
||||||
<ion-icon name="fas-circle-exclamation" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-exclamation" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button *ngIf="navigation.length" [attr.aria-label]="'addon.mod_quiz.opentoc' | translate" (click)="openNavigation()">
|
<ion-button *ngIf="navigation.length" [ariaLabel]="'addon.mod_quiz.opentoc' | translate" (click)="openNavigation()">
|
||||||
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
</ion-title>
|
</ion-title>
|
||||||
|
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" *ngIf="navigation.length" [attr.aria-label]="'addon.mod_quiz.opentoc' | translate"
|
<ion-button fill="clear" *ngIf="navigation.length" [ariaLabel]="'addon.mod_quiz.opentoc' | translate" (click)="openNavigation()"
|
||||||
(click)="openNavigation()" aria-haspopup="true">
|
aria-haspopup="true">
|
||||||
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
<div collapsible-footer appearOnBottom *ngIf="loaded && numPages > 1" slot="fixed">
|
<div collapsible-footer appearOnBottom *ngIf="loaded && numPages > 1" slot="fixed">
|
||||||
<ion-row class="ion-justify-content-between ion-align-items-center ion-no-padding ion-wrap">
|
<ion-row class="ion-justify-content-between ion-align-items-center ion-no-padding ion-wrap">
|
||||||
<ion-col class="ion-text-start ion-no-padding core-navigation-arrow" size="auto" *ngIf="!showAll">
|
<ion-col class="ion-text-start ion-no-padding core-navigation-arrow" size="auto" *ngIf="!showAll">
|
||||||
<ion-button [disabled]="previousPage < 0" fill="clear" [attr.aria-label]="'core.previous' | translate"
|
<ion-button [disabled]="previousPage < 0" fill="clear" [ariaLabel]="'core.previous' | translate"
|
||||||
(click)="changePage(previousPage)">
|
(click)="changePage(previousPage)">
|
||||||
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
@ -57,7 +57,7 @@
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col class="ion-text-end ion-no-padding core-navigation-arrow" size="auto" *ngIf="!showAll">
|
<ion-col class="ion-text-end ion-no-padding core-navigation-arrow" size="auto" *ngIf="!showAll">
|
||||||
<ion-button [disabled]="nextPage >= numPages" fill="clear" [attr.aria-label]="'core.next' | translate"
|
<ion-button [disabled]="nextPage >= numPages" fill="clear" [ariaLabel]="'core.next' | translate"
|
||||||
(click)="changePage(nextPage)">
|
(click)="changePage(nextPage)">
|
||||||
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'addon.mod_scorm.toc' | translate }}</h1>
|
<h1>{{ 'addon.mod_scorm.toc' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<core-button-with-spinner *ngIf="showToc" [loading]="loadingToc">
|
<core-button-with-spinner *ngIf="showToc" [loading]="loadingToc">
|
||||||
<ion-button fill="clear" *ngIf="toc.length" (click)="openToc()" [attr.aria-label]="'addon.mod_scorm.toc' | translate"
|
<ion-button fill="clear" *ngIf="toc.length" (click)="openToc()" [ariaLabel]="'addon.mod_scorm.toc' | translate"
|
||||||
aria-haspopup="true">
|
aria-haspopup="true">
|
||||||
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<!-- Select subwiki. -->
|
<!-- Select subwiki. -->
|
||||||
<ion-button *ngIf="subwikiData.count > 1" (click)="showSubwikiPicker($event)" [attr.aria-label]="'addon.mod_wiki.subwiki' | translate"
|
<ion-button *ngIf="subwikiData.count > 1" (click)="showSubwikiPicker($event)" [ariaLabel]="'addon.mod_wiki.subwiki' | translate"
|
||||||
aria-haspopup="true">
|
aria-haspopup="true">
|
||||||
<ion-icon *ngIf="!groupWiki" name="fas-user" aria-hidden="true" />
|
<ion-icon *ngIf="!groupWiki" name="fas-user" aria-hidden="true" />
|
||||||
<ion-icon *ngIf="groupWiki" name="fas-users" aria-hidden="true" />
|
<ion-icon *ngIf="groupWiki" name="fas-users" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button *ngIf="!showLoading && currentPageObj" (click)="openMap()" [attr.aria-label]="'addon.mod_wiki.map' | translate"
|
<ion-button *ngIf="!showLoading && currentPageObj" (click)="openMap()" [ariaLabel]="'addon.mod_wiki.map' | translate"
|
||||||
aria-haspopup="true">
|
aria-haspopup="true">
|
||||||
<ion-icon name="fas-map" aria-hidden="true" />
|
<ion-icon name="fas-map" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
@ -19,7 +19,7 @@
|
||||||
(action)="goToNewPage()" />
|
(action)="goToNewPage()" />
|
||||||
</core-context-menu>
|
</core-context-menu>
|
||||||
|
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'addon.mod_wiki.map' | translate }}</h1>
|
<h1>{{ 'addon.mod_wiki.map' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
<core-loading [hideUntil]="loaded">
|
<core-loading [hideUntil]="loaded">
|
||||||
<form [formGroup]="pageForm" #editPageForm *ngIf="loaded">
|
<form [formGroup]="pageForm" #editPageForm *ngIf="loaded">
|
||||||
<ion-item class="ion-text-wrap" *ngIf="canEditTitle">
|
<ion-item class="ion-text-wrap" *ngIf="canEditTitle">
|
||||||
<ion-input [attr.aria-label]="'addon.mod_wiki.newpagetitle' | translate" name="title" type="text"
|
<ion-input [ariaLabel]="'addon.mod_wiki.newpagetitle' | translate" name="title" type="text"
|
||||||
[placeholder]="'addon.mod_wiki.newpagetitle' | translate" formControlName="title" />
|
[placeholder]="'addon.mod_wiki.newpagetitle' | translate" formControlName="title" />
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<!-- Buttons to add to the header. -->
|
<!-- Buttons to add to the header. -->
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'addon.mod_workshop.userplan' | translate }}</h1>
|
<h1>{{ 'addon.mod_workshop.userplan' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<h1>{{ 'addon.mod_workshop.editsubmission' | translate }}</h1>
|
<h1>{{ 'addon.mod_workshop.editsubmission' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="save()" [attr.aria-label]="'core.save' | translate">
|
<ion-button fill="clear" (click)="save()" [ariaLabel]="'core.save' | translate">
|
||||||
{{ 'core.save' | translate }}
|
{{ 'core.save' | translate }}
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end" [hidden]="!loaded">
|
<ion-buttons slot="end" [hidden]="!loaded">
|
||||||
<ion-button *ngIf="assessmentId && access.assessingallowed" fill="clear" (click)="saveAssessment()"
|
<ion-button *ngIf="assessmentId && access.assessingallowed" fill="clear" (click)="saveAssessment()"
|
||||||
[attr.aria-label]="'core.save' | translate">
|
[ariaLabel]="'core.save' | translate">
|
||||||
{{ 'core.save' | translate }}
|
{{ 'core.save' | translate }}
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button *ngIf="canAddFeedback" fill="clear" (click)="saveEvaluation()">
|
<ion-button *ngIf="canAddFeedback" fill="clear" (click)="saveEvaluation()">
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'addon.notes.addnewnote' | translate }}</h1>
|
<h1>{{ 'addon.notes.addnewnote' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
</ion-select>
|
</ion-select>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-textarea [attr.aria-label]="'addon.notes.note' | translate" placeholder="{{ 'addon.notes.note' | translate }}" rows="5"
|
<ion-textarea [ariaLabel]="'addon.notes.note' | translate" placeholder="{{ 'addon.notes.note' | translate }}" rows="5"
|
||||||
[(ngModel)]="text" name="text" required="required" />
|
[(ngModel)]="text" name="text" required="required" />
|
||||||
</ion-item>
|
</ion-item>
|
||||||
<div class="ion-padding">
|
<div class="ion-padding">
|
||||||
|
|
|
@ -11,8 +11,7 @@
|
||||||
</ion-toolbar>
|
</ion-toolbar>
|
||||||
</ion-header>
|
</ion-header>
|
||||||
<core-navbar-buttons slot="end">
|
<core-navbar-buttons slot="end">
|
||||||
<ion-button [hidden]="!canDeleteNotes" slot="end" fill="clear" (click)="toggleDelete()"
|
<ion-button [hidden]="!canDeleteNotes" slot="end" fill="clear" (click)="toggleDelete()" [ariaLabel]="'core.toggledelete' | translate">
|
||||||
[attr.aria-label]="'core.toggledelete' | translate">
|
|
||||||
<ion-icon name="fas-pen" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-pen" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<core-context-menu>
|
<core-context-menu>
|
||||||
|
@ -80,12 +79,12 @@
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<ion-button *ngIf="note.deleted" slot="end" fill="clear" color="danger" (click)="undoDeleteNote($event, note)"
|
<ion-button *ngIf="note.deleted" slot="end" fill="clear" color="danger" (click)="undoDeleteNote($event, note)"
|
||||||
[attr.aria-label]="'core.restore' | translate">
|
[ariaLabel]="'core.restore' | translate">
|
||||||
<ion-icon name="fas-rotate-left" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-rotate-left" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button *ngIf="showDelete && !note.deleted && (type !== 'personal' || note.usermodified === currentUserId)"
|
<ion-button *ngIf="showDelete && !note.deleted && (type !== 'personal' || note.usermodified === currentUserId)"
|
||||||
slot="end" fill="clear" [@coreSlideInOut]="'fromRight'" color="danger" (click)="deleteNote($event, note)"
|
slot="end" fill="clear" [@coreSlideInOut]="'fromRight'" color="danger" (click)="deleteNote($event, note)"
|
||||||
[attr.aria-label]="'core.delete' | translate">
|
[ariaLabel]="'core.delete' | translate">
|
||||||
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-item>
|
</ion-item>
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<input *ngIf="question.answerDraftIdInput" type="hidden" [name]="question.answerDraftIdInput.name"
|
<input *ngIf="question.answerDraftIdInput" type="hidden" [name]="question.answerDraftIdInput.name"
|
||||||
[value]="question.answerDraftIdInput.value">
|
[value]="question.answerDraftIdInput.value">
|
||||||
<!-- Plain text textarea. -->
|
<!-- Plain text textarea. -->
|
||||||
<ion-textarea *ngIf="question.isPlainText" [attr.aria-label]="'core.question.answer' | translate" class="core-question-textarea"
|
<ion-textarea *ngIf="question.isPlainText" [ariaLabel]="'core.question.answer' | translate" class="core-question-textarea"
|
||||||
[ngClass]='{"core-monospaced": question.isMonospaced}' placeholder="{{ 'core.question.answer' | translate }}"
|
[ngClass]='{"core-monospaced": question.isMonospaced}' placeholder="{{ 'core.question.answer' | translate }}"
|
||||||
[attr.name]="question.textarea.name" [ngModel]="question.textarea.text" />
|
[attr.name]="question.textarea.name" [ngModel]="question.textarea.text" />
|
||||||
<!-- Rich text editor. -->
|
<!-- Rich text editor. -->
|
||||||
|
|
|
@ -35,11 +35,11 @@
|
||||||
@if (!dragDisabled) {
|
@if (!dragDisabled) {
|
||||||
<div slot="end" class="flex-row">
|
<div slot="end" class="flex-row">
|
||||||
<ion-button fill="clear" (click)="moveItemByClick($event, false, item.id)" data-action="move-backward"
|
<ion-button fill="clear" (click)="moveItemByClick($event, false, item.id)" data-action="move-backward"
|
||||||
[attr.aria-label]="'core.moveup' | translate" [attr.aria-description]="item.contentText">
|
[ariaLabel]="'core.moveup' | translate" [attr.aria-description]="item.contentText">
|
||||||
<ion-icon slot="icon-only" name="fas-chevron-up" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-chevron-up" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button fill="clear" (click)="moveItemByClick($event, true, item.id)" data-action="move-forward"
|
<ion-button fill="clear" (click)="moveItemByClick($event, true, item.id)" data-action="move-forward"
|
||||||
[attr.aria-label]="'core.movedown' | translate" [attr.aria-description]="item.contentText">
|
[ariaLabel]="'core.movedown' | translate" [attr.aria-description]="item.contentText">
|
||||||
<ion-icon slot="icon-only" name="fas-chevron-down" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-chevron-down" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
</ion-badge>
|
</ion-badge>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-button slot="end" (click)="deleteCourse($event, course)" [disabled]="course.isDownloading" color="danger" fill="clear"
|
<ion-button slot="end" (click)="deleteCourse($event, course)" [disabled]="course.isDownloading" color="danger" fill="clear"
|
||||||
[attr.aria-label]="'addon.storagemanager.deletedatafrom' | translate:
|
[ariaLabel]="'addon.storagemanager.deletedatafrom' | translate:
|
||||||
{ name: course.title }">
|
{ name: course.title }">
|
||||||
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="!maxSubmissionsReadable">{{ 'core.maxfilesize' | translate:{$a: maxSizeReadable} }}</span>
|
<span *ngIf="!maxSubmissionsReadable">{{ 'core.maxfilesize' | translate:{$a: maxSizeReadable} }}</span>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-button slot="end" (click)="add()" [attr.aria-label]="'core.fileuploader.addfiletext' | translate"
|
<ion-button slot="end" (click)="add()" [ariaLabel]="'core.fileuploader.addfiletext' | translate"
|
||||||
*ngIf="unlimitedFiles || (maxSubmissions !== undefined && maxSubmissions >= 0 && files && files.length < maxSubmissions)">
|
*ngIf="unlimitedFiles || (maxSubmissions !== undefined && maxSubmissions >= 0 && files && files.length < maxSubmissions)">
|
||||||
<ion-icon name="fas-plus" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-plus" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<ion-button [hidden]="hideMenu" fill="clear" [attr.aria-label]="ariaLabel" (click)="showContextMenu($event)" aria-haspopup="true"
|
<ion-button [hidden]="hideMenu" fill="clear" [ariaLabel]="ariaLabel" (click)="showContextMenu($event)" aria-haspopup="true"
|
||||||
[attr.aria-controls]="uniqueId">
|
[attr.aria-controls]="uniqueId">
|
||||||
<ion-icon [name]="icon" slot="icon-only" aria-hidden="true" />
|
<ion-icon [name]="icon" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<ng-container *ngIf="enabled && !loading">
|
<ng-container *ngIf="enabled && !loading">
|
||||||
<!-- Download button. -->
|
<!-- Download button. -->
|
||||||
<ion-button *ngIf="status === statusNotDownloaded" fill="clear" (click)="download($event, false)" @coreShowHideAnimation
|
<ion-button *ngIf="status === statusNotDownloaded" fill="clear" (click)="download($event, false)" @coreShowHideAnimation
|
||||||
[attr.aria-label]="(statusTranslatable || 'core.download') | translate">
|
[ariaLabel]="(statusTranslatable || 'core.download') | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-cloud-arrow-down" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-cloud-arrow-down" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<!-- Refresh button. -->
|
<!-- Refresh button. -->
|
||||||
<ion-button *ngIf="status === statusOutdated || (status === statusDownloaded && !canTrustDownload)" fill="clear"
|
<ion-button *ngIf="status === statusOutdated || (status === statusDownloaded && !canTrustDownload)" fill="clear"
|
||||||
(click)="download($event, true)" @coreShowHideAnimation [attr.aria-label]="(statusTranslatable || 'core.refresh') | translate">
|
(click)="download($event, true)" @coreShowHideAnimation [ariaLabel]="(statusTranslatable || 'core.refresh') | translate">
|
||||||
<ion-icon slot="icon-only" name="fam-cloud-refresh" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fam-cloud-refresh" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,8 @@
|
||||||
<ion-icon slot="icon-only" [name]="openButtonIcon" aria-hidden="true" />
|
<ion-icon slot="icon-only" [name]="openButtonIcon" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button fill="clear" *ngIf="!isDownloading && canDelete" (click)="delete($event)"
|
<ion-button fill="clear" *ngIf="!isDownloading && canDelete" (click)="delete($event)" [ariaLabel]="'core.delete' | translate"
|
||||||
[attr.aria-label]="'core.delete' | translate" color="danger">
|
color="danger">
|
||||||
<ion-icon slot="icon-only" name="fas-trash" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-trash" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<ion-button fill="clear" (click)="scroll($event, 'backward')" [hidden]="scrollPosition === 'hidden'" [disabled]="scrollPosition === 'start'"
|
<ion-button fill="clear" (click)="scroll($event, 'backward')" [hidden]="scrollPosition === 'hidden'" [disabled]="scrollPosition === 'start'"
|
||||||
[attr.aria-label]="'core.scrollbackward' | translate" [attr.aria-controls]="targetId">
|
[ariaLabel]="'core.scrollbackward' | translate" [attr.aria-controls]="targetId">
|
||||||
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" flip-rtl="false" />
|
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" flip-rtl="false" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button fill="clear" (click)="scroll($event, 'forward')" [hidden]="scrollPosition === 'hidden'" [disabled]="scrollPosition === 'end'"
|
<ion-button fill="clear" (click)="scroll($event, 'forward')" [hidden]="scrollPosition === 'hidden'" [disabled]="scrollPosition === 'end'"
|
||||||
[attr.aria-label]="'core.scrollforward' | translate" [attr.aria-controls]="targetId">
|
[ariaLabel]="'core.scrollforward' | translate" [attr.aria-controls]="targetId">
|
||||||
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" flip-rtl="false" />
|
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" flip-rtl="false" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<ng-container *ngIf="safeUrl && !launchExternalLabel">
|
<ng-container *ngIf="safeUrl && !launchExternalLabel">
|
||||||
<core-navbar-buttons slot="end" prepend *ngIf="initialized && showFullscreenOnToolbar && !loading">
|
<core-navbar-buttons slot="end" prepend *ngIf="initialized && showFullscreenOnToolbar && !loading">
|
||||||
<ion-button fill="clear" (click)="toggleFullscreen()"
|
<ion-button fill="clear" (click)="toggleFullscreen()"
|
||||||
[attr.aria-label]="(fullscreen ? 'core.disablefullscreen' : 'core.fullscreen') | translate">
|
[ariaLabel]="(fullscreen ? 'core.disablefullscreen' : 'core.fullscreen') | translate">
|
||||||
<ion-icon [name]="fullscreen ? 'fas-compress' : 'fas-expand'" slot="icon-only" aria-hidden="true" />
|
<ion-icon [name]="fullscreen ? 'fas-compress' : 'fas-expand'" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -19,25 +19,25 @@
|
||||||
<!-- Form to edit the file's name. -->
|
<!-- Form to edit the file's name. -->
|
||||||
<ion-input type="text" name="filename" [placeholder]="'core.filename' | translate" autocapitalize="none" autocorrect="off"
|
<ion-input type="text" name="filename" [placeholder]="'core.filename' | translate" autocapitalize="none" autocorrect="off"
|
||||||
(click)="$event.stopPropagation()" core-auto-focus [(ngModel)]="newFileName" *ngIf="editMode"
|
(click)="$event.stopPropagation()" core-auto-focus [(ngModel)]="newFileName" *ngIf="editMode"
|
||||||
[attr.aria-label]="'core.filename' | translate" />
|
[ariaLabel]="'core.filename' | translate" />
|
||||||
|
|
||||||
<div class="buttons" slot="end">
|
<div class="buttons" slot="end">
|
||||||
<ion-button fill="clear" *ngIf="isIOS && !editMode" (click)="openFile($event, true)"
|
<ion-button fill="clear" *ngIf="isIOS && !editMode" (click)="openFile($event, true)"
|
||||||
[attr.aria-label]="openButtonLabel | translate">
|
[ariaLabel]="openButtonLabel | translate">
|
||||||
<ion-icon slot="icon-only" [name]="openButtonIcon" aria-hidden="true" />
|
<ion-icon slot="icon-only" [name]="openButtonIcon" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ng-container *ngIf="manage">
|
<ng-container *ngIf="manage">
|
||||||
<ion-button *ngIf="editMode" fill="clear" [attr.aria-label]="'core.save' | translate" color="success" type="submit">
|
<ion-button *ngIf="editMode" fill="clear" [ariaLabel]="'core.save' | translate" color="success" type="submit">
|
||||||
<ion-icon name="fas-check" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-check" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button *ngIf="!editMode" fill="clear" [core-suppress-events] (onClick)="activateEdit($event)"
|
<ion-button *ngIf="!editMode" fill="clear" [core-suppress-events] (onClick)="activateEdit($event)"
|
||||||
[attr.aria-label]="'core.edit' | translate">
|
[ariaLabel]="'core.edit' | translate">
|
||||||
<ion-icon name="fas-pen" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-pen" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button *ngIf="!editMode" fill="clear" (click)="deleteFile($event)" [attr.aria-label]="'core.delete' | translate"
|
<ion-button *ngIf="!editMode" fill="clear" (click)="deleteFile($event)" [ariaLabel]="'core.delete' | translate"
|
||||||
color="danger">
|
color="danger">
|
||||||
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -30,11 +30,11 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ion-button *ngIf="showDelete && !message.deleted && message.delete !== false" fill="clear" [@coreSlideInOut]="'fromRight'"
|
<ion-button *ngIf="showDelete && !message.deleted && message.delete !== false" fill="clear" [@coreSlideInOut]="'fromRight'"
|
||||||
color="danger" (click)="delete($event)" [attr.aria-label]="'addon.messages.deletemessage' | translate" class="delete-button">
|
color="danger" (click)="delete($event)" [ariaLabel]="'addon.messages.deletemessage' | translate" class="delete-button">
|
||||||
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button *ngIf="showDelete && message.deleted" fill="clear" [@coreSlideInOut]="'fromRight'" color="danger"
|
<ion-button *ngIf="showDelete && message.deleted" fill="clear" [@coreSlideInOut]="'fromRight'" color="danger"
|
||||||
(click)="undoDelete($event)" [attr.aria-label]="'core.restore' | translate" class="delete-button">
|
(click)="undoDelete($event)" [ariaLabel]="'core.restore' | translate" class="delete-button">
|
||||||
<ion-icon name="fas-rotate-left" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-rotate-left" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<ion-row class="ion-justify-content-between ion-align-items-center ion-no-padding ion-wrap" *ngIf="items.length > 1">
|
<ion-row class="ion-justify-content-between ion-align-items-center ion-no-padding ion-wrap" *ngIf="items.length > 1">
|
||||||
<ion-col class="ion-text-start ion-no-padding core-navigation-arrow" size="auto">
|
<ion-col class="ion-text-start ion-no-padding core-navigation-arrow" size="auto">
|
||||||
<ion-button [disabled]="previousIndex < 0" fill="clear" [attr.aria-label]="previousTitle" (click)="navigate(previousIndex)">
|
<ion-button [disabled]="previousIndex < 0" fill="clear" [ariaLabel]="previousTitle" (click)="navigate(previousIndex)">
|
||||||
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
<core-progress-bar [progress]="progress" [text]="progressText" *ngIf="currentIndex >= 0" />
|
<core-progress-bar [progress]="progress" [text]="progressText" *ngIf="currentIndex >= 0" />
|
||||||
</ion-col>
|
</ion-col>
|
||||||
<ion-col class="ion-text-end ion-no-padding core-navigation-arrow" size="auto">
|
<ion-col class="ion-text-end ion-no-padding core-navigation-arrow" size="auto">
|
||||||
<ion-button [disabled]="nextIndex >= items.length" fill="clear" [attr.aria-label]="nextTitle" (click)="navigate(nextIndex)">
|
<ion-button [disabled]="nextIndex >= items.length" fill="clear" [ariaLabel]="nextTitle" (click)="navigate(nextIndex)">
|
||||||
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ title | translate }}</h1>
|
<h1>{{ title | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
<form (ngSubmit)="submitPassword($event)" #passwordForm>
|
<form (ngSubmit)="submitPassword($event)" #passwordForm>
|
||||||
<div>
|
<div>
|
||||||
<ion-item>
|
<ion-item>
|
||||||
<ion-input [attr.aria-label]="placeholder | translate" class="ion-text-wrap core-ioninput-password" name="password"
|
<ion-input [ariaLabel]="placeholder | translate" class="ion-text-wrap core-ioninput-password" name="password"
|
||||||
type="password" placeholder="{{ placeholder | translate }}" [(ngModel)]="password" core-auto-focus
|
type="password" placeholder="{{ placeholder | translate }}" [(ngModel)]="password" core-auto-focus
|
||||||
[clearOnEdit]="false">
|
[clearOnEdit]="false">
|
||||||
<core-show-password slot="end" />
|
<core-show-password slot="end" />
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
(keyup.meta.enter)="enterKeyUp($event, 'meta')" (keydown.enter)="enterKeyDown($event)"
|
(keyup.meta.enter)="enterKeyUp($event, 'meta')" (keydown.enter)="enterKeyDown($event)"
|
||||||
(keydown.control.enter)="enterKeyDown($event, 'control')" (keydown.meta.enter)="enterKeyDown($event, 'meta')">
|
(keydown.control.enter)="enterKeyDown($event, 'control')" (keydown.meta.enter)="enterKeyDown($event, 'meta')">
|
||||||
</textarea>
|
</textarea>
|
||||||
<ion-button fill="clear" size="large" type="submit" [disabled]="!message || sendDisabled" [attr.aria-label]="'core.send' | translate"
|
<ion-button fill="clear" size="large" type="submit" [disabled]="!message || sendDisabled" [ariaLabel]="'core.send' | translate"
|
||||||
[core-suppress-events] (onClick)="submitForm($event)">
|
[core-suppress-events] (onClick)="submitForm($event)">
|
||||||
<ion-icon name="send" slot="icon-only" aria-hidden="true" flip-rtl />
|
<ion-icon name="send" slot="icon-only" aria-hidden="true" flip-rtl />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<ng-content />
|
<ng-content />
|
||||||
<ion-button fill="clear" [attr.aria-label]="(shown ? 'core.hide' : 'core.show') | translate" core-suppress-events (onClick)="toggle($event)"
|
<ion-button fill="clear" [ariaLabel]="(shown ? 'core.hide' : 'core.show') | translate" core-suppress-events (onClick)="toggle($event)"
|
||||||
(mousedown)="doNotBlur($event)" (keydown)="doNotBlur($event)" (keyup)="toggle($event)">
|
(mousedown)="doNotBlur($event)" (keydown)="doNotBlur($event)" (keyup)="toggle($event)">
|
||||||
<ion-icon [name]="shown ? 'fas-eye-slash' : 'fas-eye'" slot="icon-only" aria-hidden="true" />
|
<ion-icon [name]="shown ? 'fas-eye-slash' : 'fas-eye'" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<ion-spinner *ngIf="!hideUntil" [attr.aria-label]="'core.loading' | translate" />
|
<ion-spinner *ngIf="!hideUntil" [attr.aria-label]="'core.loading' | translate" />
|
||||||
<ng-container *ngIf="hideUntil">
|
<ng-container *ngIf="hideUntil">
|
||||||
<ion-button fill="clear" class="arrow-button" (click)="slidePrev()" [disabled]="!showPrevButton"
|
<ion-button fill="clear" class="arrow-button" (click)="slidePrev()" [disabled]="!showPrevButton"
|
||||||
[attr.aria-label]="'core.previous' | translate">
|
[ariaLabel]="'core.previous' | translate">
|
||||||
<ion-icon *ngIf="showPrevButton" name="fas-chevron-left" aria-hidden="true" slot="icon-only" />
|
<ion-icon *ngIf="showPrevButton" name="fas-chevron-left" aria-hidden="true" slot="icon-only" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<swiper-container #swiperRef [slidesPerView]="swiperOpts.slidesPerView" role="tablist" [attr.aria-label]="description">
|
<swiper-container #swiperRef [slidesPerView]="swiperOpts.slidesPerView" role="tablist" [attr.aria-label]="description">
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</swiper-container>
|
</swiper-container>
|
||||||
<ion-button fill="clear" class="arrow-button" (click)="slideNext()" [disabled]="!showNextButton"
|
<ion-button fill="clear" class="arrow-button" (click)="slideNext()" [disabled]="!showNextButton"
|
||||||
[attr.aria-label]="'core.next' | translate">
|
[ariaLabel]="'core.next' | translate">
|
||||||
<ion-icon *ngIf="showNextButton" name="fas-chevron-right" aria-hidden="true" slot="icon-only" />
|
<ion-icon *ngIf="showNextButton" name="fas-chevron-right" aria-hidden="true" slot="icon-only" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<ion-spinner *ngIf="!hideUntil" [attr.aria-label]="'core.loading' | translate" />
|
<ion-spinner *ngIf="!hideUntil" [attr.aria-label]="'core.loading' | translate" />
|
||||||
<ng-container *ngIf="hideUntil">
|
<ng-container *ngIf="hideUntil">
|
||||||
<ion-button fill="clear" class="arrow-button" (click)="slidePrev()" [disabled]="!showPrevButton"
|
<ion-button fill="clear" class="arrow-button" (click)="slidePrev()" [disabled]="!showPrevButton"
|
||||||
[attr.aria-label]="'core.previous' | translate">
|
[ariaLabel]="'core.previous' | translate">
|
||||||
<ion-icon *ngIf="showPrevButton" name="fas-chevron-left" aria-hidden="true" slot="icon-only" />
|
<ion-icon *ngIf="showPrevButton" name="fas-chevron-left" aria-hidden="true" slot="icon-only" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<swiper-container #swiperRef [slidesPerView]="swiperOpts.slidesPerView" role="tablist" [attr.aria-label]="description">
|
<swiper-container #swiperRef [slidesPerView]="swiperOpts.slidesPerView" role="tablist" [attr.aria-label]="description">
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</swiper-container>
|
</swiper-container>
|
||||||
<ion-button fill="clear" class="arrow-button" (click)="slideNext()" [disabled]="!showNextButton"
|
<ion-button fill="clear" class="arrow-button" (click)="slideNext()" [disabled]="!showNextButton"
|
||||||
[attr.aria-label]="'core.next' | translate">
|
[ariaLabel]="'core.next' | translate">
|
||||||
<ion-icon *ngIf="showNextButton" name="fas-chevron-right" aria-hidden="true" slot="icon-only" />
|
<ion-icon *ngIf="showNextButton" name="fas-chevron-right" aria-hidden="true" slot="icon-only" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
<ion-button (click)="openBlocks()" [userTour]="userTour" [attr.aria-label]="'core.block.opendrawerblocks' | translate" color="secondary">
|
<ion-button (click)="openBlocks()" [userTour]="userTour" [ariaLabel]="'core.block.opendrawerblocks' | translate" color="secondary">
|
||||||
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<ion-header class="no-title">
|
<ion-header class="no-title">
|
||||||
<ion-toolbar>
|
<ion-toolbar>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-xmark" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button *ngIf="canDeleteComments" slot="end" fill="clear" (click)="toggleDelete()"
|
<ion-button *ngIf="canDeleteComments" slot="end" fill="clear" (click)="toggleDelete()"
|
||||||
[attr.aria-label]="'core.toggledelete' | translate">
|
[ariaLabel]="'core.toggledelete' | translate">
|
||||||
<ion-icon *ngIf="!showDelete" name="fas-pen" slot="icon-only" aria-hidden="true" />
|
<ion-icon *ngIf="!showDelete" name="fas-pen" slot="icon-only" aria-hidden="true" />
|
||||||
<ion-icon *ngIf="showDelete" name="fas-check" slot="icon-only" aria-hidden="true" />
|
<ion-icon *ngIf="showDelete" name="fas-check" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'core.contentlinks.chooseaccount' | translate }}</h1>
|
<h1>{{ 'core.contentlinks.chooseaccount' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<core-navbar-buttons slot="end" prepend>
|
<core-navbar-buttons slot="end" prepend>
|
||||||
<ion-button fill="clear" (click)="gotoCourseDownloads()" [attr.aria-label]="'addon.storagemanager.coursedownloads' | translate">
|
<ion-button fill="clear" (click)="gotoCourseDownloads()" [ariaLabel]="'addon.storagemanager.coursedownloads' | translate">
|
||||||
<ion-icon name="fas-cloud-arrow-down" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-cloud-arrow-down" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
@ -31,12 +31,12 @@
|
||||||
<div collapsible-footer appearOnBottom *ngIf="displayCourseIndex && (previousSection || nextSection)" slot="fixed">
|
<div collapsible-footer appearOnBottom *ngIf="displayCourseIndex && (previousSection || nextSection)" slot="fixed">
|
||||||
<div class="core-course-section-nav-buttons safe-area-padding-horizontal list-item-limited-width">
|
<div class="core-course-section-nav-buttons safe-area-padding-horizontal list-item-limited-width">
|
||||||
<ion-button *ngIf="previousSection" (click)="sectionChanged(previousSection)" expand="block"
|
<ion-button *ngIf="previousSection" (click)="sectionChanged(previousSection)" expand="block"
|
||||||
[attr.aria-label]="('core.previous' | translate) + ': ' + previousSection.name" class="ion-text-nowrap">
|
[ariaLabel]="('core.previous' | translate) + ': ' + previousSection.name" class="ion-text-nowrap">
|
||||||
<ion-icon name="fas-arrow-left" slot="start" aria-hidden="true" />
|
<ion-icon name="fas-arrow-left" slot="start" aria-hidden="true" />
|
||||||
<core-format-text [text]="previousSection.name" contextLevel="course" [contextInstanceId]="course.id" />
|
<core-format-text [text]="previousSection.name" contextLevel="course" [contextInstanceId]="course.id" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button *ngIf="nextSection" (click)="sectionChanged(nextSection)" expand="block"
|
<ion-button *ngIf="nextSection" (click)="sectionChanged(nextSection)" expand="block"
|
||||||
[attr.aria-label]="('core.next' | translate) + ': ' + nextSection.name" class="ion-text-nowrap">
|
[ariaLabel]="('core.next' | translate) + ': ' + nextSection.name" class="ion-text-nowrap">
|
||||||
<core-format-text [text]="nextSection.name" contextLevel="course" [contextInstanceId]="course.id" />
|
<core-format-text [text]="nextSection.name" contextLevel="course" [contextInstanceId]="course.id" />
|
||||||
<ion-icon name="fas-arrow-right" slot="end" aria-hidden="true" />
|
<ion-icon name="fas-arrow-right" slot="end" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1 id="core-course-section-selector-label">{{ 'core.course.courseindex' | translate }}</h1>
|
<h1 id="core-course-section-selector-label">{{ 'core.course.courseindex' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -20,14 +20,14 @@
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
<ng-container *ngIf="!completion.isautomatic">
|
<ng-container *ngIf="!completion.isautomatic">
|
||||||
<ion-button *ngIf="completed" color="success" [attr.aria-label]="accessibleDescription" (click)="completionClicked($event)"
|
<ion-button *ngIf="completed" color="success" [ariaLabel]="accessibleDescription" (click)="completionClicked($event)"
|
||||||
class="completioninfo completion_complete chip">
|
class="completioninfo completion_complete chip">
|
||||||
<ion-icon name="fas-check" slot="start" aria-hidden="true" />
|
<ion-icon name="fas-check" slot="start" aria-hidden="true" />
|
||||||
{{ 'core.course.completion_manual:done' | translate }}
|
{{ 'core.course.completion_manual:done' | translate }}
|
||||||
<ion-icon *ngIf="completion.offline" name="fas-arrows-rotate"
|
<ion-icon *ngIf="completion.offline" name="fas-arrows-rotate"
|
||||||
[attr.aria-label]="'core.course.manualcompletionnotsynced' | translate" slot="end" />
|
[attr.aria-label]="'core.course.manualcompletionnotsynced' | translate" slot="end" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button *ngIf="!completed" fill="outline" [attr.aria-label]="accessibleDescription" (click)="completionClicked($event)"
|
<ion-button *ngIf="!completed" fill="outline" [ariaLabel]="accessibleDescription" (click)="completionClicked($event)"
|
||||||
class="completioninfo completion_incomplete chip">
|
class="completioninfo completion_incomplete chip">
|
||||||
{{ 'core.course.completion_manual:markdone' | translate }}
|
{{ 'core.course.completion_manual:markdone' | translate }}
|
||||||
<ion-icon *ngIf="completion.offline" name="fas-arrows-rotate"
|
<ion-icon *ngIf="completion.offline" name="fas-arrows-rotate"
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
<ng-container *ngIf="completion && !completion.isautomatic">
|
<ng-container *ngIf="completion && !completion.isautomatic">
|
||||||
<ng-container *ngIf="completion.istrackeduser">
|
<ng-container *ngIf="completion.istrackeduser">
|
||||||
<ion-button *ngIf="completion.state" color="success" [attr.aria-label]="accessibleDescription" (click)="completionClicked($event)"
|
<ion-button *ngIf="completion.state" color="success" [ariaLabel]="accessibleDescription" (click)="completionClicked($event)"
|
||||||
class="ion-text-wrap chip">
|
class="ion-text-wrap chip">
|
||||||
<ion-icon name="fas-check" slot="start" aria-hidden="true" />
|
<ion-icon name="fas-check" slot="start" aria-hidden="true" />
|
||||||
{{ 'core.course.completion_manual:done' | translate }}
|
{{ 'core.course.completion_manual:done' | translate }}
|
||||||
<ion-icon *ngIf="completion?.offline" name="fas-arrows-rotate"
|
<ion-icon *ngIf="completion?.offline" name="fas-arrows-rotate"
|
||||||
[attr.aria-label]="'core.course.manualcompletionnotsynced' | translate" slot="end" />
|
[attr.aria-label]="'core.course.manualcompletionnotsynced' | translate" slot="end" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button *ngIf="!completion.state" fill="outline" [attr.aria-label]="accessibleDescription" (click)="completionClicked($event)"
|
<ion-button *ngIf="!completion.state" fill="outline" [ariaLabel]="accessibleDescription" (click)="completionClicked($event)"
|
||||||
class="ion-text-wrap chip">
|
class="ion-text-wrap chip">
|
||||||
{{ 'core.course.completion_manual:markdone' | translate }}
|
{{ 'core.course.completion_manual:markdone' | translate }}
|
||||||
<ion-icon *ngIf="completion?.offline" name="fas-arrows-rotate"
|
<ion-icon *ngIf="completion?.offline" name="fas-arrows-rotate"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<ion-header class="no-title">
|
<ion-header class="no-title">
|
||||||
<ion-toolbar>
|
<ion-toolbar>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
</h1>
|
</h1>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-button fill="clear" *ngIf="displayOptions.displayOpenInBrowser && externalUrl" [href]="externalUrl" core-link
|
<ion-button fill="clear" *ngIf="displayOptions.displayOpenInBrowser && externalUrl" [href]="externalUrl" core-link
|
||||||
[showBrowserWarning]="false" [attr.aria-label]="'core.openinbrowser' | translate" slot="end" [class.hidden]="!isTeacher"
|
[showBrowserWarning]="false" [ariaLabel]="'core.openinbrowser' | translate" slot="end" [class.hidden]="!isTeacher"
|
||||||
class="core-module-oib-button">
|
class="core-module-oib-button">
|
||||||
<ion-icon name="fas-up-right-from-square" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-up-right-from-square" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
@ -164,7 +164,7 @@
|
||||||
<ion-badge color="light">{{ size | coreBytesToSize }}</ion-badge>
|
<ion-badge color="light">{{ size | coreBytesToSize }}</ion-badge>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-button *ngIf="!removeFilesLoading" [disabled]="prefetchLoading" (click)="removeFiles()" color="danger" fill="clear"
|
<ion-button *ngIf="!removeFilesLoading" [disabled]="prefetchLoading" (click)="removeFiles()" color="danger" fill="clear"
|
||||||
[attr.aria-label]="'core.clearstoreddata' | translate:{$a: size | coreBytesToSize}" slot="end">
|
[ariaLabel]="'core.clearstoreddata' | translate:{$a: size | coreBytesToSize}" slot="end">
|
||||||
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-spinner *ngIf="removeFilesLoading" slot="end" aria-hidden="true" />
|
<ion-spinner *ngIf="removeFilesLoading" slot="end" aria-hidden="true" />
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
<ion-title />
|
<ion-title />
|
||||||
<ion-buttons slot="end" *ngIf="isModal">
|
<ion-buttons slot="end" *ngIf="isModal">
|
||||||
<ion-button fill="clear" (click)="closeModal()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="closeModal()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
</ion-chip>
|
</ion-chip>
|
||||||
</ion-label>
|
</ion-label>
|
||||||
<ion-button *ngIf="displayOpenInBrowser" fill="clear" [href]="courseUrl" core-link [showBrowserWarning]="false"
|
<ion-button *ngIf="displayOpenInBrowser" fill="clear" [href]="courseUrl" core-link [showBrowserWarning]="false"
|
||||||
[attr.aria-label]="'core.openinbrowser' | translate" slot="end" [class.hidden]="!isTeacher"
|
[ariaLabel]="'core.openinbrowser' | translate" slot="end" [class.hidden]="!isTeacher"
|
||||||
class="core-course-oib-button">
|
class="core-course-oib-button">
|
||||||
<ion-icon name="fas-up-right-from-square" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-up-right-from-square" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
</ion-title>
|
</ion-title>
|
||||||
|
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="openCourseSummary()" [attr.aria-label]="'core.course.coursesummary' | translate">
|
<ion-button fill="clear" (click)="openCourseSummary()" [ariaLabel]="'core.course.coursesummary' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<!-- Add an empty context menu so tab pages can add items, otherwise the menu disappears in some cases. -->
|
<!-- Add an empty context menu so tab pages can add items, otherwise the menu disappears in some cases. -->
|
||||||
|
|
|
@ -11,10 +11,10 @@
|
||||||
|
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" *ngIf="displayOpenInBrowser && module.url && module.uservisible && !unsupported" [href]="module.url"
|
<ion-button fill="clear" *ngIf="displayOpenInBrowser && module.url && module.uservisible && !unsupported" [href]="module.url"
|
||||||
core-link [showBrowserWarning]="false" [attr.aria-label]="'core.openinbrowser' | translate">
|
core-link [showBrowserWarning]="false" [ariaLabel]="'core.openinbrowser' | translate">
|
||||||
<ion-icon name="fas-up-right-from-square" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-up-right-from-square" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [attr.aria-label]="'core.info' | translate">
|
<ion-button fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
<div class="core-button-spinner" *ngIf="courseOptionMenuEnabled">
|
<div class="core-button-spinner" *ngIf="courseOptionMenuEnabled">
|
||||||
<!-- Options menu. -->
|
<!-- Options menu. -->
|
||||||
<ion-button fill="clear" (click)="showCourseOptionsMenu($event)" *ngIf="!showSpinner"
|
<ion-button fill="clear" (click)="showCourseOptionsMenu($event)" *ngIf="!showSpinner"
|
||||||
[attr.aria-label]="('core.displayoptions' | translate)">
|
[ariaLabel]="('core.displayoptions' | translate)">
|
||||||
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<core-navbar-buttons slot="end" prepend>
|
<core-navbar-buttons slot="end" prepend>
|
||||||
<ion-button *ngIf="searchEnabled" (click)="openSearch()" [attr.aria-label]="'core.courses.searchcourses' | translate">
|
<ion-button *ngIf="searchEnabled" (click)="openSearch()" [ariaLabel]="'core.courses.searchcourses' | translate">
|
||||||
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="fas-magnifying-glass" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</core-navbar-buttons>
|
</core-navbar-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'core.dataprivacy.contactdataprotectionofficer' | translate }}</h1>
|
<h1>{{ 'core.dataprivacy.contactdataprotectionofficer' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="close()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="close()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<h1>{{ 'core.dataprivacy.createnewdatarequest' | translate }}</h1>
|
<h1>{{ 'core.dataprivacy.createnewdatarequest' | translate }}</h1>
|
||||||
</ion-title>
|
</ion-title>
|
||||||
<ion-buttons slot="end">
|
<ion-buttons slot="end">
|
||||||
<ion-button fill="clear" (click)="close()" [attr.aria-label]="'core.close' | translate">
|
<ion-button fill="clear" (click)="close()" [ariaLabel]="'core.close' | translate">
|
||||||
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
<ion-icon slot="icon-only" name="fas-xmark" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-buttons>
|
</ion-buttons>
|
||||||
|
|
|
@ -33,12 +33,12 @@
|
||||||
<ion-row>
|
<ion-row>
|
||||||
<ion-col />
|
<ion-col />
|
||||||
<ion-col class="ion-text-center">
|
<ion-col class="ion-text-center">
|
||||||
<ion-button fill="clear" *ngIf="!hasCaptured" (click)="actionClicked()" [attr.aria-label]="title">
|
<ion-button fill="clear" *ngIf="!hasCaptured" (click)="actionClicked()" [ariaLabel]="title">
|
||||||
<ion-icon *ngIf="!isCapturing && isVideo" name="fas-video" slot="icon-only" aria-hidden="true" />
|
<ion-icon *ngIf="!isCapturing && isVideo" name="fas-video" slot="icon-only" aria-hidden="true" />
|
||||||
<ion-icon *ngIf="isImage" name="fas-camera" slot="icon-only" aria-hidden="true" />
|
<ion-icon *ngIf="isImage" name="fas-camera" slot="icon-only" aria-hidden="true" />
|
||||||
<ion-icon *ngIf="isCapturing" name="fas-square" slot="icon-only" aria-hidden="true" />
|
<ion-icon *ngIf="isCapturing" name="fas-square" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
<ion-button fill="clear" *ngIf="hasCaptured" (click)="discard()" [attr.aria-label]="'core.discard' | translate">
|
<ion-button fill="clear" *ngIf="hasCaptured" (click)="discard()" [ariaLabel]="'core.discard' | translate">
|
||||||
<ion-icon color="danger" name="fas-trash" slot="icon-only" aria-hidden="true" />
|
<ion-icon color="danger" name="fas-trash" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</ion-col>
|
</ion-col>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<header>
|
<header>
|
||||||
<h1>{{ 'core.fileuploader.audiotitle' | translate }}</h1>
|
<h1>{{ 'core.fileuploader.audiotitle' | translate }}</h1>
|
||||||
|
|
||||||
<ion-button shape="round" fill="clear" [attr.aria-label]="'core.close' | translate" (click)="cancel()">
|
<ion-button shape="round" fill="clear" [ariaLabel]="'core.close' | translate" (click)="cancel()">
|
||||||
<ion-icon slot="icon-only" name="close" />
|
<ion-icon slot="icon-only" name="close" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</header>
|
</header>
|
||||||
|
@ -12,8 +12,7 @@
|
||||||
<div *ngIf="status === 'empty'" class="core-audio-recorder--wrapper">
|
<div *ngIf="status === 'empty'" class="core-audio-recorder--wrapper">
|
||||||
<p>{{ 'core.fileuploader.startrecordinginstructions' | translate }}</p>
|
<p>{{ 'core.fileuploader.startrecordinginstructions' | translate }}</p>
|
||||||
|
|
||||||
<ion-button shape="round" color="danger" [attr.aria-label]="'core.fileuploader.startrecording' | translate"
|
<ion-button shape="round" color="danger" [ariaLabel]="'core.fileuploader.startrecording' | translate" (click)="startRecording()">
|
||||||
(click)="startRecording()">
|
|
||||||
<ion-icon slot="icon-only" name="fas-microphone" />
|
<ion-icon slot="icon-only" name="fas-microphone" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -31,18 +30,18 @@
|
||||||
|
|
||||||
<div class="core-audio-recorder--control">
|
<div class="core-audio-recorder--control">
|
||||||
<ion-button *ngIf="status === 'recording-ongoing'" shape="round" fill="clear"
|
<ion-button *ngIf="status === 'recording-ongoing'" shape="round" fill="clear"
|
||||||
[attr.aria-label]="'core.fileuploader.pauserecording' | translate" (click)="pauseRecording()">
|
[ariaLabel]="'core.fileuploader.pauserecording' | translate" (click)="pauseRecording()">
|
||||||
<ion-icon slot="icon-only" name="fas-circle-pause" />
|
<ion-icon slot="icon-only" name="fas-circle-pause" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<ion-button *ngIf="status === 'recording-paused'" [attr.aria-label]="'core.fileuploader.resumerecording' | translate"
|
<ion-button *ngIf="status === 'recording-paused'" [ariaLabel]="'core.fileuploader.resumerecording' | translate"
|
||||||
shape="round" fill="clear" color="danger" (click)="resumeRecording()">
|
shape="round" fill="clear" color="danger" (click)="resumeRecording()">
|
||||||
<ion-icon slot="icon-only" name="fas-microphone" />
|
<ion-icon slot="icon-only" name="fas-microphone" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="core-audio-recorder--control">
|
<div class="core-audio-recorder--control">
|
||||||
<ion-button shape="round" fill="clear" [attr.aria-label]="'core.fileuploader.stoprecording' | translate"
|
<ion-button shape="round" fill="clear" [ariaLabel]="'core.fileuploader.stoprecording' | translate"
|
||||||
(click)="stopRecording()">
|
(click)="stopRecording()">
|
||||||
<ion-icon slot="icon-only" name="fa-check" />
|
<ion-icon slot="icon-only" name="fa-check" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
@ -57,7 +56,7 @@
|
||||||
|
|
||||||
<div class="core-audio-recorder--controls">
|
<div class="core-audio-recorder--controls">
|
||||||
<div class="core-audio-recorder--control">
|
<div class="core-audio-recorder--control">
|
||||||
<ion-button shape="round" fill="clear" color="danger" [attr.aria-label]="'core.fileuploader.discardrecording' | translate"
|
<ion-button shape="round" fill="clear" color="danger" [ariaLabel]="'core.fileuploader.discardrecording' | translate"
|
||||||
(click)="discardRecording()">
|
(click)="discardRecording()">
|
||||||
<ion-icon slot="icon-only" name="fas-trash" />
|
<ion-icon slot="icon-only" name="fas-trash" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
<div *ngIf="!showPackage && urlParams" class="core-h5p-placeholder">
|
<div *ngIf="!showPackage && urlParams" class="core-h5p-placeholder">
|
||||||
<ion-button class="core-h5p-placeholder-play-button" fill="clear" (click)="play($event)"
|
<ion-button class="core-h5p-placeholder-play-button" fill="clear" (click)="play($event)" [ariaLabel]="'core.h5p.play' | translate">
|
||||||
[attr.aria-label]="'core.h5p.play' | translate">
|
|
||||||
<ion-icon name="far-circle-play" slot="icon-only" aria-hidden="true" />
|
<ion-icon name="far-circle-play" slot="icon-only" aria-hidden="true" />
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
||||||
<div class="core-h5p-placeholder-download-container">
|
<div class="core-h5p-placeholder-download-container">
|
||||||
<core-download-refresh [status]="state" [enabled]="canDownload$ | async" [loading]="calculating$ | async" [canTrustDownload]="true"
|
<core-download-refresh [status]="state" [enabled]="canDownload$ | async" [loading]="calculating$ | async" [canTrustDownload]="true"
|
||||||
(action)="download()" />
|
(action)="download()" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
<div class="core-login-methods" *ngIf="loginMethods.length">
|
<div class="core-login-methods" *ngIf="loginMethods.length">
|
||||||
<ion-button [fill]="'outline'" class="ion-text-wrap ion-margin" *ngFor="let method of loginMethods" (click)="method.action()"
|
<ion-button [fill]="'outline'" class="ion-text-wrap ion-margin" *ngFor="let method of loginMethods" (click)="method.action()"
|
||||||
[attr.aria-label]="method.name" expand="block">
|
[ariaLabel]="method.name" expand="block">
|
||||||
<ion-icon *ngIf="method.icon" [name]="method.icon" slot="start" />
|
<ion-icon *ngIf="method.icon" [name]="method.icon" slot="start" />
|
||||||
<ion-label>{{ method.name }}</ion-label>
|
<ion-label>{{ method.name }}</ion-label>
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
<ion-list *ngIf="identityProviders.length" class="core-login-identity-providers">
|
<ion-list *ngIf="identityProviders.length" class="core-login-identity-providers">
|
||||||
<h2 class="item-heading">{{ 'core.login.potentialidps' | translate }}</h2>
|
<h2 class="item-heading">{{ 'core.login.potentialidps' | translate }}</h2>
|
||||||
<ion-button [fill]="'outline'" *ngFor="let provider of identityProviders" class="ion-text-wrap ion-margin core-oauth-provider"
|
<ion-button [fill]="'outline'" *ngFor="let provider of identityProviders" class="ion-text-wrap ion-margin core-oauth-provider"
|
||||||
(click)="oauthClicked(provider)" [attr.aria-label]="provider.name" expand="block">
|
(click)="oauthClicked(provider)" [ariaLabel]="provider.name" expand="block">
|
||||||
<img *ngIf="provider.iconurl" [src]="provider.iconurl" alt="" width="32" height="32" slot="start" aria-hidden="true">
|
<img *ngIf="provider.iconurl" [src]="provider.iconurl" alt="" width="32" height="32" slot="start" aria-hidden="true">
|
||||||
<ion-label>{{ provider.name }}</ion-label>
|
<ion-label>{{ provider.name }}</ion-label>
|
||||||
</ion-button>
|
</ion-button>
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue