expansion.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. from typing import Any, Callable, Optional
  2. from .mixins.disableable_element import DisableableElement
  3. from .mixins.value_element import ValueElement
  4. class Expansion(ValueElement, DisableableElement):
  5. def __init__(self,
  6. text: Optional[str] = None, *,
  7. icon: Optional[str] = None,
  8. value: bool = False,
  9. on_value_change: Optional[Callable[..., Any]] = None
  10. ) -> None:
  11. """Expansion Element
  12. Provides an expandable container.
  13. :param text: title text
  14. :param icon: optional icon (default: None)
  15. :param value: whether the expansion should be opened on creation (default: `False`)
  16. :param on_value_change: callback to execute when value changes
  17. """
  18. super().__init__(tag='q-expansion-item', value=value, on_value_change=on_value_change)
  19. if text is not None:
  20. self._props['label'] = text
  21. self._props['icon'] = icon
  22. def open(self) -> None:
  23. self.value = True
  24. def close(self) -> None:
  25. self.value = False