1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="utf-8"> 6 <title>Sugar Pappi</title> 7 <!-- Developed By Ranglerz --> 8 <link rel="stylesheet" href="https://www.ranglerz.com/cost-to-make-a-web-ios-or-android-app-and-how-long-does-it-take.php"> 9 <meta content="width=device-width, initial-scale=1.0" name="viewport"> 10 <meta content="" name="keywords"> 11 <meta content="" name="description"> 12 <meta name="csrf-token" content="jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA"> 13 <!-- Favicon --> 14 <link href="https://sugarpappi.com/public/img/logo.png" rel="icon"> 15 <!-- Google Web Fonts --> 16 <link rel="preconnect" href="https://fonts.googleapis.com"> 17 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 18 <link 19 href="https://fonts.googleapis.com/css2?family=Heebo:wght@400;500;600&family=Nunito:wght@600;700;800&family=Pacifico&display=swap" 20 rel="stylesheet"> 21 22 <!-- Icon Font Stylesheet --> 23 <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.10.0/css/all.min.css" 24 rel="stylesheet"> 25 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/remixicon/3.5.0/remixicon.css" 26 integrity="sha512-HXXR0l2yMwHDrDyxJbrMD9eLvPe3z3qL3PPeozNTsiHJEENxx8DH2CxmV05iwG0dwoz5n4gQZQyYLUNt1Wdgfg==" 27 crossorigin="anonymous" referrerpolicy="no-referrer" /> 28 <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css" 29 rel="stylesheet"> 30 31 <!-- Libraries Stylesheet --> 32 <link href="https://sugarpappi.com/public/lib/animate/animate.min.css" rel="stylesheet"> 33 <link href="https://sugarpappi.com/public/lib/owlcarousel/assets/owl.carousel.min.css" rel="stylesheet"> 34 <link href="https://sugarpappi.com/public/lib/tempusdominus/css/tempusdominus-bootstrap-4.min.css" rel="stylesheet" /> 35 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/lightgallery/1.6.14/css/lightgallery.css" /> 36 37 <!-- Customized Bootstrap Stylesheet --> 38 <link href="https://sugarpappi.com/public/css/bootstrap.min.css" rel="stylesheet"> 39 <!-- Template Stylesheet --> 40 <link href="https://sugarpappi.com/public/css/sidebar.css" rel="stylesheet"> 41 <link href="https://sugarpappi.com/public/css/common.css" rel="stylesheet"> 42 <link href="https://sugarpappi.com/public/css/style.css" rel="stylesheet"> 43 <link href="https://sugarpappi.com/public/css/sugarpappi-update.css?v=20260901comp1" rel="stylesheet"> 44 <link rel="stylesheet" href="https://sugarpappi.com/public/admin/assets/toastr/css/toastr.css"> 45 46 <!-- Google reCAPTCHA Script -->
vendor: 101 bytes, lines 46-48
46 47 <script src="https://www.google.com/recaptcha/api.js?render=explicit" async defer></script> 48
48<script> 49 function enableCaptchaSubmit() { 50 // This function will be called when reCAPTCHA is successfully completed 51 console.log('reCAPTCHA completed'); 52 } 53 </script>
53 54</head> 55 56<body class=""> 57 <div id="app" class="bg-white"> 58 <div class="main-wrapper main-wrapper-1"> 59 <div class="container-xxl bg-white p-0"> 60 <!-- Spinner Start --> 61 62<style> 63/* Notification CSS */ 64.notification-wrapper { position: relative; } 65.mobile-notify-block { width:340px; max-width:90%; right:0; left:auto; transform:none; margin-top:12px; } 66.notify-block { max-height:300px; overflow:auto; } 67.notification-title, .notification-desc, .mobile-notify-block h5, .mobile-notify-block { color:#000 !important; } 68.notification-title { font-weight:600; font-size:14px; margin-bottom:4px; } 69.notification-desc { font-size:13px; line-height:1.4; color:#555 !important; margin-bottom:8px; } 70.bell-counter { background:red; color:#fff; font-size:11px; padding:2px 6px; border-radius:50%; position:absolute; top:-6px; right:-6px; } 71.mobile-notify-block .card { border:none; border-bottom:1px solid #eee; } 72.mobile-notify-block .card:last-child { border-bottom:none; } 73 74/* De
74sktop notification styles */ 75.carting-card { width: 350px; } 76.carting-card .card { border:none; border-bottom:1px solid #eee; margin:0; } 77.carting-card .card:last-child { border-bottom:none; } 78.carting-card .card-body { padding: 12px 15px; } 79 80.mobile-notify-block, 81.mobile-notify-block h5, 82.mobile-notify-block .notification-title, 83.mobile-notify-block .notification-desc, 84.mobile-notify-block .card-body, 85.carting-card, 86.carting-card h5, 87.carting-card .notification-title, 88.carting-card .notification-desc { 89 color: #000 !important; 90} 91 92@media(max-width:992px){ .mobile-notify-block{ width:80%; left:10%; right:auto; } } 93@media(max-width:768px){ .mobile-notify-block{ width:92%; left:4%; } } 94@media(max-width:480px){ .mobile-notify-block{ width:96%; left:2%; } } 95 96/* pac-container fix for modals */ 97.pac-container { z-index: 9999999 !important; } 98</style> 99 100<style>.pac-container { z-index: 9999999 !important; }</style> 101 102<div id="spinner" class="bg-white position-fixed translate-middle w-100 vh-100 top-50 start-50 d-flex align-items-center justify-content-center"> 103 <div class="spinner-border text-dark" style="width:3rem;height:3rem;" role="status"> 104 <span class="sr-only">Loading...</span> 105 </div> 106</div> 107<div id="spHeaderBackdrop" aria-hidden="true"></div> 108 109<!-- Disclaimer Modal --> 110<div class="modal fade" id="disclaimerModal" tabindex="-1" aria-labelledby="disclaimerModalLabel" aria-hidden="true"> 111 <div class="modal-dialog"> 112 <div class="modal-content"> 113 <div class="modal-body"> 114 <p class="mb-0 text-danger"><strong>Disclaimer!</strong> Some of our products are made with ingredients that may contain Nuts, Soy, Gluten And/Or Wheat. If you have any allergies, please let us know.</p> 115 </div> 116 </div> 117 </div> 118</div> 119 120<!-- Promo Bar + Navbar stay visible above wholesale bar --> 121<div class="sp-site-header"> 122<div class="promo-bar"> 123 <a href="#" style="text-decoration:none;" 124 data-bs-toggle="modal" data-bs-target="#menuModalPromo-769"> 125 ð¥ 25% OFF on OLD SCHOOL SPRINKLE CAKE â Order Now 126 </a> 127</div> 128 129 130 131<!-- Navbar --> 132<nav class="navbar navbar-expand-lg navbar-dark px-4 px-lg-5 py-lg-0 py-2"> 133 <div> 134 <button class="navbar-toggler me-2 d-inline-flex" type="button" aria-label="Open menu"> 135 <span class="fa fa-bars"></span> 136 </button> 137 <a href="https://sugarpappi.com" class="navbar-brand p-0"> 138 <img src="https://sugarpappi.com/public/img/logo.png" alt="Logo"> 139 </a> 140 </div> 141 142 <div class="d-lg-none d-flex align-items-center sp-header-actions"> 143 <span class="fa fa-search header-icon open-btn"></span> 144 <div class="d-inline nav-item dropdown"> 145 <a href="#" class="d-inline nav-link p-0" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false"> 146 <span class="fa fa-shopping-cart position-relative header-icon"> 147 <span class="badge cart-counter cart-counter-1">0</span> 148 </span> 149 </a> 150 <div class="carting-card dropdown-menu py-2 px-0"> 151 <div class="border-bottom mb-1 pb-2 px-3 d-flex justify-content-between align-items-start"> 152 <div> 153 <h5 class="mb-1">Your Cart (<span class="cart-counter-1">0</span>)</h5> 154 <b class="small text-danger d-block">Quick summary â full details on the cart page.</b> 155 </div> 156 <button type="button" class="btn-close sp-dropdown-close d-lg-none ms-2 mt-1" aria-label="Close"></button> 157 </div> 158 <div class="cards-parent scrollable"> 159 <p class="text-danger text-center">Your cart is empty!</p> 160 </div> 161 <div class="pt-3 border-top mt-1 text-center"> 162 <a href="https://sugarpappi.com/my-cart" 163 class="btn btn-danger px-5 disabled"> 164 Continue To Cart 165 </a> 166 </div> 167 </div> 168</div> 169 170 </div> 171 172 <div class="collapse navbar-collapse" id="navbarCollapse"> 173 <div class="navbar-nav ms-auto py-0 pe-xl-4 pe-3"> 174 <a href="https://sugarpappi.com" class="nav-item nav-link ">Home</a> 175 <a href="https://sugarpappi.com/get-our-menu" class="nav-item nav-link ">Menu</a> 176 <a href="https://sugarpappi.com/pappi-special" class="nav-item nav-link ">Pappi Special</a> 177 <a href="https://sugarpappi.com/get-our-gallery" class="nav-item nav-link ">Gallery</a> 178 <a href="https://sugarpappi.com/dessert-wholesale" class="nav-item nav-link">Dessert Wholesale</a> 179 <a href="https://sugarpappi.com/drive-in" class="nav-item nav-link">Drive-In</a> 180 <a href="https://wa.me/447727412922" class="nav-item nav-link" target="_blank" rel="noopener">WhatsApp</a> 181 </div> 182
183 <span class="fa fa-search header-icon open-btn"></span> 184 185 186 <!-- Cart Dropdown --> 187 <div class="ms-2 d-none d-lg-block"> 188 <div class="nav-item dropdown"> 189 <a href="#" class="nav-link p-0" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false"> 190 <span class="fa fa-shopping-cart me-3 position-relative header-icon"> 191 <span class="badge cart-counter cart-counter-1">0</span> 192 </span> 193 </a> 194 <div class="carting-card dropdown-menu py-2 px-0"> 195 <div class="border-bottom mb-1 pb-2 px-3 d-flex justify-content-between align-items-start"> 196 <div> 197 <h5 class="mb-1">Your Cart (<span class="cart-counter-1">0</span>)</h5> 198 <b class="small text-danger d-block">Quick summary â full details on the cart page.</b> 199 </div> 200 <button type="button" class="btn-close sp-dropdown-close d-lg-none ms-2 mt-1" aria-label="Close"></button> 201 </div> 202 <div class="cards-parent scrollable"> 203 <p class="text-danger text-center">Your cart is empty!</p> 204 </div> 205 <div class="pt-3 border-top mt-1 text-center"> 206 <a href="https://sugarpappi.com/my-cart" 207 class="btn btn-danger px-5 disabled"> 208 Continue To Cart 209 </a> 210 </div> 211 </div> 212</div> 213 </div> 214 215 <a href="https://sugarpappi.com/login" class="btn btn-primary py-2 px-4">Login</a> 216 </div> 217</nav> 218</div> 219 220<!-- Overlay Search --> 221<div id="myOverlay" class="overlay"> 222 <span class="close-btn" title="Close Overlay">Ã</span> 223 <div class="overlay-content"> 224 <form action="https://sugarpappi.com/search" method="GET" class="mb-0"> 225 <input type="text" placeholder="Search Your Favorite Food ..." name="search"> 226 <button type="submit" class="btn btn-primary" style="border:none;border-radius:0"> 227 <span class="fa fa-search"></span> 228 </button> 229 </form> 230 </div> 231</div> 232 233 234<div class="container-fluid cart food-modal"> 235 <div class="modal fade menu-modal" id="menuModalPromo-769" 236 tabindex="-1" aria-hidden="true"> 237 <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable"> 238 <div class="modal-content"> 239 <div class="modal-body p-0 scrollable"> 240 241 <input type="hidden" name="product_id" value="769"> 242 243 244 <div class="position-relative"> 245 <img class="w-100" 246 src="https://sugarpappi.com/public/admin/assets/images/users/1773127878.jfif" 247 alt="product-img"> 248 <span class="badge bg-danger position-absolute top-0 end-0 m-2 fs-6"> 249 25% OFF 250 </span> 251 </div> 252 253 <div class="p-3 description"> 254 <h3>OLD SCHOOL SPRINKLE CAKE</h3> 255 256 257 258 <p> 259 <span class="text-muted text-decoration-line-through"> 260 £5.99 261 </span><br> 262 <span class="text-danger fw-bold prodPrice"> 263 £4.49 264 </span> 265 </p> 266 267 <div class="d-flex cart-btn"> 268 <button class="btn p-0 decrement" type="button">-</button> 269 <input type="text" class="cart_input increment-input text-center" 270 value="1" name="quantity" id="quantity_769"> 271 <button class="btn p-0 increment" type="button">+</button> 272 </div> 273 </div> 274 275 <!-- How to get it --> 276 <div class="description p-3"> 277 <div class="d-flex justify-content-between"> 278 <h6>How to get it</h6> 279 <h6 class="text-danger">Required</h6> 280 </div> 281 282 <div class="branch-option mb-3"> 283 <input type="hidden" name="branch_id" value="6"> 284 285 <div class="form-check"> 286 <input class="form-check-input" type="radio" 287 name="status_769" 288 id="pickupStatus769_6_0"
289 value="1" 290 checked 291 onchange="toggleDelivery('769', '6_0')"> 292 <label class="form-check-label fw-bold small" 293 for="pickupStatus769_6_0"> 294 Store Pickup 295 </label> 296 </div> 297 298 <p class="small fw-bold m-0 sel-location mt-1" 299 id="storePickupSection769_6_0"> 300 <a href="https://www.google.com/maps/search/?api=1&query=Aldow+Industrial+Park%2C+Aldow+Enterprise+Park%2C+2+Raven+St%2C+Manchester+M12+6AE%2C+UK" 301 target="_blank" style="text-decoration:none;color:inherit;"> 302 Aldow Industrial Park, Aldow Enterprise Park, 2 Raven St, Manchester M12 6AE, UK 303 </a> 304 </p> 305 306 <div class="form-check mt-3"> 307 <input class="form-check-input" type="radio" 308 name="status_769" 309 id="homeStatus769_6_0" 310 value="2" 311 onchange="toggleDelivery('769', '6_0')"> 312 <label class="form-check-label fw-bold small" 313 for="homeStatus769_6_0"> 314 Home Delivery 315 </label> 316 </div> 317 318 <div id="deliveryAddressField769_6_0" 319 class="mt-2" style="display:none;"> 320 <input type="text" 321 id="deliveryInput769_6" 322 name="delivery_address_769" 323 class="form-control location-input" 324 data-product="769" 325 data-branch="6" 326 placeholder="Enter your delivery address" 327 autocomplete="off" /> 328 <input type="hidden" name="lat_769" 329 id="lat769_6"> 330 <input type="hidden" name="lng_769" 331 id="lng769_6"> 332 </div> 333 </div> 334 </div> 335 336 <!-- Toppings --> 337 338 </div> 339 340 <div class="modal-footer position-relative px-2"> 341 <button type="button" 342 style="font-size:24px;position:absolute;left:0;width:30px;height:30px;display:flex;justify-content:center;align-items:center" 343 class="btn time-modal-close ri-close-circle-line btn-danger px-2 ms-3 py-0" 344 data-bs-dismiss="modal"></button> 345 <div class="text-center mx-auto"> 346 <button class="btn btn-danger addto-cart px-sm-5 px-4" data-product-id="769">Add To Order</button> 347 </div> 348 </div> 349 </div> 350 </div> 351 </div> 352</div> 353
354<script> 355window.spInitStorefront = function () { 356 if (window.__spStorefrontReady || !window.jQuery) return; 357 window.__spStorefrontReady = true; 358 window.spAddingToOrder = false; 359 window.jQuery(function ($) { 360 361 // ââ Cart +/- buttons in header dropdown âââââââââââââââââââââââââââââ 362 function updateServerCart(productId, variantId, quantity) { 363 $.post('https://sugarpappi.com/update-cart', { 364 '_token': 'jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA', 365 product_id: productId, 366 variant_id: variantId, 367 quantity: quantity 368 }); 369 } 370 371 function refreshCartCounter() { 372 let total = 0; 373 $('.cart-input').each(function () { total += parseInt($(this).val()) || 0; }); 374 $('.cart-counter-1').text(total); 375 } 376 377 $(document).on('click', '.increment-btn', function () { 378 let $input = $(this).siblings('.increment-input'); 379 let qty = parseInt($input.val()) + 1; 380 $input.val(qty); 381 382 let data = $(this).data('product-id').toString().split(','); 383 if (data[0]) updateServerCart(data[0].trim(), (data[1] || '').trim(), qty); 384 385 let price = parseFloat($(this).closest('.carting-child').find('.product-price').text()) || 0; 386 $(this).closest('.carting-child').find('.total-price').text('£' + (price * qty).toFixed(2)); 387 refreshCartCounter(); 388 }); 389 390 $(document).on('click', '.decrement-btn', function () { 391 let $input = $(this).siblings('.increment-input'); 392 let qty = parseInt($input.val()); 393 if (qty > 1) { 394 qty--; 395 $input.val(qty); 396 let data = $(this).data('product-id').toString().split(','); 397 if (data[0]) updateServerCart(data[0].trim(), (data[1] || '').trim(), qty); 398 let price = parseFloat($(this).closest('.carting-child').find('.product-price').text()) || 0; 399 $(this).closest('.carting-child').find('.total-price').text('£' + (price * qty).toFixed(2)); 400 refreshCartCounter(); 401 } 402 }); 403 404 refreshCartCounter(); 405 406 // ââ Qty +/- inside modal âââââââââââââââââââââââââââââââââââââââââââââ 407 $(document).on('click', '.increment', function () { 408 let $inp = $(this).siblings('.cart_input'); 409 $inp.val(parseInt($inp.val()) + 1); 410 }); 411 $(document).on('click', '.decrement', function () { 412 let $inp = $(this).siblings('.cart_input'); 413 let v = parseInt($inp.val()) - 1; 414 $inp.val(v >= 1 ? v : 1); 415 }); 416 417 // ââ Topping arrow toggle âââââââââââââââââââââââââââââââââââââââââââââ 418 $(document).on('click', '.arrow', function () { 419 $(this).find('span').toggleClass('ri-arrow-up-s-line ri-arrow-down-s-line'); 420 }); 421 422 // ââ â VARIANT SELECT CHANGE â update prodPrice + strikethrough ââââââ 423 $(document).on('change', '.select-size', function () { 424 var $opt = $(this).find('option:selected'); 425 var parts = $(this).val().trim().split(' '); 426 var price = parseFloat(parts[parts.length - 1]); // variant.price 427 var originalPrice = parseFloat($opt.data('original')) || 0; // variant.original_price 428 var $modalBody = $(this).closest('.modal-body'); 429 430 // Update current price 431 $modalBody.find('.prodPrice').text(price.toFixed(2)); 432 433 // Update strikethrough 434 var $strike = $modalBody.find('.variant-original-price'); 435 if (originalPrice > 0 && originalPrice > price) { 436 $strike.text('£' + originalPrice.toFixed(2)).removeAttr('style').show(); 437 } else { 438 $strike.text('').hide(); 439 } 440 }); 441 442 // ââ â MODAL OPEN â initialise price from pre-selected variant âââââââ 443 $(document).on('shown.bs.modal', '.menu-modal', function () { 444 var $select = $(this).find('.select-size'); 445 if (!$select.length) return; 446 447 var $opt = $select.find('option:selected'); 448 var parts = $opt.val().trim().split(' '); 449 var price = parseFloat(parts[parts.length - 1]); 450 var originalPrice = parseFloat($opt.data('original')) || 0; 451 452 $(this).find('.prodPrice').text(price.toFixed(2)); 453 454 var $strike = $(this).find('.variant-original-price'); 455 if (originalPrice > 0 && originalPrice > price) { 456 $strike.text('£' + originalPrice.toFixed(2)).removeAttr('style').show(); 457 } else { 458 $strike.text('').hide(); 459 } 460 }); 461 462 // ââ Add to cart / Add to order (once only) ââââââââââââââââââââââââââââ 463 $(document).off('click.spAddCart', '.addto-cart').on('click.spAddCart', '.addto-cart', function (e) { 464 e.preventDefault(); 465 e.stopImmediatePropagation(); 466 var $btn = $(this); 467 if ($btn.data('spAdding')) return; 468 $btn.data('spAdding', true); 469 // Menu modals are moved to <body> on open (z-index). Do not use .food-modal â 470 // that wrapper is left behind and product_id looks empty ("Product not found"). 471 var $modal = $btn.closest('.menu-modal'); 472 if (!$modal.length) { 473 $modal = $btn.closest('.food-modal'); 474 } 475 var addLabel = $btn.data('addLabel') || (window.spAddingToOrder ? 'Add to Order' : 'Add to Cart'); 476 477 var productId = $btn.attr('data-product-id') || $modal.find('input[name="product_id"]').val(); 478 var quantity = $modal.find('input[name="quantity"]').val() || 1; 479 var branchId = $modal.find('input[name="branch_id"]').first().val(); 480 var complementaryId = $modal.find('input[name="complementary_id"]').length 481 ? $modal.find('input[name="complementary_id"]').val() : null; 482 483 function resetBtn() { 484 $btn.data('spAdding', false); 485 $btn.prop('disabled', false).text(addLabel); 486 } 487 488 function hideProductModal() { 489 var modalEl = $btn.closest('.modal')[0]; 490 if (!modalEl) return; 491 if (window.bootstrap && bootstrap.Modal) { 492 var inst = bootstrap.Modal.getInstance(modalEl); 493 if (!inst) { 494 inst = new bootstrap.Modal(modalEl); 495 } 496 inst.hide(); 497 return; 498 } 499 if (window.jQuery && typeof $btn.closest('.modal').modal === 'function') { 500 $btn.closest('.modal').modal('hide'); 501 } 502 } 503 504 if (!productId) { toastr.error('Product not found'); resetBtn(); return; } 505 506 var isWholesaleAdd = !!$btn.data('wholesale') || !!window.spWholesalePage; 507 if (isWholesaleAdd && !window.spWholesaleDate && !window.spAddingToOrder) { 508 toastr.error('Select and save a wholesale delivery date first (Monday / Thursday / Saturday, 7â10 PM).'); 509 var bar = document.getElementById('wholesaleDateBar'); 510 if (bar) bar.scrollIntoView({ behavior: 'smooth', block: 'start' }); 511 resetBtn(); 512 return; 513 } 514 var deliveryStatus = isWholesaleAdd ? '2' : ($modal.find('input[name^="status_"]:checked').val() || '1'); 515 var deliveryAddress = '', lat = '', lng = ''; 516 517 if (!isWholesaleAdd && deliveryStatus == '2' && !window.spAddingToOrder) { 518 deliveryAddress = $modal.find('input[name="delivery_address_' + productId + '"]').val(); 519 lat = $modal.find('input[name="lat_' + productId + '"]').val(); 520 lng = $modal.find('input[name="lng_' + productId + '"]').val(); 521 522 if (!deliveryAddress) { toastr.error('Please enter delivery address'); resetBtn(); return; } 523 if (!lat || !lng) { toastr.error('Please select a valid address from suggestions'); resetBtn(); return; } 524 } 525 526 var variantId = ''; 527 var $varSel = $modal.find('select[name="variant_id"]'); 528 if ($varSel.length && $varSel.val()) { 529 variantId = $varSel.val().trim().split(' ')[0]; 530 } 531 532 var toppingsByCategory = {}; 533 $modal.find('input[name="toppings[]"]:checked').each(function () { 534 var catId = $(this).data('category-id'); 535 if (!toppingsByCategory[catId]) toppingsByCategory[catId] = []; 536 toppingsByCategory[catId].push($(this).val()); 537 }); 538 var toppingsArray = Object.entries(toppingsByCategory).map(function ([catId, tops]) { 539 return { category_id: catId, toppings: tops }; 540 }); 541 542 function sendAdd() { 543 $btn.prop('disabled', true).text('Adding...'); 544 $.ajax({ 545 type: 'POST', 546 url: 'https://sugarpappi.com/add-to-cart', 547 data: { 548 _token: 'jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA', 549 product_id: productId, 550 quantity: quantity, 551 branch_id: branchId, 552 variant_id: variantId, 553 delivery_status: deliveryStatus, 554 delivery_address: deliveryAddress, 555 lat: lat, 556 lng: lng, 557 complementary_id: complementaryId, 558 location: deliveryStatus, 559 toppings_by_category: toppingsArray, 560 wholesale: isWholesaleAdd ? 1 : 0, 561 }, 562 success: function (data) { 563 if (data && data.success === false) { 564 toastr.error((data && data.message) || 'Something went wrong.'); 565 return; 566 } 567 if (data && data.receipt_generated) { 568 toastr.success(data.message || 'Your product has been added in My Orders.'); 569 var count = 0; 570 $('.cart-counter-1').text(count); 571 if (typeof window.updateCartUI === 'function') window.updateCartUI({ cart: {} }); 572 return; 573 } 574 toastr.success(window.spAddingToOrder ? 'Your product has been added in My Orders.' : (isWholesaleAdd ? 'Added. Open My Cart, then Place Order. You can update the order until 6 hours before delivery.' : 'Product added to cart!'));
575 var count = data && data.cart ? Object.keys(data.cart).length : 0; 576 $('.cart-counter-1').text(count); 577 if (typeof window.updateCartUI === 'function') window.updateCartUI(data); 578 if (count > 0) { 579 $('a[href*="my-cart"]').removeClass('disabled').prop('disabled', false); 580 } 581 if (!window.spAddingToOrder) { 582 hideProductModal(); 583 } 584 }, 585 error: function (xhr) { 586 console.error('Cart error:', xhr.responseText); 587 toastr.error('Error: ' + ((xhr.responseJSON && xhr.responseJSON.message) || 'Server error')); 588 }, 589 complete: function () { 590 resetBtn(); 591 } 592 }); 593 } 594 595 if (window.spAddingToOrder) { 596 hideProductModal(); 597 resetBtn(); 598 var ask = function () { 599 if (typeof Swal === 'undefined') { 600 if (window.confirm('Are you sure you want to add this product in your order?')) { 601 sendAdd(); 602 } 603 return; 604 } 605 Swal.fire({ 606 title: 'Are you sure?', 607 text: 'Are you sure you want to add this product in your order?', 608 icon: 'question', 609 showCancelButton: true, 610 confirmButtonColor: '#ff2d87', 611 confirmButtonText: 'Yes', 612 cancelButtonText: 'Cancel' 613 }).then(function (result) { 614 if (result.isConfirmed) { 615 sendAdd(); 616 } 617 }); 618 }; 619 setTimeout(ask, 250); 620 return; 621 } 622 sendAdd(); 623 }); 624 625 }); 626}; 627if (window.jQuery) { 628 window.spInitStorefront(); 629} else { 630 document.addEventListener('DOMContentLoaded', function () { 631 if (window.spInitStorefront) window.spInitStorefront(); 632 }); 633} 634 635// ââ toggleDelivery (global â called from onchange) ââââââââââââââââââââââââ 636function toggleDelivery(productId, branchUnique) { 637 var pickupRadio = document.getElementById('pickupStatus' + productId + '_' + branchUnique); 638 var homeRadio = document.getElementById('homeStatus' + productId + '_' + branchUnique); 639 var pickupSection = document.getElementById('storePickupSection' + productId + '_' + branchUnique); 640 var deliveryField = document.getElementById('deliveryAddressField' + productId + '_' + branchUnique); 641 642 if (!homeRadio || !pickupRadio) return; 643 644 if (homeRadio.checked) { 645 if (pickupSection) pickupSection.style.display = 'none'; 646 if (deliveryField) deliveryField.style.display = 'block'; 647 } else { 648 if (pickupSection) pickupSection.style.display = 'block'; 649 if (deliveryField) { 650 deliveryField.style.display = 'none'; 651 var inp = deliveryField.querySelector('input[type="text"]'); 652 if (inp) inp.value = ''; 653 } 654 } 655} 656</script>
656 657 658
659<script async defer 660 src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBUMK9qFdsbuuuTMiaPHCJok4Rro91yvaE&libraries=places&callback=initAllAutocomplete&loading=async"> 661</script>
vendor: 1 bytes, line 661
661
662<script> 663window.initAllAutocomplete = function () { 664 bindAutocomplete(document); 665 666 document.addEventListener('shown.bs.modal', function (e) { 667 bindAutocomplete(e.target); 668 669 // â Prevent Bootstrap modal from swallowing pac-container clicks 670 e.target.addEventListener('mousedown', function (ev) { 671 if (ev.target.closest && ev.target.closest('.pac-container')) { 672 ev.stopPropagation(); 673 } 674 }, true); 675 }); 676}; 677 678function bindAutocomplete(container) { 679 if (!container || !container.querySelectorAll) return; 680 681 container.querySelectorAll('.location-input').forEach(function (input) { 682 if (input.dataset.autocompleteInit === '1') return; 683 input.dataset.autocompleteInit = '1'; 684 685 var productId = input.dataset.product; 686 var branchId = input.dataset.branch; 687 if (!productId || !branchId) return; 688 689 var latField = document.getElementById('lat' + productId + '_' + branchId); 690 var lngField = document.getElementById('lng' + productId + '_' + branchId); 691 if (!latField || !lngField) return; 692 693 var autocomplete = new google.maps.places.Autocomplete(input, { 694 fields: ['geometry', 'formatted_address'], 695 types: ['geocode'], 696 componentRestrictions: { country: 'gb' } 697 }); 698 699 input.addEventListener('input', function () { 700 latField.value = ''; 701 lngField.value = ''; 702 }); 703 704 autocomplete.addListener('place_changed', function () { 705 var place = autocomplete.getPlace(); 706 if (!place || !place.geometry) return; 707 latField.value = place.geometry.location.lat(); 708 lngField.value = place.geometry.location.lng(); 709 if (place.formatted_address) input.value = place.formatted_address; 710 }); 711 712 input.addEventListener('blur', function () { 713 setTimeout(function () { 714 if (!latField.value || !lngField.value) { 715 input.value = ''; 716 latField.value = ''; 717 lngField.value = ''; 718 } 719 }, 400); 720 }); 721 }); 722} 723</script>
723 724 <div id="sidenav-overlay"></div> 725<div class="d-lg-none hidden sidebar"> 726 <button type="button" class="sp-close-nav" id="closeSidebar" aria-label="Close">×</button> 727 728 <a class="sp-nav-link sp-nav-link-special" href="https://sugarpappi.com/pappi-special"> 729 <i class="ri-star-smile-line"></i> Sugar Pappi Special 730 </a> 731 732 <div class="sp-menu-group"> 733 <button type="button" class="sp-nav-link sp-menu-toggle" id="spMenuToggle" aria-expanded="false"> 734 <span class="d-flex align-items-center gap-2"> 735 <i class="ri-file-list-3-line"></i> Menu 736 </span> 737 <i class="ri-arrow-right-s-line sp-chevron" aria-hidden="true"></i> 738 </button> 739 <div class="sp-menu-cats" id="spMenuCats" hidden> 740 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab80"> 741 <i class="ri-restaurant-line"></i> Cookie Dough 742 </a> 743 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab81"> 744 <i class="ri-restaurant-line"></i> Cookie Dough Creations 745 </a> 746 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab82"> 747 <i class="ri-restaurant-line"></i> Waffles 748 </a> 749 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab83"> 750 <i class="ri-restaurant-line"></i> Cakes 751 </a> 752 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab84"> 753 <i class="ri-restaurant-line"></i> Bruce's Cake 754 </a> 755 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab85"> 756 <i class="ri-restaurant-line"></i> Vegan Cakes 757 </a> 758 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab86"> 759 <i class="ri-restaurant-line"></i> Gluten Free Cakes 760 </a> 761 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab87"> 762 <i class="ri-restaurant-line"></i> Ice Cream & Sorbet 763 </a> 764 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab88"> 765 <i class="ri-restaurant-line"></i> Pancake Stack 766 </a> 767 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab89"> 768 <i class="ri-restaurant-line"></i> Brownie Points 769 </a> 770 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab90"> 771 <i class="ri-restaurant-line"></i> Cool Sundae 772 </a> 773 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab91"> 774 <i class="ri-restaurant-line"></i> Doughnuts 775 </a> 776 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab92"> 777 <i class="ri-restaurant-line"></i> Milkshakes 778 </a> 779 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab93"> 780 <i class="ri-restaurant-line"></i> Thick Shakes 781 </a> 782 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab94"> 783 <i class="ri-restaurant-line"></i> Drinks 784 </a> 785 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab95"> 786 <i class="ri-restaurant-line"></i> Mocktails 787 </a> 788 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab96"> 789 <i class="ri-restaurant-line"></i> Tango Ice Blast 790 </a> 791 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab97"> 792 <i class="ri-restaurant-line"></i> Burgers & Wraps 793 </a> 794 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab98"> 795 <i class="ri-restaurant-line"></i> Nibbles 796 </a> 797 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab99"> 798 <i class="ri-restaurant-line"></i> Signature Specials 799 </a> 800 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab100"> 801 <i class="ri-restaurant-line"></i> Butter Chicken Signature 802 </a> 803 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab101"> 804 <i class="ri-restaurant-line"></i> Knafeh 805 </a> 806 <a class="sp-nav-link ps-4" href="https://sugarpappi.com/get-our-menu#menuTab124"> 807 <i class="ri-restaurant-line"></i> Mains 808 </a> 809 </div> 810 </div> 811 812 <a class="sp-nav-link" href="https://sugarpappi.com/drive-in"> 813 <i class="ri-car-line"></i> Drive-In. <span class="sp-badge-save">SAVE 20%</span> 814 </a> 815 <a class="sp-nav-link" href="https://sugarpappi.com/private-bookings"> 816 <i class="ri-calendar-event-line"></i> Private Bookings 817 </a> 818 <a class="sp-nav-link" href="https://sugarpappi.com/dessert-wholesale"> 819 <i class="ri-box-3-line"></i> Dessert Wholesale 820 </a> 821 <a class="sp-nav-link" href="https://wa.me/447727412922" target="_blank" rel="noopener"> 822 <i class="ri-whatsapp-line"></i> WhatsApp Us 823 </a> 824 <a class="sp-nav-link" href="https://sugarpappi.com/get-our-gallery"> 825 <i class="ri-image-line"></i> Gallery 826 </a> 827 <a href="https://sugarpappi.com/login" class="sp-nav-link">Login</a> 828 </div> 829 <div class="main-content"> 830 <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.8.0/css/pikaday.min.css"> 831 <style> 832 .pika-button:hover { 833 color: white; 834 background-color: #9e0e1b; 835 } 836 837 .time-modal-button { 838 background-color: #f1f1f1; 839 840 } 841 842 .calender { 843 position: absolute; 844 top: 50%; 845 right: 1%; 846 transform: translate(-50%, -50%); 847 } 848 849 .time-radios { 850 border-bottom: 1px solid black; 851 } 852 853 .time-radios:last-of-type { 854 border-bottom: none; 855 } 856 857 .cart .order_input { 858 border: none; 859 width: 40px; 860 } 861 862 .cart .order_input:focus { 863 outline: none; 864 } 865 866 .cart .product_img { 867 height: 80px; 868 width: 80px; 869 object-fit: cover; 870 } 871 872 .btn_input { 873 margin-left: 80px; 874 } 875 876 .billing { 877 position: sticky; 878 top: 125px; 879 } 880
881 .cart_card img { 882 height: 75px; 883 width: 75px; 884 object-fit: cover; 885 border-radius: 0; 886 } 887 888 .cart_input { 889 display: inline-block; 890 border: none; 891 background: inherit; 892 } 893 894 .cart_input:focus { 895 outline: none; 896 } 897 898 .add_more { 899 color: red; 900 border: 1px solid red; 901 display: block; 902 text-align: center; 903 } 904 905 .alert p { 906 font-size: 14px; 907 } 908 909 .common-btn { 910 color: black; 911 background-color: rgb(241, 240, 240); 912 } 913 914 .cart_card .cart_input { 915 width: 50px; 916 } 917 918 .btn-parent { 919 display: flex; 920 justify-content: space-between; 921 } 922 923 .btn-parent .btn { 924 width: 23%; 925 display: flex; 926 justify-content: center; 927 align-items: center; 928 flex-direction: column; 929 padding: 0%; 930 } 931 932 .tip-input-container { 933 display: flex; 934 justify-content: space-between; 935 } 936 937 .tip-input-container.coupan span { 938 width: 100%; 939 } 940 941 .tip-input-container .btn { 942 display: inline-block; 943 width: calc(100% - 77%); 944 display: flex; 945 justify-content: center; 946 } 947 948 /* Buttons that increase and decrease the amount order-items */ 949 950 .item-btn { 951 background-color: rgba(0, 0, 0, 0.1); 952 font-size: 20px; 953 width: 35px; 954 height: 35px; 955 } 956 957 /* remove increment buttons from the input */ 958 959 .increment-input::-webkit-inner-spin-button, 960 .increment-input::-webkit-outer-spin-button { 961 -webkit-appearance: none; 962 margin: 0; 963 } 964 965 .increment-input { 966 -moz-appearance: textfield; 967 } 968 969 @media (max-width:991px) and (min-width:768px) { 970 .billing { 971 top: 10px; 972 } 973 } 974 975 @media (max-width:767px) { 976 .billing { 977 position: static; 978 } 979 } 980 </style> 981 <section class="section"> 982 <div class="container-xxl bg-white p-0"> 983 <div class="container-xxl position-relative p-0"> 984 <div class="sp-page-hero sp-cart-hero" style="background-image:url('https://sugarpappi.com/public/img/page-hero.jpg')"> 985 <h1>Your Cart</h1> 986 </div> 987 </div> 988 <!-- Navbar & Hero End --> 989 <!-- Modals Start --> 990 <div class="container-fluid time-modal"> 991 <div class="modal fade" id="time-Modal" tabindex="-1" aria-labelledby="time-Modal" aria-hidden="true"> 992 <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable"> 993 <div class="modal-content"> 994 <div class="modal-header p-3"> 995 <button data-bs-toggle="modal" 996 class="text-start locattion-button-show-btn rounded rounded-3 time-modal-button btn px-3 py-2 col-12"> 997 <div class="d-flex justify-content-between col-12"> 998 <div> 999 <h6 class="my-2"> 1000 1001 <span class="d-flex"> 1002 <span class="ri-map-pin-line me-2"></span> 1003 Pickup:<p class="small fw-bold m-0 sel-location mt-0" id="storePickupSection6"> 1004 <a href="https://www.google.com/maps/search/?api=1&query=Aldow+Industrial+Park%2C+Aldow+Enterprise+Park%2C+2+Raven+St%2C+Manchester+M12+6AE%2C+UK" 1005 target="_blank" 1006 style="text-decoration: none; color: inherit;"> 1007 Aldow Industrial Park, Aldow Enterprise Park, 2 Raven St, Manchester M12 6AE, UK 1008 </a> 1009 </p> 1010 </span> 1011 1012 </h6> 1013 </div> 1014 <h6 class="my-2"><span class="fa fa-solid fa-location-arrow"></span></h6> 1015 </div> 1016 </button> 1017 </div> 1018 <div class="modal-body pt-4 pb-2 m-0 scrollable"> 1019 <div class="form-group"> 1020 <label for="datepicker"> 1021 <h6>Select Pickup Time</h6> 1022 </label> 1023 <div class="position-relative"> 1024 <input class="form-control rounded py-2 rounded-3 time_input" id="datepicker" 1025 type="text" name="date_input">
1026 <span class="fa fa-calendar calender"></span> 1027 </div> 1028 </div> 1029 1030 1031 <div class="d-flex time-radios align-items-center py-3"> 1032 <input class="form-check-input me-2" type="radio" 1033 id="time-radio-2-0" 1034 value="06:00 AM" name="time-radio"> 1035 <label for="time-radio-2-0" class="ms-1"> 1036 <h6 class="m-0">06:00 AM</h6> 1037 </label> 1038 </div> 1039 1040 1041 <div class="d-flex time-radios align-items-center py-3"> 1042 <input class="form-check-input me-2" type="radio" 1043 id="time-radio-2-1" 1044 value="06:15 AM" name="time-radio"> 1045 <label for="time-radio-2-1" class="ms-1"> 1046 <h6 class="m-0">06:15 AM</h6> 1047 </label> 1048 </div> 1049 1050 1051 <div class="d-flex time-radios align-items-center py-3"> 1052 <input class="form-check-input me-2" type="radio" 1053 id="time-radio-2-2" 1054 value="06:30 AM" name="time-radio"> 1055 <label for="time-radio-2-2" class="ms-1"> 1056 <h6 class="m-0">06:30 AM</h6> 1057 </label> 1058 </div> 1059 1060 1061 <div class="d-flex time-radios align-items-center py-3"> 1062 <input class="form-check-input me-2" type="radio" 1063 id="time-radio-2-3" 1064 value="06:45 AM" name="time-radio"> 1065 <label for="time-radio-2-3" class="ms-1"> 1066 <h6 class="m-0">06:45 AM</h6> 1067 </label> 1068 </div> 1069 1070 1071 <div class="d-flex time-radios align-items-center py-3"> 1072 <input class="form-check-input me-2" type="radio" 1073 id="time-radio-2-4" 1074 value="07:00 AM" name="time-radio"> 1075 <label for="time-radio-2-4" class="ms-1"> 1076 <h6 class="m-0">07:00 AM</h6> 1077 </label> 1078 </div> 1079 1080 1081 <div class="d-flex time-radios align-items-center py-3"> 1082 <input class="form-check-input me-2" type="radio" 1083 id="time-radio-2-5"
1084 value="07:15 AM" name="time-radio"> 1085 <label for="time-radio-2-5" class="ms-1"> 1086 <h6 class="m-0">07:15 AM</h6> 1087 </label> 1088 </div> 1089 1090 1091 <div class="d-flex time-radios align-items-center py-3"> 1092 <input class="form-check-input me-2" type="radio" 1093 id="time-radio-2-6" 1094 value="07:30 AM" name="time-radio"> 1095 <label for="time-radio-2-6" class="ms-1"> 1096 <h6 class="m-0">07:30 AM</h6> 1097 </label> 1098 </div> 1099 1100 1101 <div class="d-flex time-radios align-items-center py-3"> 1102 <input class="form-check-input me-2" type="radio" 1103 id="time-radio-2-7" 1104 value="07:45 AM" name="time-radio"> 1105 <label for="time-radio-2-7" class="ms-1"> 1106 <h6 class="m-0">07:45 AM</h6> 1107 </label> 1108 </div> 1109 1110 1111 <div class="d-flex time-radios align-items-center py-3"> 1112 <input class="form-check-input me-2" type="radio" 1113 id="time-radio-2-8" 1114 value="08:00 AM" name="time-radio"> 1115 <label for="time-radio-2-8" class="ms-1"> 1116 <h6 class="m-0">08:00 AM</h6> 1117 </label> 1118 </div> 1119 1120 1121 <div class="d-flex time-radios align-items-center py-3"> 1122 <input class="form-check-input me-2" type="radio" 1123 id="time-radio-2-9" 1124 value="08:15 AM" name="time-radio"> 1125 <label for="time-radio-2-9" class="ms-1"> 1126 <h6 class="m-0">08:15 AM</h6> 1127 </label> 1128 </div> 1129 1130 1131 <div class="d-flex time-radios align-items-center py-3"> 1132 <input class="form-check-input me-2" type="radio" 1133 id="time-radio-2-10" 1134 value="08:30 AM" name="time-radio"> 1135 <label for="time-radio-2-10" class="ms-1"> 1136 <h6 class="m-0">08:30 AM</h6> 1137 </label> 1138 </div> 1139 1140 1141 <div class="d-flex time-radios align-items-center py-3"> 1142 <input class="form-check-input me-2" type="radio" 1143 id="time-radio-2-11"
1144 value="08:45 AM" name="time-radio"> 1145 <label for="time-radio-2-11" class="ms-1"> 1146 <h6 class="m-0">08:45 AM</h6> 1147 </label> 1148 </div> 1149 1150 1151 <div class="d-flex time-radios align-items-center py-3"> 1152 <input class="form-check-input me-2" type="radio" 1153 id="time-radio-2-12" 1154 value="09:00 AM" name="time-radio"> 1155 <label for="time-radio-2-12" class="ms-1"> 1156 <h6 class="m-0">09:00 AM</h6> 1157 </label> 1158 </div> 1159 1160 1161 <div class="d-flex time-radios align-items-center py-3"> 1162 <input class="form-check-input me-2" type="radio" 1163 id="time-radio-2-13" 1164 value="09:15 AM" name="time-radio"> 1165 <label for="time-radio-2-13" class="ms-1"> 1166 <h6 class="m-0">09:15 AM</h6> 1167 </label> 1168 </div> 1169 1170 1171 <div class="d-flex time-radios align-items-center py-3"> 1172 <input class="form-check-input me-2" type="radio" 1173 id="time-radio-2-14" 1174 value="09:30 AM" name="time-radio"> 1175 <label for="time-radio-2-14" class="ms-1"> 1176 <h6 class="m-0">09:30 AM</h6> 1177 </label> 1178 </div> 1179 1180 1181 <div class="d-flex time-radios align-items-center py-3"> 1182 <input class="form-check-input me-2" type="radio" 1183 id="time-radio-2-15" 1184 value="09:45 AM" name="time-radio"> 1185 <label for="time-radio-2-15" class="ms-1"> 1186 <h6 class="m-0">09:45 AM</h6> 1187 </label> 1188 </div> 1189 1190 1191 <div class="d-flex time-radios align-items-center py-3"> 1192 <input class="form-check-input me-2" type="radio" 1193 id="time-radio-2-16" 1194 value="10:00 AM" name="time-radio"> 1195 <label for="time-radio-2-16" class="ms-1"> 1196 <h6 class="m-0">10:00 AM</h6> 1197 </label> 1198 </div> 1199 1200 1201 <div class="d-flex time-radios align-items-center py-3"> 1202 <input class="form-check-input me-2" type="radio" 1203 id="time-radio-2-17" 1204 value="10:15 AM" name="time-radio"> 1205 <label for="time-radio-2-17" class="ms-1"> 1206 <h6 class="m-0">10:15 AM</h6> 1207 </label> 1208 </div> 1209 1210 1211 <div class="d-flex time-radios align-items-center py-3"> 1212 <input class="form-check-input me-2" type="radio" 1213 id="time-radio-2-18" 1214 value="10:30 AM" name="time-radio"> 1215 <label for="time-radio-2-18" class="ms-1"> 1216 <h6 class="m-0">10:30 AM</h6> 1217 </label> 1218 </div> 1219 1220 1221 <div class="d-flex time-radios align-items-center py-3"> 1222 <input class="form-check-input me-2" type="radio" 1223 id="time-radio-2-19" 1224 value="10:45 AM" name="time-radio"> 1225 <label for="time-radio-2-19" class="ms-1"> 1226 <h6 class="m-0">10:45 AM</h6> 1227 </label> 1228 </div> 1229 1230 1231 <div class="d-flex time-radios align-items-center py-3"> 1232 <input class="form-check-input me-2" type="radio" 1233 id="time-radio-2-20" 1234 value="11:00 AM" name="time-radio"> 1235 <label for="time-radio-2-20" class="ms-1"> 1236 <h6 class="m-0">11:00 AM</h6> 1237 </label> 1238 </div> 1239 1240 1241 <div class="d-flex time-radios align-items-center py-3"> 1242 <input class="form-check-input me-2" type="radio" 1243 id="time-radio-2-21" 1244 value="11:15 AM" name="time-radio"> 1245 <label for="time-radio-2-21" class="ms-1"> 1246 <h6 class="m-0">11:15 AM</h6> 1247 </label> 1248 </div> 1249 1250 1251 <div class="d-flex time-radios align-items-center py-3"> 1252 <input class="form-check-input me-2" type="radio" 1253 id="time-radio-2-22" 1254 value="11:30 AM" name="time-radio"> 1255 <label for="time-radio-2-22" class="ms-1"> 1256 <h6 class="m-0">11:30 AM</h6> 1257 </label> 1258 </div> 1259 1260 1261 <div class="d-flex time-radios align-items-center py-3"> 1262 <input class="form-check-input me-2" type="radio" 1263 id="time-radio-2-23" 1264 value="11:45 AM" name="time-radio"> 1265 <label for="time-radio-2-23" class="ms-1"> 1266 <h6 class="m-0">11:45 AM</h6> 1267 </label> 1268 </div> 1269 1270 1271 <div class="d-flex time-radios align-items-center py-3"> 1272 <input class="form-check-input me-2" type="radio" 1273 id="time-radio-2-24" 1274 value="12:00 PM" name="time-radio"> 1275 <label for="time-radio-2-24" class="ms-1"> 1276 <h6 class="m-0">12:00 PM</h6> 1277 </label> 1278 </div> 1279 1280 1281 <div class="d-flex time-radios align-items-center py-3"> 1282 <input class="form-check-input me-2" type="radio" 1283 id="time-radio-2-25" 1284 value="12:15 PM" name="time-radio"> 1285 <label for="time-radio-2-25" class="ms-1"> 1286 <h6 class="m-0">12:15 PM</h6> 1287 </label> 1288 </div> 1289 1290 1291 <div class="d-flex time-radios align-items-center py-3"> 1292 <input class="form-check-input me-2" type="radio" 1293 id="time-radio-2-26" 1294 value="12:30 PM" name="time-radio"> 1295 <label for="time-radio-2-26" class="ms-1"> 1296 <h6 class="m-0">12:30 PM</h6> 1297 </label> 1298 </div> 1299 1300 1301 <div class="d-flex time-radios align-items-center py-3"> 1302 <input class="form-check-input me-2" type="radio" 1303 id="time-radio-2-27" 1304 value="12:45 PM" name="time-radio"> 1305 <label for="time-radio-2-27" class="ms-1"> 1306 <h6 class="m-0">12:45 PM</h6> 1307 </label> 1308 </div> 1309 1310 1311 <div class="d-flex time-radios align-items-center py-3"> 1312 <input class="form-check-input me-2" type="radio" 1313 id="time-radio-2-28"
1314 value="01:00 PM" name="time-radio"> 1315 <label for="time-radio-2-28" class="ms-1"> 1316 <h6 class="m-0">01:00 PM</h6> 1317 </label> 1318 </div> 1319 1320 1321 <div class="d-flex time-radios align-items-center py-3"> 1322 <input class="form-check-input me-2" type="radio" 1323 id="time-radio-2-29" 1324 value="01:15 PM" name="time-radio"> 1325 <label for="time-radio-2-29" class="ms-1"> 1326 <h6 class="m-0">01:15 PM</h6> 1327 </label> 1328 </div> 1329 1330 1331 <div class="d-flex time-radios align-items-center py-3"> 1332 <input class="form-check-input me-2" type="radio" 1333 id="time-radio-2-30" 1334 value="01:30 PM" name="time-radio"> 1335 <label for="time-radio-2-30" class="ms-1"> 1336 <h6 class="m-0">01:30 PM</h6> 1337 </label> 1338 </div> 1339 1340 1341 <div class="d-flex time-radios align-items-center py-3"> 1342 <input class="form-check-input me-2" type="radio" 1343 id="time-radio-2-31" 1344 value="01:45 PM" name="time-radio"> 1345 <label for="time-radio-2-31" class="ms-1"> 1346 <h6 class="m-0">01:45 PM</h6> 1347 </label> 1348 </div> 1349 1350 1351 <div class="d-flex time-radios align-items-center py-3"> 1352 <input class="form-check-input me-2" type="radio" 1353 id="time-radio-2-32" 1354 value="02:00 PM" name="time-radio"> 1355 <label for="time-radio-2-32" class="ms-1"> 1356 <h6 class="m-0">02:00 PM</h6> 1357 </label> 1358 </div> 1359 1360 1361 <div class="d-flex time-radios align-items-center py-3"> 1362 <input class="form-check-input me-2" type="radio" 1363 id="time-radio-2-33" 1364 value="02:15 PM" name="time-radio"> 1365 <label for="time-radio-2-33" class="ms-1"> 1366 <h6 class="m-0">02:15 PM</h6> 1367 </label> 1368 </div> 1369 1370 1371 <div class="d-flex time-radios align-items-center py-3"> 1372 <input class="form-check-input me-2" type="radio" 1373 id="time-radio-2-34"
1374 value="02:30 PM" name="time-radio"> 1375 <label for="time-radio-2-34" class="ms-1"> 1376 <h6 class="m-0">02:30 PM</h6> 1377 </label> 1378 </div> 1379 1380 1381 <div class="d-flex time-radios align-items-center py-3"> 1382 <input class="form-check-input me-2" type="radio" 1383 id="time-radio-2-35" 1384 value="02:45 PM" name="time-radio"> 1385 <label for="time-radio-2-35" class="ms-1"> 1386 <h6 class="m-0">02:45 PM</h6> 1387 </label> 1388 </div> 1389 1390 1391 <div class="d-flex time-radios align-items-center py-3"> 1392 <input class="form-check-input me-2" type="radio" 1393 id="time-radio-2-36" 1394 value="03:00 PM" name="time-radio"> 1395 <label for="time-radio-2-36" class="ms-1"> 1396 <h6 class="m-0">03:00 PM</h6> 1397 </label> 1398 </div> 1399 1400 1401 <div class="d-flex time-radios align-items-center py-3"> 1402 <input class="form-check-input me-2" type="radio" 1403 id="time-radio-2-37" 1404 value="03:15 PM" name="time-radio"> 1405 <label for="time-radio-2-37" class="ms-1"> 1406 <h6 class="m-0">03:15 PM</h6> 1407 </label> 1408 </div> 1409 1410 1411 <div class="d-flex time-radios align-items-center py-3"> 1412 <input class="form-check-input me-2" type="radio" 1413 id="time-radio-2-38" 1414 value="03:30 PM" name="time-radio"> 1415 <label for="time-radio-2-38" class="ms-1"> 1416 <h6 class="m-0">03:30 PM</h6> 1417 </label> 1418 </div> 1419 1420 1421 <div class="d-flex time-radios align-items-center py-3"> 1422 <input class="form-check-input me-2" type="radio" 1423 id="time-radio-2-39" 1424 value="03:45 PM" name="time-radio"> 1425 <label for="time-radio-2-39" class="ms-1"> 1426 <h6 class="m-0">03:45 PM</h6> 1427 </label> 1428 </div> 1429 1430 1431 <div class="d-flex time-radios align-items-center py-3"> 1432 <input class="form-check-input me-2" type="radio" 1433 id="time-radio-2-40"
1434 value="04:00 PM" name="time-radio"> 1435 <label for="time-radio-2-40" class="ms-1"> 1436 <h6 class="m-0">04:00 PM</h6> 1437 </label> 1438 </div> 1439 1440 1441 <div class="d-flex time-radios align-items-center py-3"> 1442 <input class="form-check-input me-2" type="radio" 1443 id="time-radio-2-41" 1444 value="04:15 PM" name="time-radio"> 1445 <label for="time-radio-2-41" class="ms-1"> 1446 <h6 class="m-0">04:15 PM</h6> 1447 </label> 1448 </div> 1449 1450 1451 <div class="d-flex time-radios align-items-center py-3"> 1452 <input class="form-check-input me-2" type="radio" 1453 id="time-radio-2-42" 1454 value="04:30 PM" name="time-radio"> 1455 <label for="time-radio-2-42" class="ms-1"> 1456 <h6 class="m-0">04:30 PM</h6> 1457 </label> 1458 </div> 1459 1460 1461 <div class="d-flex time-radios align-items-center py-3"> 1462 <input class="form-check-input me-2" type="radio" 1463 id="time-radio-2-43" 1464 value="04:45 PM" name="time-radio"> 1465 <label for="time-radio-2-43" class="ms-1"> 1466 <h6 class="m-0">04:45 PM</h6> 1467 </label> 1468 </div> 1469 1470 1471 <div class="d-flex time-radios align-items-center py-3"> 1472 <input class="form-check-input me-2" type="radio" 1473 id="time-radio-2-44" 1474 value="05:00 PM" name="time-radio"> 1475 <label for="time-radio-2-44" class="ms-1"> 1476 <h6 class="m-0">05:00 PM</h6> 1477 </label> 1478 </div> 1479 1480 1481 <div class="d-flex time-radios align-items-center py-3"> 1482 <input class="form-check-input me-2" type="radio" 1483 id="time-radio-2-45" 1484 value="05:15 PM" name="time-radio"> 1485 <label for="time-radio-2-45" class="ms-1"> 1486 <h6 class="m-0">05:15 PM</h6> 1487 </label> 1488 </div> 1489 1490 1491 <div class="d-flex time-radios align-items-center py-3"> 1492 <input class="form-check-input me-2" type="radio" 1493 id="time-radio-2-46"
1494 value="05:30 PM" name="time-radio"> 1495 <label for="time-radio-2-46" class="ms-1"> 1496 <h6 class="m-0">05:30 PM</h6> 1497 </label> 1498 </div> 1499 1500 1501 <div class="d-flex time-radios align-items-center py-3"> 1502 <input class="form-check-input me-2" type="radio" 1503 id="time-radio-2-47" 1504 value="05:45 PM" name="time-radio"> 1505 <label for="time-radio-2-47" class="ms-1"> 1506 <h6 class="m-0">05:45 PM</h6> 1507 </label> 1508 </div> 1509 1510 1511 <div class="d-flex time-radios align-items-center py-3"> 1512 <input class="form-check-input me-2" type="radio" 1513 id="time-radio-2-48" 1514 value="06:00 PM" name="time-radio"> 1515 <label for="time-radio-2-48" class="ms-1"> 1516 <h6 class="m-0">06:00 PM</h6> 1517 </label> 1518 </div> 1519 1520 1521 <div class="d-flex time-radios align-items-center py-3"> 1522 <input class="form-check-input me-2" type="radio" 1523 id="time-radio-2-49" 1524 value="06:15 PM" name="time-radio"> 1525 <label for="time-radio-2-49" class="ms-1"> 1526 <h6 class="m-0">06:15 PM</h6> 1527 </label> 1528 </div> 1529 1530 1531 <div class="d-flex time-radios align-items-center py-3"> 1532 <input class="form-check-input me-2" type="radio" 1533 id="time-radio-2-50" 1534 value="06:30 PM" name="time-radio"> 1535 <label for="time-radio-2-50" class="ms-1"> 1536 <h6 class="m-0">06:30 PM</h6> 1537 </label> 1538 </div> 1539 1540 1541 <div class="d-flex time-radios align-items-center py-3"> 1542 <input class="form-check-input me-2" type="radio" 1543 id="time-radio-2-51" 1544 value="06:45 PM" name="time-radio"> 1545 <label for="time-radio-2-51" class="ms-1"> 1546 <h6 class="m-0">06:45 PM</h6> 1547 </label> 1548 </div> 1549 1550 1551 <div class="d-flex time-radios align-items-center py-3"> 1552 <input class="form-check-input me-2" type="radio" 1553 id="time-radio-2-52"
1554 value="07:00 PM" name="time-radio"> 1555 <label for="time-radio-2-52" class="ms-1"> 1556 <h6 class="m-0">07:00 PM</h6> 1557 </label> 1558 </div> 1559 1560 1561 <div class="d-flex time-radios align-items-center py-3"> 1562 <input class="form-check-input me-2" type="radio" 1563 id="time-radio-2-53" 1564 value="07:15 PM" name="time-radio"> 1565 <label for="time-radio-2-53" class="ms-1"> 1566 <h6 class="m-0">07:15 PM</h6> 1567 </label> 1568 </div> 1569 1570 1571 <div class="d-flex time-radios align-items-center py-3"> 1572 <input class="form-check-input me-2" type="radio" 1573 id="time-radio-2-54" 1574 value="07:30 PM" name="time-radio"> 1575 <label for="time-radio-2-54" class="ms-1"> 1576 <h6 class="m-0">07:30 PM</h6> 1577 </label> 1578 </div> 1579 1580 1581 <div class="d-flex time-radios align-items-center py-3"> 1582 <input class="form-check-input me-2" type="radio" 1583 id="time-radio-2-55" 1584 value="07:45 PM" name="time-radio"> 1585 <label for="time-radio-2-55" class="ms-1"> 1586 <h6 class="m-0">07:45 PM</h6> 1587 </label> 1588 </div> 1589 1590 1591 <div class="d-flex time-radios align-items-center py-3"> 1592 <input class="form-check-input me-2" type="radio" 1593 id="time-radio-2-56" 1594 value="08:00 PM" name="time-radio"> 1595 <label for="time-radio-2-56" class="ms-1"> 1596 <h6 class="m-0">08:00 PM</h6> 1597 </label> 1598 </div> 1599 1600 1601 <div class="d-flex time-radios align-items-center py-3"> 1602 <input class="form-check-input me-2" type="radio" 1603 id="time-radio-2-57" 1604 value="08:15 PM" name="time-radio"> 1605 <label for="time-radio-2-57" class="ms-1"> 1606 <h6 class="m-0">08:15 PM</h6> 1607 </label> 1608 </div> 1609 1610 1611 <div class="d-flex time-radios align-items-center py-3"> 1612 <input class="form-check-input me-2" type="radio" 1613 id="time-radio-2-58"
1614 value="08:30 PM" name="time-radio"> 1615 <label for="time-radio-2-58" class="ms-1"> 1616 <h6 class="m-0">08:30 PM</h6> 1617 </label> 1618 </div> 1619 1620 1621 <div class="d-flex time-radios align-items-center py-3"> 1622 <input class="form-check-input me-2" type="radio" 1623 id="time-radio-2-59" 1624 value="08:45 PM" name="time-radio"> 1625 <label for="time-radio-2-59" class="ms-1"> 1626 <h6 class="m-0">08:45 PM</h6> 1627 </label> 1628 </div> 1629 1630 1631 <div class="d-flex time-radios align-items-center py-3"> 1632 <input class="form-check-input me-2" type="radio" 1633 id="time-radio-2-60" 1634 value="09:00 PM" name="time-radio"> 1635 <label for="time-radio-2-60" class="ms-1"> 1636 <h6 class="m-0">09:00 PM</h6> 1637 </label> 1638 </div> 1639 1640 1641 <div class="d-flex time-radios align-items-center py-3"> 1642 <input class="form-check-input me-2" type="radio" 1643 id="time-radio-2-61" 1644 value="09:15 PM" name="time-radio"> 1645 <label for="time-radio-2-61" class="ms-1"> 1646 <h6 class="m-0">09:15 PM</h6> 1647 </label> 1648 </div> 1649 1650 1651 <div class="d-flex time-radios align-items-center py-3"> 1652 <input class="form-check-input me-2" type="radio" 1653 id="time-radio-2-62" 1654 value="09:30 PM" name="time-radio"> 1655 <label for="time-radio-2-62" class="ms-1"> 1656 <h6 class="m-0">09:30 PM</h6> 1657 </label> 1658 </div> 1659 1660 1661 <div class="d-flex time-radios align-items-center py-3"> 1662 <input class="form-check-input me-2" type="radio" 1663 id="time-radio-2-63" 1664 value="09:45 PM" name="time-radio"> 1665 <label for="time-radio-2-63" class="ms-1"> 1666 <h6 class="m-0">09:45 PM</h6> 1667 </label> 1668 </div> 1669 1670 1671 <div class="d-flex time-radios align-items-center py-3"> 1672 <input class="form-check-input me-2" type="radio" 1673 id="time-radio-2-64" 1674 value="10:00 PM" name="time-radio"> 1675 <label for="time-radio-2-64" class="ms-1"> 1676 <h6 class="m-0">10:00 PM</h6> 1677 </label> 1678 </div> 1679 1680 1681 </div> 1682 <div class="modal-footer position-relative px-2"> 1683 <button type="button" style="font-size:30px; position: absolute; left: 0;" 1684 class="btn time-modal-close ri-close-circle-line btn-danger px-2 ms-3 py-0"></button> 1685 <div class="text-center mx-auto"> 1686 <button class="btn btn-danger px-5 updateTimeBtn">Update Time</button> 1687 </div> 1688 </div> 1689 </div> 1690 </div> 1691 </div> 1692 </div> 1693 <!-- Time Modal Close --> 1694 <!-- Location Modal Start --> 1695 <div class="container-fluid cart wow fadeIn" data-wow-delay="0.1s"> 1696 <div class="modal fade" id="locationModal" tabindex="-1" aria-labelledby="exampleModalLabel" 1697 aria-hidden="true"> 1698 <div class="modal-dialog modal-dialog-centered modal
1698-dialog-scrollable"> 1699 <div class="modal-content"> 1700 <div class="modal-header p-2"> 1701 <ul class="nav nav-pills w-100" id="pills-tab" role="tablist"> 1702 <li class="nav-item w-100" role="presentation"> 1703 <button class="nav-link rounded-0 w-100 active" id="pills-pickup-tab" 1704 data-bs-toggle="pill" data-bs-target="#pills-pickup" type="button" 1705 role="tab" aria-controls="pills-pickup" aria-selected="true">Pickup</button> 1706 </li> 1707 1708 </ul> 1709 </div> 1710 <div class="modal-body py-0 my-0 scrollable"> 1711 <div class="tab-content" id="pills-tabContent"> 1712 <div class="tab-pane fade show active" id="pills-pickup" role="tabpanel" 1713 aria-labelledby="pills-pickup-tab"> 1714 <div class="py-4 border-bottom"> 1715 <h5>Select Location</h5> 1716 <p><span class="ri-map-pin-rangex-fill"></span> Find the Nearest Store</p> 1717 <span 1718 class="location-span border rounded rounded-3 px-2 d-flex w-100 justify-content-between align-items-center"><input 1719 class="cart_input py-2 w-100" 1720 placeholder="Search by city, state, or ZIP" type="text"><span 1721 class="ri-send-plane-fill"></span></span> 1722 </div> 1723 <!-- Location's Parent Start--> 1724 <div class=""> 1725 <!-- Location-2 --> 1726 1727 1728 1729 <div 1730 class="d-flex justify-content-between location-card border-bottom py-3"> 1731 <div class="d-flex align-items-start"> 1732 <input class="form-check-input me-2 location-radio" type="radio" 1733 id="location-6" name="choosen_location" 1734 data-branch-id="6" checked> 1735 <label for="location-6" 1736 class="ms-1 branch-location-parent"> 1737 <h6 class="small fw-bold m-0">Sugar Papi</h6> 1738 <p class="small fw-bold m-0 branch-location"> 1739 Aldow Industrial Park, Aldow Enterprise Park, 2 Raven St, Manchester M12 6AE, UK</p> 1740 <input type="hidden" class="tax-price" value=1.14> 1741 <b class="text-success m-0">Item Available</b> 1742 </label> 1743 </div> 1744 <a class="location-description" data-bs-toggle="modal" 1745 data-bs-target="#locationDescription" style="cursor: pointer"> 1746 <!-- Use the loop index to select the corresponding image --> 1747 <img class="location-img" src="https://sugarpappi.com/public/img/location-img1.png" 1748 alt="location-img1"> 1749 <p class="small m-0">+100 miles</p> 1750 <p class="text-danger">Store Info</p> 1751 </a> 1752 </div> 1753 <!-- Location-2 End --> 1754 </div> 1755 <!-- Location's Parent End --> 1756 </div> 1757 <div class="tab-pane fade" id="pills-delivery" role="tabpanel" 1758 aria-labelledby="pills-delivery-tab"> 1759 <form> 1760 <div class="row g-3 my-5"> 1761 <div class="col-12 mt-0"> 1762 <h5>Enter Delivery Address</h5> 1763 <div class="form-floating"> 1764 <input type="text" class="form-control" 1765 placeholder="Delivery Address"> 1766 <label>Delivery Address</label> 1767 </div> 1768 </div> 1769 <div class="col-12"> 1770 <div class="form-floating"> 1771 <input type="text" class="form-control" 1772 placeholder="Apt, Floor, Suite, etc. (Optional)"> 1773 <label>Apt, Floor, Suite, etc. (Optional)</label> 1774 </div> 1775 </div> 1776 </div> 1777 </form> 1778 </div> 1779 </div> 1780 </div> 1781 <div class="modal-footer position-relative px-2"> 1782 <button type="button" style="font-size:30px; position: absolute; left: 0;" 1783 class="btn location-modal-close ri-close-circle-line btn-danger px-2 ms-3 py-0"></button> 1784 <div class="text-center mx-auto"> 1785 <button class="btn btn-danger px-5 updateLocationBtn location-update-btn">Update 1786 Location</button> 1787 </div> 1788 </div> 1789 </div> 1790 </div> 1791 </div> 1792 </div> 1793 <!--Location Modal End --> 1794 <!-- Location Description Modal Start --> 1795 1796 <div class="container-fluid cart wow fadeIn" data-wow-delay="0.1s"> 1797 <div class="modal fade" id="locationDescription" tabindex="-1" aria-labelledby="exampleModalLabel" 1798 aria-hidden="true"> 1799 <div class="modal-dialog border-0 modal-dialog-centered modal
1799-dialog-scrollable"> 1800 <div class="modal-content border-0"> 1801 <div class="modal-body p-0"> 1802 <iframe class="w-100" height="300" 1803 src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3011.8769358092172!2d-73.82903412475196!3d40.98417552090991!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89c2933bd5635a09%3A0x502bc89c049525ac!2s2562%20Central%20Park%20Ave%2C%20Yonkers%2C%20NY%2010710%2C%20USA!5e0!3m2!1sen!2s!4v1700483134249!5m2!1sen!2s" 1804 style="border:0;" allowfullscreen="" loading="lazy" 1805 referrerpolicy="no-referrer-when-downgrade"></iframe> 1806 <div class="p-3"> 1807 <h6 class="mb-3 locationHeading">AZ Nutrition & Smoothies</h6> 1808 <p class="m-0 address1">2562 Central Park Av</p> 1809 <p class="mb-3 address2">yonkers, NY 10710</p> 1810 <ul> 1811 <li class="selected-time" data-time="6:00 AM"> 1812 <span class="ri-time-line"> </span>Today Pickup: 1813 6:00 AM 1814 </li> 1815 <li> 1816 Estimated prep time: Available immediately 1817 </li> 1818 </ul> 1819 </div> 1820 </div> 1821 <div class="modal-footer"> 1822 <button type="button" style="font-size:30px" 1823 class="btn location-description-btn ri-close-circle-line btn-danger px-2 py-0 me-auto"></button> 1824 </div> 1825 </div> 1826 </div> 1827 </div> 1828 </div> 1829 <!-- Location Description Modal End --> 1830 <!-- Modals End --> 1831 <!--Cart Section Start --> 1832 1833 <div class="container-fluid cart wow fadeIn" data-wow-delay="0.1s"> 1834 <div class="col-11 mx-auto mt-5"> 1835 <!-- Diviser --> 1836 <div class="row justify-content-center justify-content-md-between align-items-start"> 1837 <!-- The Card Part --> 1838 <div class="col-md-6 col-sm-11 col-12 "> 1839 <!-- cards Parent --> 1840 <div class="card-parent"> 1841 <h6>You Order Items (<span class='order-items'>0</span>)</h6> 1842 <p class="small text-muted mb-3">Tick the items you want to place now. Unchecked items stay in My Cart.</p> 1843 <!-- The First Card --> 1844 <p class="text-danger text-center">Your cart is empty.</p> 1845 1846 </div> 1847 <div> 1848 1849 </div> 1850 </div> 1851 <!-- Cart Part End --> 1852 <!-- The Right Side Bar --> 1853 <div class="mt-md-5 mt-4 col-md-5 col-sm-11 billing col-12"> 1854 <div class="row justify-content-end"> 1855 <div class="col-xl-11"> 1856 <!-- Alert And Location Start --> 1857 <div class="border-bottom pb-sm-4 pb-3"> 1858 1859 1860 <div class="d-flex align-content-center justify-content-between"> 1861 <p class="pb-0 text-dark fw-bold">HOW TO GET IT</p> 1862 </div> 1863 1864 1865 1866 1867 </div> 1868 1869 </div>
1870 <!-- Alert And Location End --> 1871 <!-- Tip part--> 1872 <div class="mt-sm-4 pb-sm-4 mt-3 pb-3 border-bottom"> 1873 <p class>ADD A TIP</p> 1874 <!-- tips Button --> 1875 <div class="collapse-div mt-3 align-items-center justify-content-between"> 1876 <span class="border border-2 px-2 py-3 d-flex align-items-center">£ <input 1877 type="text" name="tipInputName" 1878 class="ps-2 w-100 cart_input increment-input tip-input"></span> 1879 </div> 1880 </div> 1881 1882 <!-- Loyalty Points Section--> 1883 <div class="mt-sm-4 pb-sm-4 mt-3 pb-3 border-bottom"> 1884 <!-- Available Points --> 1885 <div class="d-flex justify-content-between align-items-center mb-2"> 1886 <span>Loyalty Points:</span> 1887 <strong id="availablePoints">0</strong> 1888 </div> 1889 <!-- Input + Button --> 1890 <div class="collapse-div mt-3 d-flex align-items-center gap-2"> 1891 <span class="border border-2 px-2 py-3 d-flex align-items-center w-100"> 1892 <input type="number" name="loyalty_points" id="loyaltyPointInput" 1893 class="ps-2 w-100 cart_input" 1894 placeholder="Enter points"> 1895 </span> 1896 <!-- Use Points Button --> 1897 1898 </div> 1899 <!-- Discount Display --> 1900 <div class="mt-2"> 1901 <small>Price Per Point: £<span id="pricePerPoint">0.10</span></small> 1902 </div> 1903 </div> 1904 1905 <!-- Tip Part End --> 1906 <!-- Coupan Part Start --> 1907 1908 <!-- Coupan Part End --> 1909 <!-- Blling Start --> 1910 1911 <div class="mt-sm-4 pb-sm-4 mt-3 pb-3"> 1912 <p class="text-danger text-center">Your cart is empty.</p> 1913 1914 <form method="POST" action="https://sugarpappi.com/checkout-selected" id="checkoutSelectedForm"> 1915 <input type="hidden" name="_token" value="jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA"> <button type="submit" class="mt-3 w-100 btn py-2 continue-to-add-tip continue-to-payment" style="background:#ff2d87;color:#fff;border:0"> 1916 Continue to Payment 1917 </button> 1918 </form> 1919 </div> 1920 1921 <!-- Billing ENd --> 1922 </div> 1923 </div> 1924 <!-- Right Side Bar End --> 1925 </div> 1926 1927 </div> 1928 </div> 1929 </div> 1930 <!--Cart Section End --> 1931</div> 1932</section> 1933 </div> 1934 <div class="container-fluid text-light footer mt-5 pt-5 wow fadeIn" data-wow-delay="0.1s"> 1935 <div class="container py-5"> 1936 <div class="row g-5"> 1937 <div class="col-lg-4 col-md-6"> 1938 <h4 class="section-title ff-secondary text-start fw-normal mb-4 text-white">Links</h4> 1939 <a class="btn btn-link" href="https://sugarpappi.com">Home</a> 1940 <a class="btn btn-link" href="https://sugarpappi.com/get-our-gallery">Explore Sugar Pappi Gallery</a> 1941 <a class="btn btn-link" href="https://sugarpappi.com/dessert-wholesale">Dessert Wholesale</a> 1942 <a class="btn btn-link" href="https://sugarpappi.com/private-bookings">Private Bookings</a> 1943 <a class="btn btn-link" href="https://wa.me/447727412922" target="_blank" rel="noopener">WhatsApp Us</a> 1944 <a class="btn btn-link" href="https://sugarpappi.com/get-faqs">FAQ's</a> 1945 1946 </div> 1947 <div class="col-lg-4 col-md-6"> 1948 <h4 class="section-title ff-secondary text-start fw-normal mb-4 text-white">Contact Us</h4> 1949 1950 <p class="mb-2"><a href="mailto:[email protected]" class="text-white"><span class="fa fa-envelope me-3"></span>[email protected]</a></p> 1951 <div class="d-flex pt-2"> 1952 1953 <a class="btn btn-outline-light btn-social" href=""><span 1954 class="fab fa-facebook-f"></span></a> 1955 <a class="btn btn-outline-light btn-social" href=""><span class="fab fa-youtube"></span></a> 1956 <a class="btn btn-outline-light btn-social" 1957 href=""><span 1958 class="fab fa-instagram"></span></a> 1959 </div> 1960 </div> 1961 <div class="col-lg-4 col-md-6"> 1962 <h4 class="section-title ff-secondary text-start fw-normal mb-4 text-white">Stay Updated!</h4> 1963 <p class="small text-white">This form is protected by reCAPTCHA and the Google <a class="text-white text-decoration-underline" rel="noreferrer noopener" 1964 href="https://policies.google.com/privacy" target="_blank">Privacy Policy</a> and <a class="text-white text-decoration-underline" 1965 rel="noreferrer noopener" href="https://policies.google.com/terms" target="_blank">Terms of 1966 Service</a> apply.</p> 1967 <div class="position-relative mx-auto" style="max-width: 400px;"> 1968 <input class="form-control border-primary w-100 py-3 ps-4 footer-email-box" type="text" 1969 placeholder="Your email"> 1970 <button type="button" 1971 id="signupButton" class="btn btn-primary py-2 position-absolute top-0 end-0 mt-2 me-2">SignUp</button> 1972 </div> 1973 </div> 1974 </div> 1975 </div> 1976 <div class="container"> 1977 <div class="copyright"> 1978 <div class="row"> 1979 <div class="col-md-6 text-center text-md-start"> 1980 <p class="mb-0 text-white">Sugar Pappi © 1981
1981<script> 1982 document.write(new Date().getFullYear()); 1983 </script>
1983 1984 </p> 1985 </div> 1986 <div class="col-md-6 text-center text-md-end"> 1987 <div class="footer-menu"> 1988 1989 <a href="https://sugarpappi.com/privacy-policy">Privacy Policy</a> 1990 <a href="https://sugarpappi.com/terms-conditions">Terms & Conditions</a> 1991 <a href="https://sugarpappi.com/getcontact">Contact Us</a> 1992 <a href="https://sugarpappi.com/get-faqs">FAQ's</a> 1993 </div> 1994 </div> 1995 1996 </div> 1997 </div> 1998 </div> 1999</div> 2000<!-- Footer End --> 2001 2002<!-- Back to Top --> 2003<a href="#" class="btn btn-lg btn-primary btn-lg-square back-to-top"><i class="bi bi-arrow-up"></i></a> 2004</div> 2005
2006<script> 2007 document.getElementById('signupButton').addEventListener('click', function() { 2008 // Redirect to the desired route 2009 window.location.href = "https://sugarpappi.com/getRegistor"; 2010 }); 2011</script>
2011 2012 </div> 2013 </div> 2014 </div> 2015 2016 <!-- CSS Libraries --> 2017 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css"> 2018 2019 <!-- JavaScript Libraries --> 2020
2020<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
2020 2021
2021<script>if (window.spInitStorefront) window.spInitStorefront();</script>
2021 2022
2022<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
2022 2023
2023<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script>
2023 2024
2024<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.34/moment-timezone-with-data.min.js"></script>
2024 2025
2025<script src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.39.0/js/tempusdominus-bootstrap-4.min.js"></script>
2025 2026
2026<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
2026 2027
2027<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
2027 2028
2028<script src="https://cdnjs.cloudflare.com/ajax/libs/lightgallery/1.6.14/js/lightgallery-all.min.js"></script>
vendor: 78 bytes, lines 2028-2031
2028 2029 <script src='https://www.google.com/recaptcha/api.js'></script> 2030 2031
2031<script src="https://sugarpappi.com/public/lib/easing/easing.min.js"></script>
2031 2032
2032<script src="https://sugarpappi.com/public/lib/waypoints/waypoints.min.js"></script>
2032 2033
2033<script src="https://sugarpappi.com/public/lib/counterup/counterup.min.js"></script>
2033 2034
2034<script src="https://sugarpappi.com/public/lib/owlcarousel/owl.carousel.min.js"></script>
2034 2035 2036 2037 2038 <!-- Template Javascript --> 2039
2039<script src="https://sugarpappi.com/public/js/main.js"></script>
2039 2040
2040<script> 2041 $(document).on('click', '#closeSidebar', function () { 2042 $('.sidebar').addClass('hidden'); 2043 $('body').removeClass('nav-open'); 2044 }); 2045 $(document).on('click', '#spMenuToggle', function (e) { 2046 e.preventDefault(); 2047 e.stopPropagation(); 2048 var group = $(this).closest('.sp-menu-group'); 2049 var open = group.toggleClass('open').hasClass('open'); 2050 $(this).attr('aria-expanded', open ? 'true' : 'false'); 2051 $('#spMenuCats').prop('hidden', !open); 2052 }); 2053 function spSyncHeaderOffset() { 2054 var header = document.querySelector('.sp-site-header'); 2055 if (header) { 2056 document.documentElement.style.setProperty('--sp-header-offset', header.offsetHeight + 'px'); 2057 } 2058 } 2059 $(window).on('resize', spSyncHeaderOffset); 2060 $(spSyncHeaderOffset); 2061 $(document).on('show.bs.modal', '.menu-modal', function () { 2062 if (this.parentElement !== document.body) { 2063 document.body.appendChild(this); 2064 } 2065 }); 2066 function activateMenuTab(hash) { 2067 if (!hash) return; 2068 var id = hash.replace('#', ''); 2069 var $btn = $(); 2070 if (id === 'pappi-special') { 2071 $btn = $('[data-special="1"]').first(); 2072 } 2073 if (!$btn.length) { 2074 $btn = $('[data-pane="' + id + '"]'); 2075 } 2076 if (!$btn.length) { 2077 $btn = $('[data-bs-target="#' + id + '"]'); 2078 } 2079 if ($btn.length) { 2080 $btn.trigger('click'); 2081 if (typeof window.spShowMenuPane === 'function' && $btn.data('pane')) { 2082 window.spShowMenuPane($btn.data('pane') || $btn.attr('data-pane')); 2083 } 2084 var el = document.getElementById(id) || document.getElementById('menuContainer'); 2085 if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' }); 2086 return true; 2087 } 2088 var target = document.getElementById(id); 2089 if (target) { 2090 target.scrollIntoView({ behavior: 'smooth', block: 'start' }); 2091 return true; 2092 } 2093 return false; 2094 } 2095 $(document).on('click', '.sidebar a.sp-nav-link', function (e) { 2096 var href = this.getAttribute('href') || ''; 2097 var hashPos = href.indexOf('#'); 2098 $('.sidebar').addClass('hidden'); 2099 $('body').removeClass('nav-open'); 2100 if (hashPos === -1) return; 2101 var hash = href.substring(hashPos); 2102 if (hash.indexOf('menuTab') === -1 && hash !== '#menuContainer' && hash !== '#pappi-special') return; 2103 if ($('#menuContainer').length) { 2104 e.preventDefault(); 2105 if (hash === '#menuContainer' || hash === '#pappi-special') { 2106 var target = document.querySelector(hash); 2107 if (target) target.scrollIntoView({ behavior: 'smooth', block: 'start' }); 2108 return; 2109 } 2110 activateMenuTab(hash); 2111 } 2112 }); 2113 $(function () { 2114 if (window.location.hash) { 2115 activateMenuTab(window.location.hash); 2116 } 2117 }); 2118 $(document).on('click', '.select-store-btn', function () { 2119 var id = $(this).data('branch'); 2120 $.post('https://sugarpappi.com/select-store', {_token: 'jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA', branch_id: id}, function (res) { 2121 // #region agent log 2122 fetch('http://127.0.0.1:7335/ingest/7b869b6d-0737-4031-abfa-725419739f94',{method:'POST',headers:{'Content-Type':'application/json','X-Debug-Session-Id':'1796d5'},body:JSON.stringify({sessionId:'1796d5',hypothesisId:'S2',location:'app.blade.php:select-store-btn',message:'client store redirect',data:{redirect:res && res.redirect},timestamp:Date.now()})}).catch(function(){}); 2123 // #endregion 2124 if (res.redirect) { window.location = res.redirect; } 2125 }).fail(function (xhr) { 2126 toastr.error((xhr.responseJSON && xhr.responseJSON.message) || 'Store unavailable'); 2127 }); 2128 }); 2129 (function () { 2130 function isMobileHeader() { 2131 return window.matchMedia('(max-width: 991.98px)').matches; 2132 } 2133 function closeHeaderDropdowns() { 2134 document.querySelectorAll('.sp-header-actions [data-bs-toggle="dropdown"]').forEach(function (el) { 2135 var inst = bootstrap.Dropdown.getInstance(el); 2136 if (inst) inst.hide(); 2137 }); 2138 document.body.classList.remove('sp-header-modal-open'); 2139 } 2140 $(document).on('show.bs.dropdown', '.sp-header-actions .dropdown', function () { 2141 if (isMobileHeader()) document.body.classList.add('sp-header-modal-open'); 2142 }); 2143 $(document).on('hidden.bs.dropdown', '.sp-header-actions .dropdown', function () { 2144 if (!$('.sp-header-actions .dropdown-menu.show').length) { 2145 document.body.classList.remove('sp-header-modal-open'); 2146 } 2147 }); 2148 $(document).on('click', '#spHeaderBackdrop, .sp-dropdown-close', function (e) { 2149 e.preventDefault(); 2150 e.stopPropagation(); 2151 closeHeaderDropdowns(); 2152 }); 2153 })(); 2154 (function () { 2155 function formatMmSs(remain) { 2156 remain = Math.max(0, remain); 2157 if (remain >= 3600) { 2158 var h = Math.floor(remain / 3600); 2159 var hm = String(Math.floor((remain % 3600) / 60)).padStart(2, '0'); 2160 return h + 'h ' + hm + 'm'; 2161 } 2162 var m = String(Math.floor(remain / 60)).padStart(2, '0'); 2163 var s = String(remain % 60).padStart(2, '0'); 2164 return m + ':' + s; 2165 } 2166 function hideWindowActions(el) { 2167 el.querySelectorAll('.js-window-actions, .sp-remove-item, .sp-edit-item, .sp-btn-pink, #spRemoveItemsBtn').forEach(function (n) { 2168 n.style.display = 'none'; 2169 }); 2170 } 2171 function expireAndReload(el) { 2172 hideWindowActions(el); 2173 var label = el.querySelector('.timer-remain'); 2174 if (label) label.textContent = '00:00'; 2175 if (el.id === 'addToOrderTimer') { 2176 var mins = el.getAttribute('data-minutes') || '10'; 2177 el.innerHTML = 'Your ' + mins + ' minutes are over. The order is placed as it is.'; 2178 } else if (el.getAttribute('data-wholesale') === '1') { 2179 var note = el.querySelector('.sp-timer-note'); 2180 if (note) note.textContent = 'You can no longer update this order.'; 2181 } 2182 if (!window.__spReloadedTimer) { 2183 window.__spReloadedTimer = true; 2184 setTimeout(function () { window.location.reload(); }, 400); 2185 } 2186 } 2187 function tickCountdowns() { 2188 document.querySelectorAll('[data-sp-countdown]').forEach(function (el) { 2189 var remain = parseInt(el.getAttribute('data-sp-countdown'), 10); 2190 if (isNaN(remain)) return; 2191 remain -= 1; 2192 if (remain < 0) remain = 0; 2193 el.setAttribute('data-sp-countdown', String(remain)); 2194 var label = el.querySelector('.timer-remain'); 2195 if (remain <= 0) { 2196 expireAndReload(el); 2197 return; 2198 } 2199 if (label) label.textContent = formatMmSs(remain); 2200 }); 2201 } 2202 var timers = document.querySelectorAll('[data-sp-countdown]'); 2203 if (timers.length) {
2204 timers.forEach(function (el) { 2205 var remain = parseInt(el.getAttribute('data-sp-countdown'), 10); 2206 if (!isNaN(remain) && remain <= 0) { 2207 expireAndReload(el); 2208 } 2209 }); 2210 setInterval(tickCountdowns, 1000); 2211 } 2212 })(); 2213 (function () { 2214 var addMins = 3; 2215 function csrfToken() { 2216 var token = document.querySelector('meta[name="csrf-token"]'); 2217 return token ? token.getAttribute('content') : ''; 2218 } 2219 function postRemove(url, itemIds) { 2220 return fetch(url, { 2221 method: 'POST', 2222 headers: { 2223 'Content-Type': 'application/json', 2224 'X-CSRF-TOKEN': csrfToken(), 2225 'Accept': 'application/json' 2226 }, 2227 body: JSON.stringify({ item_ids: itemIds }) 2228 }).then(function (res) { return res.json().then(function (data) { return { ok: res.ok, data: data }; }); }); 2229 } 2230 function afterRemove(out, isWholesale) { 2231 if (!out.ok || (out.data && out.data.success === false)) { 2232 if (typeof Swal !== 'undefined') { 2233 Swal.fire('Error', (out.data && out.data.message) || 'Could not remove item.', 'error'); 2234 } else { 2235 alert((out.data && out.data.message) || 'Could not remove item.'); 2236 } 2237 return; 2238 } 2239 var msg = (out.data && out.data.message) || (isWholesale 2240 ? 'Product removed.' 2241 : ('Product removed. The ' + addMins + '-minute timer has started again.')); 2242 if (typeof Swal !== 'undefined') { 2243 Swal.fire('Removed', msg, 'success').then(function () { window.location.reload(); }); 2244 } else { 2245 window.location.reload(); 2246 } 2247 } 2248 function confirmRemove(url, itemId, name, count, isWholesale) { 2249 var onlyOne = parseInt(count, 10) === 1; 2250 var text; 2251 if (onlyOne) { 2252 text = 'This is the only item. Removing it will empty the order.'; 2253 } else if (isWholesale) { 2254 text = (name || 'This product') + ' will be removed from this order.'; 2255 } else { 2256 text = (name || 'This product') + ' will be removed and the ' + addMins + '-minute timer will start again.'; 2257 } 2258 if (typeof Swal === 'undefined') { 2259 if (!window.confirm(text)) return; 2260 postRemove(url, [itemId]).then(function (out) { afterRemove(out, isWholesale); }); 2261 return; 2262 } 2263 Swal.fire({ 2264 title: 'Remove this product?', 2265 text: text, 2266 icon: 'warning', 2267 showCancelButton: true, 2268 confirmButtonColor: '#ff2d87', 2269 confirmButtonText: 'Yes, remove it' 2270 }).then(function (result) { 2271 if (!result.isConfirmed) return; 2272 postRemove(url, [itemId]).then(function (out) { afterRemove(out, isWholesale); }); 2273 }); 2274 } 2275 document.addEventListener('click', function (e) { 2276 var btn = e.target.closest('.sp-remove-item'); 2277 if (!btn) return; 2278 e.preventDefault(); 2279 var isWholesale = btn.getAttribute('data-wholesale') === '1' 2280 || !!(btn.closest('[data-wholesale="1"]')); 2281 confirmRemove( 2282 btn.getAttribute('data-remove-url'), 2283 btn.getAttribute('data-item-id'), 2284 btn.getAttribute('data-item-name'), 2285 btn.getAttribute('data-item-count'), 2286 isWholesale 2287 ); 2288 }); 2289 var bar = document.getElementById('addToOrderTimer'); 2290 var btn = document.getElementById('spRemoveItemsBtn'); 2291 if (!bar || !btn) return; 2292 var items = []; 2293 try { items = JSON.parse(bar.getAttribute('data-items') || '[]'); } catch (e) { items = []; } 2294 var url = bar.getAttribute('data-remove-url'); 2295 btn.addEventListener('click', function () { 2296 if (!items.length) { 2297 if (typeof Swal !== 'undefined') Swal.fire('No items', 'There is nothing to remove from this order.', 'info'); 2298 return; 2299 } 2300 if (items.length === 1) { 2301 confirmRemove(url, items[0].id, items[0].name, 1); 2302 return; 2303 } 2304 if (typeof Swal === 'undefined') return; 2305 var inputOptions = {};
2306 items.forEach(function (item) { 2307 inputOptions[item.id] = item.name + ' (x' + item.qty + ')'; 2308 }); 2309 Swal.fire({ 2310 title: 'Please select the item you want to remove', 2311 input: 'select', 2312 inputOptions: inputOptions, 2313 inputPlaceholder: 'Select an item', 2314 showCancelButton: true, 2315 confirmButtonColor: '#ff2d87', 2316 confirmButtonText: 'Continue' 2317 }).then(function (picked) { 2318 if (!picked.isConfirmed || !picked.value) return; 2319 var chosen = items.filter(function (item) { return String(item.id) === String(picked.value); })[0]; 2320 confirmRemove(url, picked.value, chosen ? chosen.name : '', items.length); 2321 }); 2322 }); 2323 })(); 2324 (function () { 2325 var banner = document.querySelector('.app-download-banner'); 2326 var footer = document.querySelector('.footer'); 2327 if (!banner || !footer) return; 2328 function syncBanner() { 2329 var rect = footer.getBoundingClientRect(); 2330 var footerInView = rect.top < window.innerHeight && rect.bottom > 0; 2331 banner.classList.toggle('hide-for-footer', footerInView); 2332 banner.style.setProperty('display', footerInView ? 'none' : 'flex', 'important'); 2333 } 2334 window.addEventListener('scroll', syncBanner, { passive: true }); 2335 window.addEventListener('resize', syncBanner); 2336 if ('IntersectionObserver' in window) { 2337 new IntersectionObserver(function (entries) { 2338 var hide = entries[0].isIntersecting; 2339 banner.classList.toggle('hide-for-footer', hide); 2340 banner.style.setProperty('display', hide ? 'none' : 'flex', 'important'); 2341 }, { threshold: 0, rootMargin: '0px' }).observe(footer); 2342 } 2343 syncBanner(); 2344 })(); 2345 </script>
2345 2346
2346<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>
vendor: 1 bytes, line 2346
2346
2347<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.8.0/pikaday.min.js"></script>
vendor: 1 bytes, line 2347
2347
2348<script> 2349 2350 2351 $(function() { 2352 $('.location-update-btn').click(function() { 2353 $('.location-radio').each(function() { 2354 if ($(this).is(':checked')) { 2355 let branchLoc = $(this).siblings('.branch-location-parent').find( 2356 '.branch-location').text(); 2357 let tax=$(this).siblings('.branch-location-parent').find('.tax-price').val(); 2358 $('.tax-value').text('£'+tax); 2359 Total(); 2360 $('.branch-pickup').each(function() { 2361 $(this).text(branchLoc); 2362 }) 2363 } 2364 }) 2365 $('#locationModal').modal('hide'); 2366 $('#time-Modal').modal('show'); 2367 }) 2368 //Modal Control 2369 $('.modal-content').click(function() { 2370 event.stopPropagation(); 2371 }); 2372 $('.locattion-button-show-btn').click(function() { 2373 event.stopPropagation(); 2374 $('#time-Modal').modal('hide'); 2375 }); 2376 $('.time-modal-close').click(function() { 2377 event.stopPropagation(); 2378 $('#time-Modal').modal('hide'); 2379 }); 2380 $('#locationModal').click(function() { 2381 event.stopPropagation(); 2382 $('#time-Modal').modal('show'); 2383 }); 2384 $('.location-modal-close').click(function() { 2385 event.stopPropagation(); 2386 $('#locationModal').modal('hide'); 2387 $('#time-Modal').modal('show'); 2388 }) 2389 $('.location-description-btn').click(function() { 2390 event.stopPropagation(); 2391 $('#locationDescription').modal('hide'); 2392 $('#locationModal').modal('show'); 2393 }); 2394 2395 $('.calender').click(function() { 2396 event.stopPropagation(); 2397 $('.time_input').click(); 2398 }); 2399 2400 $('.location-description').each(function() { 2401 $(this).click(function() { 2402 $('#locationModal').modal('hide'); 2403 }) 2404 }); 2405 $('#locationDescription').click(function() { 2406 event.stopPropagation(); 2407 $('#locationModal').modal('show'); 2408 }); 2409 2410 // Initialize Pikaday 2411 var picker = new Pikaday({ 2412 field: document.getElementById('datepicker'), 2413 format: 'YYYY-MM-DD', // Adjust the format as needed 2414 yearRange: [1900, moment().year()], // Set the range of selectable years 2415 showYearDropdown: true, // Display a dropdown for selecting the year 2416 // You can customize other options as needed 2417 minDate: new Date() // Set the minimum date to the current date 2418 }); 2419 //coupan Control; 2420 $('.coupan').on('click keydown keyup keypress', 'input', function() { 2421 event.stopPropagation() 2422 if ($(this).val() == '') { 2423 $('.coupan .btn').text('Cancel'); 2424 } else { 2425 $('.coupan .btn').text('Apply'); 2426 } 2427 $('.coupan .btn').removeAttr('hidden'); 2428 $('.coupan span').css('width', '72%') 2429 }); 2430 $(document).click(function() { 2431 if ($('.coupan .btn').text() == 'Cancel') { 2432 $('.coupan .btn').attr('hidden', true); 2433 $('.coupan span').css('width', '100%') 2434 } 2435 }) 2436 // redeem control 2437 let loyaltyRedeemAmount = 0; 2438 $('#loyaltyPointInput').on('input', function () { 2439 let availablePoints = parseFloat($('#availablePoints').text()) || 0; 2440 let pricePerPoint = parseFloat($('#pricePerPoint').text()) || 0 2441 let enteredPoints = parseFloat($(this).val()) || 0; 2442 // Reset case 2443 if (enteredPoints <= 0) { 2444 loyaltyRedeemAmount = 0; 2445 $('.redeem-value').text('£0'); 2446 Total(); 2447 return; 2448 } 2449 // Validation - Using toastr instead of alert 2450 if (enteredPoints > availablePoints) { 2451 toastr.error('You cannot use more than available points'); 2452 $(this).val('');
2453 loyaltyRedeemAmount = 0; 2454 $('.redeem-value').text('£0'); 2455 Total(); 2456 return; 2457 } 2458 // Calculate 2459 loyaltyRedeemAmount = enteredPoints * pricePerPoint; 2460 $('.redeem-value').text('£' + loyaltyRedeemAmount.toFixed(2)); 2461 // Recalculate total 2462 Total(); 2463 return; 2464 }); 2465 //Order Control 2466 $('.item-btn-parent').on('click', '.btn', function() { 2467 let b = $(this).siblings('p').text(); 2468 if ($(this).text() == '+') { 2469 $('#' + b).siblings('.increment-btn').click(); 2470 let a = Number($(this).closest('.item-btn-parent').find('input').val()); 2471 if (a >= 2) { 2472 $(this).siblings('.btn').removeAttr('disabled'); 2473 } 2474 } else { 2475 $('#' + b).siblings('.decrement-btn').click() 2476 } 2477 Total(); 2478 }); 2479 $('.tip-input').on('click keydown keyup keypress', function() { 2480 if ($(this).val() < 0) { 2481 $(this).val(0) 2482 } 2483 $('.tip-value').text('£' + $(this).val()); 2484 Total(); 2485 }); 2486 $('.minus-btn').each(function() { 2487 let a = Number($(this).closest('.item-btn-parent').find('input').val()); 2488 if (a >= 2) { 2489 $(this).removeAttr('disabled'); 2490 } 2491 }) 2492 //Control of Total and Sub Total 2493 function Total() { 2494 let count = 0; 2495 let sum = 0; 2496 let item=0; 2497 $('.cart_card').each(function() { 2498 var $card = $(this); 2499 if ($card.find('.cart-select-item').length && !$card.find('.cart-select-item').prop('checked')) { 2500 return; 2501 } 2502 $card.find('.topping_price-1').each(function() { 2503 item++; 2504 let toppingPriceText = $(this).text().trim(); 2505 if (toppingPriceText !== '') { 2506 let toppingPrice = parseFloat(toppingPriceText.slice(2, -1)); 2507 sum += toppingPrice; 2508 } 2509 }); 2510 $card.find('.count-input').each(function() { 2511 let productPriceText = $(this).closest('.order-card').find('.price').text().slice(1); 2512 let productPrice = parseFloat(productPriceText); 2513 let ItemCount = Number($(this).val()); 2514 count += ItemCount; 2515 sum += productPrice * ItemCount; 2516 sum = parseFloat(sum.toFixed(2)); 2517 }); 2518 }); 2519 $('.order-items').text(count); 2520 $('.sub-total').text('£' + sum); 2521 let tipValue = Number($('.tip-value').text().slice(1)); 2522 let tax = Number($('.tax-value').text().slice(1)); 2523 let redeem = Number($('.redeem-value').text().slice(1)); 2524 let delivery = Number($('.delivery-charge').text().slice(1)); 2525 let baseTotal = tipValue + tax + delivery + sum - redeem; 2526 let gatewayFee = (baseTotal * 0.025) + 0.25; 2527 gatewayFee = parseFloat(gatewayFee.toFixed(2)); 2528 $('.gateway-fee').text('£' + gatewayFee.toFixed(2)); 2529 $('.total-value').text('£' + (tipValue + tax + delivery + sum - redeem + gatewayFee).toFixed(2)); 2530 $('.order-input').text(count); 2531 } 2532 2533 $(document).on('change', '.cart-select-item', function () { 2534 $(this).closest('.cart_card').toggleClass('cart-item-unselected', !this.checked); 2535 Total(); 2536 }); 2537 $('#checkoutSelectedForm').on('submit', function (e) { 2538 if (!$('.cart-select-item:checked').length) { 2539 e.preventDefault(); 2540 toastr.error('Please select at least one item to place the order.'); 2541 } 2542 }); 2543 2544 //delete the border of the last child 2545 $('.card-parent .cart_card:last').removeClass('border-bottom'); 2546 //Count Input Control 2547 $('.count-input').each(function() { 2548 $(this).on('click keydown keyup keypress', function() { 2549 if ($(this).val() <= 1) { 2550 $(this).val(1); 2551 } 2552 $('.item-btn-parent .btn').each(function() { 2553 if ($(this).text() == '-') { 2554 if ($(this).siblings('input').val() >= 2) { 2555 $(this).removeAttr('disabled'); 2556 } else { 2557 $(this).attr('disabled', true); 2558 } 2559 }; 2560 }) 2561 Total(); 2562 }); 2563 }) 2564 Total(); 2565 }); 2566 $('.del-btn').each(function() { 2567 $(this).click(function() { 2568 let a = $(this).siblings('.helper-p').text(); 2569 a += 'carted' 2570 $('#' + a).remove(); 2571 $(this).parents('.cart_card').remove(); 2572 let count = 0; 2573 let sum = 0; 2574 $('.topping_price-1').each(function() { 2575 let toppingPriceText = $(this).text().trim(); 2576 if (toppingPriceText !== '') { 2577 let toppingPrice = parseInt(toppingPriceText.slice(2, - 2578 1)); 2579 sum += toppingPrice; 2580 } 2581 }); 2582 let bb = 0; 2583 $('.count-input').each(function() { 2584 let productPriceText = $(this).closest('.order-card').find('.price').text() 2585 .slice(1); 2586 let productPrice = parseFloat(productPriceText); 2587 let ItemCount = Number($(this).val()); 2588 bb += ItemCount; 2589 count += ItemCount; 2590 sum += productPrice * ItemCount; 2591 sum = parseFloat(sum.toFixed(2)); 2592 }); 2593 $('.order-items').text(bb); 2594 $('.cart-counter-1').each(function() { 2595 $(this).text(bb); 2596 }) 2597 $('.sub-total').text('£' + sum); 2598 let tipValue = Number($('.tip-value').text().slice(1)); 2599 let tax = Number($('.tax-value').text().slice(1)); 2600 let delivery = Number($('.delivery-charge').text().slice(1)); 2601 let baseTotal = tipValue + tax + delivery + sum ; 2602 let gatewayFee = (baseTotal * 0.025) + 0.25; 2603 gatewayFee = parseFloat(gatewayFee.toFixed(2)); 2604 $('.gateway-fee').text('£' + gatewayFee.toFixed(2)); 2605 $('.total-value').text('£' + (tipValue + tax + delivery + sum + gatewayFee).toFixed(2)); 2606 $('.order-input').text(count); 2607 }) 2608 }); 2609 2610 function removeFromCart(productId, variantId) { 2611 // Use AJAX to remove the item from the cart 2612 $.ajax({ 2613 type: 'POST', 2614 url: 'https://sugarpappi.com/add-to-cart-remove', 2615 data: { 2616 '_token': 'jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA', 2617 'product_id': productId, 2618 'variant_id': variantId // Include the variant ID in the request 2619 }, 2620 success: function(data) { 2621 console.log('Product removed successfully!', data); 2622 // Update the cart UI or perform any other actions after successful removal 2623 }, 2624 error: function(error) { 2625 console.error('Error removing product from cart:', error); 2626 } 2627 }); 2628 } 2629 2630 $('.plus-btn').on('click', function() { 2631 console.log('Plus button clicked'); 2632 var inputField = $(this).siblings('.increment-input'); 2633 var quantity = parseInt(inputField.val(), 10); 2634 inputField.val(quantity + 1); 2635 2636 // Get the product ID and variant ID from the data attribute 2637 var dataIds = $(this).data('product-id').split(','); 2638 var productId = dataIds[0].trim(); 2639 var variantId = dataIds[1] ? dataIds[1].trim() : null; 2640 2641 // Update the session with the new quantity 2642 updateSession(productId, quantity + 1, variantId); 2643 }); 2644 2645 $('.minus-btn').on('click', function() { 2646 console.log('Minus button clicked'); 2647 var inputField = $(this).siblings('.increment-input'); 2648 var quantity = parseInt(inputField.val(), 10); 2649 2650 if (quantity > 1) { 2651 inputField.val(quantity - 1); 2652 2653 // Get the product ID and variant ID from the data attribute 2654 var dataIds = $(this).data('product-id').split(','); 2655 var productId = dataIds[0].trim(); 2656 var variantId = dataIds[1] ? dataIds[1].trim() : null; 2657 2658 // Update the session with the new quantity 2659 updateSession(productId, quantity - 1, variantId); 2660 } 2661 }); 2662 2663 // Function to update the session on the server side 2664 function updateSession(productId, quantity, variantId) { 2665 $.ajax({ 2666 type: 'POST', 2667 url: 'https://sugarpappi.com/update-my-cart', 2668 data: { 2669 '_token': 'jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA', 2670 'product_id': productId, 2671 'quantity': quantity, 2672 'variant_id': variantId // Include variant ID in the data 2673 }, 2674 success: function(data) { 2675 // Handle the success response, e.g., update UI 2676 console.log('Session updated successfully:', data); 2677 }, 2678 error: function(error) { 2679 // Handle the error response, e.g., show an error message 2680 console.error('Error updating session:', error); 2681 } 2682 }); 2683 } 2684 2685 2686 $('.updateTimeBtn').on('click', function() { 2687 var timeModal = $(this).closest('.time-modal'); 2688 var date_input = timeModal.find('input[name="date_input"]').val(); 2689 var selectedTime = timeModal.find('input[name="time-radio"]:checked').val(); 2690 2691 if (!selectedTime) { 2692 toastr.warning('Please select a time slot.'); 2693 return; 2694 } 2695 2696 // Store the selected time in local storage 2697 localStorage.setItem('selectedTime', selectedTime); 2698 2699 $.ajax({ 2700 type: 'POST', 2701 url: 'https://sugarpappi.com/update-time', 2702 data: { 2703 '_token': 'jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA', 2704 'date_input': date_input, 2705 'time-radio': selectedTime, 2706 }, 2707 success: function(data) { 2708 toastr.success('Time Updated successfully!'); 2709 setTimeout(function() { 2710 location.reload(); 2711 }, 500); 2712 timeModal.modal('hide'); 2713 }, 2714 error: function(error) { 2715 // Handle the error response, e.g., show an error message 2716 console.error('Error updating time:', error); 2717 toastr.error('Failed to update time. Please try again.'); 2718 } 2719 }); 2720 }); 2721 2722 // When the page loads, set the checked state based on the stored value 2723 $(document).ready(function() { 2724 var storedTime = localStorage.getItem('selectedTime'); 2725 if (storedTime) { 2726 $('input[name="time-radio"]').filter('[value="' + storedTime + '"]').prop('checked', true); 2727 } 2728 }); 2729 2730 $('.continue-to-payment').on('click', function(e) { 2731 e.preventDefault(); 2732 2733 if (!$('.cart-select-item:checked').length) { 2734 toastr.error('Please select at least one item to place the order.'); 2735 return; 2736 } 2737 2738 var form = document.getElementById('checkoutSelectedForm'); 2739 var checkoutUrl = 'https://sugarpappi.com/checkout'; 2740 2741 function goToCheckout() { 2742 if (form) { 2743 HTMLFormElement.prototype.submit.call(form); 2744 return; 2745 } 2746 window.location.href = checkoutUrl; 2747 } 2748 2749 var selectedTime = $('.selected-time').data('time'); 2750 var tipAmount = $('.tip-input').val(); 2751 var redeemPoints = $('#loyaltyPointInput').val();
2752 var redeemAmount = Number($('.redeem-value').text().slice(1)); 2753 2754 $.ajax({ 2755 type: 'POST', 2756 url: 'https://sugarpappi.com/time-solt', 2757 data: { 2758 '_token': 'jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA', 2759 'selectedTime': selectedTime, 2760 } 2761 }).always(function () { 2762 $.ajax({ 2763 type: 'POST', 2764 url: 'https://sugarpappi.com/store.tip', 2765 data: { 2766 '_token': 'jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA', 2767 'tipAmount': tipAmount, 2768 'redeemAmount': redeemAmount, 2769 'redeemPoints': redeemPoints 2770 } 2771 }).always(function () { 2772 goToCheckout(); 2773 }); 2774 }); 2775 }); 2776 2777 2778 // location update 2779 2780 $('.updateLocationBtn').on('click', function() { 2781 // Find the selected radio button 2782 var selectedBranch = $('input[name="choosen_location"]:checked'); 2783 2784 if (selectedBranch.length === 0) { 2785 toastr.warning('Please select a location before updating.'); 2786 return; 2787 } 2788 2789 // Extract branch ID from the data attribute 2790 var branchId = selectedBranch.data('branch-id'); 2791 2792 // Send AJAX request to update branch status 2793 $.ajax({ 2794 type: 'POST', 2795 url: 'https://sugarpappi.com/update-branch-status', 2796 data: { 2797 '_token': 'jZFTA5C4ZzYLqXrQHLtrHlQx4WOcaCfpMfZI6FLA', 2798 'branch_id': branchId, 2799 }, 2800 success: function(data) { 2801 toastr.success('Location Updated Successfully'); 2802 console.log(data); 2803 }, 2804 error: function(error) { 2805 console.error('Error updating branch status:', error); 2806 toastr.error('Failed to update location. Please try again.'); 2807 } 2808 }); 2809 }); 2810</script>
2810 2811</body>
2812<script> 2813 /*toastr popup function*/ 2814 function toastrPopUp() { 2815 toastr.options = { 2816 "closeButton": true, 2817 "newestOnTop": false, 2818 "progressBar": true, 2819 "positionClass": "toast-top-right", 2820 "preventDuplicates": true, 2821 "onclick": null, 2822 "showDuration": "3000", 2823 "hideDuration": "1000", 2824 "timeOut": "5000", 2825 "extendedTimeOut": "1000", 2826 "showEasing": "swing", 2827 "hideEasing": "linear", 2828 "showMethod": "fadeIn", 2829 "hideMethod": "fadeOut" 2830 // toastr.success('Success messages'); 2831 } 2832 } 2833 2834 /*toastr popup function*/ 2835 toastrPopUp(); 2836 2837 if (window.toastr && !toastr.__spWrapped) { 2838 var origSuccess = toastr.success.bind(toastr); 2839 toastr.success = function (msg) { 2840 var text = String(msg || ''); 2841 if (/cart/i.test(text)) { 2842 if (toastr.__spCartLock) return; 2843 toastr.__spCartLock = true; 2844 setTimeout(function () { toastr.__spCartLock = false; }, 2500); 2845 toastr.clear(); 2846 } 2847 return origSuccess.apply(toastr, arguments); 2848 }; 2849 toastr.__spWrapped = true; 2850 } 2851 2852</script>
2852 2853 2854 2855</html>
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.