from ..element import Element from .page_sticky import PageStickyPositions class PageScroller(Element): def __init__(self, position: PageStickyPositions = 'bottom-right', x_offset: float = 0, y_offset: float = 0, *, expand: bool = False, scroll_offset: float = 1000, duration: float = 0.3, reverse: bool = False, ) -> None: """Page scroller This element is based on Quasar's `QPageScroller `_ component. It is very similar to ``ui.page_sticky``, sharing ``position``, ``x_offset``, ``y_offset``, and ``expand`` parameters. However, ``ui.page_sticky`` is always visible, and ``ui.page_scroller`` only appears after the ``scroll-offset`` is reached. Once visible, the user can click on it to quickly get back to the top of the page in ``duration`` seconds. *Added in version 3.3.0* :param position: position on the screen (default: "bottom-right") :param x_offset: horizontal offset (default: 0) :param y_offset: vertical offset (default: 0) :param expand: whether to fully expand instead of shrinking to fit the content (default: ``False``) :param scroll_offset: the vertical offset in pixels at which the scroller becomes visible (default: 1000) :param duration: the duration in seconds for the scroll animation (default: 0.3) :param reverse: if True, the scroller will work in reverse, showing when at the top of the page, and scrolls to bottom when triggered (default: ``False``) """ super().__init__('q-page-scroller') self._props['position'] = position self._props['offset'] = [x_offset, y_offset] self._props['scroll-offset'] = scroll_offset self._props['duration'] = duration * 1000 if expand: self._props['expand'] = True if reverse: self._props['reverse'] = True