Rollup merge of #110661 - notriddle:notriddle/settings-js-handlekey, r=GuillaumeGomez

rustdoc: clean up settings.css and settings.js

`handleKey` was added in 9dc5dfb97504c538bc72f367a77bb9f714c30097 and 704050da2334c465784954d81c8990c4bc7a92c5 because the browser-native checkbox was `display: none`, breaking native keyboard accessibility.

The native checkbox is now merely `appearance: none`, which does not turn off [behavior semantics], so JavaScript to reimplement it isn't needed any more.

[behavior semantics]: https://w3c.github.io/csswg-drafts/css-ui/#appearance-semantics

The other, one line change to settings.css is follow-up to #110205
This commit is contained in:
Matthias Krüger 2023-04-23 20:06:30 +02:00 committed by GitHub
commit 4064bdd914
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 19 deletions

View File

@ -7,7 +7,6 @@
margin-right: 0.3em; margin-right: 0.3em;
height: 1.2rem; height: 1.2rem;
width: 1.2rem; width: 1.2rem;
color: inherit;
border: 2px solid var(--settings-input-border-color); border: 2px solid var(--settings-input-border-color);
outline: none; outline: none;
-webkit-appearance: none; -webkit-appearance: none;

View File

@ -1,5 +1,5 @@
// Local js definitions: // Local js definitions:
/* global getSettingValue, getVirtualKey, updateLocalStorage, updateTheme */ /* global getSettingValue, updateLocalStorage, updateTheme */
/* global addClass, removeClass, onEach, onEachLazy, blurHandler, elemIsInParent */ /* global addClass, removeClass, onEach, onEachLazy, blurHandler, elemIsInParent */
/* global MAIN_ID, getVar, getSettingsButton */ /* global MAIN_ID, getVar, getSettingsButton */
@ -32,21 +32,6 @@
} }
} }
function handleKey(ev) {
// Don't interfere with browser shortcuts
if (ev.ctrlKey || ev.altKey || ev.metaKey) {
return;
}
switch (getVirtualKey(ev)) {
case "Enter":
case "Return":
case "Space":
ev.target.checked = !ev.target.checked;
ev.preventDefault();
break;
}
}
function showLightAndDark() { function showLightAndDark() {
removeClass(document.getElementById("preferred-light-theme"), "hidden"); removeClass(document.getElementById("preferred-light-theme"), "hidden");
removeClass(document.getElementById("preferred-dark-theme"), "hidden"); removeClass(document.getElementById("preferred-dark-theme"), "hidden");
@ -77,8 +62,6 @@
toggle.onchange = function() { toggle.onchange = function() {
changeSetting(this.id, this.checked); changeSetting(this.id, this.checked);
}; };
toggle.onkeyup = handleKey;
toggle.onkeyrelease = handleKey;
}); });
onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"), elem => { onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"), elem => {
const settingId = elem.name; const settingId = elem.name;

View File

@ -256,6 +256,15 @@ set-local-storage: {"rustdoc-disable-shortcuts": "false"}
click: ".setting-line:last-child .setting-check span" click: ".setting-line:last-child .setting-check span"
assert-local-storage: {"rustdoc-disable-shortcuts": "true"} assert-local-storage: {"rustdoc-disable-shortcuts": "true"}
// We now check that focusing a toggle and pressing Space is like clicking on it.
assert-local-storage: {"rustdoc-disable-shortcuts": "true"}
focus: ".setting-line:last-child .setting-check input"
press-key: "Space"
assert-local-storage: {"rustdoc-disable-shortcuts": "false"}
focus: ".setting-line:last-child .setting-check input"
press-key: "Space"
assert-local-storage: {"rustdoc-disable-shortcuts": "true"}
// Make sure that "Disable keyboard shortcuts" actually took effect. // Make sure that "Disable keyboard shortcuts" actually took effect.
press-key: "Escape" press-key: "Escape"
press-key: "?" press-key: "?"