@stimulus-library/utilities
Version:
A library of useful controllers for Stimulus
34 lines (33 loc) • 1.71 kB
JavaScript
import { camelCase } from "./strings";
import { BaseController } from "./base_controller";
export class EphemeralController extends BaseController {
_cleanupSelf() {
this.cleanup(this.el);
}
cleanup(element) {
var _a, _b, _c;
element.dataset.controller = ((_a = element.dataset.controller) === null || _a === void 0 ? void 0 : _a.replaceAll(new RegExp(`(\\s|^)${this.identifier}(\\s|$)`, "g"), "")) || "";
if (element.dataset.controller == "") {
delete element.dataset.controller;
}
const substringIdentifierValueRegex = new RegExp(`(\\s|^)${this.identifier}\\..+?(\\s|$)`, "g");
element.dataset.target = ((_b = element.dataset.target) === null || _b === void 0 ? void 0 : _b.replaceAll(substringIdentifierValueRegex, "")) || "";
delete element.dataset[camelCase(`${this.identifier}-target`)];
if (element.dataset.target == "") {
delete element.dataset.target;
}
element.dataset.action = ((_c = element.dataset.target) === null || _c === void 0 ? void 0 : _c.replaceAll(substringIdentifierValueRegex, "")) || "";
delete element.dataset[camelCase(`${this.identifier}-action`)];
if (element.dataset.action == "") {
delete element.dataset.action;
}
const values = this.constructor.values;
if (values) {
Object.keys(values).forEach(val => delete element.dataset[camelCase(`${this.identifier}-${val}-value`)]);
}
const classes = this.constructor.classes;
if (classes) {
Object.keys(classes).forEach(val => delete element.dataset[camelCase(`${this.identifier}-${val}-class`)]);
}
}
}