Jake Vanderwerf
6 hours ago 56a9a1ccf764ff7a6af8f8a2292cb07443cb4aa7
assets/js/concise/TaxonomySelector.js
@@ -246,6 +246,15 @@
         }
      }
      const removeButton = window.targetCheck(e, '.remove-term');
      if (removeButton) {
         const termId = removeButton.closest('[data-id]').dataset.id??false;
         if (fieldId && termId) {
            this.removeSelected(parseInt(termId), fieldId);
         }
         return;
      }
      const autocomplete = window.targetCheck(e, '.item.autocomplete');
      if (autocomplete) {
@@ -266,14 +275,6 @@
         return;
      }
      const removeButton = window.targetCheck(e, '.remove-term');
      if (removeButton) {
         const termId = removeButton.closest('[data-id]').dataset.id??false;
         if (fieldId && termId) {
            this.removeSelected(parseInt(termId), fieldId);
         }
         return;
      }
      if (e.target.matches('.modal-close')) {
         this.updateFieldValue(fieldId);
@@ -433,6 +434,8 @@
      const field = this.fields.get(fieldId);
      if (!field) return;
      if (!field.hasAutocomplete || this.container.open) return;
      if (e.target.closest('.remove-item')) return;
      if (e.relatedTarget && field.ui.dropdown.wrapper?.contains(e.relatedTarget)) return;
      this.scheduleHideDropdown(fieldId);
@@ -701,7 +704,7 @@
      let selectors = this.selectors.field;
      const isFilter = Object.hasOwn(element.dataset,'filter') && element.dataset.filter === 'taxonomy';
      let button = (isFilter) ? element : element.querySelector('button.taxonomy-toggle');
      let button = (isFilter) ? element : element.querySelector('button.selector-toggle');
      if (Object.keys(options).length === 0){
         if (!button) return;
@@ -1132,11 +1135,31 @@
   handleFetchError(error) {
      const field = this.currentField();
      const message = field
         ? `Failed to load ${field.plural}`
         : 'Failed to load data';
      this.setMessage(field, true, 'Something went wrong.', false);
      this.setMessage(field,true, message, false);
      const conf = this.container.open || field?.isFilter ? this.ui : field?.ui;
      const p = conf?.message?.message;
      if (p && !p.querySelector('.clear-cache-btn')) {
         const btn = document.createElement('button');
         btn.className = 'clear-cache-btn';
         btn.type = 'button';
         btn.textContent = 'Clear cache and try again';
         btn.addEventListener('click', async () => {
            btn.remove();
            this.store.clearCache();
            if (this.activeField && field) {
               await this.store.setFilters({
                  taxonomy: field.taxonomy,
                  page: 1,
                  search: '',
                  parent: 0
               });
            }
         });
         p.appendChild(btn);
      }
      console.error('Store fetch error:', error);
   }
   async batchFetchTaxonomies() {