Jake Vanderwerf
2026-01-04 d38d825e3484d822ea3c1f0fb1df37ecf386b18a
assets/js/concise/TaxonomyCreator.js
@@ -135,6 +135,8 @@
            const termPath = term.path || term.name;
            field.selectedTerms.add(parseInt(term.id));
            // Add to store's data map
            this.selector.store.data.set(term.id, {
               id: term.id,
               name: term.name,
@@ -145,6 +147,7 @@
               hasChildren: false,
               slug: term.slug || termName.toLowerCase().replace(/\s+/g, '-')
            });
            this.selector.addTermToDisplay(field.id, term.id, term.name, termPath);
            field.input.value = Array.from(field.selectedTerms).join(',');
@@ -153,8 +156,10 @@
            field.autocompleteDropdown.hidden = true;
            if (input) input.value = '';
            // Only clear cache, don't refetch - term is already in store.data
            this.selector.store.clearCache();
            // Clear ALL cache for this taxonomy
            // This forces next search to hit the server
            await this.selector.store.clearCache();
         } else if (response.reason === 'exists' && response.term) {
            const term = response.term;
            field.selectedTerms.add(parseInt(term.id));
@@ -240,7 +245,18 @@
   async createTerm(name, parent = 0, taxonomy) {
      try {
         // Check existing data first without fetching
         // Search to ensure we have latest data for duplicate check
         await this.selector.store.setFilters({
            taxonomy: taxonomy,
            search: name,
            page: 1,
            parent: 0
         });
         // Wait a bit for the data to load
         await new Promise(resolve => setTimeout(resolve, 100));
         // Check if exact match exists in results
         const exactMatch = Array.from(this.selector.store.data.values())
            .find(term =>
               term.taxonomy === taxonomy &&
@@ -248,6 +264,7 @@
            );
         if (exactMatch) {
            // For modal context, show suggestions
            if (this.createNew) {
               this.showTermSuggestions([exactMatch], true);
            }