|
@@ -1,5 +1,5 @@
|
|
|
import asyncio
|
|
|
-from typing import Any
|
|
|
+from typing import Any, Optional
|
|
|
|
|
|
from .mixins.value_element import ValueElement
|
|
|
|
|
@@ -17,7 +17,13 @@ class Dialog(ValueElement):
|
|
|
"""
|
|
|
super().__init__(tag='q-dialog', value=value, on_value_change=None)
|
|
|
self._result: Any = None
|
|
|
- self._submitted = asyncio.Event()
|
|
|
+ self._submitted: Optional[asyncio.Event] = None
|
|
|
+
|
|
|
+ @property
|
|
|
+ def submitted(self) -> asyncio.Event:
|
|
|
+ if self._submitted is None:
|
|
|
+ self._submitted = asyncio.Event()
|
|
|
+ return self._submitted
|
|
|
|
|
|
def open(self) -> None:
|
|
|
self.value = True
|
|
@@ -27,19 +33,19 @@ class Dialog(ValueElement):
|
|
|
|
|
|
def __await__(self):
|
|
|
self._result = None
|
|
|
- self._submitted.clear()
|
|
|
+ self.submitted.clear()
|
|
|
self.open()
|
|
|
- yield from self._submitted.wait().__await__()
|
|
|
+ yield from self.submitted.wait().__await__()
|
|
|
result = self._result
|
|
|
self.close()
|
|
|
return result
|
|
|
|
|
|
def submit(self, result: Any) -> None:
|
|
|
self._result = result
|
|
|
- self._submitted.set()
|
|
|
+ self.submitted.set()
|
|
|
|
|
|
def on_value_change(self, value: Any) -> None:
|
|
|
super().on_value_change(value)
|
|
|
if not self.value:
|
|
|
self._result = None
|
|
|
- self._submitted.set()
|
|
|
+ self.submitted.set()
|