diff options
Diffstat (limited to '')
| -rw-r--r-- | web/src/widget.rs | 2 | ||||
| -rw-r--r-- | web/src/widget/empty.rs | 70 | 
2 files changed, 72 insertions, 0 deletions
diff --git a/web/src/widget.rs b/web/src/widget.rs index b0e16692..5cf0238a 100644 --- a/web/src/widget.rs +++ b/web/src/widget.rs @@ -25,6 +25,7 @@ pub mod text_input;  mod checkbox;  mod column;  mod container; +mod empty;  mod image;  mod radio;  mod row; @@ -44,6 +45,7 @@ pub use text_input::TextInput;  pub use checkbox::Checkbox;  pub use column::Column;  pub use container::Container; +pub use empty::Empty;  pub use image::Image;  pub use radio::Radio;  pub use row::Row; diff --git a/web/src/widget/empty.rs b/web/src/widget/empty.rs new file mode 100644 index 00000000..dda17efe --- /dev/null +++ b/web/src/widget/empty.rs @@ -0,0 +1,70 @@ +use crate::{style, Bus, Element, Length, Widget}; +use dodrio::bumpalo; + +/// An amount of empty space. +/// +/// It can be useful if you want to fill some space with nothing. +/// +/// [`Empty`]: struct.Empty.html +#[derive(Debug)] +pub struct Empty { +    width: Length, +    height: Length, +} + +impl Empty { +    /// Creates an amount of [`Empty`] space. +    /// +    /// [`Empty`]: struct.Empty.html +    pub fn new() -> Self { +        Empty { +            width: Length::Shrink, +            height: Length::Shrink, +        } +    } + +    /// Sets the width of the [`Empty`] space. +    /// +    /// [`Empty`]: struct..html +    pub fn width(mut self, width: Length) -> Self { +        self.width = width; +        self +    } + +    /// Sets the height of the [`Empty`] space. +    /// +    /// [`Empty`]: struct.Column.html +    pub fn height(mut self, height: Length) -> Self { +        self.height = height; +        self +    } +} + +impl<'a, Message> Widget<Message> for Empty { +    fn node<'b>( +        &self, +        bump: &'b bumpalo::Bump, +        _publish: &Bus<Message>, +        _style_sheet: &mut style::Sheet<'b>, +    ) -> dodrio::Node<'b> { +        use dodrio::builder::*; + +        let width = style::length(self.width); +        let height = style::length(self.height); + +        let style = bumpalo::format!( +            in bump, +            "width: {}; height: {};", +            width, +            height +        ); + +        div(bump).attr("style", style.into_bump_str()).finish() +    } +} + +impl<'a, Message> From<Empty> for Element<'a, Message> { +    fn from(empty: Empty) -> Element<'a, Message> { +        Element::new(empty) +    } +}  | 
