Sha256: 7d2fc98827ac461bfd7b40de7c6a548297dc506bbac6a1dcd604d9a19173a5e0
Contents?: true
Size: 1.26 KB
Versions: 2
Compression:
Stored size: 1.26 KB
Contents
(() => { const application = Stimulus.Application.start() application.register("repeater-form", class extends Stimulus.Controller { static get targets() { return ["list", "listItem", "content", "pane"] } connect() { Sortable.create(this.listTarget, { handle: '.sortable-handle', onUpdate: function(event) { let order_of_ids = [...this.listTarget.children].map(function(item) { return parseInt(item.dataset.partId) }) // Sort the DOM elements containing the repeater fields let array = [...this.contentTarget.children] array.sort(function(a, b) { return order_of_ids.indexOf(parseInt(a.dataset.partId)) - order_of_ids.indexOf(parseInt(b.dataset.partId)) }).map(node => this.contentTarget.appendChild(node)) }.bind(this) }) } delete(event) { event.preventDefault() let part_id = event.currentTarget.dataset.partId let pane = this.element.querySelector(`.structure-form-pane[data-part-id="${part_id}"]`) let listItem = this.element.querySelector(`.structure-form-menu li[data-part-id="${part_id}"]`) pane.parentElement.removeChild(pane) listItem.parentElement.removeChild(listItem) } }) })()
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
spina-2.0.2 | app/assets/javascripts/spina/admin/controllers/repeater_form_controller.js |
spina-2.0.1 | app/assets/javascripts/spina/admin/controllers/repeater_form_controller.js |