Skip to content

Commit f8475b3

Browse files
author
Jon M
committed
fix eslint errors
1 parent 8da5b57 commit f8475b3

File tree

3 files changed

+73
-50
lines changed

3 files changed

+73
-50
lines changed

.eslintignore

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,21 @@ web/sites/**/libraries/
1414
# E2E tests
1515
e2e/
1616

17+
# Generated files
18+
local/files/
19+
local/private/
20+
21+
# Docker/Infrastructure files
22+
local/docker-compose.yaml
23+
docker/
24+
25+
# Drupal default config files
26+
web/sites/default/default.services.yml
27+
28+
# Theme config files (YAML with single quotes - valid Drupal style)
29+
web/themes/**/*.yml
30+
web/themes/**/*.yaml
31+
1732
# Other
1833
*.min.js
1934
*.bundle.js

.eslintrc.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
"drupalTranslations": true,
1818
"jQuery": true,
1919
"umami": true
20+
},
21+
"rules": {
22+
"no-console": "warn",
23+
"no-use-before-define": ["error", { "functions": false, "classes": true, "variables": true }]
2024
}
2125
}
2226

web/themes/interledger/js/scripts.js

Lines changed: 54 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,13 @@
11
// Site navigation CSS classes
2-
const siteLinksWrapper = document.querySelector("[data-nav-wrapper]");
3-
const wideNavMinWidth = window.matchMedia("(min-width: 1160px)");
4-
handleNavDisplayStyles(wideNavMinWidth);
5-
wideNavMinWidth.addEventListener("change", handleNavDisplayStyles);
6-
7-
const siteNavToggle = document.getElementById("siteNavToggle");
8-
const menuIcon = document.getElementById("menuIcon");
9-
10-
if (document.contains(siteNavToggle)) {
11-
siteNavToggle.addEventListener("click", handleMobileNavToggle, false);
12-
}
13-
14-
function handleMobileNavToggle(event) {
15-
siteLinksWrapper.classList.toggle("offscreen");
16-
if (siteLinksWrapper.getAttribute("class").includes("offscreen")) {
17-
menuIcon.classList.remove("open");
18-
} else {
19-
menuIcon.classList.add("open");
20-
}
2+
function flashPrevention(element) {
3+
element.setAttribute("style", "display:none");
4+
setTimeout(() => {
5+
element.removeAttribute("style");
6+
}, 10);
217
}
228

239
function handleNavDisplayStyles(event) {
10+
const siteLinksWrapper = document.querySelector("[data-nav-wrapper]");
2411
if (event.matches) {
2512
siteLinksWrapper.classList.remove("offscreen");
2613
} else {
@@ -31,26 +18,60 @@ function handleNavDisplayStyles(event) {
3118
}
3219
}
3320

34-
function flashPrevention(element) {
35-
element.setAttribute("style", "display:none");
36-
setTimeout(() => {
37-
element.removeAttribute("style");
38-
}, 10);
21+
function handleMobileNavToggle() {
22+
const siteLinksWrapper = document.querySelector("[data-nav-wrapper]");
23+
const menuIcon = document.getElementById("menuIcon");
24+
siteLinksWrapper.classList.toggle("offscreen");
25+
if (siteLinksWrapper.getAttribute("class").includes("offscreen")) {
26+
menuIcon.classList.remove("open");
27+
} else {
28+
menuIcon.classList.add("open");
29+
}
30+
}
31+
32+
const wideNavMinWidth = window.matchMedia("(min-width: 1160px)");
33+
handleNavDisplayStyles(wideNavMinWidth);
34+
wideNavMinWidth.addEventListener("change", handleNavDisplayStyles);
35+
36+
const siteNavToggle = document.getElementById("siteNavToggle");
37+
38+
if (document.contains(siteNavToggle)) {
39+
siteNavToggle.addEventListener("click", handleMobileNavToggle, false);
3940
}
4041

4142
// Site sub-navigation toggle
43+
function resetSubMenus(subLinks) {
44+
subLinks.forEach((subLink) => {
45+
subLink.setAttribute("aria-expanded", "false");
46+
});
47+
}
48+
49+
function isClickOutside(event, nodeList) {
50+
let clickedInsideTarget = false;
51+
Array.from(nodeList).forEach((element) => {
52+
if (element.contains(event.target)) {
53+
clickedInsideTarget = true;
54+
}
55+
});
56+
return !clickedInsideTarget;
57+
}
58+
4259
const siteNav = document.querySelector(".site-nav__links");
4360

4461
if (document.contains(siteNav)) {
4562
const subLinks = document.querySelectorAll(".has-submenu > a");
4663

4764
subLinks.forEach((subLink) => {
4865
subLink.setAttribute("aria-expanded", false);
49-
subLink.addEventListener("click", function (event) {
66+
subLink.addEventListener("click", function handleSubLinkClick(event) {
5067
const clickedSubLink = event.target;
51-
umami.track(clickedSubLink.dataset.linkLabel);
68+
// eslint-disable-next-line no-undef
69+
if (typeof umami !== "undefined" && umami.track) {
70+
// eslint-disable-next-line no-undef
71+
umami.track(clickedSubLink.dataset.linkLabel);
72+
}
5273
const allSubLinks = Array.from(subLinks);
53-
const notClickedLinks = allSubLinks.filter(function (otherLink) {
74+
const notClickedLinks = allSubLinks.filter((otherLink) => {
5475
return otherLink !== clickedSubLink;
5576
});
5677
notClickedLinks.forEach((link) => {
@@ -66,42 +87,25 @@ if (document.contains(siteNav)) {
6687
});
6788
});
6889

69-
siteNav.addEventListener("keydown", function (event) {
90+
siteNav.addEventListener("keydown", function handleKeydown(event) {
7091
if (event.key === "Escape") {
71-
resetSubMenus();
92+
resetSubMenus(subLinks);
7293
}
7394
});
7495

75-
document.addEventListener("click", function (event) {
96+
document.addEventListener("click", function handleDocumentClick(event) {
7697
if (isClickOutside(event, subLinks)) {
77-
resetSubMenus();
98+
resetSubMenus(subLinks);
7899
}
79100
});
80-
81-
function resetSubMenus() {
82-
subLinks.forEach((subLink) => {
83-
subLink.setAttribute("aria-expanded", "false");
84-
});
85-
}
86-
}
87-
88-
function isClickOutside(event, nodeList) {
89-
let clickedInsideTarget = false;
90-
Array.from(nodeList).forEach(function (element) {
91-
if (element.contains(event.target)) {
92-
clickedInsideTarget = true;
93-
}
94-
});
95-
return !clickedInsideTarget;
96101
}
97102

98103
// Hero video controls
99104
const videoToggle = document.getElementById("hero__video-toggle");
100105

101106
if (document.contains(videoToggle)) {
102107
const heroVideo = document.querySelector(".hero video");
103-
videoToggle.addEventListener("click", function () {
104-
console.log(this.className);
108+
videoToggle.addEventListener("click", function handleVideoToggle() {
105109
if (videoToggle.className === "is-playing") {
106110
heroVideo.pause();
107111
this.classList.toggle("is-playing");
@@ -120,7 +124,7 @@ if (document.contains(faq)) {
120124
buttons.forEach((button) => {
121125
button.setAttribute("aria-expanded", false);
122126

123-
button.addEventListener("click", function () {
127+
button.addEventListener("click", function handleFaqToggle() {
124128
if (this.getAttribute("aria-expanded") === "true") {
125129
this.setAttribute("aria-expanded", "false");
126130
} else {

0 commit comments

Comments
 (0)