commit
7d862ea37d
|
@ -6,7 +6,7 @@
|
|||
<!-- Download all courses. -->
|
||||
<div *ngIf="downloadCoursesEnabled && filteredCourses.length > 0" class="core-button-spinner">
|
||||
<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-button>
|
||||
<ion-badge class="core-course-download-courses-progress" *ngIf="prefetchCoursesData.badge" role="progressbar"
|
||||
|
@ -85,11 +85,11 @@
|
|||
</ion-col>
|
||||
<ion-col size="auto" *ngIf="isLayoutSwitcherAvailable">
|
||||
<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-button>
|
||||
<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-button>
|
||||
</ion-col>
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
</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()">
|
||||
{{ 'core.save' | translate }}
|
||||
</ion-button>
|
||||
|
|
|
@ -41,8 +41,8 @@
|
|||
</h3>
|
||||
|
||||
@if (entry.userid === currentUserId && optionsAvailable) {
|
||||
<ion-button fill="clear" [attr.aria-label]="'core.displayoptions' | translate"
|
||||
(click)="showEntryActionsPopover($event, entry)" class="entry-options">
|
||||
<ion-button fill="clear" [ariaLabel]="'core.displayoptions' | translate" (click)="showEntryActionsPopover($event, entry)"
|
||||
class="entry-options">
|
||||
<ion-icon slot="icon-only" aria-hidden="true" name="ellipsis-vertical" />
|
||||
</ion-button>
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<ion-grid class="ion-no-padding addon-calendar-navigation">
|
||||
<ion-row class="ion-align-items-center">
|
||||
<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-button>
|
||||
</ion-col>
|
||||
|
@ -23,7 +23,7 @@
|
|||
</h2>
|
||||
</ion-col>
|
||||
<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-button>
|
||||
</ion-col>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<ion-header class="no-title">
|
||||
<ion-toolbar>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
:host {
|
||||
.addon-calendar-event {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
|
@ -36,7 +36,7 @@ import { Translate } from '@singletons';
|
|||
@Component({
|
||||
selector: 'addon-calendar-upcoming-events',
|
||||
templateUrl: 'addon-calendar-upcoming-events.html',
|
||||
styleUrls: ['../../calendar-common.scss', 'upcoming-events.scss'],
|
||||
styleUrls: ['../../calendar-common.scss'],
|
||||
})
|
||||
export class AddonCalendarUpcomingEventsComponent implements OnInit, DoCheck, OnDestroy {
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<h1>{{ 'addon.calendar.calendarevents' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
<core-context-menu>
|
||||
|
@ -31,7 +31,7 @@
|
|||
<ion-grid class="ion-no-padding safe-area-padding">
|
||||
<ion-row class="ion-align-items-center">
|
||||
<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-button>
|
||||
</ion-col>
|
||||
|
@ -39,7 +39,7 @@
|
|||
<h2>{{ periodName }}</h2>
|
||||
</ion-col>
|
||||
<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-button>
|
||||
</ion-col>
|
||||
|
|
|
@ -117,8 +117,7 @@
|
|||
<ion-label>
|
||||
<p class="item-heading">{{ 'addon.calendar.reminders' | translate }}</p>
|
||||
</ion-label>
|
||||
<ion-button fill="clear" (click)="addReminder()" slot="end"
|
||||
[attr.aria-label]="'addon.calendar.setnewreminder' | translate">
|
||||
<ion-button fill="clear" (click)="addReminder()" slot="end" [ariaLabel]="'addon.calendar.setnewreminder' | translate">
|
||||
<ion-icon name="fas-plus" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
</ion-item-divider>
|
||||
|
@ -126,7 +125,7 @@
|
|||
<ion-label>
|
||||
<p>{{ reminder.label }}</p>
|
||||
</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-button>
|
||||
</ion-item>
|
||||
|
|
|
@ -149,7 +149,7 @@
|
|||
<p class="item-heading">{{ reminder.label }}</p>
|
||||
<p *ngIf="reminder.sublabel">{{ reminder.sublabel }}</p>
|
||||
</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">
|
||||
<ion-icon name="fas-trash" color="danger" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<p *ngIf="!showCalendar" class="subheading">{{ 'addon.calendar.upcomingevents' | translate }}</p>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
<core-context-menu>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'addon.messages.groupinfo' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<h1>{{ 'addon.messages.contacts' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
<!-- 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>
|
||||
</ion-title>
|
||||
<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-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-button>
|
||||
<!-- Add an empty context menu so split view pages can add items, otherwise the menu disappears in some cases. -->
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ plugin.name }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -267,7 +267,7 @@
|
|||
</p>
|
||||
</ion-label>
|
||||
<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-button>
|
||||
</ion-item>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
</ion-label>
|
||||
<div slot="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-button>
|
||||
</div>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'addon.mod_book.toc' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'addon.mod_chat.currentusers' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -1,34 +1,33 @@
|
|||
<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-button>
|
||||
|
||||
<ion-button size="small" *ngIf="action === 'more'" fill="clear" (click)="viewEntry()"
|
||||
[attr.aria-label]="'addon.mod_data.showmore' | translate">
|
||||
<ion-button size="small" *ngIf="action === 'more'" fill="clear" (click)="viewEntry()" [ariaLabel]="'addon.mod_data.showmore' | translate">
|
||||
<ion-icon name="fas-magnifying-glass-plus" slot="icon-only" aria-hidden="true" />
|
||||
</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-button>
|
||||
|
||||
<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-button>
|
||||
|
||||
<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-button>
|
||||
|
||||
<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-button>
|
||||
|
||||
<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-button>
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
<core-context-menu>
|
||||
|
@ -10,7 +10,7 @@
|
|||
(action)="gotoEntry(firstEntry)" />
|
||||
</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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'addon.mod_data.search' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
@ -19,7 +19,7 @@
|
|||
<form (ngSubmit)="searchEntries($event)" [formGroup]="searchForm" #searchFormEl>
|
||||
<ion-list class="ion-no-margin">
|
||||
<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" />
|
||||
</ion-item>
|
||||
<ion-item class="ion-text-wrap">
|
||||
|
|
|
@ -48,15 +48,14 @@
|
|||
<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-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)">
|
||||
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
</ion-col>
|
||||
<ion-col class="ion-text-center" />
|
||||
<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"
|
||||
(click)="gotoEntry(offset! + 1)">
|
||||
<ion-button [disabled]="!hasNext" fill="clear" [ariaLabel]=" 'core.next' | translate" (click)="gotoEntry(offset! + 1)">
|
||||
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
</ion-col>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-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-button>
|
||||
<!-- 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-label>
|
||||
<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-button>
|
||||
</ion-item>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
[attr.aria-label]="'addon.mod_forum.unread' | translate">
|
||||
<ion-icon name="fas-circle" color="primary" aria-hidden="true" />
|
||||
</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)">
|
||||
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
@ -45,7 +45,7 @@
|
|||
[attr.aria-label]="'addon.mod_forum.unread' | translate">
|
||||
<ion-icon name="fas-circle" color="primary" aria-hidden="true" />
|
||||
</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)">
|
||||
<ion-icon name="ellipsis-vertical" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 24 KiB |
|
@ -1,16 +1,15 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<core-navbar-buttons slot="end">
|
||||
<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-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-button>
|
||||
|
||||
<ion-button *ngIf="!showLoading" fill="clear" (click)="openModuleSummary()" aria-haspopup="true"
|
||||
[attr.aria-label]="'core.info' | translate">
|
||||
<ion-button *ngIf="!showLoading" fill="clear" (click)="openModuleSummary()" aria-haspopup="true" [ariaLabel]="'core.info' | translate">
|
||||
<ion-icon name="fas-circle-info" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -67,11 +67,10 @@
|
|||
<ion-item *ngIf="canDelete || canEdit">
|
||||
<div slot="end">
|
||||
<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-button>
|
||||
<ion-button *ngIf="canEdit" fill="clear" (click)="editEntry()"
|
||||
[attr.aria-label]="'addon.mod_glossary.editentry' | translate">
|
||||
<ion-button *ngIf="canEdit" fill="clear" (click)="editEntry()" [ariaLabel]="'addon.mod_glossary.editentry' | translate">
|
||||
<ion-icon slot="icon-only" name="fas-pen" aria-hidden="true" />
|
||||
</ion-button>
|
||||
</div>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
(action)="viewAllAttempts()" iconAction="fas-chart-bar" />
|
||||
</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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'addon.mod_imscp.toc' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
</ion-title>
|
||||
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ pageInstance?.lesson?.name }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
</h1>
|
||||
</ion-title>
|
||||
<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()">
|
||||
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
@ -72,7 +72,7 @@
|
|||
<!-- Short answer. -->
|
||||
<ion-item class="ion-text-wrap" *ngSwitchCase="'shortanswer'">
|
||||
<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" />
|
||||
</ion-item>
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -36,6 +36,9 @@
|
|||
min-height: 60px;
|
||||
padding-top: var(--mdl-spacing-2);
|
||||
padding-bottom: var(--mdl-spacing-2);
|
||||
@include margin-horizontal(var(--mdl-spacing-2), null);
|
||||
|
||||
font: var(--mdl-typography-body-font-md);
|
||||
|
||||
p {
|
||||
margin: 0px;
|
||||
|
@ -44,13 +47,15 @@
|
|||
}
|
||||
|
||||
ion-accordion-group {
|
||||
border-top: 1px solid var(--stroke);
|
||||
|
||||
.accordion-expanded .addon-mod_quiz-attempt-title-info,
|
||||
.accordion-expanding .addon-mod_quiz-attempt-title-info {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font: var(--mdl-typography-subtitle-font-md);
|
||||
}
|
||||
|
||||
hr {
|
||||
background-color: var(--stroke);
|
||||
height: 1px;
|
||||
|
@ -58,19 +63,11 @@
|
|||
}
|
||||
|
||||
ion-accordion:nth-child(odd) {
|
||||
background-color: var(--core-table-odd-cell-background);
|
||||
|
||||
::ng-deep ion-item {
|
||||
--background: var(--core-table-odd-cell-background);
|
||||
}
|
||||
--ion-item-background: var(--core-table-odd-cell-background);
|
||||
}
|
||||
|
||||
ion-accordion:nth-child(even) {
|
||||
background-color: var(--core-table-even-cell-background);
|
||||
|
||||
::ng-deep ion-item {
|
||||
--background: var(--core-table-even-cell-background);
|
||||
}
|
||||
--ion-item-background: var(--core-table-even-cell-background);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'addon.mod_quiz.quiznavigation' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ title | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -12,11 +12,10 @@
|
|||
|
||||
<ion-buttons slot="end">
|
||||
<ion-button fill="clear" id="addon-mod_quiz-connection-error-button" [hidden]="!autoSaveError"
|
||||
(click)="showConnectionError($event)" [attr.aria-label]="'addon.mod_quiz.connectionerror' | translate"
|
||||
aria-haspopup="dialog">
|
||||
(click)="showConnectionError($event)" [ariaLabel]="'addon.mod_quiz.connectionerror' | translate" aria-haspopup="dialog">
|
||||
<ion-icon name="fas-circle-exclamation" slot="icon-only" aria-hidden="true" />
|
||||
</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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
</ion-title>
|
||||
|
||||
<ion-buttons slot="end">
|
||||
<ion-button fill="clear" *ngIf="navigation.length" [attr.aria-label]="'addon.mod_quiz.opentoc' | translate"
|
||||
(click)="openNavigation()" aria-haspopup="true">
|
||||
<ion-button fill="clear" *ngIf="navigation.length" [ariaLabel]="'addon.mod_quiz.opentoc' | translate" (click)="openNavigation()"
|
||||
aria-haspopup="true">
|
||||
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
</ion-buttons>
|
||||
|
@ -44,7 +44,7 @@
|
|||
<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-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)">
|
||||
<ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
@ -57,7 +57,7 @@
|
|||
</ion-button>
|
||||
</ion-col>
|
||||
<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)">
|
||||
<ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'addon.mod_scorm.toc' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
</ion-title>
|
||||
<ion-buttons slot="end">
|
||||
<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">
|
||||
<ion-icon name="fas-bookmark" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<core-navbar-buttons slot="end">
|
||||
<!-- 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">
|
||||
<ion-icon *ngIf="!groupWiki" name="fas-user" aria-hidden="true" />
|
||||
<ion-icon *ngIf="groupWiki" name="fas-users" aria-hidden="true" />
|
||||
</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">
|
||||
<ion-icon name="fas-map" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
@ -19,7 +19,7 @@
|
|||
(action)="goToNewPage()" />
|
||||
</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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'addon.mod_wiki.map' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<core-loading [hideUntil]="loaded">
|
||||
<form [formGroup]="pageForm" #editPageForm *ngIf="loaded">
|
||||
<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" />
|
||||
</ion-item>
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<!-- Buttons to add to the header. -->
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'addon.mod_workshop.userplan' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<h1>{{ 'addon.mod_workshop.editsubmission' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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 }}
|
||||
</ion-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
</ion-title>
|
||||
<ion-buttons slot="end" [hidden]="!loaded">
|
||||
<ion-button *ngIf="assessmentId && access.assessingallowed" fill="clear" (click)="saveAssessment()"
|
||||
[attr.aria-label]="'core.save' | translate">
|
||||
[ariaLabel]="'core.save' | translate">
|
||||
{{ 'core.save' | translate }}
|
||||
</ion-button>
|
||||
<ion-button *ngIf="canAddFeedback" fill="clear" (click)="saveEvaluation()">
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'addon.notes.addnewnote' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
@ -20,7 +20,7 @@
|
|||
</ion-select>
|
||||
</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" />
|
||||
</ion-item>
|
||||
<div class="ion-padding">
|
||||
|
|
|
@ -11,8 +11,7 @@
|
|||
</ion-toolbar>
|
||||
</ion-header>
|
||||
<core-navbar-buttons slot="end">
|
||||
<ion-button [hidden]="!canDeleteNotes" slot="end" fill="clear" (click)="toggleDelete()"
|
||||
[attr.aria-label]="'core.toggledelete' | translate">
|
||||
<ion-button [hidden]="!canDeleteNotes" slot="end" fill="clear" (click)="toggleDelete()" [ariaLabel]="'core.toggledelete' | translate">
|
||||
<ion-icon name="fas-pen" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
<core-context-menu>
|
||||
|
@ -80,12 +79,12 @@
|
|||
</span>
|
||||
</p>
|
||||
<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-button>
|
||||
<ion-button *ngIf="showDelete && !note.deleted && (type !== 'personal' || note.usermodified === currentUserId)"
|
||||
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-button>
|
||||
</ion-item>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
[contextInstanceId]="contextInstanceId" [courseId]="courseId" (afterRender)="textRendered()" />
|
||||
</ion-label>
|
||||
</ion-item>
|
||||
<div class="fake-ion-item ion-text-wrap" [hidden]="!question.loaded">
|
||||
<div class="fake-ion-item ion-text-wrap" [class.readonly]="question.readOnly" [hidden]="!question.loaded">
|
||||
<core-format-text *ngIf="question.ddArea" [adaptImg]="false" [component]="component" [componentId]="componentId"
|
||||
[text]="question.ddArea" [filter]="false" (afterRender)="ddAreaRendered()" />
|
||||
</div>
|
||||
|
|
|
@ -4,12 +4,20 @@
|
|||
:host {
|
||||
--ddimageortext-border-drop: var(--medium);
|
||||
--ddimageortext-draghome-background: var(--core-dd-question-color-2);
|
||||
--cursor: pointer;
|
||||
|
||||
.readonly,
|
||||
core-format-text ::ng-deep .readonly {
|
||||
--cursor: auto;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.addon-qtype-ddimageortext-container {
|
||||
min-height: 80px; // To display the loading.
|
||||
}
|
||||
|
||||
|
||||
core-format-text ::ng-deep {
|
||||
|
||||
div.ddarea {
|
||||
|
@ -39,7 +47,7 @@ core-format-text ::ng-deep {
|
|||
|
||||
div.draghome {
|
||||
border: 1px solid var(--core-dd-question-border);
|
||||
cursor: pointer;
|
||||
cursor: var(--cursor);
|
||||
background-color: var(--ddimageortext-draghome-background);
|
||||
display: inline-block;
|
||||
height: auto;
|
||||
|
@ -78,23 +86,17 @@ core-format-text ::ng-deep {
|
|||
|
||||
.drag {
|
||||
border: 1px solid var(--core-dd-question-border);
|
||||
cursor: pointer;
|
||||
cursor: var(--cursor);
|
||||
z-index: 2;
|
||||
}
|
||||
.drag.placed {
|
||||
border: 1px solid var(--ddimageortext-border-drop);
|
||||
}
|
||||
.dragitems.readonly .drag {
|
||||
cursor: auto;
|
||||
}
|
||||
.dragitems>div {
|
||||
.dragitems > div {
|
||||
clear: both;
|
||||
}
|
||||
.dragitems {
|
||||
cursor: pointer;
|
||||
}
|
||||
.dragitems.readonly {
|
||||
cursor: auto;
|
||||
cursor: var(--cursor);
|
||||
}
|
||||
.drag img {
|
||||
display: block;
|
||||
|
@ -106,10 +108,7 @@ core-format-text ::ng-deep {
|
|||
border: 1px solid var(--ddimageortext-border-drop);
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
cursor: pointer;
|
||||
}
|
||||
.readonly .dropzone {
|
||||
cursor: auto;
|
||||
cursor: var(--cursor);
|
||||
}
|
||||
|
||||
div.dragitems div.draghome, div.dragitems div.drag {
|
||||
|
|
|
@ -1,4 +1,13 @@
|
|||
// Style ddmarker content a bit. Almost all these styles are copied from Moodle.
|
||||
:host {
|
||||
--cursor: pointer;
|
||||
|
||||
.readonly,
|
||||
core-format-text ::ng-deep .readonly {
|
||||
--cursor: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.addon-qtype-ddmarker-container {
|
||||
min-height: 80px; // To display the loading.
|
||||
}
|
||||
|
@ -33,18 +42,11 @@ core-format-text ::ng-deep {
|
|||
|
||||
.dragitems, // Previous to 3.9.
|
||||
.draghomes {
|
||||
&.readonly {
|
||||
.dragitem,
|
||||
.marker {
|
||||
cursor: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.dragitem, // Previous to 3.9.
|
||||
.draghome,
|
||||
.marker {
|
||||
vertical-align: top;
|
||||
cursor: pointer;
|
||||
cursor: var(--cursor);
|
||||
position: relative;
|
||||
margin: 10px;
|
||||
display: inline-block;
|
||||
|
@ -70,7 +72,7 @@ core-format-text ::ng-deep {
|
|||
.droparea {
|
||||
.dragitem,
|
||||
.marker {
|
||||
cursor: pointer;
|
||||
cursor: var(--cursor);
|
||||
position: absolute;
|
||||
vertical-align: top;
|
||||
z-index: 2;
|
||||
|
|
|
@ -1,6 +1,16 @@
|
|||
@use "theme/globals" as *;
|
||||
|
||||
// Style ddwtos content a bit. Almost all these styles are copied from Moodle.
|
||||
|
||||
:host {
|
||||
--cursor: pointer;
|
||||
|
||||
.readonly,
|
||||
core-format-text ::ng-deep .readonly {
|
||||
--cursor: default;
|
||||
}
|
||||
}
|
||||
|
||||
.addon-qtype-ddwtos-container {
|
||||
min-height: 80px; // To display the loading.
|
||||
position: relative;
|
||||
|
@ -27,7 +37,7 @@ core-format-text ::ng-deep, .drags ::ng-deep {
|
|||
border: 1px solid var(--core-dd-question-border);
|
||||
margin-bottom: 2px;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
cursor: var(--cursor);
|
||||
}
|
||||
.draghome, .drag {
|
||||
display: inline-block;
|
||||
|
@ -48,7 +58,7 @@ core-format-text ::ng-deep, .drags ::ng-deep {
|
|||
z-index: 2;
|
||||
border-radius: 5px;
|
||||
line-height: 25px;
|
||||
cursor: pointer;
|
||||
cursor: var(--cursor);
|
||||
}
|
||||
.drag.selected,
|
||||
.drop.selected {
|
||||
|
@ -60,17 +70,10 @@ core-format-text ::ng-deep, .drags ::ng-deep {
|
|||
&.notreadonly .draghome,
|
||||
&.notreadonly .drop,
|
||||
&.notreadonly .answercontainer {
|
||||
cursor: pointer;
|
||||
cursor: var(--cursor);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
&.readonly .drag,
|
||||
&.readonly .draghome,
|
||||
&.readonly .drop,
|
||||
&.readonly .answercontainer {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
span.incorrect {
|
||||
background-color: var(--core-question-incorrect-color-bg);
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<input *ngIf="question.answerDraftIdInput" type="hidden" [name]="question.answerDraftIdInput.name"
|
||||
[value]="question.answerDraftIdInput.value">
|
||||
<!-- 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 }}"
|
||||
[attr.name]="question.textarea.name" [ngModel]="question.textarea.text" />
|
||||
<!-- Rich text editor. -->
|
||||
|
|
|
@ -16,25 +16,27 @@
|
|||
<!-- Checkbox for multiple choice. -->
|
||||
<ng-container *ngIf="question.multi">
|
||||
<ion-item class="ion-text-wrap answer" *ngFor="let option of question.options">
|
||||
<ion-checkbox [attr.name]="option.name" [(ngModel)]="option.checked" [disabled]="option.disabled"
|
||||
[color]='(option.isCorrect === 1 ? "success": "") + (option.isCorrect === 0 ? "danger": "")'>
|
||||
<div>
|
||||
<div [class]="option.class">
|
||||
<core-format-text [component]="component" [componentId]="componentId" [text]="option.text"
|
||||
[contextLevel]="contextLevel" [contextInstanceId]="contextInstanceId" [courseId]="courseId" />
|
||||
</div>
|
||||
<div *ngIf="option.feedback" class="specificfeedback">
|
||||
<core-format-text [component]="component" [componentId]="componentId" [text]="option.feedback"
|
||||
[contextLevel]="contextLevel" [contextInstanceId]="contextInstanceId" [courseId]="courseId" />
|
||||
<div class="flex-column">
|
||||
<ion-checkbox [attr.name]="option.name" [(ngModel)]="option.checked" [disabled]="option.disabled"
|
||||
[color]='(option.isCorrect === 1 ? "success": "") + (option.isCorrect === 0 ? "danger": "")'>
|
||||
<div class="flex-grow ion-text-wrap">
|
||||
<div [class]="option.class">
|
||||
<core-format-text [component]="component" [componentId]="componentId" [text]="option.text"
|
||||
[contextLevel]="contextLevel" [contextInstanceId]="contextInstanceId" [courseId]="courseId" />
|
||||
</div>
|
||||
</div>
|
||||
<ion-icon *ngIf="option.isCorrect === 1" class="core-correct-icon" name="fas-check" color="success"
|
||||
[attr.aria-label]="'core.question.correct' | translate" />
|
||||
<ion-icon *ngIf="option.isCorrect === 0" class="core-correct-icon" name="fas-xmark" color="danger"
|
||||
[attr.aria-label]="'core.question.incorrect' | translate" />
|
||||
</ion-checkbox>
|
||||
<div *ngIf="option.feedback" class="specificfeedback">
|
||||
<core-format-text [component]="component" [componentId]="componentId" [text]="option.feedback"
|
||||
[contextLevel]="contextLevel" [contextInstanceId]="contextInstanceId" [courseId]="courseId" />
|
||||
</div>
|
||||
<ion-icon *ngIf="option.isCorrect === 1" class="core-correct-icon" name="fas-check" color="success"
|
||||
[attr.aria-label]="'core.question.correct' | translate" />
|
||||
<ion-icon *ngIf="option.isCorrect === 0" class="core-correct-icon" name="fas-xmark" color="danger"
|
||||
[attr.aria-label]="'core.question.incorrect' | translate" />
|
||||
</ion-checkbox>
|
||||
|
||||
</div>
|
||||
<!-- ion-checkbox doesn't use an input. Create a hidden input to hold the value. -->
|
||||
<!-- @TODO Check if this is still needed -->
|
||||
<input type="hidden" [ngModel]="option.checked" [attr.name]="option.name">
|
||||
</ion-item>
|
||||
</ng-container>
|
||||
|
@ -42,23 +44,26 @@
|
|||
<!-- Radio buttons for single choice. -->
|
||||
<ion-radio-group *ngIf="!question.multi" [(ngModel)]="question.singleChoiceModel" [name]="question.optionsName">
|
||||
<ion-item class="ion-text-wrap answer" *ngFor="let option of question.options">
|
||||
<ion-radio [value]="option.value" [disabled]="option.disabled"
|
||||
[color]='(option.isCorrect === 1 ? "success": "") + (option.isCorrect === 0 ? "danger": "")'>
|
||||
<div>
|
||||
<div [class]="option.class">
|
||||
<core-format-text [component]="component" [componentId]="componentId" [text]="option.text"
|
||||
[contextLevel]="contextLevel" [contextInstanceId]="contextInstanceId" [courseId]="courseId" />
|
||||
</div>
|
||||
<div *ngIf="option.feedback" class="specificfeedback">
|
||||
<core-format-text [component]="component" [componentId]="componentId" [text]="option.feedback"
|
||||
[contextLevel]="contextLevel" [contextInstanceId]="contextInstanceId" [courseId]="courseId" />
|
||||
<div class="flex-column">
|
||||
<ion-radio [value]="option.value" [disabled]="option.disabled"
|
||||
[color]='(option.isCorrect === 1 ? "success": "") + (option.isCorrect === 0 ? "danger": "")'>
|
||||
<div class="flex-grow ion-text-wrap">
|
||||
<div [class]="option.class">
|
||||
<core-format-text [component]="component" [componentId]="componentId" [text]="option.text"
|
||||
[contextLevel]="contextLevel" [contextInstanceId]="contextInstanceId" [courseId]="courseId" />
|
||||
</div>
|
||||
</div>
|
||||
<ion-icon *ngIf="option.isCorrect === 1" class="core-correct-icon" name="fas-check" color="success"
|
||||
[attr.aria-label]="'core.question.correct' | translate" />
|
||||
<ion-icon *ngIf="option.isCorrect === 0" class="core-correct-icon" name="fas-xmark" color="danger"
|
||||
[attr.aria-label]="'core.question.incorrect' | translate" />
|
||||
</ion-radio>
|
||||
|
||||
<div *ngIf="option.feedback" class="specificfeedback">
|
||||
<core-format-text [component]="component" [componentId]="componentId" [text]="option.feedback"
|
||||
[contextLevel]="contextLevel" [contextInstanceId]="contextInstanceId" [courseId]="courseId" />
|
||||
</div>
|
||||
<ion-icon *ngIf="option.isCorrect === 1" class="core-correct-icon" name="fas-check" color="success"
|
||||
[attr.aria-label]="'core.question.correct' | translate" />
|
||||
<ion-icon *ngIf="option.isCorrect === 0" class="core-correct-icon" name="fas-xmark" color="danger"
|
||||
[attr.aria-label]="'core.question.incorrect' | translate" />
|
||||
</ion-radio>
|
||||
</div>
|
||||
</ion-item>
|
||||
<ion-button *ngIf="!question.disabled" class="ion-text-wrap ion-margin-top" expand="block" fill="outline"
|
||||
[disabled]="!question.singleChoiceModel" (click)="clear()" type="button">
|
||||
|
@ -66,6 +71,7 @@
|
|||
</ion-button>
|
||||
|
||||
<!-- ion-radio doesn't use an input. Create a hidden input to hold the selected value. -->
|
||||
<!-- @TODO Check if this is still needed -->
|
||||
<input type="hidden" [ngModel]="question.singleChoiceModel" [attr.name]="question.optionsName">
|
||||
</ion-radio-group>
|
||||
</ion-list>
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
@use "theme/globals" as *;
|
||||
|
||||
:host ::ng-deep {
|
||||
.specificfeedback {
|
||||
background-color: var(--core-question-feedback-color-bg);
|
||||
color: var(--core-question-feedback-color);
|
||||
display: inline;
|
||||
padding: 0 .7em;
|
||||
font-size: var(--text-size);
|
||||
|
||||
@include pointer-events-on-buttons();
|
||||
}
|
||||
|
||||
.d-flex {
|
||||
|
|
|
@ -35,11 +35,11 @@
|
|||
@if (!dragDisabled) {
|
||||
<div slot="end" class="flex-row">
|
||||
<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-button>
|
||||
<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-button>
|
||||
</div>
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
</ion-badge>
|
||||
</ion-label>
|
||||
<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 }">
|
||||
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
</span>
|
||||
<span *ngIf="!maxSubmissionsReadable">{{ 'core.maxfilesize' | translate:{$a: maxSizeReadable} }}</span>
|
||||
</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)">
|
||||
<ion-icon name="fas-plus" slot="icon-only" aria-hidden="true" />
|
||||
</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">
|
||||
<ion-icon [name]="icon" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
<ng-container *ngIf="enabled && !loading">
|
||||
<!-- Download button. -->
|
||||
<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-button>
|
||||
|
||||
<!-- Refresh button. -->
|
||||
<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-button>
|
||||
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
<ion-icon slot="icon-only" [name]="openButtonIcon" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
||||
<ion-button fill="clear" *ngIf="!isDownloading && canDelete" (click)="delete($event)"
|
||||
[attr.aria-label]="'core.delete' | translate" color="danger">
|
||||
<ion-button fill="clear" *ngIf="!isDownloading && canDelete" (click)="delete($event)" [ariaLabel]="'core.delete' | translate"
|
||||
color="danger">
|
||||
<ion-icon slot="icon-only" name="fas-trash" aria-hidden="true" />
|
||||
</ion-button>
|
||||
</div>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<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-button>
|
||||
|
||||
<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-button>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<ng-container *ngIf="safeUrl && !launchExternalLabel">
|
||||
<core-navbar-buttons slot="end" prepend *ngIf="initialized && showFullscreenOnToolbar && !loading">
|
||||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
|
|
@ -31,12 +31,10 @@
|
|||
--contents-display: block;
|
||||
|
||||
@include core-transition(all, 200ms);
|
||||
pointer-events: none;
|
||||
display: var(--contents-display);
|
||||
|
||||
&.core-loading-loaded {
|
||||
position: static;
|
||||
pointer-events: auto;
|
||||
--contents-display: contents;
|
||||
--internal-loading-inline-min-height: 0px;
|
||||
|
||||
|
|
|
@ -19,25 +19,26 @@
|
|||
<!-- Form to edit the file's name. -->
|
||||
<ion-input type="text" name="filename" [placeholder]="'core.filename' | translate" autocapitalize="none" autocorrect="off"
|
||||
(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">
|
||||
<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-button>
|
||||
|
||||
<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"
|
||||
(click)="changeName(newFileName, $event)">
|
||||
<ion-icon name="fas-check" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
||||
<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-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">
|
||||
<ion-icon name="fas-trash" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
|
|
@ -30,11 +30,11 @@
|
|||
</div>
|
||||
|
||||
<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-button>
|
||||
<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-button>
|
||||
</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-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-button>
|
||||
</ion-col>
|
||||
|
@ -8,7 +8,7 @@
|
|||
<core-progress-bar [progress]="progress" [text]="progressText" *ngIf="currentIndex >= 0" />
|
||||
</ion-col>
|
||||
<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-button>
|
||||
</ion-col>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ title | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
@ -14,7 +14,7 @@
|
|||
<form (ngSubmit)="submitPassword($event)" #passwordForm>
|
||||
<div>
|
||||
<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
|
||||
[clearOnEdit]="false">
|
||||
<core-show-password slot="end" />
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
(keyup.meta.enter)="enterKeyUp($event, 'meta')" (keydown.enter)="enterKeyDown($event)"
|
||||
(keydown.control.enter)="enterKeyDown($event, 'control')" (keydown.meta.enter)="enterKeyDown($event, 'meta')">
|
||||
</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)">
|
||||
<ion-icon name="send" slot="icon-only" aria-hidden="true" flip-rtl />
|
||||
</ion-button>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<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)">
|
||||
<ion-icon [name]="shown ? 'fas-eye-slash' : 'fas-eye'" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<ion-spinner *ngIf="!hideUntil" [attr.aria-label]="'core.loading' | translate" />
|
||||
<ng-container *ngIf="hideUntil">
|
||||
<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-button>
|
||||
<swiper-container #swiperRef [slidesPerView]="swiperOpts.slidesPerView" role="tablist" [attr.aria-label]="description">
|
||||
|
@ -29,7 +29,7 @@
|
|||
</ng-container>
|
||||
</swiper-container>
|
||||
<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-button>
|
||||
</ng-container>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<ion-spinner *ngIf="!hideUntil" [attr.aria-label]="'core.loading' | translate" />
|
||||
<ng-container *ngIf="hideUntil">
|
||||
<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-button>
|
||||
<swiper-container #swiperRef [slidesPerView]="swiperOpts.slidesPerView" role="tablist" [attr.aria-label]="description">
|
||||
|
@ -27,7 +27,7 @@
|
|||
</ng-container>
|
||||
</swiper-container>
|
||||
<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-button>
|
||||
</ng-container>
|
||||
|
|
|
@ -22,7 +22,7 @@ import { CoreDom } from '@singletons/dom';
|
|||
* Directive to auto focus an element when a view is loaded.
|
||||
*
|
||||
* The value of the input will decide if show keyboard when focusing the element (only on Android).
|
||||
* In case value is nofocus, the directive is disabled.
|
||||
* In case value is false, the directive is disabled.
|
||||
*
|
||||
* <ion-input [core-auto-focus]="showKeyboard">
|
||||
*/
|
||||
|
|
|
@ -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-button>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<ion-header class="no-title">
|
||||
<ion-toolbar>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
</ion-title>
|
||||
<ion-buttons slot="end">
|
||||
<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-check" slot="icon-only" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1>{{ 'core.contentlinks.chooseaccount' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<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-button>
|
||||
</core-navbar-buttons>
|
||||
|
@ -31,12 +31,12 @@
|
|||
<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">
|
||||
<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" />
|
||||
<core-format-text [text]="previousSection.name" contextLevel="course" [contextInstanceId]="course.id" />
|
||||
</ion-button>
|
||||
<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" />
|
||||
<ion-icon name="fas-arrow-right" slot="end" aria-hidden="true" />
|
||||
</ion-button>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<h1 id="core-course-section-selector-label">{{ 'core.course.courseindex' | translate }}</h1>
|
||||
</ion-title>
|
||||
<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-button>
|
||||
</ion-buttons>
|
||||
|
|
|
@ -20,14 +20,14 @@
|
|||
</ng-container>
|
||||
|
||||
<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">
|
||||
<ion-icon name="fas-check" slot="start" aria-hidden="true" />
|
||||
{{ 'core.course.completion_manual:done' | translate }}
|
||||
<ion-icon *ngIf="completion.offline" name="fas-arrows-rotate"
|
||||
[attr.aria-label]="'core.course.manualcompletionnotsynced' | translate" slot="end" />
|
||||
</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">
|
||||
{{ 'core.course.completion_manual:markdone' | translate }}
|
||||
<ion-icon *ngIf="completion.offline" name="fas-arrows-rotate"
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue