Prechádzať zdrojové kódy

#560 make `enabled` bindable

Falko Schindler 2 rokov pred
rodič
commit
2ab9a56b6e

+ 19 - 6
nicegui/elements/mixins/disableable_element.py

@@ -1,17 +1,30 @@
+from ...binding import BindableProperty
 from ...element import Element
 
 
 class DisableableElement(Element):
+    enabled = BindableProperty(on_change=lambda sender, value: sender.on_enabled_change(value))
+
+    def __init__(self, **kwargs) -> None:
+        super().__init__(**kwargs)
+        self.enabled = True
 
     def enable(self) -> None:
         """Enable the element."""
-        self.props(remove='disable')
+        self.enabled = True
 
     def disable(self) -> None:
         """Disable the element."""
-        self.props(add='disable')
+        self.enabled = False
+
+    def set_enabled(self, value: bool) -> None:
+        """Set the enabled state of the element."""
+        self.enabled = value
+
+    def on_enabled_change(self, enabled: bool) -> None:
+        """Called when the element is enabled or disabled.
 
-    @property
-    def enabled(self) -> bool:
-        """Check if the element is enabled."""
-        return 'disable' not in self._props
+        :param enabled: The new state.
+        """
+        self._props['disable'] = not enabled
+        self.update()