🔥 Remove unnecessary SetDefault in OptionClasses
This commit is contained in:
parent
556a160c16
commit
6dd9eb28f5
12 changed files with 52 additions and 40 deletions
|
|
@ -131,18 +131,24 @@ impl ThemeTrait for Bootsier {
|
|||
}
|
||||
COMPONENT_BASE_HEADING => {
|
||||
let h = component_as_mut::<Heading>(component);
|
||||
let original = h.display().to_string();
|
||||
h.alter_classes(
|
||||
ClassesOp::SetDefault,
|
||||
match h.display() {
|
||||
HeadingDisplay::ExtraLarge => "display-1",
|
||||
HeadingDisplay::XxLarge => "display-2",
|
||||
HeadingDisplay::XLarge => "display-3",
|
||||
HeadingDisplay::Large => "display-4",
|
||||
HeadingDisplay::Medium => "display-5",
|
||||
_ => original.as_str(),
|
||||
},
|
||||
);
|
||||
HeadingDisplay::ExtraLarge => {
|
||||
h.alter_classes(ClassesOp::Replace(h.display().to_string()), "display-1");
|
||||
}
|
||||
HeadingDisplay::XxLarge => {
|
||||
h.alter_classes(ClassesOp::Replace(h.display().to_string()), "display-2");
|
||||
}
|
||||
HeadingDisplay::XLarge => {
|
||||
h.alter_classes(ClassesOp::Replace(h.display().to_string()), "display-3");
|
||||
}
|
||||
HeadingDisplay::Large => {
|
||||
h.alter_classes(ClassesOp::Replace(h.display().to_string()), "display-4");
|
||||
}
|
||||
HeadingDisplay::Medium => {
|
||||
h.alter_classes(ClassesOp::Replace(h.display().to_string()), "display-5");
|
||||
}
|
||||
_ => {}
|
||||
};
|
||||
}
|
||||
COMPONENT_BASE_PARAGRAPH => {
|
||||
let p = component_as_mut::<Paragraph>(component);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ pub struct Block {
|
|||
|
||||
impl ComponentTrait for Block {
|
||||
fn new() -> Self {
|
||||
Block::default().with_classes(ClassesOp::SetDefault, "block")
|
||||
Block::default().with_classes(ClassesOp::AddDefault, "block")
|
||||
}
|
||||
|
||||
fn handle(&self) -> Handle {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ pub struct Container {
|
|||
impl ComponentTrait for Container {
|
||||
fn new() -> Self {
|
||||
Container::default()
|
||||
.with_classes(ClassesOp::SetDefault, flex::Direction::Default.to_string())
|
||||
.with_classes(ClassesOp::AddDefault, flex::Direction::Default.to_string())
|
||||
}
|
||||
|
||||
fn handle(&self) -> Handle {
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ pub struct Item {
|
|||
impl ComponentTrait for Item {
|
||||
fn new() -> Self {
|
||||
Item::default()
|
||||
.with_item_classes(ClassesOp::SetDefault, "pt-flex__item")
|
||||
.with_inner_classes(ClassesOp::SetDefault, "pt-flex__item-inner")
|
||||
.with_item_classes(ClassesOp::AddDefault, "pt-flex__item")
|
||||
.with_inner_classes(ClassesOp::AddDefault, "pt-flex__item-inner")
|
||||
}
|
||||
|
||||
fn handle(&self) -> Handle {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ pub struct Button {
|
|||
|
||||
impl ComponentTrait for Button {
|
||||
fn new() -> Self {
|
||||
Button::default().with_classes(ClassesOp::SetDefault, "btn btn-primary form-button")
|
||||
Button::default().with_classes(ClassesOp::AddDefault, "btn btn-primary form-button")
|
||||
}
|
||||
|
||||
fn handle(&self) -> Handle {
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ pub struct Date {
|
|||
|
||||
impl ComponentTrait for Date {
|
||||
fn new() -> Self {
|
||||
Date::default().with_classes(ClassesOp::SetDefault, "form-item form-type-date")
|
||||
Date::default().with_classes(ClassesOp::AddDefault, "form-item form-type-date")
|
||||
}
|
||||
|
||||
fn handle(&self) -> Handle {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ pub struct Form {
|
|||
impl ComponentTrait for Form {
|
||||
fn new() -> Self {
|
||||
Form::default()
|
||||
.with_classes(ClassesOp::SetDefault, "form")
|
||||
.with_classes(ClassesOp::AddDefault, "form")
|
||||
.with_charset("UTF-8")
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ pub struct Input {
|
|||
impl ComponentTrait for Input {
|
||||
fn new() -> Self {
|
||||
Input::default()
|
||||
.with_classes(ClassesOp::SetDefault, "form-item form-type-textfield")
|
||||
.with_classes(ClassesOp::AddDefault, "form-item form-type-textfield")
|
||||
.with_size(Some(60))
|
||||
.with_maxlength(Some(128))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ pub struct Icon {
|
|||
|
||||
impl ComponentTrait for Icon {
|
||||
fn new() -> Self {
|
||||
Icon::default().with_classes(ClassesOp::SetDefault, "bi-question-circle-fill")
|
||||
Icon::default().with_icon_name("question-circle-fill")
|
||||
}
|
||||
|
||||
fn handle(&self) -> Handle {
|
||||
|
|
@ -75,7 +75,10 @@ impl Icon {
|
|||
|
||||
#[fn_builder]
|
||||
pub fn alter_icon_name(&mut self, name: &str) -> &mut Self {
|
||||
self.alter_classes(ClassesOp::SetDefault, concat_string!("bi-", name));
|
||||
self.classes.alter_value(
|
||||
ClassesOp::Replace(concat_string!("bi-", self.icon_name)),
|
||||
concat_string!("bi-", name),
|
||||
);
|
||||
self.icon_name = name.to_owned();
|
||||
self
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ pub struct Image {
|
|||
|
||||
impl ComponentTrait for Image {
|
||||
fn new() -> Self {
|
||||
Image::default().with_classes(ClassesOp::SetDefault, IMG_FLUID)
|
||||
Image::default().with_classes(ClassesOp::AddDefault, IMG_FLUID)
|
||||
}
|
||||
|
||||
fn handle(&self) -> Handle {
|
||||
|
|
@ -70,19 +70,19 @@ impl Image {
|
|||
pub fn with(source: &str) -> Self {
|
||||
Image::default()
|
||||
.with_source(source)
|
||||
.with_classes(ClassesOp::SetDefault, IMG_FLUID)
|
||||
.with_classes(ClassesOp::AddDefault, IMG_FLUID)
|
||||
}
|
||||
|
||||
pub fn fixed(source: &str) -> Self {
|
||||
Image::default()
|
||||
.with_source(source)
|
||||
.with_classes(ClassesOp::SetDefault, IMG_FIXED)
|
||||
.with_classes(ClassesOp::AddDefault, IMG_FIXED)
|
||||
}
|
||||
|
||||
pub fn pagetop() -> Self {
|
||||
Image::default()
|
||||
.with_source("/base/pagetop-logo.svg")
|
||||
.with_classes(ClassesOp::SetDefault, IMG_FIXED)
|
||||
.with_classes(ClassesOp::AddDefault, IMG_FIXED)
|
||||
.with_size(ImageSize::Size(64, 64))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,8 +30,8 @@ pub struct Wrapper {
|
|||
impl ComponentTrait for Wrapper {
|
||||
fn new() -> Self {
|
||||
Wrapper::default()
|
||||
.with_classes(ClassesOp::SetDefault, "container")
|
||||
.with_inner_classes(ClassesOp::SetDefault, "container")
|
||||
.with_classes(ClassesOp::AddDefault, "container")
|
||||
.with_inner_classes(ClassesOp::AddDefault, "container")
|
||||
}
|
||||
|
||||
fn handle(&self) -> Handle {
|
||||
|
|
@ -99,25 +99,33 @@ impl ComponentTrait for Wrapper {
|
|||
|
||||
impl Wrapper {
|
||||
pub fn header() -> Self {
|
||||
let mut c = Wrapper::new().with_classes(ClassesOp::SetDefault, "header");
|
||||
let mut c = Wrapper::default()
|
||||
.with_classes(ClassesOp::AddDefault, "header")
|
||||
.with_inner_classes(ClassesOp::AddDefault, "container");
|
||||
c.wrapper_type = WrapperType::Header;
|
||||
c
|
||||
}
|
||||
|
||||
pub fn footer() -> Self {
|
||||
let mut c = Wrapper::new().with_classes(ClassesOp::SetDefault, "footer");
|
||||
let mut c = Wrapper::default()
|
||||
.with_classes(ClassesOp::AddDefault, "footer")
|
||||
.with_inner_classes(ClassesOp::AddDefault, "container");
|
||||
c.wrapper_type = WrapperType::Footer;
|
||||
c
|
||||
}
|
||||
|
||||
pub fn main() -> Self {
|
||||
let mut c = Wrapper::new().with_classes(ClassesOp::SetDefault, "main");
|
||||
let mut c = Wrapper::default()
|
||||
.with_classes(ClassesOp::AddDefault, "main")
|
||||
.with_inner_classes(ClassesOp::AddDefault, "container");
|
||||
c.wrapper_type = WrapperType::Main;
|
||||
c
|
||||
}
|
||||
|
||||
pub fn section() -> Self {
|
||||
let mut c = Wrapper::new().with_classes(ClassesOp::SetDefault, "section");
|
||||
let mut c = Wrapper::default()
|
||||
.with_classes(ClassesOp::AddDefault, "section")
|
||||
.with_inner_classes(ClassesOp::AddDefault, "container");
|
||||
c.wrapper_type = WrapperType::Section;
|
||||
c
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
//! This *helper* differentiates between default classes (generally associated with styles provided
|
||||
//! by the theme) and user classes (for customizing components based on application styles).
|
||||
//!
|
||||
//! Default classes can be added using [SetDefault] and [AddDefault], while user classes can be
|
||||
//! added using [Add]. Operations to [Remove], [Replace] or [ReplaceIfExists] a class, as well as
|
||||
//! to [Reset] user classes, are also provided.
|
||||
//! Default classes can be added using [AddDefault], while user classes can be added using [Add].
|
||||
//! Operations to [Remove], [Replace] or [ReplaceIfExists] a class, as well as to [Reset] user
|
||||
//! classes, are also provided.
|
||||
//!
|
||||
//! Although the order of the classes is irrelevant (<https://stackoverflow.com/a/1321712>), default
|
||||
//! classes will be presented before user classes and duplicate classes will not be allowed.
|
||||
|
|
@ -13,7 +13,6 @@
|
|||
use crate::fn_builder;
|
||||
|
||||
pub enum ClassesOp {
|
||||
SetDefault,
|
||||
AddDefault,
|
||||
Add,
|
||||
Remove,
|
||||
|
|
@ -51,10 +50,6 @@ impl OptionClasses {
|
|||
let classes: Vec<&str> = classes.split_ascii_whitespace().collect();
|
||||
|
||||
match op {
|
||||
ClassesOp::SetDefault => {
|
||||
self.0.retain(|(_, t)| t.ne(&ClassType::Default));
|
||||
self.add(&classes, 0, ClassType::Default);
|
||||
}
|
||||
ClassesOp::AddDefault => {
|
||||
let pos = match self.0.iter().position(|(_, t)| t.eq(&ClassType::User)) {
|
||||
Some(pos) => pos,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue