Gebruik de globale window.CONSTELL API om de widget programmatisch te bedienen
De Constell Widget biedt een globale JavaScript API waarmee u de widget vanuit uw eigen code kunt bedienen. Deze API is beschikbaar zodra de widget is geladen en biedt volledige controle over de widget staat.
Het window.CONSTELL object wordt
automatisch beschikbaar gesteld nadat het widget script is geladen. U hoeft geen extra configuratie
te doen.
De volgende methoden zijn beschikbaar via
window.CONSTELL:
Opent de widget modal handmatig. Gebruik deze methode om de widget te openen via aangepaste knoppen of events.
// Syntax
window.CONSTELL.open()
// Use example
const customButton = document.getElementById('my-custom-button');
customButton.addEventListener('click', () => {
window.CONSTELL.open();
});
<button id="my-custom-button">Your custom text</button>
// Alternative use example <button id="my-custom-button" onclick="window.CONSTELL.open()">Your custom text</button>
Sluit de widget modal handmatig. Gebruik deze methode om de widget te sluiten via aangepaste knoppen of events.
// Syntax
window.CONSTELL.close()
// Use example
const closeButton = document.getElementById('my-custom-button');
closeButton.addEventListener('click', () => {
window.CONSTELL.close();
<button id="my-custom-button">Your custom text</button>
});
// Alternative use example <button id="my-custom-button" onclick="window.CONSTELL.close()">Your custom text</button>
Schakelt tussen open en gesloten staat van de widget. Handig voor toggle-knoppen.
// Syntax
window.CONSTELL.toggle()
// Use example
const toggleButton = document.getElementById('toggle-widget');
toggleButton.addEventListener('click', () => {
window.CONSTELL.toggle();
});
<button id="my-custom-button">Your custom text</button>
// Alternative use example <button id="my-custom-button" onclick="window.CONSTELL.toggle()">Your custom text</button>
Navigeert naar een specifieke sectie binnen de widget. Als de widget nog niet open is, wordt deze automatisch geopend en vervolgens naar de opgegeven sectie genavigeerd.
// Syntax
window.CONSTELL.navigate(target)
// Parameters
// target: string - De sectie waar naartoe genavigeerd moet worden
// Mogelijke waarden: 'quote', 'self_quote', 'packages', 'appointment', 'contact_form'
// Use examples
// Navigeer naar offerte maken
window.CONSTELL.navigate('quote');
// Navigeer naar zelf offerte maken
window.CONSTELL.navigate('self_quote');
// Navigeer naar pakketten sectie
window.CONSTELL.navigate('packages');
// Navigeer naar afspraak sectie
window.CONSTELL.navigate('appointment');
// Navigeer naar contact formulier
window.CONSTELL.navigate('contact_form');
// Gebruik met custom buttons
const packagesButton = document.getElementById('show-packages');
packagesButton.addEventListener('click', () => {
window.CONSTELL.navigate('packages');
});
const appointmentButton = document.getElementById('book-appointment');
appointmentButton.addEventListener('click', () => {
window.CONSTELL.navigate('appointment');
});
<button id="show-packages">Bekijk Pakketten</button>
<button id="book-appointment">Maak Afspraak</button>
// Alternative inline gebruik
<button onclick="window.CONSTELL.navigate('packages')">Bekijk Pakketten</button>
<button onclick="window.CONSTELL.navigate('appointment')">Maak Afspraak</button>
<button onclick="window.CONSTELL.navigate('contact_form')">Contact</button>
Voor de 'packages' sectie kunt u een tweede parameter (payload) meegeven om de pakketten direct te filteren op basis van het event type. Dit opent de widget en toont alleen de relevante pakketten voor het opgegeven event type.
// Navigate with payload for filtering packages
// Syntax: window.CONSTELL.navigate(target, payload)
// Navigate to packages with event type filter
window.CONSTELL.navigate('packages', {eventType: 'birthday'});
// Navigate to packages with different event types
window.CONSTELL.navigate('packages', {eventType: 'babyshower'});
// Use with custom buttons for filtered package views
const birthdayPackagesBtn = document.getElementById('birthday-packages');
birthdayPackagesBtn.addEventListener('click', () => {
window.CONSTELL.navigate('packages', {eventType: 'birthday'});
});
const babyshowerPackagesBtn = document.getElementById('babyshower-packages');
babyshowerPackagesBtn.addEventListener('click', () => {
window.CONSTELL.navigate('packages', {eventType: 'babyshower'});
});
<button id="birthday-packages">Verjaardag Pakketten</button>
<button id="babyshower-packages">Babyshower Pakketten</button>
// Alternative inline gebruik met payload
<button onclick="window.CONSTELL.navigate('packages', {eventType: 'birthday'})">Verjaardag Pakketten</button>
<button onclick="window.CONSTELL.navigate('packages', {eventType: 'babyshower'})">Babyshower Pakketten</button>
Vervang de standaard widget knop door uw eigen design:
<!-- HTML -->
<button id="custom-booking-btn" class="my-custom-button">
Reserveer Nu
</button>
<!-- Widget zonder standaard knop (verborgen) -->
<constell-widget
venue="your-venue-id"
style="display: none;">
</constell-widget>
<script>
document.getElementById('custom-booking-btn').addEventListener('click', () => {
window.CONSTELL.open();
});
</script>
window.CONSTELL beschikbaar is voordat u het gebruikt
Implementeer robuuste error handling voor uw custom implementaties:
<script>
function safeWidgetOpen() {
try {
// Controleer of API beschikbaar is
if (typeof window.CONSTELL === 'undefined') {
console.warn('Constell Widget API is not available');
// Fallback actie, bijv. scroll naar contact sectie
document.getElementById('contact-section').scrollIntoView();
return;
}
// Controleer of open functie bestaat
if (typeof window.CONSTELL.open !== 'function') {
console.warn('Constell Widget open method is not available');
return;
}
window.CONSTELL.open();
} catch (error) {
console.error('Error opening Constell Widget:', error);
// Fallback UI of alternatieve actie
showFallbackContactForm();
}
}
function showFallbackContactForm() {
// Implementeer fallback contact formulier
alert('Widget is tijdelijk niet beschikbaar. Neem contact met ons op via telefoon of email.');
}
</script>
In niet-ondersteunde browsers zal
window.CONSTELL niet beschikbaar zijn. Implementeer altijd fallback opties voor deze
situaties.