lokesh341 commited on
Commit
8f78818
·
verified ·
1 Parent(s): 72acf5c

Update templates/menu.html

Browse files
Files changed (1) hide show
  1. templates/menu.html +184 -160
templates/menu.html CHANGED
@@ -236,7 +236,7 @@
236
  .mic-icon.active {
237
  color: #007bff;
238
  }
239
- /* Updated Addon Section */
240
  .addon-section {
241
  background-color: #fff;
242
  border-radius: 10px;
@@ -354,6 +354,137 @@
354
  border-radius: 50%;
355
  animation: spin 1s linear infinite;
356
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
357
  @keyframes checkmark {
358
  from { transform: scale(0); }
359
  to { transform: scale(1); }
@@ -644,106 +775,6 @@
644
  font-size: 12px;
645
  margin-left: 8px;
646
  }
647
- /* Soft Drinks Modal Styles */
648
- #softDrinkModal .modal-content {
649
- border-radius: 10px;
650
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
651
- animation: fadeIn 0.3s ease-in;
652
- }
653
- #softDrinkModal .modal-header {
654
- background: linear-gradient(45deg, #FFA07A, #FFB347);
655
- color: white;
656
- border-top-left-radius: 10px;
657
- border-top-right-radius: 10px;
658
- padding: 12px 15px;
659
- }
660
- #softDrinkModal .modal-title {
661
- font-size: 1.2rem;
662
- font-weight: 600;
663
- }
664
- #softDrinkModal .modal-body {
665
- padding: 20px;
666
- text-align: center;
667
- background-color: #fff;
668
- }
669
- #softDrinkModal #soft-drink-img {
670
- max-height: 150px;
671
- width: 100%;
672
- max-width: 150px;
673
- object-fit: cover;
674
- border-radius: 8px;
675
- margin: 0 auto 15px;
676
- display: block;
677
- }
678
- #softDrinkModal #soft-drink-name {
679
- font-size: 1.5rem;
680
- font-weight: 600;
681
- color: #333333;
682
- margin-bottom: 5px;
683
- }
684
- #softDrinkModal #soft-drink-price {
685
- font-size: 1.1rem;
686
- font-weight: 500;
687
- color: #000000;
688
- margin-bottom: 20px;
689
- }
690
- #softDrinkModal .quantity-selector {
691
- display: flex;
692
- justify-content: center;
693
- align-items: center;
694
- gap: 10px;
695
- margin-bottom: 20px;
696
- }
697
- #softDrinkModal .quantity-selector .btn {
698
- width: 40px;
699
- height: 40px;
700
- font-size: 1rem;
701
- line-height: 40px;
702
- border-radius: 8px;
703
- background-color: #f8f9fa;
704
- border: 1px solid #ced4da;
705
- color: #333;
706
- transition: background-color 0.2s ease, transform 0.1s ease;
707
- }
708
- #softDrinkModal .quantity-selector .btn:hover {
709
- background-color: #e6f4ea;
710
- transform: scale(1.05);
711
- }
712
- #softDrinkModal .quantity-selector .btn:active {
713
- transform: scale(0.95);
714
- }
715
- #softDrinkModal .quantity-selector input {
716
- width: 60px;
717
- height: 40px;
718
- text-align: center;
719
- font-size: 1rem;
720
- font-weight: bold;
721
- border-radius: 8px;
722
- border: 1px solid #ced4da;
723
- background-color: #fff;
724
- }
725
- #softDrinkModal .modal-footer {
726
- justify-content: center;
727
- padding: 15px;
728
- border-top: none;
729
- }
730
- #softDrinkModal .modal-footer .btn-primary {
731
- width: 150px;
732
- height: 45px;
733
- font-size: 1rem;
734
- border-radius: 8px;
735
- background-color: #0FAA39;
736
- border-color: #0FAA39;
737
- transition: background-color 0.2s ease, transform 0.1s ease;
738
- }
739
- #softDrinkModal .modal-footer .btn-primary:hover {
740
- background-color: #0D9232;
741
- transform: scale(1.05);
742
- }
743
- #softDrinkModal .modal-footer .btn-primary:active {
744
- background-color: #0B7A29;
745
- transform: scale(0.95);
746
- }
747
  /* Mobile-Specific Styles */
748
  @media (max-width: 576px) {
749
  .fixed-top-bar {
@@ -793,37 +824,37 @@
793
  font-size: 0.85rem;
794
  }
795
  .modal-dialog {
796
- max-width: 96%;
797
- margin: 5px auto;
798
  }
799
  .modal-header {
800
- padding: 5px 10px;
801
  }
802
  .modal-title {
803
  font-size: 14px;
804
  }
805
  .modal-body {
806
  max-height: 50vh;
807
- padding: 10px;
808
  }
809
  .modal-body #modal-img {
810
  max-height: 150px;
811
  width: 100%;
812
  max-width: 150px;
813
- margin: 0 auto 5px;
814
  display: block;
815
  }
816
  .modal-body #modal-name {
817
  font-size: 18px;
818
- margin-bottom: 3px;
819
  }
820
  .modal-body #modal-price {
821
  font-size: 14px;
822
- margin-bottom: 5px;
823
  }
824
  .modal-body #modal-description {
825
  font-size: 12px;
826
- margin-bottom: 5px;
827
  }
828
  .modal-body .nutritional-info {
829
  font-size: 10px;
@@ -835,7 +866,7 @@
835
  margin-bottom: 10px;
836
  }
837
  .modal-footer {
838
- padding: 5px;
839
  }
840
  .modal-footer .btn {
841
  height: 30px;
@@ -935,6 +966,9 @@
935
  font-size: 0.8rem;
936
  }
937
  /* Mobile-Specific Soft Drinks Modal Styles */
 
 
 
938
  #softDrinkModal .modal-content {
939
  border-radius: 8px;
940
  }
@@ -942,41 +976,46 @@
942
  padding: 10px 12px;
943
  }
944
  #softDrinkModal .modal-title {
945
- font-size: 1rem;
946
  }
947
  #softDrinkModal .modal-body {
948
  padding: 15px;
949
  }
950
- #softDrinkModal #soft-drink-img {
951
  max-height: 120px;
952
- max-width: 120px;
953
  margin-bottom: 10px;
954
  }
955
- #softDrinkModal #soft-drink-name {
956
- font-size: 1.3rem;
 
957
  }
958
- #softDrinkModal #soft-drink-price {
959
  font-size: 1rem;
960
  margin-bottom: 15px;
961
  }
962
- #softDrinkModal .quantity-selector .btn {
963
- width: 35px;
964
- height: 35px;
965
  font-size: 0.9rem;
966
- line-height: 35px;
967
- border-radius: 6px;
968
  }
969
- #softDrinkModal .quantity-selector input {
970
- width: 50px;
971
- height: 35px;
972
  font-size: 0.9rem;
973
- border-radius: 6px;
 
 
974
  }
975
  #softDrinkModal .modal-footer .btn-primary {
976
- width: 120px;
977
- height: 40px;
978
  font-size: 0.9rem;
979
- border-radius: 6px;
 
 
 
 
 
980
  }
981
  }
982
  </style>
@@ -1161,18 +1200,22 @@
1161
  <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
1162
  </div>
1163
  <div class="modal-body">
1164
- <img id="soft-drink-img" class="img-fluid rounded mb-3" alt="Soft Drink Image">
1165
  <div class="text-center mb-3">
1166
  <h5 id="soft-drink-name"></h5>
1167
  <p id="soft-drink-price"></p>
1168
  </div>
1169
- <div class="quantity-selector">
1170
- <button type="button" class="btn btn-outline-secondary" id="soft-drink-decrease">-1</button>
1171
  <input type="text" class="form-control text-center" id="soft-drink-quantity" value="1" readonly>
1172
- <button type="button" class="btn btn-outline-secondary" id="soft-drink-increase">+</button>
1173
  </div>
1174
  </div>
1175
  <div class="modal-footer">
 
 
 
 
1176
  <button type="button" class="btn btn-primary" onclick="addSoftDrinkToCart()">Add to Cart</button>
1177
  </div>
1178
  </div>
@@ -1259,6 +1302,12 @@
1259
  const totalPrice = baseItemPrice + totalAddOnPrice;
1260
  document.getElementById('modal-price').innerText = `$${totalPrice.toFixed(2)}`;
1261
  }
 
 
 
 
 
 
1262
  function showSoftDrinkModal(button) {
1263
  currentSoftDrinkButton = button;
1264
  const buttonContainer = button.closest('.button-container');
@@ -1269,7 +1318,7 @@
1269
  document.getElementById('soft-drink-name').textContent = itemName;
1270
  document.getElementById('soft-drink-price').textContent = `$${itemPrice}`;
1271
  document.getElementById('soft-drink-quantity').value = '1';
1272
- document.getElementById('soft-drink-img').src = itemImage || '/static/placeholder.jpg';
1273
 
1274
  const modal = new bootstrap.Modal(document.getElementById('softDrinkModal'));
1275
  modal.show();
@@ -1395,7 +1444,6 @@
1395
  addonsList.appendChild(sectionDiv);
1396
  });
1397
 
1398
- // Add collapsible behavior
1399
  const addonSections = addonsList.querySelectorAll('.addon-section');
1400
  addonSections.forEach(section => {
1401
  const title = section.querySelector('h6');
@@ -1406,12 +1454,10 @@
1406
  });
1407
  });
1408
 
1409
- // Update price on addon selection
1410
  document.querySelectorAll('.addon-option').forEach(checkbox => {
1411
  checkbox.addEventListener('change', updateModalPrice);
1412
  });
1413
 
1414
- // Handle single-select groups
1415
  document.querySelectorAll('.addon-option').forEach(checkbox => {
1416
  checkbox.addEventListener('change', function () {
1417
  const groupName = this.getAttribute('data-group');
@@ -1498,7 +1544,6 @@
1498
  });
1499
  }
1500
  document.addEventListener('DOMContentLoaded', function () {
1501
- // Avatar Dropdown
1502
  const avatarContainer = document.querySelector('.avatar-dropdown-container');
1503
  const dropdownMenu = document.querySelector('.dropdown-menu');
1504
  avatarContainer.addEventListener('click', function (event) {
@@ -1516,12 +1561,10 @@
1516
  dropdownMenu.style.display = 'none';
1517
  });
1518
  });
1519
- // Navigate to search page on search bar click
1520
  const searchBar = document.getElementById('searchBar');
1521
  searchBar.addEventListener('click', function () {
1522
  window.location.href = '/search';
1523
  });
1524
- // Auto-open modal for selected item
1525
  const selectedItem = localStorage.getItem('selectedItem');
1526
  if (selectedItem) {
1527
  try {
@@ -1562,7 +1605,6 @@
1562
  }
1563
  localStorage.removeItem('selectedItem');
1564
  }
1565
- // Lazy Loading for Cards and Videos
1566
  const menuCards = document.querySelectorAll('.menu-card');
1567
  const menuVideos = document.querySelectorAll('.menu-video');
1568
  const cardObserver = new IntersectionObserver((entries, observer) => {
@@ -1598,7 +1640,6 @@
1598
  });
1599
  menuCards.forEach(card => cardObserver.observe(card));
1600
  menuVideos.forEach(video => videoObserver.observe(video));
1601
- // Toggle Details
1602
  const toggleLinks = document.querySelectorAll('.toggle-details');
1603
  toggleLinks.forEach(link => {
1604
  link.addEventListener('click', function () {
@@ -1623,7 +1664,6 @@
1623
  }
1624
  });
1625
  });
1626
- // Category Selection
1627
  const categoryButtons = document.querySelectorAll('.category-button');
1628
  const categoryForm = document.getElementById('categoryForm');
1629
  const selectedCategoryInput = document.getElementById('selectedCategoryInput');
@@ -1639,7 +1679,6 @@
1639
  categoryForm.submit();
1640
  });
1641
  });
1642
- // Custom Dish Form Suggestions
1643
  const descriptionTextarea = document.getElementById('custom-dish-description');
1644
  const descriptionSuggestions = document.getElementById('descriptionSuggestions');
1645
  if (descriptionTextarea && descriptionSuggestions) {
@@ -1693,7 +1732,6 @@
1693
  }
1694
  });
1695
  }
1696
- // Fetch Cart
1697
  fetch('/cart/get')
1698
  .then(response => {
1699
  if (!response.ok) {
@@ -1715,14 +1753,12 @@
1715
  const cart = getCartLocalStorage();
1716
  updateCartUI(cart);
1717
  });
1718
- // Preload Videos
1719
  const preloadedVideos = document.querySelectorAll('link[rel="preload"][as="video"]');
1720
  preloadedVideos.forEach(link => {
1721
  const video = document.createElement('video');
1722
  video.src = link.href;
1723
  video.preload = 'auto';
1724
  });
1725
- // Quantity Controls for Item Modal
1726
  const decreaseBtn = document.getElementById('decreaseQuantity');
1727
  const increaseBtn = document.getElementById('increaseQuantity');
1728
  const quantityInput = document.getElementById('quantityInput');
@@ -1740,27 +1776,15 @@
1740
  quantityInput.value = currentQuantity;
1741
  }
1742
  });
1743
- // Soft Drinks Modal Quantity Controls
1744
  const softDrinkDecreaseBtn = document.getElementById('soft-drink-decrease');
1745
  const softDrinkIncreaseBtn = document.getElementById('soft-drink-increase');
1746
  const softDrinkQuantityInput = document.getElementById('soft-drink-quantity');
1747
-
1748
  softDrinkDecreaseBtn.addEventListener('click', function() {
1749
- let currentQuantity = parseInt(softDrinkQuantityInput.value);
1750
- if (currentQuantity > 1) {
1751
- currentQuantity--;
1752
- softDrinkQuantityInput.value = currentQuantity;
1753
- }
1754
  });
1755
-
1756
  softDrinkIncreaseBtn.addEventListener('click', function() {
1757
- let currentQuantity = parseInt(softDrinkQuantityInput.value);
1758
- if (currentQuantity < 500) {
1759
- currentQuantity++;
1760
- softDrinkQuantityInput.value = currentQuantity;
1761
- }
1762
  });
1763
- // Voice Recognition
1764
  const micIcon = document.getElementById('micIcon');
1765
  if ('SpeechRecognition' in window || 'webkitSpeechRecognition' in window) {
1766
  const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
 
236
  .mic-icon.active {
237
  color: #007bff;
238
  }
239
+ /* Addon Section */
240
  .addon-section {
241
  background-color: #fff;
242
  border-radius: 10px;
 
354
  border-radius: 50%;
355
  animation: spin 1s linear infinite;
356
  }
357
+ /* Soft Drinks Modal Styling */
358
+ #softDrinkModal .modal-dialog {
359
+ max-width: 400px;
360
+ margin: 1.75rem auto;
361
+ }
362
+ #softDrinkModal .modal-content {
363
+ border-radius: 10px;
364
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
365
+ background-color: #fff;
366
+ }
367
+ #softDrinkModal .modal-header {
368
+ background: linear-gradient(45deg, #FFA07A, #FFB347);
369
+ border-top-left-radius: 10px;
370
+ border-top-right-radius: 10px;
371
+ padding: 12px 15px;
372
+ border-bottom: none;
373
+ }
374
+ #softDrinkModal .modal-title {
375
+ font-size: 1.25rem;
376
+ font-weight: 600;
377
+ color: #fff;
378
+ }
379
+ #softDrinkModal .modal-body {
380
+ padding: 20px;
381
+ text-align: center;
382
+ }
383
+ #softDrinkModal .modal-body img {
384
+ max-height: 150px;
385
+ width: 100%;
386
+ object-fit: cover;
387
+ border-radius: 8px;
388
+ margin-bottom: 15px;
389
+ }
390
+ #softDrinkModal .modal-body h5 {
391
+ font-size: 1.3rem;
392
+ font-weight: 600;
393
+ color: #333333;
394
+ margin-bottom: 10px;
395
+ }
396
+ #softDrinkModal .modal-body p {
397
+ font-size: 1.1rem;
398
+ font-weight: 500;
399
+ color: #000000;
400
+ margin-bottom: 20px;
401
+ }
402
+ #softDrinkModal .quantity-controls {
403
+ display: flex;
404
+ justify-content: center;
405
+ align-items: center;
406
+ gap: 10px;
407
+ margin-bottom: 20px;
408
+ }
409
+ #softDrinkModal .quantity-controls .btn {
410
+ width: 30px;
411
+ height: 30px;
412
+ border-radius: 50%;
413
+ padding: 0;
414
+ font-size: 1rem;
415
+ line-height: 30px;
416
+ text-align: center;
417
+ background-color: #e9ecef;
418
+ border: none;
419
+ color: #333;
420
+ transition: background-color 0.2s ease, transform 0.1s ease;
421
+ }
422
+ #softDrinkModal .quantity-controls .btn:hover {
423
+ background-color: #d1d4d7;
424
+ transform: scale(1.1);
425
+ }
426
+ #softDrinkModal .quantity-controls .btn:active {
427
+ transform: scale(0.95);
428
+ }
429
+ #softDrinkModal .quantity-controls input {
430
+ width: 50px;
431
+ height: 30px;
432
+ text-align: center;
433
+ font-size: 1rem;
434
+ font-weight: 600;
435
+ border: 1px solid #ced4da;
436
+ border-radius: 5px;
437
+ background-color: #f8f9fa;
438
+ }
439
+ #softDrinkModal .modal-footer {
440
+ padding: 15px;
441
+ border-top: none;
442
+ display: flex;
443
+ justify-content: space-between;
444
+ align-items: center;
445
+ }
446
+ #softDrinkModal .modal-footer .btn-primary {
447
+ background-color: #0FAA39;
448
+ border-color: #0FAA39;
449
+ padding: 10px 25px;
450
+ font-size: 1rem;
451
+ font-weight: 600;
452
+ border-radius: 8px;
453
+ transition: background-color 0.2s ease, transform 0.1s ease;
454
+ width: auto;
455
+ }
456
+ #softDrinkModal .modal-footer .btn-primary:hover {
457
+ background-color: #0D9232;
458
+ transform: scale(1.05);
459
+ }
460
+ #softDrinkModal .modal-footer .btn-primary:active {
461
+ background-color: #0B7A29;
462
+ transform: scale(0.98);
463
+ }
464
+ #softDrinkModal .modal-footer .quantity-controls-footer {
465
+ display: flex;
466
+ gap: 10px;
467
+ }
468
+ #softDrinkModal .modal-footer .quantity-controls-footer .btn {
469
+ width: 30px;
470
+ height: 30px;
471
+ border-radius: 50%;
472
+ padding: 0;
473
+ font-size: 1rem;
474
+ line-height: 30px;
475
+ text-align: center;
476
+ background-color: #e9ecef;
477
+ border: none;
478
+ color: #333;
479
+ transition: background-color 0.2s ease, transform 0.1s ease;
480
+ }
481
+ #softDrinkModal .modal-footer .quantity-controls-footer .btn:hover {
482
+ background-color: #d1d4d7;
483
+ transform: scale(1.1);
484
+ }
485
+ #softDrinkModal .modal-footer .quantity-controls-footer .btn:active {
486
+ transform: scale(0.95);
487
+ }
488
  @keyframes checkmark {
489
  from { transform: scale(0); }
490
  to { transform: scale(1); }
 
775
  font-size: 12px;
776
  margin-left: 8px;
777
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
778
  /* Mobile-Specific Styles */
779
  @media (max-width: 576px) {
780
  .fixed-top-bar {
 
824
  font-size: 0.85rem;
825
  }
826
  .modal-dialog {
827
+ max-width: 90%;
828
+ margin: 10px auto;
829
  }
830
  .modal-header {
831
+ padding: 8px 12px;
832
  }
833
  .modal-title {
834
  font-size: 14px;
835
  }
836
  .modal-body {
837
  max-height: 50vh;
838
+ padding: 12px;
839
  }
840
  .modal-body #modal-img {
841
  max-height: 150px;
842
  width: 100%;
843
  max-width: 150px;
844
+ margin: 0 auto 8px;
845
  display: block;
846
  }
847
  .modal-body #modal-name {
848
  font-size: 18px;
849
+ margin-bottom: 5px;
850
  }
851
  .modal-body #modal-price {
852
  font-size: 14px;
853
+ margin-bottom: 8px;
854
  }
855
  .modal-body #modal-description {
856
  font-size: 12px;
857
+ margin-bottom: 10px;
858
  }
859
  .modal-body .nutritional-info {
860
  font-size: 10px;
 
866
  margin-bottom: 10px;
867
  }
868
  .modal-footer {
869
+ padding: 8px;
870
  }
871
  .modal-footer .btn {
872
  height: 30px;
 
966
  font-size: 0.8rem;
967
  }
968
  /* Mobile-Specific Soft Drinks Modal Styles */
969
+ #softDrinkModal .modal-dialog {
970
+ max-width: 90%;
971
+ }
972
  #softDrinkModal .modal-content {
973
  border-radius: 8px;
974
  }
 
976
  padding: 10px 12px;
977
  }
978
  #softDrinkModal .modal-title {
979
+ font-size: 1.1rem;
980
  }
981
  #softDrinkModal .modal-body {
982
  padding: 15px;
983
  }
984
+ #softDrinkModal .modal-body img {
985
  max-height: 120px;
 
986
  margin-bottom: 10px;
987
  }
988
+ #softDrinkModal .modal-body h5 {
989
+ font-size: 1.1rem;
990
+ margin-bottom: 8px;
991
  }
992
+ #softDrinkModal .modal-body p {
993
  font-size: 1rem;
994
  margin-bottom: 15px;
995
  }
996
+ #softDrinkModal .quantity-controls .btn {
997
+ width: 25px;
998
+ height: 25px;
999
  font-size: 0.9rem;
1000
+ line-height: 25px;
 
1001
  }
1002
+ #softDrinkModal .quantity-controls input {
1003
+ width: 40px;
1004
+ height: 25px;
1005
  font-size: 0.9rem;
1006
+ }
1007
+ #softDrinkModal .modal-footer {
1008
+ padding: 10px;
1009
  }
1010
  #softDrinkModal .modal-footer .btn-primary {
1011
+ padding: 8px 20px;
 
1012
  font-size: 0.9rem;
1013
+ }
1014
+ #softDrinkModal .modal-footer .quantity-controls-footer .btn {
1015
+ width: 25px;
1016
+ height: 25px;
1017
+ font-size: 0.9rem;
1018
+ line-height: 25px;
1019
  }
1020
  }
1021
  </style>
 
1200
  <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
1201
  </div>
1202
  <div class="modal-body">
1203
+ <img id="soft-drink-image" class="img-fluid rounded mb-3 d-block mx-auto" alt="Soft Drink Image">
1204
  <div class="text-center mb-3">
1205
  <h5 id="soft-drink-name"></h5>
1206
  <p id="soft-drink-price"></p>
1207
  </div>
1208
+ <div class="quantity-controls">
1209
+ <button type="button" class="btn" id="soft-drink-decrease">-</button>
1210
  <input type="text" class="form-control text-center" id="soft-drink-quantity" value="1" readonly>
1211
+ <button type="button" class="btn" id="soft-drink-increase">+</button>
1212
  </div>
1213
  </div>
1214
  <div class="modal-footer">
1215
+ <div class="quantity-controls-footer">
1216
+ <button type="button" class="btn" id="soft-drink-decrease-footer" onclick="updateSoftDrinkQuantity(-1)">-1</button>
1217
+ <button type="button" class="btn" id="soft-drink-increase-footer" onclick="updateSoftDrinkQuantity(1)">+1</button>
1218
+ </div>
1219
  <button type="button" class="btn btn-primary" onclick="addSoftDrinkToCart()">Add to Cart</button>
1220
  </div>
1221
  </div>
 
1302
  const totalPrice = baseItemPrice + totalAddOnPrice;
1303
  document.getElementById('modal-price').innerText = `$${totalPrice.toFixed(2)}`;
1304
  }
1305
+ function updateSoftDrinkQuantity(delta) {
1306
+ const quantityInput = document.getElementById('soft-drink-quantity');
1307
+ let currentQuantity = parseInt(quantityInput.value) || 1;
1308
+ currentQuantity = Math.max(1, currentQuantity + delta);
1309
+ quantityInput.value = currentQuantity;
1310
+ }
1311
  function showSoftDrinkModal(button) {
1312
  currentSoftDrinkButton = button;
1313
  const buttonContainer = button.closest('.button-container');
 
1318
  document.getElementById('soft-drink-name').textContent = itemName;
1319
  document.getElementById('soft-drink-price').textContent = `$${itemPrice}`;
1320
  document.getElementById('soft-drink-quantity').value = '1';
1321
+ document.getElementById('soft-drink-image').src = itemImage || '/static/placeholder.jpg';
1322
 
1323
  const modal = new bootstrap.Modal(document.getElementById('softDrinkModal'));
1324
  modal.show();
 
1444
  addonsList.appendChild(sectionDiv);
1445
  });
1446
 
 
1447
  const addonSections = addonsList.querySelectorAll('.addon-section');
1448
  addonSections.forEach(section => {
1449
  const title = section.querySelector('h6');
 
1454
  });
1455
  });
1456
 
 
1457
  document.querySelectorAll('.addon-option').forEach(checkbox => {
1458
  checkbox.addEventListener('change', updateModalPrice);
1459
  });
1460
 
 
1461
  document.querySelectorAll('.addon-option').forEach(checkbox => {
1462
  checkbox.addEventListener('change', function () {
1463
  const groupName = this.getAttribute('data-group');
 
1544
  });
1545
  }
1546
  document.addEventListener('DOMContentLoaded', function () {
 
1547
  const avatarContainer = document.querySelector('.avatar-dropdown-container');
1548
  const dropdownMenu = document.querySelector('.dropdown-menu');
1549
  avatarContainer.addEventListener('click', function (event) {
 
1561
  dropdownMenu.style.display = 'none';
1562
  });
1563
  });
 
1564
  const searchBar = document.getElementById('searchBar');
1565
  searchBar.addEventListener('click', function () {
1566
  window.location.href = '/search';
1567
  });
 
1568
  const selectedItem = localStorage.getItem('selectedItem');
1569
  if (selectedItem) {
1570
  try {
 
1605
  }
1606
  localStorage.removeItem('selectedItem');
1607
  }
 
1608
  const menuCards = document.querySelectorAll('.menu-card');
1609
  const menuVideos = document.querySelectorAll('.menu-video');
1610
  const cardObserver = new IntersectionObserver((entries, observer) => {
 
1640
  });
1641
  menuCards.forEach(card => cardObserver.observe(card));
1642
  menuVideos.forEach(video => videoObserver.observe(video));
 
1643
  const toggleLinks = document.querySelectorAll('.toggle-details');
1644
  toggleLinks.forEach(link => {
1645
  link.addEventListener('click', function () {
 
1664
  }
1665
  });
1666
  });
 
1667
  const categoryButtons = document.querySelectorAll('.category-button');
1668
  const categoryForm = document.getElementById('categoryForm');
1669
  const selectedCategoryInput = document.getElementById('selectedCategoryInput');
 
1679
  categoryForm.submit();
1680
  });
1681
  });
 
1682
  const descriptionTextarea = document.getElementById('custom-dish-description');
1683
  const descriptionSuggestions = document.getElementById('descriptionSuggestions');
1684
  if (descriptionTextarea && descriptionSuggestions) {
 
1732
  }
1733
  });
1734
  }
 
1735
  fetch('/cart/get')
1736
  .then(response => {
1737
  if (!response.ok) {
 
1753
  const cart = getCartLocalStorage();
1754
  updateCartUI(cart);
1755
  });
 
1756
  const preloadedVideos = document.querySelectorAll('link[rel="preload"][as="video"]');
1757
  preloadedVideos.forEach(link => {
1758
  const video = document.createElement('video');
1759
  video.src = link.href;
1760
  video.preload = 'auto';
1761
  });
 
1762
  const decreaseBtn = document.getElementById('decreaseQuantity');
1763
  const increaseBtn = document.getElementById('increaseQuantity');
1764
  const quantityInput = document.getElementById('quantityInput');
 
1776
  quantityInput.value = currentQuantity;
1777
  }
1778
  });
 
1779
  const softDrinkDecreaseBtn = document.getElementById('soft-drink-decrease');
1780
  const softDrinkIncreaseBtn = document.getElementById('soft-drink-increase');
1781
  const softDrinkQuantityInput = document.getElementById('soft-drink-quantity');
 
1782
  softDrinkDecreaseBtn.addEventListener('click', function() {
1783
+ updateSoftDrinkQuantity(-1);
 
 
 
 
1784
  });
 
1785
  softDrinkIncreaseBtn.addEventListener('click', function() {
1786
+ updateSoftDrinkQuantity(1);
 
 
 
 
1787
  });
 
1788
  const micIcon = document.getElementById('micIcon');
1789
  if ('SpeechRecognition' in window || 'webkitSpeechRecognition' in window) {
1790
  const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;