From e2eced79b1cc5de95e30f29b9573d6fde2d801cf Mon Sep 17 00:00:00 2001 From: Yummy-Yums <77977520+Yummy-Yums@users.noreply.github.com> Date: Fri, 29 Mar 2024 00:18:08 +0000 Subject: [PATCH] Scroll to feature (#2948) * updated watchdog dep * added scroll_to feature * Fix pre-commit and pyi issues --------- Co-authored-by: Masen Furer --- reflex/__init__.py | 1 + reflex/__init__.pyi | 1 + reflex/event.py | 14 ++++++++++++++ 3 files changed, 16 insertions(+) diff --git a/reflex/__init__.py b/reflex/__init__.py index e60fb0aef..a461ed9a4 100644 --- a/reflex/__init__.py +++ b/reflex/__init__.py @@ -142,6 +142,7 @@ _MAPPING = { "remove_local_storage", "set_clipboard", "set_focus", + "scroll_to", "set_value", "stop_propagation", "upload_files", diff --git a/reflex/__init__.pyi b/reflex/__init__.pyi index cd01f13db..c6651a41d 100644 --- a/reflex/__init__.pyi +++ b/reflex/__init__.pyi @@ -124,6 +124,7 @@ from reflex.event import remove_cookie as remove_cookie from reflex.event import remove_local_storage as remove_local_storage from reflex.event import set_clipboard as set_clipboard from reflex.event import set_focus as set_focus +from reflex.event import scroll_to as scroll_to from reflex.event import set_value as set_value from reflex.event import stop_propagation as stop_propagation from reflex.event import upload_files as upload_files diff --git a/reflex/event.py b/reflex/event.py index f302910ed..b8611b90e 100644 --- a/reflex/event.py +++ b/reflex/event.py @@ -443,6 +443,20 @@ def set_focus(ref: str) -> EventSpec: ) +def scroll_to(elem_id: str) -> EventSpec: + """Select the id of a html element for scrolling into view. + + Args: + elem_id: the id of the element + + Returns: + An EventSpec to scroll the page to the selected element. + """ + js_code = f"document.getElementById('{elem_id}').scrollIntoView();" + + return call_script(js_code) + + def set_value(ref: str, value: Any) -> EventSpec: """Set the value of a ref.