3 Commits

Author SHA1 Message Date
Jürgen Mummert d874fe4274 Add resilient CDN loader for Meilisearch browser client 2026-02-24 12:58:34 +01:00
Jürgen Mummert c790a1c312 Fix browser import for Meilisearch frontend client 2026-02-24 12:52:47 +01:00
Jürgen Mummert 7e757bbb6a Fix: remove search-active body class on reset button click 2026-01-15 09:21:41 +01:00
@@ -60,10 +60,44 @@ Contao 5 Frontend Module Template
</div>
</div>
<script type="module">
import MeiliSearch from 'https://cdn.jsdelivr.net/npm/meilisearch@latest/dist/bundles/meilisearch.esm.js';
<script>
(function () {
const CDN_URLS = [
'https://cdn.jsdelivr.net/npm/meilisearch@0.39.0/dist/bundles/meilisearch.umd.min.js',
'https://unpkg.com/meilisearch@0.39.0/dist/bundles/meilisearch.umd.min.js'
];
document.addEventListener('DOMContentLoaded', () => {
function loadClient(urls, onDone) {
if (typeof MeiliSearch !== 'undefined') {
onDone(true, null);
return;
}
if (!urls.length) {
onDone(false, 'Alle CDN-Quellen fehlgeschlagen (mögliche CSP-Blockierung von script-src).');
return;
}
const url = urls.shift();
const script = document.createElement('script');
script.src = url;
script.async = true;
script.crossOrigin = 'anonymous';
script.onload = () => {
if (typeof MeiliSearch !== 'undefined') {
onDone(true, null);
} else {
loadClient(urls, onDone);
}
};
script.onerror = () => loadClient(urls, onDone);
document.head.appendChild(script);
}
function initSearch() {
const wrapper = document.querySelector('.meilisearch-search');
if (!wrapper) return;
@@ -96,6 +130,10 @@ Contao 5 Frontend Module Template
input.value = '';
results.innerHTML = '';
clear.classList.add('is-hidden');
// ✅ WICHTIG: Suchmodus verlassen
document.body.classList.remove('search-active');
input.focus();
});
@@ -217,7 +255,19 @@ Contao 5 Frontend Module Template
results.appendChild(node);
}
}
});
}
document.addEventListener('DOMContentLoaded', () => {
loadClient([...CDN_URLS], (ok, reason) => {
if (!ok) {
console.error('[Meilisearch] Browser client konnte nicht geladen werden. ' + reason);
return;
}
initSearch();
});
});
})();
</script>
{% endblock %}
<!-- indexer::continue -->