Files
newznab-tmux/resources/js/alpine/components/inline-search.js
T
2026-03-05 12:01:15 +01:00

35 lines
1.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Inline search plain DOM listeners (no Alpine x-data needed).
*
* Each .inline-search-widget has a pre-built data-base-url including category
* param (e.g. "/search?t=6041"). This script just appends "&search=<query>".
*
* Supports multiple instances on the same page.
* Works safely inside nested forms / x-data scopes.
*/
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('.inline-search-widget').forEach((widget) => {
const input = widget.querySelector('[data-role="inline-search-input"]');
const btn = widget.querySelector('[data-role="inline-search-btn"]');
if (!input || !btn) return;
function doSearch() {
const q = input.value.trim();
if (!q) return;
const baseUrl = widget.dataset.baseUrl || '/search';
const sep = baseUrl.includes('?') ? '&' : '?';
window.location.href = baseUrl + sep + 'search=' + encodeURIComponent(q);
}
btn.addEventListener('click', doSearch);
input.addEventListener('keydown', (e) => {
if (e.key === 'Enter') {
e.preventDefault();
doSearch();
}
});
});
});