Jake Vanderwerf
2026-02-08 0442e1186ae642c86947d03961fde7d461ba054d
assets/js/concise/UtilityFunctions.js
@@ -413,27 +413,34 @@
   }
}
window.prefixInput = function(input, prefix, replace = false) {
window.prefixInput = function(input, prefix, wrapper = null, replace = false) {
   if (!input) {
      console.warn('prefixInput called with null/undefined input');
      return;
   }
   let newId = replace ? prefix : `${prefix}${input.name}`;
   if (input.labels && input.labels.length > 0) {
      input.labels?.forEach(label => {
         label.htmlFor = newId;
      });
   } else if (input.previousElementSibling?.tagName === 'label') {
      let label = input.previousElementSibling;
      if (label) label.htmlFor = newId;
   } else if (input.nextElementSibling?.tagName === 'label') {
      let label = input.nextElementSibling;
      if (label) label.htmlFor = newId;
   }else {
      let label = input.closest('[data-field]')?.querySelector(`label[for="${input.id}"]`);
      if (label) {
         label.htmlFor = newId;
      }
   const oldId = input.id;
   const newId = replace ? prefix : `${prefix}${input.name}`;
   // Search for label within wrapper if provided, otherwise use existing logic
   let label = null;
   if (wrapper) {
      // Most reliable: search within wrapper by old ID
      label = wrapper.querySelector(`label[for="${oldId}"]`);
   } else if (input.labels && input.labels.length > 0) {
      // Fallback to input.labels if no wrapper provided
      label = input.labels[0];
   } else if (input.previousElementSibling?.tagName === 'LABEL') {
      label = input.previousElementSibling;
   } else if (input.nextElementSibling?.tagName === 'LABEL') {
      label = input.nextElementSibling;
   } else {
      // Final fallback: search up the tree
      label = input.closest('[data-field]')?.querySelector(`label[for="${oldId}"]`);
   }
   if (label) {
      label.htmlFor = newId;
   }
   input.id = newId;