Module: Ruwi::Dom::Events
- Defined in:
- lib/ruwi/runtime/dom/events.rb
Class Method Summary collapse
- .add_event_listener(event_name, handler, element, host_component = nil) ⇒ Proc
- .add_event_listeners(element, listeners = {}, host_component = nil) ⇒ Object
- .remove_event_listeners(listeners = {}, element) ⇒ Object
Class Method Details
.add_event_listener(event_name, handler, element, host_component = nil) ⇒ Proc
11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/ruwi/runtime/dom/events.rb', line 11 def add_event_listener(event_name, handler, element, host_component = nil) if host_component # Same as JavaScript's handler.apply(hostComponent, arguments) call_handler = JS.try_convert(->(event) { handler.arity == 0 ? host_component.instance_exec(&handler) : host_component.instance_exec(event, &handler) }) else call_handler = JS.try_convert(->(event) { handler.arity == 0 ? handler.call : handler.call(event) }) end element.call(:addEventListener, event_name.to_s, call_handler) call_handler end |
.add_event_listeners(element, listeners = {}, host_component = nil) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/ruwi/runtime/dom/events.rb', line 24 def add_event_listeners(element, listeners = {}, host_component = nil) listeners.each do |event_name, handler| add_event_listener(event_name, handler, element, host_component) end listeners end |
.remove_event_listeners(listeners = {}, element) ⇒ Object
33 34 35 36 37 |
# File 'lib/ruwi/runtime/dom/events.rb', line 33 def remove_event_listeners(listeners = {}, element) listeners.each do |event_name, handler| element.call(:removeEventListener, event_name.to_s, handler) end end |