File tree Expand file tree Collapse file tree 3 files changed +20
-16
lines changed Expand file tree Collapse file tree 3 files changed +20
-16
lines changed Original file line number Diff line number Diff line change @@ -105,7 +105,7 @@ export interface ViewProps<Signals extends {}> extends RNProps {
105
105
/**
106
106
* Prop to set the event listener map. See [Handlong Events](/docs/guides/handle-events)
107
107
*/
108
- on ?: Partial < EventListeners | Signals > ;
108
+ on ?: Partial < WidgetEventListeners | Signals > ;
109
109
/**
110
110
* Prop to set the ref. The ref will return the underlying nodegui widget.
111
111
*/
@@ -199,7 +199,7 @@ export function setViewProps<Signals extends {}>(
199
199
set pos ( position : Position ) {
200
200
widget . move ( position . x , position . y ) ;
201
201
} ,
202
- set on ( listenerMap : Partial < EventListeners | Signals > ) {
202
+ set on ( listenerMap : Partial < WidgetEventListeners | Signals > ) {
203
203
const listenerMapLatest : any = Object . assign ( { } , listenerMap ) ;
204
204
const oldListenerMap = Object . assign ( { } , oldProps . on ) ;
205
205
Object . entries ( oldListenerMap ) . forEach ( ( [ eventType , oldEvtListener ] ) => {
@@ -293,14 +293,14 @@ type Position = {
293
293
y : number ;
294
294
} ;
295
295
296
- type EventListeners = {
297
- [ key in WidgetEventTypes ] : ( native ?: NativeElement ) => void ;
298
- } ;
299
-
300
296
type WidgetAttributesMap = {
301
297
[ key : number ] : boolean ;
302
298
} ;
303
299
304
300
type WindowFlagsMap = {
305
301
[ key : number ] : boolean ;
306
302
} ;
303
+
304
+ export type WidgetEventListeners = {
305
+ [ key in WidgetEventTypes ] : ( native ?: NativeElement ) => void ;
306
+ } ;
Original file line number Diff line number Diff line change 7
7
AnimatedImage ,
8
8
ComboBox
9
9
} from "./index" ;
10
- import { QIcon , QVariant } from "@nodegui/nodegui" ;
10
+ import { QIcon , QVariant , QPushButtonSignals } from "@nodegui/nodegui" ;
11
+ import { useEventHandler } from "./hooks" ;
11
12
12
13
const items = [
13
14
{
@@ -20,12 +21,18 @@ const items = [
20
21
{ text : "world" }
21
22
] ;
22
23
24
+ const handler = useEventHandler < QPushButtonSignals > (
25
+ {
26
+ clicked : clicked => { }
27
+ } ,
28
+ [ ]
29
+ ) ;
23
30
const App = ( ) => {
24
31
return (
25
32
< Window >
26
33
< View style = { containerStyle } >
27
34
< View on = { { } } >
28
- < Button on = { { } } style = { buttonStyle } text = { "Hello" } />
35
+ < Button on = { handler } style = { buttonStyle } text = { "Hello" } />
29
36
< Button style = { buttonStyle } text = { "World" } />
30
37
</ View >
31
38
< ComboBox items = { items } />
Original file line number Diff line number Diff line change 1
1
import { useMemo , DependencyList } from "react" ;
2
+ import { WidgetEventListeners } from "../components/View/RNView" ;
2
3
3
- type EventHandlerMap = {
4
- [ key : string ] : ( ...args : any [ ] ) => void ;
5
- } ;
6
-
7
- export const useEventHandler = (
8
- eventHandlerMap : EventHandlerMap ,
4
+ export function useEventHandler < Signals > (
5
+ eventHandlerMap : Partial < WidgetEventListeners | Signals > ,
9
6
deps : DependencyList
10
- ) => {
7
+ ) {
11
8
const handler = useMemo ( ( ) => {
12
9
return eventHandlerMap ;
13
10
} , deps ) ;
14
11
return handler ;
15
- } ;
12
+ }
You can’t perform that action at this time.
0 commit comments