JavaScript-Bibliotheken
jQuery
Das Bakehouse liefert jQuery inklusive eigener und externer Plugins mit, die einerseits bereits für bestehende Content-Elemente verwendet werden, jedoch auch für eigene Elemente oder Extension-Templates zur Verfügung stehen.
Plugin Callback-Stack
In der page Datei EXT:bh/Resources/Public/Js/base.js befindet sich ein Callback-Stack. Darin werden gängige JavaScript-Plugins für Bakehouse-Content-Elemente aufgerufen. Der Callback-Stack stellt sicher, das Bakehouse-Features wie etwa Fader, Mediabox oder Accordion nicht nur nach einem Seiten-Refresh, sondern bereits bei der Erstellung im Front-End durch den Benutzer sofort initialisieren.
Mit dem Callback-Stack ist auch die Möglichkeit gegeben, andere jQuery-Plugins oder JavaScripts für Elemente zu verwenden:
Wird ein Projekt nicht vollresponsive umgesetzt, sondern greift rein auf die Bakehouse Mobilversion zurück, steht der Callback-Stack nicht zur Verfügung. Es empfiehlt sich daher vorher zu prüfen, ob die Funktion zur Verfügung steht (im Beispiel unten angegeben).
Swiper API
Um im Bakehouse Swiper zu realisieren, wird auf die bewährte swiper.js-Bibliothek zurückgegriffen. Eine zeitsparende und zuverlässige Anwendung erreicht man mittels dem bh:swiper-Viewhelper.
Accordion-Plugin
Verwendung für eigene Elemente oder Extension-Templates
Plugin-Settings
- speed – [int] – Geschwindigkeit der Öffnungs-Animation
- startAnimation – [true,false] – Animation beim Initialisieren
- item – [selector]
- toggler – [selector]
- element – [selector]
- inner – [selector]
- active – [CSS-class] (ohne Punkt)
- forceOpen – [true,false] – stellt sicher, dass immer minimum ein Element geöffnet ist
- multiOpen – [true,false] – mehrere Elemente dürfen geöffnet sein
- firstOpen – [true,false] – öffnet beim Initialisieren das erste Element
Beispiel 1:
Beispiel 2:
Verhalten des Bakehouse-Accordion-Elements manipulieren
Datepicker-Plugin (deprecated)
Neuer Datepicker-ViewHelper verfügbar!
Der JQuery-Datepicker wird nicht mehr unterstützt. Als neue Alternative kann der bh:form.datepicker-ViewHelper verwendet werden.
Die Auswahl eines Datum-Werts ist mit Datepicker-Widget von jQuery leicht möglich. Dabei muss nur die CSS-Klasse bh-deprecated-datepicker auf den Container eines Input-Felds gelegt werden.
doubleTapToGo-Plugin
Projekte besitzen mitunter Navigationsstrukturen und Interaktions-Elemente mit :hover Funktionalität. Für Touch-Geräte wird diese Hover-Funktion mit der Klasse bh-doubletap simuliert. Wird der Container einer Navigation mit dieser Klasse belegt, werden auf Touch-Geräten bei der ersten Berührung Klassen mit :hover angezeigt.
Wird diese Funktion außerhalb von Navigationen benötigt, wird folgendes JavaScript angewendet, um direkt die DoubleTapToGo.js anzusprechen:
Lightbox-Plugin
Das Bakehouse liefert werksseitig die JavaScript-Lightbox-Library fancybox aus. Im Standardverhalten werden alle Elemente mit dem a-Tag-Attribut target="lightbox" in der Navigation der geöffneten Lightbox berücksichtigt. Alternativ können Elemente innerhalb von Lightbox-Gruppen zusammengefasst werden. Dadurch wird nur durch Elemente geschalten, die sich innerhalb der Klasse lightboxgroup befinden.
Inview-Plugin und Observer
Inview-Plugin (deprecated)
Durch das Inview-Plugin wir das inview-Event hinzugefügt. Dieses Plugin wird vom Bakehouse mitgeliefert, aber nicht automatisch eingebunden. Für den Aufruf kann folgender TypoScript-Code verwendet werden:
Beispiel für Implementierung:
Als moderne Alternative zum Inview-Plugin stellt das Bakehouse ein IntersectionObserver-Script bereit, welches mit der CSS-Klasse bh-js-inview verwendet werden kann. Sobald ein DOM-Element mit dieser Klasse in den angezeigten Bereich der Seite scrolled, wird das data-bh-inview-Attribut auf true gesetzt und das bh-inview-Event ausgelöst. Beim ersten Erscheinen wird auch noch zusätzlich das bh-inview-once-Event getriggert. Das Observer-Objekt kann im JavaScript mit Bh.plugins.intersectionObserver aufgerufen werden.
Das (dynamische) Verändern der options ist zurzeit durch die API aber leider nicht möglich. Der im Bakehouse mitgelieferte IntersectionObserver kann mit der disconnect() Methode gestoppt werden.
Die CSS-Konfiguration für den Fade-In-Effekt aus verschiedenen Richtungen könnte wie folgt aussehen:
Werden IntersectionObserver vom verwendeten Browser nicht unterstützt, wird das data-bh-inview bei allen Elementen auf true gesetzt und die Klasse bh-js-inview--not-supported auf den <body> gelegt.