Refactor #3965 - For PanelMenu

This commit is contained in:
Tuğçe Küçükoğlu 2023-05-30 11:25:54 +03:00
parent bcd1c91084
commit 4e3488ec6b
5 changed files with 210 additions and 160 deletions

View file

@ -1,7 +1,7 @@
<template>
<PanelMenuSub
:id="panelId + '_list'"
class="p-panelmenu-root-list"
:class="getCXOptions('menu')"
role="tree"
:tabindex="-1"
:aria-activedescendant="focused ? focusedItemId : undefined"
@ -16,17 +16,18 @@
@keydown="onKeyDown"
@item-toggle="onItemToggle"
:pt="pt"
v-bind="ptm('menu')"
/>
</template>
<script>
import BaseComponent from 'primevue/basecomponent';
import { DomHandler, ObjectUtils } from 'primevue/utils';
import BasePanelMenu from './BasePanelMenu.vue';
import PanelMenuSub from './PanelMenuSub.vue';
export default {
name: 'PanelMenuList',
extends: BaseComponent,
extends: BasePanelMenu,
emits: ['item-toggle', 'header-focus'],
props: {
panelId: {
@ -74,6 +75,12 @@ export default {
getItemLabel(processedItem) {
return this.getItemProp(processedItem, 'label');
},
getCXOptions(key, params) {
return this.cx(key, {
...params,
context: this
});
},
isItemVisible(processedItem) {
return this.getItemProp(processedItem, 'visible') !== false;
},
@ -203,7 +210,7 @@ export default {
onEnterKey(event) {
if (ObjectUtils.isNotEmpty(this.focusedItem)) {
const element = DomHandler.findSingle(this.$el, `li[id="${`${this.focusedItemId}`}"]`);
const anchorElement = element && (DomHandler.findSingle(element, '.p-menuitem-link') || DomHandler.findSingle(element, 'a,button'));
const anchorElement = element && (DomHandler.findSingle(element, '[data-pc-section="action"]') || DomHandler.findSingle(element, 'a,button'));
anchorElement ? anchorElement.click() : element && element.click();
}
@ -227,7 +234,7 @@ export default {
DomHandler.focus(this.$el);
},
isElementInPanel(event, element) {
const panel = event.currentTarget.closest('.p-panelmenu-panel');
const panel = event.currentTarget.closest('[data-pc-section="panel"]');
return panel && panel.contains(element);
},