forked from CIT/Vmeda.Online
		
	
						commit
						70f1bd6063
					
				@ -2,7 +2,7 @@
 | 
			
		||||
    <ion-label>
 | 
			
		||||
        <h2>{{ 'addon.block_recentlyaccessedcourses.pluginname' | translate }}</h2>
 | 
			
		||||
    </ion-label>
 | 
			
		||||
    <div slot="end">
 | 
			
		||||
    <div slot="end" class="flex-row">
 | 
			
		||||
        <div *ngIf="downloadCoursesEnabled && downloadEnabled && courses && courses.length > 1" class="core-button-spinner">
 | 
			
		||||
            <ion-button *ngIf="prefetchCoursesData.icon && !prefetchCoursesData.loading" fill="clear" color="dark"
 | 
			
		||||
                (click)="prefetchCourses()" [attr.aria-label]="'core.courses.downloadcourses' | translate">
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
    <ion-label>
 | 
			
		||||
        <h2>{{ 'addon.block_starredcourses.pluginname' | translate }}</h2>
 | 
			
		||||
    </ion-label>
 | 
			
		||||
    <div slot="end">
 | 
			
		||||
    <div slot="end" class="flex-row">
 | 
			
		||||
        <div *ngIf="downloadCoursesEnabled && downloadEnabled && courses && courses.length > 1" class="core-button-spinner">
 | 
			
		||||
            <ion-button *ngIf="prefetchCoursesData.icon && !prefetchCoursesData.loading" fill="clear" color="dark"
 | 
			
		||||
                (click)="prefetchCourses()" [attr.aria-label]="'core.courses.downloadcourses' | translate">
 | 
			
		||||
 | 
			
		||||
@ -32,7 +32,6 @@ import { IonRefresher } from '@ionic/angular';
 | 
			
		||||
    selector: 'page-addon-messages-contacts',
 | 
			
		||||
    templateUrl: 'contacts.html',
 | 
			
		||||
    styleUrls: [
 | 
			
		||||
        'tabs.scss',
 | 
			
		||||
        '../../messages-common.scss',
 | 
			
		||||
    ],
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
@ -1,48 +0,0 @@
 | 
			
		||||
:host {
 | 
			
		||||
    ion-tab-bar.core-tabs-bar {
 | 
			
		||||
        position: relative;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        background: var(--core-tabs-background);
 | 
			
		||||
        color: var(--core-tab-color);
 | 
			
		||||
        -webkit-filter: drop-shadow(0px 3px 3px rgba(var(--drop-shadow)));
 | 
			
		||||
        filter: drop-shadow(0px 3px 3px rgba(var(--drop-shadow)));
 | 
			
		||||
        border: 0;
 | 
			
		||||
 | 
			
		||||
        ion-row {
 | 
			
		||||
            width: 100%;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .tab-slide {
 | 
			
		||||
            border-bottom: 2px solid transparent;
 | 
			
		||||
            min-width: 100px;
 | 
			
		||||
            min-height: 56px;
 | 
			
		||||
            cursor: pointer;
 | 
			
		||||
            overflow: hidden;
 | 
			
		||||
            display: flex;
 | 
			
		||||
            align-items: center;
 | 
			
		||||
            justify-content: center;
 | 
			
		||||
            padding: 0;
 | 
			
		||||
            margin-bottom: 1px;
 | 
			
		||||
 | 
			
		||||
            ion-label {
 | 
			
		||||
                font-size: 16px;
 | 
			
		||||
                font-weight: 400;
 | 
			
		||||
                text-overflow: ellipsis;
 | 
			
		||||
                white-space: nowrap;
 | 
			
		||||
                overflow: hidden;
 | 
			
		||||
                word-wrap: break-word;
 | 
			
		||||
                max-width: 100%;
 | 
			
		||||
                line-height: 1.2em;
 | 
			
		||||
                margin: 16px auto;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            &[aria-selected=true] {
 | 
			
		||||
                color: var(--core-tab-border-color-active);
 | 
			
		||||
                border-bottom-color: var(--core-tab-color-active);
 | 
			
		||||
                ion-tab-button {
 | 
			
		||||
                    color: var(--core-tab-border-color-active);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -62,6 +62,7 @@ import { CoreLogger } from '@singletons/logger';
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-dynamic-component',
 | 
			
		||||
    templateUrl: 'core-dynamic-component.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreDynamicComponent implements OnChanges, DoCheck {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -56,5 +56,9 @@
 | 
			
		||||
            padding-top: 20px;
 | 
			
		||||
            position: relative;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .core-loading-content {
 | 
			
		||||
            display: block;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -17,7 +17,7 @@
 | 
			
		||||
    >
 | 
			
		||||
    </textarea>
 | 
			
		||||
    <ion-button fill="clear" size="large" type="submit" [disabled]="!message || sendDisabled"
 | 
			
		||||
        [attr.aria-label]="'core.send' | translate" [core-suppress-events] (click)="submitForm($event)">
 | 
			
		||||
        [attr.aria-label]="'core.send' | translate" [core-suppress-events] (onClick)="submitForm($event)">
 | 
			
		||||
        <ion-icon name="send" color="dark" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
    </ion-button>
 | 
			
		||||
</form>
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
:host {
 | 
			
		||||
    --tabs-background: var(--core-tabs-background);
 | 
			
		||||
    --tabs-color: var(--color);
 | 
			
		||||
    --tabs-color: var(--core-tab-color);
 | 
			
		||||
    --height: 56px;
 | 
			
		||||
    height: 100%;
 | 
			
		||||
    display: block;
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@
 | 
			
		||||
// Based on http://roblouie.com/article/198/using-gestures-in-the-ionic-2-beta/
 | 
			
		||||
 | 
			
		||||
import { Directive, ElementRef, OnInit, Input, Output, EventEmitter } from '@angular/core';
 | 
			
		||||
import { CoreLogger } from '@singletons/logger';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Directive to suppress all events on an element. This is useful to prevent keyboard closing when clicking this element.
 | 
			
		||||
@ -29,6 +30,8 @@ import { Directive, ElementRef, OnInit, Input, Output, EventEmitter } from '@ang
 | 
			
		||||
 * If you only want to suppress a single event just pass the name of the event. If you want to suppress a set of events,
 | 
			
		||||
 * pass an array with the names of the events to suppress.
 | 
			
		||||
 *
 | 
			
		||||
 * Usage of onClick instead of click is mandatory to make this directive work.
 | 
			
		||||
 *
 | 
			
		||||
 * Example usage:
 | 
			
		||||
 *
 | 
			
		||||
 * <ion-button [core-suppress-events] (onClick)="toggle($event)">
 | 
			
		||||
@ -51,6 +54,13 @@ export class CoreSupressEventsDirective implements OnInit {
 | 
			
		||||
     * Initialize event listeners.
 | 
			
		||||
     */
 | 
			
		||||
    ngOnInit(): void {
 | 
			
		||||
        if (this.onClick.observers.length == 0) {
 | 
			
		||||
            CoreLogger.getInstance('CoreSupressEventsDirective')
 | 
			
		||||
                .error('No onClick output was defined causing this directive to fail', this.element);
 | 
			
		||||
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let events: string[];
 | 
			
		||||
 | 
			
		||||
        if (this.suppressEvents == 'all' || typeof this.suppressEvents == 'undefined' || this.suppressEvents === null) {
 | 
			
		||||
 | 
			
		||||
@ -119,7 +119,7 @@
 | 
			
		||||
 | 
			
		||||
    </core-loading>
 | 
			
		||||
</ion-content>
 | 
			
		||||
<ion-footer color="light" class="footer-adjustable" *ngIf="commentsLoaded">
 | 
			
		||||
<ion-footer color="light" class="footer-adjustable" *ngIf="commentsLoaded && canAddComments">
 | 
			
		||||
    <ion-toolbar color="light">
 | 
			
		||||
        <core-send-message-form [sendDisabled]="sending" [message]="newComment"
 | 
			
		||||
            (onSubmit)="addComment($event)" [placeholder]="'core.comments.addcomment' | translate">
 | 
			
		||||
 | 
			
		||||
@ -56,6 +56,7 @@ import { CoreUtils } from '@services/utils/utils';
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-compile-html',
 | 
			
		||||
    template: '<core-loading [hideUntil]="loaded"><ng-container #dynamicComponent></ng-container></core-loading>',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle
 | 
			
		||||
export class CoreCompileHtmlComponent implements OnChanges, OnDestroy, DoCheck {
 | 
			
		||||
 | 
			
		||||
@ -93,18 +93,19 @@
 | 
			
		||||
 | 
			
		||||
            <ion-buttons class="ion-padding core-course-section-nav-buttons safe-padding-horizontal"
 | 
			
		||||
                *ngIf="displaySectionSelector && sections?.length">
 | 
			
		||||
                <ion-button *ngIf="previousSection" (click)="sectionChanged(previousSection)"
 | 
			
		||||
                    [attr.aria-label]="'core.previous' | translate">
 | 
			
		||||
                <ion-button *ngIf="previousSection" (click)="sectionChanged(previousSection)" fill="outline"
 | 
			
		||||
                    [attr.aria-label]="('core.previous' | translate) + ': ' + previousSection.name">
 | 
			
		||||
                    <ion-icon name="fas-chevron-left" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <core-format-text class="accesshide" [text]="previousSection.name" contextLevel="course"
 | 
			
		||||
                    <core-format-text class="sr-only" [text]="previousSection.name" contextLevel="course"
 | 
			
		||||
                        [contextInstanceId]="course?.id">
 | 
			
		||||
                    </core-format-text>
 | 
			
		||||
                </ion-button>
 | 
			
		||||
                <ion-button *ngIf="nextSection" (click)="sectionChanged(nextSection)" [attr.aria-label]="'core.next' | translate">
 | 
			
		||||
                    <ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                    <core-format-text class="accesshide" [text]="nextSection.name" contextLevel="course"
 | 
			
		||||
                <ion-button *ngIf="nextSection" (click)="sectionChanged(nextSection)" fill="solid"
 | 
			
		||||
                    [attr.aria-label]="('core.next' | translate) + ': ' + nextSection.name">
 | 
			
		||||
                    <core-format-text class="sr-only" [text]="nextSection.name" contextLevel="course"
 | 
			
		||||
                        [contextInstanceId]="course?.id">
 | 
			
		||||
                    </core-format-text>
 | 
			
		||||
                    <ion-icon name="fas-chevron-right" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
			
		||||
                </ion-button>
 | 
			
		||||
            </ion-buttons>
 | 
			
		||||
        </core-loading>
 | 
			
		||||
 | 
			
		||||
@ -58,4 +58,16 @@
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .core-course-section-nav-buttons {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        justify-content: flex-end;
 | 
			
		||||
 | 
			
		||||
        core-format-text {
 | 
			
		||||
            white-space: nowrap;
 | 
			
		||||
            text-overflow: ellipsis;
 | 
			
		||||
            overflow: hidden;
 | 
			
		||||
            text-transform: none;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -36,6 +36,7 @@
 | 
			
		||||
 | 
			
		||||
    form .core-username.item p {
 | 
			
		||||
        font-size: 16px;
 | 
			
		||||
        @include padding-horizontal(8px, null);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .core-login-site-logo img {
 | 
			
		||||
 | 
			
		||||
@ -91,7 +91,7 @@
 | 
			
		||||
            <ion-item class="ion-text-wrap" lines="none" *ngIf="authInstructions">
 | 
			
		||||
                <ion-label><p><core-format-text [text]="authInstructions" [filter]="false"></core-format-text></p></ion-label>
 | 
			
		||||
            </ion-item>
 | 
			
		||||
            <ion-button expand="block" class="ion-margin" color="light" (click)="openEmailSignup()">
 | 
			
		||||
            <ion-button expand="block" class="ion-margin ion-text-wrap" color="light" (click)="openEmailSignup()">
 | 
			
		||||
                {{ 'core.login.startsignup' | translate }}
 | 
			
		||||
            </ion-button>
 | 
			
		||||
        </ion-list>
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
<ion-tabs #mainTabs [hidden]="!showTabs" [class]="'placement-' + tabsPlacement" [class.tabshidden]="hidden"
 | 
			
		||||
    (ionTabsDidChange)="tabChanged($event)">
 | 
			
		||||
    <ion-tab-bar slot="bottom" [hidden]="hidden">
 | 
			
		||||
    <ion-tab-bar slot="bottom" [hidden]="hidden" class="mainmenu-tabs">
 | 
			
		||||
        <ion-spinner *ngIf="!loaded"></ion-spinner>
 | 
			
		||||
 | 
			
		||||
        <ion-tab-button
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,7 @@ import { CoreSitePluginsCompileInitComponent } from '@features/siteplugins/class
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-site-plugins-assign-feedback',
 | 
			
		||||
    templateUrl: 'core-siteplugins-assign-feedback.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsAssignFeedbackComponent extends CoreSitePluginsCompileInitComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,7 @@ import { CoreSitePluginsCompileInitComponent } from '@features/siteplugins/class
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-site-plugins-assign-submission',
 | 
			
		||||
    templateUrl: 'core-siteplugins-assign-submission.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsAssignSubmissionComponent extends CoreSitePluginsCompileInitComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -25,6 +25,7 @@ import { CoreSitePluginsPluginContentComponent } from '../plugin-content/plugin-
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-site-plugins-block',
 | 
			
		||||
    templateUrl: 'core-siteplugins-block.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsBlockComponent extends CoreBlockBaseComponent implements OnChanges {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -28,6 +28,7 @@ import { CoreSitePluginsPluginContentComponent } from '../plugin-content/plugin-
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-site-plugins-course-format',
 | 
			
		||||
    templateUrl: 'core-siteplugins-course-format.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsCourseFormatComponent implements OnChanges {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -40,6 +40,7 @@ import { CoreSitePluginsPluginContentComponent } from '../plugin-content/plugin-
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-site-plugins-module-index',
 | 
			
		||||
    templateUrl: 'core-siteplugins-module-index.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsModuleIndexComponent implements OnInit, OnDestroy, CoreCourseModuleMainComponent {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -26,6 +26,7 @@ import { CoreNavigator } from '@services/navigator';
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-siteplugins-only-title-block',
 | 
			
		||||
    templateUrl: 'core-siteplugins-only-title-block.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsOnlyTitleBlockComponent extends CoreBlockBaseComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -28,6 +28,7 @@ import { CoreDomUtils } from '@services/utils/dom';
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-site-plugins-plugin-content',
 | 
			
		||||
    templateUrl: 'core-siteplugins-plugin-content.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsPluginContentComponent implements OnInit, DoCheck {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,7 @@ import { CoreSitePluginsCompileInitComponent } from '@features/siteplugins/class
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-site-plugins-question-behaviour',
 | 
			
		||||
    templateUrl: 'core-siteplugins-question-behaviour.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsQuestionBehaviourComponent extends CoreSitePluginsCompileInitComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -25,6 +25,7 @@ import { CoreSitePluginsCompileInitComponent } from '@features/siteplugins/class
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-site-plugins-question',
 | 
			
		||||
    templateUrl: 'core-siteplugins-question.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsQuestionComponent extends CoreSitePluginsCompileInitComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -25,6 +25,7 @@ import { CoreSitePluginsCompileInitComponent } from '@features/siteplugins/class
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-site-plugins-quiz-access-rule',
 | 
			
		||||
    templateUrl: 'core-siteplugins-quiz-access-rule.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsQuizAccessRuleComponent extends CoreSitePluginsCompileInitComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -26,6 +26,7 @@ import { CoreUserProfileFieldDelegate } from '@features/user/services/user-profi
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-site-plugins-user-profile-field',
 | 
			
		||||
    templateUrl: 'core-siteplugins-user-profile-field.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsUserProfileFieldComponent extends CoreSitePluginsCompileInitComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -24,6 +24,7 @@ import { CoreSitePluginsCompileInitComponent } from '@features/siteplugins/class
 | 
			
		||||
@Component({
 | 
			
		||||
    selector: 'core-siteplugins-workshop-assessment-strategy',
 | 
			
		||||
    templateUrl: 'core-siteplugins-workshop-assessment-strategy.html',
 | 
			
		||||
    styles: [':host { display: contents; }'],
 | 
			
		||||
})
 | 
			
		||||
export class CoreSitePluginsWorkshopAssessmentStrategyComponent extends CoreSitePluginsCompileInitComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -89,7 +89,7 @@
 | 
			
		||||
    --core-bottom-tabs-color-selected: #{$bottom-tabs-color-selected};
 | 
			
		||||
    --core-bottom-tabs-badge-color: #{$bottom-tabs-badge-color};
 | 
			
		||||
    --core-bottom-tabs-badge-text-color: #{$bottom-tabs-badge-text-color};
 | 
			
		||||
    ion-tab-bar {
 | 
			
		||||
    ion-tab-bar.mainmenu-tabs {
 | 
			
		||||
        --background: var(--core-bottom-tabs-background);
 | 
			
		||||
        --color: var(--core-bottom-tabs-color);
 | 
			
		||||
        --color-selected: var(--core-bottom-tabs-color-selected);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user