diff --git a/django_better_admin_arrayfield/static/js/django_better_admin_arrayfield.js b/django_better_admin_arrayfield/static/js/django_better_admin_arrayfield.js index 353004f..3540dfa 100644 --- a/django_better_admin_arrayfield/static/js/django_better_admin_arrayfield.js +++ b/django_better_admin_arrayfield/static/js/django_better_admin_arrayfield.js @@ -41,8 +41,16 @@ window.addEventListener('load', function () { ); django.jQuery(document).on('formset:added', function(event, $row, formsetName) { - $row[0].querySelectorAll(".dynamic-array-widget").forEach( - widgetElement => initializeWidget(widgetElement) - ); + if (event.detail && event.detail.formsetName) { + // Django >= 4.1 + event.target.querySelectorAll(".dynamic-array-widget").forEach( + widgetElement => initializeWidget(widgetElement) + ); + } else { + // Django < 4.1, use $row and formsetName + $row[0].querySelectorAll(".dynamic-array-widget").forEach( + widgetElement => initializeWidget(widgetElement) + ); + } }); }); diff --git a/django_better_admin_arrayfield/static/js/django_better_admin_arrayfield.min.js b/django_better_admin_arrayfield/static/js/django_better_admin_arrayfield.min.js index 4c44f07..17dc158 100644 --- a/django_better_admin_arrayfield/static/js/django_better_admin_arrayfield.min.js +++ b/django_better_admin_arrayfield/static/js/django_better_admin_arrayfield.min.js @@ -1 +1 @@ -window.addEventListener("load",function(){function a(a){a.querySelectorAll(".remove").forEach(a=>{a.addEventListener("click",()=>{a.parentNode.remove()})})}function b(b){const d=b.querySelector(".array-item"),e=d.cloneNode(!0),f=d.parentElement;d.getAttribute("data-isNone")&&(d.remove(),e.removeAttribute("data-isNone"),e.removeAttribute("style")),a(b),b.querySelector(".add-array-item").addEventListener("click",()=>{c++;const b=e.cloneNode(!0),d=b.querySelector("input").getAttribute("id").split("_"),g=d.slice(0,-1).join("_")+"_"+(c-1+"");b.querySelector("input").setAttribute("id",g),b.querySelector("input").value="",a(b),f.appendChild(b)})}let c=1;django.jQuery(".dynamic-array-widget").not(".empty-form .dynamic-array-widget").each((a,c)=>b(c)),django.jQuery(document).on("formset:added",function(a,c){c[0].querySelectorAll(".dynamic-array-widget").forEach(a=>b(a))})}); +window.addEventListener("load",function(){let i=1;function n(e){e.querySelectorAll(".remove").forEach(e=>{e.addEventListener("click",()=>{e.parentNode.remove()})})}function a(e){const t=e.querySelector(".array-item"),a=t.cloneNode(!0),o=t.parentElement;t.getAttribute("data-isNone")&&(t.remove(),a.removeAttribute("data-isNone"),a.removeAttribute("style")),n(e),e.querySelector(".add-array-item").addEventListener("click",()=>{i++;const e=a.cloneNode(!0),t=e.querySelector("input").getAttribute("id").split("_");var r=t.slice(0,-1).join("_")+"_"+String(i-1);e.querySelector("input").setAttribute("id",r),e.querySelector("input").value="",n(e),o.appendChild(e)})}django.jQuery(".dynamic-array-widget").not(".empty-form .dynamic-array-widget").each((e,t)=>a(t)),django.jQuery(document).on("formset:added",function(e,t,r){e.detail&&e.detail.formsetName?e.target.querySelectorAll(".dynamic-array-widget").forEach(e=>a(e)):t[0].querySelectorAll(".dynamic-array-widget").forEach(e=>a(e))})}); \ No newline at end of file