Skip to content

Commit fcf138f

Browse files
committed
Added support for more mouse event types.
1 parent 7a263b0 commit fcf138f

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

Sources/ElementaryDOM/Interop/EventHandlers.swift

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,70 @@ public struct MouseEvent: DOMEvent {
3434
// TODO: maybe check some stuff..
3535
self.rawEvent = rawEvent
3636
}
37+
38+
public var altKey: Bool {
39+
rawEvent.altKey.boolean!
40+
}
41+
42+
public var button: Int {
43+
Int(rawEvent.button.number!)
44+
}
45+
46+
public var buttons: Int {
47+
Int(rawEvent.buttons.number!)
48+
}
49+
50+
public var clientX: Double {
51+
rawEvent.clientX.number!
52+
}
53+
54+
public var clientY: Double {
55+
rawEvent.clientY.number!
56+
}
57+
58+
public var ctrlKey: Bool {
59+
rawEvent.ctrlKey.boolean!
60+
}
61+
62+
public var metaKey: Bool {
63+
rawEvent.metaKey.boolean!
64+
}
65+
66+
public var movementX: Double {
67+
rawEvent.movementX.number!
68+
}
69+
70+
public var movementY: Double {
71+
rawEvent.movementY.number!
72+
}
73+
74+
public var offsetX: Double {
75+
rawEvent.offsetX.number!
76+
}
77+
78+
public var offsetY: Double {
79+
rawEvent.offsetY.number!
80+
}
81+
82+
public var pageX: Double {
83+
rawEvent.pageX.number!
84+
}
85+
86+
public var pageY: Double {
87+
rawEvent.pageY.number!
88+
}
89+
90+
public var screenX: Double {
91+
rawEvent.screenX.number!
92+
}
93+
94+
public var screenY: Double {
95+
rawEvent.screenY.number!
96+
}
97+
98+
public var shiftKey: Bool {
99+
rawEvent.shiftKey.boolean!
100+
}
37101
}
38102

39103
public struct InputEvent: DOMEvent {

Sources/ElementaryDOM/Interop/View+DOMEvents.swift

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@ public extension View {
1616
onClick { _ in handler() }
1717
}
1818

19+
consuming func onMouseDown(_ handler: @escaping (MouseEvent) -> Void) -> some View {
20+
onEvent(DOMEventHandlers.MouseDown.self, handler: handler)
21+
}
22+
23+
consuming func onMouseMove(_ handler: @escaping (MouseEvent) -> Void) -> some View {
24+
onEvent(DOMEventHandlers.MouseMove.self, handler: handler)
25+
}
26+
27+
consuming func onMouseUp(_ handler: @escaping (MouseEvent) -> Void) -> some View {
28+
onEvent(DOMEventHandlers.MouseUp.self, handler: handler)
29+
}
30+
1931
consuming func onKeyDown(_ handler: @escaping (KeyboardEvent) -> Void) -> some View {
2032
onEvent(DOMEventHandlers.KeyDown.self, handler: handler)
2133
}
@@ -31,6 +43,21 @@ enum DOMEventHandlers {
3143
typealias Event = MouseEvent
3244
}
3345

46+
enum MouseDown: DOMEventHandlerConfig {
47+
static var name: String = "mousedown"
48+
typealias Event = MouseEvent
49+
}
50+
51+
enum MouseMove: DOMEventHandlerConfig {
52+
static var name: String = "mousemove"
53+
typealias Event = MouseEvent
54+
}
55+
56+
enum MouseUp: DOMEventHandlerConfig {
57+
static var name: String = "mouseup"
58+
typealias Event = MouseEvent
59+
}
60+
3461
enum KeyDown: DOMEventHandlerConfig {
3562
static var name: String = "keydown"
3663
typealias Event = KeyboardEvent

0 commit comments

Comments
 (0)