part.py 810 B

123456789101112131415161718192021222324252627282930
  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. @property
  20. def link_target(self) -> Optional[str]:
  21. """Return the link target for in-page navigation."""
  22. return create_anchor_name(self.title) if self.title else None