expansion.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from typing import Any, Callable, Optional
  2. from .mixins.disableable_element import DisableableElement
  3. from .mixins.text_element import TextElement
  4. from .mixins.value_element import ValueElement
  5. class Expansion(TextElement, ValueElement, DisableableElement):
  6. def __init__(self,
  7. text: str = '', *,
  8. icon: Optional[str] = None,
  9. value: bool = False,
  10. on_value_change: Optional[Callable[..., Any]] = None
  11. ) -> None:
  12. """Expansion Element
  13. Provides an expandable container based on Quasar's `QExpansionItem <https://quasar.dev/vue-components/expansion-item>`_ component.
  14. :param text: title text
  15. :param icon: optional icon (default: None)
  16. :param value: whether the expansion should be opened on creation (default: `False`)
  17. :param on_value_change: callback to execute when value changes
  18. """
  19. super().__init__(tag='q-expansion-item', text=text, value=value, on_value_change=on_value_change)
  20. self._props['icon'] = icon
  21. self._classes.append('nicegui-expansion')
  22. def open(self) -> None:
  23. """Open the expansion."""
  24. self.value = True
  25. def close(self) -> None:
  26. """Close the expansion."""
  27. self.value = False
  28. def _text_to_model_text(self, text: str) -> None:
  29. self._props['label'] = text