gabriel / musehub public
domains.ts typescript
37 lines 1.3 KB
Raw
sha256:e519738f2102d625d47828a17d113283cd744577b43551013cb668fd04f1c3fe chore(mwp8/phase5): tick all RG checkboxes; close-out doc (… Sonnet 4.6 18 days ago
1 /**
2 * domains.ts — Domains listing page behaviour.
3 *
4 * Wires the global navbar search bar to the hero search input so that
5 * clicking / focusing the navbar field redirects focus to the hero input,
6 * exactly as the explore page does with its own hero search.
7 */
8
9 export function initDomains(): void {
10 wireNavbarSearch();
11 }
12
13 // ── Wire navbar search → hero search on domains page ─────────────────────────
14
15 function wireNavbarSearch(): void {
16 const navForm = document.querySelector<HTMLFormElement>('.navbar-search-form');
17 const navInput = document.querySelector<HTMLInputElement>('.navbar-search-input');
18 const heroInput = document.getElementById('domain-search-input') as HTMLInputElement | null;
19
20 if (!navForm || !navInput || !heroInput) return;
21
22 // Intercept navbar form submit: push value into hero input and trigger HTMX
23 navForm.addEventListener('submit', (e) => {
24 e.preventDefault();
25 const q = navInput.value.trim();
26 if (q) heroInput.value = q;
27 heroInput.focus();
28 heroInput.dispatchEvent(new Event('input', { bubbles: true }));
29 navInput.value = '';
30 });
31
32 // Redirect focus from navbar input straight to the hero input
33 navInput.addEventListener('focus', () => {
34 heroInput.focus();
35 navInput.blur();
36 });
37 }
File History 2 commits
sha256:e519738f2102d625d47828a17d113283cd744577b43551013cb668fd04f1c3fe chore(mwp8/phase5): tick all RG checkboxes; close-out doc (… Sonnet 4.6 18 days ago
sha256:0e5174da777684df43b2db71f282079030ef28bacffb93e19c29ee712b2a8bc4 test(mwp8/phase0): audit — repair+force-push leave stale ca… Sonnet 4.6 20 days ago