|
@@ -8,12 +8,14 @@ from ...events import ValueChangeEventArguments, handle_event
|
|
|
class ValueElement(Element):
|
|
|
VALUE_PROP = 'model-value'
|
|
|
EVENT_ARGS = ['value']
|
|
|
+ LOOPBACK = True
|
|
|
value = BindableProperty(on_change=lambda sender, value: sender.on_value_change(value))
|
|
|
|
|
|
def __init__(self, *, value: Any, on_value_change: Optional[Callable], throttle: float = 0, **kwargs) -> None:
|
|
|
super().__init__(**kwargs)
|
|
|
self.set_value(value)
|
|
|
self._props[self.VALUE_PROP] = self._value_to_model_value(value)
|
|
|
+ self._props['loopback'] = self.LOOPBACK
|
|
|
self.change_handler = on_value_change
|
|
|
|
|
|
def handle_change(msg: Dict) -> None:
|
|
@@ -38,7 +40,8 @@ class ValueElement(Element):
|
|
|
|
|
|
def on_value_change(self, value: Any) -> None:
|
|
|
self._props[self.VALUE_PROP] = self._value_to_model_value(value)
|
|
|
- self.update()
|
|
|
+ if self.LOOPBACK:
|
|
|
+ self.update()
|
|
|
args = ValueChangeEventArguments(sender=self, client=self.client, value=self._value_to_event_value(value))
|
|
|
handle_event(self.change_handler, args)
|
|
|
|