Actualiza para cumplir recomendaciones de clippy
Básicamente a todos los componentes y elementos principales se les implementa Default() y se adaptan los constructores para inicializar los campos de sus estructuras de datos.
This commit is contained in:
parent
0e974d6d59
commit
261cea6c2f
30 changed files with 372 additions and 448 deletions
|
|
@ -2,23 +2,28 @@ use crate::prelude::*;
|
|||
|
||||
pub_const_handler!(COMPONENT_ANCHOR);
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum AnchorType {
|
||||
Button,
|
||||
#[default]
|
||||
Link,
|
||||
Button,
|
||||
Location,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum AnchorTarget {
|
||||
Blank,
|
||||
Context(String),
|
||||
#[default]
|
||||
Default,
|
||||
Blank,
|
||||
Parent,
|
||||
Top,
|
||||
Context(String),
|
||||
}
|
||||
|
||||
pub type AnchorIcon = ComponentsBundle;
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Anchor {
|
||||
weight : isize,
|
||||
renderable : Renderable,
|
||||
|
|
@ -26,7 +31,7 @@ pub struct Anchor {
|
|||
classes : Classes,
|
||||
anchor_type: AnchorType,
|
||||
href : AttributeValue,
|
||||
html : Markup,
|
||||
html : HtmlMarkup,
|
||||
left_icon : AnchorIcon,
|
||||
right_icon : AnchorIcon,
|
||||
target : AnchorTarget,
|
||||
|
|
@ -34,21 +39,8 @@ pub struct Anchor {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Anchor {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Anchor {
|
||||
weight : 0,
|
||||
renderable : render_always,
|
||||
id : IdentifierValue::new(),
|
||||
classes : Classes::new(),
|
||||
anchor_type: AnchorType::Link,
|
||||
href : AttributeValue::new(),
|
||||
html : html! {},
|
||||
left_icon : AnchorIcon::new(),
|
||||
right_icon : AnchorIcon::new(),
|
||||
target : AnchorTarget::Default,
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Anchor::default()
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -60,16 +52,16 @@ impl ComponentTrait for Anchor {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
fn default_render(&self, context: &mut PageContext) -> Markup {
|
||||
let target = match &self.target() {
|
||||
AnchorTarget::Blank => Some("_blank"),
|
||||
AnchorTarget::Context(name) => Some(name.as_str()),
|
||||
AnchorTarget::Parent => Some("_parent"),
|
||||
AnchorTarget::Top => Some("_top"),
|
||||
AnchorTarget::Context(name) => Some(name.as_str()),
|
||||
_ => None,
|
||||
};
|
||||
html! {
|
||||
|
|
@ -118,8 +110,8 @@ impl Anchor {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -175,24 +167,24 @@ impl Anchor {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_id(&mut self, id: &str) -> &mut Self {
|
||||
self.id.with_value(id);
|
||||
self.id.alter_value(id);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_type(&mut self, anchor_type: AnchorType) -> &mut Self {
|
||||
self.anchor_type = anchor_type;
|
||||
self.classes.alter(
|
||||
self.classes.alter_value(
|
||||
ClassesOp::SetDefault,
|
||||
match self.anchor_type {
|
||||
AnchorType::Button => "btn btn-primary",
|
||||
|
|
@ -203,12 +195,12 @@ impl Anchor {
|
|||
}
|
||||
|
||||
pub fn alter_href(&mut self, href: &str) -> &mut Self {
|
||||
self.href.with_value(href);
|
||||
self.href.alter_value(href);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_html(&mut self, html: Markup) -> &mut Self {
|
||||
self.html = html;
|
||||
self.html.markup = html;
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -253,7 +245,7 @@ impl Anchor {
|
|||
}
|
||||
|
||||
pub fn html(&self) -> &Markup {
|
||||
&self.html
|
||||
&self.html.markup
|
||||
}
|
||||
|
||||
pub fn left_icon(&self) -> &AnchorIcon {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ pub_const_handler!(COMPONENT_BLOCK);
|
|||
hook_before_render_component!(HOOK_BEFORE_RENDER_BLOCK, Block);
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Block {
|
||||
weight : isize,
|
||||
renderable: Renderable,
|
||||
|
|
@ -16,17 +17,8 @@ pub struct Block {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Block {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Block {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
id : IdentifierValue::new(),
|
||||
classes : Classes::new_with_default("block"),
|
||||
title : AttributeValue::new(),
|
||||
components: ComponentsBundle::new(),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Block::default().with_classes(ClassesOp::SetDefault, "block")
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -38,7 +30,7 @@ impl ComponentTrait for Block {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn before_render(&mut self, context: &mut PageContext) {
|
||||
|
|
@ -77,8 +69,8 @@ impl Block {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -114,23 +106,23 @@ impl Block {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_id(&mut self, id: &str) -> &mut Self {
|
||||
self.id.with_value(id);
|
||||
self.id.alter_value(id);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_title(&mut self, title: &str) -> &mut Self {
|
||||
self.title.with_value(title);
|
||||
self.title.alter_value(title);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,15 +4,18 @@ pub_const_handler!(COMPONENT_CONTAINER);
|
|||
|
||||
hook_before_render_component!(HOOK_BEFORE_RENDER_CONTAINER, Container);
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum ContainerType {
|
||||
#[default]
|
||||
Wrapper,
|
||||
Header,
|
||||
Footer,
|
||||
Main,
|
||||
Section,
|
||||
Wrapper,
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Container {
|
||||
weight : isize,
|
||||
renderable : Renderable,
|
||||
|
|
@ -25,18 +28,10 @@ pub struct Container {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Container {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Container {
|
||||
weight : 0,
|
||||
renderable : render_always,
|
||||
id : IdentifierValue::new(),
|
||||
classes : Classes::new_with_default("container"),
|
||||
inner_classes : Classes::new_with_default("container"),
|
||||
container_type: ContainerType::Wrapper,
|
||||
components : ComponentsBundle::new(),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Container::default()
|
||||
.with_classes(ClassesOp::SetDefault, "container")
|
||||
.with_inner_classes(ClassesOp::SetDefault, "container")
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -48,7 +43,7 @@ impl ComponentTrait for Container {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn before_render(&mut self, context: &mut PageContext) {
|
||||
|
|
@ -134,8 +129,8 @@ impl Container {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -171,23 +166,23 @@ impl Container {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_id(&mut self, id: &str) -> &mut Self {
|
||||
self.id.with_value(id);
|
||||
self.id.alter_value(id);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_inner_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.inner_classes.alter(op, classes);
|
||||
self.inner_classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,13 +2,16 @@ use crate::prelude::*;
|
|||
|
||||
pub_const_handler!(COMPONENT_BUTTON);
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum ButtonType {
|
||||
#[default]
|
||||
Button,
|
||||
Reset,
|
||||
Submit,
|
||||
Reset,
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Button {
|
||||
weight : isize,
|
||||
renderable : Renderable,
|
||||
|
|
@ -22,20 +25,10 @@ pub struct Button {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Button {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Button {
|
||||
weight : 0,
|
||||
renderable : render_always,
|
||||
classes : Classes::new_with_default("btn btn-primary"),
|
||||
button_type: ButtonType::Button,
|
||||
name : AttributeValue::new(),
|
||||
value : AttributeValue::new(),
|
||||
autofocus : AttributeValue::new(),
|
||||
disabled : AttributeValue::new(),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
.with_classes(ClassesOp::AddFirst, "form-button")
|
||||
Button::default()
|
||||
.with_classes(ClassesOp::SetDefault, "btn btn-primary")
|
||||
.with_classes(ClassesOp::AddFirst, "form-button")
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -47,15 +40,14 @@ impl ComponentTrait for Button {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
fn default_render(&self, _: &mut PageContext) -> Markup {
|
||||
let button_type = match self.button_type() {
|
||||
ButtonType::Button => "button",
|
||||
ButtonType::Reset => "reset",
|
||||
ButtonType::Submit => "submit",
|
||||
ButtonType::Reset => "reset",
|
||||
};
|
||||
let id = self.name().get().map(|name| concat_string!("edit-", name));
|
||||
html! {
|
||||
|
|
@ -90,14 +82,6 @@ impl Button {
|
|||
Button::new().with_value(value)
|
||||
}
|
||||
|
||||
pub fn reset(value: &str) -> Self {
|
||||
let mut button = Button::new()
|
||||
.with_classes(ClassesOp::Replace("form-button"), "form-reset")
|
||||
.with_value(value);
|
||||
button.button_type = ButtonType::Reset;
|
||||
button
|
||||
}
|
||||
|
||||
pub fn submit(value: &str) -> Self {
|
||||
let mut button = Button::new()
|
||||
.with_classes(ClassesOp::Replace("form-button"), "form-submit")
|
||||
|
|
@ -106,6 +90,14 @@ impl Button {
|
|||
button
|
||||
}
|
||||
|
||||
pub fn reset(value: &str) -> Self {
|
||||
let mut button = Button::new()
|
||||
.with_classes(ClassesOp::Replace("form-button"), "form-reset")
|
||||
.with_value(value);
|
||||
button.button_type = ButtonType::Reset;
|
||||
button
|
||||
}
|
||||
|
||||
// Button BUILDER.
|
||||
|
||||
pub fn with_weight(mut self, weight: isize) -> Self {
|
||||
|
|
@ -113,8 +105,8 @@ impl Button {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -155,28 +147,28 @@ impl Button {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_name(&mut self, name: &str) -> &mut Self {
|
||||
self.name.with_value(name);
|
||||
self.name.alter_value(name);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_value(&mut self, value: &str) -> &mut Self {
|
||||
self.value.with_value(value);
|
||||
self.value.alter_value(value);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_autofocus(&mut self, toggle: bool) -> &mut Self {
|
||||
self.autofocus.with_value(match toggle {
|
||||
self.autofocus.alter_value(match toggle {
|
||||
true => "autofocus",
|
||||
false => "",
|
||||
});
|
||||
|
|
@ -184,7 +176,7 @@ impl Button {
|
|||
}
|
||||
|
||||
pub fn alter_disabled(&mut self, toggle: bool) -> &mut Self {
|
||||
self.disabled.with_value(match toggle {
|
||||
self.disabled.alter_value(match toggle {
|
||||
true => "disabled",
|
||||
false => "",
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ use crate::prelude::*;
|
|||
pub_const_handler!(COMPONENT_DATE);
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Date {
|
||||
weight : isize,
|
||||
renderable : Renderable,
|
||||
|
|
@ -21,25 +22,10 @@ pub struct Date {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Date {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Date {
|
||||
weight : 0,
|
||||
renderable : render_always,
|
||||
classes : Classes::new_with_default("form-item"),
|
||||
name : AttributeValue::new(),
|
||||
value : AttributeValue::new(),
|
||||
label : AttributeValue::new(),
|
||||
placeholder : AttributeValue::new(),
|
||||
autofocus : AttributeValue::new(),
|
||||
autocomplete: AttributeValue::new(),
|
||||
disabled : AttributeValue::new(),
|
||||
readonly : AttributeValue::new(),
|
||||
required : AttributeValue::new(),
|
||||
help_text : AttributeValue::new(),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
.with_classes(ClassesOp::AddFirst, "form-type-date")
|
||||
Date::default()
|
||||
.with_classes(ClassesOp::SetDefault,"form-item")
|
||||
.with_classes(ClassesOp::AddFirst, "form-type-date")
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -51,7 +37,7 @@ impl ComponentTrait for Date {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn default_render(&self, _: &mut PageContext) -> Markup {
|
||||
|
|
@ -107,8 +93,8 @@ impl Date {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -179,38 +165,38 @@ impl Date {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_name(&mut self, name: &str) -> &mut Self {
|
||||
self.name.with_value(name);
|
||||
self.name.alter_value(name);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_value(&mut self, value: &str) -> &mut Self {
|
||||
self.value.with_value(value);
|
||||
self.value.alter_value(value);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_label(&mut self, label: &str) -> &mut Self {
|
||||
self.label.with_value(label);
|
||||
self.label.alter_value(label);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_placeholder(&mut self, placeholder: &str) -> &mut Self {
|
||||
self.placeholder.with_value(placeholder);
|
||||
self.placeholder.alter_value(placeholder);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_autofocus(&mut self, toggle: bool) -> &mut Self {
|
||||
self.autofocus.with_value(match toggle {
|
||||
self.autofocus.alter_value(match toggle {
|
||||
true => "autofocus",
|
||||
false => "",
|
||||
});
|
||||
|
|
@ -218,7 +204,7 @@ impl Date {
|
|||
}
|
||||
|
||||
pub fn alter_autocomplete(&mut self, toggle: bool) -> &mut Self {
|
||||
self.autocomplete.with_value(match toggle {
|
||||
self.autocomplete.alter_value(match toggle {
|
||||
true => "",
|
||||
false => "off",
|
||||
});
|
||||
|
|
@ -226,7 +212,7 @@ impl Date {
|
|||
}
|
||||
|
||||
pub fn alter_disabled(&mut self, toggle: bool) -> &mut Self {
|
||||
self.disabled.with_value(match toggle {
|
||||
self.disabled.alter_value(match toggle {
|
||||
true => "disabled",
|
||||
false => "",
|
||||
});
|
||||
|
|
@ -234,7 +220,7 @@ impl Date {
|
|||
}
|
||||
|
||||
pub fn alter_readonly(&mut self, toggle: bool) -> &mut Self {
|
||||
self.readonly.with_value(match toggle {
|
||||
self.readonly.alter_value(match toggle {
|
||||
true => "readonly",
|
||||
false => "",
|
||||
});
|
||||
|
|
@ -242,7 +228,7 @@ impl Date {
|
|||
}
|
||||
|
||||
pub fn alter_required(&mut self, toggle: bool) -> &mut Self {
|
||||
self.required.with_value(match toggle {
|
||||
self.required.alter_value(match toggle {
|
||||
true => "required",
|
||||
false => "",
|
||||
});
|
||||
|
|
@ -250,7 +236,7 @@ impl Date {
|
|||
}
|
||||
|
||||
pub fn alter_help_text(&mut self, help_text: &str) -> &mut Self {
|
||||
self.help_text.with_value(help_text);
|
||||
self.help_text.alter_value(help_text);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,12 +4,15 @@ pub_const_handler!(COMPONENT_FORM);
|
|||
|
||||
hook_before_render_component!(HOOK_BEFORE_RENDER_FORM, Form);
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum FormMethod {
|
||||
Get,
|
||||
#[default]
|
||||
Post,
|
||||
Get,
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Form {
|
||||
weight : isize,
|
||||
renderable: Renderable,
|
||||
|
|
@ -23,19 +26,10 @@ pub struct Form {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Form {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Form {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
id : IdentifierValue::new(),
|
||||
classes : Classes::new_with_default("form"),
|
||||
action : AttributeValue::new(),
|
||||
charset : AttributeValue::new_with_value("UTF-8"),
|
||||
method : FormMethod::Post,
|
||||
elements : ComponentsBundle::new(),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Form::default()
|
||||
.with_classes(ClassesOp::SetDefault, "form")
|
||||
.with_charset("UTF-8")
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -47,7 +41,7 @@ impl ComponentTrait for Form {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn before_render(&mut self, context: &mut PageContext) {
|
||||
|
|
@ -56,8 +50,8 @@ impl ComponentTrait for Form {
|
|||
|
||||
fn default_render(&self, context: &mut PageContext) -> Markup {
|
||||
let method = match self.method() {
|
||||
FormMethod::Get => None,
|
||||
FormMethod::Post => Some("post".to_owned()),
|
||||
FormMethod::Get => None,
|
||||
};
|
||||
html! {
|
||||
form
|
||||
|
|
@ -89,8 +83,8 @@ impl Form {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -136,28 +130,28 @@ impl Form {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_id(&mut self, id: &str) -> &mut Self {
|
||||
self.id.with_value(id);
|
||||
self.id.alter_value(id);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_action(&mut self, action: &str) -> &mut Self {
|
||||
self.action.with_value(action);
|
||||
self.action.alter_value(action);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_charset(&mut self, charset: &str) -> &mut Self {
|
||||
self.charset.with_value(charset);
|
||||
self.charset.alter_value(charset);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ use crate::prelude::*;
|
|||
pub_const_handler!(COMPONENT_HIDDEN);
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Hidden {
|
||||
weight: isize,
|
||||
name : IdentifierValue,
|
||||
|
|
@ -10,13 +11,8 @@ pub struct Hidden {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Hidden {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Hidden {
|
||||
weight: 0,
|
||||
name : IdentifierValue::new(),
|
||||
value : AttributeValue::new(),
|
||||
}
|
||||
Hidden::default()
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -73,12 +69,12 @@ impl Hidden {
|
|||
}
|
||||
|
||||
pub fn alter_name(&mut self, name: &str) -> &mut Self {
|
||||
self.name.with_value(name);
|
||||
self.name.alter_value(name);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_value(&mut self, value: &str) -> &mut Self {
|
||||
self.value.with_value(value);
|
||||
self.value.alter_value(value);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,16 +2,19 @@ use crate::prelude::*;
|
|||
|
||||
pub_const_handler!(COMPONENT_INPUT);
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum InputType {
|
||||
Email,
|
||||
#[default]
|
||||
Textfield,
|
||||
Password,
|
||||
Search,
|
||||
Email,
|
||||
Telephone,
|
||||
Textfield,
|
||||
Url,
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Input {
|
||||
weight : isize,
|
||||
renderable : Renderable,
|
||||
|
|
@ -34,29 +37,12 @@ pub struct Input {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Input {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Input {
|
||||
weight : 0,
|
||||
renderable : render_always,
|
||||
classes : Classes::new_with_default("form-item"),
|
||||
input_type : InputType::Textfield,
|
||||
name : IdentifierValue::new(),
|
||||
value : AttributeValue::new(),
|
||||
label : AttributeValue::new(),
|
||||
size : Some(60),
|
||||
minlength : None,
|
||||
maxlength : Some(128),
|
||||
placeholder : AttributeValue::new(),
|
||||
autofocus : AttributeValue::new(),
|
||||
autocomplete: AttributeValue::new(),
|
||||
disabled : AttributeValue::new(),
|
||||
readonly : AttributeValue::new(),
|
||||
required : AttributeValue::new(),
|
||||
help_text : AttributeValue::new(),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
.with_classes(ClassesOp::AddFirst, "form-type-textfield")
|
||||
Input::default()
|
||||
.with_classes(ClassesOp::SetDefault, "form-item")
|
||||
.with_classes(ClassesOp::AddFirst, "form-type-textfield")
|
||||
.with_size(Some(60))
|
||||
.with_maxlength(Some(128))
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -68,17 +54,17 @@ impl ComponentTrait for Input {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
fn default_render(&self, _: &mut PageContext) -> Markup {
|
||||
let type_input = match self.input_type() {
|
||||
InputType::Email => "email",
|
||||
InputType::Textfield => "text",
|
||||
InputType::Password => "password",
|
||||
InputType::Search => "search",
|
||||
InputType::Email => "email",
|
||||
InputType::Telephone => "tel",
|
||||
InputType::Textfield => "text",
|
||||
InputType::Url => "url",
|
||||
};
|
||||
let id = self.name().get().map(|name| concat_string!("edit-", name));
|
||||
|
|
@ -190,8 +176,8 @@ impl Input {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -277,18 +263,18 @@ impl Input {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_name(&mut self, name: &str) -> &mut Self {
|
||||
self.name.with_value(name);
|
||||
self.name.alter_value(name);
|
||||
self.alter_classes(
|
||||
ClassesOp::SetDefault,
|
||||
concat_string!("form-item form-item-", name).as_str(),
|
||||
|
|
@ -297,12 +283,12 @@ impl Input {
|
|||
}
|
||||
|
||||
pub fn alter_value(&mut self, value: &str) -> &mut Self {
|
||||
self.value.with_value(value);
|
||||
self.value.alter_value(value);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_label(&mut self, label: &str) -> &mut Self {
|
||||
self.label.with_value(label);
|
||||
self.label.alter_value(label);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -322,12 +308,12 @@ impl Input {
|
|||
}
|
||||
|
||||
pub fn alter_placeholder(&mut self, placeholder: &str) -> &mut Self {
|
||||
self.placeholder.with_value(placeholder);
|
||||
self.placeholder.alter_value(placeholder);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_autofocus(&mut self, toggle: bool) -> &mut Self {
|
||||
self.autofocus.with_value(match toggle {
|
||||
self.autofocus.alter_value(match toggle {
|
||||
true => "autofocus",
|
||||
false => "",
|
||||
});
|
||||
|
|
@ -335,7 +321,7 @@ impl Input {
|
|||
}
|
||||
|
||||
pub fn alter_autocomplete(&mut self, toggle: bool) -> &mut Self {
|
||||
self.autocomplete.with_value(match toggle {
|
||||
self.autocomplete.alter_value(match toggle {
|
||||
true => "",
|
||||
false => "off",
|
||||
});
|
||||
|
|
@ -343,7 +329,7 @@ impl Input {
|
|||
}
|
||||
|
||||
pub fn alter_disabled(&mut self, toggle: bool) -> &mut Self {
|
||||
self.disabled.with_value(match toggle {
|
||||
self.disabled.alter_value(match toggle {
|
||||
true => "disabled",
|
||||
false => "",
|
||||
});
|
||||
|
|
@ -351,7 +337,7 @@ impl Input {
|
|||
}
|
||||
|
||||
pub fn alter_readonly(&mut self, toggle: bool) -> &mut Self {
|
||||
self.readonly.with_value(match toggle {
|
||||
self.readonly.alter_value(match toggle {
|
||||
true => "readonly",
|
||||
false => "",
|
||||
});
|
||||
|
|
@ -359,7 +345,7 @@ impl Input {
|
|||
}
|
||||
|
||||
pub fn alter_required(&mut self, toggle: bool) -> &mut Self {
|
||||
self.required.with_value(match toggle {
|
||||
self.required.alter_value(match toggle {
|
||||
true => "required",
|
||||
false => "",
|
||||
});
|
||||
|
|
@ -367,7 +353,7 @@ impl Input {
|
|||
}
|
||||
|
||||
pub fn alter_help_text(&mut self, help_text: &str) -> &mut Self {
|
||||
self.help_text.with_value(help_text);
|
||||
self.help_text.alter_value(help_text);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ const SIZE_10_OF_12: &str = "col-md-10";
|
|||
const SIZE_11_OF_12: &str = "col-md-11";
|
||||
const SIZE_12_OF_12: &str = "col-md-12";
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum ColumnSize {
|
||||
#[default]
|
||||
Default,
|
||||
Is1of12,
|
||||
Is2of12,
|
||||
|
|
@ -35,6 +37,7 @@ pub enum ColumnSize {
|
|||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Column {
|
||||
weight : isize,
|
||||
renderable: Renderable,
|
||||
|
|
@ -46,17 +49,8 @@ pub struct Column {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Column {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Column {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
id : IdentifierValue::new(),
|
||||
classes : Classes::new_with_default(SIZE__DEFAULT),
|
||||
size : ColumnSize::Default,
|
||||
components: ComponentsBundle::new(),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Column::default().with_classes(ClassesOp::SetDefault, SIZE__DEFAULT)
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -68,7 +62,7 @@ impl ComponentTrait for Column {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn before_render(&mut self, context: &mut PageContext) {
|
||||
|
|
@ -100,8 +94,8 @@ impl Column {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -137,18 +131,18 @@ impl Column {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_id(&mut self, id: &str) -> &mut Self {
|
||||
self.id.with_value(id);
|
||||
self.id.alter_value(id);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ pub_const_handler!(COMPONENT_ROW);
|
|||
hook_before_render_component!(HOOK_BEFORE_RENDER_ROW, Row);
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Row {
|
||||
weight : isize,
|
||||
renderable: Renderable,
|
||||
|
|
@ -15,16 +16,8 @@ pub struct Row {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Row {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Row {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
id : IdentifierValue::new(),
|
||||
classes : Classes::new_with_default("row"),
|
||||
columns : ComponentsBundle::new(),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Row::default().with_classes(ClassesOp::SetDefault, "row")
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -36,7 +29,7 @@ impl ComponentTrait for Row {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn before_render(&mut self, context: &mut PageContext) {
|
||||
|
|
@ -68,8 +61,8 @@ impl Row {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -100,18 +93,18 @@ impl Row {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_id(&mut self, id: &str) -> &mut Self {
|
||||
self.id.with_value(id);
|
||||
self.id.alter_value(id);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@ use crate::prelude::*;
|
|||
|
||||
pub_const_handler!(COMPONENT_HEADING);
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum HeadingType {
|
||||
#[default]
|
||||
H1,
|
||||
H2,
|
||||
H3,
|
||||
|
|
@ -11,41 +13,34 @@ pub enum HeadingType {
|
|||
H6,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum HeadingDisplay {
|
||||
#[default]
|
||||
Normal,
|
||||
XxLarge,
|
||||
Large,
|
||||
Medium,
|
||||
Small,
|
||||
XxSmall,
|
||||
Normal,
|
||||
Subtitle,
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Heading {
|
||||
weight : isize,
|
||||
renderable : Renderable,
|
||||
id : IdentifierValue,
|
||||
classes : Classes,
|
||||
heading_type: HeadingType,
|
||||
html : Markup,
|
||||
html : HtmlMarkup,
|
||||
display : HeadingDisplay,
|
||||
template : String,
|
||||
}
|
||||
|
||||
impl ComponentTrait for Heading {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Heading {
|
||||
weight : 0,
|
||||
renderable : render_always,
|
||||
id : IdentifierValue::new(),
|
||||
classes : Classes::new(),
|
||||
heading_type: HeadingType::H1,
|
||||
html : html! {},
|
||||
display : HeadingDisplay::Normal,
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Heading::default()
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -57,7 +52,7 @@ impl ComponentTrait for Heading {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn default_render(&self, _: &mut PageContext) -> Markup {
|
||||
|
|
@ -126,8 +121,8 @@ impl Heading {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -168,18 +163,18 @@ impl Heading {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_id(&mut self, id: &str) -> &mut Self {
|
||||
self.id.with_value(id);
|
||||
self.id.alter_value(id);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -189,14 +184,14 @@ impl Heading {
|
|||
}
|
||||
|
||||
pub fn alter_html(&mut self, html: Markup) -> &mut Self {
|
||||
self.html = html;
|
||||
self.html.markup = html;
|
||||
self
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
pub fn alter_display(&mut self, display: HeadingDisplay) -> &mut Self {
|
||||
self.display = display;
|
||||
self.classes.alter(
|
||||
self.classes.alter_value(
|
||||
ClassesOp::SetDefault,
|
||||
match &self.display() {
|
||||
HeadingDisplay::XxLarge => "display-2",
|
||||
|
|
@ -231,7 +226,7 @@ impl Heading {
|
|||
}
|
||||
|
||||
pub fn html(&self) -> &Markup {
|
||||
&self.html
|
||||
&self.html.markup
|
||||
}
|
||||
|
||||
pub fn display(&self) -> &HeadingDisplay {
|
||||
|
|
|
|||
|
|
@ -3,22 +3,17 @@ use crate::prelude::*;
|
|||
pub_const_handler!(COMPONENT_HTML);
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Html {
|
||||
weight : isize,
|
||||
renderable: Renderable,
|
||||
html : Markup,
|
||||
html : HtmlMarkup,
|
||||
template : String,
|
||||
}
|
||||
|
||||
impl ComponentTrait for Html {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Html {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
html : html! {},
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Html::default()
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -30,7 +25,7 @@ impl ComponentTrait for Html {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn default_render(&self, _: &mut PageContext) -> Markup {
|
||||
|
|
@ -58,8 +53,8 @@ impl Html {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -80,13 +75,13 @@ impl Html {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_html(&mut self, html: Markup) -> &mut Self {
|
||||
self.html = html;
|
||||
self.html.markup = html;
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -98,7 +93,7 @@ impl Html {
|
|||
// Html GETTERS.
|
||||
|
||||
pub fn html(&self) -> &Markup {
|
||||
&self.html
|
||||
&self.html.markup
|
||||
}
|
||||
|
||||
pub fn template(&self) -> &str {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ use crate::prelude::*;
|
|||
pub_const_handler!(COMPONENT_ICON);
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Icon {
|
||||
weight : isize,
|
||||
renderable: Renderable,
|
||||
|
|
@ -11,14 +12,8 @@ pub struct Icon {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Icon {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Icon {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
icon_name : "question-circle-fill".to_owned(),
|
||||
classes : Classes::new_with_default("bi-question-circle-fill"),
|
||||
}
|
||||
Icon::default().with_classes(ClassesOp::SetDefault, "bi-question-circle-fill")
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -30,7 +25,7 @@ impl ComponentTrait for Icon {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn before_render(&mut self, context: &mut PageContext) {
|
||||
|
|
@ -64,8 +59,8 @@ impl Icon {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -86,8 +81,8 @@ impl Icon {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -101,7 +96,7 @@ impl Icon {
|
|||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ use crate::prelude::*;
|
|||
pub_const_handler!(COMPONENT_IMAGE);
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Image {
|
||||
weight : isize,
|
||||
renderable: Renderable,
|
||||
|
|
@ -13,16 +14,8 @@ pub struct Image {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Image {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Image {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
id : IdentifierValue::new(),
|
||||
classes : Classes::new_with_default("img-fluid"),
|
||||
source : AttributeValue::new(),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Image::default().with_classes(ClassesOp::SetDefault, "img-fluid")
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -34,7 +27,7 @@ impl ComponentTrait for Image {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn default_render(&self, _: &mut PageContext) -> Markup {
|
||||
|
|
@ -67,8 +60,8 @@ impl Image {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -99,23 +92,23 @@ impl Image {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_id(&mut self, id: &str) -> &mut Self {
|
||||
self.id.with_value(id);
|
||||
self.id.alter_value(id);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_source(&mut self, source: &str) -> &mut Self {
|
||||
self.source.with_value(source);
|
||||
self.source.alter_value(source);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,19 +2,22 @@ use crate::prelude::*;
|
|||
|
||||
pub_const_handler!(COMPONENT_MENUITEM);
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum MenuItemType {
|
||||
#[default]
|
||||
Void,
|
||||
Label(String),
|
||||
Link(String, String),
|
||||
LinkBlank(String, String),
|
||||
Html(Markup),
|
||||
Separator,
|
||||
Submenu(String, Menu),
|
||||
Void,
|
||||
Separator,
|
||||
}
|
||||
|
||||
// MenuItem.
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct MenuItem {
|
||||
weight : isize,
|
||||
renderable: Renderable,
|
||||
|
|
@ -22,13 +25,8 @@ pub struct MenuItem {
|
|||
}
|
||||
|
||||
impl ComponentTrait for MenuItem {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
MenuItem {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
item_type : MenuItemType::Void,
|
||||
}
|
||||
MenuItem::default()
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -40,11 +38,13 @@ impl ComponentTrait for MenuItem {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn default_render(&self, context: &mut PageContext) -> Markup {
|
||||
match self.item_type() {
|
||||
MenuItemType::Void => html! {
|
||||
},
|
||||
MenuItemType::Label(label) => html! {
|
||||
li class="label" { a href="#" { (label) } }
|
||||
},
|
||||
|
|
@ -70,7 +70,6 @@ impl ComponentTrait for MenuItem {
|
|||
MenuItemType::Separator => html! {
|
||||
li class="separator" { }
|
||||
},
|
||||
MenuItemType::Void => html! {},
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -88,7 +87,7 @@ impl MenuItem {
|
|||
pub fn label(label: &str) -> Self {
|
||||
MenuItem {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
renderable: Renderable::default(),
|
||||
item_type : MenuItemType::Label(label.to_owned()),
|
||||
}
|
||||
}
|
||||
|
|
@ -97,7 +96,7 @@ impl MenuItem {
|
|||
pub fn link(label: &str, path: &str) -> Self {
|
||||
MenuItem {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
renderable: Renderable::default(),
|
||||
item_type : MenuItemType::Link(label.to_owned(), path.to_owned()),
|
||||
}
|
||||
}
|
||||
|
|
@ -106,7 +105,7 @@ impl MenuItem {
|
|||
pub fn link_blank(label: &str, path: &str) -> Self {
|
||||
MenuItem {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
renderable: Renderable::default(),
|
||||
item_type : MenuItemType::LinkBlank(label.to_owned(), path.to_owned()),
|
||||
}
|
||||
}
|
||||
|
|
@ -115,29 +114,29 @@ impl MenuItem {
|
|||
pub fn html(html: Markup) -> Self {
|
||||
MenuItem {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
renderable: Renderable::default(),
|
||||
item_type : MenuItemType::Html(html),
|
||||
}
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
pub fn separator() -> Self {
|
||||
MenuItem {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
item_type : MenuItemType::Separator,
|
||||
}
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
pub fn submenu(label: &str, menu: Menu) -> Self {
|
||||
MenuItem {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
renderable: Renderable::default(),
|
||||
item_type : MenuItemType::Submenu(label.to_owned(), menu),
|
||||
}
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
pub fn separator() -> Self {
|
||||
MenuItem {
|
||||
weight : 0,
|
||||
renderable: Renderable::default(),
|
||||
item_type : MenuItemType::Separator,
|
||||
}
|
||||
}
|
||||
|
||||
// MenuItem BUILDER.
|
||||
|
||||
pub fn with_weight(mut self, weight: isize) -> Self {
|
||||
|
|
@ -145,8 +144,8 @@ impl MenuItem {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -157,8 +156,8 @@ impl MenuItem {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -176,6 +175,7 @@ pub_const_handler!(COMPONENT_MENU);
|
|||
hook_before_render_component!(HOOK_BEFORE_RENDER_MENU, Menu);
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Menu {
|
||||
weight : isize,
|
||||
renderable: Renderable,
|
||||
|
|
@ -186,16 +186,8 @@ pub struct Menu {
|
|||
}
|
||||
|
||||
impl ComponentTrait for Menu {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Menu {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
items : ComponentsBundle::new(),
|
||||
id : IdentifierValue::new(),
|
||||
classes : Classes::new_with_default("sm sm-clean"),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Menu::default().with_classes(ClassesOp::SetDefault, "sm sm-clean")
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -207,7 +199,7 @@ impl ComponentTrait for Menu {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn before_render(&mut self, context: &mut PageContext) {
|
||||
|
|
@ -259,8 +251,8 @@ impl Menu {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -291,18 +283,18 @@ impl Menu {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_id(&mut self, id: &str) -> &mut Self {
|
||||
self.id.with_value(id);
|
||||
self.id.alter_value(id);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,38 +2,32 @@ use crate::prelude::*;
|
|||
|
||||
pub_const_handler!(COMPONENT_PARAGRAPH);
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum ParagraphDisplay {
|
||||
#[default]
|
||||
Normal,
|
||||
XxLarge,
|
||||
Large,
|
||||
Medium,
|
||||
Small,
|
||||
XxSmall,
|
||||
Normal,
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct Paragraph {
|
||||
weight : isize,
|
||||
renderable: Renderable,
|
||||
id : IdentifierValue,
|
||||
classes : Classes,
|
||||
html : Markup,
|
||||
html : HtmlMarkup,
|
||||
display : ParagraphDisplay,
|
||||
template : String,
|
||||
}
|
||||
|
||||
impl ComponentTrait for Paragraph {
|
||||
#[rustfmt::skip]
|
||||
fn new() -> Self {
|
||||
Paragraph {
|
||||
weight : 0,
|
||||
renderable: render_always,
|
||||
id : IdentifierValue::new(),
|
||||
classes : Classes::new(),
|
||||
html : html! {},
|
||||
display : ParagraphDisplay::Normal,
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
Paragraph::default()
|
||||
}
|
||||
|
||||
fn handler(&self) -> Handler {
|
||||
|
|
@ -45,7 +39,7 @@ impl ComponentTrait for Paragraph {
|
|||
}
|
||||
|
||||
fn is_renderable(&self, context: &PageContext) -> bool {
|
||||
(self.renderable)(context)
|
||||
(self.renderable.check)(context)
|
||||
}
|
||||
|
||||
fn default_render(&self, _: &mut PageContext) -> Markup {
|
||||
|
|
@ -75,8 +69,8 @@ impl Paragraph {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn with_renderable(mut self, renderable: Renderable) -> Self {
|
||||
self.alter_renderable(renderable);
|
||||
pub fn with_renderable(mut self, check: IsRenderable) -> Self {
|
||||
self.alter_renderable(check);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -112,30 +106,30 @@ impl Paragraph {
|
|||
self
|
||||
}
|
||||
|
||||
pub fn alter_renderable(&mut self, renderable: Renderable) -> &mut Self {
|
||||
self.renderable = renderable;
|
||||
pub fn alter_renderable(&mut self, check: IsRenderable) -> &mut Self {
|
||||
self.renderable.check = check;
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_id(&mut self, id: &str) -> &mut Self {
|
||||
self.id.with_value(id);
|
||||
self.id.alter_value(id);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.classes.alter(op, classes);
|
||||
self.classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_html(&mut self, html: Markup) -> &mut Self {
|
||||
self.html = html;
|
||||
self.html.markup = html;
|
||||
self
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
pub fn alter_display(&mut self, display: ParagraphDisplay) -> &mut Self {
|
||||
self.display = display;
|
||||
self.classes.alter(
|
||||
self.classes.alter_value(
|
||||
ClassesOp::SetDefault,
|
||||
match &self.display() {
|
||||
ParagraphDisplay::XxLarge => "fs-2",
|
||||
|
|
@ -165,7 +159,7 @@ impl Paragraph {
|
|||
}
|
||||
|
||||
pub fn html(&self) -> &Markup {
|
||||
&self.html
|
||||
&self.html.markup
|
||||
}
|
||||
|
||||
pub fn display(&self) -> &ParagraphDisplay {
|
||||
|
|
|
|||
|
|
@ -8,14 +8,8 @@ mod all;
|
|||
pub use all::add_component_to;
|
||||
pub(crate) use all::common_components;
|
||||
|
||||
use crate::response::page::PageContext;
|
||||
mod renderable;
|
||||
pub use renderable::{IsRenderable, Renderable};
|
||||
|
||||
pub type Renderable = fn(_: &PageContext) -> bool;
|
||||
|
||||
pub fn render_always(_: &PageContext) -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
pub fn render_never(_: &PageContext) -> bool {
|
||||
false
|
||||
}
|
||||
mod html_markup;
|
||||
pub use html_markup::HtmlMarkup;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ pub struct ComponentsBundle(Vec<Arc<RwLock<dyn ComponentTrait>>>);
|
|||
|
||||
impl ComponentsBundle {
|
||||
pub fn new() -> Self {
|
||||
ComponentsBundle(Vec::new())
|
||||
ComponentsBundle::default()
|
||||
}
|
||||
|
||||
pub fn new_with(component: impl ComponentTrait) -> Self {
|
||||
|
|
|
|||
13
pagetop/src/core/component/html_markup.rs
Normal file
13
pagetop/src/core/component/html_markup.rs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
use crate::html::{html, Markup};
|
||||
|
||||
pub struct HtmlMarkup {
|
||||
pub markup: Markup,
|
||||
}
|
||||
|
||||
impl Default for HtmlMarkup {
|
||||
fn default() -> Self {
|
||||
HtmlMarkup {
|
||||
markup: html! {},
|
||||
}
|
||||
}
|
||||
}
|
||||
19
pagetop/src/core/component/renderable.rs
Normal file
19
pagetop/src/core/component/renderable.rs
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
use crate::response::page::PageContext;
|
||||
|
||||
pub type IsRenderable = fn(&PageContext) -> bool;
|
||||
|
||||
pub struct Renderable {
|
||||
pub check: IsRenderable,
|
||||
}
|
||||
|
||||
impl Default for Renderable {
|
||||
fn default() -> Self {
|
||||
Renderable {
|
||||
check: render_always,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn render_always(_: &PageContext) -> bool {
|
||||
true
|
||||
}
|
||||
|
|
@ -15,4 +15,4 @@ mod identifier;
|
|||
pub use identifier::IdentifierValue;
|
||||
|
||||
mod classes;
|
||||
pub use classes::{ClassValue, Classes, ClassesOp};
|
||||
pub use classes::{Classes, ClassesOp};
|
||||
|
|
|
|||
|
|
@ -1,14 +1,16 @@
|
|||
use super::AssetsTrait;
|
||||
use crate::html::{html, Markup};
|
||||
|
||||
#[derive(PartialEq)]
|
||||
#[derive(Default, PartialEq)]
|
||||
pub enum ModeJS {
|
||||
Async,
|
||||
#[default]
|
||||
Defer,
|
||||
Normal,
|
||||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct JavaScript {
|
||||
source : &'static str,
|
||||
prefix : &'static str,
|
||||
|
|
@ -38,14 +40,10 @@ impl AssetsTrait for JavaScript {
|
|||
}
|
||||
|
||||
impl JavaScript {
|
||||
#[rustfmt::skip]
|
||||
pub fn located(source: &'static str) -> Self {
|
||||
JavaScript {
|
||||
source,
|
||||
prefix : "",
|
||||
version: "",
|
||||
weight : 0,
|
||||
mode : ModeJS::Defer,
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ pub enum TargetMedia {
|
|||
}
|
||||
|
||||
#[rustfmt::skip]
|
||||
#[derive(Default)]
|
||||
pub struct StyleSheet {
|
||||
source : &'static str,
|
||||
prefix : &'static str,
|
||||
|
|
@ -37,14 +38,10 @@ impl AssetsTrait for StyleSheet {
|
|||
}
|
||||
|
||||
impl StyleSheet {
|
||||
#[rustfmt::skip]
|
||||
pub fn located(source: &'static str) -> Self {
|
||||
StyleSheet {
|
||||
source,
|
||||
prefix : "",
|
||||
version: "",
|
||||
media : None,
|
||||
weight : 0,
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,20 +3,25 @@ pub struct AttributeValue(String);
|
|||
|
||||
impl AttributeValue {
|
||||
pub fn new() -> Self {
|
||||
AttributeValue("".to_owned())
|
||||
AttributeValue::default()
|
||||
}
|
||||
|
||||
pub fn new_with_value(value: &str) -> Self {
|
||||
let mut attr = Self::new();
|
||||
attr.with_value(value);
|
||||
attr
|
||||
// AttributeValue BUILDER.
|
||||
|
||||
pub fn with_value(mut self, value: &str) -> Self {
|
||||
self.alter_value(value);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn with_value(&mut self, value: &str) -> &mut Self {
|
||||
// AttributeValue ALTER.
|
||||
|
||||
pub fn alter_value(&mut self, value: &str) -> &mut Self {
|
||||
self.0 = value.trim().to_owned();
|
||||
self
|
||||
}
|
||||
|
||||
// AttributeValue GETTERS.
|
||||
|
||||
pub fn get(&self) -> Option<String> {
|
||||
if self.0.is_empty() {
|
||||
None
|
||||
|
|
|
|||
|
|
@ -1,14 +1,12 @@
|
|||
use crate::concat_string;
|
||||
|
||||
pub type ClassValue = &'static str;
|
||||
|
||||
pub enum ClassesOp {
|
||||
Add,
|
||||
AddAfter(ClassValue),
|
||||
AddBefore(ClassValue),
|
||||
AddAfter(&'static str),
|
||||
AddBefore(&'static str),
|
||||
AddFirst,
|
||||
Remove,
|
||||
Replace(ClassValue),
|
||||
Replace(&'static str),
|
||||
Reset,
|
||||
SetDefault,
|
||||
SetDefaultIfEmpty,
|
||||
|
|
@ -22,21 +20,20 @@ pub struct Classes {
|
|||
}
|
||||
|
||||
impl Classes {
|
||||
#[rustfmt::skip]
|
||||
pub fn new() -> Self {
|
||||
Classes {
|
||||
default: "".to_owned(),
|
||||
added : "".to_owned(),
|
||||
}
|
||||
Classes::default()
|
||||
}
|
||||
|
||||
pub fn new_with_default(default: &str) -> Self {
|
||||
let mut classes = Self::new();
|
||||
classes.alter(ClassesOp::SetDefault, default);
|
||||
classes
|
||||
// Classes BUILDER.
|
||||
|
||||
pub fn with_value(mut self, op: ClassesOp, classes: &str) -> Self {
|
||||
self.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
// Classes ALTER.
|
||||
|
||||
pub fn alter_value(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
let classes = classes.trim();
|
||||
match op {
|
||||
ClassesOp::Add => {
|
||||
|
|
@ -101,6 +98,8 @@ impl Classes {
|
|||
self
|
||||
}
|
||||
|
||||
// Classes GETTERS.
|
||||
|
||||
pub fn get(&self) -> Option<String> {
|
||||
if self.default.is_empty() && self.added.is_empty() {
|
||||
None
|
||||
|
|
|
|||
|
|
@ -5,9 +5,11 @@ pub struct Favicon(Vec<String>);
|
|||
|
||||
impl Favicon {
|
||||
pub fn new() -> Self {
|
||||
Favicon(Vec::new())
|
||||
Favicon::default()
|
||||
}
|
||||
|
||||
// Favicon BUILDER.
|
||||
|
||||
pub fn with_icon(self, image: &str) -> Self {
|
||||
self.add_item("icon", image, "", "")
|
||||
}
|
||||
|
|
@ -72,6 +74,8 @@ impl Favicon {
|
|||
self
|
||||
}
|
||||
|
||||
// Favicon RENDER.
|
||||
|
||||
pub(crate) fn render(&self) -> Markup {
|
||||
html! {
|
||||
@for item in &self.0 {
|
||||
|
|
|
|||
|
|
@ -3,20 +3,25 @@ pub struct IdentifierValue(String);
|
|||
|
||||
impl IdentifierValue {
|
||||
pub fn new() -> Self {
|
||||
IdentifierValue("".to_owned())
|
||||
IdentifierValue::default()
|
||||
}
|
||||
|
||||
pub fn new_with_value(value: &str) -> Self {
|
||||
let mut id = Self::new();
|
||||
id.with_value(value);
|
||||
id
|
||||
// IdentifierValue BUILDER.
|
||||
|
||||
pub fn with_value(mut self, value: &str) -> Self {
|
||||
self.alter_value(value);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn with_value(&mut self, value: &str) -> &Self {
|
||||
// IdentifierValue ALTER.
|
||||
|
||||
pub fn alter_value(&mut self, value: &str) -> &mut Self {
|
||||
self.0 = value.trim().replace(' ', "_");
|
||||
self
|
||||
}
|
||||
|
||||
// IdentifierValue GETTERS.
|
||||
|
||||
pub fn get(&self) -> Option<String> {
|
||||
if self.0.is_empty() {
|
||||
None
|
||||
|
|
|
|||
|
|
@ -23,9 +23,9 @@ pub struct PageContext {
|
|||
id_counter : usize,
|
||||
}
|
||||
|
||||
impl PageContext {
|
||||
impl Default for PageContext {
|
||||
#[rustfmt::skip]
|
||||
pub fn new() -> Self {
|
||||
fn default() -> Self {
|
||||
PageContext {
|
||||
theme : *DEFAULT_THEME,
|
||||
favicon : None,
|
||||
|
|
@ -37,6 +37,12 @@ impl PageContext {
|
|||
id_counter : 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl PageContext {
|
||||
pub fn new() -> Self {
|
||||
PageContext::default()
|
||||
}
|
||||
|
||||
pub fn alter(&mut self, op: PageOp) -> &mut Self {
|
||||
match op {
|
||||
|
|
|
|||
|
|
@ -53,26 +53,32 @@ pub struct Page {
|
|||
template : String,
|
||||
}
|
||||
|
||||
impl Page {
|
||||
impl Default for Page {
|
||||
#[rustfmt::skip]
|
||||
pub fn new() -> Self {
|
||||
fn default() -> Self {
|
||||
Page {
|
||||
context : PageContext::new(),
|
||||
language : match &*DEFAULT_LANGUAGE {
|
||||
Some(language) => AttributeValue::new_with_value(language),
|
||||
Some(language) => AttributeValue::new().with_value(language),
|
||||
_ => AttributeValue::new(),
|
||||
},
|
||||
direction : match &*DEFAULT_DIRECTION {
|
||||
Some(direction) => AttributeValue::new_with_value(direction),
|
||||
Some(direction) => AttributeValue::new().with_value(direction),
|
||||
_ => AttributeValue::new(),
|
||||
},
|
||||
title : AttributeValue::new(),
|
||||
description : AttributeValue::new(),
|
||||
body_classes: Classes::new_with_default("body"),
|
||||
body_classes: Classes::new().with_value(ClassesOp::SetDefault, "body"),
|
||||
regions : common_components(),
|
||||
template : "default".to_owned(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Page {
|
||||
pub fn new() -> Self {
|
||||
Page::default()
|
||||
}
|
||||
|
||||
// Page BUILDER.
|
||||
|
||||
|
|
@ -129,12 +135,12 @@ impl Page {
|
|||
}
|
||||
|
||||
pub fn alter_language(&mut self, language: &str) -> &mut Self {
|
||||
self.language.with_value(language);
|
||||
self.language.alter_value(language);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_direction(&mut self, dir: TextDirection) -> &mut Self {
|
||||
self.direction.with_value(match dir {
|
||||
self.direction.alter_value(match dir {
|
||||
TextDirection::Auto => "auto",
|
||||
TextDirection::LeftToRight => "ltr",
|
||||
TextDirection::RightToLeft => "rtl",
|
||||
|
|
@ -143,17 +149,17 @@ impl Page {
|
|||
}
|
||||
|
||||
pub fn alter_title(&mut self, title: &str) -> &mut Self {
|
||||
self.title.with_value(title);
|
||||
self.title.alter_value(title);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_description(&mut self, description: &str) -> &mut Self {
|
||||
self.description.with_value(description);
|
||||
self.description.alter_value(description);
|
||||
self
|
||||
}
|
||||
|
||||
pub fn alter_body_classes(&mut self, op: ClassesOp, classes: &str) -> &mut Self {
|
||||
self.body_classes.alter(op, classes);
|
||||
self.body_classes.alter_value(op, classes);
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use std::collections::HashMap;
|
|||
|
||||
include!(concat!(env!("OUT_DIR"), "/mdbook.rs"));
|
||||
|
||||
static MDBOOK: LazyStatic<HashMap<&'static str, Resource>> = LazyStatic::new(|| generate());
|
||||
static MDBOOK: LazyStatic<HashMap<&'static str, Resource>> = LazyStatic::new(generate);
|
||||
|
||||
pub_const_handler!(MODULE_MDBOOK);
|
||||
|
||||
|
|
@ -38,14 +38,8 @@ async fn mdbook_page(request: app::HttpRequest) -> ResultPage<Markup, FatalError
|
|||
Some(title) => title,
|
||||
_ => "Documentación",
|
||||
};
|
||||
let _print = match extract("Print", html) {
|
||||
Some("enabled") => true,
|
||||
_ => false,
|
||||
};
|
||||
let _mathjax = match extract("MathJax", html) {
|
||||
Some("supported") => true,
|
||||
_ => false,
|
||||
};
|
||||
let _print = matches!(extract("Print", html), Some("enabled"));
|
||||
let _mathjax = matches!(extract("MathJax", html), Some("supported"));
|
||||
let beginning = {
|
||||
let separator = "<!-- mdBook -->";
|
||||
match html.find(separator) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue