diff --git a/index.ts b/index.ts
index 47470a9..46e045d 100644
--- a/index.ts
+++ b/index.ts
@@ -86,24 +86,31 @@ export function unindent(element: HTMLTextAreaElement): void {
}
export function eventHandler(event: KeyboardEvent): void {
- if (event.defaultPrevented) {
+ if (
+ event.defaultPrevented ||
+ event.metaKey ||
+ event.altKey ||
+ event.ctrlKey
+ ) {
return;
}
const textarea = event.target as HTMLTextAreaElement;
- if (
- event.key === 'Tab' &&
- !event.metaKey &&
- !event.altKey &&
- !event.ctrlKey
- ) {
+ if (event.key === 'Tab') {
if (event.shiftKey) {
unindent(textarea);
} else {
indent(textarea);
}
+ event.preventDefault();
+ event.stopImmediatePropagation();
+ } else if (
+ event.key === 'Escape' &&
+ !event.shiftKey
+ ) {
+ textarea.blur();
event.preventDefault();
event.stopImmediatePropagation();
}
diff --git a/readme.md b/readme.md
index 8c4a1b4..f5bdb1f 100644
--- a/readme.md
+++ b/readme.md
@@ -55,7 +55,7 @@ If you prefer the raw `indent`/`unindent` methods, they're also available below.
### indentation.watch(textarea)
-Adds tab and shift+tab event listeners to the provided `textarea`(s).
+Adds tab and shift+tab event listeners to the provided `textarea`(s). It also listens to esc to blur/unfocus the field and allow the user to keep tabbing.
#### textarea