Explorar el Código

start to implement ui.stepper

Falko Schindler hace 1 año
padre
commit
01d99e946b
Se han modificado 2 ficheros con 34 adiciones y 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',
     'spinner',
     'splitter',
+    'step',
+    'stepper',
     'switch',
     'table',
     'tab',
@@ -136,6 +138,8 @@ from .elements.separator import Separator as separator
 from .elements.slider import Slider as slider
 from .elements.spinner import Spinner as spinner
 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.table import Table as table
 from .elements.tabs import Tab as tab