list.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from typing import Any, Callable, Optional
  2. from ..element import Element
  3. from ..events import ClickEventArguments, handle_event
  4. from .mixins.disableable_element import DisableableElement
  5. from .mixins.text_element import TextElement
  6. class List(Element):
  7. def __init__(self) -> None:
  8. """List
  9. A list element based on Quasar's `QList <https://quasar.dev/vue-components/list-and-list-items#qlist-api>`_ component.
  10. It provides a container for list items.
  11. """
  12. super().__init__('q-list')
  13. class ListItem(DisableableElement):
  14. def __init__(self, on_click: Optional[Callable[..., Any]] = None) -> None:
  15. """List Item
  16. Creates a list item based on Quasar's `QItem <https://quasar.dev/vue-components/list-and-list-items#qitem-api>`_ component.
  17. The item should be placed inside a list element.
  18. """
  19. super().__init__(tag='q-item')
  20. if on_click:
  21. self._props['clickable'] = True
  22. self.on('click', lambda e: handle_event(on_click, ClickEventArguments(sender=self, client=self.client)))
  23. class ListItemSection(Element):
  24. def __init__(self) -> None:
  25. """
  26. List Item Section
  27. Creates an item section based on Quasar's `QItemList <https://quasar.dev/vue-components/list-and-list-items#qitemsection-api>`_ component.
  28. The section should be placed inside a list item element.
  29. """
  30. super().__init__('q-item-section')
  31. class ListItemLabel(TextElement):
  32. def __init__(self, text: str = '') -> None:
  33. """
  34. List Item Label
  35. Creates an item label based on Quasar's `QItemLabel <https://quasar.dev/vue-components/list-and-list-items#qitemlabel-api>`_ component.
  36. :param text: text to be displayed (default: '')
  37. """
  38. super().__init__(tag='q-item-label', text=text)