From e67efa2d8c04fd8de848fc4a278b75320480d2f6 Mon Sep 17 00:00:00 2001 From: tugcekucukoglu Date: Thu, 15 Feb 2024 18:57:40 +0300 Subject: [PATCH] Fixed #5288 - Menu components: track focus with also mousemove --- components/lib/contextmenu/ContextMenu.vue | 6 +++++ components/lib/contextmenu/ContextMenuSub.vue | 17 ++++++++---- components/lib/menu/Menu.vue | 27 ++++++++++++------- components/lib/menu/Menuitem.vue | 7 +++-- components/lib/menubar/Menubar.vue | 14 +++++++--- components/lib/menubar/MenubarSub.vue | 8 ++++-- components/lib/panelmenu/PanelMenuList.vue | 6 +++++ components/lib/panelmenu/PanelMenuSub.vue | 8 ++++-- components/lib/tieredmenu/TieredMenu.vue | 13 ++++++--- components/lib/tieredmenu/TieredMenuSub.vue | 14 ++++++++-- 10 files changed, 91 insertions(+), 29 deletions(-) diff --git a/components/lib/contextmenu/ContextMenu.vue b/components/lib/contextmenu/ContextMenu.vue index 35af3954e..f159f8f69 100755 --- a/components/lib/contextmenu/ContextMenu.vue +++ b/components/lib/contextmenu/ContextMenu.vue @@ -27,6 +27,7 @@ @keydown="onKeyDown" @item-click="onItemClick" @item-mouseenter="onItemMouseEnter" + @item-mousemove="onItemMouseMove" /> @@ -247,6 +248,11 @@ export default { onItemMouseEnter(event) { this.onItemChange(event); }, + onItemMouseMove(event) { + if (this.focused) { + this.changeFocusedItemIndex(event, event.processedItem.index); + } + }, onArrowDownKey(event) { const itemIndex = this.focusedItemInfo.index !== -1 ? this.findNextItemIndex(this.focusedItemInfo.index) : this.findFirstFocusedItemIndex(); diff --git a/components/lib/contextmenu/ContextMenuSub.vue b/components/lib/contextmenu/ContextMenuSub.vue index c654fa620..9b40691ac 100755 --- a/components/lib/contextmenu/ContextMenuSub.vue +++ b/components/lib/contextmenu/ContextMenuSub.vue @@ -20,7 +20,13 @@ :data-p-focused="isItemFocused(processedItem)" :data-p-disabled="isItemDisabled(processedItem)" > -
+
  • - +
    @@ -116,15 +125,14 @@ export default { this.focusedOptionIndex = event.id; } }, + itemMouseMove(event) { + if (this.focused) { + this.focusedOptionIndex = event.id; + } + }, onListFocus(event) { this.focused = true; - - if (!this.popup) { - if (this.selectedOptionIndex !== -1) { - this.changeFocusedOptionIndex(this.selectedOptionIndex); - this.selectedOptionIndex = -1; - } else this.changeFocusedOptionIndex(0); - } + !this.popup && this.changeFocusedOptionIndex(0); this.$emit('focus', event); }, @@ -255,7 +263,6 @@ export default { if (this.popup) { DomHandler.focus(this.list); - this.changeFocusedOptionIndex(0); } this.$emit('show'); diff --git a/components/lib/menu/Menuitem.vue b/components/lib/menu/Menuitem.vue index 73588fa50..db4cb967e 100644 --- a/components/lib/menu/Menuitem.vue +++ b/components/lib/menu/Menuitem.vue @@ -11,7 +11,7 @@ :data-p-focused="isItemFocused()" :data-p-disabled="disabled() || false" > -
    +