diff --git a/src/addons/mod/assign/tests/behat/snapshots/test-basic-usage-of-assignment-activity-in-app-editadd-submission-online-text--add-new-attempt-from-previous-submission--submit-for-grading_8.png b/src/addons/mod/assign/tests/behat/snapshots/test-basic-usage-of-assignment-activity-in-app-editadd-submission-online-text--add-new-attempt-from-previous-submission--submit-for-grading_8.png index 9c5a9dc4d..c5c9d3eca 100644 Binary files a/src/addons/mod/assign/tests/behat/snapshots/test-basic-usage-of-assignment-activity-in-app-editadd-submission-online-text--add-new-attempt-from-previous-submission--submit-for-grading_8.png and b/src/addons/mod/assign/tests/behat/snapshots/test-basic-usage-of-assignment-activity-in-app-editadd-submission-online-text--add-new-attempt-from-previous-submission--submit-for-grading_8.png differ diff --git a/src/addons/mod/forum/services/handlers/module.ts b/src/addons/mod/forum/services/handlers/module.ts index 7917e8df8..005ccce63 100644 --- a/src/addons/mod/forum/services/handlers/module.ts +++ b/src/addons/mod/forum/services/handlers/module.ts @@ -21,7 +21,6 @@ import { CoreCourseModuleHandler, CoreCourseModuleHandlerData } from '@features/ import { CoreConstants, ModPurpose } from '@/core/constants'; import { CoreModuleHandlerBase } from '@features/course/classes/module-base-handler'; import { CoreCourseModuleData } from '@features/course/services/course-helper'; -import { CoreIonicColorNames } from '@singletons/colors'; /** * Handler to support forum modules. @@ -57,7 +56,6 @@ export class AddonModForumModuleHandlerService extends CoreModuleHandlerBase imp const data = await super.getData(module, courseId); if ('afterlink' in module && !!module.afterlink) { - data.extraBadgeColor = undefined; const match = />(\d+)[^<]+/.exec(module.afterlink); data.extraBadge = match ? Translate.instant('addon.mod_forum.unreadpostsnumber', { $a : match[1] }) : ''; } else { @@ -113,7 +111,6 @@ export class AddonModForumModuleHandlerService extends CoreModuleHandlerBase imp } data.extraBadge = Translate.instant('core.loading'); - data.extraBadgeColor = CoreIonicColorNames.DARK; try { // Handle unread posts. @@ -122,7 +119,6 @@ export class AddonModForumModuleHandlerService extends CoreModuleHandlerBase imp siteId, }); - data.extraBadgeColor = undefined; data.extraBadge = forum.unreadpostscount ? Translate.instant( 'addon.mod_forum.unreadpostsnumber', @@ -131,7 +127,6 @@ export class AddonModForumModuleHandlerService extends CoreModuleHandlerBase imp : ''; } catch { // Ignore errors. - data.extraBadgeColor = undefined; data.extraBadge = ''; } } diff --git a/src/addons/mod/forum/tests/behat/snapshots/test-basic-usage-of-forum-activity-in-app-reply-a-post_9.png b/src/addons/mod/forum/tests/behat/snapshots/test-basic-usage-of-forum-activity-in-app-reply-a-post_9.png index 73d12cb73..5ed3c24af 100644 Binary files a/src/addons/mod/forum/tests/behat/snapshots/test-basic-usage-of-forum-activity-in-app-reply-a-post_9.png and b/src/addons/mod/forum/tests/behat/snapshots/test-basic-usage-of-forum-activity-in-app-reply-a-post_9.png differ diff --git a/src/addons/mod/lti/services/handlers/module.ts b/src/addons/mod/lti/services/handlers/module.ts index 65becc928..574758a90 100644 --- a/src/addons/mod/lti/services/handlers/module.ts +++ b/src/addons/mod/lti/services/handlers/module.ts @@ -59,7 +59,7 @@ export class AddonModLtiModuleHandlerService extends CoreModuleHandlerBase imple ): Promise { const data = await super.getData(module, courseId, sectionId, forCoursePage); data.showDownloadButton = false; - data.buttons = [{ + data.button = { icon: 'fas-up-right-from-square', label: 'addon.mod_lti.launchactivity', action: (event: Event, module: CoreCourseModuleData, courseId: number): void => { @@ -68,7 +68,7 @@ export class AddonModLtiModuleHandlerService extends CoreModuleHandlerBase imple CoreCourse.storeModuleViewed(courseId, module.id); }, - }]; + }; return data; } diff --git a/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_26.png b/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_26.png index 1ed74c01b..ed8787ff3 100644 Binary files a/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_26.png and b/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_26.png differ diff --git a/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_36.png b/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_36.png index e7da98964..31ca59293 100644 Binary files a/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_36.png and b/src/addons/mod/quiz/tests/behat/snapshots/attempt-a-quiz-in-app-submit-a-quiz--review-a-quiz-attempt_36.png differ diff --git a/src/addons/mod/resource/services/handlers/module.ts b/src/addons/mod/resource/services/handlers/module.ts index 2e2bfbeb0..b4594ca6a 100644 --- a/src/addons/mod/resource/services/handlers/module.ts +++ b/src/addons/mod/resource/services/handlers/module.ts @@ -73,14 +73,14 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase const handlerData = await super.getData(module, courseId, sectionId, forCoursePage); handlerData.updateStatus = (status) => { - if (!handlerData.buttons) { + if (!handlerData.button) { return; } - handlerData.buttons[0].hidden = status !== CoreConstants.DOWNLOADED || + handlerData.button.hidden = status !== CoreConstants.DOWNLOADED || AddonModResourceHelper.isDisplayedInIframe(module); }; - handlerData.buttons = [{ + handlerData.button = { hidden: true, icon: openWithPicker ? 'fas-share-from-square' : 'fas-file', label: module.name + ': ' + Translate.instant(openWithPicker ? 'core.openwith' : 'addon.mod_resource.openthefile'), @@ -92,7 +92,7 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase CoreCourse.storeModuleViewed(courseId, module.id); } }, - }]; + }; this.getResourceData(module, courseId, handlerData).then((extra) => { handlerData.extraBadge = extra; @@ -144,11 +144,11 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase // Check if the button needs to be shown or not. promises.push(this.hideOpenButton(module).then((hideOpenButton) => { - if (!handlerData.buttons) { + if (!handlerData.button) { return; } - handlerData.buttons[0].hidden = hideOpenButton; + handlerData.button.hidden = hideOpenButton; return; })); @@ -166,58 +166,61 @@ export class AddonModResourceModuleHandlerService extends CoreModuleHandlerBase await Promise.all(promises); - const extra: string[] = []; - if (module.contentsinfo) { // No need to use the list of files. - extra.push(CoreTextUtils.cleanTags(module.afterlink)); - } else if (module.contents && module.contents[0]) { - const files = module.contents; - const file = files[0]; + return CoreTextUtils.cleanTags(module.afterlink); + } - if (options.showsize) { - const size = options.filedetails - ? options.filedetails.size - : files.reduce((result, file) => result + (file.filesize || 0), 0); + if (!module.contents || !module.contents[0]) { + return ''; + } - extra.push(CoreTextUtils.bytesToSize(size, 1)); - } + const extra: string[] = []; + const files = module.contents; + const mainFile = files[0]; - if (options.showtype) { - // We should take it from options.filedetails.size if available but it's already translated. - extra.push(CoreMimetypeUtils.getMimetypeDescription(file)); - } + if (options.showsize) { + const size = options.filedetails + ? options.filedetails.size + : files.reduce((result, file) => result + (file.filesize || 0), 0); - if (options.showdate) { - const timecreated = 'timecreated' in file ? file.timecreated : 0; + extra.push(CoreTextUtils.bytesToSize(size, 1)); + } - if (options.filedetails && options.filedetails.modifieddate) { - extra.push(Translate.instant( - 'addon.mod_resource.modifieddate', - { $a: CoreTimeUtils.userDate(options.filedetails.modifieddate * 1000, 'core.strftimedatetimeshort') }, - )); - } else if (options.filedetails && options.filedetails.uploadeddate) { - extra.push(Translate.instant( - 'addon.mod_resource.uploadeddate', - { $a: CoreTimeUtils.userDate(options.filedetails.uploadeddate * 1000, 'core.strftimedatetimeshort') }, - )); - } else if ((file.timemodified || 0) > timecreated + CoreConstants.SECONDS_MINUTE * 5) { - /* Modified date may be up to several minutes later than uploaded date just because - teacher did not submit the form promptly. Give teacher up to 5 minutes to do it. */ - extra.push(Translate.instant( - 'addon.mod_resource.modifieddate', - { $a: CoreTimeUtils.userDate((file.timemodified || 0) * 1000, 'core.strftimedatetimeshort') }, - )); - } else { - extra.push(Translate.instant( - 'addon.mod_resource.uploadeddate', - { $a: CoreTimeUtils.userDate(timecreated * 1000, 'core.strftimedatetimeshort') }, - )); - } + if (options.showtype) { + // We should take it from options.filedetails.size if available but it's already translated. + extra.push(CoreMimetypeUtils.getMimetypeDescription(mainFile)); + } + + if (options.showdate) { + const timecreated = 'timecreated' in mainFile ? mainFile.timecreated : 0; + + if (options.filedetails && options.filedetails.modifieddate) { + extra.push(Translate.instant( + 'addon.mod_resource.modifieddate', + { $a: CoreTimeUtils.userDate(options.filedetails.modifieddate * 1000, 'core.strftimedatetimeshort') }, + )); + } else if (options.filedetails && options.filedetails.uploadeddate) { + extra.push(Translate.instant( + 'addon.mod_resource.uploadeddate', + { $a: CoreTimeUtils.userDate(options.filedetails.uploadeddate * 1000, 'core.strftimedatetimeshort') }, + )); + } else if ((mainFile.timemodified || 0) > timecreated + CoreConstants.SECONDS_MINUTE * 5) { + /* Modified date may be up to several minutes later than uploaded date just because + teacher did not submit the form promptly. Give teacher up to 5 minutes to do it. */ + extra.push(Translate.instant( + 'addon.mod_resource.modifieddate', + { $a: CoreTimeUtils.userDate((mainFile.timemodified || 0) * 1000, 'core.strftimedatetimeshort') }, + )); + } else { + extra.push(Translate.instant( + 'addon.mod_resource.uploadeddate', + { $a: CoreTimeUtils.userDate(timecreated * 1000, 'core.strftimedatetimeshort') }, + )); } } - return extra.join(' '); + return extra.join(' ยท '); } /** diff --git a/src/addons/mod/url/services/handlers/module.ts b/src/addons/mod/url/services/handlers/module.ts index b0c0f8be3..02e9c557f 100644 --- a/src/addons/mod/url/services/handlers/module.ts +++ b/src/addons/mod/url/services/handlers/module.ts @@ -93,20 +93,20 @@ export class AddonModUrlModuleHandlerService extends CoreModuleHandlerBase imple modal.dismiss(); } }, - buttons: [{ + button: { hidden: true, // Hide it until we calculate if it should be displayed or not. icon: 'fas-link', label: 'core.openmodinbrowser', action: (event: Event, module: CoreCourseModuleData, courseId: number): void => { openUrl(module, courseId); }, - }], + }, }; const hideButton = await CoreUtils.ignoreErrors(this.hideLinkButton(module)); - if (handlerData.buttons && hideButton !== undefined) { - handlerData.buttons[0].hidden = hideButton; + if (handlerData.button && hideButton !== undefined) { + handlerData.button.hidden = hideButton; } try { diff --git a/src/core/features/course/components/course-format/course-format.scss b/src/core/features/course/components/course-format/course-format.scss index da38b60b6..7975742e0 100644 --- a/src/core/features/course/components/course-format/course-format.scss +++ b/src/core/features/course/components/course-format/course-format.scss @@ -16,6 +16,5 @@ } .course-section { - --padding-start: 12px; --inner-padding-end: 12px; } diff --git a/src/core/features/course/components/module-info/course-module-info.scss b/src/core/features/course/components/module-info/course-module-info.scss index a95a6898e..389a72714 100644 --- a/src/core/features/course/components/module-info/course-module-info.scss +++ b/src/core/features/course/components/module-info/course-module-info.scss @@ -10,14 +10,14 @@ core-mod-icon { align-self: flex-start; - --padding: 12px; + --padding: 4px; + @include margin-horizontal(null, 8px); } h1 ion-icon { color: var(--medium); @include margin-horizontal(8px, null); font-size: 80%; - } .core-module-info-box { diff --git a/src/core/features/course/components/module/core-course-module.html b/src/core/features/course/components/module/core-course-module.html index 0f4185250..209ee9b14 100644 --- a/src/core/features/course/components/module/core-course-module.html +++ b/src/core/features/course/components/module/core-course-module.html @@ -1,84 +1,90 @@ - + - + + +
+ + +
+

+ + + + +

- - +
+ + + + {{ 'core.course.hiddenfromstudents' | translate }} + + + + {{ 'core.course.hiddenoncoursepage' | translate }} + +
+
+ +
+ + + - -

- - - - -

+ + + -
- - - + + + + - - - {{ 'core.course.hiddenfromstudents' | translate }} - - - {{ 'core.course.hiddenoncoursepage' | translate }} - + + + + +
- - -
- - - -
- - - - + +
+ +
-
- - - - - - + -
- -
- - -
+ + +
+ +
@@ -89,7 +95,10 @@
+
+
@@ -99,9 +108,8 @@ - + diff --git a/src/core/features/course/components/module/module.scss b/src/core/features/course/components/module/module.scss index 26a9d0770..88523de67 100644 --- a/src/core/features/course/components/module/module.scss +++ b/src/core/features/course/components/module/module.scss @@ -1,73 +1,148 @@ @import "~theme/globals"; :host { - --horizontal-margin: 10px; - --vertical-margin: 10px; + --horizontal-margin: 12px; + --vertical-margin: 12px; + --card-padding: 16px; ion-card { margin: var(--vertical-margin) var(--horizontal-margin); } ion-item { - --padding-start: 12px; + --padding-start: var(--card-padding); + --inner-padding-end: var(--card-padding); + ion-label { + margin-top: var(--card-padding); + margin-bottom: var(--card-padding); + &>:last-child { + margin-bottom: 0px; + } + } } - ion-item.core-module-main-item { + .activity-main { --min-height: 52px; + display: flex; + flex-direction: row; - .core-module-title .item-heading ion-icon { - @include margin-horizontal(8px, null); - vertical-align: middle; + core-mod-icon { + margin-top: 0px; + margin-bottom: 0px; + --module-icon-padding: 4px; + --module-icon-radius: var(--radius-xs); + + @include margin-horizontal(null, 8px); + align-self: self-start; } - .core-module-buttons, - .buttons.core-module-buttons { + .activity-title { + flex-grow: 1; + align-self: center; + @include margin-horizontal(null, var(--card-padding)); + + .item-heading ion-icon { + @include margin-horizontal(8px, null); + vertical-align: middle; + } + } + + .core-module-buttons { + align-self: self-start; margin: 0; - } - .core-module-buttons, - .core-module-buttons-more { display: flex; flex-flow: row; align-items: center; z-index: 1; justify-content: space-around; align-content: center; - } - .core-module-buttons core-course-module-completion, - .core-module-buttons-more button { - cursor: pointer; - pointer-events: auto; - } + ion-button.core-module-button-more { + cursor: pointer; + pointer-events: auto; + margin: 0px 8px; + --a11y-target-min-size: 32px; + width: var(--a11y-target-min-size); + height: var(--a11y-target-min-size); + min-width: var(--a11y-target-min-size); + min-height: var(--a11y-target-min-size); + --padding-start: 0px; + --padding-end: 0px; + ion-icon { + font-size: 20px; + } + } - .core-module-buttons core-course-module-completion { - text-align: center; + core-course-module-completion { + --margin: 0px; + } } .core-module-additional-info { display: flex; align-items: center; flex-wrap: wrap; + margin-top: 4px; + margin-bottom: 4px; + + ion-badge { + @include margin-horizontal(null, 4px); + font-size: 12px; + font-weight: normal; + } } } - .core-course-module-info { - .core-module-dates-availabilityinfo { - background: var(--light); - border-radius: var(--radius-xs); - padding: 8px; - } + .core-module-description ::ng-deep img { + border-radius: var(--radius-lg); + } - .core-module-dates + .core-module-availabilityinfo { - border-top: 1px solid var(--stroke); - padding-top: 8px; - } + core-course-module-completion { + --margin: 8px 0px; + } + .activity-dates { + display: flex; + flex-direction: row; + flex-wrap: wrap; + + core-reminders-date { + --display-icon: none; + } + } + + .activity-description-availabilityinfo, + .activity-extrabadges { + margin-top: 8px; + padding-top: 8px; + border-top: 1px solid var(--stroke); + } + + .activity-extrabadges { + color: var(--gray-700); + } + + .activity-description-availabilityinfo { .core-module-availabilityinfo { - font-size: 90%; - ::ng-deep ul { - margin-top: 0.5em; + background: var(--gray-300); + border-radius: var(--radius-sm); + margin-top: 8px; + padding: 8px; + font-size: 14px; + line-height: 120%; + + ::ng-deep ul { + margin-top: 8px; + margin-bottom: 0px; + + li { + margin-bottom: 4px; + } + } + + ion-icon { + @include margin-horizontal(null, 8px); } } } @@ -79,19 +154,6 @@ clear: both; } - .core-module-main-item + .core-course-module-info ion-label { - margin-top: 0px; - } - - .core-module-availabilityinfo ion-icon, - .core-module-dates ion-icon { - @include margin-horizontal(null, 8px); - } - - .core-course-module-info ::ng-deep core-course-module-completion .core-module-automatic-completion-conditions .completioninfo.completion_complete { - display: none; - } - .core-course-last-module-viewed { padding: 8px 12px; color: var(--subdued-text-color); @@ -102,14 +164,25 @@ } } + @include media-breakpoint-down(md) { + .core-module-buttons core-course-module-completion { + display: none; + } + } + + @include media-breakpoint-up(md) { + core-course-module-completion.activity-extra { + display: none; + } + } + &.indented ion-card { border: none; - border-radius: 0; - margin-inline-start: calc(var(--horizontal-margin) + 1rem); + --ion-card-radius: 0; + @include margin-horizontal(calc(var(--horizontal-margin) + 1rem), null); } &.indented + ::ng-deep core-course-module.indented ion-card { border-top: 1px solid var(--border-color); } - } diff --git a/src/core/features/course/components/module/module.ts b/src/core/features/course/components/module/module.ts index 10fac6748..cccd63e81 100644 --- a/src/core/features/course/components/module/module.ts +++ b/src/core/features/course/components/module/module.ts @@ -21,8 +21,8 @@ import { CoreCourseSection, CoreCourseHelper, } from '@features/course/services/course-helper'; -import { CoreCourse, CoreCourseModuleCompletionStatus, CoreCourseModuleCompletionTracking } from '@features/course/services/course'; -import { CoreCourseModuleDelegate, CoreCourseModuleHandlerButton } from '@features/course/services/module-delegate'; +import { CoreCourse } from '@features/course/services/course'; +import { CoreCourseModuleDelegate } from '@features/course/services/module-delegate'; import { CoreCourseModulePrefetchDelegate, CoreCourseModulePrefetchHandler, @@ -55,7 +55,6 @@ export class CoreCourseModuleComponent implements OnInit, OnDestroy { @HostBinding('class.indented') indented = false; modNameTranslated = ''; - hasInfo = false; hasCompletion = false; // Whether activity has completion to be shown. showManualCompletion = false; // Whether to show manual completion when completion conditions are disabled. prefetchStatusIcon$ = new BehaviorSubject(''); // Module prefetch status icon. @@ -87,13 +86,6 @@ export class CoreCourseModuleComponent implements OnInit, OnDestroy { this.module.handlerData.a11yTitle = this.module.handlerData.a11yTitle ?? this.module.handlerData.title; this.moduleHasView = CoreCourse.moduleHasView(this.module); - this.hasInfo = !!( - this.module.description || - (this.showActivityDates && this.module.dates && this.module.dates.length) || - (this.hasCompletion && !this.showLegacyCompletion) || - (this.module.availabilityinfo) - ); - if (this.module.handlerData?.showDownloadButton) { const status = await CoreCourseModulePrefetchDelegate.getModuleStatus(this.module, this.module.course); this.updateModuleStatus(status); @@ -177,9 +169,9 @@ export class CoreCourseModuleComponent implements OnInit, OnDestroy { * Function called when a button is clicked. * * @param event Click event. - * @param button The clicked button. */ - buttonClicked(event: Event, button: CoreCourseModuleHandlerButton): void { + buttonClicked(event: Event): void { + const button = this.module.handlerData?.button ?? this.module.handlerData?.buttons?.[0]; if (!button || !button.action) { return; } diff --git a/src/core/features/course/pages/module-preview/module-preview.html b/src/core/features/course/pages/module-preview/module-preview.html index 4995c5aa9..c2656b26b 100644 --- a/src/core/features/course/pages/module-preview/module-preview.html +++ b/src/core/features/course/pages/module-preview/module-preview.html @@ -29,17 +29,18 @@ -
- - - + +
+

+

- + + {{ 'core.course.hiddenfromstudents' | translate }} - + + {{ 'core.course.hiddenoncoursepage' | translate }}
diff --git a/src/core/features/course/services/module-delegate.ts b/src/core/features/course/services/module-delegate.ts index 8ee7cd75d..faf5b59fc 100644 --- a/src/core/features/course/services/module-delegate.ts +++ b/src/core/features/course/services/module-delegate.ts @@ -156,6 +156,8 @@ export interface CoreCourseModuleHandlerData { /** * The color of the extra badge. Default: primary. + * + * @deprecated since 4.3 Not used anymore. */ extraBadgeColor?: CoreIonicColorNames; @@ -168,9 +170,16 @@ export interface CoreCourseModuleHandlerData { /** * The buttons to display in the module item. + * + * @deprecated since 4.3 Use button instead. It will only display the first. */ buttons?: CoreCourseModuleHandlerButton[]; + /** + * The button to display in the module item. + */ + button?: CoreCourseModuleHandlerButton; + /** * Whether to display a spinner where the download button is displayed. The module icon, title, etc. will be displayed. */ diff --git a/src/core/features/course/tests/behat/snapshots/test-basic-usage-of-one-course-in-app-view-course-contents_46.png b/src/core/features/course/tests/behat/snapshots/test-basic-usage-of-one-course-in-app-view-course-contents_46.png index ccb14fbed..431c0a806 100644 Binary files a/src/core/features/course/tests/behat/snapshots/test-basic-usage-of-one-course-in-app-view-course-contents_46.png and b/src/core/features/course/tests/behat/snapshots/test-basic-usage-of-one-course-in-app-view-course-contents_46.png differ diff --git a/src/core/features/login/tests/behat/snapshots/test-basic-usage-of-login-in-app-add-a-new-account-in-the-app--site-name-in-displayed-when-adding-a-new-account_13.png b/src/core/features/login/tests/behat/snapshots/test-basic-usage-of-login-in-app-add-a-new-account-in-the-app--site-name-in-displayed-when-adding-a-new-account_13.png index c8b65b11e..b5a0d1bc1 100644 Binary files a/src/core/features/login/tests/behat/snapshots/test-basic-usage-of-login-in-app-add-a-new-account-in-the-app--site-name-in-displayed-when-adding-a-new-account_13.png and b/src/core/features/login/tests/behat/snapshots/test-basic-usage-of-login-in-app-add-a-new-account-in-the-app--site-name-in-displayed-when-adding-a-new-account_13.png differ diff --git a/src/core/features/reminders/components/date/date.scss b/src/core/features/reminders/components/date/date.scss index e898db6da..8d16930b4 100644 --- a/src/core/features/reminders/components/date/date.scss +++ b/src/core/features/reminders/components/date/date.scss @@ -3,6 +3,8 @@ :host { display: flex; flex-direction: row; + margin-top: 8px; + @include margin-horizontal(null, 8px); } div { @@ -12,10 +14,7 @@ div { align-self: center; ion-icon { + display: var(--display-icon, inline-block); @include margin-horizontal(0px, 4px); } } - -core-reminders-date + :host { - margin-top: 12px; -} diff --git a/src/theme/components/mod-label.scss b/src/theme/components/mod-label.scss index e68f7324f..357b9b9ca 100644 --- a/src/theme/components/mod-label.scss +++ b/src/theme/components/mod-label.scss @@ -1,8 +1,16 @@ -.item.core-course-module-handler.addon-mod-label-handler { +.core-course-module-handler.addon-mod-label-handler { align-items: center !important; cursor: auto !important; &:hover { opacity: 1; } + + .activity-title { + display: flex; + flex-direction: column; + .item-heading { + order: 2; + } + } } diff --git a/src/theme/theme.light.scss b/src/theme/theme.light.scss index ee7d4df9d..cfe8b4574 100644 --- a/src/theme/theme.light.scss +++ b/src/theme/theme.light.scss @@ -92,9 +92,9 @@ html { --subdued-text-color: var(--medium); --ion-card-color: var(--text-color); - --ion-card-vertical-margin: 10px; - --ion-card-horizontal-margin: 10px; - --ion-card-radius: var(--radius-sm); + --ion-card-vertical-margin: 12px; + --ion-card-horizontal-margin: 12px; + --ion-card-radius: var(--radius-lg); --ion-card-border-width: 1px; --ion-card-border-color: var(--stroke); ion-card { diff --git a/upgrade.txt b/upgrade.txt index dcb5816f9..f38922c56 100644 --- a/upgrade.txt +++ b/upgrade.txt @@ -7,6 +7,7 @@ information provided here is intended especially for developers. - Font Awesome icon library has been updated to 6.4.0. But nothing has changed, only version number. - The analytics system in the app has been refactored and some functions that could trigger analytics calls no longer do it, now you need to use CoreAnalytics instead. Some functions in CoreCourseLogHelper and CorePushNotificationsProvider have been deprecated. - Due to the analytics refactor, the parameters of most log functions have changed. + - CoreCourseModuleHandlerData.buttons has been deprecated, now only one button in atribute button will be shown. === 4.2.0 ===