Jake Vanderwerf
5 days ago a9b3b28d001941921aa70d37fdc87c758a163a44
assets/js/concise/PopulateForm.js
@@ -59,7 +59,7 @@
   populateField(field, name, value) {
      let type = this.formHelper.getFieldType(field);
      if (!type || this.isEmptyValue(name) || this.isEmptyValue(value)) return;
      if (!type || this.isEmptyValue(name)) return;
      const handlers = {
         'repeater': this.populateRepeater.bind(this),
@@ -93,12 +93,23 @@
   }
   populateRepeater(field, name, value) {
      if (!value || !Array.isArray(value)) return;
      const container = field.querySelector('.repeater-items');
      let template = field.querySelector('template')?.className ?? false;
      if (!container || !template) return;
      // Normalize: server/store may return an object with numeric keys instead of an array
      if (typeof value === 'string') {
         try { value = JSON.parse(value); } catch(e) { value = []; }
      }
      if (value && !Array.isArray(value) && typeof value === 'object') {
         value = Object.values(value);
      }
      if (!value || !Array.isArray(value) || value.length === 0) {
         window.removeChildren(container);
         return;
      }
      window.removeChildren(container);
      value.forEach((data, index) => {
@@ -123,12 +134,23 @@
      });
   }
   populateTagList(field, name, value) {
      if (!value || !Array.isArray(value)) return;
      const container = field.querySelector('.tag-items');
      let template = field.querySelector('template')?.className ?? false;
      if (!container || !template) return;
      if (typeof value === 'string') {
         try { value = JSON.parse(value); } catch(e) { value = []; }
      }
      if (value && !Array.isArray(value) && typeof value === 'object') {
         value = Object.values(value);
      }
      if (!value || !Array.isArray(value) || value.length === 0) {
         window.removeChildren(container);
         return;
      }
      window.removeChildren(container);
      value.forEach((data, index) => {
@@ -192,7 +214,6 @@
   }
   populateTaxonomy(field, name, value) {
      let termIds = this.splitIDs(value);
      if (termIds.length === 0) return;
      const hiddenInput = field.querySelector(`input[type="hidden"][name="${name}"]`);
      if (hiddenInput) {
@@ -213,7 +234,6 @@
         return;
      }
      if (this.isEmptyValue(value)) return;
      const ids = this.splitIDs(value);
      if (ids.length === 0) return;
      const hiddenInput = field.querySelector(`input[type="hidden"]`);