From 6f07092bfda3371241b391e817bd5f549b403b2d Mon Sep 17 00:00:00 2001 From: Falko Schindler Date: Fri, 15 Dec 2023 12:50:18 +0100 Subject: [PATCH] introduce `ui.page_title` --- nicegui/client.py | 4 +++- nicegui/functions/page_title.py | 12 ++++++++++++ nicegui/ui.py | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 nicegui/functions/page_title.py diff --git a/nicegui/client.py b/nicegui/client.py index 6e85ec487..67e0b41c8 100644 --- a/nicegui/client.py +++ b/nicegui/client.py @@ -63,6 +63,8 @@ def __init__(self, page: page, *, shared: bool = False) -> None: self.waiting_javascript_commands: Dict[str, Any] = {} + self.title: Optional[str] = None + self._head_html = '' self._body_html = '' @@ -127,7 +129,7 @@ def build_response(self, request: Request, status_code: int = 200) -> Response: 'imports': json.dumps(imports), 'js_imports': '\n'.join(js_imports), 'quasar_config': json.dumps(core.app.config.quasar_config), - 'title': self.page.resolve_title(), + 'title': self.page.resolve_title() if self.title is None else self.title, 'viewport': self.page.resolve_viewport(), 'favicon_url': get_favicon_url(self.page, prefix), 'dark': str(self.page.resolve_dark()), diff --git a/nicegui/functions/page_title.py b/nicegui/functions/page_title.py new file mode 100644 index 000000000..ed4962840 --- /dev/null +++ b/nicegui/functions/page_title.py @@ -0,0 +1,12 @@ +from .. import context, json + + +def page_title(title: str) -> None: + """Set the page title for the current client. + + :param title: page title + """ + client = context.get_client() + client.title = title + if client.has_socket_connection: + client.run_javascript(f'document.title = {json.dumps(title)}') diff --git a/nicegui/ui.py b/nicegui/ui.py index 4fb1e1808..db2c95d31 100644 --- a/nicegui/ui.py +++ b/nicegui/ui.py @@ -87,6 +87,7 @@ 'run_javascript', 'notify', 'open', + 'page_title', 'refreshable', 'state', 'update', @@ -188,6 +189,7 @@ from .functions.javascript import run_javascript from .functions.notify import notify from .functions.open import open # pylint: disable=redefined-builtin +from .functions.page_title import page_title from .functions.refreshable import refreshable, state from .functions.update import update from .page import page