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; pub use identifier::IdentifierValue;
mod classes; mod classes;
pub use classes::{Classes, ClassesOp}; pub use classes::{Classes, ClassesOp, ClassValue};
mod unit; mod unit;
pub use unit::UnitValue; pub use unit::UnitValue;

View file

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