leptos-use/examples/use_resize_observer/src/main.rs

38 lines
977 B
Rust
Raw Normal View History

2023-07-03 16:10:58 +01:00
use leptos::html::Textarea;
2023-05-31 05:56:32 +01:00
use leptos::*;
2023-06-02 13:38:01 +01:00
use leptos_use::docs::{demo_or_body, Note};
use leptos_use::use_resize_observer;
2023-05-31 05:56:32 +01:00
#[component]
2023-07-27 18:06:36 +01:00
fn Demo() -> impl IntoView {
let el = create_node_ref::<Textarea>();
let (text, set_text) = create_signal("".to_string());
2023-05-31 05:56:32 +01:00
2023-07-27 18:06:36 +01:00
use_resize_observer(el, move |entries, _| {
2023-05-31 05:56:32 +01:00
let rect = entries[0].content_rect();
set_text.set(format!(
2023-05-31 05:56:32 +01:00
"width: {:.0}\nheight: {:.0}",
rect.width(),
rect.height()
));
});
2023-07-27 18:06:36 +01:00
view! { <Note class="mb-2">"Resize the box to see changes"</Note>
2023-06-05 00:02:13 +01:00
<textarea
node_ref=el
readonly
class="resize rounded-md p-4 w-[200px] h-[100px] text-2xl leading-10"
prop:value=move || text.get()
2023-06-05 00:02:13 +01:00
/>
2023-05-31 05:56:32 +01:00
}
}
fn main() {
_ = console_log::init_with_level(log::Level::Debug);
console_error_panic_hook::set_once();
2023-07-27 18:06:36 +01:00
mount_to(demo_or_body(), || {
view! { <Demo /> }
2023-05-31 05:56:32 +01:00
})
}