@stimulus-components/rails-nested-form
Version:
A Stimulus controller to create new fields on the fly to populate your Rails relationship.
2 lines (1 loc) • 1.26 kB
JavaScript
(function(global,factory){typeof exports=="object"&&typeof module<"u"?module.exports=factory(require("@hotwired/stimulus")):typeof define=="function"&&define.amd?define(["@hotwired/stimulus"],factory):(global=typeof globalThis<"u"?globalThis:global||self,global.StimulusRailsNestedForm=factory(global.Stimulus))})(this,function(stimulus){"use strict";const _RailsNestedForm=class _RailsNestedForm extends stimulus.Controller{add(e){e.preventDefault();const content=this.templateTarget.innerHTML.replace(/NEW_RECORD/g,new Date().getTime().toString());this.targetTarget.insertAdjacentHTML("beforebegin",content);const event=new CustomEvent("rails-nested-form:add",{bubbles:!0});this.element.dispatchEvent(event)}remove(e){e.preventDefault();const wrapper=e.target.closest(this.wrapperSelectorValue);if(wrapper.dataset.newRecord==="true")wrapper.remove();else{wrapper.style.display="none";const input=wrapper.querySelector("input[name*='_destroy']");input.value="1"}const event=new CustomEvent("rails-nested-form:remove",{bubbles:!0});this.element.dispatchEvent(event)}};_RailsNestedForm.targets=["target","template"],_RailsNestedForm.values={wrapperSelector:{type:String,default:".nested-form-wrapper"}};let RailsNestedForm=_RailsNestedForm;return RailsNestedForm});