🚧 Testing size layout for images
This commit is contained in:
parent
1749e10c26
commit
d0774bfd3f
1 changed files with 33 additions and 3 deletions
|
|
@ -2,6 +2,15 @@ use pagetop::prelude::*;
|
||||||
|
|
||||||
new_handle!(COMPONENT_IMAGE);
|
new_handle!(COMPONENT_IMAGE);
|
||||||
|
|
||||||
|
#[derive(Default)]
|
||||||
|
pub enum ImageSize {
|
||||||
|
#[default]
|
||||||
|
Auto,
|
||||||
|
Size(u16, u16),
|
||||||
|
Width(u16),
|
||||||
|
Height(u16),
|
||||||
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
#[derive(Default)]
|
#[derive(Default)]
|
||||||
pub struct Image {
|
pub struct Image {
|
||||||
|
|
@ -10,6 +19,7 @@ pub struct Image {
|
||||||
id : IdentifierValue,
|
id : IdentifierValue,
|
||||||
classes : Classes,
|
classes : Classes,
|
||||||
source : AttributeValue,
|
source : AttributeValue,
|
||||||
|
size : ImageSize,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ComponentTrait for Image {
|
impl ComponentTrait for Image {
|
||||||
|
|
@ -34,11 +44,19 @@ impl ComponentTrait for Image {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn prepare_component(&self, _: &mut Context) -> PrepareMarkup {
|
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! {
|
PrepareMarkup::With(html! {
|
||||||
img
|
img
|
||||||
src=[self.source().get()]
|
src=[self.source().get()]
|
||||||
id=[self.id()]
|
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 {
|
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.
|
// Image BUILDER.
|
||||||
|
|
@ -61,7 +81,7 @@ impl Image {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
#[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.renderable.check = check;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
@ -84,6 +104,12 @@ impl Image {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[fn_builder]
|
||||||
|
pub fn alter_size(&mut self, size: ImageSize) -> &mut Self {
|
||||||
|
self.size = size;
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
// Image GETTERS.
|
// Image GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &Classes {
|
pub fn classes(&self) -> &Classes {
|
||||||
|
|
@ -93,4 +119,8 @@ impl Image {
|
||||||
pub fn source(&self) -> &AttributeValue {
|
pub fn source(&self) -> &AttributeValue {
|
||||||
&self.source
|
&self.source
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn size(&self) -> &ImageSize {
|
||||||
|
&self.size
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue