rate_ui/
utils.rs

1use web_sys::HtmlElement;
2use yew::NodeRef;
3
4/*
5use anyhow::Error;
6use thiserror::Error;
7use wasm_bindgen::JsValue;
8
9#[derive(Debug, Error)]
10enum Reason {
11    #[error("can't cast the node to HtmlElement")]
12    NotHtmlElement,
13}
14
15pub fn js_err(value: JsValue) -> Error {
16    Error::msg(value.as_string().unwrap_or_else(|| "js error".into()))
17}
18*/
19
20/// Updates node directly by `NodeRef`
21pub fn set_node(node_ref: &mut NodeRef, value: impl ToString) {
22    let value = value.to_string();
23    if let Some(node) = node_ref.cast::<HtmlElement>() {
24        node.set_inner_text(&value);
25    } else {
26        log::error!(
27            "Can't cast node {:?} to HtmlElement set it to {}",
28            node_ref,
29            value
30        );
31    }
32}
33
34pub fn set_style(node_ref: &mut NodeRef, key: &str, value: &str) {
35    if let Some(node) = node_ref.cast::<HtmlElement>() {
36        if let Err(_err) = node.style().set_property(key, value) {
37            log::error!("Can't set property of {:?} to {}={}", node_ref, key, value);
38        }
39    } else {
40        log::error!(
41            "Can't cast node {:?} to HtmlElement to update style {}={}",
42            node_ref,
43            key,
44            value
45        );
46    }
47}
48
49/*
50pub fn remove_class(node_ref: &mut NodeRef, class: &str) {
51    use js_sys::Array;
52    use wasm_bindgen::JsValue;
53
54    if let Some(node) = node_ref.cast::<HtmlElement>() {
55        let array = Array::new();
56        array.push(&JsValue::from_str(class));
57        node.class_list().remove(&array);
58    }
59}
60*/