Skip to content

Commit

Permalink
fix(primeng/p-panelMenuList): focus via tab button
Browse files Browse the repository at this point in the history
  • Loading branch information
volvachev committed Sep 24, 2023
1 parent 396297a commit b484514
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion src/app/components/panelmenu/panelmenu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,16 @@ export class PanelMenuList implements OnChanges {
return ObjectUtils.findLast(this.visibleItems(), (processedItem) => this.isValidItem(processedItem));
}

findItemByEventTarget(target: EventTarget): undefined | any {
let parentNode = target as ParentNode & Element;

while (parentNode && parentNode.tagName?.toLowerCase() !== 'li') {
parentNode = parentNode?.parentNode as Element;
}

return parentNode?.id && this.visibleItems().find((processedItem) => this.isValidItem(processedItem) && `${this.panelId}_${processedItem.key}` === parentNode.id);
}

createProcessedItems(items, level = 0, parent = {}, parentKey = '') {
const processedItems = [];
items &&
Expand Down Expand Up @@ -452,7 +462,7 @@ export class PanelMenuList implements OnChanges {

onFocus(event) {
this.focused = true;
const focusedItem = this.focusedItem() || (this.isElementInPanel(event, event.relatedTarget) ? this.findFirstItem() : this.findLastItem());
const focusedItem = this.focusedItem() || (this.isElementInPanel(event, event.relatedTarget) ? this.findItemByEventTarget(event.target) || this.findFirstItem() : this.findLastItem());
if (event.relatedTarget !== null) this.focusedItem.set(focusedItem);
}

Expand Down

0 comments on commit b484514

Please sign in to comment.