1- from __future__ import annotations
1+ from typing import Any
22
3- from typing import Any , cast
4-
5- from ..context import context
63from ..defaults import DEFAULT_PROP , DEFAULT_PROPS , resolve_defaults
7- from ..element import Element
84from ..events import Handler , ValueChangeEventArguments
9- from .mixins .disableable_element import DisableableElement
10- from .mixins .icon_element import IconElement
115from .mixins .value_element import ValueElement
6+ from .step import Step
127
138
14- class Stepper (ValueElement [str | None ], default_classes = 'nicegui-stepper' ):
9+ class Stepper (ValueElement [str | Step | None ], default_classes = 'nicegui-stepper' ):
1510
1611 @resolve_defaults
1712 def __init__ (self , * ,
1813 value : str | Step | None = DEFAULT_PROPS ['model-value' ] | None ,
19- on_value_change : Handler [ValueChangeEventArguments [str | None ]] | None = None ,
14+ on_value_change : Handler [ValueChangeEventArguments [str | Step | None ]] | None = None ,
2015 keep_alive : bool = DEFAULT_PROP | True ,
2116 ) -> None :
2217 """Stepper
@@ -32,17 +27,9 @@ def __init__(self, *,
3227 :param on_value_change: callback to be executed when the selected step changes
3328 :param keep_alive: whether to use Vue's keep-alive component on the content (default: `True`)
3429 """
35- _value = cast ('str | None' , value .props ['name' ] if isinstance (value , Step ) else value )
36- super ().__init__ (tag = 'q-stepper' , value = _value , on_value_change = on_value_change )
30+ super ().__init__ (tag = 'q-stepper' , value = value , on_value_change = on_value_change )
3731 self ._props .set_bool ('keep-alive' , keep_alive )
3832
39- def set_value (self , value : str | Step | None ) -> None :
40- """Set the value of this element.
41-
42- :param value: step name or `Step` element
43- """
44- super ().set_value (cast ('str | None' , value .props ['name' ] if isinstance (value , Step ) else value ))
45-
4633 def _value_to_model_value (self , value : Any ) -> Any :
4734 return value .props ['name' ] if isinstance (value , Step ) else value
4835
@@ -60,39 +47,3 @@ def next(self) -> None:
6047 def previous (self ) -> None :
6148 """Show the previous step."""
6249 self .run_method ('previous' )
63-
64-
65- class Step (IconElement , DisableableElement , default_classes = 'nicegui-step' ):
66-
67- @resolve_defaults
68- def __init__ (self , name : str , title : str | None = None , icon : str | None = DEFAULT_PROP | None ) -> None :
69- """Step
70-
71- This element represents `Quasar's QStep <https://quasar.dev/vue-components/stepper#qstep-api>`_ component.
72- It is a child of a `ui.stepper` element.
73-
74- :param name: name of the step (will be the value of the `ui.stepper` element)
75- :param title: title of the step (default: `None`, meaning the same as `name`)
76- :param icon: icon of the step (default: `None`)
77- """
78- super ().__init__ (tag = 'q-step' , icon = icon )
79- self ._props ['name' ] = name
80- self ._props ['title' ] = title if title is not None else name
81- self .stepper = cast (ValueElement , context .slot .parent )
82- if self .stepper .value is None :
83- self .stepper .value = name
84-
85-
86- class StepperNavigation (Element ):
87-
88- def __init__ (self , * , wrap : bool = True ) -> None :
89- """Stepper Navigation
90-
91- This element represents `Quasar's QStepperNavigation https://quasar.dev/vue-components/stepper#qsteppernavigation-api>`_ component.
92-
93- :param wrap: whether to wrap the content (default: `True`)
94- """
95- super ().__init__ ('q-stepper-navigation' )
96-
97- if wrap :
98- self ._classes .append ('wrap' )
0 commit comments