LibWebView: Add an escape key handler for DOM-editing <input> fields

Little quality of life improvement I keep reaching for.
This commit is contained in:
Timothy Flynn 2023-12-05 19:55:43 -05:00 committed by Andreas Kling
parent 0ddc2ea8c4
commit 636ff33d60

View file

@ -208,6 +208,7 @@ const createDOMEditor = (onHandleChange, onCancelChange) => {
const handleChange = () => {
input.removeEventListener("change", handleChange);
input.removeEventListener("blur", cancelChange);
input.removeEventListener("keydown", handleInput);
try {
onHandleChange(input.value);
@ -219,13 +220,24 @@ const createDOMEditor = (onHandleChange, onCancelChange) => {
const cancelChange = () => {
input.removeEventListener("change", handleChange);
input.removeEventListener("blur", cancelChange);
input.removeEventListener("keydown", handleInput);
selectedDOMNode.classList.add("selected");
onCancelChange(input);
};
const handleInput = event => {
const ESCAPE_KEYCODE = 27;
if (event.keyCode === ESCAPE_KEYCODE) {
cancelChange();
event.preventDefault();
}
};
input.addEventListener("change", handleChange);
input.addEventListener("blur", cancelChange);
input.addEventListener("keydown", handleInput);
setTimeout(() => {
input.focus();