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):
107107 _template = Template (
108108 """
109109 {% macro script(this, kwargs) %}
110- {{ this._parent.get_name()}}.on (
110+ {{ this._parent.get_name()}}.{{ this.method }} (
111111 {{ this.event|tojson}},
112112 {{ this.handler.js_code }}
113113 );
114114 {% endmacro %}
115115 """
116116 )
117117
118- def __init__ (self , event : str , handler : JsCode ):
118+ def __init__ (self , event : str , handler : JsCode , once = False ):
119119 super ().__init__ ()
120120 self ._name = "EventHandler"
121121 self .event = event
122122 self .handler = handler
123+ self .method = "once" if once else "on"
123124
124125
125126class ElementAddToElement (MacroElement ):
Original file line number Diff line number Diff line change 2525class Evented (MacroElement ):
2626 """The base class for Layer and Map
2727
28- Adds the `on` method for event handling capabilities.
28+ Adds the `on` and `once` methods for event handling capabilities.
2929
3030 See https://leafletjs.com/reference.html#evented for
3131 more in depth documentation. Please note that we have
@@ -34,8 +34,14 @@ class Evented(MacroElement):
3434 """
3535
3636 def on (self , ** event_map : JsCode ):
37+ self ._add (False , ** event_map )
38+
39+ def once (self , ** event_map : JsCode ):
40+ self ._add (True , ** event_map )
41+
42+ def _add (self , once , ** event_map : JsCode ):
3743 for event_type , handler in event_map .items ():
38- self .add_child (EventHandler (event_type , handler ))
44+ self .add_child (EventHandler (event_type , handler , once ))
3945
4046
4147class Layer (Evented ):
You can’t perform that action at this time.
0 commit comments