File tree Expand file tree Collapse file tree 2 files changed +11
-4
lines changed Expand file tree Collapse file tree 2 files changed +11
-4
lines changed Original file line number Diff line number Diff line change @@ -107,19 +107,20 @@ class EventHandler(MacroElement):
107
107
_template = Template (
108
108
"""
109
109
{% macro script(this, kwargs) %}
110
- {{ this._parent.get_name()}}.on (
110
+ {{ this._parent.get_name()}}.{{ this.method }} (
111
111
{{ this.event|tojson}},
112
112
{{ this.handler.js_code }}
113
113
);
114
114
{% endmacro %}
115
115
"""
116
116
)
117
117
118
- def __init__ (self , event : str , handler : JsCode ):
118
+ def __init__ (self , event : str , handler : JsCode , once : bool = False ):
119
119
super ().__init__ ()
120
120
self ._name = "EventHandler"
121
121
self .event = event
122
122
self .handler = handler
123
+ self .method = "once" if once else "on"
123
124
124
125
125
126
class ElementAddToElement (MacroElement ):
Original file line number Diff line number Diff line change 24
24
class Evented (MacroElement ):
25
25
"""The base class for Layer and Map
26
26
27
- Adds the `on` method for event handling capabilities.
27
+ Adds the `on` and `once` methods for event handling capabilities.
28
28
29
29
See https://leafletjs.com/reference.html#evented for
30
30
more in depth documentation. Please note that we have
@@ -33,8 +33,14 @@ class Evented(MacroElement):
33
33
"""
34
34
35
35
def on (self , ** event_map : JsCode ):
36
+ self ._add (once = False , ** event_map )
37
+
38
+ def once (self , ** event_map : JsCode ):
39
+ self ._add (once = True , ** event_map )
40
+
41
+ def _add (self , once : bool , ** event_map : JsCode ):
36
42
for event_type , handler in event_map .items ():
37
- self .add_child (EventHandler (event_type , handler ))
43
+ self .add_child (EventHandler (event_type , handler , once ))
38
44
39
45
40
46
class Layer (Evented ):
You can’t perform that action at this time.
0 commit comments