summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorPytal <24800714+Pytal@users.noreply.github.com>2024-02-02 05:36:24 -0800
committerGitHub <noreply@github.com>2024-02-02 05:36:24 -0800
commit995ccb50464dcbb983d26522d425b02eddd2a924 (patch)
tree3bedc3d27ce7aa2a7be4764ad65b110454637951 /apps
parent50fffa8d95aa2b1adc61f69cc76408300438213d (diff)
parentb7d906a58f6cad5ba4fd2695558aaccc6f8e88fa (diff)
downloadnextcloud-server-995ccb50464dcbb983d26522d425b02eddd2a924.tar.gz
nextcloud-server-995ccb50464dcbb983d26522d425b02eddd2a924.zip
Merge pull request #43271 from nextcloud/fix/a11y/status-return-focus
fix(user_status): Fix losing focus to body when closing user status modal
Diffstat (limited to 'apps')
-rw-r--r--apps/user_status/src/UserStatus.vue4
-rw-r--r--apps/user_status/src/components/SetStatusModal.vue20
2 files changed, 23 insertions, 1 deletions
diff --git a/apps/user_status/src/UserStatus.vue b/apps/user_status/src/UserStatus.vue
index d632d58a33c..704629f859f 100644
--- a/apps/user_status/src/UserStatus.vue
+++ b/apps/user_status/src/UserStatus.vue
@@ -43,7 +43,9 @@
</NcButton>
<!-- Status management modal -->
- <SetStatusModal v-if="isModalOpen" @close="closeModal" />
+ <SetStatusModal v-if="isModalOpen"
+ :inline="inline"
+ @close="closeModal" />
</component>
</template>
diff --git a/apps/user_status/src/components/SetStatusModal.vue b/apps/user_status/src/components/SetStatusModal.vue
index d763c094895..4047db23843 100644
--- a/apps/user_status/src/components/SetStatusModal.vue
+++ b/apps/user_status/src/components/SetStatusModal.vue
@@ -22,6 +22,7 @@
<template>
<NcModal size="normal"
:name="$t('user_status', 'Set status')"
+ :set-return-focus="setReturnFocus"
@close="closeModal">
<div class="set-status-modal">
<!-- Status selector -->
@@ -108,6 +109,18 @@ export default {
},
mixins: [OnlineStatusMixin],
+ props: {
+ /**
+ * Whether the component should be rendered as a Dashboard Status or a User Menu Entries
+ * true = Dashboard Status
+ * false = User Menu Entries
+ */
+ inline: {
+ type: Boolean,
+ default: false,
+ },
+ },
+
data() {
return {
clearAt: null,
@@ -156,6 +169,13 @@ export default {
return this.$t('user_status', 'Reset status')
},
+
+ setReturnFocus() {
+ if (this.inline) {
+ return undefined
+ }
+ return document.querySelector('[aria-controls="header-menu-user-menu"]') ?? undefined
+ },
},
watch: {