From 0094cbb7d1ba2deb7f3fea3f65e140dc5c8ff3ac Mon Sep 17 00:00:00 2001 From: Agate Date: Fri, 3 Jul 2020 16:07:44 +0200 Subject: [PATCH] Fix #1128: Lock focus in modals to improve accessibility --- changes/changelog.d/1121.enhancement | 1 + front/package.json | 1 + front/src/components/Queue.vue | 5 ++++- front/src/components/SetInstanceModal.vue | 2 +- front/src/components/ShortcutsModal.vue | 2 +- front/src/components/auth/LoginForm.vue | 3 +-- front/src/components/common/DangerousButton.vue | 8 ++++---- front/src/components/moderation/FilterModal.vue | 4 ++-- front/src/components/moderation/ReportModal.vue | 2 +- front/src/components/semantic/Modal.vue | 12 +++++++++++- front/yarn.lock | 13 +++++++++++++ 11 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 changes/changelog.d/1121.enhancement diff --git a/changes/changelog.d/1121.enhancement b/changes/changelog.d/1121.enhancement new file mode 100644 index 000000000..188865c94 --- /dev/null +++ b/changes/changelog.d/1121.enhancement @@ -0,0 +1 @@ +Use semantic headers for accessibility (#1121) \ No newline at end of file diff --git a/front/package.json b/front/package.json index 4a85f6469..86540e149 100644 --- a/front/package.json +++ b/front/package.json @@ -20,6 +20,7 @@ "core-js": "^3.6.4", "diff": "^4.0.1", "django-channels": "^1.1.6", + "focus-trap": "^5.1.0", "fomantic-ui-css": "^2.8.3", "howler": "^2.0.14", "js-logger": "^1.4.1", diff --git a/front/src/components/Queue.vue b/front/src/components/Queue.vue index 4becb11f3..0813291af 100644 --- a/front/src/components/Queue.vue +++ b/front/src/components/Queue.vue @@ -209,7 +209,7 @@ import $ from 'jquery' import moment from "moment" import lodash from '@/lodash' import time from "@/utils/time" - +import createFocusTrap from 'focus-trap' import store from "@/store" export default { @@ -224,11 +224,14 @@ export default { showVolume: false, isShuffling: false, tracksChangeBuffer: null, + focusTrap: null, time } }, mounted () { let self = this + this.focusTrap = createFocusTrap(this.$el, {allowOutsideClick: () => { return true }}) + this.focusTrap.activate() this.$nextTick(() => { setTimeout(() => { this.scrollToCurrent() diff --git a/front/src/components/SetInstanceModal.vue b/front/src/components/SetInstanceModal.vue index 618a16a20..2e5c24bc2 100644 --- a/front/src/components/SetInstanceModal.vue +++ b/front/src/components/SetInstanceModal.vue @@ -35,7 +35,7 @@
-
Cancel
+
diff --git a/front/src/components/ShortcutsModal.vue b/front/src/components/ShortcutsModal.vue index 017cdc977..c88bfb715 100644 --- a/front/src/components/ShortcutsModal.vue +++ b/front/src/components/ShortcutsModal.vue @@ -36,7 +36,7 @@ diff --git a/front/src/components/auth/LoginForm.vue b/front/src/components/auth/LoginForm.vue index 3b18fbc29..f0591a538 100644 --- a/front/src/components/auth/LoginForm.vue +++ b/front/src/components/auth/LoginForm.vue @@ -25,7 +25,6 @@ You will be redirected to %{ domain } to authenticate.

- diff --git a/front/src/components/common/DangerousButton.vue b/front/src/components/common/DangerousButton.vue index 353c8ecf3..763f3fa98 100644 --- a/front/src/components/common/DangerousButton.vue +++ b/front/src/components/common/DangerousButton.vue @@ -14,14 +14,14 @@
-
+
-
+ +
+
diff --git a/front/src/components/moderation/FilterModal.vue b/front/src/components/moderation/FilterModal.vue index 2c650014c..f83e69741 100644 --- a/front/src/components/moderation/FilterModal.vue +++ b/front/src/components/moderation/FilterModal.vue @@ -37,8 +37,8 @@
-
Cancel
-
Hide content
+ +
diff --git a/front/src/components/moderation/ReportModal.vue b/front/src/components/moderation/ReportModal.vue index db37960a2..f32f7b6f6 100644 --- a/front/src/components/moderation/ReportModal.vue +++ b/front/src/components/moderation/ReportModal.vue @@ -71,7 +71,7 @@
-
Cancel
+