From d0774bfd3f6e2f984edc07f9a37033841553d3b5 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Sun, 13 Aug 2023 11:21:46 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20Testing=20size=20layout=20for=20?= =?UTF-8?q?images?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pagetop-minimal/src/component/image.rs | 36 +++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/pagetop-minimal/src/component/image.rs b/pagetop-minimal/src/component/image.rs index f755809f..cbfb8435 100644 --- a/pagetop-minimal/src/component/image.rs +++ b/pagetop-minimal/src/component/image.rs @@ -2,6 +2,15 @@ use pagetop::prelude::*; new_handle!(COMPONENT_IMAGE); +#[derive(Default)] +pub enum ImageSize { + #[default] + Auto, + Size(u16, u16), + Width(u16), + Height(u16), +} + #[rustfmt::skip] #[derive(Default)] pub struct Image { @@ -10,6 +19,7 @@ pub struct Image { id : IdentifierValue, classes : Classes, source : AttributeValue, + size : ImageSize, } impl ComponentTrait for Image { @@ -34,11 +44,19 @@ impl ComponentTrait for Image { } fn prepare_component(&self, _: &mut Context) -> PrepareMarkup { + let (width, height) = match self.size() { + ImageSize::Auto => (None, None), + ImageSize::Size(width, height) => (Some(width), Some(height)), + ImageSize::Width(width) => (Some(width), None), + ImageSize::Height(height) => (None, Some(height)), + }; PrepareMarkup::With(html! { img src=[self.source().get()] id=[self.id()] - class=[self.classes().get()]; + class=[self.classes().get()] + width=[width] + height=[height] {} }) } } @@ -49,7 +67,9 @@ impl Image { } pub fn pagetop() -> Self { - Image::new().with_source("/minimal/pagetop-logo.svg") + Image::new() + .with_source("/minimal/pagetop-logo.svg") + .with_size(ImageSize::Size(64, 64)) } // Image BUILDER. @@ -61,7 +81,7 @@ impl Image { } #[fn_builder] - pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self { + pub fn alter_renderable(&mut self, check: FnIsRenderable) -> &mut Self { self.renderable.check = check; self } @@ -84,6 +104,12 @@ impl Image { self } + #[fn_builder] + pub fn alter_size(&mut self, size: ImageSize) -> &mut Self { + self.size = size; + self + } + // Image GETTERS. pub fn classes(&self) -> &Classes { @@ -93,4 +119,8 @@ impl Image { pub fn source(&self) -> &AttributeValue { &self.source } + + pub fn size(&self) -> &ImageSize { + &self.size + } }