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

59 lines
2.2 KiB
Python

from typing import Optional
from ..events import Handler, ValueChangeEventArguments
from .mixins.value_element import ValueElement
class Fullscreen(ValueElement, component='fullscreen.js'):
LOOPBACK = None
def __init__(self, *,
require_escape_hold: bool = False,
on_value_change: Optional[Handler[ValueChangeEventArguments]] = None) -> None:
"""Fullscreen control element
This element is based on Quasar's `AppFullscreen <https://quasar.dev/quasar-plugins/app-fullscreen>`_ plugin
and provides a way to enter, exit and toggle the fullscreen mode.
Important notes:
* Due to security reasons, the fullscreen mode can only be entered from a previous user interaction such as a button click.
* The long-press escape requirement only works in some browsers like Google Chrome or Microsoft Edge.
*Added in version 2.11.0*
:param require_escape_hold: whether the user needs to long-press the escape key to exit fullscreen mode
:param on_value_change: callback which is invoked when the fullscreen state changes
"""
super().__init__(value=False, on_value_change=on_value_change)
self._props['requireEscapeHold'] = require_escape_hold
@property
def require_escape_hold(self) -> bool:
"""Whether the user needs to long-press of the escape key to exit fullscreen mode.
This feature is only supported in some browsers like Google Chrome or Microsoft Edge.
In unsupported browsers, this setting has no effect.
"""
return self._props['requireEscapeHold']
@require_escape_hold.setter
def require_escape_hold(self, value: bool) -> None:
self._props['requireEscapeHold'] = value
def enter(self) -> None:
"""Enter fullscreen mode."""
self.value = True
def exit(self) -> None:
"""Exit fullscreen mode."""
self.value = False
def toggle(self) -> None:
"""Toggle fullscreen mode."""
self.value = not self.value
def _handle_value_change(self, value: bool) -> None:
super()._handle_value_change(value)
self.run_method('enter' if value else 'exit')