mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 07:07:34 +00:00
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:
parent
0ddc2ea8c4
commit
636ff33d60
1 changed files with 12 additions and 0 deletions
|
@ -208,6 +208,7 @@ const createDOMEditor = (onHandleChange, onCancelChange) => {
|
||||||
const handleChange = () => {
|
const handleChange = () => {
|
||||||
input.removeEventListener("change", handleChange);
|
input.removeEventListener("change", handleChange);
|
||||||
input.removeEventListener("blur", cancelChange);
|
input.removeEventListener("blur", cancelChange);
|
||||||
|
input.removeEventListener("keydown", handleInput);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
onHandleChange(input.value);
|
onHandleChange(input.value);
|
||||||
|
@ -219,13 +220,24 @@ const createDOMEditor = (onHandleChange, onCancelChange) => {
|
||||||
const cancelChange = () => {
|
const cancelChange = () => {
|
||||||
input.removeEventListener("change", handleChange);
|
input.removeEventListener("change", handleChange);
|
||||||
input.removeEventListener("blur", cancelChange);
|
input.removeEventListener("blur", cancelChange);
|
||||||
|
input.removeEventListener("keydown", handleInput);
|
||||||
|
|
||||||
selectedDOMNode.classList.add("selected");
|
selectedDOMNode.classList.add("selected");
|
||||||
onCancelChange(input);
|
onCancelChange(input);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const handleInput = event => {
|
||||||
|
const ESCAPE_KEYCODE = 27;
|
||||||
|
|
||||||
|
if (event.keyCode === ESCAPE_KEYCODE) {
|
||||||
|
cancelChange();
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
input.addEventListener("change", handleChange);
|
input.addEventListener("change", handleChange);
|
||||||
input.addEventListener("blur", cancelChange);
|
input.addEventListener("blur", cancelChange);
|
||||||
|
input.addEventListener("keydown", handleInput);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
input.focus();
|
input.focus();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue