From 1a8c4fde04526667b941ed7da2474c7eee26ee4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Mon, 14 Nov 2022 14:18:25 +0100 Subject: [PATCH] MOBILE-4065 a11y: Course downloads does not stop click propagation --- .../pages/course-storage/course-storage.html | 14 ++++----- .../pages/course-storage/course-storage.ts | 30 ++++++++++++++++--- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/addons/storagemanager/pages/course-storage/course-storage.html b/src/addons/storagemanager/pages/course-storage/course-storage.html index 8d2a1b7b3..8ec983aab 100644 --- a/src/addons/storagemanager/pages/course-storage/course-storage.html +++ b/src/addons/storagemanager/pages/course-storage/course-storage.html @@ -29,13 +29,13 @@ {{ 'core.calculating' | translate }} - + {{ prefetchCourseData.statusTranslatable | translate }} - @@ -90,8 +90,8 @@ {{section.count}} / {{section.total}} - + @@ -128,9 +128,9 @@ + (action)="prefetchModule(module)"> - diff --git a/src/addons/storagemanager/pages/course-storage/course-storage.ts b/src/addons/storagemanager/pages/course-storage/course-storage.ts index 3c3d001ef..5e7a143d5 100644 --- a/src/addons/storagemanager/pages/course-storage/course-storage.ts +++ b/src/addons/storagemanager/pages/course-storage/course-storage.ts @@ -352,8 +352,13 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { * The user has requested a delete for the whole course data. * * (This works by deleting data for each module on the course that has data.) + * + * @param event Event object. */ - async deleteForCourse(): Promise { + async deleteForCourse(event: Event): Promise { + event.stopPropagation(); + event.preventDefault(); + try { await CoreDomUtils.showDeleteConfirm( 'addon.storagemanager.confirmdeletedatafrom', @@ -384,9 +389,13 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { * * (This works by deleting data for each module in the section that has data.) * + * @param event Event object. * @param section Section object with information about section and modules */ - async deleteForSection(section: AddonStorageManagerCourseSection): Promise { + async deleteForSection(event: Event, section: AddonStorageManagerCourseSection): Promise { + event.stopPropagation(); + event.preventDefault(); + try { await CoreDomUtils.showDeleteConfirm( 'addon.storagemanager.confirmdeletedatafrom', @@ -413,10 +422,18 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { /** * The user has requested a delete for a module's data * + * @param event Event object. * @param module Module details * @param section Section the module belongs to. */ - async deleteForModule(module: AddonStorageManagerModule, section: AddonStorageManagerCourseSection): Promise { + async deleteForModule( + event: Event, + module: AddonStorageManagerModule, + section: AddonStorageManagerCourseSection, + ): Promise { + event.stopPropagation(); + event.preventDefault(); + if (module.totalSize === 0) { return; } @@ -635,8 +652,13 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { /** * Prefetch the whole course. + * + * @param event Event object. */ - async prefetchCourse(): Promise { + async prefetchCourse(event: Event): Promise { + event.stopPropagation(); + event.preventDefault(); + const courses = await CoreCourses.getUserCourses(true); let course = courses.find((course) => course.id == this.courseId); if (!course) {