✨ Add new helper trait for components' classes
This commit is contained in:
parent
ed495121dd
commit
04286f1875
18 changed files with 294 additions and 341 deletions
|
|
@ -84,162 +84,96 @@ impl ThemeTrait for Bootsier {
|
||||||
fn before_prepare_component(&self, component: &mut dyn ComponentTrait, _cx: &mut Context) {
|
fn before_prepare_component(&self, component: &mut dyn ComponentTrait, _cx: &mut Context) {
|
||||||
match component.handle() {
|
match component.handle() {
|
||||||
COMPONENT_BASE_ICON => {
|
COMPONENT_BASE_ICON => {
|
||||||
if let Some(icon) = component_as_mut::<Icon>(component) {
|
if let Some(i) = component_as_mut::<Icon>(component) {
|
||||||
match icon.font_size() {
|
match i.font_size() {
|
||||||
FontSize::ExtraLarge => {
|
FontSize::ExtraLarge => {
|
||||||
icon.alter_classes(
|
i.replace_classes(i.font_size().to_string(), "fs-1");
|
||||||
ClassesOp::Replace(icon.font_size().to_string()),
|
|
||||||
"fs-1",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XxLarge => {
|
FontSize::XxLarge => {
|
||||||
icon.alter_classes(
|
i.replace_classes(i.font_size().to_string(), "fs-2");
|
||||||
ClassesOp::Replace(icon.font_size().to_string()),
|
|
||||||
"fs-2",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XLarge => {
|
FontSize::XLarge => {
|
||||||
icon.alter_classes(
|
i.replace_classes(i.font_size().to_string(), "fs-3");
|
||||||
ClassesOp::Replace(icon.font_size().to_string()),
|
|
||||||
"fs-3",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Large => {
|
FontSize::Large => {
|
||||||
icon.alter_classes(
|
i.replace_classes(i.font_size().to_string(), "fs-4");
|
||||||
ClassesOp::Replace(icon.font_size().to_string()),
|
|
||||||
"fs-4",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Medium => {
|
FontSize::Medium => {
|
||||||
icon.alter_classes(
|
i.replace_classes(i.font_size().to_string(), "fs-5");
|
||||||
ClassesOp::Replace(icon.font_size().to_string()),
|
|
||||||
"fs-5",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
COMPONENT_BASE_BUTTON => {
|
COMPONENT_BASE_BUTTON => {
|
||||||
if let Some(button) = component_as_mut::<Button>(component) {
|
if let Some(b) = component_as_mut::<Button>(component) {
|
||||||
match button.font_size() {
|
match b.font_size() {
|
||||||
FontSize::ExtraLarge => {
|
FontSize::ExtraLarge => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.font_size().to_string(), "fs-1");
|
||||||
ClassesOp::Replace(button.font_size().to_string()),
|
|
||||||
"fs-1",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XxLarge => {
|
FontSize::XxLarge => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.font_size().to_string(), "fs-2");
|
||||||
ClassesOp::Replace(button.font_size().to_string()),
|
|
||||||
"fs-2",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XLarge => {
|
FontSize::XLarge => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.font_size().to_string(), "fs-3");
|
||||||
ClassesOp::Replace(button.font_size().to_string()),
|
|
||||||
"fs-3",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Large => {
|
FontSize::Large => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.font_size().to_string(), "fs-4");
|
||||||
ClassesOp::Replace(button.font_size().to_string()),
|
|
||||||
"fs-4",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Medium => {
|
FontSize::Medium => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.font_size().to_string(), "fs-5");
|
||||||
ClassesOp::Replace(button.font_size().to_string()),
|
|
||||||
"fs-5",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
};
|
};
|
||||||
match button.button_type() {
|
match b.button_type() {
|
||||||
ButtonType::Link => {
|
ButtonType::Link => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.button_type().to_string(), "btn btn-link");
|
||||||
ClassesOp::Replace(button.button_type().to_string()),
|
|
||||||
"btn btn-link",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
ButtonType::Primary => {
|
ButtonType::Primary => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.button_type().to_string(), "btn btn-primary");
|
||||||
ClassesOp::Replace(button.button_type().to_string()),
|
|
||||||
"btn btn-primary",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
COMPONENT_BASE_HEADING => {
|
COMPONENT_BASE_HEADING => {
|
||||||
if let Some(heading) = component_as_mut::<Heading>(component) {
|
if let Some(h) = component_as_mut::<Heading>(component) {
|
||||||
match heading.display() {
|
match h.display() {
|
||||||
HeadingDisplay::ExtraLarge => {
|
HeadingDisplay::ExtraLarge => {
|
||||||
heading.alter_classes(
|
h.replace_classes(h.display().to_string(), "display-1");
|
||||||
ClassesOp::Replace(heading.display().to_string()),
|
|
||||||
"display-1",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
HeadingDisplay::XxLarge => {
|
HeadingDisplay::XxLarge => {
|
||||||
heading.alter_classes(
|
h.replace_classes(h.display().to_string(), "display-2");
|
||||||
ClassesOp::Replace(heading.display().to_string()),
|
|
||||||
"display-2",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
HeadingDisplay::XLarge => {
|
HeadingDisplay::XLarge => {
|
||||||
heading.alter_classes(
|
h.replace_classes(h.display().to_string(), "display-3");
|
||||||
ClassesOp::Replace(heading.display().to_string()),
|
|
||||||
"display-3",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
HeadingDisplay::Large => {
|
HeadingDisplay::Large => {
|
||||||
heading.alter_classes(
|
h.replace_classes(h.display().to_string(), "display-4");
|
||||||
ClassesOp::Replace(heading.display().to_string()),
|
|
||||||
"display-4",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
HeadingDisplay::Medium => {
|
HeadingDisplay::Medium => {
|
||||||
heading.alter_classes(
|
h.replace_classes(h.display().to_string(), "display-5");
|
||||||
ClassesOp::Replace(heading.display().to_string()),
|
|
||||||
"display-5",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
COMPONENT_BASE_PARAGRAPH => {
|
COMPONENT_BASE_PARAGRAPH => {
|
||||||
if let Some(paragraph) = component_as_mut::<Paragraph>(component) {
|
if let Some(p) = component_as_mut::<Paragraph>(component) {
|
||||||
match paragraph.font_size() {
|
match p.font_size() {
|
||||||
FontSize::ExtraLarge => {
|
FontSize::ExtraLarge => {
|
||||||
paragraph.alter_classes(
|
p.replace_classes(p.font_size().to_string(), "fs-1");
|
||||||
ClassesOp::Replace(paragraph.font_size().to_string()),
|
|
||||||
"fs-1",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XxLarge => {
|
FontSize::XxLarge => {
|
||||||
paragraph.alter_classes(
|
p.replace_classes(p.font_size().to_string(), "fs-2");
|
||||||
ClassesOp::Replace(paragraph.font_size().to_string()),
|
|
||||||
"fs-2",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XLarge => {
|
FontSize::XLarge => {
|
||||||
paragraph.alter_classes(
|
p.replace_classes(p.font_size().to_string(), "fs-3");
|
||||||
ClassesOp::Replace(paragraph.font_size().to_string()),
|
|
||||||
"fs-3",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Large => {
|
FontSize::Large => {
|
||||||
paragraph.alter_classes(
|
p.replace_classes(p.font_size().to_string(), "fs-4");
|
||||||
ClassesOp::Replace(paragraph.font_size().to_string()),
|
|
||||||
"fs-4",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Medium => {
|
FontSize::Medium => {
|
||||||
paragraph.alter_classes(
|
p.replace_classes(p.font_size().to_string(), "fs-5");
|
||||||
ClassesOp::Replace(paragraph.font_size().to_string()),
|
|
||||||
"fs-5",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -33,137 +33,85 @@ impl ThemeTrait for Bulmix {
|
||||||
fn before_prepare_component(&self, component: &mut dyn ComponentTrait, _cx: &mut Context) {
|
fn before_prepare_component(&self, component: &mut dyn ComponentTrait, _cx: &mut Context) {
|
||||||
match component.handle() {
|
match component.handle() {
|
||||||
COMPONENT_BASE_ICON => {
|
COMPONENT_BASE_ICON => {
|
||||||
if let Some(icon) = component_as_mut::<Icon>(component) {
|
if let Some(i) = component_as_mut::<Icon>(component) {
|
||||||
match icon.font_size() {
|
match i.font_size() {
|
||||||
FontSize::ExtraLarge => {
|
FontSize::ExtraLarge => {
|
||||||
icon.alter_classes(
|
i.replace_classes(i.font_size().to_string(), "is-size-1");
|
||||||
ClassesOp::Replace(icon.font_size().to_string()),
|
|
||||||
"is-size-1",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XxLarge => {
|
FontSize::XxLarge => {
|
||||||
icon.alter_classes(
|
i.replace_classes(i.font_size().to_string(), "is-size-2");
|
||||||
ClassesOp::Replace(icon.font_size().to_string()),
|
|
||||||
"is-size-2",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XLarge => {
|
FontSize::XLarge => {
|
||||||
icon.alter_classes(
|
i.replace_classes(i.font_size().to_string(), "is-size-3");
|
||||||
ClassesOp::Replace(icon.font_size().to_string()),
|
|
||||||
"is-size-3",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Large => {
|
FontSize::Large => {
|
||||||
icon.alter_classes(
|
i.replace_classes(i.font_size().to_string(), "is-size-4");
|
||||||
ClassesOp::Replace(icon.font_size().to_string()),
|
|
||||||
"is-size-4",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Medium => {
|
FontSize::Medium => {
|
||||||
icon.alter_classes(
|
i.replace_classes(i.font_size().to_string(), "is-size-5");
|
||||||
ClassesOp::Replace(icon.font_size().to_string()),
|
|
||||||
"is-size-5",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
COMPONENT_BASE_BUTTON => {
|
COMPONENT_BASE_BUTTON => {
|
||||||
if let Some(button) = component_as_mut::<Button>(component) {
|
if let Some(b) = component_as_mut::<Button>(component) {
|
||||||
match button.font_size() {
|
match b.font_size() {
|
||||||
FontSize::ExtraLarge => {
|
FontSize::ExtraLarge => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.font_size().to_string(), "is-size-1");
|
||||||
ClassesOp::Replace(button.font_size().to_string()),
|
|
||||||
"is-size-1",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XxLarge => {
|
FontSize::XxLarge => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.font_size().to_string(), "is-size-2");
|
||||||
ClassesOp::Replace(button.font_size().to_string()),
|
|
||||||
"is-size-2",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XLarge => {
|
FontSize::XLarge => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.font_size().to_string(), "is-size-3");
|
||||||
ClassesOp::Replace(button.font_size().to_string()),
|
|
||||||
"is-size-3",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Large => {
|
FontSize::Large => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.font_size().to_string(), "is-size-4");
|
||||||
ClassesOp::Replace(button.font_size().to_string()),
|
|
||||||
"is-size-4",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Medium => {
|
FontSize::Medium => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.font_size().to_string(), "is-size-5");
|
||||||
ClassesOp::Replace(button.font_size().to_string()),
|
|
||||||
"is-size-5",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
};
|
};
|
||||||
match button.button_type() {
|
match b.button_type() {
|
||||||
ButtonType::Link => {
|
ButtonType::Link => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.button_type().to_string(), "button is-text");
|
||||||
ClassesOp::Replace(button.button_type().to_string()),
|
|
||||||
"button is-text",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
ButtonType::Primary => {
|
ButtonType::Primary => {
|
||||||
button.alter_classes(
|
b.replace_classes(b.button_type().to_string(), "button is-primary");
|
||||||
ClassesOp::Replace(button.button_type().to_string()),
|
|
||||||
"button is-primary",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
COMPONENT_BASE_HEADING => {
|
COMPONENT_BASE_HEADING => {
|
||||||
if let Some(heading) = component_as_mut::<Heading>(component) {
|
if let Some(h) = component_as_mut::<Heading>(component) {
|
||||||
match heading.display() {
|
match h.display() {
|
||||||
HeadingDisplay::Subtitle => heading.alter_classes(
|
HeadingDisplay::Subtitle => {
|
||||||
ClassesOp::Replace(heading.display().to_string()),
|
h.replace_classes(h.display().to_string(), "subtitle")
|
||||||
"subtitle",
|
}
|
||||||
),
|
_ => h.add_classes("title"),
|
||||||
_ => heading.alter_classes(ClassesOp::Add, "title"),
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
COMPONENT_BASE_PARAGRAPH => {
|
COMPONENT_BASE_PARAGRAPH => {
|
||||||
if let Some(paragraph) = component_as_mut::<Paragraph>(component) {
|
if let Some(p) = component_as_mut::<Paragraph>(component) {
|
||||||
paragraph.alter_classes(ClassesOp::Add, "block");
|
p.add_classes("block");
|
||||||
match paragraph.font_size() {
|
match p.font_size() {
|
||||||
FontSize::ExtraLarge => {
|
FontSize::ExtraLarge => {
|
||||||
paragraph.alter_classes(
|
p.replace_classes(p.font_size().to_string(), "is-size-1");
|
||||||
ClassesOp::Replace(paragraph.font_size().to_string()),
|
|
||||||
"is-size-1",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XxLarge => {
|
FontSize::XxLarge => {
|
||||||
paragraph.alter_classes(
|
p.replace_classes(p.font_size().to_string(), "is-size-2");
|
||||||
ClassesOp::Replace(paragraph.font_size().to_string()),
|
|
||||||
"is-size-2",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::XLarge => {
|
FontSize::XLarge => {
|
||||||
paragraph.alter_classes(
|
p.replace_classes(p.font_size().to_string(), "is-size-3");
|
||||||
ClassesOp::Replace(paragraph.font_size().to_string()),
|
|
||||||
"is-size-3",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Large => {
|
FontSize::Large => {
|
||||||
paragraph.alter_classes(
|
p.replace_classes(p.font_size().to_string(), "is-size-4");
|
||||||
ClassesOp::Replace(paragraph.font_size().to_string()),
|
|
||||||
"is-size-4",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
FontSize::Medium => {
|
FontSize::Medium => {
|
||||||
paragraph.alter_classes(
|
p.replace_classes(p.font_size().to_string(), "is-size-5");
|
||||||
ClassesOp::Replace(paragraph.font_size().to_string()),
|
|
||||||
"is-size-5",
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
};
|
};
|
||||||
|
|
@ -180,12 +128,10 @@ impl ThemeTrait for Bulmix {
|
||||||
) -> Option<Markup> {
|
) -> Option<Markup> {
|
||||||
match component.handle() {
|
match component.handle() {
|
||||||
COMPONENT_BASE_ICON => {
|
COMPONENT_BASE_ICON => {
|
||||||
if let Some(icon) = component_as_ref::<Icon>(component) {
|
if let Some(i) = component_as_ref::<Icon>(component) {
|
||||||
return match icon.icon_name().get() {
|
return match i.icon_name().get() {
|
||||||
None => None,
|
None => None,
|
||||||
_ => {
|
_ => Some(html! { span class="icon" { i class=[i.classes().get()] {} } }),
|
||||||
Some(html! { span class="icon" { i class=[icon.classes().get()] {} } })
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
None
|
None
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ impl ComponentTrait for Block {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
||||||
self.classes.alter_value(ClassesOp::AddFirst, "pt-block");
|
self.prepend_classes("pt-block");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
|
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
|
||||||
|
|
@ -51,6 +51,17 @@ impl ComponentTrait for Block {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Block {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Block {
|
impl Block {
|
||||||
// Block BUILDER.
|
// Block BUILDER.
|
||||||
|
|
||||||
|
|
@ -72,12 +83,6 @@ impl Block {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_title(&mut self, title: L10n) -> &mut Self {
|
pub fn alter_title(&mut self, title: L10n) -> &mut Self {
|
||||||
self.title.alter_value(title);
|
self.title.alter_value(title);
|
||||||
|
|
@ -98,10 +103,6 @@ impl Block {
|
||||||
|
|
||||||
// Block GETTERS.
|
// Block GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn title(&self) -> &OptionTranslated {
|
pub fn title(&self) -> &OptionTranslated {
|
||||||
&self.title
|
&self.title
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,9 +63,8 @@ impl ComponentTrait for Button {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
||||||
self.classes.alter_value(
|
self.prepend_classes(
|
||||||
ClassesOp::AddFirst,
|
[self.button_type().to_string(), self.font_size().to_string()].join(" "),
|
||||||
[self.button_type.to_string(), self.font_size.to_string()].join(" "),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -93,6 +92,17 @@ impl ComponentTrait for Button {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Button {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Button {
|
impl Button {
|
||||||
pub fn link(href: impl Into<String>, html: L10n) -> Self {
|
pub fn link(href: impl Into<String>, html: L10n) -> Self {
|
||||||
Button::default()
|
Button::default()
|
||||||
|
|
@ -128,12 +138,6 @@ impl Button {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_type(&mut self, button_type: ButtonType) -> &mut Self {
|
pub fn alter_type(&mut self, button_type: ButtonType) -> &mut Self {
|
||||||
self.button_type = button_type;
|
self.button_type = button_type;
|
||||||
|
|
@ -178,10 +182,6 @@ impl Button {
|
||||||
|
|
||||||
// Button GETTERS.
|
// Button GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn button_type(&self) -> &ButtonType {
|
pub fn button_type(&self) -> &ButtonType {
|
||||||
&self.button_type
|
&self.button_type
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,7 @@ impl ComponentTrait for Container {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn setup_before_prepare(&mut self, cx: &mut Context) {
|
fn setup_before_prepare(&mut self, cx: &mut Context) {
|
||||||
self.classes.alter_value(
|
self.prepend_classes(
|
||||||
ClassesOp::AddFirst,
|
|
||||||
[
|
[
|
||||||
self.direction.to_string(),
|
self.direction.to_string(),
|
||||||
self.wrap_align.to_string(),
|
self.wrap_align.to_string(),
|
||||||
|
|
@ -63,6 +62,17 @@ impl ComponentTrait for Container {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Container {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Container {
|
impl Container {
|
||||||
// Container BUILDER.
|
// Container BUILDER.
|
||||||
|
|
||||||
|
|
@ -84,12 +94,6 @@ impl Container {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
pub fn add_item(mut self, item: flex::Item) -> Self {
|
pub fn add_item(mut self, item: flex::Item) -> Self {
|
||||||
self.items.alter_value(ArcTypedOp::Add(ArcTypedComponent::new(item)));
|
self.items.alter_value(ArcTypedOp::Add(ArcTypedComponent::new(item)));
|
||||||
|
|
@ -134,10 +138,6 @@ impl Container {
|
||||||
|
|
||||||
// Container GETTERS.
|
// Container GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn items(&self) -> &TypedComponents<flex::Item> {
|
pub fn items(&self) -> &TypedComponents<flex::Item> {
|
||||||
&self.items
|
&self.items
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,10 +35,8 @@ impl ComponentTrait for Item {
|
||||||
(self.renderable.check)(cx)
|
(self.renderable.check)(cx)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
||||||
self.item_classes.alter_value(
|
self.prepend_classes(
|
||||||
ClassesOp::AddFirst,
|
|
||||||
[
|
[
|
||||||
"pt-flex__item".to_owned(),
|
"pt-flex__item".to_owned(),
|
||||||
self.item_grow.to_string(),
|
self.item_grow.to_string(),
|
||||||
|
|
@ -49,7 +47,8 @@ impl ComponentTrait for Item {
|
||||||
]
|
]
|
||||||
.join(" "),
|
.join(" "),
|
||||||
);
|
);
|
||||||
self.inner_classes.alter_value(ClassesOp::AddFirst, "pt-flex__item-inner");
|
self.inner_classes
|
||||||
|
.alter_value(ClassesOp::Prepend, "pt-flex__item-inner");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
|
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
|
||||||
|
|
@ -58,7 +57,7 @@ impl ComponentTrait for Item {
|
||||||
_ => Some(concat_string!("order: ", self.weight().to_string(), ";")),
|
_ => Some(concat_string!("order: ", self.weight().to_string(), ";")),
|
||||||
};
|
};
|
||||||
PrepareMarkup::With(html! {
|
PrepareMarkup::With(html! {
|
||||||
div id=[self.id()] class=[self.item_classes().get()] style=[order] {
|
div id=[self.id()] class=[self.classes().get()] style=[order] {
|
||||||
div class=[self.inner_classes().get()] {
|
div class=[self.inner_classes().get()] {
|
||||||
(self.components().render(cx))
|
(self.components().render(cx))
|
||||||
}
|
}
|
||||||
|
|
@ -67,6 +66,17 @@ impl ComponentTrait for Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Item {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.item_classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.item_classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Item {
|
impl Item {
|
||||||
// Item BUILDER.
|
// Item BUILDER.
|
||||||
|
|
||||||
|
|
@ -88,12 +98,6 @@ impl Item {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_item_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.item_classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_inner_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
pub fn alter_inner_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
self.inner_classes.alter_value(op, classes);
|
self.inner_classes.alter_value(op, classes);
|
||||||
|
|
@ -144,10 +148,6 @@ impl Item {
|
||||||
|
|
||||||
// Item GETTERS.
|
// Item GETTERS.
|
||||||
|
|
||||||
pub fn item_classes(&self) -> &OptionClasses {
|
|
||||||
&self.item_classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn inner_classes(&self) -> &OptionClasses {
|
pub fn inner_classes(&self) -> &OptionClasses {
|
||||||
&self.inner_classes
|
&self.inner_classes
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,9 +48,9 @@ impl ComponentTrait for Button {
|
||||||
(self.renderable.check)(cx)
|
(self.renderable.check)(cx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[rustfmt::skip]
|
||||||
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
||||||
self.classes.alter_value(
|
self.prepend_classes(
|
||||||
ClassesOp::AddFirst,
|
|
||||||
concat_string!("btn btn-primary form-", self.button_type.to_string()),
|
concat_string!("btn btn-primary form-", self.button_type.to_string()),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -73,6 +73,17 @@ impl ComponentTrait for Button {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Button {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Button {
|
impl Button {
|
||||||
pub fn with(value: L10n) -> Self {
|
pub fn with(value: L10n) -> Self {
|
||||||
Button::default().with_value(value)
|
Button::default().with_value(value)
|
||||||
|
|
@ -104,12 +115,6 @@ impl Button {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_name(&mut self, name: &str) -> &mut Self {
|
pub fn alter_name(&mut self, name: &str) -> &mut Self {
|
||||||
self.name.alter_value(name);
|
self.name.alter_value(name);
|
||||||
|
|
@ -148,10 +153,6 @@ impl Button {
|
||||||
|
|
||||||
// Button GETTERS.
|
// Button GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn button_type(&self) -> &ButtonType {
|
pub fn button_type(&self) -> &ButtonType {
|
||||||
&self.button_type
|
&self.button_type
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,17 @@ impl ComponentTrait for Date {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Date {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Date {
|
impl Date {
|
||||||
// Date BUILDER.
|
// Date BUILDER.
|
||||||
|
|
||||||
|
|
@ -83,12 +94,6 @@ impl Date {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_name(&mut self, name: &str) -> &mut Self {
|
pub fn alter_name(&mut self, name: &str) -> &mut Self {
|
||||||
self.name.alter_value(name);
|
self.name.alter_value(name);
|
||||||
|
|
@ -172,10 +177,6 @@ impl Date {
|
||||||
|
|
||||||
// Date GETTERS.
|
// Date GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn name(&self) -> &OptionString {
|
pub fn name(&self) -> &OptionString {
|
||||||
&self.name
|
&self.name
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,17 @@ impl ComponentTrait for Form {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Form {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Form {
|
impl Form {
|
||||||
// Form BUILDER.
|
// Form BUILDER.
|
||||||
|
|
||||||
|
|
@ -82,12 +93,6 @@ impl Form {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_action(&mut self, action: &str) -> &mut Self {
|
pub fn alter_action(&mut self, action: &str) -> &mut Self {
|
||||||
self.action.alter_value(action);
|
self.action.alter_value(action);
|
||||||
|
|
@ -126,10 +131,6 @@ impl Form {
|
||||||
|
|
||||||
// Form GETTERS.
|
// Form GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn action(&self) -> &OptionString {
|
pub fn action(&self) -> &OptionString {
|
||||||
&self.action
|
&self.action
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,17 @@ impl ComponentTrait for Input {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Input {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Input {
|
impl Input {
|
||||||
pub fn textfield() -> Self {
|
pub fn textfield() -> Self {
|
||||||
Input::default()
|
Input::default()
|
||||||
|
|
@ -162,18 +173,12 @@ impl Input {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_name(&mut self, name: &str) -> &mut Self {
|
pub fn alter_name(&mut self, name: &str) -> &mut Self {
|
||||||
if let Some(previous) = self.name.get() {
|
if let Some(previous) = self.name.get() {
|
||||||
self.alter_classes(ClassesOp::Remove, concat_string!("form-item-", previous));
|
self.remove_classes(concat_string!("form-item-", previous));
|
||||||
}
|
}
|
||||||
self.alter_classes(ClassesOp::Add, concat_string!("form-item-", name));
|
self.add_classes(concat_string!("form-item-", name));
|
||||||
self.name.alter_value(name);
|
self.name.alter_value(name);
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
@ -273,10 +278,6 @@ impl Input {
|
||||||
|
|
||||||
// Input GETTERS.
|
// Input GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn input_type(&self) -> &InputType {
|
pub fn input_type(&self) -> &InputType {
|
||||||
&self.input_type
|
&self.input_type
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ impl ComponentTrait for Heading {
|
||||||
|
|
||||||
#[rustfmt::skip]
|
#[rustfmt::skip]
|
||||||
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
||||||
self.classes.alter_value(ClassesOp::Add, self.display().to_string());
|
self.add_classes(self.display().to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
|
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
|
||||||
|
|
@ -89,6 +89,17 @@ impl ComponentTrait for Heading {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Heading {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Heading {
|
impl Heading {
|
||||||
pub fn h1(text: L10n) -> Self {
|
pub fn h1(text: L10n) -> Self {
|
||||||
Heading::default()
|
Heading::default()
|
||||||
|
|
@ -146,12 +157,6 @@ impl Heading {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_heading_type(&mut self, heading_type: HeadingType) -> &mut Self {
|
pub fn alter_heading_type(&mut self, heading_type: HeadingType) -> &mut Self {
|
||||||
self.heading_type = heading_type;
|
self.heading_type = heading_type;
|
||||||
|
|
@ -172,10 +177,6 @@ impl Heading {
|
||||||
|
|
||||||
// Paragraph GETTERS.
|
// Paragraph GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn heading_type(&self) -> &HeadingType {
|
pub fn heading_type(&self) -> &HeadingType {
|
||||||
&self.heading_type
|
&self.heading_type
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,11 +25,11 @@ impl ComponentTrait for Icon {
|
||||||
(self.renderable.check)(cx)
|
(self.renderable.check)(cx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[rustfmt::skip]
|
||||||
fn setup_before_prepare(&mut self, cx: &mut Context) {
|
fn setup_before_prepare(&mut self, cx: &mut Context) {
|
||||||
if let Some(icon_name) = self.icon_name.get() {
|
if let Some(icon_name) = self.icon_name.get() {
|
||||||
self.classes.alter_value(
|
self.prepend_classes(
|
||||||
ClassesOp::AddFirst,
|
concat_string!("bi-", icon_name, " ", self.font_size().to_string()),
|
||||||
concat_string!("bi-", icon_name, " ", self.font_size.to_string()),
|
|
||||||
);
|
);
|
||||||
cx.set_param::<bool>(PARAM_BASE_INCLUDE_ICONS, true);
|
cx.set_param::<bool>(PARAM_BASE_INCLUDE_ICONS, true);
|
||||||
}
|
}
|
||||||
|
|
@ -43,6 +43,17 @@ impl ComponentTrait for Icon {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Icon {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Icon {
|
impl Icon {
|
||||||
pub fn with(icon_name: impl Into<String>) -> Self {
|
pub fn with(icon_name: impl Into<String>) -> Self {
|
||||||
Icon::default().with_icon_name(icon_name)
|
Icon::default().with_icon_name(icon_name)
|
||||||
|
|
@ -62,12 +73,6 @@ impl Icon {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_icon_name(&mut self, name: impl Into<String>) -> &mut Self {
|
pub fn alter_icon_name(&mut self, name: impl Into<String>) -> &mut Self {
|
||||||
self.icon_name.alter_value(name);
|
self.icon_name.alter_value(name);
|
||||||
|
|
@ -82,10 +87,6 @@ impl Icon {
|
||||||
|
|
||||||
// Icon GETTERS.
|
// Icon GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn icon_name(&self) -> &OptionString {
|
pub fn icon_name(&self) -> &OptionString {
|
||||||
&self.icon_name
|
&self.icon_name
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,17 @@ impl ComponentTrait for Image {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Image {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Image {
|
impl Image {
|
||||||
pub fn with(source: &str) -> Self {
|
pub fn with(source: &str) -> Self {
|
||||||
Image::default()
|
Image::default()
|
||||||
|
|
@ -102,12 +113,6 @@ impl Image {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_source(&mut self, source: &str) -> &mut Self {
|
pub fn alter_source(&mut self, source: &str) -> &mut Self {
|
||||||
self.source.alter_value(source);
|
self.source.alter_value(source);
|
||||||
|
|
@ -122,10 +127,6 @@ impl Image {
|
||||||
|
|
||||||
// Image GETTERS.
|
// Image GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn source(&self) -> &OptionString {
|
pub fn source(&self) -> &OptionString {
|
||||||
&self.source
|
&self.source
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,9 +30,8 @@ impl ComponentTrait for Paragraph {
|
||||||
(self.renderable.check)(cx)
|
(self.renderable.check)(cx)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
fn setup_before_prepare(&mut self, _cx: &mut Context) {
|
||||||
self.classes.alter_value(ClassesOp::AddFirst, self.font_size.to_string());
|
self.prepend_classes(self.font_size().to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
|
fn prepare_component(&self, cx: &mut Context) -> PrepareMarkup {
|
||||||
|
|
@ -47,6 +46,17 @@ impl ComponentTrait for Paragraph {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Paragraph {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Paragraph {
|
impl Paragraph {
|
||||||
pub fn with(component: impl ComponentTrait) -> Self {
|
pub fn with(component: impl ComponentTrait) -> Self {
|
||||||
Paragraph::default().add_component(component)
|
Paragraph::default().add_component(component)
|
||||||
|
|
@ -76,12 +86,6 @@ impl Paragraph {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_font_size(&mut self, font_size: FontSize) -> &mut Self {
|
pub fn alter_font_size(&mut self, font_size: FontSize) -> &mut Self {
|
||||||
self.font_size = font_size;
|
self.font_size = font_size;
|
||||||
|
|
@ -108,10 +112,6 @@ impl Paragraph {
|
||||||
|
|
||||||
// Paragraph GETTERS.
|
// Paragraph GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn font_size(&self) -> &FontSize {
|
pub fn font_size(&self) -> &FontSize {
|
||||||
&self.font_size
|
&self.font_size
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,17 @@ impl ComponentTrait for Wrapper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl ComponentClasses for Wrapper {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.classes.alter_value(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses {
|
||||||
|
&self.classes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl Wrapper {
|
impl Wrapper {
|
||||||
pub fn header() -> Self {
|
pub fn header() -> Self {
|
||||||
let mut c = Wrapper::default()
|
let mut c = Wrapper::default()
|
||||||
|
|
@ -136,12 +147,6 @@ impl Wrapper {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fn_builder]
|
|
||||||
pub fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
|
||||||
self.classes.alter_value(op, classes);
|
|
||||||
self
|
|
||||||
}
|
|
||||||
|
|
||||||
#[fn_builder]
|
#[fn_builder]
|
||||||
pub fn alter_inner_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
pub fn alter_inner_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self {
|
||||||
self.inner_classes.alter_value(op, classes);
|
self.inner_classes.alter_value(op, classes);
|
||||||
|
|
@ -168,10 +173,6 @@ impl Wrapper {
|
||||||
|
|
||||||
// Wrapper GETTERS.
|
// Wrapper GETTERS.
|
||||||
|
|
||||||
pub fn classes(&self) -> &OptionClasses {
|
|
||||||
&self.classes
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn inner_classes(&self) -> &OptionClasses {
|
pub fn inner_classes(&self) -> &OptionClasses {
|
||||||
&self.inner_classes
|
&self.inner_classes
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@ pub use renderable::{FnIsRenderable, Renderable};
|
||||||
mod definition;
|
mod definition;
|
||||||
pub use definition::{component_as_mut, component_as_ref, ComponentBase, ComponentTrait};
|
pub use definition::{component_as_mut, component_as_ref, ComponentBase, ComponentTrait};
|
||||||
|
|
||||||
|
mod classes;
|
||||||
|
pub use classes::{ComponentClasses, ComponentClassesOp};
|
||||||
|
|
||||||
mod arc_any;
|
mod arc_any;
|
||||||
pub use arc_any::AnyComponents;
|
pub use arc_any::AnyComponents;
|
||||||
pub use arc_any::{ArcAnyComponent, ArcAnyOp};
|
pub use arc_any::{ArcAnyComponent, ArcAnyOp};
|
||||||
|
|
|
||||||
60
pagetop/src/core/component/classes.rs
Normal file
60
pagetop/src/core/component/classes.rs
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
use crate::html::{ClassesOp, OptionClasses};
|
||||||
|
|
||||||
|
pub trait ComponentClassesOp {
|
||||||
|
fn with_classes(self, op: ClassesOp, classes: impl Into<String>) -> Self;
|
||||||
|
|
||||||
|
fn add_classes(&mut self, classes: impl Into<String>) -> &mut Self;
|
||||||
|
|
||||||
|
fn prepend_classes(&mut self, classes: impl Into<String>) -> &mut Self;
|
||||||
|
|
||||||
|
fn remove_classes(&mut self, classes: impl Into<String>) -> &mut Self;
|
||||||
|
|
||||||
|
fn replace_classes(&mut self, rep: impl Into<String>, classes: impl Into<String>) -> &mut Self;
|
||||||
|
|
||||||
|
fn toggle_classes(&mut self, classes: impl Into<String>) -> &mut Self;
|
||||||
|
|
||||||
|
fn set_classes(&mut self, classes: impl Into<String>) -> &mut Self;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait ComponentClasses: ComponentClassesOp {
|
||||||
|
fn alter_classes(&mut self, op: ClassesOp, classes: impl Into<String>) -> &mut Self;
|
||||||
|
|
||||||
|
fn classes(&self) -> &OptionClasses;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<C: ComponentClasses> ComponentClassesOp for C {
|
||||||
|
fn with_classes(mut self, op: ClassesOp, classes: impl Into<String>) -> Self {
|
||||||
|
self.alter_classes(op, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn add_classes(&mut self, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.alter_classes(ClassesOp::Add, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn prepend_classes(&mut self, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.alter_classes(ClassesOp::Prepend, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn remove_classes(&mut self, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.alter_classes(ClassesOp::Remove, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn replace_classes(&mut self, rep: impl Into<String>, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.alter_classes(ClassesOp::Replace(rep.into()), classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn toggle_classes(&mut self, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.alter_classes(ClassesOp::Toggle, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
|
fn set_classes(&mut self, classes: impl Into<String>) -> &mut Self {
|
||||||
|
self.alter_classes(ClassesOp::Set, classes);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -13,11 +13,11 @@ use crate::{fn_builder, SmartDefault};
|
||||||
|
|
||||||
pub enum ClassesOp {
|
pub enum ClassesOp {
|
||||||
Add,
|
Add,
|
||||||
AddFirst,
|
Prepend,
|
||||||
Remove,
|
Remove,
|
||||||
Replace(String),
|
Replace(String),
|
||||||
Toggle,
|
Toggle,
|
||||||
Clear,
|
Set,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(SmartDefault)]
|
#[derive(SmartDefault)]
|
||||||
|
|
@ -25,7 +25,7 @@ pub struct OptionClasses(Vec<String>);
|
||||||
|
|
||||||
impl OptionClasses {
|
impl OptionClasses {
|
||||||
pub fn new(classes: impl Into<String>) -> Self {
|
pub fn new(classes: impl Into<String>) -> Self {
|
||||||
OptionClasses::default().with_value(ClassesOp::AddFirst, classes)
|
OptionClasses::default().with_value(ClassesOp::Prepend, classes)
|
||||||
}
|
}
|
||||||
|
|
||||||
// OptionClasses BUILDER.
|
// OptionClasses BUILDER.
|
||||||
|
|
@ -39,7 +39,7 @@ impl OptionClasses {
|
||||||
ClassesOp::Add => {
|
ClassesOp::Add => {
|
||||||
self.add(&classes, self.0.len());
|
self.add(&classes, self.0.len());
|
||||||
}
|
}
|
||||||
ClassesOp::AddFirst => {
|
ClassesOp::Prepend => {
|
||||||
self.add(&classes, 0);
|
self.add(&classes, 0);
|
||||||
}
|
}
|
||||||
ClassesOp::Remove => {
|
ClassesOp::Remove => {
|
||||||
|
|
@ -71,8 +71,9 @@ impl OptionClasses {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ClassesOp::Clear => {
|
ClassesOp::Set => {
|
||||||
self.0.clear();
|
self.0.clear();
|
||||||
|
self.add(&classes, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self
|
self
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue