Thursday, June 04, 2026 4:06:35 AM
> application_controller.js
import { Controller } from "@hotwired/stimulus";
import $ from "../helpers/cash_dom";

export default class ApplicationController extends Controller {
  initialize() {
    this.abortController = new AbortController();
  }

  disconnect() {
    this.abortController.abort();
  }

  addEventListener(selector, event, callback) {
    $(selector)[0].addEventListener(event, callback, {
      signal: this.abortController.signal,
    });
  }

  nextTick(callback) {
    setTimeout(callback, 0);
  }

  setSlimSelected(selector, value, validate = true) {
    this.dispatch("setSelected", {
      target: $(selector)[0],
      detail: { value, validate },
    });
  }

  clearSlimSelected(selector) {
    this.dispatch("clearSelected", { target: $(selector)[0] });
  }

  setSlimData(selector, value) {
    this.dispatch("setData", {
      target: $(selector)[0],
      detail: { value },
    });
  }

  clearSlimData(selector) {
    this.dispatch("clearData", { target: $(selector)[0] });
  }

  enableSlim(selector) {
    this.dispatch("enable", { target: $(selector)[0] });
  }

  disableSlim(selector) {
    this.dispatch("disable", { target: $(selector)[0] });
  }
}
All opinions represented herein are my own
- © 2024 - 2026 itsthedevman
- build 4294fb2