aria-ease 1.2.4 → 1.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/aria-ease.d.ts +8 -1
- package/index.js +3 -1
- package/package.json +1 -1
- package/src/block/makeBlockAccessible.js +1 -46
- package/src/block/makeBlockAccessible.ts +2 -42
- package/src/handleKeyPress.js +55 -0
- package/src/handleKeyPress.ts +53 -0
- package/src/menu/cleanUpMenuEventListeners.js +10 -0
- package/src/menu/cleanUpMenuEventListeners.ts +15 -0
- package/src/menu/makeMenuAccessible.js +9 -59
- package/src/menu/makeMenuAccessible.ts +10 -56
package/aria-ease.d.ts
CHANGED
|
@@ -22,7 +22,14 @@ declare module 'aria-ease' {
|
|
|
22
22
|
* @param {string} ariaLabel The aria-label to be updated.
|
|
23
23
|
*/
|
|
24
24
|
function updateMenuTriggerAriaAttributes(triggerId: string, ariaLabel: string): void;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Cleans up the event listeners that were added to childen items of the menu, to prevent memory leak.
|
|
28
|
+
* @param {string} menuId The id of the menu
|
|
29
|
+
* @param {string} menuItemClass The class of the items that are children of the menu
|
|
30
|
+
*/
|
|
31
|
+
function cleanUpMenuEventListeners(menuId: string, menuItemClass: string): void;
|
|
25
32
|
|
|
26
|
-
export { makeMenuAccessible, makeBlockAccessible, updateMenuTriggerAriaAttributes };
|
|
33
|
+
export { makeMenuAccessible, makeBlockAccessible, updateMenuTriggerAriaAttributes, cleanUpMenuEventListeners };
|
|
27
34
|
}
|
|
28
35
|
|
package/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { makeMenuAccessible } from './src/menu/makeMenuAccessible.js'
|
|
2
2
|
import { makeBlockAccessible } from './src/block/makeBlockAccessible.js'
|
|
3
3
|
import { updateMenuTriggerAriaAttributes } from './src/menu/updateMenuTriggerAriaAttributes.js'
|
|
4
|
+
import { cleanUpMenuEventListeners } from './src/menu/cleanUpMenuEventListeners.js'
|
|
4
5
|
|
|
5
6
|
export {
|
|
6
7
|
makeMenuAccessible,
|
|
7
8
|
makeBlockAccessible,
|
|
8
|
-
updateMenuTriggerAriaAttributes
|
|
9
|
+
updateMenuTriggerAriaAttributes,
|
|
10
|
+
cleanUpMenuEventListeners
|
|
9
11
|
}
|
package/package.json
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @param {string} blockId The id of the block
|
|
4
4
|
* @param {string} blockItemClass The class of the items that are children of the block
|
|
5
5
|
*/
|
|
6
|
+
import { handleKeyPress } from '../handleKeyPress';
|
|
6
7
|
var eventListenersAdded = new Set();
|
|
7
8
|
export function makeBlockAccessible(blockId, blockItemClass) {
|
|
8
9
|
var blockDiv = document.querySelector("#".concat(blockId));
|
|
@@ -13,50 +14,4 @@ export function makeBlockAccessible(blockId, blockItemClass) {
|
|
|
13
14
|
blockItem.addEventListener('keydown', function (event) { return handleKeyPress(event, blockItems, blockItemIndex); });
|
|
14
15
|
}
|
|
15
16
|
});
|
|
16
|
-
function handleKeyPress(event, blockItems, blockItemIndex) {
|
|
17
|
-
switch (event.key) {
|
|
18
|
-
case 'ArrowUp':
|
|
19
|
-
case 'ArrowLeft':
|
|
20
|
-
event.preventDefault();
|
|
21
|
-
if (blockItemIndex === 0) {
|
|
22
|
-
blockItems.item(blockItems.length - 1).focus();
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
blockItems.item(blockItemIndex - 1).focus();
|
|
26
|
-
}
|
|
27
|
-
break;
|
|
28
|
-
case 'ArrowDown':
|
|
29
|
-
case 'ArrowRight':
|
|
30
|
-
event.preventDefault();
|
|
31
|
-
if (blockItemIndex === blockItems.length - 1) {
|
|
32
|
-
blockItems.item(0).focus();
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
blockItems.item(blockItemIndex + 1).focus();
|
|
36
|
-
}
|
|
37
|
-
break;
|
|
38
|
-
case 'Enter':
|
|
39
|
-
case ' ':
|
|
40
|
-
event.preventDefault();
|
|
41
|
-
if (blockItems.item(blockItemIndex).type === 'radio') {
|
|
42
|
-
blockItems.item(blockItemIndex).checked = true;
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
else if (blockItems.item(blockItemIndex).type === 'checkbox') {
|
|
46
|
-
blockItems.item(blockItemIndex).checked = !blockItems.item(blockItemIndex).checked;
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
else if (blockItems.item(blockItemIndex).tagName === 'BUTTON') {
|
|
50
|
-
blockItems.item(blockItemIndex).click();
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
else if (blockItems.item(blockItemIndex).tagName === 'A') {
|
|
54
|
-
window.location.href = blockItems.item(blockItemIndex).href;
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
break;
|
|
58
|
-
default:
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
17
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { HTMLElement, NodeListOfHTMLElement } from "../../Types"
|
|
8
|
+
import { handleKeyPress } from '../handleKeyPress';
|
|
8
9
|
|
|
9
10
|
let eventListenersAdded: Set<HTMLElement> = new Set();
|
|
10
11
|
|
|
@@ -17,47 +18,6 @@ export function makeBlockAccessible(blockId: string, blockItemClass: string): vo
|
|
|
17
18
|
eventListenersAdded.add(blockItem);
|
|
18
19
|
blockItem.addEventListener('keydown', (event: KeyboardEvent) => handleKeyPress(event, blockItems, blockItemIndex));
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
+
});
|
|
21
22
|
|
|
22
|
-
function handleKeyPress(event: KeyboardEvent, blockItems: NodeListOfHTMLElement, blockItemIndex: number): void {
|
|
23
|
-
switch(event.key) {
|
|
24
|
-
case 'ArrowUp':
|
|
25
|
-
case 'ArrowLeft':
|
|
26
|
-
event.preventDefault()
|
|
27
|
-
if (blockItemIndex === 0) {
|
|
28
|
-
blockItems.item(blockItems.length - 1).focus();
|
|
29
|
-
} else {
|
|
30
|
-
blockItems.item(blockItemIndex - 1).focus();
|
|
31
|
-
}
|
|
32
|
-
break;
|
|
33
|
-
case 'ArrowDown':
|
|
34
|
-
case 'ArrowRight':
|
|
35
|
-
event.preventDefault()
|
|
36
|
-
if (blockItemIndex === blockItems.length - 1) {
|
|
37
|
-
blockItems.item(0).focus();
|
|
38
|
-
} else {
|
|
39
|
-
blockItems.item(blockItemIndex + 1).focus();
|
|
40
|
-
}
|
|
41
|
-
break;
|
|
42
|
-
case 'Enter':
|
|
43
|
-
case ' ':
|
|
44
|
-
event.preventDefault()
|
|
45
|
-
if (blockItems.item(blockItemIndex).type === 'radio') {
|
|
46
|
-
blockItems.item(blockItemIndex).checked = true
|
|
47
|
-
break;
|
|
48
|
-
} else if (blockItems.item(blockItemIndex).type === 'checkbox') {
|
|
49
|
-
blockItems.item(blockItemIndex).checked = !blockItems.item(blockItemIndex).checked
|
|
50
|
-
break;
|
|
51
|
-
} else if (blockItems.item(blockItemIndex).tagName === 'BUTTON') {
|
|
52
|
-
blockItems.item(blockItemIndex).click()
|
|
53
|
-
break;
|
|
54
|
-
} else if (blockItems.item(blockItemIndex).tagName === 'A') {
|
|
55
|
-
window.location.href = blockItems.item(blockItemIndex).href
|
|
56
|
-
break;
|
|
57
|
-
}
|
|
58
|
-
break;
|
|
59
|
-
default:
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
23
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export function handleKeyPress(event, elementItems, elementItemIndex, elementDiv, triggerButton) {
|
|
2
|
+
switch (event.key) {
|
|
3
|
+
case 'ArrowUp':
|
|
4
|
+
case 'ArrowLeft':
|
|
5
|
+
event.preventDefault();
|
|
6
|
+
if (elementItemIndex === 0) {
|
|
7
|
+
elementItems.item(elementItems.length - 1).focus();
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
elementItems.item(elementItemIndex - 1).focus();
|
|
11
|
+
}
|
|
12
|
+
break;
|
|
13
|
+
case 'ArrowDown':
|
|
14
|
+
case 'ArrowRight':
|
|
15
|
+
event.preventDefault();
|
|
16
|
+
if (elementItemIndex === elementItems.length - 1) {
|
|
17
|
+
elementItems.item(0).focus();
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
elementItems.item(elementItemIndex + 1).focus();
|
|
21
|
+
}
|
|
22
|
+
break;
|
|
23
|
+
case 'Escape':
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
if (elementDiv && triggerButton) {
|
|
26
|
+
(getComputedStyle(elementDiv).display === 'block') ?
|
|
27
|
+
triggerButton.click() :
|
|
28
|
+
null;
|
|
29
|
+
triggerButton.focus();
|
|
30
|
+
}
|
|
31
|
+
break;
|
|
32
|
+
case 'Enter':
|
|
33
|
+
case ' ':
|
|
34
|
+
event.preventDefault();
|
|
35
|
+
if (elementItems.item(elementItemIndex).tagName === 'BUTTON') {
|
|
36
|
+
elementItems.item(elementItemIndex).click();
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
else if (elementItems.item(elementItemIndex).tagName === 'A') {
|
|
40
|
+
window.location.href = elementItems.item(elementItemIndex).href;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
else if (elementItems.item(elementItemIndex).type === 'radio') {
|
|
44
|
+
elementItems.item(elementItemIndex).checked = true;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
else if (elementItems.item(elementItemIndex).type === 'checkbox') {
|
|
48
|
+
elementItems.item(elementItemIndex).checked = !elementItems.item(elementItemIndex).checked;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { NodeListOfHTMLElement, HTMLElement } from "../Types";
|
|
2
|
+
|
|
3
|
+
export function handleKeyPress(event: KeyboardEvent, elementItems: NodeListOfHTMLElement, elementItemIndex: number, elementDiv?: HTMLElement | undefined, triggerButton?: HTMLElement | undefined): void {
|
|
4
|
+
switch(event.key) {
|
|
5
|
+
case 'ArrowUp':
|
|
6
|
+
case 'ArrowLeft':
|
|
7
|
+
event.preventDefault()
|
|
8
|
+
if (elementItemIndex === 0) {
|
|
9
|
+
elementItems.item(elementItems.length - 1).focus();
|
|
10
|
+
} else {
|
|
11
|
+
elementItems.item(elementItemIndex - 1).focus();
|
|
12
|
+
}
|
|
13
|
+
break;
|
|
14
|
+
case 'ArrowDown':
|
|
15
|
+
case 'ArrowRight':
|
|
16
|
+
event.preventDefault()
|
|
17
|
+
if (elementItemIndex === elementItems.length - 1) {
|
|
18
|
+
elementItems.item(0).focus();
|
|
19
|
+
} else {
|
|
20
|
+
elementItems.item(elementItemIndex + 1).focus();
|
|
21
|
+
}
|
|
22
|
+
break;
|
|
23
|
+
case 'Escape':
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
if(elementDiv && triggerButton) {
|
|
26
|
+
(getComputedStyle(elementDiv).display === 'block') ?
|
|
27
|
+
triggerButton.click() :
|
|
28
|
+
null
|
|
29
|
+
triggerButton.focus()
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
break;
|
|
33
|
+
case 'Enter':
|
|
34
|
+
case ' ':
|
|
35
|
+
event.preventDefault()
|
|
36
|
+
if(elementItems.item(elementItemIndex).tagName === 'BUTTON') {
|
|
37
|
+
elementItems.item(elementItemIndex).click()
|
|
38
|
+
break;
|
|
39
|
+
} else if (elementItems.item(elementItemIndex).tagName === 'A') {
|
|
40
|
+
window.location.href = elementItems.item(elementItemIndex).href;
|
|
41
|
+
break;
|
|
42
|
+
} else if (elementItems.item(elementItemIndex).type === 'radio') {
|
|
43
|
+
elementItems.item(elementItemIndex).checked = true
|
|
44
|
+
break;
|
|
45
|
+
} else if (elementItems.item(elementItemIndex).type === 'checkbox') {
|
|
46
|
+
elementItems.item(elementItemIndex).checked = !elementItems.item(elementItemIndex).checked
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
50
|
+
default:
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { handleKeyPress } from "../handleKeyPress";
|
|
2
|
+
export function cleanUpMenuEventListeners(menuId, menuItemClass) {
|
|
3
|
+
var menuDiv = document.querySelector("#".concat(menuId));
|
|
4
|
+
var menuItems = menuDiv.querySelectorAll(".".concat(menuItemClass));
|
|
5
|
+
var triggerId = menuDiv.getAttribute('aria-labelledby');
|
|
6
|
+
var triggerButton = document.querySelector("#".concat(triggerId));
|
|
7
|
+
menuItems.forEach(function (menuItem, menuItemIndex) {
|
|
8
|
+
menuItem.removeEventListener('keydown', function (event) { return handleKeyPress(event, menuItems, menuItemIndex, menuDiv, triggerButton); });
|
|
9
|
+
});
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { NodeListOfHTMLElement } from "../../Types"
|
|
2
|
+
import { handleKeyPress } from "../handleKeyPress"
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export function cleanUpMenuEventListeners(menuId: string, menuItemClass: string): void {
|
|
6
|
+
const menuDiv: HTMLElement = document.querySelector(`#${menuId}`) as HTMLElement
|
|
7
|
+
const menuItems: NodeListOfHTMLElement = menuDiv.querySelectorAll(`.${menuItemClass}`)
|
|
8
|
+
|
|
9
|
+
const triggerId: string = menuDiv.getAttribute('aria-labelledby') as string
|
|
10
|
+
const triggerButton: HTMLElement = document.querySelector(`#${triggerId}`) as HTMLElement
|
|
11
|
+
|
|
12
|
+
menuItems.forEach((menuItem: HTMLElement, menuItemIndex: number): void => {
|
|
13
|
+
menuItem.removeEventListener('keydown', (event: KeyboardEvent): void => handleKeyPress(event, menuItems, menuItemIndex, menuDiv, triggerButton));
|
|
14
|
+
})
|
|
15
|
+
}
|
|
@@ -3,70 +3,20 @@
|
|
|
3
3
|
* @param {string} menuId The id of the menu
|
|
4
4
|
* @param {string} menuItemClass The class of the items that are children of the menu
|
|
5
5
|
*/
|
|
6
|
+
import { handleKeyPress } from '../handleKeyPress';
|
|
6
7
|
var eventListenersAdded = new Set();
|
|
7
8
|
export function makeMenuAccessible(menuId, menuItemClass) {
|
|
8
9
|
var menuDiv = document.querySelector("#".concat(menuId));
|
|
9
10
|
var menuItems = menuDiv.querySelectorAll(".".concat(menuItemClass));
|
|
10
11
|
var triggerId = menuDiv.getAttribute('aria-labelledby');
|
|
11
12
|
var triggerButton = document.querySelector("#".concat(triggerId));
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
eventListenersAdded.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
switch (event.key) {
|
|
21
|
-
case 'ArrowUp':
|
|
22
|
-
case 'ArrowLeft':
|
|
23
|
-
event.preventDefault();
|
|
24
|
-
if (menuItemIndex === 0) {
|
|
25
|
-
menuItems.item(menuItems.length - 1).focus();
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
menuItems.item(menuItemIndex - 1).focus();
|
|
29
|
-
}
|
|
30
|
-
break;
|
|
31
|
-
case 'ArrowDown':
|
|
32
|
-
case 'ArrowRight':
|
|
33
|
-
event.preventDefault();
|
|
34
|
-
if (menuItemIndex === menuItems.length - 1) {
|
|
35
|
-
menuItems.item(0).focus();
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
menuItems.item(menuItemIndex + 1).focus();
|
|
39
|
-
}
|
|
40
|
-
break;
|
|
41
|
-
case 'Escape':
|
|
42
|
-
event.preventDefault();
|
|
43
|
-
(getComputedStyle(menuDiv).display === 'block') ?
|
|
44
|
-
triggerButton.click() :
|
|
45
|
-
null;
|
|
46
|
-
triggerButton.focus();
|
|
47
|
-
break;
|
|
48
|
-
case 'Enter':
|
|
49
|
-
case ' ':
|
|
50
|
-
event.preventDefault();
|
|
51
|
-
if (menuItems.item(menuItemIndex).tagName === 'BUTTON') {
|
|
52
|
-
menuItems.item(menuItemIndex).click();
|
|
53
|
-
break;
|
|
54
|
-
}
|
|
55
|
-
else if (menuItems.item(menuItemIndex).tagName === 'A') {
|
|
56
|
-
window.location.href = menuItems.item(menuItemIndex).href;
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
else if (menuItems.item(menuItemIndex).type === 'radio') {
|
|
60
|
-
menuItems.item(menuItemIndex).checked = true;
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
else if (menuItems.item(menuItemIndex).type === 'checkbox') {
|
|
64
|
-
menuItems.item(menuItemIndex).checked = !menuItems.item(menuItemIndex).checked;
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
break;
|
|
68
|
-
default:
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
13
|
+
if (window.innerWidth >= 1025) {
|
|
14
|
+
menuItems.item(0).focus();
|
|
15
|
+
menuItems.forEach(function (menuItem, menuItemIndex) {
|
|
16
|
+
if (!eventListenersAdded.has(menuItem)) {
|
|
17
|
+
eventListenersAdded.add(menuItem);
|
|
18
|
+
menuItem.addEventListener('keydown', function (event) { return handleKeyPress(event, menuItems, menuItemIndex, menuDiv, triggerButton); });
|
|
19
|
+
}
|
|
20
|
+
});
|
|
71
21
|
}
|
|
72
22
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import { HTMLElement, NodeListOfHTMLElement } from '../../Types'
|
|
8
|
+
import { handleKeyPress } from '../handleKeyPress';
|
|
8
9
|
|
|
9
10
|
let eventListenersAdded: Set<HTMLElement> = new Set();
|
|
10
11
|
|
|
@@ -15,60 +16,13 @@ export function makeMenuAccessible(menuId: string, menuItemClass: string): void
|
|
|
15
16
|
const triggerId: string = menuDiv.getAttribute('aria-labelledby') as string
|
|
16
17
|
const triggerButton: HTMLElement = document.querySelector(`#${triggerId}`) as HTMLElement
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
eventListenersAdded.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
switch(event.key) {
|
|
28
|
-
case 'ArrowUp':
|
|
29
|
-
case 'ArrowLeft':
|
|
30
|
-
event.preventDefault()
|
|
31
|
-
if (menuItemIndex === 0) {
|
|
32
|
-
menuItems.item(menuItems.length - 1).focus();
|
|
33
|
-
} else {
|
|
34
|
-
menuItems.item(menuItemIndex - 1).focus();
|
|
35
|
-
}
|
|
36
|
-
break;
|
|
37
|
-
case 'ArrowDown':
|
|
38
|
-
case 'ArrowRight':
|
|
39
|
-
event.preventDefault()
|
|
40
|
-
if (menuItemIndex === menuItems.length - 1) {
|
|
41
|
-
menuItems.item(0).focus();
|
|
42
|
-
} else {
|
|
43
|
-
menuItems.item(menuItemIndex + 1).focus();
|
|
44
|
-
}
|
|
45
|
-
break;
|
|
46
|
-
case 'Escape':
|
|
47
|
-
event.preventDefault();
|
|
48
|
-
(getComputedStyle(menuDiv).display === 'block') ?
|
|
49
|
-
triggerButton.click() :
|
|
50
|
-
null
|
|
51
|
-
triggerButton.focus()
|
|
52
|
-
break;
|
|
53
|
-
case 'Enter':
|
|
54
|
-
case ' ':
|
|
55
|
-
event.preventDefault()
|
|
56
|
-
if(menuItems.item(menuItemIndex).tagName === 'BUTTON') {
|
|
57
|
-
menuItems.item(menuItemIndex).click()
|
|
58
|
-
break;
|
|
59
|
-
} else if (menuItems.item(menuItemIndex).tagName === 'A') {
|
|
60
|
-
window.location.href = menuItems.item(menuItemIndex).href;
|
|
61
|
-
break;
|
|
62
|
-
} else if (menuItems.item(menuItemIndex).type === 'radio') {
|
|
63
|
-
menuItems.item(menuItemIndex).checked = true
|
|
64
|
-
break;
|
|
65
|
-
} else if (menuItems.item(menuItemIndex).type === 'checkbox') {
|
|
66
|
-
menuItems.item(menuItemIndex).checked = !menuItems.item(menuItemIndex).checked
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
break;
|
|
70
|
-
default:
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
19
|
+
if(window.innerWidth >= 1025) {
|
|
20
|
+
menuItems.item(0).focus();
|
|
21
|
+
menuItems.forEach((menuItem: HTMLElement, menuItemIndex: number): void => {
|
|
22
|
+
if (!eventListenersAdded.has(menuItem)) {
|
|
23
|
+
eventListenersAdded.add(menuItem);
|
|
24
|
+
menuItem.addEventListener('keydown', (event: KeyboardEvent): void => handleKeyPress(event, menuItems, menuItemIndex, menuDiv, triggerButton))
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
}
|
|
74
28
|
}
|