PageSourceSearch

https://www.moegglingen.de/_assets/810e72f0e04370a7ae3a09e345ad4689/Js/hw_geomap_searchtoggle.js?1789633183

js moegglingen.de collected 2026-10-02 21:08:09 UTC 2,250 bytes, 50 lines download raw bytes

1/**
2 * HW Geomap3 — Suchfilter Auf-/Zuklappen
3 *
4 * Verdrahtet den "Suchfilter"-Button (#hw_fe_search__extend) im Frontend der
5 * Karte (GeomapFrontend/Map.html): toggelt am zugehoerigen Panel die Klasse
6 * .hw_fe_search__extended--hidden und schaltet aria-expanded am Button.
7 *
8 * Warum ein eigener Handler? Der generische hwlib-Toggle
9 * (Resources/Public/Frontend/JavaScript/parts/hw11_fe_list.js) bindet per
10 * getElementById an die ID #hw11_fe_search__extend; das Geomap-Template rendert
11 * den Button aber als #hw_fe_search__extend (ohne "11"). Der hwlib-Handler
12 * greift dort also nie. Dieser Handler ist zudem multi-map-sicher: er bindet
13 * per KLASSE und loest das Panel ueber das umschliessende Formular auf, sodass
14 * mehrere Karten auf einer Seite (mit identischen, nicht instanz-spezifischen
15 * IDs) unabhaengig funktionieren.
16 *
17 * Wird via Map.html geladen:
18 *   <f:asset.script src="EXT:hwgeomap3/Resources/Public/Js/hw_geomap_searchtoggle.js" defer="true"/>
19 */
20(() => {
21    const initGeomapSearchToggle = () => {
22        const buttons = document.querySelectorAll('.hw_fe_search__extend');
23        if (buttons.length === 0) return;
24
25        buttons.forEach((button) => {
26            const form = button.closest('.hw_fe_search__form');
27            const controlsId = button.getAttribute('aria-controls');
28            const panel =
29                (form && form.querySelector('.hw_fe_search__extended_wrap')) ||
30                (controlsId && document.getElementById(controlsId));
31            if (!panel) return;
32
33            // Startzustand aus dem Panel ableiten (Template-Default =
34            // .hw_fe_search__extended--hidden).
35            const startHidden = panel.classList.contains('hw_fe_search__extended--hidden');
36            button.setAttribute('aria-expanded', String(!startHidden));
37
38            button.addEventListener('click', () => {
39                const hidden = panel.classList.toggle('hw_fe_search__extended--hidden');
40                button.setAttribute('aria-expanded', String(!hidden));
41            });
42        });
43    };
44
45    if (document.readyState === 'loading') {
46        document.addEventListener('DOMContentLoaded', initGeomapSearchToggle);
47    } else {
48        initGeomapSearchToggle();
49    }
50})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.