@ribajs/core
Version:
Core module of Riba.js
25 lines (23 loc) • 788 B
text/typescript
import { Binder } from "../binder.js";
/**
* remove-class
* Removes the given class string.
* Instead of `class-[classname]` the classname is removed by the
* given attribute and not by the star value,
* @example
* <img class="loading" rv-src="img.src" rv-remove-class="loadingClass">
*/
export class RemoveClassBinder extends Binder<string, HTMLElement> {
static key = "remove-class";
private staticClassesString?: string;
bind(el: HTMLElement) {
this.staticClassesString = el.className;
}
routine(el: HTMLElement, value: string) {
const regex = new RegExp(`\\b${value}\\b`, "g");
if (!this.staticClassesString) {
throw new Error("staticClassesString is undefined!");
}
el.className = this.staticClassesString.replace(regex, "").trim();
}
}