4.0.0-canary.23 • Published 4 years ago

@rooks/use-keys v4.0.0-canary.23

Weekly downloads
642
License
MIT
Repository
github
Last release
4 years ago

@rooks/use-keys

TitleCard

Build Statusnpm.io npm.io npm.io npm.io

About

A hook which allows to setup callbacks when a combination of keys are pressed at the same time.

An important difference between useKey and useKeys is that useKey checks if EITHER of the keys in the list is pressed, while useKeys checks if ALL of the keys in the list are active.

Installation

npm install --save @rooks/use-keys

Importing the hook

import useKeys from "@rooks/use-keys";

Usage

function Demo() {
  const containerRef = React.useRef(document);
  const inputRef = React.useRef(null);
  const [isEventActive, setIsEventActive] = React.useState(true);
  const [firstCallbackCallCount, setFirstCallbackCallCount] = React.useState(0);
  useKeys(
    ["ControlLeft", "KeyS"],
    () => {
      alert("you presses ctrlLeft + s");
      setFirstCallbackCallCount(firstCallbackCallCount + 1);
    },
    {
      target: containerRef,
      when: isEventActive
    }
  );
  useKeys(
    ["m", "r"],
    event => {
      // event.stopPropagation();
      console.log("here you go m and r");
    },
    {
      when: isEventActive,
      target: inputRef
    }
  );
  return (
    <div data-testid="container">
      <p data-testid="first-callback">
        Callback Run Count:
        {firstCallbackCallCount}
      </p>
      <p>Is events enabled ? ==> {isEventActive ? "Yes" : "No"}</p>
      <p>Press CtrlLeft + s to see update in count</p>
      <button
        onClick={() => {
          setIsEventActive(!isEventActive);
        }}
      >
        Toggle event enabled
      </button>
      <div className="grid-container">
        <input ref={inputRef} className="box1" tabIndex={1} />
      </div>
    </div>
  );
}

render(<Demo />);
4.11.1

4 years ago

4.11.2

4 years ago

4.11.0

4 years ago

4.10.1

4 years ago

4.10.0

4 years ago

4.9.2

4 years ago

4.9.1

4 years ago

4.9.0

4 years ago

4.9.0-canary.0

4 years ago

4.8.1

4 years ago

4.8.0

4 years ago

4.7.1

4 years ago

4.7.0

4 years ago

4.6.1

4 years ago

4.6.0

4 years ago

4.5.0-canary.2

4 years ago

4.5.0

4 years ago

4.4.0

4 years ago

4.2.1-canary.0

4 years ago

4.2.1-canary.2

4 years ago

4.2.1-canary.3

4 years ago

4.3.0

4 years ago

4.2.0

4 years ago

4.1.1

4 years ago

4.1.1-canary.0

4 years ago

4.1.0

4 years ago

4.1.0-canary.1

4 years ago

4.1.0-canary.2

4 years ago

4.0.2

4 years ago

4.0.1

4 years ago

4.0.0-canary.23

4 years ago

4.0.0-canary.22

4 years ago

4.0.0

4 years ago

4.0.0-canary.20

4 years ago

4.0.0-canary.17

4 years ago

4.0.0-canary.19

4 years ago

4.0.0-canary.16

5 years ago

4.0.0-canary.14

5 years ago

4.0.0-canary.13

5 years ago

4.0.0-canary.10

5 years ago

4.0.0-canary.9

5 years ago

4.0.0-canary.8

5 years ago

4.0.0-canary.6

5 years ago

4.0.0-canary.0

5 years ago

3.6.1-canary.2

5 years ago

3.6.0

5 years ago

3.6.0-canary.0

5 years ago

3.5.1

5 years ago

3.5.1-canary.20

5 years ago

3.4.4-71d48a96.0

5 years ago

3.5.0-canary.9

5 years ago

3.5.0

5 years ago

3.4.4-e1839b43.0

5 years ago

3.4.4-0b6223c4.0

5 years ago

3.4.4-a9fb8da1.0

5 years ago

3.4.3

5 years ago

3.4.4-ca7e506a.0

5 years ago

3.4.3-695b2acc.0

5 years ago

3.4.3-cfbe4783.0

5 years ago

3.4.3-f130c101.0

5 years ago

3.4.3-bb90b83d.0

5 years ago

3.4.3-53abf21e.0

5 years ago

3.4.3-5f1a38fa.0

5 years ago

3.4.3-20c504bd.0

5 years ago

3.4.2

5 years ago

3.4.3-efa33040.0

5 years ago

3.4.2-dev.1

5 years ago

3.4.2-dev.0

5 years ago

3.4.2-1963d180.0

5 years ago

3.4.2-0668aca8.0

5 years ago

3.4.1

5 years ago

3.4.0

6 years ago

3.3.0

6 years ago

3.3.0-alpha.0

6 years ago

3.2.4

6 years ago

3.2.3

6 years ago

3.2.2-alpha.0

6 years ago

3.2.2

6 years ago

3.2.1

6 years ago

3.2.0

6 years ago

3.1.1-alpha.1

6 years ago