HomeDashboard/.venv/lib/python3.12/site-packages/nicegui/elements/link.py
2026-01-03 14:54:18 +01:00

47 lines
1.5 KiB
Python

from typing import Any, Callable, Union
from ..client import Client
from ..element import Element
from .mixins.text_element import TextElement
class Link(TextElement, component='link.js', default_classes='nicegui-link'):
def __init__(self,
text: str = '',
target: Union[Callable[..., Any], str, Element] = '#',
new_tab: bool = False,
) -> None:
"""Link
Create a hyperlink.
To jump to a specific location within a page you can place linkable anchors with `ui.link_target("name")`
and link to it with `ui.link(target="#name")`.
:param text: display text
:param target: page function, NiceGUI element on the same page or string that is a an absolute URL or relative path from base URL
:param new_tab: open link in new tab (default: False)
"""
super().__init__(text=text)
if isinstance(target, str):
self._props['href'] = target
elif isinstance(target, Element):
self._props['href'] = f'#{target.html_id}'
elif callable(target):
self._props['href'] = Client.page_routes[target]
self._props['target'] = '_blank' if new_tab else '_self'
class LinkTarget(Element):
def __init__(self, name: str) -> None:
"""Link target
Create an anchor tag that can be used as inner-page target for links.
:param name: target name
"""
super().__init__('a')
self._props['name'] = name