mod grid_item; use crate::utils::Provider; pub use grid_item::*; use leptos::*; #[component] pub fn Grid( #[prop(default = MaybeSignal::Static(1u16), into)] cols: MaybeSignal, #[prop(optional, into)] x_gap: MaybeSignal, #[prop(optional, into)] y_gap: MaybeSignal, children: Children, ) -> impl IntoView { let style = create_memo(move |_| { let mut style = String::from("display: grid;"); style.push_str(&format!( "grid-template-columns: repeat({}, minmax(0px, 1fr));", cols.get() )); style.push_str(&format!("grid-gap: {}px {}px;", y_gap.get(), x_gap.get())); style }); view! {
{children()}
} } #[derive(Clone)] pub(crate) struct GridInjection { x_gap: MaybeSignal, } impl GridInjection { pub fn new(x_gap: MaybeSignal) -> Self { Self { x_gap } } } pub(crate) fn use_grid() -> GridInjection { expect_context() }