mod bus; mod props; mod sub; use self::props::Props; use crate::{prelude::*, render}; pub use bus::{Bus, Request}; pub use sub::AlertSubscriber; use yew::prelude::*; pub struct Alert { link: ComponentLink, props: Props, prefix: String, prefixed_color: String, } impl Component for Alert { type Properties = Props; type Message = (); fn create(props: Self::Properties, link: ComponentLink) -> Self { Self { link, props, prefix: String::from("alert"), prefixed_color: String::default(), } } fn update(&mut self, _: Self::Message) -> ShouldRender { self.props.on_close.emit(()); true } fn change(&mut self, props: Self::Properties) -> ShouldRender { if props.color != self.props.color { self.prefixed_color = props.color.with_prefix(&self.prefix); } render_if_ne(&mut self.props, props) } fn view(&self) -> Html { let html = html! {
{ self.props.children.clone() }
}; render::render_with_prefix(&self.props, vec![&self.prefix, &self.prefixed_color], html) } fn rendered(&mut self, _first_render: bool) {} fn destroy(&mut self) {} }