From b45df8a723e4064a77135558d24f460a8f9780d1 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 14 May 2024 10:17:50 +1000 Subject: [PATCH] Use built-in feature to delete new record row I looked at the source code and found that we were missing one detail: data-new-record. https://github.com/stimulus-components/stimulus-rails-nested-form/blob/master/src/index.ts#L32-L35 It's documented here, but it's easy to miss: https://www.stimulus-components.com/docs/stimulus-rails-nested-form/ --- app/views/admin/products_v3/_table.html.haml | 4 ++-- app/webpacker/controllers/bulk_form_controller.js | 5 ----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index c938771099..ec0159ec5c 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -76,8 +76,8 @@ = form.fields_for("products][#{product_index}][variants_attributes][NEW_RECORD", product.variants.build) do |new_variant_form| %template{ 'data-nested-form-target': "template" } - %tr.condensed{ 'data-controller': "variant", 'class': "nested-form-wrapper" } - = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, category_options:, tax_category_options: } + %tr.condensed{ 'data-controller': "variant", 'class': "nested-form-wrapper", 'data-new-record': "true" } + = render partial: 'variant_row', locals: { variant: new_variant_form.object, f: new_variant_form, category_options:, tax_category_options: } %tr{ 'data-nested-form-target': "target" } %tr.condensed diff --git a/app/webpacker/controllers/bulk_form_controller.js b/app/webpacker/controllers/bulk_form_controller.js index c3c73294ae..511d058ddc 100644 --- a/app/webpacker/controllers/bulk_form_controller.js +++ b/app/webpacker/controllers/bulk_form_controller.js @@ -118,11 +118,6 @@ export default class BulkFormController extends Controller { this.recordElements[recordId] .splice(elmntsToDelete[0], elmntsToDelete[elmntsToDelete.length - 1] - elmntsToDelete[0] + 1); this.toggleFormChanged(); - - // Otherwise, elements within tr may be re-added to recordElements. - // With the nested-form-wrapper(stimulus components) class added to a tr. - let tr = document.querySelector('.nested-form-wrapper[style="display: none;"]') - tr.remove(); } // private