Skip to content

Commit

Permalink
Blur textarea on escape (#24)
Browse files Browse the repository at this point in the history
Co-authored-by: Federico Brigante <me@fregante.com>
  • Loading branch information
Knutas and fregante committed Mar 5, 2023
1 parent cb5f54f commit 85d6019
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 8 deletions.
21 changes: 14 additions & 7 deletions index.ts
Expand Up @@ -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();
}
Expand Down
2 changes: 1 addition & 1 deletion readme.md
Expand Up @@ -55,7 +55,7 @@ If you prefer the raw `indent`/`unindent` methods, they're also available below.

### indentation.watch(textarea)

Adds <kbd>tab</kbd> and <kbd>shift+tab</kbd> event listeners to the provided `textarea`(s).
Adds <kbd>tab</kbd> and <kbd>shift+tab</kbd> event listeners to the provided `textarea`(s). It also listens to <kbd>esc</kbd> to blur/unfocus the field and allow the user to keep tabbing.

#### textarea

Expand Down

0 comments on commit 85d6019

Please sign in to comment.