|
@@ -10,7 +10,7 @@ from typing import TYPE_CHECKING, Any, Callable, Dict, Iterator, List, Optional,
|
|
from typing_extensions import Self
|
|
from typing_extensions import Self
|
|
|
|
|
|
from . import context, core, events, json, outbox, storage
|
|
from . import context, core, events, json, outbox, storage
|
|
-from .awaitable_response import AwaitableResponse
|
|
|
|
|
|
+from .awaitable_response import AwaitableResponse, NullResponse
|
|
from .dependencies import Component, Library, register_library, register_vue_component
|
|
from .dependencies import Component, Library, register_library, register_vue_component
|
|
from .elements.mixins.visibility import Visibility
|
|
from .elements.mixins.visibility import Visibility
|
|
from .event_listener import EventListener
|
|
from .event_listener import EventListener
|
|
@@ -406,11 +406,14 @@ class Element(Visibility):
|
|
def run_method(self, name: str, *args: Any) -> AwaitableResponse:
|
|
def run_method(self, name: str, *args: Any) -> AwaitableResponse:
|
|
"""Run a method on the client side.
|
|
"""Run a method on the client side.
|
|
|
|
|
|
|
|
+ If the function is awaited, the result of the method call is returned.
|
|
|
|
+ Otherwise, the method is executed without waiting for a response.
|
|
|
|
+
|
|
:param name: name of the method
|
|
:param name: name of the method
|
|
:param args: arguments to pass to the method
|
|
:param args: arguments to pass to the method
|
|
"""
|
|
"""
|
|
if not core.loop:
|
|
if not core.loop:
|
|
- return AwaitableResponse(None, None)
|
|
|
|
|
|
+ return NullResponse()
|
|
return self.client.run_javascript(f'return runMethod({self.id}, "{name}", {json.dumps(args)})')
|
|
return self.client.run_javascript(f'return runMethod({self.id}, "{name}", {json.dumps(args)})')
|
|
|
|
|
|
def _collect_descendants(self, *, include_self: bool = False) -> List[Element]:
|
|
def _collect_descendants(self, *, include_self: bool = False) -> List[Element]:
|