CluPilotCloud/resources/js/site.js

31 lines
1.4 KiB
JavaScript

/*
* Alpine für die öffentliche Website — und nur für sie.
*
* Die Konsole und das Portal bekommen Alpine von Livewire mitgeliefert; die
* Website lädt Livewire nicht (sie hat kein einziges Livewire-Bauteil) und
* stand damit ganz ohne da. `resources/js/app.js` fiel das nicht auf: es
* importiert Alpine nirgends, sondern greift nur innerhalb von `alpine:init`
* auf `window.Alpine` zu — ein Ereignis, das ohne Alpine nie eintritt.
*
* Die Folge war unsichtbar und trotzdem groß: elf `x-show` auf der Startseite
* taten nichts. Der Umschalter zwischen Monats- und Jahrespreis rührte sich
* nicht, und weil die Jahres-Ansicht `x-cloak` trägt — und
* `[x-cloak]{display:none!important}` sehr wohl ausgeliefert wird —, war der
* Jahrespreis dauerhaft verborgen statt bloß ungeschaltet. Dasselbe traf das
* Menü am Telefon.
*
* Ein eigenes Bündel statt `@livewireScripts` im öffentlichen Layout: die
* gesamte Livewire-Laufzeit samt ihrem Endpunkt gehört nicht auf eine Seite,
* die kein Bauteil davon benutzt. Alpine allein ist ein Bruchteil davon.
*
* Wird NACH `app.js` geladen (siehe `components/layouts/site.blade.php`), damit
* dessen `alpine:init`-Anmeldungen stehen, bevor hier gestartet wird. Auf
* Konsolen- und Portalseiten läuft diese Datei nicht — dort startet Livewire
* Alpine, und ein zweiter Start würde beide zerlegen.
*/
import Alpine from 'alpinejs'
window.Alpine = Alpine
Alpine.start()