vertigo_forms/
with_loader.rs1use std::rc::Rc;
2use vertigo::{Computed, DomNode, Resource, component, dom};
3
4use crate::Spinner;
5
6#[component]
11pub fn WithLoader<T: Clone + PartialEq + 'static>(
12 resource: Computed<Resource<T>>,
13 render: Rc<dyn Fn(T) -> DomNode>,
14) {
15 with_loader(resource, render)
16}
17
18pub fn with_loader<T: Clone + PartialEq + 'static>(
23 resource: Computed<Resource<T>>,
24 render: Rc<dyn Fn(T) -> DomNode>,
25) -> DomNode {
26 resource.render_value(move |res| match res {
27 Resource::Loading => dom! {
28 <Spinner />
29 },
30 Resource::Ready(value) => render(value),
31 Resource::Error(err) => dom! {
32 <main>{err}</main>
33 },
34 })
35}