Añade la opción de borrar clases de componentes

This commit is contained in:
Manuel Cillero 2022-07-13 20:59:07 +02:00
parent 4ff9cfec0f
commit 4b3fc94574
2 changed files with 18 additions and 4 deletions

View file

@ -15,7 +15,7 @@ mod identifier;
pub use identifier::IdentifierValue;
mod classes;
pub use classes::{Classes, ClassesOp};
pub use classes::{Classes, ClassesOp, ClassValue};
mod unit;
pub use unit::UnitValue;

View file

@ -1,11 +1,14 @@
use crate::concat_string;
pub type ClassValue = &'static str;
pub enum ClassesOp {
Add,
AddAfter(&'static str),
AddBefore(&'static str),
AddAfter(ClassValue),
AddBefore(ClassValue),
AddFirst,
Replace(&'static str),
Remove,
Replace(ClassValue),
Reset,
SetDefault,
SetDefaultIfEmpty,
@ -59,6 +62,17 @@ impl Classes {
self.added = concat_string!(classes, " ", self.added).trim().to_owned()
},
ClassesOp::Remove => {
let v_list: Vec<&str> = classes.split_ascii_whitespace().collect();
let mut v_added: Vec<&str> = self.added.split_ascii_whitespace().collect();
for class in v_list {
if let Some(pos) = v_added.iter().position(|c| c.eq(&class)) {
v_added.remove(pos);
}
}
self.added = v_added.join(" ");
},
ClassesOp::Replace(class) => {
let mut v_added: Vec<&str> = self.added.split_ascii_whitespace().collect();
match v_added.iter().position(|c| c.eq(&class)) {