Skip to content

Commit cd4b92b

Browse files
authored
feat: improve accessibility (#300)
1 parent 7947e22 commit cd4b92b

File tree

4 files changed

+30
-15
lines changed

4 files changed

+30
-15
lines changed

public/css/style.css

+3
Original file line numberDiff line numberDiff line change
@@ -249,3 +249,6 @@ ul {
249249
cursor: pointer;
250250
color: var(--li-hover-color);
251251
}
252+
li[role=link]:focus {
253+
outline: 2px solid black;
254+
}

public/css/themes/light.css

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
:root {
22
--primary-text-color: #263238;
3-
--secondary-text-color: #607d8be5;
3+
--secondary-text-color: black;
44
--primary-border-color: rgba(55, 71, 79, 0.1);
55
--faded-border-color: rgba(78, 99, 109, 0.1);
6-
--head-paragraph-color: #90A4AE;
6+
--head-paragraph-color: black;
77
--main-color: #304FFE;
88
--default-margin: 15px;
99
--avatar-border-color: #FFF;

public/scripts/main.js

+18-6
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,24 @@ function createChart(elementId, type = "bar", payload = {}) {
9191
}
9292
window.createChart = createChart;
9393

94-
function liPackageClick() {
94+
function liPackageNavigateLink(e) {
9595
const dataValue = this.getAttribute("data-value");
96-
window.open(`https://www.npmjs.com/package/${dataValue}`, "_blank");
96+
if (e.type === "click" || e.key === "Enter") {
97+
const ref = e.target ?? e.srcElement;
98+
if (ref) {
99+
window.open(`https://www.npmjs.com/package/${dataValue}`, "_blank");
100+
}
101+
}
97102
}
98103

99-
function nodeDepClick() {
104+
function nodeDepNavigateLink(e) {
100105
const dataValue = this.getAttribute("data-value");
101-
window.open(`https://nodejs.org/dist/latest/docs/api/${dataValue}.html`, "_blank");
106+
if (e.type === "click" || e.key === "Enter") {
107+
const ref = e.target ?? e.srcElement;
108+
if (ref) {
109+
window.open(`https://nodejs.org/dist/latest/docs/api/${dataValue}.html`, "_blank");
110+
}
111+
}
102112
}
103113

104114
document.addEventListener("DOMContentLoaded", () => {
@@ -117,12 +127,14 @@ document.addEventListener("DOMContentLoaded", () => {
117127

118128
const packagesList = document.querySelectorAll("ul.npm-packages-list li");
119129
for (const liElement of packagesList) {
120-
liElement.addEventListener("click", liPackageClick);
130+
liElement.addEventListener("click", liPackageNavigateLink);
131+
liElement.addEventListener("keydown", liPackageNavigateLink);
121132
}
122133

123134
const nodeList = document.querySelectorAll("ul.node-list li");
124135
for (const liElement of nodeList) {
125-
liElement.addEventListener("click", nodeDepClick);
136+
liElement.addEventListener("click", nodeDepNavigateLink);
137+
liElement.addEventListener("keydown", nodeDepNavigateLink);
126138
}
127139

128140
setTimeout(() => {

views/template.html

+7-7
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<div class="page">
2121
<header>
2222
<div class="logo">
23-
<img src="[[=z.report_logo]]" />
23+
<img src="[[=z.report_logo]]" alt="logo"/>
2424
</div>
2525
<h1>[[=z.report_title]]</h1>
2626
<p>[[=z.report_date]]</p>
@@ -56,7 +56,7 @@ <h3><span>[[=z.npm_stats.packages_count.internal]]</span>Internal Dependencies</
5656
<ul class="npm-packages-list">
5757
[[ for (const [name, option] of Object.entries(z.npm_stats.packages)) { ]]
5858
[[ if (!option.isThird) { ]]
59-
<li data-value="[[=name]]">
59+
<li data-value="[[=name]]" tabindex="0" role="link" class="link">
6060
<p>[[=name]]</p>
6161
</li>
6262
[[ } ]]
@@ -71,7 +71,7 @@ <h3><span>[[=z.npm_stats.packages_count.external]]</span>Third-party Dependencie
7171
<ul class="npm-packages-list">
7272
[[ for (const [name, option] of Object.entries(z.npm_stats.packages)) { ]]
7373
[[ if (option.isThird) { ]]
74-
<li data-value="[[=name]]">
74+
<li data-value="[[=name]]" tabindex="0" role="link" class="link">
7575
<p>[[=name]]</p>
7676
</li>
7777
[[ } ]]
@@ -87,7 +87,7 @@ <h3><span>[[=z.npm_stats.deps.transitive.size]]</span>Transitive Dependencies</h
8787
</div>
8888
<ul class="npm-packages-list">
8989
[[ for (const name of z.npm_stats.deps.transitive) { ]]
90-
<li data-value="[[=name]]">
90+
<li data-value="[[=name]]" tabindex="0" role="link" class="link">
9191
<p>[[=name]]</p>
9292
</li>
9393
[[ } ]]
@@ -100,7 +100,7 @@ <h3><span>[[=z.npm_stats.deps.node.size]]</span>Node.js Core Dependencies</h3>
100100
</div>
101101
<ul class="node-list">
102102
[[ for (const name of z.npm_stats.deps.node) { ]]
103-
<li data-value="[[=name]]">
103+
<li data-value="[[=name]]" tabindex="0" role="link" class="link">
104104
<p>[[=name]]</p>
105105
</li>
106106
[[ } ]]
@@ -171,7 +171,7 @@ <h3><span>[[=z.git_stats.packages_count.internal]]</span>Internal Dependencies</
171171
<ul class="npm-packages-list">
172172
[[ for (const [name, option] of Object.entries(z.git_stats.packages)) { ]]
173173
[[ if (!option.isThird) { ]]
174-
<li data-value="[[=name]]">
174+
<li data-value="[[=name]]" tabindex="0" role="link" class="link">
175175
<p>[[=name]]</p>
176176
</li>
177177
[[ } ]]
@@ -186,7 +186,7 @@ <h3><span>[[=z.git_stats.packages_count.external]]</span>Third-party Dependencie
186186
<ul class="npm-packages-list">
187187
[[ for (const [name, option] of Object.entries(z.git_stats.packages)) { ]]
188188
[[ if (option.isThird) { ]]
189-
<li data-value="[[=name]]">
189+
<li data-value="[[=name]]" tabindex="0" role="link" class="link">
190190
<p>[[=name]]</p>
191191
</li>
192192
[[ } ]]

0 commit comments

Comments
 (0)