RoadHouse Grill
Order Online
Doorstep delivery
{ if($event.target.value.length > 3) { window.dataLayer?.push({ 'event': 'product_search', 'search_input': $event.target.value }) } }" x-model="$store.menuitems.filters.name" placeholder="Search by name">
Categories
All Categories
Price
Low - High
High - Low
Ksh
-
{ slider.noUiSlider.set([$store.menuitems.filters.price.from, $store.menuitems.filters.price.to]) }">
Clear filters
/
{ if(!$store.order.getItem(item.id)){ $store.order.addItem(item) }else { $store.order.removeItem(item.id) } }" :style="$store.order.getItem(item.id) && {borderColor: '#F97068'}" >
My Order
{ if(qty > 1) { qty-- updateTotalPrice() } }">-
{ qty++ updateTotalPrice() }">+
TOTAL
{ window.onload = (e)=>{ $('form#order-form').reset() } }" @submit.prevent="()=>{ orderLoading = true submit($event).then(code => { window.dataLayer?.push({ 'event': 'begin_checkout', 'value': fields.totalPrice, 'currency': 'KES', 'items': fields.items.value?.map(i=>{ const item = $store.menuitems.getItem(i.id) if (!item) { console.error( `item id ${i.id} could not be sent with 'begin checkout' event, no item with that id found in menu items` ) return } return { 'item_id': i.id, 'item_name': item.name, 'price': i.unitPrice, 'quantity': i.qty, 'item_category': $store.categories.getCategory(item.category)?.name } }) }) clearForm() $dispatch('clear-form') $store.order.items.splice(0, $store.order.items.length) const orderModalDiv = document.querySelector('#order-modal') modal.hide() orderModalDiv.addEventListener('shown.bs.hidden', event => { modal.dispose() }) window.location.href = 'checkout.php' }).catch(e=> { const errorWrapper = document.getElementById('order-error') const errorDiv = document.createElement('div') errorDiv.innerHTML = `
Error :(
An error occured posting your order
` errorWrapper.appendChild(errorDiv) }) .finally(()=>{ orderLoading = false }) }">
Your name
Your phone number
Your email
Receive news on upcoming events, offers and discounts?
Leave a note
{ query = '' selectedAddress = '' if(userLocationMarker) { userLocationMarker.remove() userLocationMarker = null } showMap = false }">
Your location:
{ if(!fields.location.latlng && !fields.location.error) { fields.location.error = 'You are yet to set your location' } isFormValid() }" >
{ if (map) { showMap = !showMap return } mapLoading = true mapboxgl.accessToken = mapBoxToken map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/streets-v12', center: [36.817223, -1.286389], zoom: 9, // starting zoom }); map.on('load', ()=>{ mapLoading = false }) map.on('render', ()=>{ map.resize() }) popup = new mapboxgl.Popup({ offset: 25 }).setText( 'You can move this marker to your precise location' ); map.on('click', (e) => { if(userLocationMarker) { userLocationMarker.remove() } userLocationMarker = new mapboxgl.Marker({draggable: true}) .setLngLat(e.lngLat) .setPopup(popup) .addTo(map); }); map.addControl(new mapboxgl.NavigationControl()); showMap = !showMap }">
{ if(map && showMap) { if(userLocationMarker) { userLocationMarker.remove() } userLocationMarker = new mapboxgl.Marker({draggable: true}) .setLngLat([address.lon, address.lat]) .setPopup(popup) .addTo(map); isExpanded = false map.flyTo({ center: [address.lon, address.lat], essential: true // this animation is considered essential with respect to prefers-reduced-motion }); return } fields.location.latlng = {lat: address.lat, lon: address.lon} isExpanded = false }">