From e9967fa22781d922ba4eb8fb44fe72d200ac4b14 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Mon, 10 Nov 2025 21:04:10 +0000
Subject: [PATCH] =IconsManager.php update

---
 assets/js/dash/TaxonomyCreator.js |   56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 56 insertions(+), 0 deletions(-)

diff --git a/assets/js/dash/TaxonomyCreator.js b/assets/js/dash/TaxonomyCreator.js
index 3c783c7..8f27b17 100644
--- a/assets/js/dash/TaxonomyCreator.js
+++ b/assets/js/dash/TaxonomyCreator.js
@@ -39,6 +39,11 @@
 		if (window.targetCheck(e, '.submit-term')) {
 			this.handleTermCreation(e);
 		}
+
+		// Handle autocomplete create button
+		if (window.targetCheck(e, '.create-term')) {
+			this.handleAutocompleteCreate(e);
+		}
 	}
 
 	async handleTermCreation(e) {
@@ -94,6 +99,56 @@
 		}
 	}
 
+	async handleAutocompleteCreate(e) {
+		const button = e.target;
+		const fieldId = this.selector.getFieldId(button);
+		const field = this.selector.fields.get(fieldId);
+
+		if (!field) return;
+
+		// Get the current input value (not the debounced query)
+		const input = field.container.querySelector('input[data-autocomplete]');
+		const termName = input?.value.trim() || button.dataset.query;
+
+		if (!termName) return;
+
+		try {
+			button.disabled = true;
+			const originalText = button.innerHTML;
+			button.textContent = 'Creating...';
+
+			const response = await this.createTerm(termName, 0);
+
+			if (response.success && response.term) {
+				const term = response.term;
+
+				// Add term to field
+				field.selectedTerms.add(parseInt(term.id));
+				this.selector.addTermToDisplay(field.id, term.id, term.name, term.path || term.name);
+
+				// Update input
+				field.input.value = Array.from(field.selectedTerms).join(',');
+				field.input.dispatchEvent(new Event('change', { bubbles: true }));
+
+				// Clear and hide dropdown
+				field.autocompleteDropdown.hidden = true;
+				if (input) input.value = '';
+
+				// Refresh the store to include the new term
+				await this.selector.store.setFilter('taxonomy', field.taxonomy);
+			} else {
+				button.innerHTML = originalText;
+			}
+		} catch (error) {
+			console.error('Error creating term:', error);
+			button.textContent = 'Failed - Try again';
+			setTimeout(() => {
+				button.innerHTML = `<strong>Create:</strong> "${termName}"`;
+				button.disabled = false;
+			}, 2000);
+		}
+	}
+
 	initTermCreation() {
 		if (!this.form) {
 			return;
@@ -328,6 +383,7 @@
 		return button;
 	}
 
+
 	/**
 	 * Handle term creation from autocomplete
 	 */

--
Gitblit v1.10.0