1// app/javascript/controllers/nested_form_controller.js 2import { Controller } from "@hotwired/stimulus" 3 4export default class extends Controller { 5 static targets = [ 6 // los que ya tenÃas 7 "companiesContainer", "companiesTemplate", 8 "sitesContainer", "sitesTemplate", 9 "row", "destroyField", 10 // â añade estos dos para las franjas 11 "windowsContainer", "windowsTemplate", 12 // â Acceso por Cliente (admin/client_users) 13 "clientsContainer", "clientsTemplate" 14 ] 15 16 add(event) { 17 event.preventDefault() 18 const key = event.currentTarget.dataset.target // "companies" | "sites" | "windows" 19 const container = this[`${key}ContainerTarget`] 20 const template = this[`${key}TemplateTarget`] 21 if (!container || !template) return 22 23 const html = template.innerHTML.replaceAll("__INDEX__", Date.now().toString()) 24 container.insertAdjacentHTML("beforeend", html) 25 } 26 27 remove(event) { 28 event.preventDefault() 29 const row = event.currentTarget.closest("[data-nested-form-target='row']") 30 if (!row) return 31 32 const destroyInput = row.querySelector("[data-nested-form-target='destroyField']") 33 if (destroyInput && /\]\[_destroy\]$/.test(destroyInput.getAttribute("name"))) { 34 destroyInput.value = "1" 35 row.style.display = "none" 36 } else { 37 row.remove() 38 } 39 } 40}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.