From 0afb2c0046b55c123eafb4ab9ee77efa68d12463 Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Sat, 06 Jun 2026 17:15:31 +0000
Subject: [PATCH] =Starting the Favourites.js setup, converting previous Northeh stuff to new Registrar, fixing up Square.php integration to match

---
 assets/js/concise/TaxonomySelector.js |   49 ++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 36 insertions(+), 13 deletions(-)

diff --git a/assets/js/concise/TaxonomySelector.js b/assets/js/concise/TaxonomySelector.js
index 8faa8d7..90f6076 100644
--- a/assets/js/concise/TaxonomySelector.js
+++ b/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() {

--
Gitblit v1.10.0