Sha256: 2e0a5713e396c240e076265ff90436144eb53d2c77f5a849164da6a2ee9694f2
Contents?: true
Size: 1.41 KB
Versions: 2
Compression:
Stored size: 1.41 KB
Contents
import {Controller} from "stimulus" import {Headmin} from '../headmin' export default class extends Controller { static get targets() { return ["row"] } add_association(event) { event.preventDefault() let html = this.getTemplateHTML() html = this.replaceIdsWithTimestamps(html) this.addRow(html) } remove_association(event) { event.preventDefault() let row = event.target.closest(".repeater-row") if (row.dataset.newRecord === "true") { // New records are simply removed from the page row.remove() } else { // Existing records are hidden and flagged for deletion row.querySelector("input[name*='_destroy']").value = 1 row.style.display = 'none' } } addRow(html) { this.rowTarget.insertAdjacentHTML('afterend', html) Headmin.initPlugins() } replaceIdsWithTimestamps(html) { const regex = new RegExp(this.idValue(), "g"); return html.replace(regex, new Date().getTime()) } getTemplateHTML() { const templateTarget = this.templateTarget() return templateTarget.innerHTML } templateTarget() { return this.rowTarget.closest('.repeater').querySelector('[data-repeater-target="template"]') } idValue() { return this.rowTarget.closest('.repeater').dataset.repeaterIdValue } }
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
headmin-0.1.2 | src/js/headmin/controllers/repeater_row_controller.js |
headmin-0.1.1 | src/js/headmin/controllers/repeater_row_controller.js |