from typing import Any, Callable, Optional from .mixins.disableable_element import DisableableElement from .mixins.value_element import ValueElement class Expansion(ValueElement, DisableableElement): def __init__(self, text: Optional[str] = None, *, icon: Optional[str] = None, value: bool = False, on_value_change: Optional[Callable[..., Any]] = None ) -> None: """Expansion Element Provides an expandable container. :param text: title text :param icon: optional icon (default: None) :param value: whether the expansion should be opened on creation (default: `False`) :param on_value_change: callback to execute when value changes """ super().__init__(tag='q-expansion-item', value=value, on_value_change=on_value_change) if text is not None: self._props['label'] = text self._props['icon'] = icon def open(self) -> None: self.value = True def close(self) -> None: self.value = False