part.py 848 B

12345678910111213141516171819202122232425262728293031
  1. from dataclasses import dataclass
  2. from typing import Callable, Literal, Optional, Union
  3. from nicegui.dataclasses import KWONLY_SLOTS
  4. from ....style import create_anchor_name
  5. @dataclass(**KWONLY_SLOTS)
  6. class Demo:
  7. function: Callable
  8. lazy: bool = True
  9. tab: Optional[Union[str, Callable]] = None
  10. @dataclass(**KWONLY_SLOTS)
  11. class DocumentationPart:
  12. title: Optional[str] = None
  13. description: Optional[str] = None
  14. description_format: Literal['md', 'rst'] = 'md'
  15. link: Optional[str] = None
  16. ui: Optional[Callable] = None
  17. demo: Optional[Demo] = None
  18. reference: Optional[type] = None
  19. search_text: Optional[str] = None
  20. @property
  21. def link_target(self) -> Optional[str]:
  22. """Return the link target for in-page navigation."""
  23. return create_anchor_name(self.title) if self.title else None