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