Merge pull request #2764 from crazyserver/MOBILE-3752

Mobile 3752
main
Dani Palou 2021-05-14 08:30:40 +02:00 committed by GitHub
commit 7a2c27fe57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
177 changed files with 364 additions and 436 deletions

View File

@ -310,7 +310,7 @@ function array_contains {
print_title 'Generating language from code...' print_title 'Generating language from code...'
gulp lang npx gulp lang
print_title 'Getting languages' print_title 'Getting languages'

View File

@ -10,8 +10,9 @@ DEFAULT_LASTVERSION='4.0'
# Checks if AWS is available and configured. # Checks if AWS is available and configured.
function check_aws { function check_aws {
aws --version &> /dev/null
AWS_SERVICE=1 AWS_SERVICE=1
aws --version &> /dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
AWS_SERVICE=0 AWS_SERVICE=0
echo 'AWS not installed. Check https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html for more info.' echo 'AWS not installed. Check https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html for more info.'
@ -19,7 +20,7 @@ function check_aws {
fi fi
# In order to login to AWS, use credentials file or AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY vars. # In order to login to AWS, use credentials file or AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY vars.
if [ ! -f ~/.aws/credentials ] && [ [ -z $AWS_ACCESS_KEY_ID ] || [ -z $AWS_SECRET_ACCESS_KEY ] ]; then if [ ! -f ~/.aws/credentials ] && ([ -z "$AWS_ACCESS_KEY_ID" ] || [ -z "$AWS_SECRET_ACCESS_KEY" ]); then
AWS_SERVICE=0 AWS_SERVICE=0
lastversion=$DEFAULT_LASTVERSION lastversion=$DEFAULT_LASTVERSION
echo 'AWS Cannot authenticate. Use aws configure or set the proper env vars.' echo 'AWS Cannot authenticate. Use aws configure or set the proper env vars.'
@ -63,6 +64,13 @@ function get_last_version {
lastversion=$DEFAULT_LASTVERSION lastversion=$DEFAULT_LASTVERSION
} }
# Create langfolder
function create_langfolder {
if [ ! -d $LANGPACKSFOLDER ]; then
mkdir $LANGPACKSFOLDER
fi
}
# Get all language list from AWS. # Get all language list from AWS.
function get_all_languages_aws { function get_all_languages_aws {
langsfiles=`aws s3 ls s3://$BUCKET/$lastversion/` langsfiles=`aws s3 ls s3://$BUCKET/$lastversion/`
@ -87,6 +95,8 @@ function get_language {
get_last_version get_last_version
create_langfolder
echo "Getting $lang language" echo "Getting $lang language"
pushd $LANGPACKSFOLDER > /dev/null pushd $LANGPACKSFOLDER > /dev/null
@ -115,7 +125,7 @@ function get_languages {
return return
fi fi
else else
mkdir $LANGPACKSFOLDER create_langfolder
fi fi

View File

@ -34,8 +34,6 @@ export class AddonBlockLearningPlansHandlerService extends CoreBlockBaseHandler
* @return Data or promise resolved with the data. * @return Data or promise resolved with the data.
*/ */
getDisplayData(): CoreBlockHandlerData { getDisplayData(): CoreBlockHandlerData {
// @todo
return { return {
title: 'addon.block_learningplans.pluginname', title: 'addon.block_learningplans.pluginname',
class: 'addon-block-learning-plans', class: 'addon-block-learning-plans',

View File

@ -65,7 +65,7 @@
</ion-card> </ion-card>
<ion-card *ngIf="plan"> <ion-card *ngIf="plan">
<ion-card-header class="ion-text-wrap"> <ion-card-header class="ion-text-wrap">
<h2>{{ 'addon.competency.learningplancompetencies' | translate }}</h2> <ion-card-title>{{ 'addon.competency.learningplancompetencies' | translate }}</ion-card-title>
</ion-card-header> </ion-card-header>
<ion-list> <ion-list>
<ion-item class="ion-text-wrap" *ngIf="plan.competencycount == 0"> <ion-item class="ion-text-wrap" *ngIf="plan.competencycount == 0">

View File

@ -3377,7 +3377,7 @@ export type AddonMessagesMarkMessageReadResult = {
* Result of WS core_message_send_instant_messages. * Result of WS core_message_send_instant_messages.
*/ */
export type AddonMessagesSendInstantMessagesMessage = { export type AddonMessagesSendInstantMessagesMessage = {
msgid: number; // Test this to know if it succeeds: id of the created message if it succeeded, -1 when failed. msgid: number; // Test this to know if it succeeds: i of the created message if it succeeded, -1 when failed.
clientmsgid?: string; // Your own id for the message. clientmsgid?: string; // Your own id for the message.
errormessage?: string; // Error message - if it failed. errormessage?: string; // Error message - if it failed.
text?: string; // @since 3.6. The text of the message. text?: string; // @since 3.6. The text of the message.

View File

@ -22,8 +22,6 @@
.addon-data-advanced-search { .addon-data-advanced-search {
padding: 16px; padding: 16px;
width: 100%; width: 100%;
// @todo check if needed
// @include safe-area-padding-horizontal(16px !important, 16px !important);
} }
.addon-data-contents form, .addon-data-contents form,

View File

@ -17,8 +17,6 @@ $grid-column-paddings: (
white-space: normal; white-space: normal;
word-break: break-word; word-break: break-word;
padding: 16px; padding: 16px;
// @todo check if needed
// @include safe-area-padding-horizontal(16px !important, 16px !important);
background-color: var(--ion-item-background); background-color: var(--ion-item-background);
border-width: 1px 0; border-width: 1px 0;

View File

@ -49,8 +49,6 @@ declare module '@singletons/events' {
/** /**
* Service that provides some features for forums. * Service that provides some features for forums.
*
* @todo Add all content.
*/ */
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
export class AddonModForumProvider { export class AddonModForumProvider {

View File

@ -61,51 +61,62 @@
<!-- List of user attempts. --> <!-- List of user attempts. -->
<ion-card class="addon-mod_quiz-table" *ngIf="quiz && attempts.length"> <ion-card class="addon-mod_quiz-table" *ngIf="quiz && attempts.length">
<ion-card-header class="ion-text-wrap"> <ion-card-header class="ion-text-wrap">
<ion-card-header>
<ion-card-title>{{ 'addon.mod_quiz.summaryofattempts' | translate }}</ion-card-title> <ion-card-title>{{ 'addon.mod_quiz.summaryofattempts' | translate }}</ion-card-title>
</ion-card-header> </ion-card-header>
</ion-card-header> <ion-card-content role="table">
<ion-card-content>
<!-- "Header" of the table --> <!-- "Header" of the table -->
<ion-item class="ion-text-wrap addon-mod_quiz-table-header" detail="true"> <ion-item class="ion-text-wrap addon-mod_quiz-table-header">
<ion-label> <ion-label role="rowgroup">
<ion-row class="ion-align-items-center"> <ion-row class="ion-align-items-center" role="row">
<ion-col class="ion-text-center ion-hide-md-down" *ngIf="quiz.showAttemptColumn"> <ion-col class="ion-text-center" *ngIf="quiz.showAttemptColumn" role="columnheader">
<strong>{{ 'addon.mod_quiz.attemptnumber' | translate }}</strong> <strong class="ion-hide-md-up" aria-hidden="true">#</strong>
<span class="sr-only ion-hide-md-up">{{ 'addon.mod_quiz.attemptnumber' | translate }}</span>
<strong class="ion-hide-md-down">{{ 'addon.mod_quiz.attemptnumber' | translate }}</strong>
</ion-col> </ion-col>
<ion-col class="ion-text-center ion-hide-md-up" *ngIf="quiz.showAttemptColumn"><strong>#</strong></ion-col> <ion-col size="7" role="columnheader">
<ion-col size="7"><strong>{{ 'addon.mod_quiz.attemptstate' | translate }}</strong></ion-col> <strong>{{ 'addon.mod_quiz.attemptstate' | translate }}</strong>
<ion-col class="ion-text-center ion-hide-md-down" *ngIf="quiz.showMarkColumn"> </ion-col>
<ion-col class="ion-text-center ion-hide-md-down" *ngIf="quiz.showMarkColumn" role="columnheader">
<strong>{{ 'addon.mod_quiz.marks' | translate }} / {{ quiz.sumGradesFormatted }}</strong> <strong>{{ 'addon.mod_quiz.marks' | translate }} / {{ quiz.sumGradesFormatted }}</strong>
</ion-col> </ion-col>
<ion-col class="ion-text-center" *ngIf="quiz.showGradeColumn"> <ion-col class="ion-text-center" *ngIf="quiz.showGradeColumn" role="columnheader">
<strong>{{ 'addon.mod_quiz.grade' | translate }} / {{ quiz.gradeFormatted }}</strong> <strong>{{ 'addon.mod_quiz.grade' | translate }} / {{ quiz.gradeFormatted }}</strong>
</ion-col> </ion-col>
</ion-row> </ion-row>
</ion-label> </ion-label>
</ion-item> </ion-item>
<div role="rowgroup">
<!-- List of attempts. --> <!-- List of attempts. -->
<ion-item class="ion-text-wrap" *ngFor="let attempt of attempts" button detail="true" <ion-item
button
detail="true"
*ngFor="let attempt of attempts"
class="ion-text-wrap"
[ngClass]='{"addon-mod_quiz-highlighted": attempt.highlightGrade}' [ngClass]='{"addon-mod_quiz-highlighted": attempt.highlightGrade}'
[attr.aria-label]="'core.seemoredetail' | translate" (click)="viewAttempt(attempt.id)"> [attr.aria-label]="'core.seemoredetail' | translate"
(click)="viewAttempt(attempt.id)"
>
<ion-label> <ion-label>
<ion-row class="ion-align-items-center"> <ion-row class="ion-align-items-center" role="row">
<ion-col class="ion-text-center" *ngIf="quiz.showAttemptColumn && attempt.preview"> <ion-col class="ion-text-center" *ngIf="quiz.showAttemptColumn && attempt.preview" role="cell">
{{ 'addon.mod_quiz.preview' | translate }} {{ 'addon.mod_quiz.preview' | translate }}
</ion-col> </ion-col>
<ion-col class="ion-text-center" *ngIf="quiz.showAttemptColumn && !attempt.preview"> <ion-col class="ion-text-center" *ngIf="quiz.showAttemptColumn && !attempt.preview" role="cell">
{{ attempt.attempt }} {{ attempt.attempt }}
</ion-col> </ion-col>
<ion-col size="7"> <ion-col size="7" role="cell">
<p *ngFor="let sentence of attempt.readableState">{{ sentence }}</p> <p *ngFor="let sentence of attempt.readableState">{{ sentence }}</p>
</ion-col> </ion-col>
<ion-col class="ion-text-center ion-hide-md-down" *ngIf="quiz.showMarkColumn"> <ion-col class="ion-text-center ion-hide-md-down" *ngIf="quiz.showMarkColumn" role="cell">
<p>{{ attempt.readableMark }}</p> <p>{{ attempt.readableMark }}</p>
</ion-col> </ion-col>
<ion-col class="ion-text-center" *ngIf="quiz.showGradeColumn"><p>{{ attempt.readableGrade }}</p></ion-col> <ion-col class="ion-text-center" *ngIf="quiz.showGradeColumn" role="cell">
<p>{{ attempt.readableGrade }}</p>
</ion-col>
</ion-row> </ion-row>
</ion-label> </ion-label>
</ion-item> </ion-item>
</div>
</ion-card-content> </ion-card-content>
</ion-card> </ion-card>

View File

@ -23,8 +23,8 @@
<ion-card *ngIf="attempt"> <ion-card *ngIf="attempt">
<ion-card-header class="ion-text-wrap"> <ion-card-header class="ion-text-wrap">
<ion-card-title> <ion-card-title>
<span *ngIf="attempt.preview">{{ 'addon.mod_quiz.reviewofpreview' | translate }}</span> <ng-container *ngIf="attempt.preview">{{ 'addon.mod_quiz.reviewofpreview' | translate }}</ng-container>
<span *ngIf="!attempt.preview">{{ 'addon.mod_quiz.reviewofattempt' | translate:{$a: attempt.attempt} }}</span> <ng-container *ngIf="!attempt.preview">{{ 'addon.mod_quiz.reviewofattempt' | translate:{$a: attempt.attempt} }}</ng-container>
</ion-card-title> </ion-card-title>
</ion-card-header> </ion-card-header>
<ion-list lines="none"> <ion-list lines="none">

View File

@ -35,7 +35,7 @@ const routes: Routes = [
canDeactivate: [CanLeaveGuard], canDeactivate: [CanLeaveGuard],
}, },
{ {
path: ':courseId/:cmId/:submissionId/edit', // @todo path: ':courseId/:cmId/:submissionId/edit',
component: AddonModWorkshopEditSubmissionPage, component: AddonModWorkshopEditSubmissionPage,
canDeactivate: [CanLeaveGuard], canDeactivate: [CanLeaveGuard],
}, },

View File

@ -1,31 +0,0 @@
:host {
// @todo
// .card-md core-file + core-file > .item-md.item-block > .item-inner,
// core-file + core-file > .item-md.item-block > .item-inner {
// border-top: 1px solid $list-md-border-color;
// }
// .card-ios core-file + core-file > .item-ios.item-block > .item-inner,
// core-file + core-file > .item-ios.item-block > .item-inner {
// border-top: $hairlines-width solid $list-ios-border-color;
// .buttons {
// min-height: 53px;
// min-width: 58px;
// }
// }
// core-file > .item.item-block > .item-inner {
// border-bottom: 0;
// @include safe-area-padding(null, 0px, null, null);
// .buttons {
// display: flex;
// flex-flow: row;
// align-items: center;
// z-index: 1;
// justify-content: space-around;
// align-content: center;
// min-height: 52px;
// min-width: 53px;
// }
// }
}

View File

@ -34,7 +34,6 @@ import { CoreWSFile } from '@services/ws';
@Component({ @Component({
selector: 'core-file', selector: 'core-file',
templateUrl: 'core-file.html', templateUrl: 'core-file.html',
styleUrls: ['file.scss'],
}) })
export class CoreFileComponent implements OnInit, OnDestroy { export class CoreFileComponent implements OnInit, OnDestroy {

View File

@ -1,5 +1,7 @@
:host { :host {
position: relative; position: relative;
width: var(--core-avatar-size);
height: var(--core-avatar-size);
.clickable { .clickable {
cursor: pointer; cursor: pointer;

View File

@ -4,9 +4,6 @@
background: var(--background); background: var(--background);
ion-item-divider { ion-item-divider {
min-height: 60px; min-height: var(--item-divider-min-height);
.core-button-spinner {
margin: 0;
}
} }
} }

View File

@ -16,7 +16,6 @@
box-shadow: none !important; box-shadow: none !important;
flex-grow: 1; flex-grow: 1;
max-width: 100%; max-width: 100%;
// @todo @include core-split-area-start();
} }
div.core-course-blocks-side { div.core-course-blocks-side {
@ -24,7 +23,6 @@
min-width: var(--side-blocks-min-width); min-width: var(--side-blocks-min-width);
box-shadow: var(--side-blocks-box-shadow); box-shadow: var(--side-blocks-box-shadow);
z-index: 2; z-index: 2;
// @todo @include core-split-area-end();
} }
.core-course-blocks-content, .core-course-blocks-content,

View File

@ -52,31 +52,4 @@
} }
} }
// @todo
// .item-divider {
// .label {
// margin-top: 0;
// margin-bottom: 0;
// }
// core-format-text {
// line-height: 44px;
// }
// ion-badge core-format-text {
// line-height: normal;
// margin-bottom: 9px;
// }
// &.core-section-download .label{
// @include margin(null, 0, null, null);
// }
// }
// div.core-section-download {
// @include padding(null, 0, null, null);
// }
//
} }

View File

@ -1,17 +0,0 @@
// @todo Review commented styles.
// ion-app.app-root {
// .safe-area-page,
// .safe-padding-horizontal {
// core-course-module-description {
// padding-left: 0 !important;
// padding-right: 0 !important;
// .item-ios.item-block {
// @include safe-area-padding-horizontal($item-ios-padding-end / 2, null);
// .item-inner {
// @include safe-area-padding-horizontal(null, $item-ios-padding-end / 2);
// }
// }
// }
// }
// }

View File

@ -28,7 +28,10 @@
</p> </p>
</ion-label> </ion-label>
<ng-container *ngIf="!isEnrolled"> <ng-container *ngIf="!isEnrolled">
<ion-icon *ngFor="let icon of icons" color="dark" size="small" <ion-icon *ngFor="let icon of icons" color="dark" size="small" [name]="icon.icon"
[name]="icon.icon" [attr.aria-label]="icon.label | translate" slot="end"></ion-icon> [title]="icon.label | translate"
[attr.aria-label]="icon.label | translate"
slot="end">
</ion-icon>
</ng-container> </ng-container>
</ion-item> </ion-item>

View File

@ -1,7 +1,18 @@
@import "~theme/globals"; @import "~theme/globals";
// @todo darkmode :host {
// @todo RTL layout --header-background: var(--white);
--odd-cell-background: var(--gray-lighter);
--even-cell-background: var(--white);
--icon-color: #999999;
}
:host-context(body.dark) {
--header-background: var(--black);
--odd-cell-background: var(--gray-darker);
--even-cell-background: var(--black);
--icon-color: #eeeeee;
}
:host-context(ion-app.md) { :host-context(ion-app.md) {
--border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, .13)))); --border-color: var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, rgba(0, 0, 0, .13))));
@ -18,16 +29,12 @@
font-size: 16px; font-size: 16px;
color: var(--ion-text-color); color: var(--ion-text-color);
// @include darkmode() {
// color: $core-dark-text-color;
// }
tr { tr {
border-bottom: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color);
} }
th, td { th, td {
padding: 10px 0 10px 10px; @include padding(10px, 10px, 10px, null);
vertical-align: top; vertical-align: top;
white-space: normal; white-space: normal;
text-align: start; text-align: start;
@ -36,11 +43,7 @@
thead th { thead th {
vertical-align: bottom; vertical-align: bottom;
font-weight: bold; font-weight: bold;
background-color: var(--white); background-color: var(--header-background);
// @include darkmode() {
// background-color: $black;
// }
} }
tbody th { tbody th {
@ -48,15 +51,15 @@
} }
#gradeitem { #gradeitem {
padding-left: 5px; @include padding(null, null, null, 5px);
} }
.core-grades-table-gradeitem { .core-grades-table-gradeitem {
padding-left: 5px; @include padding(null, null, null, 5px);
font-weight: bold; font-weight: bold;
&.column-itemname { &.column-itemname {
padding-left: 0; @include padding(null, null, null, 0);
} }
img { img {
@ -65,17 +68,17 @@
} }
ion-icon { ion-icon {
color: #999999; color: var(--icon-color);
} }
span { span {
margin-left: 5px; @include margin(null, null, null, 5px);
} }
} }
.core-grades-table-feedback { .core-grades-table-feedback {
padding-left: 5px; @include padding(null, null, null, 5px);
.no-overflow { .no-overflow {
overflow: auto; overflow: auto;
@ -89,27 +92,16 @@
} }
.odd { .odd {
td, th, th[aria-current="page"] { td, th, th[aria-current="page"] {
background-color: var(--gray-lighter); background-color: var(--odd-cell-background);
// @include darkmode() {
// background-color: $gray-darker;
// }
} }
} }
.even { .even {
td, th, th[aria-current="page"] { td, th, th[aria-current="page"] {
background-color: var(--white); background-color: var(--even-cell-background);
// @include darkmode() {
// background-color: $black;
// }
} }
} }
.core-grades-grade-clickable { .core-grades-grade-clickable {

View File

@ -93,7 +93,7 @@
(ionCancel)="filterChanged()" [placeholder]="'core.login.findyoursite' | translate"> (ionCancel)="filterChanged()" [placeholder]="'core.login.findyoursite' | translate">
</ion-searchbar> </ion-searchbar>
<ng-container *ngFor="let site of filteredSites"> <ng-container *ngFor="let site of filteredSites">
<ng-container *ngTemplateOutlet="site"></ng-container> <ng-container *ngTemplateOutlet="sitelisting; context: {site: site}"></ng-container>
</ng-container> </ng-container>
</ion-list> </ion-list>
</ng-container> </ng-container>

View File

@ -2,14 +2,6 @@
margin-bottom: 20px; margin-bottom: 20px;
} }
.searchbar-ios {
background: transparent;
.searchbar-input {
background-color: white; // @todo $searchbar-ios-toolbar-input-background;
}
}
.item { .item {
&.core-login-need-help { &.core-login-need-help {
margin-top: 16px; margin-top: 16px;

View File

@ -17,10 +17,3 @@ $core-dashboard-logo: false !default;
display: none; display: none;
} }
} }
ion-badge.core-course-download-courses-progress {
display: block;
// @include float(start);
// @include margin(12px, 12px, null, 12px);
}

View File

@ -6,11 +6,11 @@
[autocorrect]="autocorrect" [spellcheck]="spellcheck" [core-auto-focus]="autoFocus" [autocorrect]="autocorrect" [spellcheck]="spellcheck" [core-auto-focus]="autoFocus"
[disabled]="disabled" role="searchbox" (ionFocus)="focus($event)"> [disabled]="disabled" role="searchbox" (ionFocus)="focus($event)">
</ion-input> </ion-input>
<ion-button slot="end" fill="clear" type="submit" size="small" [attr.aria-label]="searchLabel" <ion-button slot="end" fill="clear" type="submit" [attr.aria-label]="searchLabel"
[disabled]="disabled || !searchText || (searchText.length < lengthCheck)"> [disabled]="disabled || !searchText || (searchText.length < lengthCheck)">
<ion-icon name="fas-search" slot="icon-only" aria-hidden="true"></ion-icon> <ion-icon name="fas-search" slot="icon-only" aria-hidden="true"></ion-icon>
</ion-button> </ion-button>
<ion-button *ngIf="showClear" slot="end" fill="clear" size="small" <ion-button *ngIf="showClear" slot="end" fill="clear"
[attr.aria-label]="'core.clearsearch' | translate" [disabled]="searched == '' || disabled" [attr.aria-label]="'core.clearsearch' | translate" [disabled]="searched == '' || disabled"
(click)="clearForm()"> (click)="clearForm()">
<ion-icon name="fas-backspace" slot="icon-only" aria-hidden="true"></ion-icon> <ion-icon name="fas-backspace" slot="icon-only" aria-hidden="true"></ion-icon>

View File

@ -228,7 +228,7 @@ $core-login-text-color-dark: $white !default;
$core-star-color: $brand-color !default; $core-star-color: $brand-color !default;
$core-large-avatar-size: 90px !default; $core-large-avatar-size: 90px !default;
$core-avatar-size: 40px !default; $core-avatar-size: 44px !default;
$core-send-message-input-background: $gray !default; $core-send-message-input-background: $gray !default;
$core-send-message-input-color: $black !default; $core-send-message-input-color: $black !default;
@ -252,7 +252,7 @@ $addon-messages-avatar-size: 30px !default;
$addon-messages-discussion-badge: $primary !default; $addon-messages-discussion-badge: $primary !default;
$addon-messages-discussion-badge-text: $white !default; $addon-messages-discussion-badge-text: $white !default;
$addon-forum-avatar-size: 28px !default; $addon-forum-avatar-size: 44px !default;
$addon-forum-border-color: $gray !default; $addon-forum-border-color: $gray !default;
$addon-forum-highlight-color: $gray-lighter !default; $addon-forum-highlight-color: $gray-lighter !default;

View File

@ -1,4 +1,4 @@
@import "./globals.mixins.ionic.scss"; @import "./globals.scss";
// Common styles. // Common styles.
.text-left { text-align: left; } .text-left { text-align: left; }
@ -126,12 +126,17 @@ ion-button.button-small ion-icon.faicon[slot] {
font-size: 1.5em !important; font-size: 1.5em !important;
} }
[dir=rtl] ion-icon.icon-flip-rtl { [dir=rtl] ion-icon.icon-flip-rtl,
[dir=rtl] ion-item::part(detail-icon),
[dir=rtl] ion-icon.item-detail-icon {
transform: scaleX(-1); transform: scaleX(-1);
} }
// Buttons. // Buttons.
ion-button, button, [role="button"] { ion-button,
ion-fab-button,
button,
[role="button"] {
min-height: var(--a11y-min-target-size); min-height: var(--a11y-min-target-size);
min-width: var(--a11y-min-target-size); min-width: var(--a11y-min-target-size);
} }
@ -203,7 +208,7 @@ ion-toolbar {
// Modals. // Modals.
.core-modal-fullscreen .modal-wrapper { .core-modal-fullscreen .modal-wrapper {
position: absolute; position: absolute;
// @todo @include position(0 !important, null, null, 0 !important); @include position(0 !important, null, null, 0 !important);
display: block; display: block;
width: 100% !important; width: 100% !important;
height: 100% !important; height: 100% !important;
@ -215,11 +220,10 @@ ion-toolbar {
@media only screen and (min-height: 400px) and (min-width: 300px) { @media only screen and (min-height: 400px) and (min-width: 300px) {
.core-modal-lateral { .core-modal-lateral {
// @todo @include core-split-area-end();
.modal-wrapper { .modal-wrapper {
position: absolute; position: absolute;
@include position(0 !important, 0 !important, 0 !important, auto); @include position(0 !important, 0 !important, 0 !important, unset !important);
display: block; display: block;
height: 100% !important; height: 100% !important;
width: auto; width: auto;
@ -422,6 +426,16 @@ ion-select::part(text) {
text-decoration: underline; text-decoration: underline;
} }
core-block ion-item-divider .core-button-spinner {
display: flex;
align-items: center;
@include margin-horizontal(10px);
ion-badge.core-course-download-courses-progress {
@include margin(null, 12px, null, null);
}
}
// Horizontal scrolling elements // Horizontal scrolling elements
.core-horizontal-scroll { .core-horizontal-scroll {
display: flex; display: flex;