web_tools/optimistic/
html_element.rs

1use web_sys::wasm_bindgen::JsCast;
2
3/// Support working with [`web_sys::HtmlElement`]
4pub trait OptimisticHtmlElement {
5    /// Call [`web_sys::HtmlElement::focus`] if this is an [`web_sys::HtmlElement`].
6    fn focus(&self);
7}
8
9#[cfg(feature = "yew")]
10impl OptimisticHtmlElement for yew::prelude::NodeRef {
11    fn focus(&self) {
12        if let Some(element) = self.cast::<web_sys::HtmlElement>() {
13            let _ = element.focus();
14        }
15    }
16}
17
18impl OptimisticHtmlElement for web_sys::Node {
19    fn focus(&self) {
20        if let Some(element) = self.dyn_ref::<web_sys::HtmlElement>() {
21            let _ = element.focus();
22        }
23    }
24}