Accessibility (#4227) D3press3dd

* fix: add role missing in aria-label

* fix: add web-kit option to support safari browsers

* fix: change div to link to keep the structure of the others

* fix:add rel to avoid tab access with window.opener

* fix: add missing roles when using aria-label

* fix: delete placeholders

* fix:add webkit to all,comment unused css selectors

* removed placeholder

---------

Co-authored-by: Miodec <jack@monkeytype.com>
This commit is contained in:
Anthony Rosman 2023-04-28 09:52:22 -04:00 committed by GitHub
parent a9e58b13fd
commit 2ba3067f89
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 118 additions and 51 deletions

View file

@ -370,6 +370,7 @@
.sortable:hover {
cursor: pointer;
-webkit-user-select: none;
user-select: none;
background-color: var(--sub-alt-color);
}

View file

@ -85,6 +85,7 @@
max-height: calc(100vh - 10rem - 3rem);
display: grid;
cursor: pointer;
-webkit-user-select: none;
user-select: none;
.entry {

View file

@ -116,6 +116,7 @@ label.checkbox {
width: 0;
height: 0;
display: none;
-webkit-user-select: none;
user-select: none;
& ~ .customTextCheckbox {
@ -125,6 +126,7 @@ label.checkbox {
border-radius: calc(var(--roundness) / 2);
display: inline-grid;
margin: 0 0.5rem 0 0;
-webkit-user-select: none;
user-select: none;
cursor: pointer;
& .check {
@ -273,11 +275,11 @@ key {
border-radius: var(--roundness);
background: var(--sub-alt-color);
text-align: center;
user-select: none;
-webkit-user-select: none;
user-select: none;
align-content: center;
height: min-content;
height: -moz-min-content;
height: min-content;
line-height: 1.25em;
appearance: none;
border: none;
@ -332,18 +334,18 @@ key {
padding: 0.5em;
border-radius: var(--roundness);
text-align: center;
user-select: none;
-webkit-user-select: none;
user-select: none;
align-content: center;
height: min-content;
height: -moz-min-content;
height: min-content;
line-height: 1.25em;
appearance: none;
border: none;
font-family: inherit;
font-size: 1em;
width: max-content;
width: -moz-max-content;
width: max-content;
display: grid;
grid-auto-flow: column;
gap: 0.25em;
@ -474,6 +476,7 @@ key {
color: var(--text-color);
border-radius: calc(var(--roundness) / 2);
// padding: 0.15em 0.5em;
-webkit-user-select: none;
user-select: none;
display: grid;
grid-template-columns: max-content auto;

View file

@ -48,6 +48,7 @@
}
.leftright {
-webkit-user-select: none;
user-select: none;
display: grid;
grid-template-columns: auto auto;
@ -62,16 +63,16 @@
text-align: left;
display: grid;
grid-auto-flow: column;
width: -moz-fit-content;
width: fit-content;
gap: 1rem;
width: -moz-fit-content;
}
.right {
text-align: right;
display: grid;
grid-auto-flow: column;
width: fit-content;
width: -moz-fit-content;
width: fit-content;
justify-self: right;
gap: 1rem;
// align-items: center;
@ -82,8 +83,8 @@
grid-auto-flow: column;
gap: 0.25rem;
align-items: baseline;
width: max-content;
width: -moz-available;
width: max-content;
}
}

View file

@ -84,6 +84,8 @@ input[type="number"]::-webkit-outer-spin-button {
input[type="number"] {
-moz-appearance: textfield;
-webkit-appearance: textfield;
appearance: textfield;
}
/* Change Autocomplete styles in Chrome*/

View file

@ -6,6 +6,7 @@
// height: 140px;
gap: 0.25rem;
margin-top: 1rem;
-webkit-user-select: none;
user-select: none;
.row {

View file

@ -6,8 +6,8 @@
grid-auto-flow: column;
gap: 0.5rem;
// margin-bottom: -0.4rem;
width: fit-content;
width: -moz-fit-content;
width: fit-content;
.textButton {
.text {
@ -42,10 +42,10 @@
height: 1.25em;
}
.loading,
.user {
// margin-top: 0.1rem;
}
// .loading,
// .user {
// // margin-top: 0.1rem;
// }
.levelAndBar {
transition: 0.125s;
@ -152,6 +152,7 @@
z-index: 2;
align-items: center;
gap: 0.5rem;
-webkit-user-select: none;
user-select: none;
.logo {
@ -192,6 +193,7 @@
margin-top: -0.2em;
}
white-space: nowrap;
-webkit-user-select: none;
user-select: none;
.bottom {

View file

@ -18,6 +18,7 @@
gap: 1rem;
}
.notif {
-webkit-user-select: none;
user-select: none;
.icon {
color: var(--sub-color);

View file

@ -64,6 +64,7 @@
&.disabled {
opacity: 0.5;
pointer-events: none;
-webkit-user-select: none;
user-select: none;
}
}
@ -133,6 +134,7 @@
margin: 1rem 0;
&.disabled {
opacity: 0.5;
-webkit-user-select: none;
user-select: none;
pointer-events: none;
}
@ -149,6 +151,7 @@
&.disabled {
opacity: 0.5;
pointer-events: none;
-webkit-user-select: none;
user-select: none;
}
}
@ -590,6 +593,7 @@
width: 465px;
z-index: 100000001;
// outline: 0.5rem solid var(--bg-color)
-webkit-user-select: none;
user-select: none;
.main {
display: grid;
@ -822,6 +826,7 @@
transition: 0.25s;
padding: 1rem;
box-sizing: border-box;
-webkit-user-select: none;
user-select: none;
cursor: pointer;
height: min-content;
@ -926,6 +931,7 @@
top: -1.25rem;
right: 0.25rem;
color: var(--sub-color);
-webkit-user-select: none;
user-select: none;
&.red {
color: var(--error-color);
@ -1076,6 +1082,7 @@
gap: 1rem;
transition: 0.25s;
box-sizing: border-box;
-webkit-user-select: none;
user-select: none;
height: min-content;
margin-bottom: 1rem;
@ -1143,9 +1150,9 @@
margin-bottom: -1rem;
}
.text {
// color: var(--sub-color);
}
// .text {
// // color: var(--sub-color);
// }
.quote {
font-size: 1.5rem;
@ -1169,6 +1176,7 @@
top: -1.25rem;
right: 0.25rem;
color: var(--sub-color);
-webkit-user-select: none;
user-select: none;
&.red {
color: var(--error-color);
@ -1197,9 +1205,9 @@
margin-bottom: -1rem;
}
.text {
// color: var(--sub-color);
}
// .text {
// // color: var(--sub-color);
// }
.user {
font-size: 1.5rem;
@ -1223,6 +1231,7 @@
top: -1.25rem;
right: 0.25rem;
color: var(--sub-color);
-webkit-user-select: none;
user-select: none;
&.red {
color: var(--error-color);
@ -1577,6 +1586,7 @@
font-size: 1.25rem;
margin-bottom: 1rem;
color: var(--sub-color);
-webkit-user-select: none;
user-select: none;
}
.accountAlerts > .claimAll,

View file

@ -132,6 +132,7 @@
flex-wrap: wrap;
width: 100%;
align-content: flex-start;
-webkit-user-select: none;
user-select: none;
padding-bottom: 1em;
@ -518,6 +519,7 @@
}
}
.title {
-webkit-user-select: none;
user-select: none;
margin-bottom: 0.25rem;
}
@ -526,6 +528,7 @@
flex-wrap: wrap;
width: 100%;
align-content: flex-start;
-webkit-user-select: none;
user-select: none;
.word {
position: relative;
@ -844,13 +847,14 @@
color: var(--error-color);
transition: 0.25s;
cursor: pointer;
width: max-content;
width: -moz-max-content;
width: max-content;
background: var(--colorful-error-color);
color: var(--bg-color);
justify-self: center;
justify-content: center;
margin: 0 auto 1rem auto;
-webkit-user-select: none;
user-select: none;
&:hover,
@ -887,8 +891,8 @@
#koInputVisualContainer {
position: relative;
padding-top: 1rem;
width: min-content;
width: -moz-min-content;
width: min-content;
height: 3rem;
margin: 0 auto;
@ -900,8 +904,8 @@
&.blurred {
opacity: 0.25;
filter: blur(4px);
-webkit-filter: blur(4px);
filter: blur(4px);
}
}
@ -1055,6 +1059,7 @@
position: absolute;
transform: translateX(-50%);
top: -6rem;
-webkit-user-select: none;
user-select: none;
pointer-events: none;
opacity: 0;
@ -1065,6 +1070,7 @@
line-height: 150px;
z-index: 999;
position: relative;
-webkit-user-select: none;
user-select: none;
pointer-events: none;
}
@ -1077,6 +1083,7 @@
margin-bottom: 0.5rem;
transition: 0.125s;
justify-content: center;
-webkit-user-select: none;
user-select: none;
.textButton {

View file

@ -31,7 +31,7 @@
href="https://github.com/monkeytypegame/monkeytype"
class="textButton"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
<i class="fas fa-fw fa-code"></i>
<div class="text">GitHub</div>
@ -40,7 +40,7 @@
href="https://www.discord.gg/monkeytype"
class="textButton"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
class="discordLink"
>
<i class="fab fa-fw fa-discord"></i>
@ -50,7 +50,7 @@
href="https://twitter.com/monkeytypegame"
class="textButton"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
<i class="fab fa-fw fa-twitter"></i>
<div class="text">Twitter</div>

View file

@ -202,7 +202,7 @@
class="button"
href="https://twitter.com/monkeytypegame"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
<div class="fab fa-twitter"></div>
Twitter
@ -211,7 +211,7 @@
class="button"
href="https://discord.gg/monkeytype"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
<div class="fab fa-discord"></div>
Discord
@ -220,7 +220,7 @@
class="button"
href="https://github.com/monkeytypegame/monkeytype"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
<div class="fab fa-github"></div>
GitHub
@ -233,7 +233,7 @@
<a
href="https://www.reddit.com/user/montydrei"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
Montydrei
</a>
@ -243,7 +243,7 @@
<a
href="https://www.reddit.com/r/MechanicalKeyboards/comments/gc6wx3/experimenting_with_a_completely_new_type_of/"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
Everyone
</a>
@ -258,7 +258,7 @@
<a
href="https://github.com/monkeytypegame/monkeytype/graphs/contributors"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
Contributors
</a>

View file

@ -81,6 +81,7 @@
class="editProfileButton button"
data-balloon-pos="left"
aria-label="Edit profile"
role="button"
>
<i class="fas fa-pen"></i>
</div>
@ -88,6 +89,7 @@
class="copyLink button"
data-balloon-pos="left"
aria-label="Copy public link"
role="button"
>
<i class="fas fa-link"></i>
</div>
@ -138,6 +140,7 @@
class="showAllButton button"
data-balloon-pos="left"
aria-label="Show all personal bests"
role="button"
>
<i class="fas fa-ellipsis-v"></i>
</div>
@ -177,6 +180,7 @@
class="showAllButton button"
data-balloon-pos="left"
aria-label="Show all personal bests"
role="button"
>
<i class="fas fa-ellipsis-v"></i>
</div>
@ -473,8 +477,9 @@
tests completed
<span
data-balloon-length="xlarge"
aria-label="Due to the increasing number of results in the database, you can now only see your last 1000 results in detail. Total time spent typing, started and completed tests stats will still be up to date at the top of the page, above the filters."
data-balloon-pos="up"
aria-label="Due to the increasing number of results in the database, you can now only see your last 1000 results in detail. Total time spent typing, started and completed tests stats will still be up to date at the top of the page, above the filters."
role="alertdialog"
>
<i class="fas fa-question-circle"></i>
</span>

View file

@ -79,6 +79,7 @@
class="userReportButton button"
data-balloon-pos="left"
aria-label="Report user"
role="button"
>
<i class="fas fa-flag"></i>
</div>

View file

@ -142,6 +142,7 @@
<div
id="restartTestButton"
aria-label="Restart Test"
role="button"
data-balloon-pos="down"
class=""
tabindex="0"
@ -199,6 +200,7 @@
result-id=""
active-tag-ids=""
aria-label="Edit tags"
role="button"
data-balloon-pos="right"
>
<i class="fas fa-pen fa-fw"></i>
@ -360,6 +362,7 @@
<div
id="nextTestButton"
aria-label="Next test"
role="button"
data-balloon-pos="down"
tabindex="0"
onclick="this.blur();"
@ -369,6 +372,7 @@
<div
id="restartTestButtonWithSameWordset"
aria-label="Repeat test"
role="button"
data-balloon-pos="down"
tabindex="0"
onclick="this.blur();"
@ -378,6 +382,7 @@
<div
id="practiseWordsButton"
aria-label="Practice words"
role="button"
data-balloon-pos="down"
tabindex="0"
onclick="this.blur();"
@ -387,6 +392,7 @@
<div
id="showWordHistoryButton"
aria-label="Toggle words history"
role="button"
data-balloon-pos="down"
tabindex="0"
onclick="this.blur();"
@ -396,6 +402,7 @@
<div
id="watchReplayButton"
aria-label="Watch replay"
role="button"
data-balloon-pos="down"
tabindex="0"
onclick="this.blur();"
@ -405,6 +412,7 @@
<div
id="saveScreenshotButton"
aria-label="Save screenshot"
role="button"
data-balloon-pos="down"
tabindex="0"
onclick="this.blur();"
@ -414,6 +422,7 @@
<div
id="watchVideoAdButton"
aria-label="Watch video ad"
role="button"
data-balloon-pos="down"
tabindex="0"
onclick="this.blur();"

View file

@ -413,14 +413,14 @@
<div id="settingsImportWrapper" class="popupWrapper hidden">
<div id="settingsImport" action="">
<input type="text" />
<input type="text" title="import settings" />
<div class="button">import settings</div>
</div>
</div>
<div id="customThemeShareWrapper" class="popupWrapper hidden">
<div id="customThemeShare" action="">
<input type="text" />
<input type="text" title="custom theme" />
<div class="button">ok</div>
</div>
</div>
@ -452,7 +452,7 @@
<div class="button">Got it</div>
</div>
</div>
<textarea class="textarea" placeholder="Custom text"></textarea>
<textarea class="textarea"></textarea>
</div>
<div class="inputs">
<label class="checkbox randomWordsCheckbox">
@ -562,7 +562,7 @@
<div class="top">
<div class="group">
<div class="title">language</div>
<select class="languageInput" class=""></select>
<select class="languageInput" title="language"></select>
</div>
<div class="tip">
You can manually filter words by length, words or characters (separated
@ -579,11 +579,13 @@
class="wordLength wordMinInput"
autocomplete="off"
type="number"
title="min"
/>
<input
class="wordLength wordMaxInput"
autocomplete="off"
type="number"
title="max"
/>
</div>
<div class="group">
@ -592,6 +594,7 @@
class="wordIncludeInput"
id="wordIncludeInput"
autocomplete="off"
title="include"
/>
</div>
<div class="group">
@ -600,6 +603,7 @@
class="wordExcludeInput"
id="wordExcludeInput"
autocomplete="off"
title="exclude"
/>
</div>
<!-- </div> -->
@ -613,7 +617,7 @@
<div class="rightSide">
<div class="group">
<div class="title">presets</div>
<select class="presetInput" class=""></select>
<select class="presetInput"></select>
</div>
<div class="group">
<div class="title">layout</div>
@ -658,7 +662,7 @@
<div id="customTestDurationPopup">
<div class="title">Test duration</div>
<div class="preview"></div>
<input value="1" />
<input value="1" title="test duration" />
<div class="tip">
You can start an infinite test by inputting 0. Then, to stop the test, use
the Bail Out feature (esc or ctrl/cmd + shift + p > Bail Out)
@ -768,7 +772,7 @@
<label>quote</label>
<div class="quote"></div>
<label>reason</label>
<select name="report-reason" class="reason">
<select name="report-reason" class="reason" title="reason">
<option value="Grammatical error">Grammatical error</option>
<option value="Inappropriate content">Inappropriate content</option>
<option value="Low quality content">Low quality content</option>
@ -831,7 +835,7 @@
<div id="tagsWrapper" class="popupWrapper hidden">
<div id="tagsEdit" action="" tagid="">
<div class="title"></div>
<input type="text" />
<input type="text" title="tag" />
<div class="button"><i class="fas fa-plus"></i></div>
</div>
</div>
@ -844,7 +848,7 @@
<div id="presetWrapper" class="popupWrapper hidden">
<div id="presetEdit" action="" presetid="">
<div class="title"></div>
<input type="text" class="text" />
<input type="text" class="text" title="presets" />
<label class="checkbox">
<input type="checkbox" />
<div class="customTextCheckbox">
@ -992,7 +996,7 @@
class="button"
href="https://ko-fi.com/monkeytype"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
<div class="icon"><i class="fas fa-fw fa-donate"></i></div>
<div class="text">Donate</div>
@ -1001,7 +1005,7 @@
class="button"
href="https://www.patreon.com/monkeytype"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
<div class="icon"><i class="fab fa-fw fa-patreon"></i></div>
<div class="text">
@ -1014,7 +1018,7 @@
class="button"
href="https://monkeytype.store"
target="_blank"
rel="noreferrer"
rel="noreferrer noopener"
>
<div class="icon"><i class="fas fa-fw fa-tshirt"></i></div>
<div class="text">Buy Merch</div>
@ -1164,14 +1168,14 @@
<label>github</label>
<div class="socialURL">
<p>https://github.com/</p>
<input class="github" type="text" value="" />
<input class="github" type="text" value="" placeholder="username" />
</div>
</div>
<div>
<label>twitter</label>
<div class="socialURL">
<p>https://twitter.com/</p>
<input class="twitter" type="text" value="" />
<input class="twitter" type="text" value="" placeholder="username" />
</div>
</div>
<div>

View file

@ -51,26 +51,29 @@
href="/"
onclick="this.blur();"
router-link
title="start test"
>
<div class="icon">
<i class="fas fa-fw fa-keyboard"></i>
</div>
</a>
<div
<a
class="textButton leaderboards view-leaderboards"
tabindex="2"
onclick="this.blur();"
title="leaderboard"
>
<div class="icon">
<i class="fas fa-fw fa-crown"></i>
</div>
</div>
</a>
<a
class="textButton view-about"
tabindex="2"
href="/about"
onclick="this.blur();"
router-link
title="about"
>
<div class="icon">
<i class="fas fa-fw fa-info"></i>
@ -94,6 +97,7 @@
href="/settings"
onclick="this.blur();"
router-link
title="settings"
>
<div class="icon">
<i class="fas fa-fw fa-cog"></i>

View file

@ -68,6 +68,7 @@
background: #d1d0c5;
color: #333;
cursor: pointer;
-webkit-user-select: none;
user-select: none;
}
.noCssReinstallServiceWorker:active {

View file

@ -369,7 +369,11 @@
</p>
<p>
For further information, see
<a href="https://en.wikipedia.org/wiki/HTTP_cookie" target="_blank">
<a
href="https://en.wikipedia.org/wiki/HTTP_cookie"
target="_blank"
rel="noreferrer noopener"
>
HTTP cookie
</a>
on Wikipedia.

View file

@ -219,7 +219,11 @@
<h1>Privacy Policy</h1>
If you use our Services, you must abide by our Privacy Policy. You
acknowledge that you have read our
<a href="https://monkeytype.com/privacy-policy" target="_blank">
<a
href="https://monkeytype.com/privacy-policy"
target="_blank"
rel="noreferrer noopener"
>
Privacy Policy
</a>
&nbsp;and understand that it sets forth how we collect, use, and store
@ -350,7 +354,13 @@
</div>
<p>
Terms based on
<a href="https://glitch.com/legal" target="_blank">Glitch terms</a>
<a
href="https://glitch.com/legal"
target="_blank"
rel="noreferrer noopener"
>
Glitch terms
</a>
</p>
</div>
</body>