Skip to content

Commit d53988a

Browse files
authored
ReactDOM.useEvent: add useEvent interaction hook (facebook#18604)
1 parent bf55ea7 commit d53988a

File tree

15 files changed

+1256
-17
lines changed

15 files changed

+1256
-17
lines changed

packages/react-debug-tools/src/ReactDebugHooks.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ type ReactDebugListenerMap = {|
5252
clear: () => void,
5353
setListener: (
5454
target: EventTarget | ReactScopeMethods,
55-
callback: ?(Event) => void,
55+
callback: ?(SyntheticEvent<EventTarget>) => void,
5656
) => void,
5757
|};
5858

packages/react-dom/src/client/ReactDOMHostConfig.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1216,7 +1216,7 @@ export function unmountEventListener(listener: ReactDOMListener): void {
12161216

12171217
export function validateEventListenerTarget(
12181218
target: EventTarget | ReactScopeMethods,
1219-
listener: ?(Event) => void,
1219+
listener: ?(SyntheticEvent<EventTarget>) => void,
12201220
): boolean {
12211221
if (enableUseEventAPI) {
12221222
if (

packages/react-dom/src/client/ReactDOMUseEvent.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,10 @@ function resolveDispatcher() {
4242
}
4343

4444
export function useEvent(
45-
type: DOMTopLevelEventType,
45+
type: string,
4646
options?: EventOptions,
4747
): ReactDOMListenerMap {
48+
const topLevelType = ((type: any): DOMTopLevelEventType);
4849
const dispatcher = resolveDispatcher();
4950
let capture = false;
5051
let passive = undefined; // Undefined means to use the browser default
@@ -66,13 +67,13 @@ export function useEvent(
6667
}
6768
}
6869
if (priority === undefined) {
69-
priority = getEventPriorityForListenerSystem(type);
70+
priority = getEventPriorityForListenerSystem(topLevelType);
7071
}
7172
const event: ReactDOMListenerEvent = {
7273
capture,
7374
passive,
7475
priority,
75-
type,
76+
type: topLevelType,
7677
};
7778
return dispatcher.useEvent(event);
7879
}

packages/react-dom/src/shared/ReactDOMTypes.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,12 @@ export type ReactDOMListenerMap = {|
8989
clear: () => void,
9090
setListener: (
9191
target: EventTarget | ReactScopeMethods,
92-
callback: ?(Event) => void,
92+
callback: ?(SyntheticEvent<EventTarget>) => void,
9393
) => void,
9494
|};
9595

9696
export type ReactDOMListener = {|
97-
callback: Event => void,
97+
callback: (SyntheticEvent<EventTarget>) => void,
9898
destroy: Node => void,
9999
event: ReactDOMListenerEvent,
100100
target: EventTarget | ReactScopeMethods,
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/**
2+
* Copyright (c) Facebook, Inc. and its affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*
7+
* @flow
8+
*/
9+
10+
export * from './src/dom/DeprecatedFocus';

packages/react-interactions/events/focus.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
* @flow
88
*/
99

10-
export * from './src/dom/Focus';
10+
export * from './src/dom/use-event/Focus';

packages/react-interactions/events/src/dom/__tests__/Focus-test.internal.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ function initializeModules(hasPointerEvents) {
3232
// TODO: This import throws outside of experimental mode. Figure out better
3333
// strategy for gated imports.
3434
if (__EXPERIMENTAL__) {
35-
FocusResponder = require('react-interactions/events/focus').FocusResponder;
36-
useFocus = require('react-interactions/events/focus').useFocus;
35+
FocusResponder = require('react-interactions/events/deprecated-focus')
36+
.FocusResponder;
37+
useFocus = require('react-interactions/events/deprecated-focus').useFocus;
3738
}
3839
}
3940

packages/react-interactions/events/src/dom/__tests__/FocusWithin-test.internal.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,10 @@ const initializeModules = hasPointerEvents => {
3131
// TODO: This import throws outside of experimental mode. Figure out better
3232
// strategy for gated imports.
3333
if (__EXPERIMENTAL__) {
34-
FocusWithinResponder = require('react-interactions/events/focus')
34+
FocusWithinResponder = require('react-interactions/events/deprecated-focus')
3535
.FocusWithinResponder;
36-
useFocusWithin = require('react-interactions/events/focus').useFocusWithin;
36+
useFocusWithin = require('react-interactions/events/deprecated-focus')
37+
.useFocusWithin;
3738
}
3839
};
3940

0 commit comments

Comments
 (0)