Sha256: 45f539ab13a998d5f60e48d1f105436b747a7e144d507fea0a922c64114d0306
Contents?: true
Size: 1.64 KB
Versions: 6
Compression:
Stored size: 1.64 KB
Contents
import {Controller} from "stimulus" export default class extends Controller { static get targets() { return ["form", "list", "input", "template", "button", "menuItem"] } add(event) { event.preventDefault() const name = event.target.dataset.filterName const button = this.getButtonByName(name) if (button) { this.openFilter(button) } else { this.createFilter(name) } } createFilter(name) { let html = this.getTemplateHTML(name) html = this.replaceIdsWithTimestamps(html) this.listTarget.insertAdjacentHTML('beforeend', html) // Dispatch an event this.menuItemTarget.dispatchEvent(new CustomEvent('headmin:reinit', {bubbles: true})) } remove(event) { const filter = event.currentTarget.closest('.h-filter') filter.remove() this.formTarget.submit() } removeAll(event) { this.listTarget.innerHTML = "" this.formTarget.submit() } update(event) { this.formTarget.submit() } getButtonByName(name) { return this.buttonTargets.find(function (element) { return element.dataset.filterName === name }) } openFilter(button) { button.controller.open() } getTemplateHTML(name) { const template = this.templateTargets.filter((element) => { return element.dataset.filterName === name })[0] return template.innerHTML } replaceIdsWithTimestamps(html) { const regex = new RegExp('template_id', "g"); return html.replace(regex, new Date().getTime()) } }
Version data entries
6 entries across 6 versions & 1 rubygems