metonym / svelte-focus-key

Svelte component and action to focus an element when pressing a key

Home Page:https://metonym.github.io/svelte-focus-key

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

svelte-focus-key

NPM

Svelte component and action to focus an element when pressing a key

The primary use case is to focus a search input when pressing the forward slash key ("/").

Installation

# Yarn
yarn add -D svelte-focus-key

# NPM
npm i -D svelte-focus-key

# pnpm
pnpm i -D svelte-focus-key

Usage

FocusKey component

Use the bind:this directive to pass the element to focus to the FocusKey component.

<script>
  import FocusKey from "svelte-focus-key";

  let element;
</script>

<input bind:this={element} placeholder={'Press "/" to focus'} />

<FocusKey {element} />

Custom focus key

The default focus key is the forward slash (/). Customize the key using the key prop.

<script>
  import FocusKey from "svelte-focus-key";

  let textarea;
</script>

<textarea bind:this={textarea} placeholder={'Press "s" to focus'} />

<FocusKey element={textarea} key="s" />

Multiple focus keys

The key prop can also accept an array of keys.

<script>
  import FocusKey from "svelte-focus-key";

  let node;
</script>

<input bind:this={node} placeholder={'Press "a" or "b"'} />

<FocusKey element={node} key={["a", "b"]} />

Combination of keys

A combination of keys should be separated by a +.

<script>
  import FocusKey from "svelte-focus-key";

  let element;
</script>

<input bind:this={element} placeholder={'Press "⌘+k" to focus'} />

<FocusKey {element} key="Meta+k" />

Select text on focus

Set selectText to true to select the text in the element when focusing.

<script>
  import FocusKey from "svelte-focus-key";

  let input;
</script>

<input
  bind:this={input}
  value={'Press "e" to focus'}
  placeholder={'Press "e" to focus'}
/>

<FocusKey element={input} key="e" selectText />

focusKey action

This utility also provides a Svelte action.

<script>
  import { focusKey } from "svelte-focus-key";
</script>

<input use:focusKey={{ key: "q" }} placeholder={'Press "q" to focus'} />

API

Props

Name Description Type Default value
element HTML element to focus HTMLElement null
key Key to trigger focus when pressed string or string[] "/"
selectText Select element text when focusing boolean false

The focusKey action has the same props as FocusKey except for element.

About

Svelte component and action to focus an element when pressing a key

https://metonym.github.io/svelte-focus-key

License:MIT License


Languages

Language:TypeScript 83.0%Language:Svelte 10.3%Language:JavaScript 6.7%