From 2004934399d6ca70ccc48ad8ff83497fde45f9c8 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 17 Mar 2026 16:43:29 +1100 Subject: [PATCH] Register only necessary elements This should be more efficient. Best viewed with whitespace ignored. --- .../controllers/bulk_form_controller.js | 17 +++++++++++------ app/webpacker/controllers/variant_controller.js | 3 ++- 2 files changed, 13 insertions(+), 7 deletions(-) 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); } }