diff --git a/app/webpacker/controllers/bulk_form_controller.js b/app/webpacker/controllers/bulk_form_controller.js index 6e82d2ce33..95eb2c1209 100644 --- a/app/webpacker/controllers/bulk_form_controller.js +++ b/app/webpacker/controllers/bulk_form_controller.js @@ -44,12 +44,17 @@ export default class BulkFormController extends Controller { } // Register any new elements (may be called by another controller after dynamically adding fields) - registerElements() { - const registeredElements = Object.values(this.recordElements).flat(); - // Select only elements that haven't been registered yet - const newElements = Array.from(this.form.elements).filter( - (n) => !registeredElements.includes(n), - ); + // May be called with array of elements to register, otherwise finds all un-registered elements. + registerElements(eventOrElements = null) { + let newElements; + + if (Array.isArray(eventOrElements)) { + newElements = eventOrElements; + } else { + const registeredElements = Object.values(this.recordElements).flat(); + // Select only elements that haven't been registered yet + newElements = Array.from(this.form.elements).filter((n) => !registeredElements.includes(n)); + } this.#registerElements(newElements); } diff --git a/app/webpacker/controllers/variant_controller.js b/app/webpacker/controllers/variant_controller.js index 86b10c11c6..29f24899a4 100644 --- a/app/webpacker/controllers/variant_controller.js +++ b/app/webpacker/controllers/variant_controller.js @@ -45,7 +45,8 @@ export default class VariantController extends Controller { // Register with bulk products form to listen for changes. Used when dynamically appending variants. if (this.hasBulkFormOutlet) { - this.bulkFormOutlet.registerElements(); + const formElements = this.element.querySelectorAll("input, select, textarea, button"); + this.bulkFormOutlet.registerElements(formElements); } }