diff options
author | Ferdinand Thiessen <opensource@fthiessen.de> | 2023-10-30 16:22:27 +0100 |
---|---|---|
committer | Ferdinand Thiessen <opensource@fthiessen.de> | 2023-10-30 16:33:15 +0100 |
commit | 3e310228404a38aed98a4b299370934ff31a5992 (patch) | |
tree | c36b9d6c8739342aa5386cd11dee75b4276030a4 /apps/theming/src/components/AppOrderSelector.vue | |
parent | 51eb44dbfef18e057d7f3a0373bb73e670be478c (diff) | |
download | nextcloud-server-3e310228404a38aed98a4b299370934ff31a5992.tar.gz nextcloud-server-3e310228404a38aed98a4b299370934ff31a5992.zip |
fix(theming): App order selector should keep the focus on click
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'apps/theming/src/components/AppOrderSelector.vue')
-rw-r--r-- | apps/theming/src/components/AppOrderSelector.vue | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/apps/theming/src/components/AppOrderSelector.vue b/apps/theming/src/components/AppOrderSelector.vue index bd4e4e7760d..392519de25e 100644 --- a/apps/theming/src/components/AppOrderSelector.vue +++ b/apps/theming/src/components/AppOrderSelector.vue @@ -2,6 +2,7 @@ <ol ref="listElement" data-cy-app-order class="order-selector"> <AppOrderSelectorElement v-for="app,index in appList" :key="`${app.id}${renderCount}`" + ref="selectorElements" :app="app" :is-first="index === 0 || !!appList[index - 1].default" :is-last="index === value.length - 1" @@ -14,7 +15,7 @@ <script lang="ts"> import { useSortable } from '@vueuse/integrations/useSortable' -import { PropType, computed, defineComponent, ref } from 'vue' +import { PropType, computed, defineComponent, onUpdated, ref } from 'vue' import AppOrderSelectorElement from './AppOrderSelectorElement.vue' @@ -82,6 +83,19 @@ export default defineComponent({ useSortable(listElement, appList, { filter: '.order-selector-element--disabled' }) /** + * Array of all AppOrderSelectorElement components used to for keeping the focus after button click + */ + const selectorElements = ref<InstanceType<typeof AppOrderSelectorElement>[]>([]) + + /** + * We use the updated hook here to verify all selector elements keep the focus on the last pressed button + * This is needed to be done in this component to make sure Sortable.JS has finished sorting the elements before focussing an element + */ + onUpdated(() => { + selectorElements.value.forEach(element => element.keepFocus()) + }) + + /** * Handle element is moved up * @param index The index of the element that is moved */ @@ -119,6 +133,7 @@ export default defineComponent({ moveUp, renderCount, + selectorElements, } }, }) |