Skip to content

Commit aa277b8

Browse files
committed
feat: 🎸 return events from useKeyboardJs hook
1 parent c0658f6 commit aa277b8

File tree

3 files changed

+35
-6
lines changed

3 files changed

+35
-6
lines changed

docs/useEvent.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ const Demo = () => {
3434

3535
```js
3636
useEvent('keydown', handler)
37-
useEvent('scroll', handler, window, {useCapture: true})
37+
useEvent('scroll', handler, window, {capture: true})
3838
```

src/__stories__/useKeyPressEvent.story.tsx

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { storiesOf } from "@storybook/react";
22
import * as React from "react";
3-
import { useKeyPressEvent } from "..";
3+
import { useKeyPressEvent, useKeyboardJs } from "..";
44
import ShowDocs from "../util/ShowDocs";
55

66
const Demo = () => {
@@ -31,6 +31,35 @@ const Demo = () => {
3131
);
3232
};
3333

34+
const DemoKeyboardJs = () => {
35+
const [count, setCount] = React.useState(0);
36+
37+
const increment = () => {
38+
console.log('INCREMENT');
39+
setCount(count => ++count);
40+
};
41+
const decrement = () => {
42+
console.log('DECREMENT');
43+
setCount(count => --count);
44+
};
45+
const reset = () => setCount(() => 0);
46+
47+
useKeyPressEvent('q + ]', increment, increment, useKeyboardJs as any);
48+
useKeyPressEvent('q + [', decrement, decrement, useKeyboardJs as any);
49+
useKeyPressEvent('q + r', reset, null, useKeyboardJs as any);
50+
51+
return (
52+
<div>
53+
<style dangerouslySetInnerHTML={{__html: `code {color: red}`}} />
54+
<p>
55+
Try pressing <code>q + [</code>, <code>q + ]</code>, and <code>q + r</code> to
56+
see the count incremented and decremented.</p>
57+
<p>Count: {count}</p>
58+
</div>
59+
);
60+
};
61+
3462
storiesOf("Sensors/useKeyPressEvent", module)
3563
.add("Docs", () => <ShowDocs md={require("../../docs/useKeyPressEvent.md")} />)
36-
.add("Demo", () => <Demo />);
64+
.add("Demo", () => <Demo />)
65+
.add("KeyboardJs", () => <DemoKeyboardJs />);

src/useKeyboardJs.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {useState, useEffect} from 'react';
22
import useMount from './useMount';
33

44
const useKeyboardJs = (combination: string) => {
5-
const [state, set] = useState(false);
5+
const [state, set] = useState<[boolean, null | KeyboardEvent]>([false, null]);
66
const [keyboardJs, setKeyboardJs] = useState<any>(null);
77

88
useMount(() => {
@@ -12,8 +12,8 @@ const useKeyboardJs = (combination: string) => {
1212
useEffect(() => {
1313
if (!keyboardJs) return;
1414

15-
const down = () => set(true);
16-
const up = () => set(false);
15+
const down = event => set([true, event]);
16+
const up = event => set([false, event]);
1717
keyboardJs.bind(combination, down, up);
1818

1919
return () => {

0 commit comments

Comments
 (0)