diff options
| author | 2019-12-31 10:36:06 +0100 | |
|---|---|---|
| committer | 2019-12-31 10:36:06 +0100 | |
| commit | 26de688e68347e1f6e388d01014eac89cea71afa (patch) | |
| tree | 6e454bd187407003a243eda4d137a153302f79b2 /web/src/widget | |
| parent | eb8866007456c7ea9efb5449096b0aa15b66ba9b (diff) | |
| parent | 3a327e08e96d9588d145c32afe4f04f37a8f0f0f (diff) | |
| download | iced-26de688e68347e1f6e388d01014eac89cea71afa.tar.gz iced-26de688e68347e1f6e388d01014eac89cea71afa.tar.bz2 iced-26de688e68347e1f6e388d01014eac89cea71afa.zip | |
Merge pull request #138 from hecrj/feature/empty-widget
`Space` widget
Diffstat (limited to '')
| -rw-r--r-- | web/src/widget.rs | 2 | ||||
| -rw-r--r-- | web/src/widget/space.rs | 69 | 
2 files changed, 71 insertions, 0 deletions
| diff --git a/web/src/widget.rs b/web/src/widget.rs index b0e16692..0ac536bd 100644 --- a/web/src/widget.rs +++ b/web/src/widget.rs @@ -28,6 +28,7 @@ mod container;  mod image;  mod radio;  mod row; +mod space;  mod text;  #[doc(no_inline)] @@ -47,6 +48,7 @@ pub use container::Container;  pub use image::Image;  pub use radio::Radio;  pub use row::Row; +pub use space::Space;  /// A component that displays information and allows interaction.  /// diff --git a/web/src/widget/space.rs b/web/src/widget/space.rs new file mode 100644 index 00000000..baf4c80b --- /dev/null +++ b/web/src/widget/space.rs @@ -0,0 +1,69 @@ +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. +#[derive(Debug)] +pub struct Space { +    width: Length, +    height: Length, +} + +impl Space { +    /// Creates an amount of empty [`Space`] with the given width and height. +    /// +    /// [`Space`]: struct.Space.html +    pub fn new(width: Length, height: Length) -> Self { +        Space { width, height } +    } + +    /// Creates an amount of horizontal [`Space`]. +    /// +    /// [`Space`]: struct.Space.html +    pub fn with_width(width: Length) -> Self { +        Space { +            width, +            height: Length::Shrink, +        } +    } + +    /// Creates an amount of vertical [`Space`]. +    /// +    /// [`Space`]: struct.Space.html +    pub fn with_height(height: Length) -> Self { +        Space { +            width: Length::Shrink, +            height, +        } +    } +} + +impl<'a, Message> Widget<Message> for Space { +    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<Space> for Element<'a, Message> { +    fn from(space: Space) -> Element<'a, Message> { +        Element::new(space) +    } +} | 
