From 66fe7934258eb1f42ca40645ee36a0f286ed2ef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Tue, 12 Dec 2023 13:25:33 +0100 Subject: [PATCH 01/11] MOBILE-3947 ionic: Update ionic to 7.6.1 --- package-lock.json | 24 ++++++++++++------------ package.json | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 59d7c43d3e9..841cc1fb7ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,7 @@ "@awesome-cordova-plugins/sqlite": "^6.3.0", "@awesome-cordova-plugins/status-bar": "^6.3.0", "@awesome-cordova-plugins/web-intent": "^6.3.0", - "@ionic/angular": "^7.0.0", + "@ionic/angular": "^7.6.1", "@ionic/cordova-builders": "^10.0.0", "@moodlehq/cordova-plugin-advanced-http": "3.3.1-moodle.1", "@moodlehq/cordova-plugin-camera": "6.0.0-moodle.2", @@ -3449,11 +3449,11 @@ "dev": true }, "node_modules/@ionic/angular": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-7.5.6.tgz", - "integrity": "sha512-RJDQgGiVRps/04HBfx23E8tiGCvzE2d5NpWB1Mi1CDmc0ENTSc6odb2XI45YhFxmGvQsWZ8k+H1N/8emAHPraw==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-7.6.1.tgz", + "integrity": "sha512-Eh//g/bAL9se4PD6C19NqymgQbqKp4W+Ffbjo8Qnqwk02jGMs/jcMP0WVEcLNiEws2m67kIiWItrUhJjb8pplA==", "dependencies": { - "@ionic/core": "7.5.6", + "@ionic/core": "7.6.1", "ionicons": "^7.0.0", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -3967,11 +3967,11 @@ } }, "node_modules/@ionic/core": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-7.5.6.tgz", - "integrity": "sha512-bYQp2twwm61uA0Q31ToVIpQWsiQ9so1dRoWZPD+l+y4fVuFmOCLYeS6XTLTm73jVBq40JfEcsac7eYC4DxoemQ==", + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-7.6.1.tgz", + "integrity": "sha512-o4PSRxokfRB5H3E5DAM7xivG8XFXaXD3+U/tha0QKemiMSntqgPqy0FYX0pNEwIrV3llRzFbAGNqyvB1+BG97Q==", "dependencies": { - "@stencil/core": "^4.7.2", + "@stencil/core": "^4.8.2", "ionicons": "^7.2.1", "tslib": "^2.1.0" } @@ -5990,9 +5990,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.7.2.tgz", - "integrity": "sha512-sPPDYrXiTbfeUF5CCyfqysXK/yfTHC4xYR1+nHzGkS2vhRSBOLp0oPuB+xkJLKA+K2ZqDJUxpOnDxy1CLWwBXA==", + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.8.2.tgz", + "integrity": "sha512-KdZEAtz9VnqMtXOkf51+8mphyRt0fN/LYgtj5M8gnveGspG8KzoyTDzlWt0wsstWIsJJ21RA1yd3AgMMZiu3MA==", "bin": { "stencil": "bin/stencil" }, diff --git a/package.json b/package.json index 9e0dfa518b9..7e739e54994 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "@awesome-cordova-plugins/sqlite": "^6.3.0", "@awesome-cordova-plugins/status-bar": "^6.3.0", "@awesome-cordova-plugins/web-intent": "^6.3.0", - "@ionic/angular": "^7.0.0", + "@ionic/angular": "^7.6.1", "@ionic/cordova-builders": "^10.0.0", "@moodlehq/cordova-plugin-advanced-http": "3.3.1-moodle.1", "@moodlehq/cordova-plugin-camera": "6.0.0-moodle.2", From 50596da0f2a0de4463fc341720849ab0cc90408b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Thu, 30 Nov 2023 15:08:10 +0100 Subject: [PATCH 02/11] MOBILE-3947 chore: Change Combobox select mandatory child --- src/core/components/combobox/combobox.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/components/combobox/combobox.ts b/src/core/components/combobox/combobox.ts index 05d0d7d2503..97414ae212a 100644 --- a/src/core/components/combobox/combobox.ts +++ b/src/core/components/combobox/combobox.ts @@ -51,7 +51,7 @@ import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; }) export class CoreComboboxComponent implements ControlValueAccessor { - @ViewChild(IonSelect) select!: IonSelect; + @ViewChild(IonSelect) select?: IonSelect; @Input() interface: 'popover' | 'modal' = 'popover'; @Input() label = Translate.instant('core.show'); // Aria label. @@ -118,7 +118,7 @@ export class CoreComboboxComponent implements ControlValueAccessor { async openSelect(event?: UIEvent): Promise { this.touch(); - if (this.interface == 'modal') { + if (this.interface === 'modal') { if (this.expanded || !this.modalOptions) { return; } From c60519f2a816287ee7b46cdf5b660537e4cbdbd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Tue, 28 Nov 2023 15:33:50 +0100 Subject: [PATCH 03/11] MOBILE-3947 course: Open course index in a sheet modal --- .../features/course/components/course-format/course-format.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/features/course/components/course-format/course-format.ts b/src/core/features/course/components/course-format/course-format.ts index 784a0d09ad5..06c8e6c7d32 100644 --- a/src/core/features/course/components/course-format/course-format.ts +++ b/src/core/features/course/components/course-format/course-format.ts @@ -426,6 +426,8 @@ export class CoreCourseFormatComponent implements OnInit, OnChanges, OnDestroy { const data = await CoreDomUtils.openModal({ component: CoreCourseCourseIndexComponent, + initialBreakpoint: 1, + breakpoints: [0, 1], componentProps: { course: this.course, sections: this.sections, From 1e16f68070ad6a019fb27e2cbbfb63a401c75b33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Fri, 1 Dec 2023 15:52:47 +0100 Subject: [PATCH 04/11] MOBILE-3947 app: Add development html class and upgrade class to ionic7 --- src/app/app.component.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 0c3b63393ea..f6176bf3830 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -59,7 +59,8 @@ export class AppComponent implements OnInit, AfterViewInit { ngOnInit(): void { // eslint-disable-next-line @typescript-eslint/no-explicit-any const win = window; - CoreDomUtils.toggleModeClass('ionic5', true, { includeLegacy: true }); + CoreDomUtils.toggleModeClass('ionic7', true, { includeLegacy: true }); + CoreDomUtils.toggleModeClass('development', CoreConstants.BUILD.isDevelopment); this.addVersionClass(MOODLEAPP_VERSION_PREFIX, CoreConstants.CONFIG.versionname.replace('-dev', '')); CoreEvents.on(CoreEvents.LOGOUT, async () => { From 6c2888526001790c890b16b01aa2572ffe13fba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Tue, 5 Dec 2023 12:02:40 +0100 Subject: [PATCH 05/11] MOBILE-3947 assign: Do not require submission statement if empty --- src/addons/mod/assign/components/submission/submission.ts | 6 ++++++ src/addons/mod/assign/pages/edit/edit.ts | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/addons/mod/assign/components/submission/submission.ts b/src/addons/mod/assign/components/submission/submission.ts index 4bf833519a3..9cd46da9f34 100644 --- a/src/addons/mod/assign/components/submission/submission.ts +++ b/src/addons/mod/assign/components/submission/submission.ts @@ -1124,9 +1124,15 @@ export class AddonModAssignSubmissionComponent implements OnInit, OnDestroy, Can return []; } + // Receved submission statement should not be undefined. It would mean that the WS is not returning the value. const submissionStatementMissing = !!this.assign.requiresubmissionstatement && this.assign.submissionstatement === undefined; + // If received submission statement is empty, then it's not required. + if(!this.assign.submissionstatement && this.assign.submissionstatement !== undefined) { + this.assign.requiresubmissionstatement = 0; + } + this.canSubmit = !this.isSubmittedForGrading && !this.submittedOffline && (lastAttempt.cansubmit || (this.hasOffline && AddonModAssign.canSubmitOffline(this.assign, submissionStatus))); diff --git a/src/addons/mod/assign/pages/edit/edit.ts b/src/addons/mod/assign/pages/edit/edit.ts index b7677e45171..1618d391827 100644 --- a/src/addons/mod/assign/pages/edit/edit.ts +++ b/src/addons/mod/assign/pages/edit/edit.ts @@ -205,6 +205,12 @@ export class AddonModAssignEditPage implements OnInit, OnDestroy, CanLeave { this.introAttachments = submissionStatus.assignmentdata?.attachments?.intro ?? this.assign.introattachments; this.allowOffline = true; // If offline isn't allowed we shouldn't have reached this point. + + // If received submission statement is empty, then it's not required. + if(!this.assign.submissionstatement && this.assign.submissionstatement !== undefined) { + this.assign.requiresubmissionstatement = 0; + } + // Only show submission statement if we are editing our own submission. if (this.assign.requiresubmissionstatement && !this.assign.submissiondrafts && this.userId == currentUserId) { this.submissionStatement = this.assign.submissionstatement; From 243386232e3afc7e3e35e402f38110140cca9988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Tue, 12 Dec 2023 12:51:59 +0100 Subject: [PATCH 06/11] MOBILE-3947 chore: Remove Ionic warnings about legacy form controls --- src/addons/blog/pages/entries/entries.html | 5 +- .../calendar/components/filter/filter.html | 10 +- .../calendar/pages/edit-event/edit-event.html | 74 +++++------ .../calendar/pages/settings/settings.html | 5 +- .../airnotifier/pages/devices/devices.html | 5 +- .../group-conversations.html | 3 +- .../messages/pages/settings/settings.html | 37 +++--- .../addon-mod-assign-submission.html | 37 +++--- src/addons/mod/assign/pages/edit/edit.html | 5 +- .../mod/chat/pages/sessions/sessions.html | 5 +- .../index/addon-mod-choice-index.html | 12 +- .../mod/data/components/search/search.html | 28 +++-- src/addons/mod/data/data-forms.scss | 6 + .../addon-mod-data-field-checkbox.html | 12 +- .../component/addon-mod-data-field-date.html | 7 +- .../addon-mod-data-field-latlong.html | 8 +- .../component/addon-mod-data-field-menu.html | 5 +- .../addon-mod-data-field-multimenu.html | 12 +- .../addon-mod-data-field-picture.html | 4 +- .../addon-mod-data-field-radiobutton.html | 5 +- src/addons/mod/feedback/pages/form/form.html | 55 ++++---- .../mod/feedback/services/feedback-helper.ts | 16 +-- .../mod/forum/components/post/post.html | 11 +- .../pages/new-discussion/new-discussion.html | 30 +++-- src/addons/mod/forum/pages/search/search.html | 2 +- .../addon-mod-glossary-mode-picker.html | 5 +- src/addons/mod/glossary/pages/edit/edit.html | 35 +++--- .../mod/lesson/pages/player/player.html | 24 ++-- .../lesson/pages/user-retake/user-retake.html | 7 +- .../addon-mod-quiz-access-password.html | 2 +- .../index/addon-mod-scorm-index.html | 7 +- .../index/addon-mod-survey-index.html | 10 +- src/addons/mod/wiki/pages/edit/edit.html | 4 +- ...shop-assessment-strategy-accumulative.html | 19 ++- ...workshop-assessment-strategy-comments.html | 10 +- ...orkshop-assessment-strategy-numerrors.html | 22 ++-- ...d-workshop-assessment-strategy-rubric.html | 5 +- ...ddon-mod-workshop-assessment-strategy.html | 13 +- .../workshop/pages/assessment/assessment.html | 18 +-- .../edit-submission/edit-submission.html | 15 ++- .../workshop/pages/submission/submission.html | 11 +- .../notes/components/add/add-modal.html | 9 +- .../pages/settings/settings.html | 16 +-- .../addon-qbehaviour-deferredcbm.html | 5 +- .../component/addon-qtype-calculated.html | 15 ++- .../calculated/component/calculated.scss | 3 + .../qtype/calculated/component/calculated.ts | 1 + .../essay/component/addon-qtype-essay.html | 13 +- .../match/component/addon-qtype-match.html | 18 +-- .../component/addon-qtype-multichoice.html | 48 +++---- .../component/addon-qtype-shortanswer.html | 6 +- .../addon-user-profile-field-checkbox.html | 9 +- .../addon-user-profile-field-menu.html | 10 +- .../addon-user-profile-field-social.html | 9 +- .../addon-user-profile-field-text.html | 10 +- .../addon-user-profile-field-textarea.html | 2 +- .../group-selector/group-selector.html | 9 +- .../input-errors/core-input-errors.html | 28 ++--- .../components/input-errors/input-errors.scss | 19 +-- .../components/input-errors/input-errors.ts | 36 ++++-- .../local-file/core-local-file.html | 3 +- .../components/mark-required/mark-required.ts | 7 +- .../password-modal/password-modal.html | 6 +- .../components/show-password/show-password.ts | 2 +- .../site-picker/core-site-picker.html | 5 +- .../core-editor-rich-text-editor.html | 3 +- .../login/pages/credentials/credentials.html | 10 +- .../pages/email-signup/email-signup.html | 79 ++++++------ .../forgotten-password.html | 12 +- .../login/pages/reconnect/reconnect.html | 6 +- src/core/features/login/pages/site/site.html | 18 ++- .../components/rate/core-rating-rate.html | 5 +- .../global-search-filters.html | 25 ++-- .../search-box/core-search-box.html | 6 +- src/core/features/settings/pages/dev/dev.html | 28 ++--- .../settings/pages/general/general.html | 22 ++-- .../synchronization/synchronization.html | 9 +- src/theme/components/format-text.scss | 4 + src/theme/theme.base.scss | 117 +++++++++--------- 79 files changed, 612 insertions(+), 627 deletions(-) create mode 100644 src/addons/qtype/calculated/component/calculated.scss diff --git a/src/addons/blog/pages/entries/entries.html b/src/addons/blog/pages/entries/entries.html index 9fac4dfb2d0..ee8584a0834 100644 --- a/src/addons/blog/pages/entries/entries.html +++ b/src/addons/blog/pages/entries/entries.html @@ -17,8 +17,9 @@

{{ title | translate }}

- {{ 'addon.blog.showonlyyourentries' | translate }} - + + {{ 'addon.blog.showonlyyourentries' | translate }} + diff --git a/src/addons/calendar/components/filter/filter.html b/src/addons/calendar/components/filter/filter.html index 365e7e72f79..5d746163a0a 100644 --- a/src/addons/calendar/components/filter/filter.html +++ b/src/addons/calendar/components/filter/filter.html @@ -11,17 +11,17 @@ - + - - + diff --git a/src/addons/calendar/pages/edit-event/edit-event.html b/src/addons/calendar/pages/edit-event/edit-event.html index 26592324da2..bca2701b6a0 100644 --- a/src/addons/calendar/pages/edit-event/edit-event.html +++ b/src/addons/calendar/pages/edit-event/edit-event.html @@ -17,10 +17,10 @@

{{ title | translate }}

- -

{{ 'addon.calendar.eventname' | translate }}

-
- + +
{{ 'addon.calendar.eventname' | translate }}
+
@@ -42,12 +42,13 @@

{{ title | translate }}

- +

{{ 'addon.calendar.eventkind' | translate }}

{{eventTypes[0].name | translate }}

+
{{ 'addon.calendar.eventkind' | translate }}
{{ type.name | translate }} @@ -56,11 +57,9 @@

{{ title | translate }}

- -

{{ 'core.category' | translate }}

-
+

{{ 'core.category' | translate }}

{{ category.name }} @@ -69,11 +68,9 @@

{{ title | translate }}

- -

{{ 'core.course' | translate }}

-
+

{{ 'core.course' | translate }}

{{ course.fullname }}
@@ -82,12 +79,10 @@

{{ title | translate }}

- -

{{ 'core.course' | translate }}

-
+

{{ 'core.course' | translate }}

{{ course.fullname }} @@ -101,11 +96,9 @@

{{ title | translate }}

- -

{{ 'core.group' | translate }}

-
+

{{ 'core.group' | translate }}

{{ group.name }}
@@ -147,16 +140,14 @@

{{ title | translate }}

- +

{{ 'addon.calendar.durationnone' | translate }}

-
- +
- +

{{ 'addon.calendar.durationuntil' | translate }}

-
- +
@@ -171,14 +162,12 @@

{{ title | translate }}

- -

{{ 'addon.calendar.durationminutes' | translate }}

-
- + +

{{ 'addon.calendar.durationminutes' | translate }}

+
- {{ 'addon.calendar.durationminutes' | translate }} - @@ -187,16 +176,13 @@

{{ title | translate }}

- +

{{ 'addon.calendar.repeatevent' | translate }}

-
- +
- -

{{ 'addon.calendar.repeatweeksl' | translate }}

-
- +
@@ -209,16 +195,14 @@

{{ title | translate }}

- +

{{ 'addon.calendar.repeateditall' | translate:{$a: otherEventsCount} }}

-
- +
- +

{{ 'addon.calendar.repeateditthis' | translate }}

-
- +
@@ -235,10 +219,8 @@

{{ title | translate }}

- -

{{ 'core.location' | translate }}

-
- +
diff --git a/src/addons/calendar/pages/settings/settings.html b/src/addons/calendar/pages/settings/settings.html index 7ca79cf2851..7389d7f7437 100644 --- a/src/addons/calendar/pages/settings/settings.html +++ b/src/addons/calendar/pages/settings/settings.html @@ -11,8 +11,9 @@

{{ 'core.settings.settings' | translate }}

- {{ 'addon.calendar.defaultnotificationtime' | translate }} - + + {{ defaultTimeLabel }} diff --git a/src/addons/messageoutput/airnotifier/pages/devices/devices.html b/src/addons/messageoutput/airnotifier/pages/devices/devices.html index ffecacf6987..f3729734448 100644 --- a/src/addons/messageoutput/airnotifier/pages/devices/devices.html +++ b/src/addons/messageoutput/airnotifier/pages/devices/devices.html @@ -23,7 +23,7 @@

{{ platform.platform }}

-

+

{{ device.name }} {{ device.model }} ({{platform.platform}} {{ device.version }})

{{ 'core.currentdevice' | translate }}

@@ -33,7 +33,8 @@

{{ platform.platform }}

- +
diff --git a/src/addons/messages/pages/group-conversations/group-conversations.html b/src/addons/messages/pages/group-conversations/group-conversations.html index de0dd6db5ad..313ebb0b5e8 100644 --- a/src/addons/messages/pages/group-conversations/group-conversations.html +++ b/src/addons/messages/pages/group-conversations/group-conversations.html @@ -161,7 +161,8 @@

{{ 'addon.messages.individualconversations' | translate }} ({{ individual.co

- +

diff --git a/src/addons/messages/pages/settings/settings.html b/src/addons/messages/pages/settings/settings.html index c5c8a9c4060..c638b6e6bad 100644 --- a/src/addons/messages/pages/settings/settings.html +++ b/src/addons/messages/pages/settings/settings.html @@ -22,21 +22,19 @@

{{ 'core.settings.general' | translate }}

- -

{{ 'addon.messages.useentertosend' | translate }}

-
- + + {{ 'addon.messages.useentertosend' | translate }} +
- - -

{{ 'addon.messages.blocknoncontacts' | translate }}

-
- + + + {{ 'addon.messages.blocknoncontacts' | translate }} + @@ -47,22 +45,19 @@

{{ 'addon.messages.contactableprivacy' | translate }}

- -

{{ 'addon.messages.contactableprivacy_onlycontacts' | translate }}

-
- + + {{ 'addon.messages.contactableprivacy_onlycontacts' | translate }} +
- -

{{ 'addon.messages.contactableprivacy_coursemember' | translate }}

-
- + + {{ 'addon.messages.contactableprivacy_coursemember' | translate }} +
- -

{{ 'addon.messages.contactableprivacy_site' | translate }}

-
- + + {{ 'addon.messages.contactableprivacy_site' | translate }} +
diff --git a/src/addons/mod/assign/components/submission/addon-mod-assign-submission.html b/src/addons/mod/assign/components/submission/addon-mod-assign-submission.html index a0f9a4e701a..0cf93f8f109 100644 --- a/src/addons/mod/assign/components/submission/addon-mod-assign-submission.html +++ b/src/addons/mod/assign/components/submission/addon-mod-assign-submission.html @@ -226,10 +226,9 @@

{{ 'addon.mod_assign.userswhoneedtosubmit' | translate: {$a: ''} }}

- + - - + @@ -277,22 +276,18 @@

{{ 'addon.mod_assign.userswhoneedtosubmit' | translate: {$a: ''} }}

- -

{{ 'addon.mod_assign.gradeoutof' | translate: {$a: gradeInfo!.grade} }}

-
-

{{ 'addon.mod_assign.gradelocked' | translate }}

+ [lang]="grade.lang" [label]="'addon.mod_assign.gradeoutof' | translate: {$a: gradeInfo!.grade}" + labelPlacement="stacked" + [helperText]="grade.disabled ? ('addon.mod_assign.gradelocked' | translate) : null" />
- -

{{ 'addon.mod_assign.grade' | translate }}

-
+

{{ 'addon.mod_assign.grade' | translate }}

{{grade.label}} @@ -301,12 +296,10 @@

{{ 'addon.mod_assign.userswhoneedtosubmit' | translate: {$a: ''} }}

- -

{{ outcome.name }}

-
+

{{ outcome.name }}

{{grade.label}} @@ -353,11 +346,10 @@

{{ 'addon.mod_assign.userswhoneedtosubmit' | translate: {$a: ''} }}

- +

{{ 'addon.mod_assign.groupsubmissionsettings' | translate }}

{{ 'addon.mod_assign.applytoteam' | translate }}

-
- +
@@ -380,18 +372,19 @@

{{ 'addon.mod_assign.userswhoneedtosubmit' | translate: {$a: ''} }}

- {{ 'addon.mod_assign.addattempt' | translate }} - + +

{{ 'addon.mod_assign.addattempt' | translate }}

+
- +

{{ 'addon.mod_assign.gradedby' | translate }}

-

{{ grader!.fullname }}

+

{{ grader.fullname }}

{{ feedback!.gradeddate * 1000 | coreFormatDate }}

diff --git a/src/addons/mod/assign/pages/edit/edit.html b/src/addons/mod/assign/pages/edit/edit.html index a054156414f..e1ed90813cf 100644 --- a/src/addons/mod/assign/pages/edit/edit.html +++ b/src/addons/mod/assign/pages/edit/edit.html @@ -38,10 +38,9 @@

- + - - + diff --git a/src/addons/mod/chat/pages/sessions/sessions.html b/src/addons/mod/chat/pages/sessions/sessions.html index 8fc39d7c1bf..c85c3d68cb6 100644 --- a/src/addons/mod/chat/pages/sessions/sessions.html +++ b/src/addons/mod/chat/pages/sessions/sessions.html @@ -17,8 +17,9 @@

{{ 'addon.mod_chat.chatreport' | translate }}

- {{ 'addon.mod_chat.showincompletesessions' | translate }} - + + {{ 'addon.mod_chat.showincompletesessions' | translate }} + - + - - + - + - - + @@ -147,7 +145,7 @@

-

+

{{ 'addon.mod_choice.full' | translate }} diff --git a/src/addons/mod/data/components/search/search.html b/src/addons/mod/data/components/search/search.html index 4071d59179d..479fb2eb3be 100644 --- a/src/addons/mod/data/components/search/search.html +++ b/src/addons/mod/data/components/search/search.html @@ -12,20 +12,20 @@

{{ 'addon.mod_data.search' | translate }}

- {{ 'addon.mod_data.advancedsearch' | translate }} - + + {{ 'addon.mod_data.advancedsearch' | translate }} + - {{ 'addon.mod_data.search' | translate}} - + - {{ 'core.sortby' | translate }} - + {{field.name}} @@ -41,14 +41,16 @@

{{ 'addon.mod_data.search' | translate }}

- + - {{ 'addon.mod_data.ascending' | translate }} - + + {{ 'addon.mod_data.ascending' | translate }} + - {{ 'addon.mod_data.descending' | translate }} - + + {{'addon.mod_data.descending' | translate}} + diff --git a/src/addons/mod/data/data-forms.scss b/src/addons/mod/data/data-forms.scss index 92f6ff9faaa..bc50e228fd3 100644 --- a/src/addons/mod/data/data-forms.scss +++ b/src/addons/mod/data/data-forms.scss @@ -16,6 +16,12 @@ .addon-data-latlong { display: flex; + + .input-units { + flex-grow: 1; + white-space: nowrap; + align-self: center; + } } } diff --git a/src/addons/mod/data/fields/checkbox/component/addon-mod-data-field-checkbox.html b/src/addons/mod/data/fields/checkbox/component/addon-mod-data-field-checkbox.html index abca23146e2..76533f6a0d9 100644 --- a/src/addons/mod/data/fields/checkbox/component/addon-mod-data-field-checkbox.html +++ b/src/addons/mod/data/fields/checkbox/component/addon-mod-data-field-checkbox.html @@ -3,13 +3,17 @@ - {{option.key}} + + + - - {{ 'addon.mod_data.selectedrequired' | translate }} - + + + {{ 'addon.mod_data.selectedrequired' | translate }} + diff --git a/src/addons/mod/data/fields/date/component/addon-mod-data-field-date.html b/src/addons/mod/data/fields/date/component/addon-mod-data-field-date.html index 5e2b2c81703..9e937812172 100644 --- a/src/addons/mod/data/fields/date/component/addon-mod-data-field-date.html +++ b/src/addons/mod/data/fields/date/component/addon-mod-data-field-date.html @@ -10,9 +10,10 @@ - - {{ 'addon.mod_data.usedate' | translate }} - + + + {{ 'addon.mod_data.usedate' | translate }} + diff --git a/src/addons/mod/data/fields/latlong/component/addon-mod-data-field-latlong.html b/src/addons/mod/data/fields/latlong/component/addon-mod-data-field-latlong.html index eee88521bb4..69cc669074f 100644 --- a/src/addons/mod/data/fields/latlong/component/addon-mod-data-field-latlong.html +++ b/src/addons/mod/data/fields/latlong/component/addon-mod-data-field-latlong.html @@ -3,13 +3,13 @@ -
+
- °N +
°N
-
+
- °E +
°E
diff --git a/src/addons/mod/data/fields/menu/component/addon-mod-data-field-menu.html b/src/addons/mod/data/fields/menu/component/addon-mod-data-field-menu.html index cc2184808ef..76391c5e283 100644 --- a/src/addons/mod/data/fields/menu/component/addon-mod-data-field-menu.html +++ b/src/addons/mod/data/fields/menu/component/addon-mod-data-field-menu.html @@ -3,7 +3,10 @@ {{ 'addon.mod_data.menuchoose' | translate }} - {{option}} + + + diff --git a/src/addons/mod/data/fields/multimenu/component/addon-mod-data-field-multimenu.html b/src/addons/mod/data/fields/multimenu/component/addon-mod-data-field-multimenu.html index 455677ce0d4..d7b459a7cc3 100644 --- a/src/addons/mod/data/fields/multimenu/component/addon-mod-data-field-multimenu.html +++ b/src/addons/mod/data/fields/multimenu/component/addon-mod-data-field-multimenu.html @@ -3,14 +3,18 @@ - {{option.key}} + + + - - {{ 'addon.mod_data.selectedrequired' | translate }} - + + + {{ 'addon.mod_data.selectedrequired' | translate }} + diff --git a/src/addons/mod/data/fields/picture/component/addon-mod-data-field-picture.html b/src/addons/mod/data/fields/picture/component/addon-mod-data-field-picture.html index 99cfcd004f9..52291469fd9 100644 --- a/src/addons/mod/data/fields/picture/component/addon-mod-data-field-picture.html +++ b/src/addons/mod/data/fields/picture/component/addon-mod-data-field-picture.html @@ -4,8 +4,8 @@ [allowOffline]="true" acceptedTypes="image" [courseId]="database?.course" /> - {{ 'addon.mod_data.alttext' | translate }} - + diff --git a/src/addons/mod/data/fields/radiobutton/component/addon-mod-data-field-radiobutton.html b/src/addons/mod/data/fields/radiobutton/component/addon-mod-data-field-radiobutton.html index 1f51004cc39..ced96a13ff9 100644 --- a/src/addons/mod/data/fields/radiobutton/component/addon-mod-data-field-radiobutton.html +++ b/src/addons/mod/data/fields/radiobutton/component/addon-mod-data-field-radiobutton.html @@ -4,7 +4,10 @@ [cancelText]="'core.cancel' | translate" [okText]="'core.ok' | translate" [interfaceOptions]="{header: field.name}" interface="alert"> {{ 'addon.mod_data.menuchoose' | translate }} - {{option}} + + + diff --git a/src/addons/mod/feedback/pages/form/form.html b/src/addons/mod/feedback/pages/form/form.html index 0f6671a8487..e03f78b9bb9 100644 --- a/src/addons/mod/feedback/pages/form/form.html +++ b/src/addons/mod/feedback/pages/form/form.html @@ -26,37 +26,40 @@

- -

- {{item.itemnumber}}. - - {{item.postfix}} -

+ +

- + + + - + + + {{ 'addon.mod_feedback.numberoutofrange' | translate }} [{{item.rangefrom}} , {{item.rangeto}}] - + + + - + @@ -66,23 +69,21 @@

- - + + - - + - + - - + @@ -152,3 +153,13 @@

+ + + +

+ {{item.itemnumber}}. + + {{item.postfix}} +

+
diff --git a/src/addons/mod/feedback/services/feedback-helper.ts b/src/addons/mod/feedback/services/feedback-helper.ts index 18dddff572f..8b7f6d58a8d 100644 --- a/src/addons/mod/feedback/services/feedback-helper.ts +++ b/src/addons/mod/feedback/services/feedback-helper.ts @@ -251,7 +251,7 @@ export class AddonModFeedbackHelperProvider { return Object.assign(item, { templateName: 'label', value: '', - hasTextInput: false, + slottedLabel: false, }); } @@ -265,7 +265,7 @@ export class AddonModFeedbackHelperProvider { const formItem: AddonModFeedbackFormBasicItem = Object.assign(item, { templateName: 'label', value: '', - hasTextInput: false, + slottedLabel: false, }); const type = parseInt(formItem.presentation, 10); @@ -304,7 +304,7 @@ export class AddonModFeedbackHelperProvider { value: item.rawValue !== undefined ? Number(item.rawValue) : '', rangefrom: typeof rangeFrom == 'number' && !isNaN(rangeFrom) ? range[0] : '', rangeto: typeof rangeTo == 'number' && !isNaN(rangeTo) ? rangeTo : '', - hasTextInput: true, + slottedLabel: true, }); formItem.postfix = this.getNumericBoundariesForDisplay(formItem.rangefrom, formItem.rangeto); @@ -322,7 +322,7 @@ export class AddonModFeedbackHelperProvider { templateName: 'textfield', length: Number(item.presentation.split(AddonModFeedbackProvider.LINE_SEP)[1]) || 255, value: item.rawValue !== undefined ? item.rawValue : '', - hasTextInput: true, + slottedLabel: true, }); } @@ -336,7 +336,7 @@ export class AddonModFeedbackHelperProvider { return Object.assign(item, { templateName: 'textarea', value: item.rawValue !== undefined ? item.rawValue : '', - hasTextInput: true, + slottedLabel: true, }); } @@ -356,7 +356,7 @@ export class AddonModFeedbackHelperProvider { subtype: subType, value: '', choices: [], - hasTextInput: false, + slottedLabel: subType === 'd', }); formItem.presentation = parts.length > 1 ? parts[1] : ''; @@ -411,7 +411,7 @@ export class AddonModFeedbackHelperProvider { const formItem: AddonModFeedbackCaptchaItem = Object.assign(item, { templateName: 'captcha', value: '', - hasTextInput: false, + slottedLabel: false, }); const data = CoreTextUtils.parseJSON(item.otherdata); @@ -549,7 +549,7 @@ export type AddonModFeedbackFormItem = export type AddonModFeedbackFormBasicItem = AddonModFeedbackItem & { templateName: string; value: AddonModFeedbackResponseValue; - hasTextInput: boolean; + slottedLabel: boolean; isEmpty?: boolean; hasError?: boolean; }; diff --git a/src/addons/mod/forum/components/post/post.html b/src/addons/mod/forum/components/post/post.html index 327984298cd..d20baf0a828 100644 --- a/src/addons/mod/forum/components/post/post.html +++ b/src/addons/mod/forum/components/post/post.html @@ -94,9 +94,9 @@

- - {{ 'addon.mod_forum.subject' | translate }} - + + {{ 'addon.mod_forum.message' | translate }} @@ -106,8 +106,9 @@

[draftExtraParams]="{reply: post.id}" (contentChanged)="onMessageChange($event)" /> - {{ 'addon.mod_forum.privatereply' | translate }} - + + {{ 'addon.mod_forum.privatereply' | translate }} + {{ 'addon.mod_forum.addanewdiscussion' | translate }}

- {{ 'addon.mod_forum.subject' | translate }} - + +

{{ 'addon.mod_forum.subject' | translate }}

+
{{ 'addon.mod_forum.message' | translate }} @@ -38,27 +39,30 @@

{{ 'addon.mod_forum.advanced' | translate }}

- {{ 'addon.mod_forum.posttomygroups' | translate }} - + + {{ 'addon.mod_forum.posttomygroups' | translate }} + - - {{ 'addon.mod_forum.group' | translate }} + +

{{ 'addon.mod_forum.group' | translate }}

- - {{ 'addon.mod_forum.discussionsubscription' | translate }} - + + + {{ 'addon.mod_forum.discussionsubscription' | translate }} + - - {{ 'addon.mod_forum.discussionpinned' | translate }} - + + + {{ 'addon.mod_forum.discussionpinned' | translate }} + {{ 'addon.block_searchforums.pluginname' | translate }}

- +
- - - -

{{ 'core.login.siteaddress' | translate }}

-
+ + + formControlName="siteUrl" [core-auto-focus]="showKeyboard && !showScanQR" labelPlacement="stacked" + [label]="'core.login.siteaddress' | translate" [clearInput]="true" /> - - -

{{ 'core.login.siteaddress' | translate }}

-
+ + [core-auto-focus]="showKeyboard && !showScanQR" (ionChange)="searchSite($event, siteForm.value.siteUrl)" + labelPlacement="stacked" [label]="'core.login.siteaddress' | translate" [clearInput]="true" />
- {{ 'core.search.allcategories' | translate }} - + {{ + 'core.search.allcategories' | translate }} - - - - +
@@ -43,14 +41,13 @@

{{ 'core.search.filterheader' | translate }}

- {{ 'core.search.allcourses' | translate }} - + + {{ 'core.search.allcourses' | translate }} - - - - +
diff --git a/src/core/features/search/components/search-box/core-search-box.html b/src/core/features/search/components/search-box/core-search-box.html index 522d9818ca3..e8e8da4eaab 100644 --- a/src/core/features/search/components/search-box/core-search-box.html +++ b/src/core/features/search/components/search-box/core-search-box.html @@ -1,8 +1,8 @@ - {{ placeholder }} - + - -

{{ 'core.settings.colorscheme' | translate }}

-

{{ 'core.settings.forcedsetting' | translate }}

-
+
+

{{ 'core.settings.colorscheme' | translate }}

+

{{ 'core.settings.forcedsetting' | translate }}

+
{{ 'core.settings.colorscheme-' + scheme | translate }}
@@ -53,11 +51,10 @@

{{ 'core.settings.general' | translate }}

- +

{{ 'core.settings.enablerichtexteditor' | translate }}

{{ 'core.settings.enablerichtexteditordescription' | translate }}

-
- +
@@ -69,11 +66,10 @@

{{ 'core.settings.general' | translate }}

- +

{{ 'core.settings.debugdisplay' | translate }}

{{ 'core.settings.debugdisplaydescription' | translate }}

-
- +
diff --git a/src/core/features/settings/pages/synchronization/synchronization.html b/src/core/features/settings/pages/synchronization/synchronization.html index f46cde682fa..44b02e53776 100644 --- a/src/core/features/settings/pages/synchronization/synchronization.html +++ b/src/core/features/settings/pages/synchronization/synchronization.html @@ -24,12 +24,9 @@

{{ 'core.settings.syncsettings' | translate }}

- -

- {{ 'core.settings.syncdatasaver' | translate }} -

-
- + + {{ 'core.settings.syncdatasaver' | translate }} +
diff --git a/src/theme/components/format-text.scss b/src/theme/components/format-text.scss index 9a1a635f60f..710feebd5ad 100644 --- a/src/theme/components/format-text.scss +++ b/src/theme/components/format-text.scss @@ -222,6 +222,10 @@ core-rich-text-editor .core-rte-editor { margin-block-start: 0; } + > p:only-child { + margin-bottom: 0; + } + hr { border-top: 1px solid var(--stroke); } diff --git a/src/theme/theme.base.scss b/src/theme/theme.base.scss index 31fbe0ba54e..929209ef899 100644 --- a/src/theme/theme.base.scss +++ b/src/theme/theme.base.scss @@ -66,71 +66,60 @@ body { .font-lg { font-size: 1.7rem; } .font-sm { font-size: 1.2rem; } -// Headings. +// Item Headings. // Some styles taken from ion-label -.md ion-label .item-heading, -.ios ion-label .item-heading { - text-overflow: inherit; - overflow: inherit; - --color: initial; - color: var(--color); - line-height: 20px; - - &.item-heading-secondary { +.item > ion-label, +.fake-ion-item > ion-label, +ion-item .in-item { + p { --color: var(--subdued-text-color); + color: var(--color); + @include margin(2px, 0); + font-size: 0.875rem; } -} - -.ios ion-label > p, -.md ion-label > p { - --color: var(--subdued-text-color); - color: var(--color); -} - -.md ion-label .item-heading { - @include margin(2px, 0); - font-size: 16px; - font-weight: normal; - - &.item-heading-secondary { + .item-heading { @include margin(2px, 0); - font-size: var(--text-size); + font-size: 1rem; font-weight: normal; - line-height: normal; - } -} - -.ios ion-label .item-heading { - @include margin(0, 0, 2px); - - font-size: 17px; - font-weight: normal; + text-overflow: inherit; + overflow: inherit; + --color: initial; + color: var(--color); - &.item-heading-secondary { - @include margin(0, 0, 3px); + &.item-heading-secondary { + @include margin(2px, 0); - font-size: var(--text-size); - font-weight: normal; + font-size: var(--text-size); + font-weight: normal; + line-height: normal; - line-height: normal; + --color: var(--subdued-text-color); + } } } // Correctly inherit ion-text-wrap onto labels. -.item ion-label core-format-text > *:not(pre), -.fake-ion-item core-format-text > *:not(pre) { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; +.item > ion-label, +.fake-ion-item { + core-format-text, + core-format-text > *:not(pre) { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } } -.item.ion-text-wrap > ion-label core-format-text > *:not(pre), -.fake-ion-item.ion-text-wrap core-format-text > *:not(pre) { - white-space: normal; - overflow: inherit; +.item.ion-text-wrap > ion-label, +ion-item > .in-item, +.fake-ion-item.ion-text-wrap { + core-format-text, + core-format-text > *:not(pre) { + white-space: normal; + overflow: inherit; + } } .item.ion-text-wrap > ion-label { @@ -1124,12 +1113,16 @@ input[type=checkbox] { } // Select. -ion-select::part(text) { - white-space: normal; -} - -ion-select::part(icon) { - opacity: 1; +ion-select { + &::part(text) { + white-space: normal; + } + &::part(icon) { + opacity: 1; + } + &::part(label) { + max-width: none; + } } ion-select-popover { @@ -1401,7 +1394,7 @@ audio.core-media-adapt-width { } ion-item { - font-size: var(--text-size); + // font-size: var(--text-size); --inner-border-width: 0px; } @@ -1411,7 +1404,7 @@ ion-item.item-lines-full { } ion-item.item-lines-inset { - --inner-border-width: 1px; + --inner-border-width: 0 0 1px 0; --border-width: 0px; } @@ -1984,3 +1977,15 @@ ion-item.item-label-stacked ion-datetime-button { margin-bottom: 8px; align-self: self-end; } + +// Development styles. Most of them temporary. +html.development { + ion-checkbox.legacy-checkbox, + ion-radio.legacy-radio, + ion-select.legacy-select, + ion-toggle.legacy-toggle, + ion-textarea.legacy-textarea, + ion-input.legacy-input { + background: red !important; + } +} From be7f86edd2fdeb38b0a75c3dfa3a7a95976d9b00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Tue, 12 Dec 2023 11:38:34 +0100 Subject: [PATCH 07/11] MOBILE-3947 core: Slot core-show-password on ion-inputs --- .../index/addon-mod-lesson-index.html | 10 +- .../addon-mod-quiz-access-password.html | 10 +- .../password-modal/password-modal.html | 10 +- .../show-password/core-show-password.html | 2 +- .../show-password/show-password.scss | 33 +++--- .../components/show-password/show-password.ts | 106 +++++++++++------- src/core/features/login/login.scss | 8 +- .../login/pages/credentials/credentials.html | 10 +- .../pages/email-signup/email-signup.html | 13 +-- .../login/pages/reconnect/reconnect.html | 12 +- 10 files changed, 116 insertions(+), 98 deletions(-) diff --git a/src/addons/mod/lesson/components/index/addon-mod-lesson-index.html b/src/addons/mod/lesson/components/index/addon-mod-lesson-index.html index 4dd254e120b..a1de43153d0 100644 --- a/src/addons/mod/lesson/components/index/addon-mod-lesson-index.html +++ b/src/addons/mod/lesson/components/index/addon-mod-lesson-index.html @@ -28,11 +28,11 @@ - {{ 'addon.mod_lesson.enterpassword' | translate }} - - - + + + {{ 'addon.mod_lesson.continue' | translate }} diff --git a/src/addons/mod/quiz/accessrules/password/component/addon-mod-quiz-access-password.html b/src/addons/mod/quiz/accessrules/password/component/addon-mod-quiz-access-password.html index 13e00d1dfbc..b2d553869d3 100644 --- a/src/addons/mod/quiz/accessrules/password/component/addon-mod-quiz-access-password.html +++ b/src/addons/mod/quiz/accessrules/password/component/addon-mod-quiz-access-password.html @@ -5,9 +5,9 @@
- {{ 'addon.mod_quiz.quizpassword' | translate }} - - - + + + diff --git a/src/core/components/password-modal/password-modal.html b/src/core/components/password-modal/password-modal.html index 61fbd197252..d5a1c2deae9 100644 --- a/src/core/components/password-modal/password-modal.html +++ b/src/core/components/password-modal/password-modal.html @@ -14,11 +14,11 @@

{{ title | translate }}

- - - + + + diff --git a/src/core/components/show-password/core-show-password.html b/src/core/components/show-password/core-show-password.html index ed3fb385f26..362f23d41f4 100644 --- a/src/core/components/show-password/core-show-password.html +++ b/src/core/components/show-password/core-show-password.html @@ -1,4 +1,4 @@ - +