Support scrollIntoView alignment options (#3952)

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
This commit is contained in:
Otger RoglaandJonathan Kelley authored and GitHub committed 2025-05-07 13:09:17 -07:00
1 parent 85b373deff
commit 28d38307a2
7 files changed
+79 -19

No files matched your search

+17 -9
View File
@@ -66,17 +66,25 @@ impl dioxus_html::RenderedElementBacking for Synthetic<web_sys::Element> {
fn scroll_to(
&self,
behavior: dioxus_html::ScrollBehavior,
input_options: dioxus_html::ScrollToOptions,
) -> std::pin::Pin<Box<dyn std::future::Future<Output = dioxus_html::MountedResult<()>>>> {
let options = web_sys::ScrollIntoViewOptions::new();
match behavior {
dioxus_html::ScrollBehavior::Instant => {
options.set_behavior(web_sys::ScrollBehavior::Instant);
}
dioxus_html::ScrollBehavior::Smooth => {
options.set_behavior(web_sys::ScrollBehavior::Smooth);
}
}
options.set_behavior(match input_options.behavior {
dioxus_html::ScrollBehavior::Instant => web_sys::ScrollBehavior::Instant,
dioxus_html::ScrollBehavior::Smooth => web_sys::ScrollBehavior::Smooth,
});
options.set_block(match input_options.vertical {
dioxus_html::ScrollLogicalPosition::Start => web_sys::ScrollLogicalPosition::Start,
dioxus_html::ScrollLogicalPosition::Center => web_sys::ScrollLogicalPosition::Center,
dioxus_html::ScrollLogicalPosition::End => web_sys::ScrollLogicalPosition::End,
dioxus_html::ScrollLogicalPosition::Nearest => web_sys::ScrollLogicalPosition::Nearest,
});
options.set_inline(match input_options.horizontal {
dioxus_html::ScrollLogicalPosition::Start => web_sys::ScrollLogicalPosition::Start,
dioxus_html::ScrollLogicalPosition::Center => web_sys::ScrollLogicalPosition::Center,
dioxus_html::ScrollLogicalPosition::End => web_sys::ScrollLogicalPosition::End,
dioxus_html::ScrollLogicalPosition::Nearest => web_sys::ScrollLogicalPosition::Nearest,
});
self.event
.scroll_into_view_with_scroll_into_view_options(&options);