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*/