use crate::{Align, Bus, Element, Widget}; use dodrio::bumpalo; pub struct Column<'a, Message> { children: Vec>, } impl<'a, Message> Column<'a, Message> { pub fn new() -> Self { Self { children: Vec::new(), } } pub fn spacing(self, _spacing: u16) -> Self { self } pub fn padding(self, _padding: u16) -> Self { self } pub fn max_width(self, _max_width: u16) -> Self { self } pub fn align_items(self, _align: Align) -> Self { self } pub fn push(mut self, element: E) -> Self where E: Into>, { self.children.push(element.into()); self } } impl<'a, Message> Widget for Column<'a, Message> { fn node<'b>( &self, bump: &'b bumpalo::Bump, publish: &Bus, ) -> dodrio::Node<'b> { use dodrio::builder::*; let children: Vec<_> = self .children .iter() .map(|element| element.widget.node(bump, publish)) .collect(); div(bump) .attr("style", "display: flex; flex-direction: column") .children(children) .finish() } } impl<'a, Message> From> for Element<'a, Message> where Message: 'static, { fn from(column: Column<'a, Message>) -> Element<'a, Message> { Element::new(column) } }