Explorar o código

start to implement ui.stepper

Falko Schindler hai 1 ano
pai
achega
01d99e946b
Modificáronse 2 ficheiros con 34 adicións e 0 borrados
  1. 30 0
      nicegui/elements/stepper.py
  2. 4 0
      nicegui/ui.py

+ 30 - 0
nicegui/elements/stepper.py

@@ -0,0 +1,30 @@
+from __future__ import annotations
+
+from typing import Any, Callable, Optional, Union
+
+from .. import globals
+from .mixins.disableable_element import DisableableElement
+from .mixins.value_element import ValueElement
+
+
+class Stepper(ValueElement):
+
+    def __init__(self, *,
+                 value: Union[str, Step, None] = None,
+                 on_value_change: Optional[Callable[..., Any]] = None,
+                 ) -> None:
+        super().__init__(tag='q-stepper', value=value, on_value_change=on_value_change)
+
+    def _value_to_model_value(self, value: Any) -> Any:
+        return value._props['name'] if isinstance(value, Step) else value
+
+
+class Step(DisableableElement):
+
+    def __init__(self, name: str, title: Optional[str] = None, icon: Optional[str] = None) -> None:
+        super().__init__(tag='q-step')
+        self._props['name'] = name
+        self._props['title'] = title if title is not None else name
+        if icon:
+            self._props['icon'] = icon
+        self.stepper = globals.get_slot().parent

+ 4 - 0
nicegui/ui.py

@@ -52,6 +52,8 @@ __all__ = [
     'slider',
     'slider',
     'spinner',
     'spinner',
     'splitter',
     'splitter',
+    'step',
+    'stepper',
     'switch',
     'switch',
     'table',
     'table',
     'tab',
     'tab',
@@ -136,6 +138,8 @@ from .elements.separator import Separator as separator
 from .elements.slider import Slider as slider
 from .elements.slider import Slider as slider
 from .elements.spinner import Spinner as spinner
 from .elements.spinner import Spinner as spinner
 from .elements.splitter import Splitter as splitter
 from .elements.splitter import Splitter as splitter
+from .elements.stepper import Step as step
+from .elements.stepper import Stepper as stepper
 from .elements.switch import Switch as switch
 from .elements.switch import Switch as switch
 from .elements.table import Table as table
 from .elements.table import Table as table
 from .elements.tabs import Tab as tab
 from .elements.tabs import Tab as tab