mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-14 13:33:03 +00:00
116404: Prevent the opening from the modal using mouse interactions from automatically focussing on the first element
(cherry picked from commit 82ed3aadff
)
This commit is contained in:

committed by
github-actions[bot]
![github-actions[bot]](/assets/img/avatar_default.png)
parent
a984957af9
commit
7de6aa0e24
@@ -55,6 +55,11 @@ export class ExpandableNavbarSectionComponent extends NavbarSectionComponent imp
|
||||
*/
|
||||
mouseEntered = false;
|
||||
|
||||
/**
|
||||
* Whether the section was expanded
|
||||
*/
|
||||
focusOnFirstChildSection = false;
|
||||
|
||||
/**
|
||||
* True if screen size was small before a resize event
|
||||
*/
|
||||
@@ -107,6 +112,7 @@ export class ExpandableNavbarSectionComponent extends NavbarSectionComponent imp
|
||||
if (active === true) {
|
||||
this.addArrowEventListeners = true;
|
||||
} else {
|
||||
this.focusOnFirstChildSection = undefined;
|
||||
this.unsubscribeFromEventListeners();
|
||||
}
|
||||
}));
|
||||
@@ -118,7 +124,7 @@ export class ExpandableNavbarSectionComponent extends NavbarSectionComponent imp
|
||||
this.dropdownItems.forEach((item: HTMLElement) => {
|
||||
item.addEventListener('keydown', this.navigateDropdown.bind(this));
|
||||
});
|
||||
if (this.dropdownItems.length > 0) {
|
||||
if (this.focusOnFirstChildSection && this.dropdownItems.length > 0) {
|
||||
this.dropdownItems.item(0).focus();
|
||||
}
|
||||
this.addArrowEventListeners = false;
|
||||
@@ -130,6 +136,18 @@ export class ExpandableNavbarSectionComponent extends NavbarSectionComponent imp
|
||||
this.unsubscribeFromEventListeners();
|
||||
}
|
||||
|
||||
/**
|
||||
* Activate this section if it's currently inactive, deactivate it when it's currently active.
|
||||
* Also saves whether this toggle was performed by a keyboard event (non-click event) in order to know if thi first
|
||||
* item should be focussed when activating a section.
|
||||
*
|
||||
* @param {Event} event The user event that triggered this method
|
||||
*/
|
||||
override toggleSection(event: Event): void {
|
||||
this.focusOnFirstChildSection = event.type !== 'click';
|
||||
super.toggleSection(event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all the current event listeners on the dropdown items (called when the menu is closed & on component
|
||||
* destruction)
|
||||
@@ -222,9 +240,11 @@ export class ExpandableNavbarSectionComponent extends NavbarSectionComponent imp
|
||||
this.deactivateSection(event, false);
|
||||
break;
|
||||
case 'ArrowDown':
|
||||
this.focusOnFirstChildSection = true;
|
||||
this.activateSection(event);
|
||||
break;
|
||||
case 'Space':
|
||||
case 'Enter':
|
||||
event.preventDefault();
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user